diff --git a/404.html b/404.html index 114fbc830..b13255174 100644 --- a/404.html +++ b/404.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/acl/acl/index.html b/api/acl/acl/index.html index 114fbc830..b13255174 100644 --- a/api/acl/acl/index.html +++ b/api/acl/acl/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/actions/index.html b/api/actions/index.html index 114fbc830..b13255174 100644 --- a/api/actions/index.html +++ b/api/actions/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/auth/auth-manager/index.html b/api/auth/auth-manager/index.html index 114fbc830..b13255174 100644 --- a/api/auth/auth-manager/index.html +++ b/api/auth/auth-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/auth/auth/index.html b/api/auth/auth/index.html index 114fbc830..b13255174 100644 --- a/api/auth/auth/index.html +++ b/api/auth/auth/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/auth/base-auth/index.html b/api/auth/base-auth/index.html index 114fbc830..b13255174 100644 --- a/api/auth/base-auth/index.html +++ b/api/auth/base-auth/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/cache/cache-manager/index.html b/api/cache/cache-manager/index.html index 114fbc830..b13255174 100644 --- a/api/cache/cache-manager/index.html +++ b/api/cache/cache-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/cache/cache/index.html b/api/cache/cache/index.html index 114fbc830..b13255174 100644 --- a/api/cache/cache/index.html +++ b/api/cache/cache/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/cli/index.html b/api/cli/index.html index 114fbc830..b13255174 100644 --- a/api/cli/index.html +++ b/api/cli/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/client/application/index.html b/api/client/application/index.html index 114fbc830..b13255174 100644 --- a/api/client/application/index.html +++ b/api/client/application/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/client/extensions/acl/index.html b/api/client/extensions/acl/index.html index 114fbc830..b13255174 100644 --- a/api/client/extensions/acl/index.html +++ b/api/client/extensions/acl/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/client/extensions/block-provider/index.html b/api/client/extensions/block-provider/index.html index 114fbc830..b13255174 100644 --- a/api/client/extensions/block-provider/index.html +++ b/api/client/extensions/block-provider/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/client/extensions/collection-manager/index.html b/api/client/extensions/collection-manager/index.html index 114fbc830..b13255174 100644 --- a/api/client/extensions/collection-manager/index.html +++ b/api/client/extensions/collection-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/client/extensions/schema-component/index.html b/api/client/extensions/schema-component/index.html index 114fbc830..b13255174 100644 --- a/api/client/extensions/schema-component/index.html +++ b/api/client/extensions/schema-component/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/client/index.html b/api/client/index.html index 114fbc830..b13255174 100644 --- a/api/client/index.html +++ b/api/client/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/client/router/index.html b/api/client/router/index.html index 114fbc830..b13255174 100644 --- a/api/client/router/index.html +++ b/api/client/router/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/client/schema-designer/schema-component/index.html b/api/client/schema-designer/schema-component/index.html index 114fbc830..b13255174 100644 --- a/api/client/schema-designer/schema-component/index.html +++ b/api/client/schema-designer/schema-component/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/client/schema-designer/schema-initializer/index.html b/api/client/schema-designer/schema-initializer/index.html index 114fbc830..b13255174 100644 --- a/api/client/schema-designer/schema-initializer/index.html +++ b/api/client/schema-designer/schema-initializer/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/client/schema-designer/schema-settings/index.html b/api/client/schema-designer/schema-settings/index.html index 114fbc830..b13255174 100644 --- a/api/client/schema-designer/schema-settings/index.html +++ b/api/client/schema-designer/schema-settings/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/data-source-manager/data-source/index.html b/api/data-source-manager/data-source/index.html index 114fbc830..b13255174 100644 --- a/api/data-source-manager/data-source/index.html +++ b/api/data-source-manager/data-source/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/data-source-manager/i-collection-manager/index.html b/api/data-source-manager/i-collection-manager/index.html index 114fbc830..b13255174 100644 --- a/api/data-source-manager/i-collection-manager/index.html +++ b/api/data-source-manager/i-collection-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/data-source-manager/i-collection/index.html b/api/data-source-manager/i-collection/index.html index 114fbc830..b13255174 100644 --- a/api/data-source-manager/i-collection/index.html +++ b/api/data-source-manager/i-collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/data-source-manager/i-field/index.html b/api/data-source-manager/i-field/index.html index 114fbc830..b13255174 100644 --- a/api/data-source-manager/i-field/index.html +++ b/api/data-source-manager/i-field/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/data-source-manager/i-model/index.html b/api/data-source-manager/i-model/index.html index 114fbc830..b13255174 100644 --- a/api/data-source-manager/i-model/index.html +++ b/api/data-source-manager/i-model/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/data-source-manager/i-repository/index.html b/api/data-source-manager/i-repository/index.html index 114fbc830..b13255174 100644 --- a/api/data-source-manager/i-repository/index.html +++ b/api/data-source-manager/i-repository/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/data-source-manager/index.html b/api/data-source-manager/index.html index 114fbc830..b13255174 100644 --- a/api/data-source-manager/index.html +++ b/api/data-source-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/collection/index.html b/api/database/collection/index.html index 114fbc830..b13255174 100644 --- a/api/database/collection/index.html +++ b/api/database/collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/field/index.html b/api/database/field/index.html index 114fbc830..b13255174 100644 --- a/api/database/field/index.html +++ b/api/database/field/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/index.html b/api/database/index.html index 114fbc830..b13255174 100644 --- a/api/database/index.html +++ b/api/database/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/interfaces/base-interface/index.html b/api/database/interfaces/base-interface/index.html index 114fbc830..b13255174 100644 --- a/api/database/interfaces/base-interface/index.html +++ b/api/database/interfaces/base-interface/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/operators/index.html b/api/database/operators/index.html index 114fbc830..b13255174 100644 --- a/api/database/operators/index.html +++ b/api/database/operators/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/relation-repository/belongs-to-many-repository/index.html b/api/database/relation-repository/belongs-to-many-repository/index.html index 114fbc830..b13255174 100644 --- a/api/database/relation-repository/belongs-to-many-repository/index.html +++ b/api/database/relation-repository/belongs-to-many-repository/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/relation-repository/belongs-to-repository/index.html b/api/database/relation-repository/belongs-to-repository/index.html index 114fbc830..b13255174 100644 --- a/api/database/relation-repository/belongs-to-repository/index.html +++ b/api/database/relation-repository/belongs-to-repository/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/relation-repository/has-many-repository/index.html b/api/database/relation-repository/has-many-repository/index.html index 114fbc830..b13255174 100644 --- a/api/database/relation-repository/has-many-repository/index.html +++ b/api/database/relation-repository/has-many-repository/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/relation-repository/has-one-repository/index.html b/api/database/relation-repository/has-one-repository/index.html index 114fbc830..b13255174 100644 --- a/api/database/relation-repository/has-one-repository/index.html +++ b/api/database/relation-repository/has-one-repository/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/relation-repository/index.html b/api/database/relation-repository/index.html index 114fbc830..b13255174 100644 --- a/api/database/relation-repository/index.html +++ b/api/database/relation-repository/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/repository/index.html b/api/database/repository/index.html index 114fbc830..b13255174 100644 --- a/api/database/repository/index.html +++ b/api/database/repository/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/shared/create-options/index.html b/api/database/shared/create-options/index.html index 114fbc830..b13255174 100644 --- a/api/database/shared/create-options/index.html +++ b/api/database/shared/create-options/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/shared/destroy-options/index.html b/api/database/shared/destroy-options/index.html index 114fbc830..b13255174 100644 --- a/api/database/shared/destroy-options/index.html +++ b/api/database/shared/destroy-options/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/shared/find-one/index.html b/api/database/shared/find-one/index.html index 114fbc830..b13255174 100644 --- a/api/database/shared/find-one/index.html +++ b/api/database/shared/find-one/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/shared/find-options/index.html b/api/database/shared/find-options/index.html index 114fbc830..b13255174 100644 --- a/api/database/shared/find-options/index.html +++ b/api/database/shared/find-options/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/shared/index.html b/api/database/shared/index.html index 114fbc830..b13255174 100644 --- a/api/database/shared/index.html +++ b/api/database/shared/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/shared/transaction/index.html b/api/database/shared/transaction/index.html index 114fbc830..b13255174 100644 --- a/api/database/shared/transaction/index.html +++ b/api/database/shared/transaction/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/database/shared/update-options/index.html b/api/database/shared/update-options/index.html index 114fbc830..b13255174 100644 --- a/api/database/shared/update-options/index.html +++ b/api/database/shared/update-options/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/array/index.html b/api/handlebars-helpers/array/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/array/index.html +++ b/api/handlebars-helpers/array/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/comparison/index.html b/api/handlebars-helpers/comparison/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/comparison/index.html +++ b/api/handlebars-helpers/comparison/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/core/index.html b/api/handlebars-helpers/core/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/core/index.html +++ b/api/handlebars-helpers/core/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/date/index.html b/api/handlebars-helpers/date/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/date/index.html +++ b/api/handlebars-helpers/date/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/html/index.html b/api/handlebars-helpers/html/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/html/index.html +++ b/api/handlebars-helpers/html/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/i18n/index.html b/api/handlebars-helpers/i18n/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/i18n/index.html +++ b/api/handlebars-helpers/i18n/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/index.html b/api/handlebars-helpers/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/index.html +++ b/api/handlebars-helpers/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/math/index.html b/api/handlebars-helpers/math/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/math/index.html +++ b/api/handlebars-helpers/math/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/number/index.html b/api/handlebars-helpers/number/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/number/index.html +++ b/api/handlebars-helpers/number/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/object/index.html b/api/handlebars-helpers/object/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/object/index.html +++ b/api/handlebars-helpers/object/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/path/index.html b/api/handlebars-helpers/path/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/path/index.html +++ b/api/handlebars-helpers/path/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/regex/index.html b/api/handlebars-helpers/regex/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/regex/index.html +++ b/api/handlebars-helpers/regex/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/string/index.html b/api/handlebars-helpers/string/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/string/index.html +++ b/api/handlebars-helpers/string/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/handlebars-helpers/url/index.html b/api/handlebars-helpers/url/index.html index 114fbc830..b13255174 100644 --- a/api/handlebars-helpers/url/index.html +++ b/api/handlebars-helpers/url/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/http/index.html b/api/http/index.html index 114fbc830..b13255174 100644 --- a/api/http/index.html +++ b/api/http/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/http/rest-api/index.html b/api/http/rest-api/index.html index 114fbc830..b13255174 100644 --- a/api/http/rest-api/index.html +++ b/api/http/rest-api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/index.html b/api/index.html index 114fbc830..b13255174 100644 --- a/api/index.html +++ b/api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/logger/index.html b/api/logger/index.html index 114fbc830..b13255174 100644 --- a/api/logger/index.html +++ b/api/logger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/resourcer/action/index.html b/api/resourcer/action/index.html index 114fbc830..b13255174 100644 --- a/api/resourcer/action/index.html +++ b/api/resourcer/action/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/resourcer/middleware/index.html b/api/resourcer/middleware/index.html index 114fbc830..b13255174 100644 --- a/api/resourcer/middleware/index.html +++ b/api/resourcer/middleware/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/resourcer/resource-manager/index.html b/api/resourcer/resource-manager/index.html index 114fbc830..b13255174 100644 --- a/api/resourcer/resource-manager/index.html +++ b/api/resourcer/resource-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/resourcer/resource/index.html b/api/resourcer/resource/index.html index 114fbc830..b13255174 100644 --- a/api/resourcer/resource/index.html +++ b/api/resourcer/resource/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/sdk/auth/index.html b/api/sdk/auth/index.html index 114fbc830..b13255174 100644 --- a/api/sdk/auth/index.html +++ b/api/sdk/auth/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/sdk/index.html b/api/sdk/index.html index 114fbc830..b13255174 100644 --- a/api/sdk/index.html +++ b/api/sdk/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/sdk/storage/index.html b/api/sdk/storage/index.html index 114fbc830..b13255174 100644 --- a/api/sdk/storage/index.html +++ b/api/sdk/storage/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/server/application/index.html b/api/server/application/index.html index 114fbc830..b13255174 100644 --- a/api/server/application/index.html +++ b/api/server/application/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/server/migration/index.html b/api/server/migration/index.html index 114fbc830..b13255174 100644 --- a/api/server/migration/index.html +++ b/api/server/migration/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/server/plugin-manager/index.html b/api/server/plugin-manager/index.html index 114fbc830..b13255174 100644 --- a/api/server/plugin-manager/index.html +++ b/api/server/plugin-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/server/plugin/index.html b/api/server/plugin/index.html index 114fbc830..b13255174 100644 --- a/api/server/plugin/index.html +++ b/api/server/plugin/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/server/sync-message-manager/index.html b/api/server/sync-message-manager/index.html index 114fbc830..b13255174 100644 --- a/api/server/sync-message-manager/index.html +++ b/api/server/sync-message-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/telemetry/metric/index.html b/api/telemetry/metric/index.html index 114fbc830..b13255174 100644 --- a/api/telemetry/metric/index.html +++ b/api/telemetry/metric/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/telemetry/telemetry/index.html b/api/telemetry/telemetry/index.html index 114fbc830..b13255174 100644 --- a/api/telemetry/telemetry/index.html +++ b/api/telemetry/telemetry/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/telemetry/trace/index.html b/api/telemetry/trace/index.html index 114fbc830..b13255174 100644 --- a/api/telemetry/trace/index.html +++ b/api/telemetry/trace/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/test/client/index.html b/api/test/client/index.html index 114fbc830..b13255174 100644 --- a/api/test/client/index.html +++ b/api/test/client/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/test/e2e/index.html b/api/test/e2e/index.html index 114fbc830..b13255174 100644 --- a/api/test/e2e/index.html +++ b/api/test/e2e/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/api/test/server/index.html b/api/test/server/index.html index 114fbc830..b13255174 100644 --- a/api/test/server/index.html +++ b/api/test/server/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/breaking-changes/index.html b/breaking-changes/index.html index 114fbc830..b13255174 100644 --- a/breaking-changes/index.html +++ b/breaking-changes/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/breaking-changes/v0-17-0-alpha-1/index.html b/breaking-changes/v0-17-0-alpha-1/index.html index 114fbc830..b13255174 100644 --- a/breaking-changes/v0-17-0-alpha-1/index.html +++ b/breaking-changes/v0-17-0-alpha-1/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/breaking-changes/v0-17-0-alpha-3/index.html b/breaking-changes/v0-17-0-alpha-3/index.html index 114fbc830..b13255174 100644 --- a/breaking-changes/v0-17-0-alpha-3/index.html +++ b/breaking-changes/v0-17-0-alpha-3/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/breaking-changes/v0-17-0-alpha-5/index.html b/breaking-changes/v0-17-0-alpha-5/index.html index 114fbc830..b13255174 100644 --- a/breaking-changes/v0-17-0-alpha-5/index.html +++ b/breaking-changes/v0-17-0-alpha-5/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/breaking-changes/v0-18-0-alpha-1/index.html b/breaking-changes/v0-18-0-alpha-1/index.html index 114fbc830..b13255174 100644 --- a/breaking-changes/v0-18-0-alpha-1/index.html +++ b/breaking-changes/v0-18-0-alpha-1/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/breaking-changes/v0/19/0-alpha/1/index.html b/breaking-changes/v0/19/0-alpha/1/index.html index 114fbc830..b13255174 100644 --- a/breaking-changes/v0/19/0-alpha/1/index.html +++ b/breaking-changes/v0/19/0-alpha/1/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/components/index.html b/components/index.html index 114fbc830..b13255174 100644 --- a/components/index.html +++ b/components/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/app-ds/index.html b/development/app-ds/index.html index 114fbc830..b13255174 100644 --- a/development/app-ds/index.html +++ b/development/app-ds/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/api-client/index.html b/development/client/api-client/index.html index 114fbc830..b13255174 100644 --- a/development/client/api-client/index.html +++ b/development/client/api-client/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/i18n/index.html b/development/client/i18n/index.html index 114fbc830..b13255174 100644 --- a/development/client/i18n/index.html +++ b/development/client/i18n/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/index.html b/development/client/index.html index 114fbc830..b13255174 100644 --- a/development/client/index.html +++ b/development/client/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/life-cycle/index.html b/development/client/life-cycle/index.html index 114fbc830..b13255174 100644 --- a/development/client/life-cycle/index.html +++ b/development/client/life-cycle/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/providers/index.html b/development/client/providers/index.html index 114fbc830..b13255174 100644 --- a/development/client/providers/index.html +++ b/development/client/providers/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/router/index.html b/development/client/router/index.html index 114fbc830..b13255174 100644 --- a/development/client/router/index.html +++ b/development/client/router/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/styles-and-themes/index.html b/development/client/styles-and-themes/index.html index 114fbc830..b13255174 100644 --- a/development/client/styles-and-themes/index.html +++ b/development/client/styles-and-themes/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/test/index.html b/development/client/test/index.html index 114fbc830..b13255174 100644 --- a/development/client/test/index.html +++ b/development/client/test/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/ui-schema/components/index.html b/development/client/ui-schema/components/index.html index 114fbc830..b13255174 100644 --- a/development/client/ui-schema/components/index.html +++ b/development/client/ui-schema/components/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/ui-schema/designable/index.html b/development/client/ui-schema/designable/index.html index 114fbc830..b13255174 100644 --- a/development/client/ui-schema/designable/index.html +++ b/development/client/ui-schema/designable/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/ui-schema/extending/index.html b/development/client/ui-schema/extending/index.html index 114fbc830..b13255174 100644 --- a/development/client/ui-schema/extending/index.html +++ b/development/client/ui-schema/extending/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/ui-schema/initializer/index.html b/development/client/ui-schema/initializer/index.html index 114fbc830..b13255174 100644 --- a/development/client/ui-schema/initializer/index.html +++ b/development/client/ui-schema/initializer/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/ui-schema/quick-start/index.html b/development/client/ui-schema/quick-start/index.html index 114fbc830..b13255174 100644 --- a/development/client/ui-schema/quick-start/index.html +++ b/development/client/ui-schema/quick-start/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/ui-schema/rendering/index.html b/development/client/ui-schema/rendering/index.html index 114fbc830..b13255174 100644 --- a/development/client/ui-schema/rendering/index.html +++ b/development/client/ui-schema/rendering/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/ui-schema/settings/index.html b/development/client/ui-schema/settings/index.html index 114fbc830..b13255174 100644 --- a/development/client/ui-schema/settings/index.html +++ b/development/client/ui-schema/settings/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/ui-schema/toolbar/index.html b/development/client/ui-schema/toolbar/index.html index 114fbc830..b13255174 100644 --- a/development/client/ui-schema/toolbar/index.html +++ b/development/client/ui-schema/toolbar/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/client/ui-schema/what-is-ui-schema/index.html b/development/client/ui-schema/what-is-ui-schema/index.html index 114fbc830..b13255174 100644 --- a/development/client/ui-schema/what-is-ui-schema/index.html +++ b/development/client/ui-schema/what-is-ui-schema/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/http-api/action-api/index.html b/development/http-api/action-api/index.html index 114fbc830..b13255174 100644 --- a/development/http-api/action-api/index.html +++ b/development/http-api/action-api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/http-api/filter-operators/index.html b/development/http-api/filter-operators/index.html index 114fbc830..b13255174 100644 --- a/development/http-api/filter-operators/index.html +++ b/development/http-api/filter-operators/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/http-api/index.html b/development/http-api/index.html index 114fbc830..b13255174 100644 --- a/development/http-api/index.html +++ b/development/http-api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/http-api/rest-api/index.html b/development/http-api/rest-api/index.html index 114fbc830..b13255174 100644 --- a/development/http-api/rest-api/index.html +++ b/development/http-api/rest-api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/index.html b/development/index.html index 114fbc830..b13255174 100644 --- a/development/index.html +++ b/development/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/learning-guide/index.html b/development/learning-guide/index.html index 114fbc830..b13255174 100644 --- a/development/learning-guide/index.html +++ b/development/learning-guide/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/life-cycle/index.html b/development/life-cycle/index.html index 114fbc830..b13255174 100644 --- a/development/life-cycle/index.html +++ b/development/life-cycle/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/others/build/index.html b/development/others/build/index.html index 114fbc830..b13255174 100644 --- a/development/others/build/index.html +++ b/development/others/build/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/others/deps/index.html b/development/others/deps/index.html index 114fbc830..b13255174 100644 --- a/development/others/deps/index.html +++ b/development/others/deps/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/others/languages/index.html b/development/others/languages/index.html index 114fbc830..b13255174 100644 --- a/development/others/languages/index.html +++ b/development/others/languages/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/others/tech-stack/index.html b/development/others/tech-stack/index.html index 114fbc830..b13255174 100644 --- a/development/others/tech-stack/index.html +++ b/development/others/tech-stack/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/others/testing/index.html b/development/others/testing/index.html index 114fbc830..b13255174 100644 --- a/development/others/testing/index.html +++ b/development/others/testing/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/plugin-ds/index.html b/development/plugin-ds/index.html index 114fbc830..b13255174 100644 --- a/development/plugin-ds/index.html +++ b/development/plugin-ds/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/plugin/index.html b/development/plugin/index.html index 114fbc830..b13255174 100644 --- a/development/plugin/index.html +++ b/development/plugin/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/collections-fields/index.html b/development/server/collections-fields/index.html index 114fbc830..b13255174 100644 --- a/development/server/collections-fields/index.html +++ b/development/server/collections-fields/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/collections/association-fields/index.html b/development/server/collections/association-fields/index.html index 114fbc830..b13255174 100644 --- a/development/server/collections/association-fields/index.html +++ b/development/server/collections/association-fields/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/collections/collection-template/index.html b/development/server/collections/collection-template/index.html index 114fbc830..b13255174 100644 --- a/development/server/collections/collection-template/index.html +++ b/development/server/collections/collection-template/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/collections/configure/index.html b/development/server/collections/configure/index.html index 114fbc830..b13255174 100644 --- a/development/server/collections/configure/index.html +++ b/development/server/collections/configure/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/collections/field-extension/index.html b/development/server/collections/field-extension/index.html index 114fbc830..b13255174 100644 --- a/development/server/collections/field-extension/index.html +++ b/development/server/collections/field-extension/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/collections/index.html b/development/server/collections/index.html index 114fbc830..b13255174 100644 --- a/development/server/collections/index.html +++ b/development/server/collections/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/collections/options/index.html b/development/server/collections/options/index.html index 114fbc830..b13255174 100644 --- a/development/server/collections/options/index.html +++ b/development/server/collections/options/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/commands/index.html b/development/server/commands/index.html index 114fbc830..b13255174 100644 --- a/development/server/commands/index.html +++ b/development/server/commands/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/events/index.html b/development/server/events/index.html index 114fbc830..b13255174 100644 --- a/development/server/events/index.html +++ b/development/server/events/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/i18n/index.html b/development/server/i18n/index.html index 114fbc830..b13255174 100644 --- a/development/server/i18n/index.html +++ b/development/server/i18n/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/index.html b/development/server/index.html index 114fbc830..b13255174 100644 --- a/development/server/index.html +++ b/development/server/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/logger/index.html b/development/server/logger/index.html index 114fbc830..b13255174 100644 --- a/development/server/logger/index.html +++ b/development/server/logger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/middleware/index.html b/development/server/middleware/index.html index 114fbc830..b13255174 100644 --- a/development/server/middleware/index.html +++ b/development/server/middleware/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/migration/index.html b/development/server/migration/index.html index 114fbc830..b13255174 100644 --- a/development/server/migration/index.html +++ b/development/server/migration/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/resources-actions-v2/configuration/index.html b/development/server/resources-actions-v2/configuration/index.html index 114fbc830..b13255174 100644 --- a/development/server/resources-actions-v2/configuration/index.html +++ b/development/server/resources-actions-v2/configuration/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/resources-actions-v2/index.html b/development/server/resources-actions-v2/index.html index 114fbc830..b13255174 100644 --- a/development/server/resources-actions-v2/index.html +++ b/development/server/resources-actions-v2/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/resources-actions-v2/rest-api/index.html b/development/server/resources-actions-v2/rest-api/index.html index 114fbc830..b13255174 100644 --- a/development/server/resources-actions-v2/rest-api/index.html +++ b/development/server/resources-actions-v2/rest-api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/resources-actions-v2/to-resource/index.html b/development/server/resources-actions-v2/to-resource/index.html index 114fbc830..b13255174 100644 --- a/development/server/resources-actions-v2/to-resource/index.html +++ b/development/server/resources-actions-v2/to-resource/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/resources-actions-v2/vs-router/index.html b/development/server/resources-actions-v2/vs-router/index.html index 114fbc830..b13255174 100644 --- a/development/server/resources-actions-v2/vs-router/index.html +++ b/development/server/resources-actions-v2/vs-router/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/resources-actions/index.html b/development/server/resources-actions/index.html index 114fbc830..b13255174 100644 --- a/development/server/resources-actions/index.html +++ b/development/server/resources-actions/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/routing/index.html b/development/server/routing/index.html index 114fbc830..b13255174 100644 --- a/development/server/routing/index.html +++ b/development/server/routing/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/telemetry/index.html b/development/server/telemetry/index.html index 114fbc830..b13255174 100644 --- a/development/server/telemetry/index.html +++ b/development/server/telemetry/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/server/test/index.html b/development/server/test/index.html index 114fbc830..b13255174 100644 --- a/development/server/test/index.html +++ b/development/server/test/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/development/your-fisrt-plugin/index.html b/development/your-fisrt-plugin/index.html index 114fbc830..b13255174 100644 --- a/development/your-fisrt-plugin/index.html +++ b/development/your-fisrt-plugin/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/docs__en-US__handbook__action-qr-scan__index.md.8da4a068.async.js b/docs__en-US__handbook__action-qr-scan__index.md.8da4a068.async.js new file mode 100644 index 000000000..4053f8e95 --- /dev/null +++ b/docs__en-US__handbook__action-qr-scan__index.md.8da4a068.async.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[63320],{87675:function(r,d,n){n.r(d);var a=n(71100),c=n(35532),t=n(37402),u=n(78274),o=n(75208),h=n(92716),m=n(66313),x=n(48640),E=n(35206),j=n(1783),v=n(39297),P=n(68526),M=n(5019),s=n(96707),D=n(67294),_=n(85893);function i(){var l=(0,s.eL)(),e=l.texts;return(0,_.jsx)(s.dY,{children:(0,_.jsx)(_.Fragment,{children:(0,_.jsxs)("div",{className:"markdown",children:[(0,_.jsxs)("h1",{id:"scan-qr-code",children:[(0,_.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#scan-qr-code",children:(0,_.jsx)("span",{className:"icon icon-link"})}),"Scan QR Code"]}),(0,_.jsxs)("h2",{id:"introduction",children:[(0,_.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:(0,_.jsx)("span",{className:"icon icon-link"})}),"Introduction"]}),(0,_.jsx)("p",{children:e[0].value}),(0,_.jsxs)("h2",{id:"example",children:[(0,_.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#example",children:(0,_.jsx)("span",{className:"icon icon-link"})}),"Example"]}),(0,_.jsxs)("video",{width:"100%",controls:!0,children:[e[1].value,(0,_.jsx)("source",{src:"https://static-docs.nocobase.com/20240612214013_rec_.mp4",type:"video/mp4"})]}),(0,_.jsxs)("h2",{id:"user-guide",children:[(0,_.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#user-guide",children:(0,_.jsx)("span",{className:"icon icon-link"})}),"User Guide"]}),(0,_.jsxs)("h3",{id:"generate-a-qr-code",children:[(0,_.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#generate-a-qr-code",children:(0,_.jsx)("span",{className:"icon icon-link"})}),"Generate a QR Code"]}),(0,_.jsxs)("ol",{children:[(0,_.jsxs)("li",{children:[e[2].value,(0,_.jsx)("code",{children:e[3].value}),e[4].value]}),(0,_.jsxs)("li",{children:[e[5].value,(0,_.jsx)("code",{children:e[6].value}),e[7].value]}),(0,_.jsx)("li",{children:e[8].value})]}),(0,_.jsx)(o.Z,{lang:"markdown",children:e[9].value}),(0,_.jsx)("ol",{start:"4",children:(0,_.jsx)("li",{children:e[10].value})}),(0,_.jsxs)("p",{children:[(0,_.jsx)("strong",{children:e[11].value}),e[12].value]}),(0,_.jsxs)("ul",{children:[(0,_.jsxs)("li",{children:[e[13].value,(0,_.jsx)("code",{children:e[14].value}),e[15].value]}),(0,_.jsx)("li",{children:e[16].value})]}),(0,_.jsxs)("p",{children:[e[17].value,(0,_.jsx)(s.rU,{to:"/handbook/block-workbench",children:e[18].value}),e[19].value]})]})})})}d.default=i}}]); diff --git a/docs__en-US__handbook__action-qr-scan__index.md.eba147d8.async.js b/docs__en-US__handbook__action-qr-scan__index.md.eba147d8.async.js deleted file mode 100644 index 873b553d6..000000000 --- a/docs__en-US__handbook__action-qr-scan__index.md.eba147d8.async.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[63320],{87675:function(t,d,n){n.r(d);var r=n(71100),u=n(35532),l=n(37402),a=n(78274),c=n(75208),m=n(92716),h=n(66313),E=n(48640),x=n(35206),P=n(1783),M=n(39297),D=n(68526),O=n(5019),s=n(96707),v=n(67294),_=n(85893);function o(){var i=(0,s.eL)(),e=i.texts;return(0,_.jsx)(s.dY,{children:(0,_.jsx)(_.Fragment,{children:(0,_.jsxs)("div",{className:"markdown",children:[(0,_.jsxs)("h1",{id:"scan-qr-code",children:[(0,_.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#scan-qr-code",children:(0,_.jsx)("span",{className:"icon icon-link"})}),"Scan QR Code"]}),(0,_.jsxs)("h2",{id:"introduction",children:[(0,_.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:(0,_.jsx)("span",{className:"icon icon-link"})}),"Introduction"]}),(0,_.jsx)("p",{children:e[0].value}),(0,_.jsxs)("h2",{id:"example",children:[(0,_.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#example",children:(0,_.jsx)("span",{className:"icon icon-link"})}),"Example"]}),(0,_.jsxs)("video",{width:"100%",controls:!0,children:[e[1].value,(0,_.jsx)("source",{src:"https://static-docs.nocobase.com/20240612214013_rec_.mp4",type:"video/mp4"})]}),(0,_.jsxs)("p",{children:[e[2].value,(0,_.jsx)(s.rU,{to:"/handbook/block-workbench",children:e[3].value}),e[4].value]})]})})})}d.default=o}}]); diff --git a/docs__en-US__handbook__auth-oidc__index.md.081d281d.async.js b/docs__en-US__handbook__auth-oidc__index.md.081d281d.async.js deleted file mode 100644 index 479aafb49..000000000 --- a/docs__en-US__handbook__auth-oidc__index.md.081d281d.async.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[98672],{24586:function(o,i,n){n.r(i);var r=n(71100),t=n(35532),a=n(37402),h=n(78274),u=n(75208),x=n(92716),j=n(66313),m=n(48640),v=n(35206),c=n(1783),E=n(39297),g=n(68526),f=n(5019),d=n(96707),P=n(67294),e=n(85893);function l(){var _=(0,d.eL)(),s=_.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:"markdown",children:(0,e.jsxs)("h1",{id:"auth-oidc",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#auth-oidc",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Auth: OIDC"]})}),(0,e.jsx)(c.Z,{commercial:"true",name:"auth-oidc"}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h2",{id:"introduction",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Introduction"]}),(0,e.jsx)("p",{children:s[0].value}),(0,e.jsxs)("h2",{id:"activate-plugin",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#activate-plugin",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Activate Plugin"]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/202411122358790.png",alt:""})}),(0,e.jsxs)("h2",{id:"add-oidc-authentication",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#add-oidc-authentication",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Add OIDC Authentication"]}),(0,e.jsx)("p",{children:s[1].value}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/202411130004459.png",alt:""})}),(0,e.jsx)("p",{children:s[2].value}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/1efbde1c0e2f4967efc1c4336be45ca2.png",alt:""})}),(0,e.jsxs)("h2",{id:"configuration",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#configuration",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Configuration"]}),(0,e.jsxs)("h3",{id:"basic-configuration",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#basic-configuration",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Basic Configuration"]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/202411130006341.png",alt:""})}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:s[3].value}),(0,e.jsxs)("li",{children:[s[4].value,(0,e.jsx)("code",{children:s[5].value})]}),(0,e.jsx)("li",{children:s[6].value}),(0,e.jsx)("li",{children:s[7].value}),(0,e.jsxs)("li",{children:[s[8].value,(0,e.jsx)("code",{children:s[9].value}),s[10].value]}),(0,e.jsxs)("li",{children:[s[11].value,(0,e.jsx)("code",{children:s[12].value}),s[13].value]})]}),(0,e.jsxs)("h3",{id:"field-mapping",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#field-mapping",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Field Mapping"]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/92d63c8f6f4082b50d9f475674cb5650.png",alt:""})}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[s[14].value,(0,e.jsx)("code",{children:s[15].value}),s[16].value]}),(0,e.jsxs)("li",{children:[s[17].value,(0,e.jsx)("code",{children:s[18].value}),s[19].value,(0,e.jsx)("code",{children:s[20].value}),s[21].value]})]}),(0,e.jsxs)("h3",{id:"advanced-configuration",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#advanced-configuration",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Advanced Configuration"]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/202411130013306.png",alt:""})}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[s[22].value,(0,e.jsx)("code",{children:s[23].value}),s[24].value]}),(0,e.jsxs)("li",{children:[s[25].value,(0,e.jsx)("code",{children:s[26].value})]}),(0,e.jsxs)("li",{children:[s[27].value,(0,e.jsx)("strong",{children:s[28].value})]}),(0,e.jsx)("li",{children:s[29].value}),(0,e.jsx)("li",{children:s[30].value}),(0,e.jsxs)("li",{children:[s[31].value,(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:s[32].value}),(0,e.jsxs)("li",{children:[s[33].value,(0,e.jsx)("code",{children:s[34].value}),s[35].value]}),(0,e.jsxs)("li",{children:[s[36].value,(0,e.jsx)("code",{children:s[37].value}),s[38].value]})]})]})]}),(0,e.jsxs)("h3",{id:"usage",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#usage",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Usage"]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/202411130019570.png",alt:""})}),(0,e.jsx)("ul",{children:(0,e.jsx)("li",{children:s[39].value})})]}),(0,e.jsx)(a.Z,{type:"info",children:(0,e.jsxs)("p",{children:[s[40].value,(0,e.jsx)("code",{children:s[41].value}),s[42].value,(0,e.jsx)("code",{children:s[43].value}),s[44].value]})}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h2",{id:"sign-in",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#sign-in",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Sign In"]}),(0,e.jsx)("p",{children:s[45].value}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/e493d156254c2ac0b6f6e1002e6a2e6b.png",alt:""})})]})]})})}i.default=l}}]); diff --git a/docs__en-US__handbook__auth-oidc__index.md.be7ba2cc.async.js b/docs__en-US__handbook__auth-oidc__index.md.be7ba2cc.async.js new file mode 100644 index 000000000..7d4423f9a --- /dev/null +++ b/docs__en-US__handbook__auth-oidc__index.md.be7ba2cc.async.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[98672],{24586:function(h,l,s){s.r(l);var _=s(71100),x=s(35532),c=s(37402),o=s(78274),u=s(75208),n=s(92716),j=s(66313),v=s(48640),m=s(35206),a=s(1783),E=s(39297),g=s(68526),f=s(5019),i=s(96707),P=s(67294),e=s(85893);function r(){var t=(0,i.eL)(),d=t.texts;return(0,e.jsx)(i.dY,{children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:"markdown",children:(0,e.jsxs)("h1",{id:"auth-oidc",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#auth-oidc",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Auth: OIDC"]})}),(0,e.jsx)(a.Z,{commercial:"true",name:"auth-oidc"}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h2",{id:"introduction",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Introduction"]}),(0,e.jsx)("p",{children:d[0].value}),(0,e.jsxs)("h2",{id:"activate-plugin",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#activate-plugin",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Activate Plugin"]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/202411122358790.png",alt:""})}),(0,e.jsxs)("h2",{id:"add-oidc-authentication",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#add-oidc-authentication",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Add OIDC Authentication"]}),(0,e.jsx)("p",{children:d[1].value}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/202411130004459.png",alt:""})}),(0,e.jsx)("p",{children:d[2].value}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/1efbde1c0e2f4967efc1c4336be45ca2.png",alt:""})}),(0,e.jsxs)("h2",{id:"configuration",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#configuration",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Configuration"]}),(0,e.jsxs)("h3",{id:"basic-configuration",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#basic-configuration",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Basic Configuration"]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/202411130006341.png",alt:""})}),(0,e.jsxs)(n.Z,{children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{children:[(0,e.jsx)("th",{children:d[3].value}),(0,e.jsx)("th",{children:d[4].value}),(0,e.jsx)("th",{children:d[5].value})]})}),(0,e.jsxs)("tbody",{children:[(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[6].value}),(0,e.jsx)("td",{children:d[7].value}),(0,e.jsx)("td",{children:d[8].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[9].value}),(0,e.jsxs)("td",{children:[d[10].value,(0,e.jsx)("code",{children:d[11].value}),d[12].value]}),(0,e.jsx)("td",{children:d[13].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[14].value}),(0,e.jsx)("td",{children:d[15].value}),(0,e.jsx)("td",{children:d[16].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[17].value}),(0,e.jsx)("td",{children:d[18].value}),(0,e.jsx)("td",{children:d[19].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[20].value}),(0,e.jsxs)("td",{children:[d[21].value,(0,e.jsx)("code",{children:d[22].value}),d[23].value]}),(0,e.jsx)("td",{children:d[24].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[25].value}),(0,e.jsxs)("td",{children:[d[26].value,(0,e.jsx)("code",{children:d[27].value}),d[28].value,(0,e.jsx)("code",{children:d[29].value}),d[30].value]}),(0,e.jsx)("td",{children:d[31].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[32].value}),(0,e.jsxs)("td",{children:[d[33].value,(0,e.jsx)(i.rU,{to:"#usage",children:d[34].value}),d[35].value]}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:d[36].value})})]})]})]}),(0,e.jsxs)("h3",{id:"field-mapping",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#field-mapping",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Field Mapping"]}),(0,e.jsxs)(n.Z,{children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{children:[(0,e.jsx)("th",{children:d[37].value}),(0,e.jsx)("th",{children:d[38].value})]})}),(0,e.jsxs)("tbody",{children:[(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[39].value}),(0,e.jsxs)("td",{children:[d[40].value,(0,e.jsx)("code",{children:d[41].value}),d[42].value]})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[43].value}),(0,e.jsxs)("td",{children:[d[44].value,(0,e.jsx)("code",{children:d[45].value}),d[46].value,(0,e.jsx)("code",{children:d[47].value}),d[48].value]})]})]})]}),(0,e.jsxs)("h3",{id:"advanced-configuration",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#advanced-configuration",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Advanced Configuration"]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/202411130013306.png",alt:""})}),(0,e.jsxs)(n.Z,{children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{children:[(0,e.jsx)("th",{children:d[49].value}),(0,e.jsx)("th",{children:d[50].value}),(0,e.jsx)("th",{children:d[51].value})]})}),(0,e.jsxs)("tbody",{children:[(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[52].value}),(0,e.jsxs)("td",{children:[d[53].value,(0,e.jsx)("code",{children:d[54].value}),d[55].value]}),(0,e.jsx)("td",{children:d[56].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[57].value}),(0,e.jsxs)("td",{children:[d[58].value,(0,e.jsx)("code",{children:d[59].value}),d[60].value]}),(0,e.jsx)("td",{children:d[61].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[62].value}),(0,e.jsxs)("td",{children:[d[63].value,(0,e.jsx)("strong",{children:d[64].value})]}),(0,e.jsx)("td",{children:d[65].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[66].value}),(0,e.jsx)("td",{children:d[67].value}),(0,e.jsx)("td",{children:d[68].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[69].value}),(0,e.jsx)("td",{children:d[70].value}),(0,e.jsx)("td",{children:d[71].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[72].value}),(0,e.jsxs)("td",{children:[d[73].value,(0,e.jsx)("br",{}),d[74].value,(0,e.jsx)("br",{}),d[75].value,(0,e.jsx)("code",{children:d[76].value}),d[77].value,(0,e.jsx)("br",{}),d[78].value,(0,e.jsx)("code",{children:d[79].value}),d[80].value]}),(0,e.jsx)("td",{children:d[81].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[82].value}),(0,e.jsxs)("td",{children:[d[83].value,(0,e.jsx)("strong",{children:d[84].value})]}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:d[85].value})})]})]})]}),(0,e.jsx)("hr",{}),(0,e.jsxs)("h3",{id:"usage",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#usage",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Usage"]}),(0,e.jsxs)(n.Z,{children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{children:[(0,e.jsx)("th",{children:d[86].value}),(0,e.jsx)("th",{children:d[87].value})]})}),(0,e.jsxs)("tbody",{children:[(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[88].value}),(0,e.jsx)("td",{children:d[89].value})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:d[90].value}),(0,e.jsx)("td",{children:d[91].value})]})]})]})]}),(0,e.jsx)(c.Z,{type:"info",children:(0,e.jsxs)("p",{children:[d[92].value,(0,e.jsx)("code",{children:d[93].value}),d[94].value,(0,e.jsx)("code",{children:d[95].value}),d[96].value]})}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h3",{id:"login",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#login",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Login"]}),(0,e.jsx)("p",{children:d[97].value}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/e493d156254c2ac0b6f6e1002e6a2e6b.png",alt:""})})]})]})})}l.default=r}}]); diff --git a/docs__en-US__handbook__auth__user__index.md.73490939.async.js b/docs__en-US__handbook__auth__user__index.md.73490939.async.js deleted file mode 100644 index b1b63697b..000000000 --- a/docs__en-US__handbook__auth__user__index.md.73490939.async.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[27046],{54115:function(t,a,n){n.r(a);var o=n(71100),c=n(35532),l=n(37402),r=n(78274),h=n(75208),u=n(92716),m=n(66313),x=n(48640),j=n(35206),f=n(1783),E=n(39297),v=n(68526),b=n(5019),i=n(96707),P=n(67294),e=n(85893);function _(){var d=(0,i.eL)(),s=d.texts;return(0,e.jsx)(i.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"user-guide",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#user-guide",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"User Guide"]}),(0,e.jsxs)("h2",{id:"user-authentication-management",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#user-authentication-management",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"User Authentication Management"]}),(0,e.jsxs)("p",{children:[s[0].value,(0,e.jsx)("code",{children:s[1].value}),s[2].value]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/66eaa9d5421c9cb713b117366bd8a5d5.png",alt:""})}),(0,e.jsxs)("h2",{id:"activate-authentication-type",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#activate-authentication-type",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Activate Authentication Type"]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/7f1fb8f8ca5de67ffc68eff0a65848f5.png",alt:""})}),(0,e.jsx)("p",{children:s[3].value}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/8375a36ef98417af0f0977f1e07345dd.png",alt:""})}),(0,e.jsxs)("h2",{id:"user-authentication-types",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#user-authentication-types",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"User Authentication Types"]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/da4250c0cea343ebe470cbf7be4b12e4.png",alt:""})}),(0,e.jsx)("p",{children:s[4].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:s[5].value}),(0,e.jsxs)("li",{children:[s[6].value,(0,e.jsx)(i.rU,{to:"/handbook/auth-sms",children:s[7].value})]}),(0,e.jsxs)("li",{children:[s[8].value,(0,e.jsx)(i.rU,{to:"/handbook/auth-cas",children:s[9].value})]}),(0,e.jsxs)("li",{children:[s[10].value,(0,e.jsx)(i.rU,{to:"/handbook/auth-saml",children:s[11].value})]}),(0,e.jsxs)("li",{children:[s[12].value,(0,e.jsx)(i.rU,{to:"/handbook/auth-oidc",children:s[13].value})]})]}),(0,e.jsxs)("p",{children:[s[14].value,(0,e.jsx)(i.rU,{to:"/handbook/auth/dev/guide",children:s[15].value}),s[16].value]}),(0,e.jsxs)("h2",{id:"password-authentication",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#password-authentication",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Password Authentication"]}),(0,e.jsxs)("h3",{id:"configuration-interface",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#configuration-interface",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Configuration Interface"]}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/202411131505095.png",alt:""})}),(0,e.jsxs)("h3",{id:"allow-registration",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#allow-registration",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Allow Registration"]}),(0,e.jsx)("p",{children:s[17].value}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/78903930d4b47aaf75cf94c55dd3596e.png",alt:""})}),(0,e.jsx)("p",{children:s[18].value}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/ac3c3ab42df28cb7c6dc70b24e99e7f7.png",alt:""})}),(0,e.jsx)("p",{children:s[19].value}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/8d5e3b6df9991bfc1c2e095a93745121.png",alt:""})}),(0,e.jsx)("p",{children:s[20].value}),(0,e.jsx)("p",{children:(0,e.jsx)("img",{src:"https://static-docs.nocobase.com/09325c4b07e09f88f80a14dff8430556.png",alt:""})})]})})})}a.default=_}}]); diff --git a/docs__en-US__handbook__auth__user__index.md.df8c2669.async.js b/docs__en-US__handbook__auth__user__index.md.df8c2669.async.js new file mode 100644 index 000000000..ebeb5ecbe --- /dev/null +++ b/docs__en-US__handbook__auth__user__index.md.df8c2669.async.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[27046],{54115:function(c,i,n){n.r(i);var o=n(71100),l=n(35532),t=n(37402),r=n(78274),h=n(75208),u=n(92716),m=n(66313),x=n(48640),j=n(35206),f=n(1783),p=n(39297),v=n(68526),E=n(5019),a=n(96707),b=n(67294),s=n(85893);function d(){var _=(0,a.eL)(),e=_.texts;return(0,s.jsx)(a.dY,{children:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"markdown",children:[(0,s.jsxs)("h1",{id:"user-manual",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#user-manual",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"User Manual"]}),(0,s.jsxs)("h2",{id:"user-authentication-management",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#user-authentication-management",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"User Authentication Management"]}),(0,s.jsxs)("p",{children:[e[0].value,(0,s.jsx)("code",{children:e[1].value}),e[2].value]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/66eaa9d5421c9cb713b117366bd8a5d5.png",alt:""})}),(0,s.jsxs)("h2",{id:"activate-authentication-type",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#activate-authentication-type",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Activate Authentication Type"]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/7f1fb8f8ca5de67ffc68eff0a65848f5.png",alt:""})}),(0,s.jsx)("p",{children:e[3].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/8375a36ef98417af0f0977f1e07345dd.png",alt:""})}),(0,s.jsxs)("h2",{id:"user-authentication-types",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#user-authentication-types",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"User Authentication Types"]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/da4250c0cea343ebe470cbf7be4b12e4.png",alt:""})}),(0,s.jsx)("p",{children:e[4].value}),(0,s.jsxs)("ul",{children:[(0,s.jsx)("li",{children:e[5].value}),(0,s.jsxs)("li",{children:[e[6].value,(0,s.jsx)(a.rU,{to:"/handbook/auth-sms",children:e[7].value})]}),(0,s.jsxs)("li",{children:[e[8].value,(0,s.jsx)(a.rU,{to:"/handbook/auth-cas",children:e[9].value})]}),(0,s.jsxs)("li",{children:[e[10].value,(0,s.jsx)(a.rU,{to:"/handbook/auth-saml",children:e[11].value})]}),(0,s.jsxs)("li",{children:[e[12].value,(0,s.jsx)(a.rU,{to:"/handbook/auth-oidc",children:e[13].value})]})]}),(0,s.jsxs)("p",{children:[e[14].value,(0,s.jsx)(a.rU,{to:"/handbook/auth/dev/guide",children:e[15].value}),e[16].value]}),(0,s.jsxs)("h2",{id:"password-authentication",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#password-authentication",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Password Authentication"]}),(0,s.jsxs)("h3",{id:"configuration-interface",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#configuration-interface",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Configuration Interface"]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/202411131505095.png",alt:""})}),(0,s.jsxs)("h3",{id:"allow-registration",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#allow-registration",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Allow Registration"]}),(0,s.jsx)("p",{children:e[17].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/78903930d4b47aaf75cf94c55dd3596e.png",alt:""})}),(0,s.jsx)("p",{children:e[18].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/ac3c3ab42df28cb7c6dc70b24e99e7f7.png",alt:""})}),(0,s.jsx)("p",{children:e[19].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/8d5e3b6df9991bfc1c2e095a93745121.png",alt:""})}),(0,s.jsx)("p",{children:e[20].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/09325c4b07e09f88f80a14dff8430556.png",alt:""})}),(0,s.jsxs)("h3",{id:"sign-up-form-settings",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#sign-up-form-settings",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Sign up form Settings"]})]}),(0,s.jsxs)(t.Z,{type:"info",children:[(0,s.jsx)("p",{children:e[21].value}),(0,s.jsx)("p",{children:e[22].value}),(0,s.jsxs)("p",{children:[e[23].value,(0,s.jsx)("a",{href:"https://static-docs.nocobase.com/202411131510066.png"})]}),(0,s.jsx)("p",{children:e[24].value}),(0,s.jsxs)("p",{children:[e[25].value,(0,s.jsx)("a",{href:"https://static-docs.nocobase.com/202411131509011.png"})]})]})]})})}i.default=d}}]); diff --git a/docs__en-US__handbook__data-source-rest-api__index.md.2dcac466.async.js b/docs__en-US__handbook__data-source-rest-api__index.md.2dcac466.async.js new file mode 100644 index 000000000..16fb35f1a --- /dev/null +++ b/docs__en-US__handbook__data-source-rest-api__index.md.2dcac466.async.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[56098],{63654:function(h,d,n){n.r(d);var o=n(71100),x=n(35532),j=n(37402),u=n(78274),c=n(75208),i=n(92716),_=n(66313),m=n(48640),p=n(35206),r=n(1783),v=n(39297),g=n(68526),b=n(5019),a=n(96707),f=n(67294),s=n(85893);function l(){var t=(0,a.eL)(),e=t.texts;return(0,s.jsx)(a.dY,{children:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"markdown",children:(0,s.jsxs)("h1",{id:"rest-api-data-source",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#rest-api-data-source",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"REST API Data Source"]})}),(0,s.jsx)(r.Z,{commercial:"true",name:"data-source-rest-api"}),(0,s.jsxs)("div",{className:"markdown",children:[(0,s.jsxs)("h2",{id:"introduction",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Introduction"]}),(0,s.jsx)("p",{children:e[0].value}),(0,s.jsxs)("h2",{id:"installation",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Installation"]}),(0,s.jsx)("p",{children:e[1].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240323162741.png",alt:"20240323162741"})}),(0,s.jsxs)("h2",{id:"adding-a-rest-api-source",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#adding-a-rest-api-source",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Adding a REST API Source"]}),(0,s.jsx)("p",{children:e[2].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240721171420.png",alt:"20240721171420"})}),(0,s.jsxs)("h3",{id:"configuring-the-rest-api-source",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#configuring-the-rest-api-source",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Configuring the REST API Source"]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240721171507.png",alt:"20240721171507"})}),(0,s.jsxs)("h2",{id:"adding-a-collection",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#adding-a-collection",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Adding a Collection"]}),(0,s.jsx)("p",{children:e[3].value}),(0,s.jsx)(c.Z,{lang:"bash",children:e[4].value}),(0,s.jsx)("p",{children:e[5].value}),(0,s.jsx)(c.Z,{lang:"bash",children:e[6].value}),(0,s.jsx)("p",{children:e[7].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716213344.png",alt:"20240716213344"})}),(0,s.jsx)("p",{children:e[8].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716213258.png",alt:"20240716213258"})}),(0,s.jsx)("p",{children:e[9].value}),(0,s.jsxs)("h3",{id:"list",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#list",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"List"]}),(0,s.jsx)("p",{children:e[10].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716211351.png",alt:"20240716211351"})}),(0,s.jsxs)("h3",{id:"get",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#get",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Get"]}),(0,s.jsx)("p",{children:e[11].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716211532.png",alt:"20240716211532"})}),(0,s.jsxs)("h3",{id:"create",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#create",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Create"]}),(0,s.jsx)("p",{children:e[12].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716211634.png",alt:"20240716211634"})}),(0,s.jsxs)("h3",{id:"update",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#update",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Update"]}),(0,s.jsx)("p",{children:e[13].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716211733.png",alt:"20240716211733"})}),(0,s.jsxs)("h3",{id:"destroy",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#destroy",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Destroy"]}),(0,s.jsx)("p",{children:e[14].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716211808.png",alt:"20240716211808"})}),(0,s.jsx)("p",{children:e[15].value}),(0,s.jsxs)("h2",{id:"debugging-the-api",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#debugging-the-api",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Debugging the API"]}),(0,s.jsxs)("h3",{id:"request-parameter-integration",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#request-parameter-integration",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Request parameter integration"]}),(0,s.jsx)("p",{children:e[16].value}),(0,s.jsx)("p",{children:e[17].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20241121205229.png",alt:"20241121205229"})}),(0,s.jsx)("p",{children:e[18].value}),(0,s.jsxs)(i.Z,{children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e[19].value}),(0,s.jsx)("th",{children:e[20].value})]})}),(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[21].value}),(0,s.jsx)("td",{children:e[22].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[23].value}),(0,s.jsx)("td",{children:e[24].value})]})]})]}),(0,s.jsx)("p",{children:e[25].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20241121210320.png",alt:"20241121210320"})}),(0,s.jsxs)("video",{width:"100%",height:"440",controls:!0,children:[e[26].value,(0,s.jsx)("source",{src:"https://static-docs.nocobase.com/20241121211034.mp4",type:"video/mp4"})]}),(0,s.jsxs)("h3",{id:"response-format-transformation",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#response-format-transformation",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Response format transformation"]}),(0,s.jsx)("p",{children:e[27].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20241121214638.png",alt:"20241121214638"})}),(0,s.jsx)("p",{children:e[28].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20241121215100.png",alt:"20241121215100"})}),(0,s.jsxs)("h3",{id:"debugging-process-overview",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#debugging-process-overview",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Debugging Process Overview"]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240717110051.png",alt:"20240717110051"})}),(0,s.jsxs)("h2",{id:"variables",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#variables",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Variables"]}),(0,s.jsx)("p",{children:e[29].value}),(0,s.jsxs)("ul",{children:[(0,s.jsx)("li",{children:e[30].value}),(0,s.jsx)("li",{children:e[31].value}),(0,s.jsx)("li",{children:e[32].value})]}),(0,s.jsxs)("h3",{id:"custom-data-source-variables",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#custom-data-source-variables",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Custom Data Source Variables"]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716221937.png",alt:"20240716221937"})}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716221858.png",alt:"20240716221858"})}),(0,s.jsxs)("h3",{id:"nocobase-request",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#nocobase-request",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"NocoBase Request"]}),(0,s.jsxs)("ul",{children:[(0,s.jsx)("li",{children:e[33].value}),(0,s.jsx)("li",{children:e[34].value}),(0,s.jsx)("li",{children:e[35].value}),(0,s.jsx)("li",{children:e[36].value})]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716222042.png",alt:"20240716222042"})}),(0,s.jsxs)("h3",{id:"third-party-responses",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#third-party-responses",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Third-Party Responses"]}),(0,s.jsx)("p",{children:e[37].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716222303.png",alt:"20240716222303"})}),(0,s.jsx)("p",{children:e[38].value}),(0,s.jsxs)("h3",{id:"list-1",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#list-1",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"List"]}),(0,s.jsxs)(i.Z,{children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e[39].value}),(0,s.jsx)("th",{children:e[40].value})]})}),(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[41].value}),(0,s.jsx)("td",{children:e[42].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[43].value}),(0,s.jsx)("td",{children:e[44].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[45].value}),(0,s.jsx)("td",{children:e[46].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[47].value}),(0,s.jsx)("td",{children:e[48].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[49].value}),(0,s.jsx)("td",{children:e[50].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[51].value}),(0,s.jsx)("td",{children:e[52].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[53].value}),(0,s.jsx)("td",{children:e[54].value})]})]})]}),(0,s.jsxs)("h3",{id:"get-1",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#get-1",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Get"]}),(0,s.jsxs)(i.Z,{children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e[55].value}),(0,s.jsx)("th",{children:e[56].value})]})}),(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[57].value}),(0,s.jsx)("td",{children:e[58].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[59].value}),(0,s.jsx)("td",{children:e[60].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[61].value}),(0,s.jsx)("td",{children:e[62].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[63].value}),(0,s.jsx)("td",{children:e[64].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[65].value}),(0,s.jsx)("td",{children:e[66].value})]})]})]}),(0,s.jsxs)("h3",{id:"create-1",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#create-1",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Create"]}),(0,s.jsxs)(i.Z,{children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e[67].value}),(0,s.jsx)("th",{children:e[68].value})]})}),(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[69].value}),(0,s.jsx)("td",{children:e[70].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[71].value}),(0,s.jsx)("td",{children:e[72].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[73].value}),(0,s.jsx)("td",{children:e[74].value})]})]})]}),(0,s.jsxs)("h3",{id:"update-1",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#update-1",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Update"]}),(0,s.jsxs)(i.Z,{children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e[75].value}),(0,s.jsx)("th",{children:e[76].value})]})}),(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[77].value}),(0,s.jsx)("td",{children:e[78].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[79].value}),(0,s.jsx)("td",{children:e[80].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[81].value}),(0,s.jsx)("td",{children:e[82].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[83].value}),(0,s.jsx)("td",{children:e[84].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[85].value}),(0,s.jsx)("td",{children:e[86].value})]})]})]}),(0,s.jsxs)("h3",{id:"destroy-1",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#destroy-1",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Destroy"]}),(0,s.jsxs)(i.Z,{children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e[87].value}),(0,s.jsx)("th",{children:e[88].value})]})}),(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[89].value}),(0,s.jsx)("td",{children:e[90].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[91].value}),(0,s.jsx)("td",{children:e[92].value})]})]})]}),(0,s.jsxs)("h2",{id:"field-configuration",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#field-configuration",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Field Configuration"]}),(0,s.jsx)("p",{children:e[93].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716223636.png",alt:"20240716223636"})}),(0,s.jsx)("p",{children:e[94].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20241121230436.png",alt:"20241121230436"})}),(0,s.jsx)("p",{children:e[95].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716224403.png",alt:"20240716224403"})}),(0,s.jsx)("p",{children:e[96].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716224704.png",alt:"20240716224704"})}),(0,s.jsxs)("h2",{id:"adding-rest-api-data-source-blocks",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#adding-rest-api-data-source-blocks",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Adding REST API Data Source Blocks"]}),(0,s.jsx)("p",{children:e[97].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716225120.png",alt:"20240716225120"})})]})]})})}d.default=l}}]); diff --git a/docs__en-US__handbook__data-source-rest-api__index.md.f042cc5b.async.js b/docs__en-US__handbook__data-source-rest-api__index.md.f042cc5b.async.js deleted file mode 100644 index 1bdeeb3d0..000000000 --- a/docs__en-US__handbook__data-source-rest-api__index.md.f042cc5b.async.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[56098],{63654:function(h,d,n){n.r(d);var o=n(71100),x=n(35532),j=n(37402),u=n(78274),c=n(75208),i=n(92716),_=n(66313),m=n(48640),p=n(35206),r=n(1783),v=n(39297),g=n(68526),b=n(5019),a=n(96707),f=n(67294),s=n(85893);function l(){var t=(0,a.eL)(),e=t.texts;return(0,s.jsx)(a.dY,{children:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"markdown",children:(0,s.jsxs)("h1",{id:"rest-api-data-source",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#rest-api-data-source",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"REST API Data Source"]})}),(0,s.jsx)(r.Z,{commercial:"true",name:"data-source-rest-api"}),(0,s.jsxs)("div",{className:"markdown",children:[(0,s.jsxs)("h2",{id:"introduction",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Introduction"]}),(0,s.jsx)("p",{children:e[0].value}),(0,s.jsxs)("h2",{id:"installation",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Installation"]}),(0,s.jsx)("p",{children:e[1].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240323162741.png",alt:"20240323162741"})}),(0,s.jsxs)("h2",{id:"adding-a-rest-api-source",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#adding-a-rest-api-source",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Adding a REST API Source"]}),(0,s.jsx)("p",{children:e[2].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240721171420.png",alt:"20240721171420"})}),(0,s.jsxs)("h3",{id:"configuring-the-rest-api-source",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#configuring-the-rest-api-source",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Configuring the REST API Source"]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240721171507.png",alt:"20240721171507"})}),(0,s.jsxs)("h2",{id:"adding-a-collection",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#adding-a-collection",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Adding a Collection"]}),(0,s.jsx)("p",{children:e[3].value}),(0,s.jsx)(c.Z,{lang:"bash",children:e[4].value}),(0,s.jsx)("p",{children:e[5].value}),(0,s.jsx)(c.Z,{lang:"bash",children:e[6].value}),(0,s.jsx)("p",{children:e[7].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716213344.png",alt:"20240716213344"})}),(0,s.jsx)("p",{children:e[8].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716213258.png",alt:"20240716213258"})}),(0,s.jsx)("p",{children:e[9].value}),(0,s.jsxs)("h3",{id:"list",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#list",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"List"]}),(0,s.jsx)("p",{children:e[10].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716211351.png",alt:"20240716211351"})}),(0,s.jsxs)("h3",{id:"get",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#get",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Get"]}),(0,s.jsx)("p",{children:e[11].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716211532.png",alt:"20240716211532"})}),(0,s.jsxs)("h3",{id:"create",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#create",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Create"]}),(0,s.jsx)("p",{children:e[12].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716211634.png",alt:"20240716211634"})}),(0,s.jsxs)("h3",{id:"update",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#update",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Update"]}),(0,s.jsx)("p",{children:e[13].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716211733.png",alt:"20240716211733"})}),(0,s.jsxs)("h3",{id:"destroy",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#destroy",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Destroy"]}),(0,s.jsx)("p",{children:e[14].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716211808.png",alt:"20240716211808"})}),(0,s.jsx)("p",{children:e[15].value}),(0,s.jsxs)("h2",{id:"debugging-the-api",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#debugging-the-api",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Debugging the API"]}),(0,s.jsxs)("h3",{id:"request-parameter-integration",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#request-parameter-integration",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Request parameter integration"]}),(0,s.jsx)("p",{children:e[16].value}),(0,s.jsx)("p",{children:e[17].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20241121205229.png",alt:"20241121205229"})}),(0,s.jsx)("p",{children:e[18].value}),(0,s.jsxs)(i.Z,{children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e[19].value}),(0,s.jsx)("th",{children:e[20].value})]})}),(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[21].value}),(0,s.jsx)("td",{children:e[22].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[23].value}),(0,s.jsx)("td",{children:e[24].value})]})]})]}),(0,s.jsxs)("p",{children:[e[25].value,(0,s.jsx)("strong",{children:e[26].value}),e[27].value]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20241121210320.png",alt:"20241121210320"})}),(0,s.jsxs)("video",{width:"100%",height:"440",controls:!0,children:[e[28].value,(0,s.jsx)("source",{src:"https://static-docs.nocobase.com/20241121211034.mp4",type:"video/mp4"})]}),(0,s.jsxs)("h3",{id:"response-format-transformation",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#response-format-transformation",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Response format transformation"]}),(0,s.jsx)("p",{children:e[29].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20241121214638.png",alt:"20241121214638"})}),(0,s.jsx)("p",{children:e[30].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20241121215100.png",alt:"20241121215100"})}),(0,s.jsxs)("h3",{id:"debugging-process-overview",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#debugging-process-overview",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Debugging Process Overview"]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240717110051.png",alt:"20240717110051"})}),(0,s.jsxs)("h2",{id:"variables",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#variables",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Variables"]}),(0,s.jsx)("p",{children:e[31].value}),(0,s.jsxs)("ul",{children:[(0,s.jsx)("li",{children:e[32].value}),(0,s.jsx)("li",{children:e[33].value}),(0,s.jsx)("li",{children:e[34].value})]}),(0,s.jsxs)("h3",{id:"custom-data-source-variables",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#custom-data-source-variables",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Custom Data Source Variables"]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716221937.png",alt:"20240716221937"})}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716221858.png",alt:"20240716221858"})}),(0,s.jsxs)("h3",{id:"nocobase-request",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#nocobase-request",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"NocoBase Request"]}),(0,s.jsxs)("ul",{children:[(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{children:e[35].value}),e[36].value]}),(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{children:e[37].value}),e[38].value]}),(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{children:e[39].value}),e[40].value]}),(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{children:e[41].value}),e[42].value]})]}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716222042.png",alt:"20240716222042"})}),(0,s.jsxs)("h3",{id:"third-party-responses",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#third-party-responses",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Third-Party Responses"]}),(0,s.jsx)("p",{children:e[43].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716222303.png",alt:"20240716222303"})}),(0,s.jsx)("p",{children:e[44].value}),(0,s.jsxs)("h3",{id:"list-1",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#list-1",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"List"]}),(0,s.jsxs)(i.Z,{children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e[45].value}),(0,s.jsx)("th",{children:e[46].value})]})}),(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[47].value}),(0,s.jsx)("td",{children:e[48].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[49].value}),(0,s.jsx)("td",{children:e[50].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[51].value}),(0,s.jsx)("td",{children:e[52].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[53].value}),(0,s.jsx)("td",{children:e[54].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[55].value}),(0,s.jsx)("td",{children:e[56].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[57].value}),(0,s.jsx)("td",{children:e[58].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[59].value}),(0,s.jsx)("td",{children:e[60].value})]})]})]}),(0,s.jsxs)("h3",{id:"get-1",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#get-1",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Get"]}),(0,s.jsxs)(i.Z,{children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e[61].value}),(0,s.jsx)("th",{children:e[62].value})]})}),(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[63].value}),(0,s.jsx)("td",{children:e[64].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[65].value}),(0,s.jsx)("td",{children:e[66].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[67].value}),(0,s.jsx)("td",{children:e[68].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[69].value}),(0,s.jsx)("td",{children:e[70].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[71].value}),(0,s.jsx)("td",{children:e[72].value})]})]})]}),(0,s.jsxs)("h3",{id:"create-1",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#create-1",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Create"]}),(0,s.jsxs)(i.Z,{children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e[73].value}),(0,s.jsx)("th",{children:e[74].value})]})}),(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[75].value}),(0,s.jsx)("td",{children:e[76].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[77].value}),(0,s.jsx)("td",{children:e[78].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[79].value}),(0,s.jsx)("td",{children:e[80].value})]})]})]}),(0,s.jsxs)("h3",{id:"update-1",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#update-1",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Update"]}),(0,s.jsxs)(i.Z,{children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e[81].value}),(0,s.jsx)("th",{children:e[82].value})]})}),(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[83].value}),(0,s.jsx)("td",{children:e[84].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[85].value}),(0,s.jsx)("td",{children:e[86].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[87].value}),(0,s.jsx)("td",{children:e[88].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[89].value}),(0,s.jsx)("td",{children:e[90].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[91].value}),(0,s.jsx)("td",{children:e[92].value})]})]})]}),(0,s.jsxs)("h3",{id:"destroy-1",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#destroy-1",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Destroy"]}),(0,s.jsxs)(i.Z,{children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e[93].value}),(0,s.jsx)("th",{children:e[94].value})]})}),(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[95].value}),(0,s.jsx)("td",{children:e[96].value})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{children:e[97].value}),(0,s.jsx)("td",{children:e[98].value})]})]})]}),(0,s.jsxs)("h2",{id:"field-configuration",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#field-configuration",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Field Configuration"]}),(0,s.jsx)("p",{children:e[99].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716223636.png",alt:"20240716223636"})}),(0,s.jsx)("p",{children:e[100].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20241121230436.png",alt:"20241121230436"})}),(0,s.jsx)("p",{children:e[101].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716224403.png",alt:"20240716224403"})}),(0,s.jsx)("p",{children:e[102].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716224704.png",alt:"20240716224704"})}),(0,s.jsxs)("h2",{id:"adding-rest-api-data-source-blocks",children:[(0,s.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#adding-rest-api-data-source-blocks",children:(0,s.jsx)("span",{className:"icon icon-link"})}),"Adding REST API Data Source Blocks"]}),(0,s.jsx)("p",{children:e[103].value}),(0,s.jsx)("p",{children:(0,s.jsx)("img",{src:"https://static-docs.nocobase.com/20240716225120.png",alt:"20240716225120"})})]})]})})}d.default=l}}]); diff --git a/docs__en-US__welcome__getting-started__installation__create-nocobase-app.md.04adaa0a.async.js b/docs__en-US__welcome__getting-started__installation__create-nocobase-app.md.04adaa0a.async.js new file mode 100644 index 000000000..d7a3db594 --- /dev/null +++ b/docs__en-US__welcome__getting-started__installation__create-nocobase-app.md.04adaa0a.async.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[19703],{43399:function(c,l,n){n.r(l);var h=n(71100),t=n(35532),_=n(37402),u=n(78274),a=n(75208),x=n(92716),j=n(66313),m=n(48640),v=n(35206),b=n(1783),E=n(39297),M=n(68526),i=n(5019),d=n(96707),P=n(67294),e=n(85893);function r(){var o=(0,d.eL)(),s=o.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"create-nocobase-app",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#create-nocobase-app",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"create-nocobase-app"]}),(0,e.jsxs)("h2",{id:"0-prerequisites",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#0-prerequisites",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"0. Prerequisites"]}),(0,e.jsx)("p",{children:s[0].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:s[1].value}),(0,e.jsx)("li",{children:s[2].value})]}),(0,e.jsx)("p",{children:s[3].value}),(0,e.jsx)(a.Z,{lang:"bash",children:s[4].value}),(0,e.jsx)("p",{children:s[5].value}),(0,e.jsx)(a.Z,{lang:"bash",children:s[6].value}),(0,e.jsx)("p",{children:s[7].value}),(0,e.jsx)(a.Z,{lang:"bash",children:s[8].value}),(0,e.jsx)("div",{label:"MySQL",name:"mysql",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[9].value})}),(0,e.jsx)("div",{label:"MariaDB",name:"mariadb",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[10].value})}),(0,e.jsxs)("h3",{id:"beta-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#beta-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Beta version"]}),(0,e.jsx)("p",{children:s[11].value})]}),(0,e.jsxs)(i.Z,{children:[(0,e.jsx)("div",{label:"PostgreSQL",name:"postgres",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[12].value})}),(0,e.jsx)("div",{label:"MySQL",name:"mysql",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[13].value})}),(0,e.jsx)("div",{label:"MariaDB",name:"mariadb",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[14].value})})]}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h3",{id:"alpha-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#alpha-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Alpha version"]}),(0,e.jsx)("p",{children:s[15].value})]}),(0,e.jsxs)(i.Z,{children:[(0,e.jsx)("div",{label:"PostgreSQL",name:"postgres",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[16].value})}),(0,e.jsx)("div",{label:"MySQL",name:"mysql",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[17].value})}),(0,e.jsx)("div",{label:"MariaDB",name:"mariadb",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[18].value})})]}),(0,e.jsx)(_.Z,{type:"warning",children:(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[19].value}),s[20].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[21].value}),s[22].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[23].value}),s[24].value]})]})}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h2",{id:"2-switch-to-the-project-directory",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-switch-to-the-project-directory",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. Switch to the project directory"]}),(0,e.jsx)(a.Z,{lang:"bash",children:s[25].value}),(0,e.jsxs)("h2",{id:"3-install-dependencies",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3-install-dependencies",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3. Install dependencies"]}),(0,e.jsx)("p",{children:s[26].value}),(0,e.jsx)(a.Z,{lang:"bash",children:s[27].value}),(0,e.jsxs)("h2",{id:"4-install-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4-install-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4. Install NocoBase"]}),(0,e.jsx)(a.Z,{lang:"bash",children:s[28].value}),(0,e.jsxs)("h2",{id:"5-start-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5-start-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5. Start NocoBase"]}),(0,e.jsx)("p",{children:s[29].value}),(0,e.jsx)(a.Z,{lang:"bash",children:s[30].value}),(0,e.jsx)("p",{children:s[31].value}),(0,e.jsx)(a.Z,{lang:"bash",children:s[32].value}),(0,e.jsxs)("p",{children:[s[33].value,(0,e.jsx)("code",{children:s[34].value}),s[35].value]}),(0,e.jsxs)("h2",{id:"6-log-in-to-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#6-log-in-to-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"6. Log in to NocoBase"]}),(0,e.jsxs)("p",{children:[s[36].value,(0,e.jsx)("a",{href:"http://localhost:13000",children:s[37].value}),s[38].value,(0,e.jsx)("code",{children:s[39].value}),s[40].value,(0,e.jsx)("code",{children:s[41].value}),s[42].value]})]})]})})}l.default=r}}]); diff --git a/docs__en-US__welcome__getting-started__installation__create-nocobase-app.md.26f4cf65.async.js b/docs__en-US__welcome__getting-started__installation__create-nocobase-app.md.26f4cf65.async.js deleted file mode 100644 index be9196c97..000000000 --- a/docs__en-US__welcome__getting-started__installation__create-nocobase-app.md.26f4cf65.async.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[19703],{43399:function(o,i,n){n.r(i);var h=n(71100),t=n(35532),r=n(37402),x=n(78274),a=n(75208),u=n(92716),j=n(66313),m=n(48640),v=n(35206),b=n(1783),E=n(39297),M=n(68526),l=n(5019),d=n(96707),P=n(67294),e=n(85893);function _(){var c=(0,d.eL)(),s=c.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"create-nocobase-app",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#create-nocobase-app",children:(0,e.jsx)("span",{className:"icon icon-link"})}),(0,e.jsx)("code",{children:s[0].value})]}),(0,e.jsxs)("h2",{id:"0-prerequisites",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#0-prerequisites",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"0. Prerequisites"]}),(0,e.jsx)("p",{children:s[1].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:s[2].value}),(0,e.jsx)("li",{children:s[3].value})]}),(0,e.jsx)("p",{children:s[4].value}),(0,e.jsx)(a.Z,{lang:"bash",children:s[5].value}),(0,e.jsx)("p",{children:s[6].value}),(0,e.jsx)(a.Z,{lang:"bash",children:s[7].value}),(0,e.jsxs)("h2",{id:"1-create-a-nocobase-project",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-create-a-nocobase-project",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. Create a NocoBase project"]}),(0,e.jsxs)("h3",{id:"latest-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#latest-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Latest version"]}),(0,e.jsx)("p",{children:s[8].value})]}),(0,e.jsxs)(l.Z,{children:[(0,e.jsx)("div",{label:"PostgreSQL",name:"postgres",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[9].value})}),(0,e.jsx)("div",{label:"MySQL",name:"mysql",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[10].value})}),(0,e.jsx)("div",{label:"MariaDB",name:"mariadb",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[11].value})})]}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h3",{id:"beta-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#beta-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Beta version"]}),(0,e.jsx)("p",{children:s[12].value})]}),(0,e.jsxs)(l.Z,{children:[(0,e.jsx)("div",{label:"PostgreSQL",name:"postgres",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[13].value})}),(0,e.jsx)("div",{label:"MySQL",name:"mysql",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[14].value})}),(0,e.jsx)("div",{label:"MariaDB",name:"mariadb",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[15].value})})]}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h3",{id:"alpha-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#alpha-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Alpha version"]}),(0,e.jsx)("p",{children:s[16].value})]}),(0,e.jsxs)(l.Z,{children:[(0,e.jsx)("div",{label:"PostgreSQL",name:"postgres",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[17].value})}),(0,e.jsx)("div",{label:"MySQL",name:"mysql",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[18].value})}),(0,e.jsx)("div",{label:"MariaDB",name:"mariadb",children:(0,e.jsx)(a.Z,{lang:"bash",children:s[19].value})})]}),(0,e.jsx)(r.Z,{type:"warning",children:(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[20].value}),s[21].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[22].value}),s[23].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[24].value}),s[25].value]})]})}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h2",{id:"2-switch-to-the-project-directory",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-switch-to-the-project-directory",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. Switch to the project directory"]}),(0,e.jsx)(a.Z,{lang:"bash",children:s[26].value}),(0,e.jsxs)("h2",{id:"3-install-dependencies",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3-install-dependencies",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3. Install dependencies"]}),(0,e.jsx)("p",{children:s[27].value}),(0,e.jsx)(a.Z,{lang:"bash",children:s[28].value}),(0,e.jsxs)("h2",{id:"4-install-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4-install-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4. Install NocoBase"]}),(0,e.jsx)(a.Z,{lang:"bash",children:s[29].value}),(0,e.jsxs)("h2",{id:"5-start-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5-start-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5. Start NocoBase"]}),(0,e.jsx)("p",{children:s[30].value}),(0,e.jsx)(a.Z,{lang:"bash",children:s[31].value}),(0,e.jsx)("p",{children:s[32].value}),(0,e.jsx)(a.Z,{lang:"bash",children:s[33].value}),(0,e.jsxs)("p",{children:[s[34].value,(0,e.jsx)("code",{children:s[35].value}),s[36].value]}),(0,e.jsxs)("h2",{id:"6-log-in-to-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#6-log-in-to-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"6. Log in to NocoBase"]}),(0,e.jsxs)("p",{children:[s[37].value,(0,e.jsx)("a",{href:"http://localhost:13000",children:s[38].value}),s[39].value,(0,e.jsx)("code",{children:s[40].value}),s[41].value,(0,e.jsx)("code",{children:s[42].value}),s[43].value]})]})]})})}i.default=_}}]); diff --git a/docs__en-US__welcome__getting-started__installation__docker-compose.md.11c0a9c7.async.js b/docs__en-US__welcome__getting-started__installation__docker-compose.md.11c0a9c7.async.js deleted file mode 100644 index f45f5ceb8..000000000 --- a/docs__en-US__welcome__getting-started__installation__docker-compose.md.11c0a9c7.async.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[87005],{30493:function(r,l,n){n.r(l);var c=n(71100),t=n(35532),h=n(37402),u=n(78274),_=n(75208),m=n(92716),x=n(66313),j=n(48640),v=n(35206),E=n(1783),P=n(39297),M=n(68526),o=n(5019),d=n(96707),D=n(67294),e=n(85893);function i(){var a=(0,d.eL)(),s=a.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"docker--recommended",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#docker--recommended",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Docker (\u{1F44D} Recommended)"]}),(0,e.jsxs)("h2",{id:"0-prerequisites",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#0-prerequisites",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"0. Prerequisites"]}),(0,e.jsxs)("p",{children:[s[0].value,(0,e.jsx)("a",{href:"https://docs.docker.com/get-docker/",children:s[1].value})]}),(0,e.jsxs)("h2",{id:"1-create-a-docker-composeyml-file",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-create-a-docker-composeyml-file",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. Create a ",(0,e.jsx)("code",{children:s[2].value})," file"]}),(0,e.jsx)(_.Z,{lang:"bash",children:s[3].value}),(0,e.jsxs)("h2",{id:"2-configure-docker-composeyml",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-configure-docker-composeyml",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. Configure ",(0,e.jsx)("code",{children:s[4].value})]}),(0,e.jsxs)("p",{children:[s[5].value,(0,e.jsx)("code",{children:s[6].value}),s[7].value]})]}),(0,e.jsxs)(o.Z,{children:[(0,e.jsx)("div",{label:"PostgreSQL",name:"postgres",children:(0,e.jsx)(_.Z,{lang:"yml",children:s[8].value})}),(0,e.jsx)("div",{label:"MySQL",name:"mysql",children:(0,e.jsx)(_.Z,{lang:"yml",children:s[9].value})}),(0,e.jsx)("div",{label:"MariaDB",name:"mariadb",children:(0,e.jsx)(_.Z,{lang:"yml",children:s[10].value})})]}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("p",{children:[s[11].value,(0,e.jsx)(d.rU,{to:"/welcome/getting-started/installation#which-version-to-install",children:s[12].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[13].value}),s[14].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[15].value}),s[16].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[17].value}),s[18].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[19].value}),s[20].value,(0,e.jsx)("a",{href:"https://hub.docker.com/r/nocobase/nocobase/tags",children:s[21].value}),s[22].value]})]}),(0,e.jsx)("p",{children:s[23].value}),(0,e.jsx)(_.Z,{lang:"yml",children:s[24].value}),(0,e.jsxs)("h2",{id:"3-install-and-start-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3-install-and-start-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3. Install and start NocoBase"]}),(0,e.jsx)("p",{children:s[25].value}),(0,e.jsx)(_.Z,{lang:"bash",children:s[26].value}),(0,e.jsxs)("h2",{id:"4-log-in-to-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4-log-in-to-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4. Log in to NocoBase"]}),(0,e.jsxs)("p",{children:[s[27].value,(0,e.jsx)("a",{href:"http://localhost:13000",children:s[28].value}),s[29].value,(0,e.jsx)("code",{children:s[30].value}),s[31].value,(0,e.jsx)("code",{children:s[32].value}),s[33].value]})]})]})})}l.default=i}}]); diff --git a/docs__en-US__welcome__getting-started__installation__docker-compose.md.3e93d3a0.async.js b/docs__en-US__welcome__getting-started__installation__docker-compose.md.3e93d3a0.async.js new file mode 100644 index 000000000..12002f9ca --- /dev/null +++ b/docs__en-US__welcome__getting-started__installation__docker-compose.md.3e93d3a0.async.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[87005],{30493:function(r,l,s){s.r(l);var c=s(71100),u=s(35532),h=s(37402),t=s(78274),n=s(75208),m=s(92716),x=s(66313),j=s(48640),v=s(35206),E=s(1783),P=s(39297),M=s(68526),o=s(5019),d=s(96707),D=s(67294),e=s(85893);function i(){var a=(0,d.eL)(),_=a.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"docker--recommended",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#docker--recommended",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Docker (\u{1F44D} Recommended)"]}),(0,e.jsxs)("h2",{id:"0-prerequisites",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#0-prerequisites",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"0. Prerequisites"]}),(0,e.jsxs)("p",{children:[_[0].value,(0,e.jsx)("a",{href:"https://docs.docker.com/get-docker/",children:_[1].value})]}),(0,e.jsxs)("h2",{id:"1-create-a-docker-composeyml-file",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-create-a-docker-composeyml-file",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. Create a ",(0,e.jsx)("code",{children:_[2].value})," file"]}),(0,e.jsx)(n.Z,{lang:"bash",children:_[3].value}),(0,e.jsxs)("h2",{id:"2-configure-docker-composeyml",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-configure-docker-composeyml",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. Configure ",(0,e.jsx)("code",{children:_[4].value})]}),(0,e.jsxs)("p",{children:[_[5].value,(0,e.jsx)("code",{children:_[6].value}),_[7].value]})]}),(0,e.jsxs)(o.Z,{children:[(0,e.jsx)("div",{label:"PostgreSQL",name:"postgres",children:(0,e.jsx)(n.Z,{lang:"yml",children:_[8].value})}),(0,e.jsx)("div",{label:"MySQL",name:"mysql",children:(0,e.jsx)(n.Z,{lang:"yml",children:_[9].value})}),(0,e.jsx)("div",{label:"MariaDB",name:"mariadb",children:(0,e.jsx)(n.Z,{lang:"yml",children:_[10].value})})]}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("p",{children:[_[11].value,(0,e.jsx)(d.rU,{to:"/welcome/getting-started/installation#which-version-to-install",children:_[12].value})]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:_[13].value}),_[14].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:_[15].value}),_[16].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:_[17].value}),_[18].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:_[19].value}),_[20].value,(0,e.jsx)("a",{href:"https://hub.docker.com/r/nocobase/nocobase/tags",children:_[21].value}),_[22].value]})]}),(0,e.jsx)("p",{children:_[23].value}),(0,e.jsx)(n.Z,{lang:"yml",children:_[24].value}),(0,e.jsxs)("h2",{id:"4-log-in-to-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4-log-in-to-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4. Log in to NocoBase"]}),(0,e.jsxs)("p",{children:[_[25].value,(0,e.jsx)("a",{href:"http://localhost:13000",children:_[26].value}),_[27].value,(0,e.jsx)("code",{children:_[28].value}),_[29].value,(0,e.jsx)("code",{children:_[30].value}),_[31].value]})]})]})})}l.default=i}}]); diff --git a/docs__en-US__welcome__getting-started__installation__git-clone.md.8d94c718.async.js b/docs__en-US__welcome__getting-started__installation__git-clone.md.8d94c718.async.js new file mode 100644 index 000000000..c96c7b78b --- /dev/null +++ b/docs__en-US__welcome__getting-started__installation__git-clone.md.8d94c718.async.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[95724],{86663:function(r,d,n){n.r(d);var c=n(71100),h=n(35532),a=n(37402),t=n(78274),i=n(75208),u=n(92716),x=n(66313),j=n(48640),m=n(35206),v=n(1783),E=n(39297),P=n(68526),D=n(5019),_=n(96707),M=n(67294),e=n(85893);function l(){var o=(0,_.eL)(),s=o.texts;return(0,e.jsx)(_.dY,{children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"git-source-code",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#git-source-code",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Git source code"]}),(0,e.jsxs)("h2",{id:"0-prerequisites",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#0-prerequisites",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"0. Prerequisites"]}),(0,e.jsx)("p",{children:s[0].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:s[1].value}),(0,e.jsx)("li",{children:s[2].value})]}),(0,e.jsxs)("h2",{id:"1-download-with-git",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-download-with-git",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. Download with Git"]}),(0,e.jsxs)("h3",{id:"latest-version-main",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#latest-version-main",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Latest version (",(0,e.jsx)("code",{children:s[3].value}),")"]}),(0,e.jsx)("p",{children:s[4].value}),(0,e.jsx)(i.Z,{lang:"bash",children:s[5].value}),(0,e.jsxs)("h3",{id:"beta-version-next",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#beta-version-next",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Beta version (",(0,e.jsx)("code",{children:s[6].value}),")"]}),(0,e.jsx)("p",{children:s[7].value}),(0,e.jsx)(i.Z,{lang:"bash",children:s[8].value}),(0,e.jsxs)("h3",{id:"alpha-version-develop",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#alpha-version-develop",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Alpha version (",(0,e.jsx)("code",{children:s[9].value}),")"]}),(0,e.jsx)("p",{children:s[10].value}),(0,e.jsx)(i.Z,{lang:"bash",children:s[11].value}),(0,e.jsxs)("h2",{id:"2-switch-to-the-project-directory",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-switch-to-the-project-directory",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. Switch to the project directory"]}),(0,e.jsx)(i.Z,{lang:"bash",children:s[12].value}),(0,e.jsxs)("h2",{id:"3-install-dependencies",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3-install-dependencies",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3. Install dependencies"]}),(0,e.jsx)("p",{children:s[13].value}),(0,e.jsx)(i.Z,{lang:"bash",children:s[14].value})]}),(0,e.jsx)(a.Z,{type:"warning",children:(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[15].value}),s[16].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[17].value}),s[18].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:s[19].value}),s[20].value]})]})}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h2",{id:"5-install-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5-install-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5. Install NocoBase"]}),(0,e.jsx)(i.Z,{lang:"bash",children:s[21].value}),(0,e.jsxs)("h2",{id:"6-start-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#6-start-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"6. Start NocoBase"]}),(0,e.jsx)("p",{children:s[22].value}),(0,e.jsx)(i.Z,{lang:"bash",children:s[23].value}),(0,e.jsx)("p",{children:s[24].value}),(0,e.jsx)(i.Z,{lang:"bash",children:s[25].value}),(0,e.jsxs)("h2",{id:"7-log-in-to-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#7-log-in-to-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"7. Log in to NocoBase"]}),(0,e.jsxs)("p",{children:[s[26].value,(0,e.jsx)("a",{href:"http://localhost:13000",children:s[27].value}),s[28].value,(0,e.jsx)("code",{children:s[29].value}),s[30].value,(0,e.jsx)("code",{children:s[31].value}),s[32].value]})]})]})})}d.default=l}}]); diff --git a/docs__en-US__welcome__getting-started__installation__git-clone.md.b3129f12.async.js b/docs__en-US__welcome__getting-started__installation__git-clone.md.b3129f12.async.js deleted file mode 100644 index 746d52542..000000000 --- a/docs__en-US__welcome__getting-started__installation__git-clone.md.b3129f12.async.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[95724],{86663:function(r,a,s){s.r(a);var c=s(71100),t=s(35532),l=s(37402),h=s(78274),i=s(75208),u=s(92716),x=s(66313),j=s(48640),v=s(35206),m=s(1783),E=s(39297),P=s(68526),b=s(5019),d=s(96707),D=s(67294),e=s(85893);function _(){var o=(0,d.eL)(),n=o.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"git-source-code",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#git-source-code",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Git source code"]}),(0,e.jsxs)("h2",{id:"0-prerequisites",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#0-prerequisites",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"0. Prerequisites"]}),(0,e.jsx)("p",{children:n[0].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[1].value}),(0,e.jsx)("li",{children:n[2].value})]}),(0,e.jsxs)("h2",{id:"1-download-with-git",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-download-with-git",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. Download with Git"]}),(0,e.jsxs)("h3",{id:"latest-version-main",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#latest-version-main",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Latest version (",(0,e.jsx)("code",{children:n[3].value}),")"]}),(0,e.jsx)("p",{children:n[4].value}),(0,e.jsx)(i.Z,{lang:"bash",children:n[5].value}),(0,e.jsxs)("h3",{id:"beta-version-next",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#beta-version-next",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Beta version (",(0,e.jsx)("code",{children:n[6].value}),")"]}),(0,e.jsx)("p",{children:n[7].value}),(0,e.jsx)(i.Z,{lang:"bash",children:n[8].value}),(0,e.jsxs)("h3",{id:"alpha-version-develop",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#alpha-version-develop",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Alpha version (",(0,e.jsx)("code",{children:n[9].value}),")"]}),(0,e.jsx)("p",{children:n[10].value}),(0,e.jsx)(i.Z,{lang:"bash",children:n[11].value}),(0,e.jsxs)("h2",{id:"2-switch-to-the-project-directory",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-switch-to-the-project-directory",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. Switch to the project directory"]}),(0,e.jsx)(i.Z,{lang:"bash",children:n[12].value}),(0,e.jsxs)("h2",{id:"3-install-dependencies",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3-install-dependencies",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3. Install dependencies"]}),(0,e.jsx)(i.Z,{lang:"bash",children:n[13].value}),(0,e.jsxs)("h2",{id:"4-set-environment-variables",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4-set-environment-variables",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4. Set environment variables"]}),(0,e.jsxs)("p",{children:[n[14].value,(0,e.jsx)("code",{children:n[15].value}),n[16].value,(0,e.jsx)(d.rU,{to:"/welcome/getting-started/env",children:n[17].value}),n[18].value]}),(0,e.jsx)(i.Z,{lang:"bash",children:n[19].value})]}),(0,e.jsx)(l.Z,{type:"warning",children:(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[20].value}),n[21].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[22].value}),n[23].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[24].value}),n[25].value]})]})}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h2",{id:"5-install-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#5-install-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"5. Install NocoBase"]}),(0,e.jsx)(i.Z,{lang:"bash",children:n[26].value}),(0,e.jsxs)("h2",{id:"6-start-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#6-start-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"6. Start NocoBase"]}),(0,e.jsx)("p",{children:n[27].value}),(0,e.jsx)(i.Z,{lang:"bash",children:n[28].value}),(0,e.jsx)("p",{children:n[29].value}),(0,e.jsx)(i.Z,{lang:"bash",children:n[30].value}),(0,e.jsxs)("h2",{id:"7-log-in-to-nocobase",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#7-log-in-to-nocobase",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"7. Log in to NocoBase"]}),(0,e.jsxs)("p",{children:[n[31].value,(0,e.jsx)("a",{href:"http://localhost:13000",children:n[32].value}),n[33].value,(0,e.jsx)("code",{children:n[34].value}),n[35].value,(0,e.jsx)("code",{children:n[36].value}),n[37].value]})]})]})})}a.default=_}}]); diff --git a/docs__en-US__welcome__getting-started__installation__index.md.99ab129f.async.js b/docs__en-US__welcome__getting-started__installation__index.md.99ab129f.async.js deleted file mode 100644 index 3e8530e9f..000000000 --- a/docs__en-US__welcome__getting-started__installation__index.md.99ab129f.async.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[56238],{14826:function(r,i,n){n.r(i);var c=n(71100),a=n(35532),h=n(37402),t=n(78274),x=n(75208),l=n(92716),j=n(66313),u=n(48640),m=n(35206),v=n(1783),E=n(39297),P=n(68526),M=n(5019),d=n(96707),D=n(67294),e=n(85893);function _(){var o=(0,d.eL)(),s=o.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"overview",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Overview"]}),(0,e.jsxs)("h2",{id:"installation-methods",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#installation-methods",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Installation Methods"]}),(0,e.jsx)("p",{children:s[0].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)(d.rU,{to:"/welcome/getting-started/installation/docker-compose",children:s[1].value})}),(0,e.jsx)("li",{children:(0,e.jsx)(d.rU,{to:"/welcome/getting-started/installation/create-nocobase-app",children:s[2].value})}),(0,e.jsx)("li",{children:(0,e.jsx)(d.rU,{to:"/welcome/getting-started/installation/git-clone",children:s[3].value})})]}),(0,e.jsxs)("h2",{id:"how-to-choose",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-choose",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"How to choose"]}),(0,e.jsxs)("h3",{id:"docker-recommended",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#docker-recommended",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Docker (recommended)"]}),(0,e.jsx)("p",{children:s[4].value}),(0,e.jsxs)("h3",{id:"create-nocobase-app",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#create-nocobase-app",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"create-nocobase-app"]}),(0,e.jsx)("p",{children:s[5].value}),(0,e.jsxs)("h3",{id:"git-source-code",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#git-source-code",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Git source code"]}),(0,e.jsx)("p",{children:s[6].value}),(0,e.jsxs)("h2",{id:"which-version-to-install",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#which-version-to-install",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Which version to install?"]}),(0,e.jsxs)("h3",{id:"latest-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#latest-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Latest version"]}),(0,e.jsx)("p",{children:s[7].value}),(0,e.jsxs)("h3",{id:"beta-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#beta-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Beta version"]}),(0,e.jsx)("p",{children:s[8].value}),(0,e.jsxs)("h3",{id:"alpha-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#alpha-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Alpha version"]}),(0,e.jsx)("p",{children:s[9].value}),(0,e.jsxs)(l.Z,{children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{children:[(0,e.jsx)("th",{children:s[10].value}),(0,e.jsx)("th",{children:s[11].value}),(0,e.jsx)("th",{children:s[12].value}),(0,e.jsx)("th",{children:s[13].value}),(0,e.jsx)("th",{children:s[14].value})]})}),(0,e.jsxs)("tbody",{children:[(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[15].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[16].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[17].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[18].value})}),(0,e.jsxs)("td",{children:[(0,e.jsx)("code",{children:s[19].value}),(0,e.jsx)("br",{}),(0,e.jsx)("code",{children:s[20].value}),(0,e.jsx)("br",{}),s[21].value]})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[22].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[23].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[24].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[25].value})}),(0,e.jsxs)("td",{children:[(0,e.jsx)("code",{children:s[26].value}),(0,e.jsx)("br",{}),(0,e.jsx)("code",{children:s[27].value}),(0,e.jsx)("br",{}),s[28].value]})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[29].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[30].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[31].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[32].value})}),(0,e.jsxs)("td",{children:[(0,e.jsx)("code",{children:s[33].value}),(0,e.jsx)("br",{}),(0,e.jsx)("code",{children:s[34].value}),(0,e.jsx)("br",{}),s[35].value]})]})]})]})]})})})}i.default=_}}]); diff --git a/docs__en-US__welcome__getting-started__installation__index.md.e71d0aef.async.js b/docs__en-US__welcome__getting-started__installation__index.md.e71d0aef.async.js new file mode 100644 index 000000000..8d52a01c9 --- /dev/null +++ b/docs__en-US__welcome__getting-started__installation__index.md.e71d0aef.async.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[56238],{14826:function(r,i,n){n.r(i);var c=n(71100),a=n(35532),t=n(37402),h=n(78274),x=n(75208),l=n(92716),j=n(66313),u=n(48640),m=n(35206),v=n(1783),E=n(39297),P=n(68526),M=n(5019),d=n(96707),D=n(67294),e=n(85893);function o(){var _=(0,d.eL)(),s=_.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"overview",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Overview"]}),(0,e.jsxs)("h2",{id:"installation-methods",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#installation-methods",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Installation Methods"]}),(0,e.jsx)("p",{children:s[0].value}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:(0,e.jsx)(d.rU,{to:"/welcome/getting-started/installation/docker-compose",children:s[1].value})}),(0,e.jsx)("li",{children:(0,e.jsx)(d.rU,{to:"/welcome/getting-started/installation/create-nocobase-app",children:s[2].value})}),(0,e.jsx)("li",{children:(0,e.jsx)(d.rU,{to:"/welcome/getting-started/installation/git-clone",children:s[3].value})})]}),(0,e.jsxs)("h2",{id:"how-to-choose-the-installation-method",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-choose-the-installation-method",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"How to choose the Installation method?"]}),(0,e.jsxs)("h3",{id:"docker-recommended",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#docker-recommended",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Docker (recommended)"]}),(0,e.jsx)("p",{children:s[4].value}),(0,e.jsxs)("h3",{id:"create-nocobase-app",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#create-nocobase-app",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"create-nocobase-app"]}),(0,e.jsx)("p",{children:s[5].value}),(0,e.jsxs)("h3",{id:"git-source-code",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#git-source-code",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Git source code"]}),(0,e.jsx)("p",{children:s[6].value}),(0,e.jsxs)("h2",{id:"which-version-to-install",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#which-version-to-install",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Which version to install?"]}),(0,e.jsxs)("h3",{id:"latest-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#latest-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Latest version"]}),(0,e.jsx)("p",{children:s[7].value}),(0,e.jsxs)("h3",{id:"beta-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#beta-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Beta version"]}),(0,e.jsx)("p",{children:s[8].value}),(0,e.jsxs)("h3",{id:"alpha-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#alpha-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Alpha version"]}),(0,e.jsx)("p",{children:s[9].value}),(0,e.jsxs)(l.Z,{children:[(0,e.jsx)("thead",{children:(0,e.jsxs)("tr",{children:[(0,e.jsx)("th",{children:s[10].value}),(0,e.jsx)("th",{children:s[11].value}),(0,e.jsx)("th",{children:s[12].value}),(0,e.jsx)("th",{children:s[13].value}),(0,e.jsx)("th",{children:s[14].value})]})}),(0,e.jsxs)("tbody",{children:[(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[15].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[16].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[17].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[18].value})}),(0,e.jsxs)("td",{children:[(0,e.jsx)("code",{children:s[19].value}),(0,e.jsx)("br",{}),(0,e.jsx)("code",{children:s[20].value}),(0,e.jsx)("br",{}),s[21].value]})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[22].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[23].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[24].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[25].value})}),(0,e.jsxs)("td",{children:[(0,e.jsx)("code",{children:s[26].value}),(0,e.jsx)("br",{}),(0,e.jsx)("code",{children:s[27].value}),(0,e.jsx)("br",{}),s[28].value]})]}),(0,e.jsxs)("tr",{children:[(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[29].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[30].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[31].value})}),(0,e.jsx)("td",{children:(0,e.jsx)("code",{children:s[32].value})}),(0,e.jsxs)("td",{children:[(0,e.jsx)("code",{children:s[33].value}),(0,e.jsx)("br",{}),(0,e.jsx)("code",{children:s[34].value}),(0,e.jsx)("br",{}),s[35].value]})]})]})]})]})})})}i.default=o}}]); diff --git a/docs__en-US__welcome__getting-started__upgrading__docker-compose.md.764bf8bb.async.js b/docs__en-US__welcome__getting-started__upgrading__docker-compose.md.764bf8bb.async.js deleted file mode 100644 index c2efe9a30..000000000 --- a/docs__en-US__welcome__getting-started__upgrading__docker-compose.md.764bf8bb.async.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[72631],{69624:function(l,i,_){_.r(i);var t=_(71100),c=_(35532),o=_(37402),h=_(78274),s=_(75208),u=_(92716),m=_(66313),x=_(48640),j=_(35206),v=_(1783),E=_(39297),g=_(68526),P=_(5019),d=_(96707),D=_(67294),e=_(85893);function r(){var a=(0,d.eL)(),n=a.texts;return(0,e.jsx)(d.dY,{children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"upgrading-for-docker-compose",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#upgrading-for-docker-compose",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Upgrading for Docker compose"]}),(0,e.jsxs)("h2",{id:"0-preparing-for-the-upgrade",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#0-preparing-for-the-upgrade",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"0. Preparing for the upgrade"]})]}),(0,e.jsx)(o.Z,{type:"warning",children:(0,e.jsx)("p",{children:n[0].value})}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h2",{id:"1-navigate-to-the-directory-containing-docker-composeyml",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-navigate-to-the-directory-containing-docker-composeyml",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. Navigate to the directory containing ",(0,e.jsx)("code",{children:n[1].value})]}),(0,e.jsx)("p",{children:n[2].value}),(0,e.jsx)(s.Z,{lang:"bash",children:n[3].value}),(0,e.jsxs)("h2",{id:"2-update-the-image-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-update-the-image-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. Update the image version"]}),(0,e.jsxs)("ul",{children:[(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[4].value}),n[5].value,(0,e.jsx)("code",{children:n[6].value}),n[7].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[8].value}),n[9].value]}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[10].value}),n[11].value,(0,e.jsx)("a",{href:"https://hub.docker.com/r/nocobase/nocobase/tags",children:n[12].value})]})]})]}),(0,e.jsx)(o.Z,{type:"warning",children:(0,e.jsxs)("p",{children:[n[13].value,(0,e.jsx)("code",{children:n[14].value}),n[15].value,(0,e.jsx)("code",{children:n[16].value}),n[17].value]})}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsx)(s.Z,{lang:"yml",children:n[18].value}),(0,e.jsxs)("h2",{id:"3-restart-the-container",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3-restart-the-container",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3. Restart the container"]}),(0,e.jsx)(s.Z,{lang:"bash",children:n[19].value}),(0,e.jsxs)("h2",{id:"4-upgrading-independent-plugins",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#4-upgrading-independent-plugins",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"4. Upgrading independent plugins"]}),(0,e.jsxs)("p",{children:[n[20].value,(0,e.jsx)(d.rU,{to:"/welcome/getting-started/plugin",children:n[21].value})]})]})]})})}i.default=r}}]); diff --git a/docs__en-US__welcome__getting-started__upgrading__docker-compose.md.7695e75b.async.js b/docs__en-US__welcome__getting-started__upgrading__docker-compose.md.7695e75b.async.js new file mode 100644 index 000000000..bb515d01f --- /dev/null +++ b/docs__en-US__welcome__getting-started__upgrading__docker-compose.md.7695e75b.async.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknocobase_docs=self.webpackChunknocobase_docs||[]).push([[72631],{69624:function(t,d,_){_.r(d);var l=_(71100),c=_(35532),o=_(37402),h=_(78274),s=_(75208),u=_(92716),m=_(66313),x=_(48640),E=_(35206),j=_(1783),v=_(39297),P=_(68526),D=_(5019),i=_(96707),M=_(67294),e=_(85893);function r(){var a=(0,i.eL)(),n=a.texts;return(0,e.jsx)(i.dY,{children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h1",{id:"upgrading-for-docker-compose",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#upgrading-for-docker-compose",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"Upgrading for Docker compose"]}),(0,e.jsxs)("h2",{id:"0-preparing-for-the-upgrade",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#0-preparing-for-the-upgrade",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"0. Preparing for the upgrade"]})]}),(0,e.jsx)(o.Z,{type:"warning",children:(0,e.jsx)("p",{children:n[0].value})}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsxs)("h2",{id:"1-navigate-to-the-directory-containing-docker-composeyml",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#1-navigate-to-the-directory-containing-docker-composeyml",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"1. Navigate to the directory containing ",(0,e.jsx)("code",{children:n[1].value})]}),(0,e.jsx)("p",{children:n[2].value}),(0,e.jsx)(s.Z,{lang:"bash",children:n[3].value}),(0,e.jsxs)("h2",{id:"2-update-the-image-version",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#2-update-the-image-version",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"2. Update the image version"]}),(0,e.jsxs)("ul",{children:[(0,e.jsx)("li",{children:n[4].value}),(0,e.jsx)("li",{children:n[5].value}),(0,e.jsx)("li",{children:n[6].value}),(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:n[7].value}),n[8].value,(0,e.jsx)("a",{href:"https://hub.docker.com/r/nocobase/nocobase/tags",children:n[9].value}),n[10].value]})]})]}),(0,e.jsx)(o.Z,{type:"warning",children:(0,e.jsx)("p",{children:n[11].value})}),(0,e.jsxs)("div",{className:"markdown",children:[(0,e.jsx)(s.Z,{lang:"yml",children:n[12].value}),(0,e.jsxs)("h2",{id:"3-restart-the-container",children:[(0,e.jsx)("a",{"aria-hidden":"true",tabIndex:"-1",href:"#3-restart-the-container",children:(0,e.jsx)("span",{className:"icon icon-link"})}),"3. Restart the container"]}),(0,e.jsx)(s.Z,{lang:"bash",children:n[13].value})]})]})})}d.default=r}}]); diff --git a/handbook/acl/index.html b/handbook/acl/index.html index 114fbc830..b13255174 100644 --- a/handbook/acl/index.html +++ b/handbook/acl/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/acl/user/index.html b/handbook/acl/user/index.html index 114fbc830..b13255174 100644 --- a/handbook/acl/user/index.html +++ b/handbook/acl/user/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/action-bulk-edit/index.html b/handbook/action-bulk-edit/index.html index 114fbc830..b13255174 100644 --- a/handbook/action-bulk-edit/index.html +++ b/handbook/action-bulk-edit/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/action-bulk-update/index.html b/handbook/action-bulk-update/index.html index 114fbc830..b13255174 100644 --- a/handbook/action-bulk-update/index.html +++ b/handbook/action-bulk-update/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/action-custom-request/index.html b/handbook/action-custom-request/index.html index 114fbc830..b13255174 100644 --- a/handbook/action-custom-request/index.html +++ b/handbook/action-custom-request/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/action-duplicate/index.html b/handbook/action-duplicate/index.html index 114fbc830..b13255174 100644 --- a/handbook/action-duplicate/index.html +++ b/handbook/action-duplicate/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/action-export-pro/index.html b/handbook/action-export-pro/index.html index 114fbc830..b13255174 100644 --- a/handbook/action-export-pro/index.html +++ b/handbook/action-export-pro/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/action-export/index.html b/handbook/action-export/index.html index 114fbc830..b13255174 100644 --- a/handbook/action-export/index.html +++ b/handbook/action-export/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/action-import-pro/index.html b/handbook/action-import-pro/index.html index 114fbc830..b13255174 100644 --- a/handbook/action-import-pro/index.html +++ b/handbook/action-import-pro/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/action-import/index.html b/handbook/action-import/index.html index 114fbc830..b13255174 100644 --- a/handbook/action-import/index.html +++ b/handbook/action-import/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/action-print/index.html b/handbook/action-print/index.html index 114fbc830..b13255174 100644 --- a/handbook/action-print/index.html +++ b/handbook/action-print/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/action-qr-scan/index.html b/handbook/action-qr-scan/index.html index 114fbc830..b13255174 100644 --- a/handbook/action-qr-scan/index.html +++ b/handbook/action-qr-scan/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/api-doc/index.html b/handbook/api-doc/index.html index 114fbc830..b13255174 100644 --- a/handbook/api-doc/index.html +++ b/handbook/api-doc/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/api-keys/index.html b/handbook/api-keys/index.html index 114fbc830..b13255174 100644 --- a/handbook/api-keys/index.html +++ b/handbook/api-keys/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/app-switching/index.html b/handbook/app-switching/index.html index 114fbc830..b13255174 100644 --- a/handbook/app-switching/index.html +++ b/handbook/app-switching/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/audit-logs/index.html b/handbook/audit-logs/index.html index 114fbc830..b13255174 100644 --- a/handbook/audit-logs/index.html +++ b/handbook/audit-logs/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth-cas/index.html b/handbook/auth-cas/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth-cas/index.html +++ b/handbook/auth-cas/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth-dingtalk/index.html b/handbook/auth-dingtalk/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth-dingtalk/index.html +++ b/handbook/auth-dingtalk/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth-ldap/index.html b/handbook/auth-ldap/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth-ldap/index.html +++ b/handbook/auth-ldap/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth-oidc/example/google/index.html b/handbook/auth-oidc/example/google/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth-oidc/example/google/index.html +++ b/handbook/auth-oidc/example/google/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth-oidc/index.html b/handbook/auth-oidc/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth-oidc/index.html +++ b/handbook/auth-oidc/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth-saml/example/google/index.html b/handbook/auth-saml/example/google/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth-saml/example/google/index.html +++ b/handbook/auth-saml/example/google/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth-saml/index.html b/handbook/auth-saml/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth-saml/index.html +++ b/handbook/auth-saml/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth-sms/index.html b/handbook/auth-sms/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth-sms/index.html +++ b/handbook/auth-sms/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth-wecom/index.html b/handbook/auth-wecom/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth-wecom/index.html +++ b/handbook/auth-wecom/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth/dev/api/index.html b/handbook/auth/dev/api/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth/dev/api/index.html +++ b/handbook/auth/dev/api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth/dev/guide/index.html b/handbook/auth/dev/guide/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth/dev/guide/index.html +++ b/handbook/auth/dev/guide/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth/index.html b/handbook/auth/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth/index.html +++ b/handbook/auth/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/auth/user/index.html b/handbook/auth/user/index.html index 114fbc830..b13255174 100644 --- a/handbook/auth/user/index.html +++ b/handbook/auth/user/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/backup-restore/index.html b/handbook/backup-restore/index.html index 114fbc830..b13255174 100644 --- a/handbook/backup-restore/index.html +++ b/handbook/backup-restore/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/backups/index.html b/handbook/backups/index.html index 114fbc830..b13255174 100644 --- a/handbook/backups/index.html +++ b/handbook/backups/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/backups/installation/mariadb/index.html b/handbook/backups/installation/mariadb/index.html index 114fbc830..b13255174 100644 --- a/handbook/backups/installation/mariadb/index.html +++ b/handbook/backups/installation/mariadb/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/backups/installation/mysql/index.html b/handbook/backups/installation/mysql/index.html index 114fbc830..b13255174 100644 --- a/handbook/backups/installation/mysql/index.html +++ b/handbook/backups/installation/mysql/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/backups/installation/postgres/index.html b/handbook/backups/installation/postgres/index.html index 114fbc830..b13255174 100644 --- a/handbook/backups/installation/postgres/index.html +++ b/handbook/backups/installation/postgres/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/block-gantt/index.html b/handbook/block-gantt/index.html index 114fbc830..b13255174 100644 --- a/handbook/block-gantt/index.html +++ b/handbook/block-gantt/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/block-iframe/index.html b/handbook/block-iframe/index.html index 114fbc830..b13255174 100644 --- a/handbook/block-iframe/index.html +++ b/handbook/block-iframe/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/block-kanban/index.html b/handbook/block-kanban/index.html index 114fbc830..b13255174 100644 --- a/handbook/block-kanban/index.html +++ b/handbook/block-kanban/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/block-map/index.html b/handbook/block-map/index.html index 114fbc830..b13255174 100644 --- a/handbook/block-map/index.html +++ b/handbook/block-map/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/block-tree/index.html b/handbook/block-tree/index.html index 114fbc830..b13255174 100644 --- a/handbook/block-tree/index.html +++ b/handbook/block-tree/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/block-workbench/index.html b/handbook/block-workbench/index.html index 114fbc830..b13255174 100644 --- a/handbook/block-workbench/index.html +++ b/handbook/block-workbench/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/calendar/calendar-collection/index.html b/handbook/calendar/calendar-collection/index.html index 114fbc830..b13255174 100644 --- a/handbook/calendar/calendar-collection/index.html +++ b/handbook/calendar/calendar-collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/calendar/index.html b/handbook/calendar/index.html index 114fbc830..b13255174 100644 --- a/handbook/calendar/index.html +++ b/handbook/calendar/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/index.html b/handbook/client/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/index.html +++ b/handbook/client/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/index.html b/handbook/client/user/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/index.html +++ b/handbook/client/user/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/plugin-manager/index.html b/handbook/client/user/plugin-manager/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/plugin-manager/index.html +++ b/handbook/client/user/plugin-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/plugin-settings/index.html b/handbook/client/user/plugin-settings/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/plugin-settings/index.html +++ b/handbook/client/user/plugin-settings/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/add-new/index.html b/handbook/client/user/ui-designer/actions/add-new/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/add-new/index.html +++ b/handbook/client/user/ui-designer/actions/add-new/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/add-record/index.html b/handbook/client/user/ui-designer/actions/add-record/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/add-record/index.html +++ b/handbook/client/user/ui-designer/actions/add-record/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/custom-request/index.html b/handbook/client/user/ui-designer/actions/custom-request/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/custom-request/index.html +++ b/handbook/client/user/ui-designer/actions/custom-request/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/delete/index.html b/handbook/client/user/ui-designer/actions/delete/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/delete/index.html +++ b/handbook/client/user/ui-designer/actions/delete/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/duplicate/index.html b/handbook/client/user/ui-designer/actions/duplicate/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/duplicate/index.html +++ b/handbook/client/user/ui-designer/actions/duplicate/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/edit/index.html b/handbook/client/user/ui-designer/actions/edit/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/edit/index.html +++ b/handbook/client/user/ui-designer/actions/edit/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/export/index.html b/handbook/client/user/ui-designer/actions/export/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/export/index.html +++ b/handbook/client/user/ui-designer/actions/export/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/filter/index.html b/handbook/client/user/ui-designer/actions/filter/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/filter/index.html +++ b/handbook/client/user/ui-designer/actions/filter/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/import/index.html b/handbook/client/user/ui-designer/actions/import/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/import/index.html +++ b/handbook/client/user/ui-designer/actions/import/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/index.html b/handbook/client/user/ui-designer/actions/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/index.html +++ b/handbook/client/user/ui-designer/actions/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/open-popup/index.html b/handbook/client/user/ui-designer/actions/open-popup/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/open-popup/index.html +++ b/handbook/client/user/ui-designer/actions/open-popup/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/print/index.html b/handbook/client/user/ui-designer/actions/print/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/print/index.html +++ b/handbook/client/user/ui-designer/actions/print/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/refresh/index.html b/handbook/client/user/ui-designer/actions/refresh/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/refresh/index.html +++ b/handbook/client/user/ui-designer/actions/refresh/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/save-record/index.html b/handbook/client/user/ui-designer/actions/save-record/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/save-record/index.html +++ b/handbook/client/user/ui-designer/actions/save-record/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/submit-to-workflow/index.html b/handbook/client/user/ui-designer/actions/submit-to-workflow/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/submit-to-workflow/index.html +++ b/handbook/client/user/ui-designer/actions/submit-to-workflow/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/submit/index.html b/handbook/client/user/ui-designer/actions/submit/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/submit/index.html +++ b/handbook/client/user/ui-designer/actions/submit/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/update-record/index.html b/handbook/client/user/ui-designer/actions/update-record/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/update-record/index.html +++ b/handbook/client/user/ui-designer/actions/update-record/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/actions/view/index.html b/handbook/client/user/ui-designer/actions/view/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/actions/view/index.html +++ b/handbook/client/user/ui-designer/actions/view/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/blocks/index.html b/handbook/client/user/ui-designer/blocks/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/blocks/index.html +++ b/handbook/client/user/ui-designer/blocks/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/fields/index.html b/handbook/client/user/ui-designer/fields/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/fields/index.html +++ b/handbook/client/user/ui-designer/fields/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/index.html b/handbook/client/user/ui-designer/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/index.html +++ b/handbook/client/user/ui-designer/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/menus/index.html b/handbook/client/user/ui-designer/menus/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/menus/index.html +++ b/handbook/client/user/ui-designer/menus/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/client/user/ui-designer/pages/index.html b/handbook/client/user/ui-designer/pages/index.html index 114fbc830..b13255174 100644 --- a/handbook/client/user/ui-designer/pages/index.html +++ b/handbook/client/user/ui-designer/pages/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/collection-expression/collection/index.html b/handbook/collection-expression/collection/index.html index 114fbc830..b13255174 100644 --- a/handbook/collection-expression/collection/index.html +++ b/handbook/collection-expression/collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/collection-fdw/enable-federated/index.html b/handbook/collection-fdw/enable-federated/index.html index 114fbc830..b13255174 100644 --- a/handbook/collection-fdw/enable-federated/index.html +++ b/handbook/collection-fdw/enable-federated/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/collection-fdw/index.html b/handbook/collection-fdw/index.html index 114fbc830..b13255174 100644 --- a/handbook/collection-fdw/index.html +++ b/handbook/collection-fdw/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/collection-sql/index.html b/handbook/collection-sql/index.html index 114fbc830..b13255174 100644 --- a/handbook/collection-sql/index.html +++ b/handbook/collection-sql/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/collection-tree/index.html b/handbook/collection-tree/index.html index 114fbc830..b13255174 100644 --- a/handbook/collection-tree/index.html +++ b/handbook/collection-tree/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/collection-view/index.html b/handbook/collection-view/index.html index 114fbc830..b13255174 100644 --- a/handbook/collection-view/index.html +++ b/handbook/collection-view/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/custom-brand/index.html b/handbook/custom-brand/index.html index 114fbc830..b13255174 100644 --- a/handbook/custom-brand/index.html +++ b/handbook/custom-brand/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/advanced/collection-select/index.html b/handbook/data-modeling/collection-fields/advanced/collection-select/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/advanced/collection-select/index.html +++ b/handbook/data-modeling/collection-fields/advanced/collection-select/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/advanced/json/index.html b/handbook/data-modeling/collection-fields/advanced/json/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/advanced/json/index.html +++ b/handbook/data-modeling/collection-fields/advanced/json/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/advanced/nano-id/index.html b/handbook/data-modeling/collection-fields/advanced/nano-id/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/advanced/nano-id/index.html +++ b/handbook/data-modeling/collection-fields/advanced/nano-id/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/advanced/sort/index.html b/handbook/data-modeling/collection-fields/advanced/sort/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/advanced/sort/index.html +++ b/handbook/data-modeling/collection-fields/advanced/sort/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/advanced/uuid/index.html b/handbook/data-modeling/collection-fields/advanced/uuid/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/advanced/uuid/index.html +++ b/handbook/data-modeling/collection-fields/advanced/uuid/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/associations/index.html b/handbook/data-modeling/collection-fields/associations/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/associations/index.html +++ b/handbook/data-modeling/collection-fields/associations/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/associations/m2m/index.html b/handbook/data-modeling/collection-fields/associations/m2m/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/associations/m2m/index.html +++ b/handbook/data-modeling/collection-fields/associations/m2m/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/associations/m2o/index.html b/handbook/data-modeling/collection-fields/associations/m2o/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/associations/m2o/index.html +++ b/handbook/data-modeling/collection-fields/associations/m2o/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/associations/o2m/index.html b/handbook/data-modeling/collection-fields/associations/o2m/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/associations/o2m/index.html +++ b/handbook/data-modeling/collection-fields/associations/o2m/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/associations/o2o/index.html b/handbook/data-modeling/collection-fields/associations/o2o/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/associations/o2o/index.html +++ b/handbook/data-modeling/collection-fields/associations/o2o/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/basic/color/index.html b/handbook/data-modeling/collection-fields/basic/color/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/basic/color/index.html +++ b/handbook/data-modeling/collection-fields/basic/color/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/basic/email/index.html b/handbook/data-modeling/collection-fields/basic/email/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/basic/email/index.html +++ b/handbook/data-modeling/collection-fields/basic/email/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/basic/icon/index.html b/handbook/data-modeling/collection-fields/basic/icon/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/basic/icon/index.html +++ b/handbook/data-modeling/collection-fields/basic/icon/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/basic/input/index.html b/handbook/data-modeling/collection-fields/basic/input/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/basic/input/index.html +++ b/handbook/data-modeling/collection-fields/basic/input/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/basic/integer/index.html b/handbook/data-modeling/collection-fields/basic/integer/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/basic/integer/index.html +++ b/handbook/data-modeling/collection-fields/basic/integer/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/basic/number/index.html b/handbook/data-modeling/collection-fields/basic/number/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/basic/number/index.html +++ b/handbook/data-modeling/collection-fields/basic/number/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/basic/password/index.html b/handbook/data-modeling/collection-fields/basic/password/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/basic/password/index.html +++ b/handbook/data-modeling/collection-fields/basic/password/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/basic/percent/index.html b/handbook/data-modeling/collection-fields/basic/percent/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/basic/percent/index.html +++ b/handbook/data-modeling/collection-fields/basic/percent/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/basic/phone/index.html b/handbook/data-modeling/collection-fields/basic/phone/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/basic/phone/index.html +++ b/handbook/data-modeling/collection-fields/basic/phone/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/basic/textarea/index.html b/handbook/data-modeling/collection-fields/basic/textarea/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/basic/textarea/index.html +++ b/handbook/data-modeling/collection-fields/basic/textarea/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/basic/url/index.html b/handbook/data-modeling/collection-fields/basic/url/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/basic/url/index.html +++ b/handbook/data-modeling/collection-fields/basic/url/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/choices/checkbox-group/index.html b/handbook/data-modeling/collection-fields/choices/checkbox-group/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/choices/checkbox-group/index.html +++ b/handbook/data-modeling/collection-fields/choices/checkbox-group/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/choices/checkbox/index.html b/handbook/data-modeling/collection-fields/choices/checkbox/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/choices/checkbox/index.html +++ b/handbook/data-modeling/collection-fields/choices/checkbox/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/choices/china-region/index.html b/handbook/data-modeling/collection-fields/choices/china-region/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/choices/china-region/index.html +++ b/handbook/data-modeling/collection-fields/choices/china-region/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/choices/multiple-select/index.html b/handbook/data-modeling/collection-fields/choices/multiple-select/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/choices/multiple-select/index.html +++ b/handbook/data-modeling/collection-fields/choices/multiple-select/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/choices/radio-group/index.html b/handbook/data-modeling/collection-fields/choices/radio-group/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/choices/radio-group/index.html +++ b/handbook/data-modeling/collection-fields/choices/radio-group/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/choices/select/index.html b/handbook/data-modeling/collection-fields/choices/select/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/choices/select/index.html +++ b/handbook/data-modeling/collection-fields/choices/select/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/datetime/date/index.html b/handbook/data-modeling/collection-fields/datetime/date/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/datetime/date/index.html +++ b/handbook/data-modeling/collection-fields/datetime/date/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/datetime/datetime-without-tz/index.html b/handbook/data-modeling/collection-fields/datetime/datetime-without-tz/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/datetime/datetime-without-tz/index.html +++ b/handbook/data-modeling/collection-fields/datetime/datetime-without-tz/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/datetime/datetime/index.html b/handbook/data-modeling/collection-fields/datetime/datetime/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/datetime/datetime/index.html +++ b/handbook/data-modeling/collection-fields/datetime/datetime/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/datetime/index.html b/handbook/data-modeling/collection-fields/datetime/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/datetime/index.html +++ b/handbook/data-modeling/collection-fields/datetime/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/datetime/time/index.html b/handbook/data-modeling/collection-fields/datetime/time/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/datetime/time/index.html +++ b/handbook/data-modeling/collection-fields/datetime/time/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/datetime/unix-timestamp/index.html b/handbook/data-modeling/collection-fields/datetime/unix-timestamp/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/datetime/unix-timestamp/index.html +++ b/handbook/data-modeling/collection-fields/datetime/unix-timestamp/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/geometric/circle/index.html b/handbook/data-modeling/collection-fields/geometric/circle/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/geometric/circle/index.html +++ b/handbook/data-modeling/collection-fields/geometric/circle/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/geometric/line/index.html b/handbook/data-modeling/collection-fields/geometric/line/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/geometric/line/index.html +++ b/handbook/data-modeling/collection-fields/geometric/line/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/geometric/point/index.html b/handbook/data-modeling/collection-fields/geometric/point/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/geometric/point/index.html +++ b/handbook/data-modeling/collection-fields/geometric/point/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/geometric/polygon/index.html b/handbook/data-modeling/collection-fields/geometric/polygon/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/geometric/polygon/index.html +++ b/handbook/data-modeling/collection-fields/geometric/polygon/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/index.html b/handbook/data-modeling/collection-fields/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/index.html +++ b/handbook/data-modeling/collection-fields/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/media/field-attachment/index.html b/handbook/data-modeling/collection-fields/media/field-attachment/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/media/field-attachment/index.html +++ b/handbook/data-modeling/collection-fields/media/field-attachment/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/media/markdown/index.html b/handbook/data-modeling/collection-fields/media/markdown/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/media/markdown/index.html +++ b/handbook/data-modeling/collection-fields/media/markdown/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/media/rich-text/index.html b/handbook/data-modeling/collection-fields/media/rich-text/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/media/rich-text/index.html +++ b/handbook/data-modeling/collection-fields/media/rich-text/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/system-info/created-at/index.html b/handbook/data-modeling/collection-fields/system-info/created-at/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/system-info/created-at/index.html +++ b/handbook/data-modeling/collection-fields/system-info/created-at/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/system-info/table-oid/index.html b/handbook/data-modeling/collection-fields/system-info/table-oid/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/system-info/table-oid/index.html +++ b/handbook/data-modeling/collection-fields/system-info/table-oid/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection-fields/system-info/updated-at/index.html b/handbook/data-modeling/collection-fields/system-info/updated-at/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection-fields/system-info/updated-at/index.html +++ b/handbook/data-modeling/collection-fields/system-info/updated-at/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/collection/index.html b/handbook/data-modeling/collection/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/collection/index.html +++ b/handbook/data-modeling/collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/data-source/index.html b/handbook/data-modeling/data-source/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/data-source/index.html +++ b/handbook/data-modeling/data-source/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-modeling/index.html b/handbook/data-modeling/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-modeling/index.html +++ b/handbook/data-modeling/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-source-external-mariadb/index.html b/handbook/data-source-external-mariadb/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-source-external-mariadb/index.html +++ b/handbook/data-source-external-mariadb/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-source-external-mssql/index.html b/handbook/data-source-external-mssql/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-source-external-mssql/index.html +++ b/handbook/data-source-external-mssql/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-source-external-mysql/index.html b/handbook/data-source-external-mysql/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-source-external-mysql/index.html +++ b/handbook/data-source-external-mysql/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-source-external-postgres/index.html b/handbook/data-source-external-postgres/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-source-external-postgres/index.html +++ b/handbook/data-source-external-postgres/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-source-kingbase/index.html b/handbook/data-source-kingbase/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-source-kingbase/index.html +++ b/handbook/data-source-kingbase/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-source-main/general-collection/index.html b/handbook/data-source-main/general-collection/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-source-main/general-collection/index.html +++ b/handbook/data-source-main/general-collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-source-main/index.html b/handbook/data-source-main/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-source-main/index.html +++ b/handbook/data-source-main/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-source-main/inheritance-collection/index.html b/handbook/data-source-main/inheritance-collection/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-source-main/inheritance-collection/index.html +++ b/handbook/data-source-main/inheritance-collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-source-manager/external-database/index.html b/handbook/data-source-manager/external-database/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-source-manager/external-database/index.html +++ b/handbook/data-source-manager/external-database/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-source-manager/index.html b/handbook/data-source-manager/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-source-manager/index.html +++ b/handbook/data-source-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-source-rest-api/index.html b/handbook/data-source-rest-api/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-source-rest-api/index.html +++ b/handbook/data-source-rest-api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/antd-charts/bar/index.html b/handbook/data-visualization/antd-charts/bar/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/antd-charts/bar/index.html +++ b/handbook/data-visualization/antd-charts/bar/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/antd-charts/column/index.html b/handbook/data-visualization/antd-charts/column/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/antd-charts/column/index.html +++ b/handbook/data-visualization/antd-charts/column/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/antd-charts/dual-axes/index.html b/handbook/data-visualization/antd-charts/dual-axes/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/antd-charts/dual-axes/index.html +++ b/handbook/data-visualization/antd-charts/dual-axes/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/antd-charts/line/index.html b/handbook/data-visualization/antd-charts/line/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/antd-charts/line/index.html +++ b/handbook/data-visualization/antd-charts/line/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/antd-charts/overview/index.html b/handbook/data-visualization/antd-charts/overview/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/antd-charts/overview/index.html +++ b/handbook/data-visualization/antd-charts/overview/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/antd-charts/pie/index.html b/handbook/data-visualization/antd-charts/pie/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/antd-charts/pie/index.html +++ b/handbook/data-visualization/antd-charts/pie/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/antd-charts/scatter/index.html b/handbook/data-visualization/antd-charts/scatter/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/antd-charts/scatter/index.html +++ b/handbook/data-visualization/antd-charts/scatter/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/antd/overview/index.html b/handbook/data-visualization/antd/overview/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/antd/overview/index.html +++ b/handbook/data-visualization/antd/overview/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/antd/statistic/index.html b/handbook/data-visualization/antd/statistic/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/antd/statistic/index.html +++ b/handbook/data-visualization/antd/statistic/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/antd/table/index.html b/handbook/data-visualization/antd/table/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/antd/table/index.html +++ b/handbook/data-visualization/antd/table/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/block-charts/index.html b/handbook/data-visualization/block-charts/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/block-charts/index.html +++ b/handbook/data-visualization/block-charts/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/dev/index.html b/handbook/data-visualization/dev/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/dev/index.html +++ b/handbook/data-visualization/dev/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/echarts/area/index.html b/handbook/data-visualization/echarts/area/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/echarts/area/index.html +++ b/handbook/data-visualization/echarts/area/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/echarts/bar/index.html b/handbook/data-visualization/echarts/bar/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/echarts/bar/index.html +++ b/handbook/data-visualization/echarts/bar/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/echarts/column/index.html b/handbook/data-visualization/echarts/column/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/echarts/column/index.html +++ b/handbook/data-visualization/echarts/column/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/echarts/diverging-bar/index.html b/handbook/data-visualization/echarts/diverging-bar/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/echarts/diverging-bar/index.html +++ b/handbook/data-visualization/echarts/diverging-bar/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/echarts/funnel/index.html b/handbook/data-visualization/echarts/funnel/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/echarts/funnel/index.html +++ b/handbook/data-visualization/echarts/funnel/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/echarts/line/index.html b/handbook/data-visualization/echarts/line/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/echarts/line/index.html +++ b/handbook/data-visualization/echarts/line/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/echarts/overview/index.html b/handbook/data-visualization/echarts/overview/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/echarts/overview/index.html +++ b/handbook/data-visualization/echarts/overview/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/echarts/pie/index.html b/handbook/data-visualization/echarts/pie/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/echarts/pie/index.html +++ b/handbook/data-visualization/echarts/pie/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/echarts/radar/index.html b/handbook/data-visualization/echarts/radar/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/echarts/radar/index.html +++ b/handbook/data-visualization/echarts/radar/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/echarts/scatter/index.html b/handbook/data-visualization/echarts/scatter/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/echarts/scatter/index.html +++ b/handbook/data-visualization/echarts/scatter/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/echarts/treemap/index.html b/handbook/data-visualization/echarts/treemap/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/echarts/treemap/index.html +++ b/handbook/data-visualization/echarts/treemap/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/echarts/wordcloud/index.html b/handbook/data-visualization/echarts/wordcloud/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/echarts/wordcloud/index.html +++ b/handbook/data-visualization/echarts/wordcloud/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/faq/index.html b/handbook/data-visualization/faq/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/faq/index.html +++ b/handbook/data-visualization/faq/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/index.html b/handbook/data-visualization/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/index.html +++ b/handbook/data-visualization/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/step-by-step/index.html b/handbook/data-visualization/step-by-step/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/step-by-step/index.html +++ b/handbook/data-visualization/step-by-step/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/user/chart-block/index.html b/handbook/data-visualization/user/chart-block/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/user/chart-block/index.html +++ b/handbook/data-visualization/user/chart-block/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/user/configure/index.html b/handbook/data-visualization/user/configure/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/user/configure/index.html +++ b/handbook/data-visualization/user/configure/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/data-visualization/user/filter/index.html b/handbook/data-visualization/user/filter/index.html index 114fbc830..b13255174 100644 --- a/handbook/data-visualization/user/filter/index.html +++ b/handbook/data-visualization/user/filter/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/departments/index.html b/handbook/departments/index.html index 114fbc830..b13255174 100644 --- a/handbook/departments/index.html +++ b/handbook/departments/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/departments/manual/index.html b/handbook/departments/manual/index.html index 114fbc830..b13255174 100644 --- a/handbook/departments/manual/index.html +++ b/handbook/departments/manual/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/embed/index.html b/handbook/embed/index.html index 114fbc830..b13255174 100644 --- a/handbook/embed/index.html +++ b/handbook/embed/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/field-attachment-url/index.html b/handbook/field-attachment-url/index.html index 114fbc830..b13255174 100644 --- a/handbook/field-attachment-url/index.html +++ b/handbook/field-attachment-url/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/field-china-region/index.html b/handbook/field-china-region/index.html index 114fbc830..b13255174 100644 --- a/handbook/field-china-region/index.html +++ b/handbook/field-china-region/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/field-component-mask/index.html b/handbook/field-component-mask/index.html index 114fbc830..b13255174 100644 --- a/handbook/field-component-mask/index.html +++ b/handbook/field-component-mask/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/field-encryption/index.html b/handbook/field-encryption/index.html index 114fbc830..b13255174 100644 --- a/handbook/field-encryption/index.html +++ b/handbook/field-encryption/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/field-formula/index.html b/handbook/field-formula/index.html index 114fbc830..b13255174 100644 --- a/handbook/field-formula/index.html +++ b/handbook/field-formula/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/field-m2m-array/index.html b/handbook/field-m2m-array/index.html index 114fbc830..b13255174 100644 --- a/handbook/field-m2m-array/index.html +++ b/handbook/field-m2m-array/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/field-markdown-vditor/index.html b/handbook/field-markdown-vditor/index.html index 114fbc830..b13255174 100644 --- a/handbook/field-markdown-vditor/index.html +++ b/handbook/field-markdown-vditor/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/field-sequence/index.html b/handbook/field-sequence/index.html index 114fbc830..b13255174 100644 --- a/handbook/field-sequence/index.html +++ b/handbook/field-sequence/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/field-snapshot/index.html b/handbook/field-snapshot/index.html index 114fbc830..b13255174 100644 --- a/handbook/field-snapshot/index.html +++ b/handbook/field-snapshot/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/field-sort/index.html b/handbook/field-sort/index.html index 114fbc830..b13255174 100644 --- a/handbook/field-sort/index.html +++ b/handbook/field-sort/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/file-manager/development/index.html b/handbook/file-manager/development/index.html index 114fbc830..b13255174 100644 --- a/handbook/file-manager/development/index.html +++ b/handbook/file-manager/development/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/file-manager/field-attachment/index.html b/handbook/file-manager/field-attachment/index.html index 114fbc830..b13255174 100644 --- a/handbook/file-manager/field-attachment/index.html +++ b/handbook/file-manager/field-attachment/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/file-manager/file-collection/index.html b/handbook/file-manager/file-collection/index.html index 114fbc830..b13255174 100644 --- a/handbook/file-manager/file-collection/index.html +++ b/handbook/file-manager/file-collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/file-manager/index.html b/handbook/file-manager/index.html index 114fbc830..b13255174 100644 --- a/handbook/file-manager/index.html +++ b/handbook/file-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/file-manager/storage/aliyun-oss/index.html b/handbook/file-manager/storage/aliyun-oss/index.html index 114fbc830..b13255174 100644 --- a/handbook/file-manager/storage/aliyun-oss/index.html +++ b/handbook/file-manager/storage/aliyun-oss/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/file-manager/storage/amazon-s3/index.html b/handbook/file-manager/storage/amazon-s3/index.html index 114fbc830..b13255174 100644 --- a/handbook/file-manager/storage/amazon-s3/index.html +++ b/handbook/file-manager/storage/amazon-s3/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/file-manager/storage/index.html b/handbook/file-manager/storage/index.html index 114fbc830..b13255174 100644 --- a/handbook/file-manager/storage/index.html +++ b/handbook/file-manager/storage/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/file-manager/storage/local/index.html b/handbook/file-manager/storage/local/index.html index 114fbc830..b13255174 100644 --- a/handbook/file-manager/storage/local/index.html +++ b/handbook/file-manager/storage/local/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/file-manager/storage/tencent-cos/index.html b/handbook/file-manager/storage/tencent-cos/index.html index 114fbc830..b13255174 100644 --- a/handbook/file-manager/storage/tencent-cos/index.html +++ b/handbook/file-manager/storage/tencent-cos/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/file-storage-cos/index.html b/handbook/file-storage-cos/index.html index 114fbc830..b13255174 100644 --- a/handbook/file-storage-cos/index.html +++ b/handbook/file-storage-cos/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/file-storage-oss/index.html b/handbook/file-storage-oss/index.html index 114fbc830..b13255174 100644 --- a/handbook/file-storage-oss/index.html +++ b/handbook/file-storage-oss/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/file-storage-s3/index.html b/handbook/file-storage-s3/index.html index 114fbc830..b13255174 100644 --- a/handbook/file-storage-s3/index.html +++ b/handbook/file-storage-s3/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/graph-collection-manager/index.html b/handbook/graph-collection-manager/index.html index 114fbc830..b13255174 100644 --- a/handbook/graph-collection-manager/index.html +++ b/handbook/graph-collection-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/index.html b/handbook/index.html index 114fbc830..b13255174 100644 --- a/handbook/index.html +++ b/handbook/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/localization-management/index.html b/handbook/localization-management/index.html index 114fbc830..b13255174 100644 --- a/handbook/localization-management/index.html +++ b/handbook/localization-management/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/logger/index.html b/handbook/logger/index.html index 114fbc830..b13255174 100644 --- a/handbook/logger/index.html +++ b/handbook/logger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/mobile-client/index.html b/handbook/mobile-client/index.html index 114fbc830..b13255174 100644 --- a/handbook/mobile-client/index.html +++ b/handbook/mobile-client/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/mobile/index.html b/handbook/mobile/index.html index 114fbc830..b13255174 100644 --- a/handbook/mobile/index.html +++ b/handbook/mobile/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/multi-app-manager/index.html b/handbook/multi-app-manager/index.html index 114fbc830..b13255174 100644 --- a/handbook/multi-app-manager/index.html +++ b/handbook/multi-app-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/notification-email/index.html b/handbook/notification-email/index.html index 114fbc830..b13255174 100644 --- a/handbook/notification-email/index.html +++ b/handbook/notification-email/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/notification-in-app-message/index.html b/handbook/notification-in-app-message/index.html index 114fbc830..b13255174 100644 --- a/handbook/notification-in-app-message/index.html +++ b/handbook/notification-in-app-message/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/notification-manager/development/api/index.html b/handbook/notification-manager/development/api/index.html index 114fbc830..b13255174 100644 --- a/handbook/notification-manager/development/api/index.html +++ b/handbook/notification-manager/development/api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/notification-manager/development/extension/index.html b/handbook/notification-manager/development/extension/index.html index 114fbc830..b13255174 100644 --- a/handbook/notification-manager/development/extension/index.html +++ b/handbook/notification-manager/development/extension/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/notification-manager/index.html b/handbook/notification-manager/index.html index 114fbc830..b13255174 100644 --- a/handbook/notification-manager/index.html +++ b/handbook/notification-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/plugin-manager/index.html b/handbook/plugin-manager/index.html index 114fbc830..b13255174 100644 --- a/handbook/plugin-manager/index.html +++ b/handbook/plugin-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/public-forms/index.html b/handbook/public-forms/index.html index 114fbc830..b13255174 100644 --- a/handbook/public-forms/index.html +++ b/handbook/public-forms/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/system-settings/index.html b/handbook/system-settings/index.html index 114fbc830..b13255174 100644 --- a/handbook/system-settings/index.html +++ b/handbook/system-settings/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/system-settings/language-settings/index.html b/handbook/system-settings/language-settings/index.html index 114fbc830..b13255174 100644 --- a/handbook/system-settings/language-settings/index.html +++ b/handbook/system-settings/language-settings/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/telemetry-prometheus/index.html b/handbook/telemetry-prometheus/index.html index 114fbc830..b13255174 100644 --- a/handbook/telemetry-prometheus/index.html +++ b/handbook/telemetry-prometheus/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/template-handlebars/index.html b/handbook/template-handlebars/index.html index 114fbc830..b13255174 100644 --- a/handbook/template-handlebars/index.html +++ b/handbook/template-handlebars/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/template-json/index.html b/handbook/template-json/index.html index 114fbc830..b13255174 100644 --- a/handbook/template-json/index.html +++ b/handbook/template-json/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/template-string/index.html b/handbook/template-string/index.html index 114fbc830..b13255174 100644 --- a/handbook/template-string/index.html +++ b/handbook/template-string/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/theme-editor/index.html b/handbook/theme-editor/index.html index 114fbc830..b13255174 100644 --- a/handbook/theme-editor/index.html +++ b/handbook/theme-editor/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui-schema-storage/index.html b/handbook/ui-schema-storage/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui-schema-storage/index.html +++ b/handbook/ui-schema-storage/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/action-settings/affter-successful/index.html b/handbook/ui/actions/action-settings/affter-successful/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/action-settings/affter-successful/index.html +++ b/handbook/ui/actions/action-settings/affter-successful/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/action-settings/assign-values/index.html b/handbook/ui/actions/action-settings/assign-values/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/action-settings/assign-values/index.html +++ b/handbook/ui/actions/action-settings/assign-values/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/action-settings/bind-workflow/index.html b/handbook/ui/actions/action-settings/bind-workflow/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/action-settings/bind-workflow/index.html +++ b/handbook/ui/actions/action-settings/bind-workflow/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/action-settings/double-check/index.html b/handbook/ui/actions/action-settings/double-check/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/action-settings/double-check/index.html +++ b/handbook/ui/actions/action-settings/double-check/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/action-settings/edit-button/index.html b/handbook/ui/actions/action-settings/edit-button/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/action-settings/edit-button/index.html +++ b/handbook/ui/actions/action-settings/edit-button/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/action-settings/linkage-rule/index.html b/handbook/ui/actions/action-settings/linkage-rule/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/action-settings/linkage-rule/index.html +++ b/handbook/ui/actions/action-settings/linkage-rule/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/action-settings/open-mode/index.html b/handbook/ui/actions/action-settings/open-mode/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/action-settings/open-mode/index.html +++ b/handbook/ui/actions/action-settings/open-mode/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/action-settings/popup-size/index.html b/handbook/ui/actions/action-settings/popup-size/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/action-settings/popup-size/index.html +++ b/handbook/ui/actions/action-settings/popup-size/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/index.html b/handbook/ui/actions/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/index.html +++ b/handbook/ui/actions/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/add-new/index.html b/handbook/ui/actions/types/add-new/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/add-new/index.html +++ b/handbook/ui/actions/types/add-new/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/add-record/index.html b/handbook/ui/actions/types/add-record/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/add-record/index.html +++ b/handbook/ui/actions/types/add-record/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/delete/index.html b/handbook/ui/actions/types/delete/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/delete/index.html +++ b/handbook/ui/actions/types/delete/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/edit/index.html b/handbook/ui/actions/types/edit/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/edit/index.html +++ b/handbook/ui/actions/types/edit/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/filter/index.html b/handbook/ui/actions/types/filter/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/filter/index.html +++ b/handbook/ui/actions/types/filter/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/link/index.html b/handbook/ui/actions/types/link/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/link/index.html +++ b/handbook/ui/actions/types/link/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/pop-up/index.html b/handbook/ui/actions/types/pop-up/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/pop-up/index.html +++ b/handbook/ui/actions/types/pop-up/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/refresh/index.html b/handbook/ui/actions/types/refresh/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/refresh/index.html +++ b/handbook/ui/actions/types/refresh/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/save-record/index.html b/handbook/ui/actions/types/save-record/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/save-record/index.html +++ b/handbook/ui/actions/types/save-record/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/submit/index.html b/handbook/ui/actions/types/submit/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/submit/index.html +++ b/handbook/ui/actions/types/submit/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/trigger-workflow/index.html b/handbook/ui/actions/types/trigger-workflow/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/trigger-workflow/index.html +++ b/handbook/ui/actions/types/trigger-workflow/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/update-record/index.html b/handbook/ui/actions/types/update-record/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/update-record/index.html +++ b/handbook/ui/actions/types/update-record/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/actions/types/view/index.html b/handbook/ui/actions/types/view/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/actions/types/view/index.html +++ b/handbook/ui/actions/types/view/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/block-settings/block-delete/index.html b/handbook/ui/blocks/block-settings/block-delete/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/block-settings/block-delete/index.html +++ b/handbook/ui/blocks/block-settings/block-delete/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/block-settings/block-height/index.html b/handbook/ui/blocks/block-settings/block-height/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/block-settings/block-height/index.html +++ b/handbook/ui/blocks/block-settings/block-height/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/block-settings/block-layout/index.html b/handbook/ui/blocks/block-settings/block-layout/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/block-settings/block-layout/index.html +++ b/handbook/ui/blocks/block-settings/block-layout/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/block-settings/block-template/index.html b/handbook/ui/blocks/block-settings/block-template/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/block-settings/block-template/index.html +++ b/handbook/ui/blocks/block-settings/block-template/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/block-settings/block-title/index.html b/handbook/ui/blocks/block-settings/block-title/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/block-settings/block-title/index.html +++ b/handbook/ui/blocks/block-settings/block-title/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/block-settings/connect-block/index.html b/handbook/ui/blocks/block-settings/connect-block/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/block-settings/connect-block/index.html +++ b/handbook/ui/blocks/block-settings/connect-block/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/block-settings/data-scope/index.html b/handbook/ui/blocks/block-settings/data-scope/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/block-settings/data-scope/index.html +++ b/handbook/ui/blocks/block-settings/data-scope/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/block-settings/linkage-rule/index.html b/handbook/ui/blocks/block-settings/linkage-rule/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/block-settings/linkage-rule/index.html +++ b/handbook/ui/blocks/block-settings/linkage-rule/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/block-settings/loading-mode/index.html b/handbook/ui/blocks/block-settings/loading-mode/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/block-settings/loading-mode/index.html +++ b/handbook/ui/blocks/block-settings/loading-mode/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/block-settings/sorting-rule/index.html b/handbook/ui/blocks/block-settings/sorting-rule/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/block-settings/sorting-rule/index.html +++ b/handbook/ui/blocks/block-settings/sorting-rule/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/block-templates/index.html b/handbook/ui/blocks/block-templates/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/block-templates/index.html +++ b/handbook/ui/blocks/block-templates/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/data-blocks/details/index.html b/handbook/ui/blocks/data-blocks/details/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/data-blocks/details/index.html +++ b/handbook/ui/blocks/data-blocks/details/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/data-blocks/form/index.html b/handbook/ui/blocks/data-blocks/form/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/data-blocks/form/index.html +++ b/handbook/ui/blocks/data-blocks/form/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/data-blocks/grid-card/index.html b/handbook/ui/blocks/data-blocks/grid-card/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/data-blocks/grid-card/index.html +++ b/handbook/ui/blocks/data-blocks/grid-card/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/data-blocks/list/index.html b/handbook/ui/blocks/data-blocks/list/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/data-blocks/list/index.html +++ b/handbook/ui/blocks/data-blocks/list/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/data-blocks/table/index.html b/handbook/ui/blocks/data-blocks/table/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/data-blocks/table/index.html +++ b/handbook/ui/blocks/data-blocks/table/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/filter-blocks/collapse/index.html b/handbook/ui/blocks/filter-blocks/collapse/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/filter-blocks/collapse/index.html +++ b/handbook/ui/blocks/filter-blocks/collapse/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/filter-blocks/form/index.html b/handbook/ui/blocks/filter-blocks/form/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/filter-blocks/form/index.html +++ b/handbook/ui/blocks/filter-blocks/form/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/index.html b/handbook/ui/blocks/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/index.html +++ b/handbook/ui/blocks/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/other-blocks/markdown/index.html b/handbook/ui/blocks/other-blocks/markdown/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/other-blocks/markdown/index.html +++ b/handbook/ui/blocks/other-blocks/markdown/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/other-blocks/workflow-approval/index.html b/handbook/ui/blocks/other-blocks/workflow-approval/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/other-blocks/workflow-approval/index.html +++ b/handbook/ui/blocks/other-blocks/workflow-approval/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/blocks/other-blocks/workflow-manual-todos/index.html b/handbook/ui/blocks/other-blocks/workflow-manual-todos/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/blocks/other-blocks/workflow-manual-todos/index.html +++ b/handbook/ui/blocks/other-blocks/workflow-manual-todos/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/association-field/index.html b/handbook/ui/fields/association-field/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/association-field/index.html +++ b/handbook/ui/fields/association-field/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/data-scope/index.html b/handbook/ui/fields/field-settings/data-scope/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/data-scope/index.html +++ b/handbook/ui/fields/field-settings/data-scope/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/default-value/index.html b/handbook/ui/fields/field-settings/default-value/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/default-value/index.html +++ b/handbook/ui/fields/field-settings/default-value/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/display-title/index.html b/handbook/ui/fields/field-settings/display-title/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/display-title/index.html +++ b/handbook/ui/fields/field-settings/display-title/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/edit-description/index.html b/handbook/ui/fields/field-settings/edit-description/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/edit-description/index.html +++ b/handbook/ui/fields/field-settings/edit-description/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/edit-title/index.html b/handbook/ui/fields/field-settings/edit-title/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/edit-title/index.html +++ b/handbook/ui/fields/field-settings/edit-title/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/edit-tooltip/index.html b/handbook/ui/fields/field-settings/edit-tooltip/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/edit-tooltip/index.html +++ b/handbook/ui/fields/field-settings/edit-tooltip/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/field-component/index.html b/handbook/ui/fields/field-settings/field-component/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/field-component/index.html +++ b/handbook/ui/fields/field-settings/field-component/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/number-format/index.html b/handbook/ui/fields/field-settings/number-format/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/number-format/index.html +++ b/handbook/ui/fields/field-settings/number-format/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/pattern/index.html b/handbook/ui/fields/field-settings/pattern/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/pattern/index.html +++ b/handbook/ui/fields/field-settings/pattern/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/required/index.html b/handbook/ui/fields/field-settings/required/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/required/index.html +++ b/handbook/ui/fields/field-settings/required/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/style/index.html b/handbook/ui/fields/field-settings/style/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/style/index.html +++ b/handbook/ui/fields/field-settings/style/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/title-field/index.html b/handbook/ui/fields/field-settings/title-field/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/title-field/index.html +++ b/handbook/ui/fields/field-settings/title-field/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/field-settings/validation-rules/index.html b/handbook/ui/fields/field-settings/validation-rules/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/field-settings/validation-rules/index.html +++ b/handbook/ui/fields/field-settings/validation-rules/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/generic/bulk-edit-form-item/index.html b/handbook/ui/fields/generic/bulk-edit-form-item/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/generic/bulk-edit-form-item/index.html +++ b/handbook/ui/fields/generic/bulk-edit-form-item/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/generic/detail-form-item/index.html b/handbook/ui/fields/generic/detail-form-item/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/generic/detail-form-item/index.html +++ b/handbook/ui/fields/generic/detail-form-item/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/generic/filter-collapse-item/index.html b/handbook/ui/fields/generic/filter-collapse-item/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/generic/filter-collapse-item/index.html +++ b/handbook/ui/fields/generic/filter-collapse-item/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/generic/filter-form-item/index.html b/handbook/ui/fields/generic/filter-form-item/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/generic/filter-form-item/index.html +++ b/handbook/ui/fields/generic/filter-form-item/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/generic/form-item/index.html b/handbook/ui/fields/generic/form-item/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/generic/form-item/index.html +++ b/handbook/ui/fields/generic/form-item/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/generic/table-column/index.html b/handbook/ui/fields/generic/table-column/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/generic/table-column/index.html +++ b/handbook/ui/fields/generic/table-column/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/index.html b/handbook/ui/fields/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/index.html +++ b/handbook/ui/fields/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/specific/cascade-select/index.html b/handbook/ui/fields/specific/cascade-select/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/specific/cascade-select/index.html +++ b/handbook/ui/fields/specific/cascade-select/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/specific/date-picker/index.html b/handbook/ui/fields/specific/date-picker/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/specific/date-picker/index.html +++ b/handbook/ui/fields/specific/date-picker/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/specific/file-manager/index.html b/handbook/ui/fields/specific/file-manager/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/specific/file-manager/index.html +++ b/handbook/ui/fields/specific/file-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/specific/nester/index.html b/handbook/ui/fields/specific/nester/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/specific/nester/index.html +++ b/handbook/ui/fields/specific/nester/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/specific/picker/index.html b/handbook/ui/fields/specific/picker/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/specific/picker/index.html +++ b/handbook/ui/fields/specific/picker/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/specific/popover-nester/index.html b/handbook/ui/fields/specific/popover-nester/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/specific/popover-nester/index.html +++ b/handbook/ui/fields/specific/popover-nester/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/specific/select/index.html b/handbook/ui/fields/specific/select/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/specific/select/index.html +++ b/handbook/ui/fields/specific/select/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/specific/sub-detail/index.html b/handbook/ui/fields/specific/sub-detail/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/specific/sub-detail/index.html +++ b/handbook/ui/fields/specific/sub-detail/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/specific/sub-table/index.html b/handbook/ui/fields/specific/sub-table/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/specific/sub-table/index.html +++ b/handbook/ui/fields/specific/sub-table/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/specific/tag/index.html b/handbook/ui/fields/specific/tag/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/specific/tag/index.html +++ b/handbook/ui/fields/specific/tag/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/fields/specific/title/index.html b/handbook/ui/fields/specific/title/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/fields/specific/title/index.html +++ b/handbook/ui/fields/specific/title/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/menus/index.html b/handbook/ui/menus/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/menus/index.html +++ b/handbook/ui/menus/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/pages/index.html b/handbook/ui/pages/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/pages/index.html +++ b/handbook/ui/pages/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/pop-up/index.html b/handbook/ui/pop-up/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/pop-up/index.html +++ b/handbook/ui/pop-up/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/ui-editor/index.html b/handbook/ui/ui-editor/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/ui-editor/index.html +++ b/handbook/ui/ui-editor/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/ui/variables/index.html b/handbook/ui/variables/index.html index 114fbc830..b13255174 100644 --- a/handbook/ui/variables/index.html +++ b/handbook/ui/variables/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/users/field-created-by/index.html b/handbook/users/field-created-by/index.html index 114fbc830..b13255174 100644 --- a/handbook/users/field-created-by/index.html +++ b/handbook/users/field-created-by/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/users/field-updated-by/index.html b/handbook/users/field-updated-by/index.html index 114fbc830..b13255174 100644 --- a/handbook/users/field-updated-by/index.html +++ b/handbook/users/field-updated-by/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/users/index.html b/handbook/users/index.html index 114fbc830..b13255174 100644 --- a/handbook/users/index.html +++ b/handbook/users/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/verification/index.html b/handbook/verification/index.html index 114fbc830..b13255174 100644 --- a/handbook/verification/index.html +++ b/handbook/verification/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-action-trigger/action/index.html b/handbook/workflow-action-trigger/action/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-action-trigger/action/index.html +++ b/handbook/workflow-action-trigger/action/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-action-trigger/example/index.html b/handbook/workflow-action-trigger/example/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-action-trigger/example/index.html +++ b/handbook/workflow-action-trigger/example/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-action-trigger/http-api/index.html b/handbook/workflow-action-trigger/http-api/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-action-trigger/http-api/index.html +++ b/handbook/workflow-action-trigger/http-api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-action-trigger/index.html b/handbook/workflow-action-trigger/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-action-trigger/index.html +++ b/handbook/workflow-action-trigger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-action-trigger/trigger/index.html b/handbook/workflow-action-trigger/trigger/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-action-trigger/trigger/index.html +++ b/handbook/workflow-action-trigger/trigger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-aggregate/index.html b/handbook/workflow-aggregate/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-aggregate/index.html +++ b/handbook/workflow-aggregate/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-approval/action/index.html b/handbook/workflow-approval/action/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-approval/action/index.html +++ b/handbook/workflow-approval/action/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-approval/advanced/index.html b/handbook/workflow-approval/advanced/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-approval/advanced/index.html +++ b/handbook/workflow-approval/advanced/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-approval/block/index.html b/handbook/workflow-approval/block/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-approval/block/index.html +++ b/handbook/workflow-approval/block/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-approval/http-api/index.html b/handbook/workflow-approval/http-api/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-approval/http-api/index.html +++ b/handbook/workflow-approval/http-api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-approval/index.html b/handbook/workflow-approval/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-approval/index.html +++ b/handbook/workflow-approval/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-approval/node/index.html b/handbook/workflow-approval/node/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-approval/node/index.html +++ b/handbook/workflow-approval/node/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-approval/trigger/index.html b/handbook/workflow-approval/trigger/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-approval/trigger/index.html +++ b/handbook/workflow-approval/trigger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-custom-action-trigger/action/index.html b/handbook/workflow-custom-action-trigger/action/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-custom-action-trigger/action/index.html +++ b/handbook/workflow-custom-action-trigger/action/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-custom-action-trigger/example/index.html b/handbook/workflow-custom-action-trigger/example/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-custom-action-trigger/example/index.html +++ b/handbook/workflow-custom-action-trigger/example/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-custom-action-trigger/http-api/index.html b/handbook/workflow-custom-action-trigger/http-api/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-custom-action-trigger/http-api/index.html +++ b/handbook/workflow-custom-action-trigger/http-api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-custom-action-trigger/index.html b/handbook/workflow-custom-action-trigger/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-custom-action-trigger/index.html +++ b/handbook/workflow-custom-action-trigger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-custom-action-trigger/trigger/index.html b/handbook/workflow-custom-action-trigger/trigger/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-custom-action-trigger/trigger/index.html +++ b/handbook/workflow-custom-action-trigger/trigger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-date-calculation/index.html b/handbook/workflow-date-calculation/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-date-calculation/index.html +++ b/handbook/workflow-date-calculation/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-delay/index.html b/handbook/workflow-delay/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-delay/index.html +++ b/handbook/workflow-delay/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-dynamic-calculation/collection/index.html b/handbook/workflow-dynamic-calculation/collection/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-dynamic-calculation/collection/index.html +++ b/handbook/workflow-dynamic-calculation/collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-dynamic-calculation/example/index.html b/handbook/workflow-dynamic-calculation/example/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-dynamic-calculation/example/index.html +++ b/handbook/workflow-dynamic-calculation/example/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-dynamic-calculation/index.html b/handbook/workflow-dynamic-calculation/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-dynamic-calculation/index.html +++ b/handbook/workflow-dynamic-calculation/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-dynamic-calculation/node/index.html b/handbook/workflow-dynamic-calculation/node/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-dynamic-calculation/node/index.html +++ b/handbook/workflow-dynamic-calculation/node/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-json-query/index.html b/handbook/workflow-json-query/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-json-query/index.html +++ b/handbook/workflow-json-query/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-loop/index.html b/handbook/workflow-loop/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-loop/index.html +++ b/handbook/workflow-loop/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-manual/block/index.html b/handbook/workflow-manual/block/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-manual/block/index.html +++ b/handbook/workflow-manual/block/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-manual/example/index.html b/handbook/workflow-manual/example/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-manual/example/index.html +++ b/handbook/workflow-manual/example/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-manual/index.html b/handbook/workflow-manual/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-manual/index.html +++ b/handbook/workflow-manual/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-manual/node/index.html b/handbook/workflow-manual/node/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-manual/node/index.html +++ b/handbook/workflow-manual/node/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-parallel/index.html b/handbook/workflow-parallel/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-parallel/index.html +++ b/handbook/workflow-parallel/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-request-interceptor/action/index.html b/handbook/workflow-request-interceptor/action/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-request-interceptor/action/index.html +++ b/handbook/workflow-request-interceptor/action/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-request-interceptor/advanced/index.html b/handbook/workflow-request-interceptor/advanced/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-request-interceptor/advanced/index.html +++ b/handbook/workflow-request-interceptor/advanced/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-request-interceptor/example/index.html b/handbook/workflow-request-interceptor/example/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-request-interceptor/example/index.html +++ b/handbook/workflow-request-interceptor/example/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-request-interceptor/http-api/index.html b/handbook/workflow-request-interceptor/http-api/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-request-interceptor/http-api/index.html +++ b/handbook/workflow-request-interceptor/http-api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-request-interceptor/index.html b/handbook/workflow-request-interceptor/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-request-interceptor/index.html +++ b/handbook/workflow-request-interceptor/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-request-interceptor/trigger/index.html b/handbook/workflow-request-interceptor/trigger/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-request-interceptor/trigger/index.html +++ b/handbook/workflow-request-interceptor/trigger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-request/index.html b/handbook/workflow-request/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-request/index.html +++ b/handbook/workflow-request/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-response-message/index.html b/handbook/workflow-response-message/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-response-message/index.html +++ b/handbook/workflow-response-message/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-sql/index.html b/handbook/workflow-sql/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-sql/index.html +++ b/handbook/workflow-sql/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow-variable/index.html b/handbook/workflow-variable/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow-variable/index.html +++ b/handbook/workflow-variable/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/advanced/executions/index.html b/handbook/workflow/advanced/executions/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/advanced/executions/index.html +++ b/handbook/workflow/advanced/executions/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/advanced/options/index.html b/handbook/workflow/advanced/options/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/advanced/options/index.html +++ b/handbook/workflow/advanced/options/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/advanced/revisions/index.html b/handbook/workflow/advanced/revisions/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/advanced/revisions/index.html +++ b/handbook/workflow/advanced/revisions/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/advanced/variables/index.html b/handbook/workflow/advanced/variables/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/advanced/variables/index.html +++ b/handbook/workflow/advanced/variables/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/development/api/index.html b/handbook/workflow/development/api/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/development/api/index.html +++ b/handbook/workflow/development/api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/development/index.html b/handbook/workflow/development/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/development/index.html +++ b/handbook/workflow/development/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/development/instruction/index.html b/handbook/workflow/development/instruction/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/development/instruction/index.html +++ b/handbook/workflow/development/instruction/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/development/trigger/index.html b/handbook/workflow/development/trigger/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/development/trigger/index.html +++ b/handbook/workflow/development/trigger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/index.html b/handbook/workflow/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/index.html +++ b/handbook/workflow/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/aggregate/index.html b/handbook/workflow/nodes/aggregate/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/aggregate/index.html +++ b/handbook/workflow/nodes/aggregate/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/approval/index.html b/handbook/workflow/nodes/approval/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/approval/index.html +++ b/handbook/workflow/nodes/approval/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/calculation/index.html b/handbook/workflow/nodes/calculation/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/calculation/index.html +++ b/handbook/workflow/nodes/calculation/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/condition/index.html b/handbook/workflow/nodes/condition/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/condition/index.html +++ b/handbook/workflow/nodes/condition/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/create/index.html b/handbook/workflow/nodes/create/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/create/index.html +++ b/handbook/workflow/nodes/create/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/date-calculation/index.html b/handbook/workflow/nodes/date-calculation/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/date-calculation/index.html +++ b/handbook/workflow/nodes/date-calculation/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/delay/index.html b/handbook/workflow/nodes/delay/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/delay/index.html +++ b/handbook/workflow/nodes/delay/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/destroy/index.html b/handbook/workflow/nodes/destroy/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/destroy/index.html +++ b/handbook/workflow/nodes/destroy/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/dynamic-calculation/index.html b/handbook/workflow/nodes/dynamic-calculation/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/dynamic-calculation/index.html +++ b/handbook/workflow/nodes/dynamic-calculation/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/end/index.html b/handbook/workflow/nodes/end/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/end/index.html +++ b/handbook/workflow/nodes/end/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/index.html b/handbook/workflow/nodes/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/index.html +++ b/handbook/workflow/nodes/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/json-query/index.html b/handbook/workflow/nodes/json-query/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/json-query/index.html +++ b/handbook/workflow/nodes/json-query/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/loop/index.html b/handbook/workflow/nodes/loop/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/loop/index.html +++ b/handbook/workflow/nodes/loop/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/manual/index.html b/handbook/workflow/nodes/manual/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/manual/index.html +++ b/handbook/workflow/nodes/manual/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/parallel/index.html b/handbook/workflow/nodes/parallel/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/parallel/index.html +++ b/handbook/workflow/nodes/parallel/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/query/index.html b/handbook/workflow/nodes/query/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/query/index.html +++ b/handbook/workflow/nodes/query/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/request/index.html b/handbook/workflow/nodes/request/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/request/index.html +++ b/handbook/workflow/nodes/request/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/response-message/index.html b/handbook/workflow/nodes/response-message/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/response-message/index.html +++ b/handbook/workflow/nodes/response-message/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/sql/index.html b/handbook/workflow/nodes/sql/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/sql/index.html +++ b/handbook/workflow/nodes/sql/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/update/index.html b/handbook/workflow/nodes/update/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/update/index.html +++ b/handbook/workflow/nodes/update/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/nodes/variable/index.html b/handbook/workflow/nodes/variable/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/nodes/variable/index.html +++ b/handbook/workflow/nodes/variable/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/plugins/aggregate/index.html b/handbook/workflow/plugins/aggregate/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/plugins/aggregate/index.html +++ b/handbook/workflow/plugins/aggregate/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/quick-start/index.html b/handbook/workflow/quick-start/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/quick-start/index.html +++ b/handbook/workflow/quick-start/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/triggers/approval/index.html b/handbook/workflow/triggers/approval/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/triggers/approval/index.html +++ b/handbook/workflow/triggers/approval/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/triggers/collection/index.html b/handbook/workflow/triggers/collection/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/triggers/collection/index.html +++ b/handbook/workflow/triggers/collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/triggers/custom-action/index.html b/handbook/workflow/triggers/custom-action/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/triggers/custom-action/index.html +++ b/handbook/workflow/triggers/custom-action/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/triggers/index.html b/handbook/workflow/triggers/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/triggers/index.html +++ b/handbook/workflow/triggers/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/triggers/post-action/index.html b/handbook/workflow/triggers/post-action/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/triggers/post-action/index.html +++ b/handbook/workflow/triggers/post-action/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/triggers/pre-action/index.html b/handbook/workflow/triggers/pre-action/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/triggers/pre-action/index.html +++ b/handbook/workflow/triggers/pre-action/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/handbook/workflow/triggers/schedule/index.html b/handbook/workflow/triggers/schedule/index.html index 114fbc830..b13255174 100644 --- a/handbook/workflow/triggers/schedule/index.html +++ b/handbook/workflow/triggers/schedule/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/index.html b/index.html index 114fbc830..b13255174 100644 --- a/index.html +++ b/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/backup-restore/index.html b/manual/backup-restore/index.html index 114fbc830..b13255174 100644 --- a/manual/backup-restore/index.html +++ b/manual/backup-restore/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/blocks-guide/charts/index.html b/manual/blocks-guide/charts/index.html index 114fbc830..b13255174 100644 --- a/manual/blocks-guide/charts/index.html +++ b/manual/blocks-guide/charts/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/collection-fdw/enable-federated/index.html b/manual/collection/collection-fdw/enable-federated/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/collection-fdw/enable-federated/index.html +++ b/manual/collection/collection-fdw/enable-federated/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/collection-fdw/index.html b/manual/collection/collection-fdw/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/collection-fdw/index.html +++ b/manual/collection/collection-fdw/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/collection-templates/calender/index.html b/manual/collection/collection-templates/calender/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/collection-templates/calender/index.html +++ b/manual/collection/collection-templates/calender/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/collection-templates/expression/index.html b/manual/collection/collection-templates/expression/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/collection-templates/expression/index.html +++ b/manual/collection/collection-templates/expression/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/collection-templates/file/index.html b/manual/collection/collection-templates/file/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/collection-templates/file/index.html +++ b/manual/collection/collection-templates/file/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/collection-templates/general/index.html b/manual/collection/collection-templates/general/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/collection-templates/general/index.html +++ b/manual/collection/collection-templates/general/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/collection-templates/index.html b/manual/collection/collection-templates/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/collection-templates/index.html +++ b/manual/collection/collection-templates/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/collection-templates/sql/index.html b/manual/collection/collection-templates/sql/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/collection-templates/sql/index.html +++ b/manual/collection/collection-templates/sql/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/collection-templates/tree/index.html b/manual/collection/collection-templates/tree/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/collection-templates/tree/index.html +++ b/manual/collection/collection-templates/tree/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/collection-templates/view/index.html b/manual/collection/collection-templates/view/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/collection-templates/view/index.html +++ b/manual/collection/collection-templates/view/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/fields/advanced/index.html b/manual/collection/fields/advanced/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/fields/advanced/index.html +++ b/manual/collection/fields/advanced/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/fields/basic/index.html b/manual/collection/fields/basic/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/fields/basic/index.html +++ b/manual/collection/fields/basic/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/fields/choices/index.html b/manual/collection/fields/choices/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/fields/choices/index.html +++ b/manual/collection/fields/choices/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/fields/date/index.html b/manual/collection/fields/date/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/fields/date/index.html +++ b/manual/collection/fields/date/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/fields/index.html b/manual/collection/fields/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/fields/index.html +++ b/manual/collection/fields/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/fields/map/index.html b/manual/collection/fields/map/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/fields/map/index.html +++ b/manual/collection/fields/map/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/fields/media/index.html b/manual/collection/fields/media/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/fields/media/index.html +++ b/manual/collection/fields/media/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/fields/relation/index.html b/manual/collection/fields/relation/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/fields/relation/index.html +++ b/manual/collection/fields/relation/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/fields/system/index.html b/manual/collection/fields/system/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/fields/system/index.html +++ b/manual/collection/fields/system/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/index.html b/manual/collection/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/index.html +++ b/manual/collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/inherit/index.html b/manual/collection/inherit/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/inherit/index.html +++ b/manual/collection/inherit/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/management/index.html b/manual/collection/management/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/management/index.html +++ b/manual/collection/management/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/collection/multiple-databases/index.html b/manual/collection/multiple-databases/index.html index 114fbc830..b13255174 100644 --- a/manual/collection/multiple-databases/index.html +++ b/manual/collection/multiple-databases/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/core-concepts/a-b-c/index.html b/manual/core-concepts/a-b-c/index.html index 114fbc830..b13255174 100644 --- a/manual/core-concepts/a-b-c/index.html +++ b/manual/core-concepts/a-b-c/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/core-concepts/actions/index.html b/manual/core-concepts/actions/index.html index 114fbc830..b13255174 100644 --- a/manual/core-concepts/actions/index.html +++ b/manual/core-concepts/actions/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/core-concepts/blocks/index.html b/manual/core-concepts/blocks/index.html index 114fbc830..b13255174 100644 --- a/manual/core-concepts/blocks/index.html +++ b/manual/core-concepts/blocks/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/core-concepts/collections/index.html b/manual/core-concepts/collections/index.html index 114fbc830..b13255174 100644 --- a/manual/core-concepts/collections/index.html +++ b/manual/core-concepts/collections/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/core-concepts/containers/index.html b/manual/core-concepts/containers/index.html index 114fbc830..b13255174 100644 --- a/manual/core-concepts/containers/index.html +++ b/manual/core-concepts/containers/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/core-concepts/menus/index.html b/manual/core-concepts/menus/index.html index 114fbc830..b13255174 100644 --- a/manual/core-concepts/menus/index.html +++ b/manual/core-concepts/menus/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/data-visualization/chart-block/index.html b/manual/data-visualization/chart-block/index.html index 114fbc830..b13255174 100644 --- a/manual/data-visualization/chart-block/index.html +++ b/manual/data-visualization/chart-block/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/data-visualization/configure/index.html b/manual/data-visualization/configure/index.html index 114fbc830..b13255174 100644 --- a/manual/data-visualization/configure/index.html +++ b/manual/data-visualization/configure/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/data-visualization/filter/index.html b/manual/data-visualization/filter/index.html index 114fbc830..b13255174 100644 --- a/manual/data-visualization/filter/index.html +++ b/manual/data-visualization/filter/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/data-visualization/index.html b/manual/data-visualization/index.html index 114fbc830..b13255174 100644 --- a/manual/data-visualization/index.html +++ b/manual/data-visualization/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/file-manager/aliyun-oss/index.html b/manual/file-manager/aliyun-oss/index.html index 114fbc830..b13255174 100644 --- a/manual/file-manager/aliyun-oss/index.html +++ b/manual/file-manager/aliyun-oss/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/file-manager/amazon-s3/index.html b/manual/file-manager/amazon-s3/index.html index 114fbc830..b13255174 100644 --- a/manual/file-manager/amazon-s3/index.html +++ b/manual/file-manager/amazon-s3/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/file-manager/index.html b/manual/file-manager/index.html index 114fbc830..b13255174 100644 --- a/manual/file-manager/index.html +++ b/manual/file-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/file-manager/local/index.html b/manual/file-manager/local/index.html index 114fbc830..b13255174 100644 --- a/manual/file-manager/local/index.html +++ b/manual/file-manager/local/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/file-manager/tencent-cos/index.html b/manual/file-manager/tencent-cos/index.html index 114fbc830..b13255174 100644 --- a/manual/file-manager/tencent-cos/index.html +++ b/manual/file-manager/tencent-cos/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/localization-management/index.html b/manual/localization-management/index.html index 114fbc830..b13255174 100644 --- a/manual/localization-management/index.html +++ b/manual/localization-management/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/mobile-client/index.html b/manual/mobile-client/index.html index 114fbc830..b13255174 100644 --- a/manual/mobile-client/index.html +++ b/manual/mobile-client/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/mobile/development/frontend/index.html b/manual/mobile/development/frontend/index.html index 114fbc830..b13255174 100644 --- a/manual/mobile/development/frontend/index.html +++ b/manual/mobile/development/frontend/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/mobile/index.html b/manual/mobile/index.html index 114fbc830..b13255174 100644 --- a/manual/mobile/index.html +++ b/manual/mobile/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/plugin-manager/plugin-manager/index.html b/manual/plugin-manager/plugin-manager/index.html index 114fbc830..b13255174 100644 --- a/manual/plugin-manager/plugin-manager/index.html +++ b/manual/plugin-manager/plugin-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/plugin-manager/plugin-settings/index.html b/manual/plugin-manager/plugin-settings/index.html index 114fbc830..b13255174 100644 --- a/manual/plugin-manager/plugin-settings/index.html +++ b/manual/plugin-manager/plugin-settings/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/quick-start/functional-zoning/index.html b/manual/quick-start/functional-zoning/index.html index 114fbc830..b13255174 100644 --- a/manual/quick-start/functional-zoning/index.html +++ b/manual/quick-start/functional-zoning/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/quick-start/the-first-app/index.html b/manual/quick-start/the-first-app/index.html index 114fbc830..b13255174 100644 --- a/manual/quick-start/the-first-app/index.html +++ b/manual/quick-start/the-first-app/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/quick-start/ui-editor-mode/index.html b/manual/quick-start/ui-editor-mode/index.html index 114fbc830..b13255174 100644 --- a/manual/quick-start/ui-editor-mode/index.html +++ b/manual/quick-start/ui-editor-mode/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/system-settings/index.html b/manual/system-settings/index.html index 114fbc830..b13255174 100644 --- a/manual/system-settings/index.html +++ b/manual/system-settings/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/theme-editor/index.html b/manual/theme-editor/index.html index 114fbc830..b13255174 100644 --- a/manual/theme-editor/index.html +++ b/manual/theme-editor/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/add-new/index.html b/manual/ui/actions/add-new/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/add-new/index.html +++ b/manual/ui/actions/add-new/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/add-record/index.html b/manual/ui/actions/add-record/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/add-record/index.html +++ b/manual/ui/actions/add-record/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/custom-request/index.html b/manual/ui/actions/custom-request/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/custom-request/index.html +++ b/manual/ui/actions/custom-request/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/delete/index.html b/manual/ui/actions/delete/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/delete/index.html +++ b/manual/ui/actions/delete/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/duplicate/index.html b/manual/ui/actions/duplicate/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/duplicate/index.html +++ b/manual/ui/actions/duplicate/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/edit/index.html b/manual/ui/actions/edit/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/edit/index.html +++ b/manual/ui/actions/edit/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/export/index.html b/manual/ui/actions/export/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/export/index.html +++ b/manual/ui/actions/export/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/filter/index.html b/manual/ui/actions/filter/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/filter/index.html +++ b/manual/ui/actions/filter/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/import/index.html b/manual/ui/actions/import/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/import/index.html +++ b/manual/ui/actions/import/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/index.html b/manual/ui/actions/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/index.html +++ b/manual/ui/actions/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/open-popup/index.html b/manual/ui/actions/open-popup/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/open-popup/index.html +++ b/manual/ui/actions/open-popup/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/print/index.html b/manual/ui/actions/print/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/print/index.html +++ b/manual/ui/actions/print/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/refresh/index.html b/manual/ui/actions/refresh/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/refresh/index.html +++ b/manual/ui/actions/refresh/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/save-record/index.html b/manual/ui/actions/save-record/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/save-record/index.html +++ b/manual/ui/actions/save-record/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/submit-to-workflow/index.html b/manual/ui/actions/submit-to-workflow/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/submit-to-workflow/index.html +++ b/manual/ui/actions/submit-to-workflow/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/submit/index.html b/manual/ui/actions/submit/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/submit/index.html +++ b/manual/ui/actions/submit/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/update-record/index.html b/manual/ui/actions/update-record/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/update-record/index.html +++ b/manual/ui/actions/update-record/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/actions/view/index.html b/manual/ui/actions/view/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/actions/view/index.html +++ b/manual/ui/actions/view/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/blocks/index.html b/manual/ui/blocks/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/blocks/index.html +++ b/manual/ui/blocks/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/association-components/cascade-select/index.html b/manual/ui/fields/association-components/cascade-select/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/association-components/cascade-select/index.html +++ b/manual/ui/fields/association-components/cascade-select/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/association-components/file-manager/index.html b/manual/ui/fields/association-components/file-manager/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/association-components/file-manager/index.html +++ b/manual/ui/fields/association-components/file-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/association-components/index.html b/manual/ui/fields/association-components/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/association-components/index.html +++ b/manual/ui/fields/association-components/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/association-components/record-picker/index.html b/manual/ui/fields/association-components/record-picker/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/association-components/record-picker/index.html +++ b/manual/ui/fields/association-components/record-picker/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/association-components/select/index.html b/manual/ui/fields/association-components/select/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/association-components/select/index.html +++ b/manual/ui/fields/association-components/select/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/association-components/sub-detail/index.html b/manual/ui/fields/association-components/sub-detail/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/association-components/sub-detail/index.html +++ b/manual/ui/fields/association-components/sub-detail/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/association-components/sub-form(popover)/index.html b/manual/ui/fields/association-components/sub-form(popover)/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/association-components/sub-form(popover)/index.html +++ b/manual/ui/fields/association-components/sub-form(popover)/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/association-components/sub-form/index.html b/manual/ui/fields/association-components/sub-form/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/association-components/sub-form/index.html +++ b/manual/ui/fields/association-components/sub-form/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/association-components/sub-table/index.html b/manual/ui/fields/association-components/sub-table/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/association-components/sub-table/index.html +++ b/manual/ui/fields/association-components/sub-table/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/association-components/summary/index.html b/manual/ui/fields/association-components/summary/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/association-components/summary/index.html +++ b/manual/ui/fields/association-components/summary/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/association-components/tag/index.html b/manual/ui/fields/association-components/tag/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/association-components/tag/index.html +++ b/manual/ui/fields/association-components/tag/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/association-components/title/index.html b/manual/ui/fields/association-components/title/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/association-components/title/index.html +++ b/manual/ui/fields/association-components/title/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/fields/index.html b/manual/ui/fields/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/fields/index.html +++ b/manual/ui/fields/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/index.html b/manual/ui/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/index.html +++ b/manual/ui/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/inherit/index.html b/manual/ui/inherit/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/inherit/index.html +++ b/manual/ui/inherit/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/linkage/index.html b/manual/ui/linkage/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/linkage/index.html +++ b/manual/ui/linkage/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/menus/index.html b/manual/ui/menus/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/menus/index.html +++ b/manual/ui/menus/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/ui/pages/index.html b/manual/ui/pages/index.html index 114fbc830..b13255174 100644 --- a/manual/ui/pages/index.html +++ b/manual/ui/pages/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/user/user-center/index.html b/manual/user/user-center/index.html index 114fbc830..b13255174 100644 --- a/manual/user/user-center/index.html +++ b/manual/user/user-center/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/advanced/index.html b/manual/workflow/advanced/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/advanced/index.html +++ b/manual/workflow/advanced/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/index.html b/manual/workflow/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/index.html +++ b/manual/workflow/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/aggregate/index.html b/manual/workflow/nodes/aggregate/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/aggregate/index.html +++ b/manual/workflow/nodes/aggregate/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/calculation/index.html b/manual/workflow/nodes/calculation/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/calculation/index.html +++ b/manual/workflow/nodes/calculation/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/condition/index.html b/manual/workflow/nodes/condition/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/condition/index.html +++ b/manual/workflow/nodes/condition/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/create/index.html b/manual/workflow/nodes/create/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/create/index.html +++ b/manual/workflow/nodes/create/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/delay/index.html b/manual/workflow/nodes/delay/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/delay/index.html +++ b/manual/workflow/nodes/delay/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/destroy/index.html b/manual/workflow/nodes/destroy/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/destroy/index.html +++ b/manual/workflow/nodes/destroy/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/dynamic-calculation/index.html b/manual/workflow/nodes/dynamic-calculation/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/dynamic-calculation/index.html +++ b/manual/workflow/nodes/dynamic-calculation/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/index.html b/manual/workflow/nodes/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/index.html +++ b/manual/workflow/nodes/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/loop/index.html b/manual/workflow/nodes/loop/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/loop/index.html +++ b/manual/workflow/nodes/loop/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/manual/index.html b/manual/workflow/nodes/manual/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/manual/index.html +++ b/manual/workflow/nodes/manual/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/parallel/index.html b/manual/workflow/nodes/parallel/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/parallel/index.html +++ b/manual/workflow/nodes/parallel/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/query/index.html b/manual/workflow/nodes/query/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/query/index.html +++ b/manual/workflow/nodes/query/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/request/index.html b/manual/workflow/nodes/request/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/request/index.html +++ b/manual/workflow/nodes/request/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/sql/index.html b/manual/workflow/nodes/sql/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/sql/index.html +++ b/manual/workflow/nodes/sql/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/nodes/update/index.html b/manual/workflow/nodes/update/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/nodes/update/index.html +++ b/manual/workflow/nodes/update/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/start/index.html b/manual/workflow/start/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/start/index.html +++ b/manual/workflow/start/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/triggers/collection/index.html b/manual/workflow/triggers/collection/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/triggers/collection/index.html +++ b/manual/workflow/triggers/collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/triggers/form/index.html b/manual/workflow/triggers/form/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/triggers/form/index.html +++ b/manual/workflow/triggers/form/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/triggers/index.html b/manual/workflow/triggers/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/triggers/index.html +++ b/manual/workflow/triggers/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/manual/workflow/triggers/schedule/index.html b/manual/workflow/triggers/schedule/index.html index 114fbc830..b13255174 100644 --- a/manual/workflow/triggers/schedule/index.html +++ b/manual/workflow/triggers/schedule/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/block/block-carousel/index.html b/plugin-samples/block/block-carousel/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/block/block-carousel/index.html +++ b/plugin-samples/block/block-carousel/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/block/block-form/index.html b/plugin-samples/block/block-form/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/block/block-form/index.html +++ b/plugin-samples/block/block-form/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/block/block-table/index.html b/plugin-samples/block/block-table/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/block/block-table/index.html +++ b/plugin-samples/block/block-table/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/block/index.html b/plugin-samples/block/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/block/index.html +++ b/plugin-samples/block/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/component-and-scope/global/index.html b/plugin-samples/component-and-scope/global/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/component-and-scope/global/index.html +++ b/plugin-samples/component-and-scope/global/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/component-and-scope/index.html b/plugin-samples/component-and-scope/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/component-and-scope/index.html +++ b/plugin-samples/component-and-scope/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/component-and-scope/local/index.html b/plugin-samples/component-and-scope/local/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/component-and-scope/local/index.html +++ b/plugin-samples/component-and-scope/local/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/field/index.html b/plugin-samples/field/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/field/index.html +++ b/plugin-samples/field/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/field/interface/index.html b/plugin-samples/field/interface/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/field/interface/index.html +++ b/plugin-samples/field/interface/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/field/sub-field/index.html b/plugin-samples/field/sub-field/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/field/sub-field/index.html +++ b/plugin-samples/field/sub-field/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/field/value/index.html b/plugin-samples/field/value/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/field/value/index.html +++ b/plugin-samples/field/value/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/field/without-value/index.html b/plugin-samples/field/without-value/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/field/without-value/index.html +++ b/plugin-samples/field/without-value/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/index.html b/plugin-samples/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/index.html +++ b/plugin-samples/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/plugin-settings/form/index.html b/plugin-samples/plugin-settings/form/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/plugin-settings/form/index.html +++ b/plugin-samples/plugin-settings/form/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/plugin-settings/index.html b/plugin-samples/plugin-settings/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/plugin-settings/index.html +++ b/plugin-samples/plugin-settings/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/plugin-settings/table-multiple-add-forms/index.html b/plugin-samples/plugin-settings/table-multiple-add-forms/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/plugin-settings/table-multiple-add-forms/index.html +++ b/plugin-samples/plugin-settings/table-multiple-add-forms/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/plugin-settings/table/index.html b/plugin-samples/plugin-settings/table/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/plugin-settings/table/index.html +++ b/plugin-samples/plugin-settings/table/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/provider/content/index.html b/plugin-samples/provider/content/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/provider/content/index.html +++ b/plugin-samples/provider/content/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/provider/context/index.html b/plugin-samples/provider/context/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/provider/context/index.html +++ b/plugin-samples/provider/context/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/provider/index.html b/plugin-samples/provider/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/provider/index.html +++ b/plugin-samples/provider/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/router/add-page/index.html b/plugin-samples/router/add-page/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/router/add-page/index.html +++ b/plugin-samples/router/add-page/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/router/add-setting-page-layout-routes/index.html b/plugin-samples/router/add-setting-page-layout-routes/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/router/add-setting-page-layout-routes/index.html +++ b/plugin-samples/router/add-setting-page-layout-routes/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/router/add-setting-page-single-route/index.html b/plugin-samples/router/add-setting-page-single-route/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/router/add-setting-page-single-route/index.html +++ b/plugin-samples/router/add-setting-page-single-route/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/router/add-setting-page-tabs-routes/index.html b/plugin-samples/router/add-setting-page-tabs-routes/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/router/add-setting-page-tabs-routes/index.html +++ b/plugin-samples/router/add-setting-page-tabs-routes/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/router/index.html b/plugin-samples/router/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/router/index.html +++ b/plugin-samples/router/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/router/replace-page/index.html b/plugin-samples/router/replace-page/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/router/replace-page/index.html +++ b/plugin-samples/router/replace-page/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-initailizer/add-item-to-block/index.html b/plugin-samples/schema-initailizer/add-item-to-block/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-initailizer/add-item-to-block/index.html +++ b/plugin-samples/schema-initailizer/add-item-to-block/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-initailizer/index.html b/plugin-samples/schema-initailizer/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-initailizer/index.html +++ b/plugin-samples/schema-initailizer/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-initializer/action-modal/index.html b/plugin-samples/schema-initializer/action-modal/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-initializer/action-modal/index.html +++ b/plugin-samples/schema-initializer/action-modal/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-initializer/action-simple/index.html b/plugin-samples/schema-initializer/action-simple/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-initializer/action-simple/index.html +++ b/plugin-samples/schema-initializer/action-simple/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-initializer/block-data-modal/index.html b/plugin-samples/schema-initializer/block-data-modal/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-initializer/block-data-modal/index.html +++ b/plugin-samples/schema-initializer/block-data-modal/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-initializer/block-data/index.html b/plugin-samples/schema-initializer/block-data/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-initializer/block-data/index.html +++ b/plugin-samples/schema-initializer/block-data/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-initializer/block-simple/index.html b/plugin-samples/schema-initializer/block-simple/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-initializer/block-simple/index.html +++ b/plugin-samples/schema-initializer/block-simple/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-initializer/configure-actions/index.html b/plugin-samples/schema-initializer/configure-actions/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-initializer/configure-actions/index.html +++ b/plugin-samples/schema-initializer/configure-actions/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-initializer/configure-fields-bk/index.html b/plugin-samples/schema-initializer/configure-fields-bk/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-initializer/configure-fields-bk/index.html +++ b/plugin-samples/schema-initializer/configure-fields-bk/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-initializer/configure-fields/index.html b/plugin-samples/schema-initializer/configure-fields/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-initializer/configure-fields/index.html +++ b/plugin-samples/schema-initializer/configure-fields/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-initializer/index.html b/plugin-samples/schema-initializer/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-initializer/index.html +++ b/plugin-samples/schema-initializer/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-settings/add-item/index.html b/plugin-samples/schema-settings/add-item/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-settings/add-item/index.html +++ b/plugin-samples/schema-settings/add-item/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-settings/index.html b/plugin-samples/schema-settings/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-settings/index.html +++ b/plugin-samples/schema-settings/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugin-samples/schema-settings/new/index.html b/plugin-samples/schema-settings/new/index.html index 114fbc830..b13255174 100644 --- a/plugin-samples/schema-settings/new/index.html +++ b/plugin-samples/schema-settings/new/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/acl/index.html b/plugins/acl/index.html index 114fbc830..b13255174 100644 --- a/plugins/acl/index.html +++ b/plugins/acl/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/acl/user/index.html b/plugins/acl/user/index.html index 114fbc830..b13255174 100644 --- a/plugins/acl/user/index.html +++ b/plugins/acl/user/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/action-bulk-edit/index.html b/plugins/action-bulk-edit/index.html index 114fbc830..b13255174 100644 --- a/plugins/action-bulk-edit/index.html +++ b/plugins/action-bulk-edit/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/action-bulk-update/index.html b/plugins/action-bulk-update/index.html index 114fbc830..b13255174 100644 --- a/plugins/action-bulk-update/index.html +++ b/plugins/action-bulk-update/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/action-duplicate/index.html b/plugins/action-duplicate/index.html index 114fbc830..b13255174 100644 --- a/plugins/action-duplicate/index.html +++ b/plugins/action-duplicate/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/action-print/index.html b/plugins/action-print/index.html index 114fbc830..b13255174 100644 --- a/plugins/action-print/index.html +++ b/plugins/action-print/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/api-doc/index.html b/plugins/api-doc/index.html index 114fbc830..b13255174 100644 --- a/plugins/api-doc/index.html +++ b/plugins/api-doc/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/api-keys/index.html b/plugins/api-keys/index.html index 114fbc830..b13255174 100644 --- a/plugins/api-keys/index.html +++ b/plugins/api-keys/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/audit-logs/index.html b/plugins/audit-logs/index.html index 114fbc830..b13255174 100644 --- a/plugins/audit-logs/index.html +++ b/plugins/audit-logs/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/auth/dev/api/index.html b/plugins/auth/dev/api/index.html index 114fbc830..b13255174 100644 --- a/plugins/auth/dev/api/index.html +++ b/plugins/auth/dev/api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/auth/dev/guide/index.html b/plugins/auth/dev/guide/index.html index 114fbc830..b13255174 100644 --- a/plugins/auth/dev/guide/index.html +++ b/plugins/auth/dev/guide/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/auth/index.html b/plugins/auth/index.html index 114fbc830..b13255174 100644 --- a/plugins/auth/index.html +++ b/plugins/auth/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/auth/user/index.html b/plugins/auth/user/index.html index 114fbc830..b13255174 100644 --- a/plugins/auth/user/index.html +++ b/plugins/auth/user/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/backup-restore/index.html b/plugins/backup-restore/index.html index 114fbc830..b13255174 100644 --- a/plugins/backup-restore/index.html +++ b/plugins/backup-restore/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/cas/index.html b/plugins/cas/index.html index 114fbc830..b13255174 100644 --- a/plugins/cas/index.html +++ b/plugins/cas/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/china-region/index.html b/plugins/china-region/index.html index 114fbc830..b13255174 100644 --- a/plugins/china-region/index.html +++ b/plugins/china-region/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/index.html b/plugins/client/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/index.html +++ b/plugins/client/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/index.html b/plugins/client/user/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/index.html +++ b/plugins/client/user/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/plugin-manager/index.html b/plugins/client/user/plugin-manager/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/plugin-manager/index.html +++ b/plugins/client/user/plugin-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/plugin-settings/index.html b/plugins/client/user/plugin-settings/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/plugin-settings/index.html +++ b/plugins/client/user/plugin-settings/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/add-new/index.html b/plugins/client/user/ui-designer/actions/add-new/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/add-new/index.html +++ b/plugins/client/user/ui-designer/actions/add-new/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/add-record/index.html b/plugins/client/user/ui-designer/actions/add-record/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/add-record/index.html +++ b/plugins/client/user/ui-designer/actions/add-record/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/custom-request/index.html b/plugins/client/user/ui-designer/actions/custom-request/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/custom-request/index.html +++ b/plugins/client/user/ui-designer/actions/custom-request/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/delete/index.html b/plugins/client/user/ui-designer/actions/delete/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/delete/index.html +++ b/plugins/client/user/ui-designer/actions/delete/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/duplicate/index.html b/plugins/client/user/ui-designer/actions/duplicate/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/duplicate/index.html +++ b/plugins/client/user/ui-designer/actions/duplicate/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/edit/index.html b/plugins/client/user/ui-designer/actions/edit/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/edit/index.html +++ b/plugins/client/user/ui-designer/actions/edit/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/export/index.html b/plugins/client/user/ui-designer/actions/export/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/export/index.html +++ b/plugins/client/user/ui-designer/actions/export/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/filter/index.html b/plugins/client/user/ui-designer/actions/filter/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/filter/index.html +++ b/plugins/client/user/ui-designer/actions/filter/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/import/index.html b/plugins/client/user/ui-designer/actions/import/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/import/index.html +++ b/plugins/client/user/ui-designer/actions/import/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/index.html b/plugins/client/user/ui-designer/actions/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/index.html +++ b/plugins/client/user/ui-designer/actions/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/open-popup/index.html b/plugins/client/user/ui-designer/actions/open-popup/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/open-popup/index.html +++ b/plugins/client/user/ui-designer/actions/open-popup/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/print/index.html b/plugins/client/user/ui-designer/actions/print/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/print/index.html +++ b/plugins/client/user/ui-designer/actions/print/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/refresh/index.html b/plugins/client/user/ui-designer/actions/refresh/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/refresh/index.html +++ b/plugins/client/user/ui-designer/actions/refresh/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/save-record/index.html b/plugins/client/user/ui-designer/actions/save-record/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/save-record/index.html +++ b/plugins/client/user/ui-designer/actions/save-record/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/submit-to-workflow/index.html b/plugins/client/user/ui-designer/actions/submit-to-workflow/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/submit-to-workflow/index.html +++ b/plugins/client/user/ui-designer/actions/submit-to-workflow/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/submit/index.html b/plugins/client/user/ui-designer/actions/submit/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/submit/index.html +++ b/plugins/client/user/ui-designer/actions/submit/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/update-record/index.html b/plugins/client/user/ui-designer/actions/update-record/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/update-record/index.html +++ b/plugins/client/user/ui-designer/actions/update-record/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/actions/view/index.html b/plugins/client/user/ui-designer/actions/view/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/actions/view/index.html +++ b/plugins/client/user/ui-designer/actions/view/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/blocks/index.html b/plugins/client/user/ui-designer/blocks/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/blocks/index.html +++ b/plugins/client/user/ui-designer/blocks/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/fields/index.html b/plugins/client/user/ui-designer/fields/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/fields/index.html +++ b/plugins/client/user/ui-designer/fields/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/index.html b/plugins/client/user/ui-designer/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/index.html +++ b/plugins/client/user/ui-designer/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/menus/index.html b/plugins/client/user/ui-designer/menus/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/menus/index.html +++ b/plugins/client/user/ui-designer/menus/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/ui-designer/pages/index.html b/plugins/client/user/ui-designer/pages/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/ui-designer/pages/index.html +++ b/plugins/client/user/ui-designer/pages/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/client/user/user-center/index.html b/plugins/client/user/user-center/index.html index 114fbc830..b13255174 100644 --- a/plugins/client/user/user-center/index.html +++ b/plugins/client/user/user-center/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-fdw/enable-federated/index.html b/plugins/collection-fdw/enable-federated/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-fdw/enable-federated/index.html +++ b/plugins/collection-fdw/enable-federated/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-fdw/index.html b/plugins/collection-fdw/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-fdw/index.html +++ b/plugins/collection-fdw/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/index.html b/plugins/collection-manager/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/index.html +++ b/plugins/collection-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/association-fields/cascade-select/index.html b/plugins/collection-manager/user/association-fields/cascade-select/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/association-fields/cascade-select/index.html +++ b/plugins/collection-manager/user/association-fields/cascade-select/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/association-fields/file-manager/index.html b/plugins/collection-manager/user/association-fields/file-manager/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/association-fields/file-manager/index.html +++ b/plugins/collection-manager/user/association-fields/file-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/association-fields/record-picker/index.html b/plugins/collection-manager/user/association-fields/record-picker/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/association-fields/record-picker/index.html +++ b/plugins/collection-manager/user/association-fields/record-picker/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/association-fields/select/index.html b/plugins/collection-manager/user/association-fields/select/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/association-fields/select/index.html +++ b/plugins/collection-manager/user/association-fields/select/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/association-fields/sub-detail/index.html b/plugins/collection-manager/user/association-fields/sub-detail/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/association-fields/sub-detail/index.html +++ b/plugins/collection-manager/user/association-fields/sub-detail/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/association-fields/sub-form(popover)/index.html b/plugins/collection-manager/user/association-fields/sub-form(popover)/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/association-fields/sub-form(popover)/index.html +++ b/plugins/collection-manager/user/association-fields/sub-form(popover)/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/association-fields/sub-form/index.html b/plugins/collection-manager/user/association-fields/sub-form/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/association-fields/sub-form/index.html +++ b/plugins/collection-manager/user/association-fields/sub-form/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/association-fields/sub-table/index.html b/plugins/collection-manager/user/association-fields/sub-table/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/association-fields/sub-table/index.html +++ b/plugins/collection-manager/user/association-fields/sub-table/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/association-fields/summary/index.html b/plugins/collection-manager/user/association-fields/summary/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/association-fields/summary/index.html +++ b/plugins/collection-manager/user/association-fields/summary/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/association-fields/tag/index.html b/plugins/collection-manager/user/association-fields/tag/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/association-fields/tag/index.html +++ b/plugins/collection-manager/user/association-fields/tag/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/association-fields/title/index.html b/plugins/collection-manager/user/association-fields/title/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/association-fields/title/index.html +++ b/plugins/collection-manager/user/association-fields/title/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/collection-templates/calender/index.html b/plugins/collection-manager/user/collection-templates/calender/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/collection-templates/calender/index.html +++ b/plugins/collection-manager/user/collection-templates/calender/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/collection-templates/expression/index.html b/plugins/collection-manager/user/collection-templates/expression/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/collection-templates/expression/index.html +++ b/plugins/collection-manager/user/collection-templates/expression/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/collection-templates/file/index.html b/plugins/collection-manager/user/collection-templates/file/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/collection-templates/file/index.html +++ b/plugins/collection-manager/user/collection-templates/file/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/collection-templates/general/index.html b/plugins/collection-manager/user/collection-templates/general/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/collection-templates/general/index.html +++ b/plugins/collection-manager/user/collection-templates/general/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/collection-templates/sql/index.html b/plugins/collection-manager/user/collection-templates/sql/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/collection-templates/sql/index.html +++ b/plugins/collection-manager/user/collection-templates/sql/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/collection-templates/tree/index.html b/plugins/collection-manager/user/collection-templates/tree/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/collection-templates/tree/index.html +++ b/plugins/collection-manager/user/collection-templates/tree/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/collection-templates/view/index.html b/plugins/collection-manager/user/collection-templates/view/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/collection-templates/view/index.html +++ b/plugins/collection-manager/user/collection-templates/view/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/field-interfaces/index.html b/plugins/collection-manager/user/field-interfaces/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/field-interfaces/index.html +++ b/plugins/collection-manager/user/field-interfaces/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/collection-manager/user/index.html b/plugins/collection-manager/user/index.html index 114fbc830..b13255174 100644 --- a/plugins/collection-manager/user/index.html +++ b/plugins/collection-manager/user/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/custom-request/index.html b/plugins/custom-request/index.html index 114fbc830..b13255174 100644 --- a/plugins/custom-request/index.html +++ b/plugins/custom-request/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/data-visualization/dev/index.html b/plugins/data-visualization/dev/index.html index 114fbc830..b13255174 100644 --- a/plugins/data-visualization/dev/index.html +++ b/plugins/data-visualization/dev/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/data-visualization/index.html b/plugins/data-visualization/index.html index 114fbc830..b13255174 100644 --- a/plugins/data-visualization/index.html +++ b/plugins/data-visualization/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/data-visualization/step-by-step/index.html b/plugins/data-visualization/step-by-step/index.html index 114fbc830..b13255174 100644 --- a/plugins/data-visualization/step-by-step/index.html +++ b/plugins/data-visualization/step-by-step/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/data-visualization/user/chart-block/index.html b/plugins/data-visualization/user/chart-block/index.html index 114fbc830..b13255174 100644 --- a/plugins/data-visualization/user/chart-block/index.html +++ b/plugins/data-visualization/user/chart-block/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/data-visualization/user/configure/index.html b/plugins/data-visualization/user/configure/index.html index 114fbc830..b13255174 100644 --- a/plugins/data-visualization/user/configure/index.html +++ b/plugins/data-visualization/user/configure/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/data-visualization/user/filter/index.html b/plugins/data-visualization/user/filter/index.html index 114fbc830..b13255174 100644 --- a/plugins/data-visualization/user/filter/index.html +++ b/plugins/data-visualization/user/filter/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/export/index.html b/plugins/export/index.html index 114fbc830..b13255174 100644 --- a/plugins/export/index.html +++ b/plugins/export/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/file-manager/aliyun-oss/index.html b/plugins/file-manager/aliyun-oss/index.html index 114fbc830..b13255174 100644 --- a/plugins/file-manager/aliyun-oss/index.html +++ b/plugins/file-manager/aliyun-oss/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/file-manager/amazon-s3/index.html b/plugins/file-manager/amazon-s3/index.html index 114fbc830..b13255174 100644 --- a/plugins/file-manager/amazon-s3/index.html +++ b/plugins/file-manager/amazon-s3/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/file-manager/index.html b/plugins/file-manager/index.html index 114fbc830..b13255174 100644 --- a/plugins/file-manager/index.html +++ b/plugins/file-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/file-manager/local/index.html b/plugins/file-manager/local/index.html index 114fbc830..b13255174 100644 --- a/plugins/file-manager/local/index.html +++ b/plugins/file-manager/local/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/file-manager/tencent-cos/index.html b/plugins/file-manager/tencent-cos/index.html index 114fbc830..b13255174 100644 --- a/plugins/file-manager/tencent-cos/index.html +++ b/plugins/file-manager/tencent-cos/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/formula-field/index.html b/plugins/formula-field/index.html index 114fbc830..b13255174 100644 --- a/plugins/formula-field/index.html +++ b/plugins/formula-field/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/gantt/index.html b/plugins/gantt/index.html index 114fbc830..b13255174 100644 --- a/plugins/gantt/index.html +++ b/plugins/gantt/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/graph-collection-manager/index.html b/plugins/graph-collection-manager/index.html index 114fbc830..b13255174 100644 --- a/plugins/graph-collection-manager/index.html +++ b/plugins/graph-collection-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/iframe-block/index.html b/plugins/iframe-block/index.html index 114fbc830..b13255174 100644 --- a/plugins/iframe-block/index.html +++ b/plugins/iframe-block/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/import/index.html b/plugins/import/index.html index 114fbc830..b13255174 100644 --- a/plugins/import/index.html +++ b/plugins/import/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/index.html b/plugins/index.html index 114fbc830..b13255174 100644 --- a/plugins/index.html +++ b/plugins/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/kanban/index.html b/plugins/kanban/index.html index 114fbc830..b13255174 100644 --- a/plugins/kanban/index.html +++ b/plugins/kanban/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/localization-management/index.html b/plugins/localization-management/index.html index 114fbc830..b13255174 100644 --- a/plugins/localization-management/index.html +++ b/plugins/localization-management/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/logger/index.html b/plugins/logger/index.html index 114fbc830..b13255174 100644 --- a/plugins/logger/index.html +++ b/plugins/logger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/map/index.html b/plugins/map/index.html index 114fbc830..b13255174 100644 --- a/plugins/map/index.html +++ b/plugins/map/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/mobile-client/index.html b/plugins/mobile-client/index.html index 114fbc830..b13255174 100644 --- a/plugins/mobile-client/index.html +++ b/plugins/mobile-client/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/multi-app-manager/index.html b/plugins/multi-app-manager/index.html index 114fbc830..b13255174 100644 --- a/plugins/multi-app-manager/index.html +++ b/plugins/multi-app-manager/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/oidc/example/google/index.html b/plugins/oidc/example/google/index.html index 114fbc830..b13255174 100644 --- a/plugins/oidc/example/google/index.html +++ b/plugins/oidc/example/google/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/oidc/index.html b/plugins/oidc/index.html index 114fbc830..b13255174 100644 --- a/plugins/oidc/index.html +++ b/plugins/oidc/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/saml/example/google/index.html b/plugins/saml/example/google/index.html index 114fbc830..b13255174 100644 --- a/plugins/saml/example/google/index.html +++ b/plugins/saml/example/google/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/saml/index.html b/plugins/saml/index.html index 114fbc830..b13255174 100644 --- a/plugins/saml/index.html +++ b/plugins/saml/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/sequence-field/index.html b/plugins/sequence-field/index.html index 114fbc830..b13255174 100644 --- a/plugins/sequence-field/index.html +++ b/plugins/sequence-field/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/sms-auth/index.html b/plugins/sms-auth/index.html index 114fbc830..b13255174 100644 --- a/plugins/sms-auth/index.html +++ b/plugins/sms-auth/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/snapshot-field/index.html b/plugins/snapshot-field/index.html index 114fbc830..b13255174 100644 --- a/plugins/snapshot-field/index.html +++ b/plugins/snapshot-field/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/system-settings/index.html b/plugins/system-settings/index.html index 114fbc830..b13255174 100644 --- a/plugins/system-settings/index.html +++ b/plugins/system-settings/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/telemetry-prometheus/index.html b/plugins/telemetry-prometheus/index.html index 114fbc830..b13255174 100644 --- a/plugins/telemetry-prometheus/index.html +++ b/plugins/telemetry-prometheus/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/theme-editor/index.html b/plugins/theme-editor/index.html index 114fbc830..b13255174 100644 --- a/plugins/theme-editor/index.html +++ b/plugins/theme-editor/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/ui-schema-storage/index.html b/plugins/ui-schema-storage/index.html index 114fbc830..b13255174 100644 --- a/plugins/ui-schema-storage/index.html +++ b/plugins/ui-schema-storage/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/users/index.html b/plugins/users/index.html index 114fbc830..b13255174 100644 --- a/plugins/users/index.html +++ b/plugins/users/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/verification/index.html b/plugins/verification/index.html index 114fbc830..b13255174 100644 --- a/plugins/verification/index.html +++ b/plugins/verification/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow-aggregate/index.html b/plugins/workflow-aggregate/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow-aggregate/index.html +++ b/plugins/workflow-aggregate/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow-approval/index.html b/plugins/workflow-approval/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow-approval/index.html +++ b/plugins/workflow-approval/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow-delay/index.html b/plugins/workflow-delay/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow-delay/index.html +++ b/plugins/workflow-delay/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow-dynamic-calculation/index.html b/plugins/workflow-dynamic-calculation/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow-dynamic-calculation/index.html +++ b/plugins/workflow-dynamic-calculation/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow-form-trigger/index.html b/plugins/workflow-form-trigger/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow-form-trigger/index.html +++ b/plugins/workflow-form-trigger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow-json-query/index.html b/plugins/workflow-json-query/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow-json-query/index.html +++ b/plugins/workflow-json-query/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow-loop/index.html b/plugins/workflow-loop/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow-loop/index.html +++ b/plugins/workflow-loop/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow-manual/index.html b/plugins/workflow-manual/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow-manual/index.html +++ b/plugins/workflow-manual/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow-parallel/index.html b/plugins/workflow-parallel/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow-parallel/index.html +++ b/plugins/workflow-parallel/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow-request/index.html b/plugins/workflow-request/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow-request/index.html +++ b/plugins/workflow-request/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow-sql/index.html b/plugins/workflow-sql/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow-sql/index.html +++ b/plugins/workflow-sql/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/development/api/index.html b/plugins/workflow/development/api/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/development/api/index.html +++ b/plugins/workflow/development/api/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/development/index.html b/plugins/workflow/development/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/development/index.html +++ b/plugins/workflow/development/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/development/instruction/index.html b/plugins/workflow/development/instruction/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/development/instruction/index.html +++ b/plugins/workflow/development/instruction/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/development/trigger/index.html b/plugins/workflow/development/trigger/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/development/trigger/index.html +++ b/plugins/workflow/development/trigger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/index.html b/plugins/workflow/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/index.html +++ b/plugins/workflow/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/advanced/index.html b/plugins/workflow/manual/advanced/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/advanced/index.html +++ b/plugins/workflow/manual/advanced/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/index.html b/plugins/workflow/manual/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/index.html +++ b/plugins/workflow/manual/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/aggregate/index.html b/plugins/workflow/manual/nodes/aggregate/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/aggregate/index.html +++ b/plugins/workflow/manual/nodes/aggregate/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/calculation/index.html b/plugins/workflow/manual/nodes/calculation/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/calculation/index.html +++ b/plugins/workflow/manual/nodes/calculation/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/condition/index.html b/plugins/workflow/manual/nodes/condition/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/condition/index.html +++ b/plugins/workflow/manual/nodes/condition/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/create/index.html b/plugins/workflow/manual/nodes/create/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/create/index.html +++ b/plugins/workflow/manual/nodes/create/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/delay/index.html b/plugins/workflow/manual/nodes/delay/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/delay/index.html +++ b/plugins/workflow/manual/nodes/delay/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/destroy/index.html b/plugins/workflow/manual/nodes/destroy/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/destroy/index.html +++ b/plugins/workflow/manual/nodes/destroy/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/dynamic-calculation/index.html b/plugins/workflow/manual/nodes/dynamic-calculation/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/dynamic-calculation/index.html +++ b/plugins/workflow/manual/nodes/dynamic-calculation/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/index.html b/plugins/workflow/manual/nodes/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/index.html +++ b/plugins/workflow/manual/nodes/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/loop/index.html b/plugins/workflow/manual/nodes/loop/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/loop/index.html +++ b/plugins/workflow/manual/nodes/loop/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/manual/index.html b/plugins/workflow/manual/nodes/manual/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/manual/index.html +++ b/plugins/workflow/manual/nodes/manual/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/parallel/index.html b/plugins/workflow/manual/nodes/parallel/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/parallel/index.html +++ b/plugins/workflow/manual/nodes/parallel/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/query/index.html b/plugins/workflow/manual/nodes/query/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/query/index.html +++ b/plugins/workflow/manual/nodes/query/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/request/index.html b/plugins/workflow/manual/nodes/request/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/request/index.html +++ b/plugins/workflow/manual/nodes/request/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/sql/index.html b/plugins/workflow/manual/nodes/sql/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/sql/index.html +++ b/plugins/workflow/manual/nodes/sql/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/nodes/update/index.html b/plugins/workflow/manual/nodes/update/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/nodes/update/index.html +++ b/plugins/workflow/manual/nodes/update/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/triggers/collection/index.html b/plugins/workflow/manual/triggers/collection/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/triggers/collection/index.html +++ b/plugins/workflow/manual/triggers/collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/triggers/form/index.html b/plugins/workflow/manual/triggers/form/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/triggers/form/index.html +++ b/plugins/workflow/manual/triggers/form/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/triggers/index.html b/plugins/workflow/manual/triggers/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/triggers/index.html +++ b/plugins/workflow/manual/triggers/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/plugins/workflow/manual/triggers/schedule/index.html b/plugins/workflow/manual/triggers/schedule/index.html index 114fbc830..b13255174 100644 --- a/plugins/workflow/manual/triggers/schedule/index.html +++ b/plugins/workflow/manual/triggers/schedule/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/umi.d2277bb0.js b/umi.56e4e226.js similarity index 70% rename from umi.d2277bb0.js rename to umi.56e4e226.js index 8b0139be9..1da212a26 100644 --- a/umi.d2277bb0.js +++ b/umi.56e4e226.js @@ -41,8 +41,8 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Pt(O,N){if(O){if(typeof O=="string")return en(O,N);var j=Object.prototype.toString.call(O).slice(8,-1);if(j==="Object"&&O.constructor&&(j=O.constructor.name),j==="Map"||j==="Set")return Array.from(O);if(j==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(j))return en(O,N)}}function en(O,N){(N==null||N>O.length)&&(N=O.length);for(var j=0,de=new Array(N);jZn.length&&Le,eo=Object.values(j).reduce(function(Sn,un){return un.path.startsWith(zt.slice(1))&&((0,we.qu)(Sn[0],"nav",un.meta.frontmatter),Xn&&(0,we.qu)(Sn[1],"nav.second",un.meta.frontmatter)),Sn},[{},{}]),Vn=Nt(eo,2),to=Vn[0],yo=Vn[1];if(Xn){var no,so,Kn;(no=to.title)!==null&&no!==void 0||(to.title=Zn.split("/").pop().replace(/^[a-z]/,function(Sn){return Sn.toUpperCase()}));var ur=(so=Ja[Zn])!==null&&so!==void 0?so:Ja[Zn]=Dt(to,mn,Zn);(Kn=ur.children)!==null&&Kn!==void 0||(ur.children=[]),ur.children.push(Dt(yo,mn,zt,mn[0].children[0].link))}else Ja[zt]=Dt(to,mn,zt,mn[0].children[0].link);return Ja},{}));return Na.forEach(function(Ja,dn){var bn;!Ja.link&&((bn=Ja.children)===null||bn===void 0?void 0:bn.length)===1?Na[dn]=Ja.children[0]:Ja.children&&Ja.children.sort(je)}),Na.sort(je),Aa==="prepend"?Na.unshift.apply(Na,tt(Ra)):Aa==="append"&&Na.push.apply(Na,tt(Ra)),Na}),f=Nt(Ve,1),ka=f[0];return ka};function ot(O){"@babel/helpers - typeof";return ot=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(N){return typeof N}:function(N){return N&&typeof Symbol=="function"&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},ot(O)}function Wt(O,N){return Io(O)||Fn(O,N)||Cn(O,N)||Jt()}function Jt(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Cn(O,N){if(O){if(typeof O=="string")return Qn(O,N);var j=Object.prototype.toString.call(O).slice(8,-1);if(j==="Object"&&O.constructor&&(j=O.constructor.name),j==="Map"||j==="Set")return Array.from(O);if(j==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(j))return Qn(O,N)}}function Qn(O,N){(N==null||N>O.length)&&(N=O.length);for(var j=0,de=new Array(N);jO.length)&&(N=O.length);for(var j=0,de=new Array(N);j{var P=Object.create;var I=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames,R=Object.getOwnPropertySymbols,B=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var O=(e,t,i)=>t in e?I(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,M=(e,t)=>{for(var i in t||(t={}))E.call(t,i)&&O(e,i,t[i]);if(R)for(var i of R(t))L.call(t,i)&&O(e,i,t[i]);return e};var F=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var N=(e,t,i,h)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of D(t))!E.call(e,a)&&a!==i&&I(e,a,{get:()=>t[a],enumerable:!(h=z(t,a))||h.enumerable});return e};var W=(e,t,i)=>(i=e!=null?P(B(e)):{},N(t||!e||!e.__esModule?I(i,"default",{value:e,enumerable:!0}):i,e));var j=F((K,w)=>{w.exports=function(e){var t={};function i(h){if(t[h])return t[h].exports;var a=t[h]={exports:{},id:h,loaded:!1};return e[h].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}return i.m=e,i.c=t,i.p="",i(0)}([function(e,t,i){e.exports=i(1)},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var h=i(2);Object.defineProperty(t,"combineChunks",{enumerable:!0,get:function(){return h.combineChunks}}),Object.defineProperty(t,"fillInChunks",{enumerable:!0,get:function(){return h.fillInChunks}}),Object.defineProperty(t,"findAll",{enumerable:!0,get:function(){return h.findAll}}),Object.defineProperty(t,"findChunks",{enumerable:!0,get:function(){return h.findChunks}})},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=t.findAll=function(s){var n=s.autoEscape,g=s.caseSensitive,f=g===void 0?!1:g,p=s.findChunks,u=p===void 0?a:p,c=s.sanitize,v=s.searchWords,T=s.textToHighlight;return l({chunksToHighlight:h({chunks:u({autoEscape:n,caseSensitive:f,sanitize:c,searchWords:v,textToHighlight:T})}),totalLength:T?T.length:0})},h=t.combineChunks=function(s){var n=s.chunks;return n=n.sort(function(g,f){return g.start-f.start}).reduce(function(g,f){if(g.length===0)return[f];var p=g.pop();if(f.start<=p.end){var u=Math.max(p.end,f.end);g.push({highlight:!1,start:p.start,end:u})}else g.push(p,f);return g},[]),n},a=function(s){var n=s.autoEscape,g=s.caseSensitive,f=s.sanitize,p=f===void 0?d:f,u=s.searchWords,c=s.textToHighlight;return c=p(c),u.filter(function(v){return v}).reduce(function(v,T){T=p(T),n&&(T=r(T));for(var m=new RegExp(T,g?"g":"gi"),x=void 0;x=m.exec(c);){var S=x.index,$=m.lastIndex;$>S&&v.push({highlight:!1,start:S,end:$}),x.index===m.lastIndex&&m.lastIndex++}return v},[])};t.findChunks=a;var l=t.fillInChunks=function(s){var n=s.chunksToHighlight,g=s.totalLength,f=[],p=function(v,T,m){T-v>0&&f.push({start:v,end:T,highlight:m})};if(n.length===0)p(0,g,!1);else{var u=0;n.forEach(function(c){p(u,c.start,!1),p(c.start,c.end,!0),u=c.end}),p(u,g,!1)}return f};function d(o){return o}function r(o){return o.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,"\\\\$&")}}])});var C=W(j());var H="tab";function k(e,t,i,h,a){let l=a!==void 0;return h.reduce((r,o)=>(o.tocIndex===a&&(r[o.paraId]=(r[o.paraId]||"").concat(o.value)),r),[]).filter(Boolean).length||l?{rawTitle:e,title:t,link:i,paragraphs:h.reduce((r,o)=>{var s,n;return o.tocIndex===a&&((n=r[s=o.paraId])!=null||(r[s]=""),r[o.paraId]+=o.value),r},[]).filter(Boolean)}:null}function y(e){return[e.title,e.subtitle].filter(Boolean).join(" ")}function _(e,t,i){let h=[],a=Object.values(t).reduce((l,d)=>{var r,o;return d.asset&&((o=l[r=d.routeId])!=null||(l[r]=[]),l[d.routeId].push(d)),l},{});return Object.values(e).forEach(l=>{var d;if("meta"in l&&!("isLayout"in l)){let r=l.meta,o=l.path.replace(/^([^/])/,"/$1")||"/",s=i.find(u=>o===u.link||o.startsWith(`${u.activePath}/`)),n=(a[l.id]||[]).map(u=>{var c;return(c=u.asset)==null?void 0:c.id}),g=k("",y(r.frontmatter),o,r.texts),f=r.toc.reduce((u,c,v)=>{if(!n.includes(c.id)&&c.depth>=1){let T=y(r.frontmatter);c.depth!==1&&(T=`${T} - ${c.title}`),u.push(k(c.title,T,`${o}#${c.id}`,r.texts,v))}return u},[]),p=(r.tabs||[]).reduce((u,{key:c,meta:v})=>{let T=k("",`${y(r.frontmatter)} - ${v.frontmatter.title}`,`${o}?${H}=${c}`,v.texts);return T&&u.push(T),u.push(...v.toc.map((m,x)=>k(m.title,`${y(r.frontmatter)} - ${v.frontmatter.title} - ${m.title}`,`${o}?${H}=${c}#${m.id}`,v.texts,x))),u},[]);h.push({navTitle:s==null?void 0:s.title,navOrder:s?i.indexOf(s):1/0,title:y(r.frontmatter),link:o,sections:[...g?[g]:[],...f,...p],demos:((d=a[l.id])==null?void 0:d.map(u=>({link:`${o}#${u.asset.id}`,rawTitle:u.asset.title||"",title:u.asset.title||y(r.frontmatter),description:u.asset.description||"",keywords:u.asset.keywords||[]})))||[]})}}),h}function b(e="",t,i=1){let h=(0,C.findAll)({textToHighlight:e,searchWords:t,autoEscape:!0}),a={};return[h.map(({start:l,end:d,highlight:r},o)=>{let s={text:e.slice(l,d)};return o===0&&!r&&h.length>1&&s.text.length>20&&(s.text=`...${s.text.slice(-20)}`),r&&(s.highlighted=!0,a[t.find(n=>s.text.includes(n))]=i),s}),a]}function Y(e,t){let i=t.split(" "),h=new RegExp(t.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&").replace(/\\s+/g,"|"),"i"),a={};return e.forEach(l=>{var o,s;let d=l.title,r=[];if(l.sections.forEach(n=>{for(let g of n.paragraphs)if(h.test(g)){let[f,p]=b(n.title,i,10),[u,c]=b(g,i);r.push({type:"content",link:n.link,priority:Object.values(M(M({},c),p)).reduce((v,T)=>v+T,0),highlightTitleTexts:f,highlightTexts:u,pageTitle:d});return}if(h.test(n.rawTitle)&&!h.test(l.title)){let[g,f]=b(n.title,i,10);r.push({type:"title",link:n.link,priority:Object.values(f).reduce((p,u)=>p+u,0),highlightTitleTexts:g,highlightTexts:b(n.paragraphs[0]||"",i)[0],pageTitle:d})}}),l.demos.forEach(n=>{if(h.test(n.rawTitle)||h.test(n.description)){let[g,f]=b(n.title,i,10),[p,u]=b(n.description,i);r.push({type:"demo",link:n.link,priority:Object.values(M(M({},u),f)).reduce((c,v)=>c+v,0),highlightTitleTexts:g,highlightTexts:p,pageTitle:d})}}),h.test(l.title)){let[n,g]=b(l.title,i,100);r.push({type:"page",link:l.link,priority:Object.values(g).reduce((f,p)=>f+p,0),highlightTitleTexts:n,highlightTexts:b(((o=l.sections[0])==null?void 0:o.paragraphs[0])||"",i)[0],pageTitle:d})}if(r.length){let n=l.navTitle||"$ROOT";(s=a[n])!=null||(a[n]={title:l.navTitle,priority:l.navOrder*1e3,hints:[]}),a[n].hints.push(...r)}}),Object.values(a).forEach(({hints:l})=>{l.sort((d,r)=>r.priority-d.priority)}),Object.values(a).sort((l,d)=>d.priority-l.priority)}var A;self.onmessage=({data:e})=>{switch(e.action){case"generate-metadata":A=_(e.args.routes,e.args.demos,e.args.nav);break;case"get-search-result":self.postMessage(Y(A,e.args.keywords));break;default:}};})();\n';function nn(O){"@babel/helpers - typeof";return nn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(N){return typeof N}:function(N){return N&&typeof Symbol=="function"&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},nn(O)}function Jn(O,N){var j=Object.keys(O);if(Object.getOwnPropertySymbols){var de=Object.getOwnPropertySymbols(O);N&&(de=de.filter(function(Pe){return Object.getOwnPropertyDescriptor(O,Pe).enumerable})),j.push.apply(j,de)}return j}function Ie(O){for(var N=1;NO.length)&&(N=O.length);for(var j=0,de=new Array(N);jO.length)&&(N=O.length);for(var j=0,de=new Array(N);j",paraId:5,tocIndex:2},{value:"Detailed Information",paraId:6,tocIndex:2},{value:"Query parameters are the same as ",paraId:7,tocIndex:2},{value:"Repository.find()",paraId:8,tocIndex:2},{value:".",paraId:7,tocIndex:2},{value:"findOne()",paraId:2},{value:"Find associated objects, only to return one record.",paraId:9,tocIndex:3},{value:"Signature",paraId:10,tocIndex:3},{value:"async findOne(options?: FindOneOptions): Promise",paraId:11,tocIndex:3},{value:"\u7C7B\u578B",paraId:12,tocIndex:3},{value:`type FindOneOptions = Omit; +`,paraId:5,tocIndex:1},{value:"\u6570\u636E\u5E93\u4E2D\u7684\u89C6\u56FE\uFF1A",paraId:6,tocIndex:1},{value:"\u5728 NocoBase \u4E2D\u5C06\u4E0A\u9762\u89C6\u56FE\u6620\u5C04\u4E3A\u6570\u636E\u8868\uFF08Collection\uFF09\u4F7F\u7528",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u76EE\u6807\u89C6\u56FE",paraId:8,tocIndex:2},{value:"\u652F\u6301\u81EA\u5B9A\u4E49\u89C6\u56FE\u7684\u5217\u540D\uFF08\u5B57\u6BB5\u540D\uFF09",paraId:9,tocIndex:2},{value:"\u6765\u6E90\u5B57\u6BB5\uFF1A\u5373\u6E90\u8868\u7684\u5143\u5B57\u6BB5\uFF0C\u5F53\u5B57\u6BB5\u672A\u89E3\u6790\u51FA\u6E90\u8868\u6765\u6E90\u5B57\u6BB5\u65F6\uFF08\u805A\u5408\u7684\u5B57\u6BB5\u65E0\u6765\u6E90\u5B57\u6BB5\uFF09\uFF0C\u53EF\u6307\u5B9A\u5B57\u6BB5\u7684 interface",paraId:9,tocIndex:2},{value:"\u89C6\u56FE\u6570\u636E\u662F\u5426\u652F\u6301\u589E\u5220\u6539\u64CD\u4F5C\uFF08\u9ED8\u8BA4\u4E0D\u652F\u6301\uFF09",paraId:9,tocIndex:2},{value:"\u5B8C\u6574\u7684\u793A\u4F8B\u914D\u7F6E\u6D41\u7A0B\u5982\u56FE",paraId:10,tocIndex:2},{value:"Sync from database \u652F\u6301\u8C03\u6574\u89C6\u56FE\u8868\u914D\u7F6E\uFF08\u82E5\u6570\u636E\u5E93\u4E2D\u89C6\u56FE\u8FDB\u884C\u4E86\u8C03\u6574\uFF0C\u53EF\u91CD\u65B0\u8FDE\u63A5\u89C6\u56FE\u540C\u6B65\u6570\u636E\uFF09",paraId:11,tocIndex:2},{value:"\u5220\u9664\uFF1A\u8FD9\u91CC\u5220\u9664\u64CD\u4F5C\u4E0D\u4F1A\u5C06\u6E90\u8868\u5B57\u6BB5\u5220\u9664\uFF0C\u4EC5\u5220\u9664\u89C6\u56FE\u8868\u4E2D\u7684\u5B57\u6BB5",paraId:11,tocIndex:2},{value:"\u662F\u5426\u652F\u6301\u5BF9\u89C6\u56FE\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u64CD\u4F5C\uFF08\u9ED8\u8BA4\u4E0D\u542F\u7528\uFF09\uFF0C\u542F\u7528\u65F6\uFF0C\u5BF9\u5E94\u533A\u5757\u624D\u652F\u6301\u589E\u52A0\u3001\u5220\u9664\u7B49\u64CD\u4F5C",paraId:12,tocIndex:2},{value:"\u4F5C\u4E3A\u533A\u5757\u7684\u6570\u636E\u6E90",paraId:13,tocIndex:3},{value:"\u89C6\u56FE\u8868\u4E0E\u5176\u4ED6\u4EFB\u610F\u65B9\u5F0F\u521B\u5EFA\u7684\u6570\u636E\u8868\u4E00\u6837\u5728\u6240\u6709\u533A\u5757\u4E2D\u90FD\u80FD\u9009\u4E2D\u4F5C\u4E3A\u6570\u636E\u6E90",paraId:14,tocIndex:3}],Qe={},Oa={title:"Table OID",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/system-info/table-oid.md",lastUpdated:173254844e4,description:"to be added."},ha=[{id:"table-oid",depth:1,title:"Table OID"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Pa=[{value:"to be added.",paraId:0,tocIndex:3}],La={},Ha={title:"\u6807\u9898",toc:"menu",filename:"docs/en-US/plugins/collection-manager/user/association-fields/title/index.md",lastUpdated:173254844e4,description:"\u6807\u9898\u7EC4\u4EF6\u662F\u9605\u8BFB\u6A21\u5F0F\u4E0B\u63D0\u4F9B\u7684\u4E00\u79CD\u6E05\u6670\u660E\u4E86\u7684\u65B9\u5F0F\u6765\u663E\u793A\u4E0E\u5F53\u524D\u8BB0\u5F55\u5173\u8054\u7684\u5173\u952E\u4FE1\u606F\uFF0C\u8BE6\u60C5\u72B6\u6001\u4E0B\u5173\u7CFB\u5B57\u6BB5\u7684\u9ED8\u8BA4\u7EC4\u4EF6\u5747\u4E3A\u6807\u9898,\u9ED8\u8BA4\u6807\u9898\u5B57\u6BB5\u4E3A id,\u652F\u6301\u81EA\u5B9A\u4E49\u6807\u9898\u5B57\u6BB5\u3002"},Tt=[{id:"\u6807\u9898",depth:1,title:"\u6807\u9898"}],Ut=[{value:"\u6807\u9898\u7EC4\u4EF6\u662F\u9605\u8BFB\u6A21\u5F0F\u4E0B\u63D0\u4F9B\u7684\u4E00\u79CD\u6E05\u6670\u660E\u4E86\u7684\u65B9\u5F0F\u6765\u663E\u793A\u4E0E\u5F53\u524D\u8BB0\u5F55\u5173\u8054\u7684\u5173\u952E\u4FE1\u606F\uFF0C\u8BE6\u60C5\u72B6\u6001\u4E0B\u5173\u7CFB\u5B57\u6BB5\u7684\u9ED8\u8BA4\u7EC4\u4EF6\u5747\u4E3A\u6807\u9898,\u9ED8\u8BA4\u6807\u9898\u5B57\u6BB5\u4E3A id,\u652F\u6301\u81EA\u5B9A\u4E49\u6807\u9898\u5B57\u6BB5\u3002",paraId:0,tocIndex:0}],Kt={},yt={title:"SQL \u8868",toc:"menu",filename:"docs/en-US/plugins/collection-manager/user/collection-templates/sql/index.md",lastUpdated:173254844e4,description:"SQL collection \u63D0\u4F9B\u4E86\u4E00\u79CD\u901A\u8FC7 SQL \u8BED\u53E5\u83B7\u53D6\u6570\u636E\u7684\u65B9\u6CD5\u3002\u901A\u8FC7 SQL \u8BED\u53E5\u83B7\u53D6\u6570\u636E\u5B57\u6BB5\uFF0C\u914D\u7F6E\u5B57\u6BB5\u5143\u6570\u636E\u4E4B\u540E\uFF0C\u7528\u6237\u53EF\u4EE5\u50CF\u4F7F\u7528\u666E\u901A\u8868\u4E00\u6837\uFF0C\u7ED9\u8868\u683C\u3001\u56FE\u8868\u3001\u5DE5\u4F5C\u6D41\u7B49\u4F7F\u7528\uFF0C\u9002\u7528\u4E8E\u5173\u8054\u67E5\u8BE2\u3001\u7EDF\u8BA1\u7B49\u573A\u666F\u3002"},Zt=[{id:"sql-\u8868",depth:1,title:"SQL \u8868"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u65B0\u5EFA",depth:2,title:"\u65B0\u5EFA"},{id:"\u7F16\u8F91",depth:2,title:"\u7F16\u8F91"},{id:"\u540C\u6B65",depth:2,title:"\u540C\u6B65"},{id:"sql-\u8868\u5BF9\u6BD4\u8FDE\u63A5\u6570\u636E\u5E93\u89C6\u56FE",depth:2,title:"SQL \u8868\u5BF9\u6BD4\u8FDE\u63A5\u6570\u636E\u5E93\u89C6\u56FE"}],tn=[{value:"SQL collection \u63D0\u4F9B\u4E86\u4E00\u79CD\u901A\u8FC7 SQL \u8BED\u53E5\u83B7\u53D6\u6570\u636E\u7684\u65B9\u6CD5\u3002\u901A\u8FC7 SQL \u8BED\u53E5\u83B7\u53D6\u6570\u636E\u5B57\u6BB5\uFF0C\u914D\u7F6E\u5B57\u6BB5\u5143\u6570\u636E\u4E4B\u540E\uFF0C\u7528\u6237\u53EF\u4EE5\u50CF\u4F7F\u7528\u666E\u901A\u8868\u4E00\u6837\uFF0C\u7ED9\u8868\u683C\u3001\u56FE\u8868\u3001\u5DE5\u4F5C\u6D41\u7B49\u4F7F\u7528\uFF0C\u9002\u7528\u4E8E\u5173\u8054\u67E5\u8BE2\u3001\u7EDF\u8BA1\u7B49\u573A\u666F\u3002",paraId:0,tocIndex:1},{value:"\u5728 SQL \u8F93\u5165\u6846\u8F93\u5165 SQL \u8BED\u53E5\u540E\uFF0C\u70B9\u51FB\u6267\u884C (Execute) \u540E\uFF0C\u7CFB\u7EDF\u5C06\u4F1A\u5C1D\u8BD5\u89E3\u6790 SQL \u4F7F\u7528\u4E86\u54EA\u4E9B\u8868\u548C\u5B57\u6BB5\uFF0C\u4ECE\u6765\u6E90\u8868\u4E2D\u89E3\u6790\u51FA\u5B57\u6BB5\u5143\u6570\u636E\u3002",paraId:1,tocIndex:2},{value:"\u5982\u679C\u7CFB\u7EDF\u81EA\u52A8\u5206\u6790\u7684\u6765\u6E90\u8868\u548C\u5B57\u6BB5\u4E0D\u5BF9\uFF0C\u53EF\u4EE5\u624B\u52A8\u9009\u62E9\u5BF9\u5E94\u7684\u8868\u548C\u5B57\u6BB5\uFF0C\u6765\u4F7F\u7528\u5BF9\u5E94\u5B57\u6BB5\u7684\u5143\u6570\u636E\u3002\u9700\u8981\u5148\u9009\u62E9\u6765\u6E90\u8868\uFF0C\u624D\u80FD\u5728\u4E0B\u65B9\u7684\u5B57\u6BB5\u6765\u6E90\u4E2D\u9009\u62E9\u8BE5\u8868\u7684\u5B57\u6BB5\u3002",paraId:2,tocIndex:2},{value:"\u5982\u679C\u5B57\u6BB5\u6CA1\u6709\u5BF9\u5E94\u7684\u6765\u6E90\u5B57\u6BB5\uFF0C\u7CFB\u7EDF\u4F1A\u6839\u636E\u6570\u636E\u7C7B\u578B\u63A8\u65AD\u5B57\u6BB5\u7C7B\u578B\uFF0C\u5982\u679C\u63A8\u65AD\u7ED3\u679C\u4E0D\u5BF9\uFF0C\u53EF\u4EE5\u624B\u52A8\u9009\u62E9\u5B57\u6BB5\u7C7B\u578B\u3002",paraId:3,tocIndex:2},{value:"\u5728\u914D\u7F6E\u5B57\u6BB5\u7684\u540C\u65F6\u53EF\u4EE5\u5728\u9884\u89C8\u533A\u57DF\u770B\u5230\u5BF9\u5E94\u7684\u5C55\u793A\u6548\u679C\u3002",paraId:4,tocIndex:2},{value:"\u914D\u7F6E\u5B8C\u6210\uFF0C\u786E\u8BA4\u65E0\u8BEF\u4E4B\u540E\uFF0C\u9700\u8981\u70B9\u51FB SQL \u8F93\u5165\u6846\u4E0B\u65B9\u7684\u786E\u8BA4 (Confirm) \u6309\u94AE\u624D\u80FD\u8FDB\u884C\u6700\u540E\u7684\u63D0\u4EA4\u3002",paraId:5,tocIndex:2},{value:"SQL \u8BED\u53E5\u6709\u53D8\u5316\u65F6\uFF0C\u53EF\u4EE5\u70B9\u51FB\u4FEE\u6539 (Edit) \u6309\u94AE\uFF0C\u76F4\u63A5\u4FEE\u6539 SQL \u8BED\u53E5\uFF0C\u91CD\u65B0\u914D\u7F6E\u5B57\u6BB5\u3002",paraId:6,tocIndex:3},{value:"\u9700\u8981\u4FEE\u6539\u5B57\u6BB5\u5143\u6570\u636E\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u914D\u7F6E\u5B57\u6BB5 (Configure fields), \u50CF\u666E\u901A\u8868\u4E00\u6837\u4FEE\u6539\u5B57\u6BB5\u76F8\u5173\u914D\u7F6E\u3002",paraId:6,tocIndex:3},{value:"SQL \u8BED\u53E5\u65E0\u53D8\u5316\uFF0C\u4F46\u6570\u636E\u5E93\u8868\u7ED3\u6784\u6709\u53D8\u5316\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u70B9\u51FB\u914D\u7F6E\u5B57\u6BB5 (Configure fields) - \u4ECE\u6570\u636E\u5E93\u540C\u6B65 (Sync from database) \u5BF9\u5B57\u6BB5\u8FDB\u884C\u540C\u6B65\u548C\u914D\u7F6E\u3002",paraId:7,tocIndex:4},{value:"\u6A21\u677F\u7C7B\u578B",paraId:8,tocIndex:5},{value:"\u9002\u7528\u573A\u666F",paraId:8,tocIndex:5},{value:"\u5B9E\u73B0\u539F\u7406",paraId:8,tocIndex:5},{value:"\u589E\u5220\u6539\u652F\u6301",paraId:8,tocIndex:5},{value:"SQL",paraId:8,tocIndex:5},{value:"\u6A21\u578B\u6BD4\u8F83\u7B80\u5355\uFF0C\u8F83\u8F7B\u91CF\u573A\u666F\u4E0D\u65B9\u4FBF\u64CD\u4F5C\u6570\u636E\u5E93\u4E0D\u60F3\u7EF4\u62A4\u89C6\u56FE\u60F3\u5B8C\u5168\u901A\u8FC7 UI \u64CD\u4F5C",paraId:8,tocIndex:5},{value:"SQL \u5B50\u67E5\u8BE2",paraId:8,tocIndex:5},{value:"\u4E0D\u652F\u6301",paraId:8,tocIndex:5},{value:"\u8FDE\u63A5\u6570\u636E\u5E93\u89C6\u56FE",paraId:8,tocIndex:5},{value:"\u6A21\u578B\u6BD4\u8F83\u590D\u6742\u9700\u8981\u548C\u6570\u636E\u5E93\u4EA4\u4E92\u9700\u8981\u4FEE\u6539\u6570\u636E\u9700\u8981\u66F4\u826F\u597D\u548C\u7A33\u5B9A\u7684\u6570\u636E\u5E93\u652F\u6301",paraId:8,tocIndex:5},{value:"\u6570\u636E\u5E93\u89C6\u56FE",paraId:8,tocIndex:5},{value:"\u90E8\u5206\u652F\u6301",paraId:8,tocIndex:5}],Lt={},St={title:"China Region",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/choices/china-region.md",lastUpdated:173254844e4,description:"to be added."},wt=[{id:"china-region",depth:1,title:"China Region"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],ge=[{value:"to be added.",paraId:0,tocIndex:3}],ke={},qe={title:"Radio Group",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/choices/radio-group.md",lastUpdated:173254844e4,description:"to be added."},He=[{id:"radio-group",depth:1,title:"Radio Group"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],fa=[{value:"to be added.",paraId:0,tocIndex:3}],sa={},qa={title:"\u7EA7\u8054\u9009\u62E9\u5668",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/cascade-select/index.md",lastUpdated:173254844e4,description:"\u7EA7\u8054\u9009\u62E9\u5668\u7528\u4E8E\u5173\u7CFB\u5B57\u6BB5\u76EE\u6807\u8868\u4E3A\u6811\u8868\u65F6\uFF0C\u63D0\u4F9B\u7684\u4FBF\u6377\u7684\u6570\u636E\u9009\u62E9\u65B9\u5F0F\u3002\u6309\u7167\u6811\u8868\u6570\u636E\u7684\u5C42\u6B21\u7ED3\u6784\u9009\u62E9\u76F8\u5173\u6570\u636E\u9879\u3002\u652F\u6301\u5B50\u6570\u636E\u7684\u641C\u7D22\u8FC7\u6EE4"},wa=[{id:"\u7EA7\u8054\u9009\u62E9\u5668",depth:1,title:"\u7EA7\u8054\u9009\u62E9\u5668"}],Wa=[{value:"\u7EA7\u8054\u9009\u62E9\u5668\u7528\u4E8E\u5173\u7CFB\u5B57\u6BB5\u76EE\u6807\u8868\u4E3A",paraId:0,tocIndex:0},{value:"\u6811\u8868",paraId:0,tocIndex:0},{value:"\u65F6\uFF0C\u63D0\u4F9B\u7684\u4FBF\u6377\u7684\u6570\u636E\u9009\u62E9\u65B9\u5F0F\u3002\u6309\u7167\u6811\u8868\u6570\u636E\u7684\u5C42\u6B21\u7ED3\u6784\u9009\u62E9\u76F8\u5173\u6570\u636E\u9879\u3002\u652F\u6301\u5B50\u6570\u636E\u7684\u641C\u7D22\u8FC7\u6EE4",paraId:0,tocIndex:0},{value:"\u5982\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u6A21\u578B\u4E2D\uFF0C\u4EFB\u52A1\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u90E8\u95E8\u300D\uFF08\u591A\u5BF9\u591A\uFF09\uFF0C\u300C\u9879\u76EE\u300D\uFF08\u591A\u5BF9\u4E00\uFF09\uFF0C\u90E8\u95E8\u8868\u548C\u9879\u76EE\u8868\u5747\u4E3A\u6811\u8868",paraId:1,tocIndex:0},{value:"\u5173\u7CFB\u4E3A\u5BF9\u4E00\uFF0C\u7EA7\u8054\u4E3A\u5355\u9009",paraId:2,tocIndex:0},{value:"\u5173\u7CFB\u4E3A\u5BF9\u591A\uFF0C\u7EA7\u8054\u4E3A\u591A\u9009\uFF0C\u652F\u6301\u62D6\u62FD\u6392\u5E8F",paraId:3,tocIndex:0}],ut={},Ya={title:"\u6807\u7B7E",toc:"menu",filename:"docs/en-US/plugins/collection-manager/user/association-fields/tag/index.md",lastUpdated:173254844e4,description:"\u6807\u7B7E\u662F\u7528\u6765\u5728\u6570\u636E\u5C55\u793A\u4E2D\u66F4\u597D\u5730\u5206\u7C7B\u548C\u6807\u8BC6\u5173\u7CFB\u4FE1\u606F\u7684\u7EC4\u4EF6\u3002\u8BA9\u7528\u6237\u66F4\u8F7B\u677E\u5730\u8BC6\u522B\u4E0D\u540C\u7C7B\u522B\u7684\u6570\u636E\uFF0C\u63D0\u5347\u6D4F\u89C8\u6548\u7387\u548C\u6570\u636E\u7406\u89E3\u3002 \u5728\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u6A21\u578B\u4E2D\uFF0C\u4EFB\u52A1\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u4EFB\u52A1\u8FDB\u5EA6\u300D\uFF08\u4E00\u5BF9\u591A\uFF09"},tt=[{id:"\u6807\u7B7E",depth:1,title:"\u6807\u7B7E"}],dt=[{value:"\u6807\u7B7E\u662F\u7528\u6765\u5728\u6570\u636E\u5C55\u793A\u4E2D\u66F4\u597D\u5730\u5206\u7C7B\u548C\u6807\u8BC6\u5173\u7CFB\u4FE1\u606F\u7684\u7EC4\u4EF6\u3002\u8BA9\u7528\u6237\u66F4\u8F7B\u677E\u5730\u8BC6\u522B\u4E0D\u540C\u7C7B\u522B\u7684\u6570\u636E\uFF0C\u63D0\u5347\u6D4F\u89C8\u6548\u7387\u548C\u6570\u636E\u7406\u89E3\u3002 \u5728\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u6A21\u578B\u4E2D\uFF0C\u4EFB\u52A1\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u4EFB\u52A1\u8FDB\u5EA6\u300D\uFF08\u4E00\u5BF9\u591A\uFF09",paraId:0,tocIndex:0},{value:"\u9700\u8981\u914D\u7F6E\u6807\u7B7E\u7684\u989C\u8272\u5B57\u6BB5\uFF08\u4ECE\u76EE\u6807\u8868\u4E2D\u9009\u62E9\uFF09",paraId:1,tocIndex:0}],rt={},pt={title:"BelongsToManyRepository",toc:"menu",filename:"docs/en-US/api/database/relation-repository/belongs-to-many-repository.md",lastUpdated:173254844e4,description:"BelongsToManyRepository is the Relation Repository for handling BelongsToMany relationships."},Nt=[{id:"belongstomanyrepository",depth:1,title:"BelongsToManyRepository"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"find",depth:3,title:"find()"},{id:"findone",depth:3,title:"findOne()"},{id:"count",depth:3,title:"count()"},{id:"findandcount",depth:3,title:"findAndCount()"},{id:"create",depth:3,title:"create()"},{id:"update",depth:3,title:"update()"},{id:"destroy",depth:3,title:"destroy()"},{id:"add",depth:3,title:"add()"},{id:"set",depth:3,title:"set()"},{id:"remove",depth:3,title:"remove()"},{id:"toggle",depth:3,title:"toggle()"}],Mt=[{value:"BelongsToManyRepository",paraId:0,tocIndex:0},{value:" is the ",paraId:0,tocIndex:0},{value:"Relation Repository",paraId:0,tocIndex:0},{value:" for handling ",paraId:0,tocIndex:0},{value:"BelongsToMany",paraId:0,tocIndex:0},{value:" relationships.",paraId:0,tocIndex:0},{value:"Unlike other relationship types, the ",paraId:1,tocIndex:0},{value:"BelongsToMany",paraId:1,tocIndex:0},{value:" type of relationship needs to be recorded through an intermediate table. The intermediate table can be created automatically or explicitly specified when defining association relationships in NocoBase.",paraId:1,tocIndex:0},{value:"find()",paraId:2},{value:"Find associated objects.",paraId:3,tocIndex:2},{value:"Signature",paraId:4,tocIndex:2},{value:"async find(options?: FindOptions): Promise",paraId:5,tocIndex:2},{value:"Detailed Information",paraId:6,tocIndex:2},{value:"Query parameters are the same as ",paraId:7,tocIndex:2},{value:"Repository.find()",paraId:8,tocIndex:2},{value:".",paraId:7,tocIndex:2},{value:"findOne()",paraId:2},{value:"Find associated objects, only to return one record.",paraId:9,tocIndex:3},{value:"Signature",paraId:10,tocIndex:3},{value:"async findOne(options?: FindOneOptions): Promise",paraId:11,tocIndex:3},{value:"\u7C7B\u578B",paraId:12,tocIndex:3},{value:`type FindOneOptions = Omit; `,paraId:13,tocIndex:3},{value:"\u53C2\u6570",paraId:14,tocIndex:3},{value:"\u5927\u90E8\u5206\u53C2\u6570\u4E0E ",paraId:15,tocIndex:3},{value:"find()",paraId:15,tocIndex:3},{value:" \u76F8\u540C\uFF0C\u4E0D\u540C\u4E4B\u5904\u5728\u4E8E ",paraId:15,tocIndex:3},{value:"findOne()",paraId:15,tocIndex:3},{value:" \u53EA\u8FD4\u56DE\u5355\u6761\u6570\u636E\uFF0C\u6240\u4EE5\u4E0D\u9700\u8981 ",paraId:15,tocIndex:3},{value:"limit",paraId:15,tocIndex:3},{value:" \u53C2\u6570\uFF0C\u4E14\u67E5\u8BE2\u65F6\u59CB\u7EC8\u4E3A ",paraId:15,tocIndex:3},{value:"1",paraId:15,tocIndex:3},{value:"\u3002",paraId:15,tocIndex:3},{value:"count()",paraId:2},{value:"Return the number of records matching the query criteria.",paraId:16,tocIndex:4},{value:"Signature",paraId:17,tocIndex:4},{value:"async count(options?: CountOptions)",paraId:18,tocIndex:4},{value:"Type",paraId:19,tocIndex:4},{value:`interface CountOptions extends Omit, Transactionable { @@ -142,7 +142,7 @@ options: TargetKey | TargetKey[] | PrimaryKeyWithThroughValues | PrimaryKeyWithT ): Promise`,paraId:61,tocIndex:10},{value:"Detailed Information",paraId:62,tocIndex:10},{value:"Parameters are the same as ",paraId:63,tocIndex:10},{value:"add()",paraId:64,tocIndex:10},{value:".",paraId:63,tocIndex:10},{value:"remove()",paraId:2},{value:"Remove the association with the given objects.",paraId:65,tocIndex:11},{value:"Signature",paraId:66,tocIndex:11},{value:"async remove(options: TargetKey | TargetKey[] | AssociatedOptions)",paraId:67,tocIndex:11},{value:"Type",paraId:68,tocIndex:11},{value:`interface AssociatedOptions extends Transactionable { tk?: TargetKey | TargetKey[]; } -`,paraId:69,tocIndex:11},{value:"toggle()",paraId:2},{value:"Toggle the associated object.",paraId:70,tocIndex:12},{value:"In some business scenarios, it is often needed to toggle the associated object. For example, user adds a product into collection, and the user cancels the collection and collect it again. Using the ",paraId:71,tocIndex:12},{value:"toggle",paraId:71,tocIndex:12},{value:" method can quickly implement similar functions.",paraId:71,tocIndex:12},{value:"Signature",paraId:72,tocIndex:12},{value:"async toggle(options: TargetKey | { tk?: TargetKey; transaction?: Transaction }): Promise",paraId:73,tocIndex:12},{value:"Detailed Information",paraId:74,tocIndex:12},{value:"The ",paraId:75,tocIndex:12},{value:"toggle",paraId:75,tocIndex:12},{value:" method automatically checks whether the associated object already exists, and removes it if it does, or adds it if it does not.",paraId:75,tocIndex:12}],Pt={},en={title:"Submit to Workflow",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/submit-to-workflow.md",lastUpdated:1732240239e3,description:"The Submit to Workflow operation is implemented via plugin extensions."},on=[{id:"submit-to-workflow",depth:1,title:"Submit to Workflow"}],vn=[{value:"The Submit to Workflow operation is implemented via plugin extensions.",paraId:0,tocIndex:0},{value:"Addition and update forms support the configuration and triggering of submission to workflows.",paraId:1,tocIndex:0},{value:"Multiple workflows can be triggered with one button click, each selecting a different workflow and data context (data is not restricted, and users are responsible for ensuring this).",paraId:1,tocIndex:0},{value:'Form button triggers only support the new workflow type "Form Event."',paraId:1,tocIndex:0},{value:"For more details, refer to the Plugin Documentation.",paraId:2,tocIndex:0}],pn={},Gt={title:"Relationship Fields",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/associations/index.md",lastUpdated:1732240239e3,description:"In NocoBase, relationship fields are not actual fields but are used to establish connections between collections. This concept is equivalent to relationships in relational databases."},Et=[{id:"relationship-fields",depth:1,title:"Relationship Fields"}],Rt=[{value:"In NocoBase, relationship fields are not actual fields but are used to establish connections between collections. This concept is equivalent to relationships in relational databases.",paraId:0,tocIndex:0},{value:"In relational databases, the most common types of relationships include the following:",paraId:1,tocIndex:0},{value:"One-to-One",paraId:2,tocIndex:0},{value:": Each entity in two collections corresponds to only one entity in the other collection. This type of relationship is usually used to store different aspects of an entity in separate collections to reduce redundancy and improve data consistency.",paraId:3,tocIndex:0},{value:"One-to-Many",paraId:4,tocIndex:0},{value:": Each entity in one collection can be associated with multiple entities in another collection. This is one of the most common relationship types. For example, one author can write multiple articles, but each article can have only one author.",paraId:3,tocIndex:0},{value:"Many-to-One",paraId:5,tocIndex:0},{value:": Multiple entities in one collection can be associated with one entity in another collection. This type of relationship is also common in data modeling. For instance, multiple students can belong to the same class.",paraId:3,tocIndex:0},{value:"Many-to-Many",paraId:6,tocIndex:0},{value:": Multiple entities in two collections can be associated with each other. This type of relationship typically requires an intermediary collection to record the associations between the entities. For example, the relationship between students and courses\u2014a student can enroll in multiple courses, and a course can have multiple students.",paraId:3,tocIndex:0},{value:"These types of relationships play an important role in database design and data modeling, helping to describe complex real-world relationships and data structures.",paraId:7,tocIndex:0}],it={},Dt={title:"\u6570\u636E\u9009\u62E9\u5668",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/record-picker/index.md",lastUpdated:1732240239e3,description:"\u6570\u636E\u9009\u62E9\u5668\u7528\u4E8E\u4ECE\u76F8\u5173\u6570\u636E\u4E2D\u9009\u62E9\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u9879\u3002\u5B83\u4E0E\u4E0B\u62C9\u9009\u62E9\u5668\u7C7B\u4F3C\uFF0C\u4F46\u63D0\u4F9B\u4E86\u66F4\u5927\u7684\u7075\u6D3B\u6027\u548C\u529F\u80FD\uFF0C\u4F7F\u7528\u6237\u80FD\u591F\u66F4\u7CBE\u786E\u5730\u9009\u62E9\u5173\u8054\u6570\u636E\uFF0C\u53EF\u4EE5\u5728\u6570\u636E\u9009\u62E9\u5668\u4E2D\u914D\u7F6E\u66F4\u591A\u5173\u8054\u4FE1\u606F\u5B57\u6BB5\uFF08\u5173\u7CFB\u7684\u5173\u7CFB\u6570\u636E\uFF09\uFF0C\u65B9\u4FBF\u7528\u6237\u7CBE\u51C6\u9009\u62E9\u6570\u636E\u3002"},Ht=[{id:"\u6570\u636E\u9009\u62E9\u5668",depth:1,title:"\u6570\u636E\u9009\u62E9\u5668"}],ot=[{value:"\u6570\u636E\u9009\u62E9\u5668\u7528\u4E8E\u4ECE\u76F8\u5173\u6570\u636E\u4E2D\u9009\u62E9\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u9879\u3002\u5B83\u4E0E\u4E0B\u62C9\u9009\u62E9\u5668\u7C7B\u4F3C\uFF0C\u4F46\u63D0\u4F9B\u4E86\u66F4\u5927\u7684\u7075\u6D3B\u6027\u548C\u529F\u80FD\uFF0C\u4F7F\u7528\u6237\u80FD\u591F\u66F4\u7CBE\u786E\u5730\u9009\u62E9\u5173\u8054\u6570\u636E\uFF0C\u53EF\u4EE5\u5728\u6570\u636E\u9009\u62E9\u5668\u4E2D\u914D\u7F6E\u66F4\u591A\u5173\u8054\u4FE1\u606F\u5B57\u6BB5\uFF08\u5173\u7CFB\u7684\u5173\u7CFB\u6570\u636E\uFF09\uFF0C\u65B9\u4FBF\u7528\u6237\u7CBE\u51C6\u9009\u62E9\u6570\u636E\u3002",paraId:0,tocIndex:0},{value:"\u901A\u8FC7\u6570\u636E\u9009\u62E9\u5668\u9009\u62E9\u5173\u8054\u6570\u636E",paraId:1,tocIndex:0},{value:"\u6570\u636E\u9009\u62E9\u5668\u4EE5\u5F39\u7A97\u5F62\u5F0F\u5C55\u793A\u5173\u7CFB\u6570\u636E\uFF0C\u5728\u8868\u683C\u533A\u5757\u4E2D\u53EF\u4EE5\u914D\u7F6E\u66F4\u591A\u76EE\u6807\u8868\u5B57\u6BB5",paraId:2,tocIndex:0},{value:"\u901A\u8FC7\u6570\u636E\u9009\u62E9\u5668\uFF0C\u4E0D\u4EC5\u53EF\u4EE5\u9009\u62E9\u5173\u8054\u6570\u636E\uFF0C\u8FD8\u53EF\u5BF9\u5173\u7CFB\u76EE\u6807\u8868\u8FDB\u4E00\u6B65\u7BA1\u7406\uFF08\u65B0\u589E\u3001\u5220\u9664\u3001\u5BFC\u5165\u5BFC\u51FA\u7B49\uFF09",paraId:3,tocIndex:0}],Wt={},Jt={title:"Datetime\uFF08with time zone\uFF09",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/datetime/datetime.md",lastUpdated:1732240239e3,description:"to be added."},Cn=[{id:"datetimewith-time-zone",depth:1,title:"Datetime\uFF08with time zone\uFF09"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Qn=[{value:"to be added.",paraId:0,tocIndex:3}],Fn={},Io={title:"Polygon",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/geometric/polygon.md",lastUpdated:1732240239e3,description:"to be added."},jn=[{id:"polygon",depth:1,title:"Polygon"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],An=[{value:"to be added.",paraId:0,tocIndex:3}],Hn={},Ft={title:"\u6587\u4EF6\u7BA1\u7406\u5668",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/file-manager/index.md",lastUpdated:1732240239e3,description:"\u6587\u4EF6\u7BA1\u7406\u5668\u662F\u4E13\u95E8\u7528\u4E8E\u5904\u7406\u5173\u7CFB\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u7684\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u3002"},In=[{id:"\u6587\u4EF6\u7BA1\u7406\u5668",depth:1,title:"\u6587\u4EF6\u7BA1\u7406\u5668"}],cn=[{value:"\u6587\u4EF6\u7BA1\u7406\u5668\u662F\u4E13\u95E8\u7528\u4E8E\u5904\u7406\u5173\u7CFB\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u7684\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u3002",paraId:0,tocIndex:0},{value:"\u5982\u5728\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u6A21\u578B\u4E2D\uFF0C\u4EFB\u52A1\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u9644\u4EF6\u300D\uFF08\u4E00\u5BF9\u4E00\uFF09\uFF0C\u5F53\u5173\u7CFB\u5B57\u6BB5\u7684\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u65F6\uFF0C\u9ED8\u8BA4\u5B57\u6BB5\u7EC4\u4EF6\u4E3A\u6587\u4EF6\u7BA1\u7406\u5668",paraId:1,tocIndex:0},{value:"\u53EF\u4EE5\u901A\u8FC7\u6587\u4EF6\u7BA1\u7406\u5668\u7EC4\u4EF6\u6765\u7BA1\u7406\u4E0E\u5F53\u524D\u4EFB\u52A1\u5173\u8054\u7684\u9644\u4EF6\u6587\u4EF6\u3002",paraId:2,tocIndex:0},{value:"\u901A\u8FC7\u4E0A\u4F20\u6309\u94AE\u5C06\u65B0\u6587\u4EF6\u4E0A\u4F20\u6DFB\u52A0\u540E\u5173\u8054\uFF08\u5FEB\u901F\u4E0A\u4F20\uFF09",paraId:3,tocIndex:0},{value:"\u70B9\u51FB\u9009\u62E9\u4ECE\u5DF2\u6709\u7684\u9644\u4EF6\u5217\u8868\u4E2D\u9009\u62E9\u8981\u5173\u8054\u7684\u9644\u4EF6\uFF08\u9009\u62E9\u6587\u4EF6 )",paraId:3,tocIndex:0}],Pn={},En={title:"Add Plugin Setting Page (Different Layout)",toc:"menu",filename:"docs/en-US/plugin-samples/router/add-setting-page-layout-routes/index.md",lastUpdated:1732240239e3,description:"The plugin requires multiple configuration pages, and some pages are not under AdminSettingsLayout, usually for detail pages, such as the @nocobase/plugin-mobile-client plugin or the @nocobase/plugin-workflow."},sn=[{id:"add-plugin-setting-page-different-layout",depth:1,title:"Add Plugin Setting Page (Different Layout)"},{id:"description",depth:2,title:"Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"function-implementation",depth:2,title:"Function Implementation"},{id:"1--register-the-plugin-setting-page",depth:3,title:"1. Register the Plugin Setting Page"},{id:"2--add-detail-page",depth:3,title:"2. Add Detail Page"},{id:"permission-configuration",depth:2,title:"Permission Configuration"},{id:"packaging-and-uploading-to-production-environment",depth:2,title:"Packaging and Uploading to Production Environment"}],Dn=[{value:"The plugin requires multiple configuration pages, and some pages are not under ",paraId:0,tocIndex:1},{value:"AdminSettingsLayout",paraId:1,tocIndex:1},{value:", usually for detail pages, such as the ",paraId:0,tocIndex:1},{value:"@nocobase/plugin-mobile-client",paraId:0,tocIndex:1},{value:" plugin or the ",paraId:0,tocIndex:1},{value:"@nocobase/plugin-workflow",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:"This example will have a configuration page, and inside the configuration page, there will be a detail link that, when clicked, will navigate to a new page.",paraId:2,tocIndex:2},{value:"This document will not go into much detail about the content development. It is only used to demonstrate how to add a plugin configuration page. For specific content and logic of the configuration page, please refer to the ",paraId:3,tocIndex:2},{value:"Plugin Settings plugin example",paraId:4,tocIndex:2},{value:" documentation.",paraId:3,tocIndex:2},{value:"You can find the complete example code for this document in the ",paraId:5,tocIndex:2},{value:"plugin-samples",paraId:5,tocIndex:2},{value:" repository.",paraId:5,tocIndex:2},{value:` +`,paraId:69,tocIndex:11},{value:"toggle()",paraId:2},{value:"Toggle the associated object.",paraId:70,tocIndex:12},{value:"In some business scenarios, it is often needed to toggle the associated object. For example, user adds a product into collection, and the user cancels the collection and collect it again. Using the ",paraId:71,tocIndex:12},{value:"toggle",paraId:71,tocIndex:12},{value:" method can quickly implement similar functions.",paraId:71,tocIndex:12},{value:"Signature",paraId:72,tocIndex:12},{value:"async toggle(options: TargetKey | { tk?: TargetKey; transaction?: Transaction }): Promise",paraId:73,tocIndex:12},{value:"Detailed Information",paraId:74,tocIndex:12},{value:"The ",paraId:75,tocIndex:12},{value:"toggle",paraId:75,tocIndex:12},{value:" method automatically checks whether the associated object already exists, and removes it if it does, or adds it if it does not.",paraId:75,tocIndex:12}],Pt={},en={title:"Submit to Workflow",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/submit-to-workflow.md",lastUpdated:173254844e4,description:"The Submit to Workflow operation is implemented via plugin extensions."},on=[{id:"submit-to-workflow",depth:1,title:"Submit to Workflow"}],vn=[{value:"The Submit to Workflow operation is implemented via plugin extensions.",paraId:0,tocIndex:0},{value:"Addition and update forms support the configuration and triggering of submission to workflows.",paraId:1,tocIndex:0},{value:"Multiple workflows can be triggered with one button click, each selecting a different workflow and data context (data is not restricted, and users are responsible for ensuring this).",paraId:1,tocIndex:0},{value:'Form button triggers only support the new workflow type "Form Event."',paraId:1,tocIndex:0},{value:"For more details, refer to the Plugin Documentation.",paraId:2,tocIndex:0}],pn={},Gt={title:"Relationship Fields",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/associations/index.md",lastUpdated:173254844e4,description:"In NocoBase, relationship fields are not actual fields but are used to establish connections between collections. This concept is equivalent to relationships in relational databases."},Et=[{id:"relationship-fields",depth:1,title:"Relationship Fields"}],Rt=[{value:"In NocoBase, relationship fields are not actual fields but are used to establish connections between collections. This concept is equivalent to relationships in relational databases.",paraId:0,tocIndex:0},{value:"In relational databases, the most common types of relationships include the following:",paraId:1,tocIndex:0},{value:"One-to-One",paraId:2,tocIndex:0},{value:": Each entity in two collections corresponds to only one entity in the other collection. This type of relationship is usually used to store different aspects of an entity in separate collections to reduce redundancy and improve data consistency.",paraId:3,tocIndex:0},{value:"One-to-Many",paraId:4,tocIndex:0},{value:": Each entity in one collection can be associated with multiple entities in another collection. This is one of the most common relationship types. For example, one author can write multiple articles, but each article can have only one author.",paraId:3,tocIndex:0},{value:"Many-to-One",paraId:5,tocIndex:0},{value:": Multiple entities in one collection can be associated with one entity in another collection. This type of relationship is also common in data modeling. For instance, multiple students can belong to the same class.",paraId:3,tocIndex:0},{value:"Many-to-Many",paraId:6,tocIndex:0},{value:": Multiple entities in two collections can be associated with each other. This type of relationship typically requires an intermediary collection to record the associations between the entities. For example, the relationship between students and courses\u2014a student can enroll in multiple courses, and a course can have multiple students.",paraId:3,tocIndex:0},{value:"These types of relationships play an important role in database design and data modeling, helping to describe complex real-world relationships and data structures.",paraId:7,tocIndex:0}],it={},Dt={title:"\u6570\u636E\u9009\u62E9\u5668",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/record-picker/index.md",lastUpdated:173254844e4,description:"\u6570\u636E\u9009\u62E9\u5668\u7528\u4E8E\u4ECE\u76F8\u5173\u6570\u636E\u4E2D\u9009\u62E9\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u9879\u3002\u5B83\u4E0E\u4E0B\u62C9\u9009\u62E9\u5668\u7C7B\u4F3C\uFF0C\u4F46\u63D0\u4F9B\u4E86\u66F4\u5927\u7684\u7075\u6D3B\u6027\u548C\u529F\u80FD\uFF0C\u4F7F\u7528\u6237\u80FD\u591F\u66F4\u7CBE\u786E\u5730\u9009\u62E9\u5173\u8054\u6570\u636E\uFF0C\u53EF\u4EE5\u5728\u6570\u636E\u9009\u62E9\u5668\u4E2D\u914D\u7F6E\u66F4\u591A\u5173\u8054\u4FE1\u606F\u5B57\u6BB5\uFF08\u5173\u7CFB\u7684\u5173\u7CFB\u6570\u636E\uFF09\uFF0C\u65B9\u4FBF\u7528\u6237\u7CBE\u51C6\u9009\u62E9\u6570\u636E\u3002"},Ht=[{id:"\u6570\u636E\u9009\u62E9\u5668",depth:1,title:"\u6570\u636E\u9009\u62E9\u5668"}],ot=[{value:"\u6570\u636E\u9009\u62E9\u5668\u7528\u4E8E\u4ECE\u76F8\u5173\u6570\u636E\u4E2D\u9009\u62E9\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u9879\u3002\u5B83\u4E0E\u4E0B\u62C9\u9009\u62E9\u5668\u7C7B\u4F3C\uFF0C\u4F46\u63D0\u4F9B\u4E86\u66F4\u5927\u7684\u7075\u6D3B\u6027\u548C\u529F\u80FD\uFF0C\u4F7F\u7528\u6237\u80FD\u591F\u66F4\u7CBE\u786E\u5730\u9009\u62E9\u5173\u8054\u6570\u636E\uFF0C\u53EF\u4EE5\u5728\u6570\u636E\u9009\u62E9\u5668\u4E2D\u914D\u7F6E\u66F4\u591A\u5173\u8054\u4FE1\u606F\u5B57\u6BB5\uFF08\u5173\u7CFB\u7684\u5173\u7CFB\u6570\u636E\uFF09\uFF0C\u65B9\u4FBF\u7528\u6237\u7CBE\u51C6\u9009\u62E9\u6570\u636E\u3002",paraId:0,tocIndex:0},{value:"\u901A\u8FC7\u6570\u636E\u9009\u62E9\u5668\u9009\u62E9\u5173\u8054\u6570\u636E",paraId:1,tocIndex:0},{value:"\u6570\u636E\u9009\u62E9\u5668\u4EE5\u5F39\u7A97\u5F62\u5F0F\u5C55\u793A\u5173\u7CFB\u6570\u636E\uFF0C\u5728\u8868\u683C\u533A\u5757\u4E2D\u53EF\u4EE5\u914D\u7F6E\u66F4\u591A\u76EE\u6807\u8868\u5B57\u6BB5",paraId:2,tocIndex:0},{value:"\u901A\u8FC7\u6570\u636E\u9009\u62E9\u5668\uFF0C\u4E0D\u4EC5\u53EF\u4EE5\u9009\u62E9\u5173\u8054\u6570\u636E\uFF0C\u8FD8\u53EF\u5BF9\u5173\u7CFB\u76EE\u6807\u8868\u8FDB\u4E00\u6B65\u7BA1\u7406\uFF08\u65B0\u589E\u3001\u5220\u9664\u3001\u5BFC\u5165\u5BFC\u51FA\u7B49\uFF09",paraId:3,tocIndex:0}],Wt={},Jt={title:"Datetime\uFF08with time zone\uFF09",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/datetime/datetime.md",lastUpdated:173254844e4,description:"to be added."},Cn=[{id:"datetimewith-time-zone",depth:1,title:"Datetime\uFF08with time zone\uFF09"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Qn=[{value:"to be added.",paraId:0,tocIndex:3}],Fn={},Io={title:"Polygon",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/geometric/polygon.md",lastUpdated:173254844e4,description:"to be added."},jn=[{id:"polygon",depth:1,title:"Polygon"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],An=[{value:"to be added.",paraId:0,tocIndex:3}],Hn={},Ft={title:"\u6587\u4EF6\u7BA1\u7406\u5668",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/file-manager/index.md",lastUpdated:173254844e4,description:"\u6587\u4EF6\u7BA1\u7406\u5668\u662F\u4E13\u95E8\u7528\u4E8E\u5904\u7406\u5173\u7CFB\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u7684\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u3002"},In=[{id:"\u6587\u4EF6\u7BA1\u7406\u5668",depth:1,title:"\u6587\u4EF6\u7BA1\u7406\u5668"}],cn=[{value:"\u6587\u4EF6\u7BA1\u7406\u5668\u662F\u4E13\u95E8\u7528\u4E8E\u5904\u7406\u5173\u7CFB\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u7684\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u3002",paraId:0,tocIndex:0},{value:"\u5982\u5728\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u6A21\u578B\u4E2D\uFF0C\u4EFB\u52A1\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u9644\u4EF6\u300D\uFF08\u4E00\u5BF9\u4E00\uFF09\uFF0C\u5F53\u5173\u7CFB\u5B57\u6BB5\u7684\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u65F6\uFF0C\u9ED8\u8BA4\u5B57\u6BB5\u7EC4\u4EF6\u4E3A\u6587\u4EF6\u7BA1\u7406\u5668",paraId:1,tocIndex:0},{value:"\u53EF\u4EE5\u901A\u8FC7\u6587\u4EF6\u7BA1\u7406\u5668\u7EC4\u4EF6\u6765\u7BA1\u7406\u4E0E\u5F53\u524D\u4EFB\u52A1\u5173\u8054\u7684\u9644\u4EF6\u6587\u4EF6\u3002",paraId:2,tocIndex:0},{value:"\u901A\u8FC7\u4E0A\u4F20\u6309\u94AE\u5C06\u65B0\u6587\u4EF6\u4E0A\u4F20\u6DFB\u52A0\u540E\u5173\u8054\uFF08\u5FEB\u901F\u4E0A\u4F20\uFF09",paraId:3,tocIndex:0},{value:"\u70B9\u51FB\u9009\u62E9\u4ECE\u5DF2\u6709\u7684\u9644\u4EF6\u5217\u8868\u4E2D\u9009\u62E9\u8981\u5173\u8054\u7684\u9644\u4EF6\uFF08\u9009\u62E9\u6587\u4EF6 )",paraId:3,tocIndex:0}],Pn={},En={title:"Add Plugin Setting Page (Different Layout)",toc:"menu",filename:"docs/en-US/plugin-samples/router/add-setting-page-layout-routes/index.md",lastUpdated:173254844e4,description:"The plugin requires multiple configuration pages, and some pages are not under AdminSettingsLayout, usually for detail pages, such as the @nocobase/plugin-mobile-client plugin or the @nocobase/plugin-workflow."},sn=[{id:"add-plugin-setting-page-different-layout",depth:1,title:"Add Plugin Setting Page (Different Layout)"},{id:"description",depth:2,title:"Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"function-implementation",depth:2,title:"Function Implementation"},{id:"1--register-the-plugin-setting-page",depth:3,title:"1. Register the Plugin Setting Page"},{id:"2--add-detail-page",depth:3,title:"2. Add Detail Page"},{id:"permission-configuration",depth:2,title:"Permission Configuration"},{id:"packaging-and-uploading-to-production-environment",depth:2,title:"Packaging and Uploading to Production Environment"}],Dn=[{value:"The plugin requires multiple configuration pages, and some pages are not under ",paraId:0,tocIndex:1},{value:"AdminSettingsLayout",paraId:1,tocIndex:1},{value:", usually for detail pages, such as the ",paraId:0,tocIndex:1},{value:"@nocobase/plugin-mobile-client",paraId:0,tocIndex:1},{value:" plugin or the ",paraId:0,tocIndex:1},{value:"@nocobase/plugin-workflow",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:"This example will have a configuration page, and inside the configuration page, there will be a detail link that, when clicked, will navigate to a new page.",paraId:2,tocIndex:2},{value:"This document will not go into much detail about the content development. It is only used to demonstrate how to add a plugin configuration page. For specific content and logic of the configuration page, please refer to the ",paraId:3,tocIndex:2},{value:"Plugin Settings plugin example",paraId:4,tocIndex:2},{value:" documentation.",paraId:3,tocIndex:2},{value:"You can find the complete example code for this document in the ",paraId:5,tocIndex:2},{value:"plugin-samples",paraId:5,tocIndex:2},{value:" repository.",paraId:5,tocIndex:2},{value:` `,paraId:6},{value:"Following the instructions in the ",paraId:7,tocIndex:3},{value:"Writing Your First Plugin",paraId:8,tocIndex:3},{value:" documentation, if you don't have a project yet, you can create one. If you already have one or have cloned the source code, you can skip this step.",paraId:7,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -190,7 +190,7 @@ export class PluginAddSettingPageLayoutRoutesClient extends Plugin { `,paraId:20,tocIndex:6},{value:"When we click on the ",paraId:21,tocIndex:6},{value:"details",paraId:21,tocIndex:6},{value:" link, it will navigate to the ",paraId:21,tocIndex:6},{value:"/admin/@nocobase-sample/plugin-add-setting-page-layout-routes-detail",paraId:21,tocIndex:6},{value:" page.",paraId:21,tocIndex:6},{value:` `,paraId:6},{value:"By default, the plugin configuration page does not have any permissions. Anyone can access and configure it. To configure permissions for the plugin, we need to configure them in the plugin settings.",paraId:22,tocIndex:7},{value:"We can visit ",paraId:23,tocIndex:7},{value:"http://localhost:13000/admin/settings/users-permissions/roles",paraId:23,tocIndex:7},{value:" to see all the roles. We can configure permissions in the plugin settings.",paraId:23,tocIndex:7},{value:"According to the documentation on ",paraId:24,tocIndex:8},{value:"Building and Packaging Plugins",paraId:25,tocIndex:8},{value:", we can package the plugin and upload it to the production environment.",paraId:24,tocIndex:8},{value:"If you have cloned the source code, you need to perform a full build first to build the dependencies of the plugin as well.",paraId:26,tocIndex:8},{value:`yarn build `,paraId:27,tocIndex:8},{value:"If you are using ",paraId:28,tocIndex:8},{value:"create-nocobase-app",paraId:28,tocIndex:8},{value:" to create your project, you can directly execute:",paraId:28,tocIndex:8},{value:`yarn build @nocobase-sample/plugin-add-setting-page-layout-routes --tar -`,paraId:29,tocIndex:8},{value:"This way you can see the ",paraId:30,tocIndex:8},{value:"storage/tar/@nocobase-sample/plugin-add-setting-page-layout-routes.tar.gz",paraId:30,tocIndex:8},{value:" file, and then install it through the ",paraId:30,tocIndex:8},{value:"upload method",paraId:31,tocIndex:8},{value:".",paraId:30,tocIndex:8}],ho={},Wn={title:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/submit-to-workflow.md",lastUpdated:1732240239e3,description:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u64CD\u4F5C\u7531\u63D2\u4EF6\u6269\u5C55"},To=[{id:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41",depth:1,title:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41"}],Co=[{value:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u64CD\u4F5C\u7531\u63D2\u4EF6\u6269\u5C55",paraId:0,tocIndex:0},{value:"\u65B0\u589E\u3001\u66F4\u65B0\u8868\u5355\u4E2D\u652F\u6301\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u548C\u89E6\u53D1\u3002",paraId:1,tocIndex:0},{value:"\u53EF\u5728\u4E00\u4E2A\u6309\u94AE\u70B9\u51FB\u65F6\u89E6\u53D1\u591A\u4E2A\u5DE5\u4F5C\u6D41\uFF0C\u5404\u81EA\u9009\u5B9A\u4E0D\u540C\u7684\u5DE5\u4F5C\u6D41\u548C\u6570\u636E\u4E0A\u4E0B\u6587\uFF08\u4E0D\u9650\u5236\u6570\u636E\uFF0C\u7528\u6237\u81EA\u884C\u4FDD\u8BC1\uFF09\u3002",paraId:1,tocIndex:0},{value:"\u8868\u5355\u6309\u94AE\u89E6\u53D1\u4EC5\u652F\u6301\u65B0\u7684\u5DE5\u4F5C\u6D41\u7C7B\u578B\u201C\u8868\u5355\u4E8B\u4EF6\u201D\u3002",paraId:1,tocIndex:0},{value:"\u8BE6\u60C5\u53EF\u67E5\u770B\u63D2\u4EF6\u6587\u6863",paraId:2,tocIndex:0}],_o={},On={title:"Nano ID",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/advanced/nano-id.md",lastUpdated:1732240239e3,description:"to be added."},fo=[{id:"nano-id",depth:1,title:"Nano ID"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],nn=[{value:"to be added.",paraId:0,tocIndex:3}],Jn={},Ie={title:"Checkbox",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/choices/checkbox.md",lastUpdated:1732240239e3,description:"to be added."},xe=[{id:"checkbox",depth:1,title:"Checkbox"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],ve=[{value:"to be added.",paraId:0,tocIndex:3}],Ue={},$e={title:"Circle",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/geometric/circle.md",lastUpdated:1732240239e3,description:"to be added."},ia=[{id:"circle",depth:1,title:"Circle"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],ua=[{value:"to be added.",paraId:0,tocIndex:3}],Ca={},ga={title:"Add Plugin Configuration Page (Single Route)",toc:"menu",filename:"docs/en-US/plugin-samples/router/add-setting-page-single-route/index.md",lastUpdated:1732240239e3,description:"The plugin requires a simple configuration page with only one route."},Ea=[{id:"add-plugin-configuration-page-single-route",depth:1,title:"Add Plugin Configuration Page (Single Route)"},{id:"description",depth:2,title:"Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"function-implementation",depth:2,title:"Function Implementation"},{id:"permission-configuration",depth:2,title:"Permission Configuration"},{id:"packaging-and-uploading-to-production-environment",depth:2,title:"Packaging and Uploading to Production Environment"}],$a=[{value:"The plugin requires a simple configuration page with only one route.",paraId:0,tocIndex:1},{value:"Assuming we integrate with a third-party email service and need to configure the email service token, we need a configuration page.",paraId:1,tocIndex:2},{value:"This document will not go into too much development detail, but only demonstrate how to add a plugin configuration page. For specific configuration page content and logic, please refer to the ",paraId:2,tocIndex:2},{value:"Plugin Settings plugin example",paraId:3,tocIndex:2},{value:" documentation.",paraId:2,tocIndex:2},{value:"You can view the complete example code for this document in the ",paraId:4,tocIndex:2},{value:"plugin-samples",paraId:4,tocIndex:2},{value:" repository.",paraId:4,tocIndex:2},{value:"Following the instructions in the ",paraId:5,tocIndex:3},{value:"Writing Your First Plugin",paraId:6,tocIndex:3},{value:" documentation, if you don't have a project yet, you can create one. If you already have one or have cloned the source code, you can skip this step.",paraId:5,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite +`,paraId:29,tocIndex:8},{value:"This way you can see the ",paraId:30,tocIndex:8},{value:"storage/tar/@nocobase-sample/plugin-add-setting-page-layout-routes.tar.gz",paraId:30,tocIndex:8},{value:" file, and then install it through the ",paraId:30,tocIndex:8},{value:"upload method",paraId:31,tocIndex:8},{value:".",paraId:30,tocIndex:8}],ho={},Wn={title:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/submit-to-workflow.md",lastUpdated:173254844e4,description:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u64CD\u4F5C\u7531\u63D2\u4EF6\u6269\u5C55"},To=[{id:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41",depth:1,title:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41"}],Co=[{value:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u64CD\u4F5C\u7531\u63D2\u4EF6\u6269\u5C55",paraId:0,tocIndex:0},{value:"\u65B0\u589E\u3001\u66F4\u65B0\u8868\u5355\u4E2D\u652F\u6301\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u548C\u89E6\u53D1\u3002",paraId:1,tocIndex:0},{value:"\u53EF\u5728\u4E00\u4E2A\u6309\u94AE\u70B9\u51FB\u65F6\u89E6\u53D1\u591A\u4E2A\u5DE5\u4F5C\u6D41\uFF0C\u5404\u81EA\u9009\u5B9A\u4E0D\u540C\u7684\u5DE5\u4F5C\u6D41\u548C\u6570\u636E\u4E0A\u4E0B\u6587\uFF08\u4E0D\u9650\u5236\u6570\u636E\uFF0C\u7528\u6237\u81EA\u884C\u4FDD\u8BC1\uFF09\u3002",paraId:1,tocIndex:0},{value:"\u8868\u5355\u6309\u94AE\u89E6\u53D1\u4EC5\u652F\u6301\u65B0\u7684\u5DE5\u4F5C\u6D41\u7C7B\u578B\u201C\u8868\u5355\u4E8B\u4EF6\u201D\u3002",paraId:1,tocIndex:0},{value:"\u8BE6\u60C5\u53EF\u67E5\u770B\u63D2\u4EF6\u6587\u6863",paraId:2,tocIndex:0}],_o={},On={title:"Nano ID",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/advanced/nano-id.md",lastUpdated:173254844e4,description:"to be added."},fo=[{id:"nano-id",depth:1,title:"Nano ID"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],nn=[{value:"to be added.",paraId:0,tocIndex:3}],Jn={},Ie={title:"Checkbox",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/choices/checkbox.md",lastUpdated:173254844e4,description:"to be added."},xe=[{id:"checkbox",depth:1,title:"Checkbox"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],ve=[{value:"to be added.",paraId:0,tocIndex:3}],Ue={},$e={title:"Circle",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/geometric/circle.md",lastUpdated:173254844e4,description:"to be added."},ia=[{id:"circle",depth:1,title:"Circle"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],ua=[{value:"to be added.",paraId:0,tocIndex:3}],Ca={},ga={title:"Add Plugin Configuration Page (Single Route)",toc:"menu",filename:"docs/en-US/plugin-samples/router/add-setting-page-single-route/index.md",lastUpdated:173254844e4,description:"The plugin requires a simple configuration page with only one route."},Ea=[{id:"add-plugin-configuration-page-single-route",depth:1,title:"Add Plugin Configuration Page (Single Route)"},{id:"description",depth:2,title:"Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"function-implementation",depth:2,title:"Function Implementation"},{id:"permission-configuration",depth:2,title:"Permission Configuration"},{id:"packaging-and-uploading-to-production-environment",depth:2,title:"Packaging and Uploading to Production Environment"}],$a=[{value:"The plugin requires a simple configuration page with only one route.",paraId:0,tocIndex:1},{value:"Assuming we integrate with a third-party email service and need to configure the email service token, we need a configuration page.",paraId:1,tocIndex:2},{value:"This document will not go into too much development detail, but only demonstrate how to add a plugin configuration page. For specific configuration page content and logic, please refer to the ",paraId:2,tocIndex:2},{value:"Plugin Settings plugin example",paraId:3,tocIndex:2},{value:" documentation.",paraId:2,tocIndex:2},{value:"You can view the complete example code for this document in the ",paraId:4,tocIndex:2},{value:"plugin-samples",paraId:4,tocIndex:2},{value:" repository.",paraId:4,tocIndex:2},{value:"Following the instructions in the ",paraId:5,tocIndex:3},{value:"Writing Your First Plugin",paraId:6,tocIndex:3},{value:" documentation, if you don't have a project yet, you can create one. If you already have one or have cloned the source code, you can skip this step.",paraId:5,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install yarn nocobase install @@ -218,7 +218,7 @@ export class PluginAddSettingPageSingleRouteClient extends Plugin { export default PluginAddSettingPageSingleRouteClient; `,paraId:15,tocIndex:4},{value:"name",paraId:16,tocIndex:4},{value:": The name of the plugin, used to uniquely identify the plugin.",paraId:16,tocIndex:4},{value:"title",paraId:16,tocIndex:4},{value:": The title of the plugin configuration management page menu.",paraId:16,tocIndex:4},{value:"icon",paraId:16,tocIndex:4},{value:": The icon of the plugin configuration management page menu. For more icons, you can refer to the ",paraId:16,tocIndex:4},{value:"Ant Design Icons",paraId:16,tocIndex:4},{value:".",paraId:16,tocIndex:4},{value:"Component",paraId:16,tocIndex:4},{value:": The content of the setting page.",paraId:16,tocIndex:4},{value:"Then we can visit ",paraId:17,tocIndex:4},{value:"http://localhost:13000/admin/settings/@nocobase-sample/plugin-add-setting-page-single-route",paraId:17,tocIndex:4},{value:" to view the plugin configuration page.",paraId:17,tocIndex:4},{value:"By default, the plugin configuration page does not have any permissions. Anyone can access and configure it. To configure permissions for the plugin, we need to configure them in the plugin settings.",paraId:18,tocIndex:5},{value:"We can visit ",paraId:19,tocIndex:5},{value:"http://localhost:13000/admin/settings/users-permissions/roles",paraId:19,tocIndex:5},{value:" to see all the roles. We can configure permissions in the plugin settings.",paraId:19,tocIndex:5},{value:"According to the documentation on ",paraId:20,tocIndex:6},{value:"Building and Packaging Plugins",paraId:21,tocIndex:6},{value:", we can package the plugin and upload it to the production environment.",paraId:20,tocIndex:6},{value:"If you have cloned the source code, you need to perform a full build first to build the dependencies of the plugin as well.",paraId:22,tocIndex:6},{value:`yarn build `,paraId:23,tocIndex:6},{value:"If you are using ",paraId:24,tocIndex:6},{value:"create-nocobase-app",paraId:24,tocIndex:6},{value:" to create your project, you can directly execute:",paraId:24,tocIndex:6},{value:`yarn build @nocobase-sample/plugin-add-setting-page-single-route --tar -`,paraId:25,tocIndex:6},{value:"This way you can see the ",paraId:26,tocIndex:6},{value:"storage/tar/@nocobase-sample/plugin-add-setting-page-single-route.tar.gz",paraId:26,tocIndex:6},{value:" file, and then install it by ",paraId:26,tocIndex:6},{value:"uploading",paraId:27,tocIndex:6},{value:".",paraId:26,tocIndex:6}],Va={},O={title:"Point",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/geometric/point.md",lastUpdated:1732240239e3,description:"to be added."},N=[{id:"point",depth:1,title:"Point"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],j=[{value:"to be added.",paraId:0,tocIndex:3}],de={},Pe={title:"Rich Text",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/media/rich-text.md",lastUpdated:1732240239e3,description:"to be added."},Le=[{id:"rich-text",depth:1,title:"Rich Text"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Fe=[{value:"to be added.",paraId:0,tocIndex:3}],je={},Ve={title:"\u5B50\u8BE6\u60C5",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/sub-detail/index.md",lastUpdated:1732240239e3,description:"\u5B50\u8BE6\u60C5\u662F\u5B50\u8868\u5355\u5728\u9605\u8BFB\u6A21\u5F0F\u4E0B\u7684\u5BF9\u5E94\u7EC4\u4EF6\uFF0C\u652F\u6301\u591A\u5C42\u5173\u7CFB\u6570\u636E\u5D4C\u5957\u5C55\u793A"},f=[{id:"\u5B50\u8BE6\u60C5",depth:1,title:"\u5B50\u8BE6\u60C5"}],ka=[{value:"\u5B50\u8BE6\u60C5\u662F\u5B50\u8868\u5355\u5728\u9605\u8BFB\u6A21\u5F0F\u4E0B\u7684\u5BF9\u5E94\u7EC4\u4EF6\uFF0C\u652F\u6301\u591A\u5C42\u5173\u7CFB\u6570\u636E\u5D4C\u5957\u5C55\u793A",paraId:0,tocIndex:0}],Ra={},Aa={title:"Add Plugin Configuration Pages (Multiple Tabs)",toc:"menu",filename:"docs/en-US/plugin-samples/router/add-setting-page-tabs-routes/index.md",lastUpdated:1732240239e3,description:"The plugin requires multiple configuration pages, with each page corresponding to a tab."},Na=[{id:"add-plugin-configuration-pages-multiple-tabs",depth:1,title:"Add Plugin Configuration Pages (Multiple Tabs)"},{id:"description",depth:2,title:"Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"function-implementation",depth:2,title:"Function Implementation"},{id:"permission-configuration",depth:2,title:"Permission Configuration"},{id:"packaging-and-uploading-to-production-environment",depth:2,title:"Packaging and Uploading to Production Environment"}],Ja=[{value:"The plugin requires multiple configuration pages, with each page corresponding to a tab.",paraId:0,tocIndex:1},{value:"Assuming we integrate with a third-party email service and need to configure the email service token. At the same time, we also need a configuration page to set up email service templates. In this case, we need a configuration page with two tabs.",paraId:1,tocIndex:2},{value:"This document does not go into much detail about the content development. It is only used to demonstrate how to add a plugin configuration page. For specific configuration page content and logic, please refer to the ",paraId:2,tocIndex:2},{value:"Plugin Settings plugin example",paraId:3,tocIndex:2},{value:" documentation.",paraId:2,tocIndex:2},{value:"You can find the complete example code for this document in the ",paraId:4,tocIndex:2},{value:"plugin-samples",paraId:4,tocIndex:2},{value:" repository.",paraId:4,tocIndex:2},{value:` +`,paraId:25,tocIndex:6},{value:"This way you can see the ",paraId:26,tocIndex:6},{value:"storage/tar/@nocobase-sample/plugin-add-setting-page-single-route.tar.gz",paraId:26,tocIndex:6},{value:" file, and then install it by ",paraId:26,tocIndex:6},{value:"uploading",paraId:27,tocIndex:6},{value:".",paraId:26,tocIndex:6}],Va={},O={title:"Point",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/geometric/point.md",lastUpdated:173254844e4,description:"to be added."},N=[{id:"point",depth:1,title:"Point"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],j=[{value:"to be added.",paraId:0,tocIndex:3}],de={},Pe={title:"Rich Text",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/media/rich-text.md",lastUpdated:173254844e4,description:"to be added."},Le=[{id:"rich-text",depth:1,title:"Rich Text"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Fe=[{value:"to be added.",paraId:0,tocIndex:3}],je={},Ve={title:"\u5B50\u8BE6\u60C5",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/sub-detail/index.md",lastUpdated:173254844e4,description:"\u5B50\u8BE6\u60C5\u662F\u5B50\u8868\u5355\u5728\u9605\u8BFB\u6A21\u5F0F\u4E0B\u7684\u5BF9\u5E94\u7EC4\u4EF6\uFF0C\u652F\u6301\u591A\u5C42\u5173\u7CFB\u6570\u636E\u5D4C\u5957\u5C55\u793A"},f=[{id:"\u5B50\u8BE6\u60C5",depth:1,title:"\u5B50\u8BE6\u60C5"}],ka=[{value:"\u5B50\u8BE6\u60C5\u662F\u5B50\u8868\u5355\u5728\u9605\u8BFB\u6A21\u5F0F\u4E0B\u7684\u5BF9\u5E94\u7EC4\u4EF6\uFF0C\u652F\u6301\u591A\u5C42\u5173\u7CFB\u6570\u636E\u5D4C\u5957\u5C55\u793A",paraId:0,tocIndex:0}],Ra={},Aa={title:"Add Plugin Configuration Pages (Multiple Tabs)",toc:"menu",filename:"docs/en-US/plugin-samples/router/add-setting-page-tabs-routes/index.md",lastUpdated:173254844e4,description:"The plugin requires multiple configuration pages, with each page corresponding to a tab."},Na=[{id:"add-plugin-configuration-pages-multiple-tabs",depth:1,title:"Add Plugin Configuration Pages (Multiple Tabs)"},{id:"description",depth:2,title:"Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"function-implementation",depth:2,title:"Function Implementation"},{id:"permission-configuration",depth:2,title:"Permission Configuration"},{id:"packaging-and-uploading-to-production-environment",depth:2,title:"Packaging and Uploading to Production Environment"}],Ja=[{value:"The plugin requires multiple configuration pages, with each page corresponding to a tab.",paraId:0,tocIndex:1},{value:"Assuming we integrate with a third-party email service and need to configure the email service token. At the same time, we also need a configuration page to set up email service templates. In this case, we need a configuration page with two tabs.",paraId:1,tocIndex:2},{value:"This document does not go into much detail about the content development. It is only used to demonstrate how to add a plugin configuration page. For specific configuration page content and logic, please refer to the ",paraId:2,tocIndex:2},{value:"Plugin Settings plugin example",paraId:3,tocIndex:2},{value:" documentation.",paraId:2,tocIndex:2},{value:"You can find the complete example code for this document in the ",paraId:4,tocIndex:2},{value:"plugin-samples",paraId:4,tocIndex:2},{value:" repository.",paraId:4,tocIndex:2},{value:` `,paraId:5},{value:"Following the instructions in the ",paraId:6,tocIndex:3},{value:"Writing Your First Plugin",paraId:7,tocIndex:3},{value:" documentation, if you don't have a project yet, you can create one. If you already have one or have cloned the source code, you can skip this step.",paraId:6,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -279,90 +279,105 @@ export default PluginAddSettingPageTabsRoutesClient; `,paraId:16,tocIndex:4},{value:"In scenarios where there are multiple configuration pages, the ",paraId:17,tocIndex:4},{value:"name",paraId:17,tocIndex:4},{value:" attribute of ",paraId:17,tocIndex:4},{value:"pluginSettingsManager.add()",paraId:17,tocIndex:4},{value:" needs to be separated by ",paraId:17,tocIndex:4},{value:".",paraId:17,tocIndex:4},{value:". For example, ",paraId:17,tocIndex:4},{value:"pluginName.pageName",paraId:17,tocIndex:4},{value:" can be used to achieve multiple configuration pages as tabs.",paraId:17,tocIndex:4},{value:"Then we can visit ",paraId:18,tocIndex:4},{value:"http://localhost:13000/admin/settings/@nocobase-sample/plugin-add-setting-page-tabs-routes",paraId:18,tocIndex:4},{value:" to view the plugin configuration page.",paraId:18,tocIndex:4},{value:` `,paraId:5},{value:"By default, the plugin configuration page does not have any permissions. Anyone can access and configure it. To configure permissions for the plugin, we need to configure them in the plugin settings.",paraId:19,tocIndex:5},{value:"We can visit ",paraId:20,tocIndex:5},{value:"http://localhost:13000/admin/settings/users-permissions/roles",paraId:20,tocIndex:5},{value:" to see all the roles. We can configure permissions in the plugin settings.",paraId:20,tocIndex:5},{value:"According to the documentation on ",paraId:21,tocIndex:6},{value:"Building and Packaging Plugins",paraId:22,tocIndex:6},{value:", we can package the plugin and upload it to the production environment.",paraId:21,tocIndex:6},{value:"If you have cloned the source code, you need to perform a full build first to build the dependencies of the plugin as well.",paraId:23,tocIndex:6},{value:`yarn build `,paraId:24,tocIndex:6},{value:"If you are using ",paraId:25,tocIndex:6},{value:"create-nocobase-app",paraId:25,tocIndex:6},{value:" to create your project, you can directly execute:",paraId:25,tocIndex:6},{value:`yarn build @nocobase-sample/plugin-add-setting-page-tabs-routes --tar -`,paraId:26,tocIndex:6},{value:"This way you can see the ",paraId:27,tocIndex:6},{value:"storage/tar/@nocobase-sample/plugin-add-setting-page-tabs-routes.tar.gz",paraId:27,tocIndex:6},{value:" file, and then install it through the ",paraId:27,tocIndex:6},{value:"upload method",paraId:28,tocIndex:6},{value:".",paraId:27,tocIndex:6}],dn={},bn={title:"create-nocobase-app",toc:"menu",filename:"docs/en-US/welcome/getting-started/installation/create-nocobase-app.md",lastUpdated:1732240239e3,description:"Make sure you have:"},zt=[{id:"create-nocobase-app",depth:1,title:"create-nocobase-app"},{id:"0-prerequisites",depth:2,title:"0. Prerequisites"},{id:"1-create-a-nocobase-project",depth:2,title:"1. Create a NocoBase project"},{id:"latest-version",depth:3,title:"Latest version"},{id:"beta-version",depth:3,title:"Beta version"},{id:"alpha-version",depth:3,title:"Alpha version"},{id:"2-switch-to-the-project-directory",depth:2,title:"2. Switch to the project directory"},{id:"3-install-dependencies",depth:2,title:"3. Install dependencies"},{id:"4-install-nocobase",depth:2,title:"4. Install NocoBase"},{id:"5-start-nocobase",depth:2,title:"5. Start NocoBase"},{id:"6-log-in-to-nocobase",depth:2,title:"6. Log in to NocoBase"}],mn=[{value:"create-nocobase-app",paraId:0},{value:"Make sure you have:",paraId:1,tocIndex:1},{value:"Installed Node.js 20+, Yarn 1.22.x",paraId:2,tocIndex:1},{value:"Configured and started one of the required database MySQL 8.x, MariaDB 10.9+, PostgreSQL 10+",paraId:2,tocIndex:1},{value:"You can download and install the latest LTS version from the official website. It is recommended to use nvm (or nvm-windows for Win systems) to manage Node.js versions if you plan to work with Node.js for a long time.",paraId:3,tocIndex:1},{value:`$ node -v +`,paraId:26,tocIndex:6},{value:"This way you can see the ",paraId:27,tocIndex:6},{value:"storage/tar/@nocobase-sample/plugin-add-setting-page-tabs-routes.tar.gz",paraId:27,tocIndex:6},{value:" file, and then install it through the ",paraId:27,tocIndex:6},{value:"upload method",paraId:28,tocIndex:6},{value:".",paraId:27,tocIndex:6}],dn={},bn={title:"create-nocobase-app",toc:"menu",filename:"docs/en-US/welcome/getting-started/installation/create-nocobase-app.md",lastUpdated:173254844e4,description:"Make sure you have:"},zt=[{id:"create-nocobase-app",depth:1,title:"create-nocobase-app"},{id:"0-prerequisites",depth:2,title:"0. Prerequisites"},{id:"beta-version",depth:3,title:"Beta version"},{id:"alpha-version",depth:3,title:"Alpha version"},{id:"2-switch-to-the-project-directory",depth:2,title:"2. Switch to the project directory"},{id:"3-install-dependencies",depth:2,title:"3. Install dependencies"},{id:"4-install-nocobase",depth:2,title:"4. Install NocoBase"},{id:"5-start-nocobase",depth:2,title:"5. Start NocoBase"},{id:"6-log-in-to-nocobase",depth:2,title:"6. Log in to NocoBase"}],mn=[{value:"Make sure you have:",paraId:0,tocIndex:1},{value:"Installed Node.js 20+, Yarn 1.22.x",paraId:1,tocIndex:1},{value:"Configured and started one of the required database MySQL 8.x, MariaDB 10.9+, PostgreSQL 10+",paraId:1,tocIndex:1},{value:"You can download and install the latest LTS version from the official website. It is recommended to use nvm (or nvm-windows for Win systems) to manage Node.js versions if you plan to work with Node.js for a long time.",paraId:2,tocIndex:1},{value:`$ node -v v20.10.0 -`,paraId:4,tocIndex:1},{value:"Install yarn package manager",paraId:5,tocIndex:1},{value:`$ npm install --global yarn +`,paraId:3,tocIndex:1},{value:"Install yarn package manager",paraId:4,tocIndex:1},{value:`$ npm install --global yarn $ yarn -v 1.22.21 -`,paraId:6,tocIndex:1},{value:"Stable and well-tested version and only bug fixed will be made. This version is recommended.",paraId:7,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d postgres \\ +`,paraId:5,tocIndex:1},{value:"Due to the domestic network environment, it is strongly recommended that you replace the domestic mirror.",paraId:6,tocIndex:1},{value:`$ yarn config set disable-self-update-check true +$ yarn config set registry https://registry.npmmirror.com/ +$ yarn config set sqlite3_binary_host_mirror https://npmmirror.com/mirrors/sqlite3/ +\` \` \` + +## 1. Create a NocoBase project + +### Latest version + +Stable and well-tested version and only bug fixed will be made. This version is recommended. + + +
+ +\`\`\`bash +yarn create nocobase-app my-nocobase-app -d postgres \\ -e DB_HOST=localhost \\ -e DB_PORT=5432 \\ -e DB_DATABASE=nocobase \\ -e DB_USER=nocobase \\ -e DB_PASSWORD=nocobase \\ -e TZ=Asia/Shanghai -`,paraId:8},{value:`yarn create nocobase-app my-nocobase-app -d mysql \\ +`,paraId:7,tocIndex:1},{value:`yarn create nocobase-app my-nocobase-app -d mysql \\ -e DB_HOST=localhost \\ -e DB_PORT=3306 \\ -e DB_DATABASE=nocobase \\ -e DB_USER=nocobase \\ -e DB_PASSWORD=nocobase \\ -e TZ=Asia/Shanghai -`,paraId:9},{value:`yarn create nocobase-app my-nocobase-app -d mariadb \\ +`,paraId:8,tocIndex:1},{value:`yarn create nocobase-app my-nocobase-app -d mariadb \\ -e DB_HOST=localhost \\ -e DB_PORT=3306 \\ -e DB_DATABASE=nocobase \\ -e DB_USER=nocobase \\ -e DB_PASSWORD=nocobase \\ -e TZ=Asia/Shanghai -`,paraId:10},{value:"This version includes new features that are about to be released and it has been preliminarily tested, but still have known or unknown issues.",paraId:11,tocIndex:4},{value:`npx create-nocobase-app@beta my-nocobase-app -d postgres \\ +`,paraId:9,tocIndex:1},{value:"This version includes new features that are about to be released and it has been preliminarily tested, but still have known or unknown issues.",paraId:10,tocIndex:2},{value:`npx create-nocobase-app@beta my-nocobase-app -d postgres \\ -e DB_HOST=localhost \\ -e DB_PORT=5432 \\ -e DB_DATABASE=nocobase \\ -e DB_USER=nocobase \\ -e DB_PASSWORD=nocobase \\ -e TZ=Asia/Shanghai -`,paraId:12},{value:`npx create-nocobase-app@beta my-nocobase-app -d mysql \\ +`,paraId:11},{value:`npx create-nocobase-app@beta my-nocobase-app -d mysql \\ -e DB_HOST=localhost \\ -e DB_PORT=3306 \\ -e DB_DATABASE=nocobase \\ -e DB_USER=nocobase \\ -e DB_PASSWORD=nocobase \\ -e TZ=Asia/Shanghai -`,paraId:13},{value:`npx create-nocobase-app@beta my-nocobase-app -d mariadb \\ +`,paraId:12},{value:`npx create-nocobase-app@beta my-nocobase-app -d mariadb \\ -e DB_HOST=localhost \\ -e DB_PORT=3306 \\ -e DB_DATABASE=nocobase \\ -e DB_USER=nocobase \\ -e DB_PASSWORD=nocobase \\ -e TZ=Asia/Shanghai -`,paraId:14},{value:"A development version containing the latest features, which may be incomplete or unstable.",paraId:15,tocIndex:5},{value:`npx create-nocobase-app@alpha my-nocobase-app -d postgres \\ +`,paraId:13},{value:"A development version containing the latest features, which may be incomplete or unstable.",paraId:14,tocIndex:3},{value:`npx create-nocobase-app@alpha my-nocobase-app -d postgres \\ -e DB_HOST=localhost \\ -e DB_PORT=5432 \\ -e DB_DATABASE=nocobase \\ -e DB_USER=nocobase \\ -e DB_PASSWORD=nocobase \\ -e TZ=Asia/Shanghai -`,paraId:16},{value:`npx create-nocobase-app@alpha my-nocobase-app -d mysql \\ +`,paraId:15},{value:`npx create-nocobase-app@alpha my-nocobase-app -d mysql \\ -e DB_HOST=localhost \\ -e DB_PORT=3306 \\ -e DB_DATABASE=nocobase \\ -e DB_USER=nocobase \\ -e DB_PASSWORD=nocobase \\ -e TZ=Asia/Shanghai -`,paraId:17},{value:`npx create-nocobase-app@alpha my-nocobase-app -d mariadb \\ +`,paraId:16},{value:`npx create-nocobase-app@alpha my-nocobase-app -d mariadb \\ -e DB_HOST=localhost \\ -e DB_PORT=3306 \\ -e DB_DATABASE=nocobase \\ -e DB_USER=nocobase \\ -e DB_PASSWORD=nocobase \\ -e TZ=Asia/Shanghai -`,paraId:18},{value:"TZ",paraId:19},{value:" is used to set the application's time zone, with the default being the system's time zone;",paraId:19},{value:"APP_KEY",paraId:19},{value:" is the application's secret key, used for generating user tokens and so on (if APP_KEY is changed, the old tokens will also become invalid). It can be any random string. Please change it to your own secret key and ensure it is not disclosed to the public.",paraId:19},{value:"DB_*",paraId:19},{value:" is related to the database. If it is not the default database service in the example, please modify it according to the actual situation.",paraId:19},{value:`cd my-nocobase-app -`,paraId:20,tocIndex:6},{value:"\u{1F4E2} This next step may take more than ten minutes due to network environment, system configuration, and other factors.",paraId:21,tocIndex:7},{value:`yarn install -`,paraId:22,tocIndex:7},{value:`yarn nocobase install --lang=en-US -`,paraId:23,tocIndex:8},{value:"Development",paraId:24,tocIndex:9},{value:`yarn dev -`,paraId:25,tocIndex:9},{value:"Production",paraId:26,tocIndex:9},{value:`yarn start -`,paraId:27,tocIndex:9},{value:"Note: For production, if the code has been modified, you need to execute ",paraId:28,tocIndex:9},{value:"yarn build",paraId:28,tocIndex:9},{value:" and restart NocoBase.",paraId:28,tocIndex:9},{value:"Open ",paraId:29,tocIndex:10},{value:"http://localhost:13000",paraId:29,tocIndex:10},{value:" in a web browser. The initial account and password are ",paraId:29,tocIndex:10},{value:"admin@nocobase.com",paraId:29,tocIndex:10},{value:" and ",paraId:29,tocIndex:10},{value:"admin123",paraId:29,tocIndex:10},{value:".",paraId:29,tocIndex:10}],_n={},Zn={title:"Custom Request",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/custom-request.md",lastUpdated:1732240239e3,description:"Configure the URL for custom request operations to cater to specific business needs. For additional information, refer to the custom request plugin documentation."},Xn=[{id:"custom-request",depth:1,title:"Custom Request"}],eo=[{value:"Custom Request",paraId:0},{value:"Configure the URL for custom request operations to cater to specific business needs. For additional information, refer to the custom request plugin documentation.",paraId:1,tocIndex:0}],Vn={},to={title:"Password",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/password.md",lastUpdated:1732240239e3,description:"to be added."},yo=[{id:"password",depth:1,title:"Password"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],no=[{value:"to be added.",paraId:0,tocIndex:3}],so={},Kn={title:"TextArea",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/textarea.md",lastUpdated:1732240239e3,description:"Edit mode"},ur=[{id:"textarea",depth:1,title:"TextArea"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"ui-interface-configuration",depth:2,title:"UI interface configuration"}],Sn=[{value:"Edit mode",paraId:0,tocIndex:3},{value:"Read mode",paraId:1,tocIndex:3}],un={},ao={title:"Select (single)",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/choices/select.md",lastUpdated:1732240239e3,description:"to be added."},Ao=[{id:"select-single",depth:1,title:"Select (single)"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Jo=[{value:"to be added.",paraId:0,tocIndex:3}],$o={},br={title:"DateTime Field Types",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/datetime/index.md",lastUpdated:1732240239e3,description:"DateTime field types can be categorized as follows:"},Dr=[{id:"datetime-field-types",depth:1,title:"DateTime Field Types"},{id:"data-source-comparisons",depth:2,title:"Data Source Comparisons"},{id:"datetime-storage-processing-workflow",depth:2,title:"DateTime Storage Processing Workflow"},{id:"with-time-zone",depth:3,title:"With Time Zone"},{id:"without-time-zone",depth:3,title:"Without Time Zone"},{id:"utc",depth:2,title:"UTC"}],oo=[{value:"DateTime field types can be categorized as follows:",paraId:0,tocIndex:0},{value:"DateTime (with Time Zone):",paraId:1,tocIndex:0},{value:" These values are standardized to UTC (Coordinated Universal Time) and are subject to time zone adjustments when necessary.",paraId:1,tocIndex:0},{value:"DateTime (without Time Zone):",paraId:1,tocIndex:0},{value:" This type stores date and time data without incorporating any time zone information.",paraId:1,tocIndex:0},{value:"Date (without Time):",paraId:1,tocIndex:0},{value:" This format exclusively stores date information, omitting any time component.",paraId:1,tocIndex:0},{value:"Time:",paraId:1,tocIndex:0},{value:" Stores only time information, excluding the date.",paraId:1,tocIndex:0},{value:"Unix Timestamp:",paraId:1,tocIndex:0},{value:" This type represents the number of seconds that have elapsed since January 1, 1970, and is stored as a Unix timestamp.",paraId:1,tocIndex:0},{value:"Here are examples for each DateTime-related field type:",paraId:2,tocIndex:0},{value:"Field Type",paraId:3,tocIndex:0},{value:"Example Value",paraId:3,tocIndex:0},{value:"Description",paraId:3,tocIndex:0},{value:"DateTime (with Time Zone)",paraId:3,tocIndex:0},{value:"2024-08-24T07:30:00.000Z",paraId:3,tocIndex:0},{value:"Converted to UTC and can be adjusted for time zones",paraId:3,tocIndex:0},{value:"DateTime (without Time Zone)",paraId:3,tocIndex:0},{value:"2024-08-24 15:30:00",paraId:3,tocIndex:0},{value:"Stores date and time without time zone considerations",paraId:3,tocIndex:0},{value:"Date (without Time)",paraId:3,tocIndex:0},{value:"2024-08-24",paraId:3,tocIndex:0},{value:"Captures only the date, with no time information",paraId:3,tocIndex:0},{value:"Time",paraId:3,tocIndex:0},{value:"15:30:00",paraId:3,tocIndex:0},{value:"Captures only the time, excluding any date details",paraId:3,tocIndex:0},{value:"Unix Timestamp",paraId:3,tocIndex:0},{value:"1724437800",paraId:3,tocIndex:0},{value:"Represents seconds since 1970-01-01 00:00:00 UTC",paraId:3,tocIndex:0},{value:"Below is a comparison table for NocoBase, MySQL, and PostgreSQL:",paraId:4,tocIndex:1},{value:"Field Type",paraId:5,tocIndex:1},{value:"NocoBase",paraId:5,tocIndex:1},{value:"MySQL",paraId:5,tocIndex:1},{value:"PostgreSQL",paraId:5,tocIndex:1},{value:"DateTime (with Time Zone)",paraId:5,tocIndex:1},{value:"Datetime with timezone",paraId:5,tocIndex:1},{value:"TIMESTAMP",paraId:5,tocIndex:1},{value:" DATETIME",paraId:5,tocIndex:1},{value:"TIMESTAMP WITH TIME ZONE",paraId:5,tocIndex:1},{value:"DateTime (without Time Zone)",paraId:5,tocIndex:1},{value:"Datetime without timezone",paraId:5,tocIndex:1},{value:"DATETIME",paraId:5,tocIndex:1},{value:"TIMESTAMP WITHOUT TIME ZONE",paraId:5,tocIndex:1},{value:"Date (without Time)",paraId:5,tocIndex:1},{value:"Date",paraId:5,tocIndex:1},{value:"DATE",paraId:5,tocIndex:1},{value:"DATE",paraId:5,tocIndex:1},{value:"Time",paraId:5,tocIndex:1},{value:"Time",paraId:5,tocIndex:1},{value:"TIME",paraId:5,tocIndex:1},{value:"TIME WITHOUT TIME ZONE",paraId:5,tocIndex:1},{value:"Unix Timestamp",paraId:5,tocIndex:1},{value:"Unix timestamp",paraId:5,tocIndex:1},{value:"INTEGER",paraId:5,tocIndex:1},{value:"BIGINT",paraId:5,tocIndex:1},{value:"INTEGER",paraId:5,tocIndex:1},{value:"BIGINT",paraId:5,tocIndex:1},{value:"Time (with Time Zone)",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"TIME WITH TIME ZONE",paraId:5,tocIndex:1},{value:"Note:",paraId:6,tocIndex:1},{value:"MySQL\u2019s TIMESTAMP type covers a range between ",paraId:7,tocIndex:1},{value:"1970-01-01 00:00:01 UTC",paraId:7,tocIndex:1},{value:" and ",paraId:7,tocIndex:1},{value:"2038-01-19 03:14:07 UTC",paraId:7,tocIndex:1},{value:". For dates and times outside this range, it is recommended to use DATETIME or BIGINT to store Unix timestamps.",paraId:7,tocIndex:1},{value:"This includes ",paraId:8,tocIndex:3},{value:"DateTime (without Time Zone)",paraId:8,tocIndex:3},{value:" and ",paraId:8,tocIndex:3},{value:"Unix Timestamp",paraId:8,tocIndex:3},{value:".",paraId:8,tocIndex:3},{value:"Note:",paraId:9,tocIndex:3},{value:"To accommodate a broader range of dates, NocoBase uses the DATETIME type in MySQL for DateTime (with Time Zone) fields. The date value stored is converted based on the server's TZ environment variable, meaning that if the TZ environment variable changes, the stored DateTime value will also change.",paraId:10,tocIndex:3},{value:"Since there is a time zone difference between UTC and local time, directly displaying the raw UTC value could lead to user confusion.",paraId:10,tocIndex:3},{value:"UTC (Coordinated Universal Time) is the global time standard used to coordinate and synchronize time worldwide. It is a highly precise time standard, maintained by atomic clocks, and synchronized with the Earth's rotation.",paraId:11,tocIndex:5},{value:"The difference between UTC and local time can cause confusion when displaying raw UTC values. For example:",paraId:12,tocIndex:5},{value:"Time Zone",paraId:13,tocIndex:5},{value:"DateTime",paraId:13,tocIndex:5},{value:"UTC",paraId:13,tocIndex:5},{value:"2024-08-24T07:30:00.000Z",paraId:13,tocIndex:5},{value:"UTC+8",paraId:13,tocIndex:5},{value:"2024-08-24 15:30:00",paraId:13,tocIndex:5},{value:"UTC+5",paraId:13,tocIndex:5},{value:"2024-08-24 12:30:00",paraId:13,tocIndex:5},{value:"UTC-5",paraId:13,tocIndex:5},{value:"2024-08-24 02:30:00",paraId:13,tocIndex:5},{value:"UTC+0",paraId:13,tocIndex:5},{value:"2024-08-24 07:30:00",paraId:13,tocIndex:5},{value:"UTC-6",paraId:13,tocIndex:5},{value:"2024-08-23 01:30:00",paraId:13,tocIndex:5},{value:"These different times all correspond to the same moment, merely expressed in various time zones.",paraId:14,tocIndex:5}],yn={},Yn={title:"Line",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/geometric/line.md",lastUpdated:1732240239e3,description:"to be added."},Eo=[{id:"line",depth:1,title:"Line"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Oo=[{value:"to be added.",paraId:0,tocIndex:3}],vo={},It={title:"Markdown",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/media/markdown.md",lastUpdated:1732240239e3,description:"to be added."},et=[{id:"markdown",depth:1,title:"Markdown"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Rn=[{value:"to be added.",paraId:0,tocIndex:3}],lo={},co={title:"\u8868\u8FBE\u5F0F\u8868\u4F7F\u7528",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/expression/index.md",lastUpdated:1732240239e3,description:"\u533A\u522B\u4E8E\u6570\u636E\u8868\u4E2D\u9488\u5BF9\u5168\u8868\u7EDF\u4E00\u7684\u516C\u5F0F\u5B57\u6BB5\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u7684\u53EF\u4EE5\u9488\u5BF9\u6BCF\u884C\u6570\u636E\u8FDB\u884C\u4E0D\u540C\u516C\u5F0F\u7684\u8BA1\u7B97\u3002\u52A8\u6001\u8868\u8FBE\u5F0F\u8BA1\u7B97\u76EE\u524D\u53EA\u5728\u5DE5\u4F5C\u6D41\u4E2D\u652F\u6301\u3002"},wo=[{id:"\u8868\u8FBE\u5F0F\u8868\u4F7F\u7528",depth:1,title:"\u8868\u8FBE\u5F0F\u8868\u4F7F\u7528"},{id:"\u57FA\u672C\u6982\u5FF5",depth:2,title:"\u57FA\u672C\u6982\u5FF5"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],Ro=[{value:"\u533A\u522B\u4E8E\u6570\u636E\u8868\u4E2D\u9488\u5BF9\u5168\u8868\u7EDF\u4E00\u7684\u516C\u5F0F\u5B57\u6BB5\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u7684\u53EF\u4EE5\u9488\u5BF9\u6BCF\u884C\u6570\u636E\u8FDB\u884C\u4E0D\u540C\u516C\u5F0F\u7684\u8BA1\u7B97\u3002\u52A8\u6001\u8868\u8FBE\u5F0F\u8BA1\u7B97\u76EE\u524D",paraId:0,tocIndex:1},{value:"\u53EA\u5728\u5DE5\u4F5C\u6D41\u4E2D\u652F\u6301",paraId:0,tocIndex:1},{value:"\u3002",paraId:0,tocIndex:1},{value:"\u8868\u8FBE\u5F0F\u6A21\u677F\u8868\u7528\u4E8E\u5B58\u50A8\u9488\u5BF9\u540C\u4E00\u7C7B\u6570\u636E\u4E0D\u540C\u7684\u516C\u5F0F\uFF0C\u4E0E\u9700\u8981\u53C2\u4E0E\u8BA1\u7B97\u7684\u6570\u636E\u8868\u901A\u5E38\u4E3A\u4E00\u5BF9\u591A\u5173\u7CFB\uFF08\u666E\u901A\u6570\u636E\u8868 belongsTo \u8868\u8FBE\u5F0F\u8868\uFF09\uFF1A",paraId:1,tocIndex:1},{value:"m:1 \u53EA\u662F\u901A\u5E38\u7684\u7528\u6CD5\uFF0C\u4F46\u5B9E\u9645\u4E0A\u666E\u901A\u6570\u636E\u8868\u4E0E\u8868\u8FBE\u5F0F\u8868\u7684\u5173\u7CFB\u662F\u53EF\u4EE5\u4EFB\u610F\u5EFA\u7ACB\u7684\uFF0C\u4E00\u884C\u6570\u636E\u5BF9\u591A\u4E2A\u8868\u8FBE\u5F0F\u901A\u5E38\u8FD8\u9700\u8981\u5176\u4ED6\u533A\u5206\u5B57\u6BB5\uFF0C\u6216\u8005\u662F\u5728\u5FAA\u73AF\u4E2D\u5BF9\u4E00\u884C\u6570\u636E\u505A\u591A\u79CD\u8BA1\u7B97\u7684\u573A\u666F\u3002",paraId:2,tocIndex:1},{value:"\u8868\u8FBE\u5F0F\u8868\u4E09\u4E2A\u5B57\u6BB5\u7684\u542B\u4E49\uFF1A",paraId:3,tocIndex:1},{value:"\u6570\u636E\u8868",paraId:4,tocIndex:1},{value:"\uFF1A\u76F8\u5F53\u4E8E\u51FD\u6570\u7684\u53C2\u6570\uFF0C\u5728\u8868\u8FBE\u5F0F\u4E2D\u53EF\u7528\u7684\u53D8\u91CF\u5B57\u6BB5\u6765\u6E90\uFF0C\u5373\u53EA\u80FD\u57FA\u4E8E\u4E00\u4E2A\u6570\u636E\u8868\u7684\u5B57\u6BB5\u8FDB\u884C\u8BA1\u7B97\u914D\u7F6E\uFF1B",paraId:4,tocIndex:1},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:4,tocIndex:1},{value:"\uFF1A\u76EE\u524D\u53EF\u9009 mathjs \u548C formulajs\uFF0C\u63A8\u8350\u4F7F\u7528 formulajs\u3002",paraId:4,tocIndex:1},{value:"\u8868\u8FBE\u5F0F",paraId:4,tocIndex:1},{value:"\uFF1A\u76F8\u5F53\u4E8E\u51FD\u6570\u7684\u5185\u5BB9\uFF0C\u8BA1\u7B97\u65F6\u5C06\u6839\u636E\u914D\u7F6E\u6267\u884C\u5F97\u5230\u4E00\u4E2A\u7ED3\u679C\u3002",paraId:4,tocIndex:1},{value:"\u4EE5\u5546\u54C1\u4E0B\u5355\u8FC7\u7A0B\u4E2D\u6839\u636E\u4E0D\u540C\u5546\u54C1\u8FDB\u884C\u4E0D\u540C\u4F18\u60E0\u89C4\u5219\u7684\u6700\u7EC8\u4EF7\u683C\u8BA1\u7B97\u4E3E\u4F8B\u3002",paraId:5,tocIndex:2},{value:"\u5EFA\u7ACB\u5546\u54C1\u8868\uFF1A",paraId:6,tocIndex:2},{value:"\u5B57\u6BB5\u540D",paraId:7,tocIndex:2},{value:"\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u5546\u54C1\u540D",paraId:7,tocIndex:2},{value:"\u6587\u672C",paraId:7,tocIndex:2},{value:"\u5546\u54C1\u539F\u4EF7",paraId:7,tocIndex:2},{value:"\u6570\u5B57",paraId:7,tocIndex:2},{value:"\u4F18\u60E0\u89C4\u5219",paraId:7,tocIndex:2},{value:"belongsTo\uFF08\u4F18\u60E0\u89C4\u5219\u8868\uFF09",paraId:7,tocIndex:2},{value:"\u5EFA\u7ACB\u4F18\u60E0\u89C4\u5219\u8868\uFF08\u4F7F\u7528\u8868\u8FBE\u5F0F\u8868\u6A21\u677F\u521B\u5EFA\uFF09\uFF1A",paraId:8,tocIndex:2},{value:"\u5B57\u6BB5\u540D",paraId:9,tocIndex:2},{value:"\u7C7B\u578B",paraId:9,tocIndex:2},{value:"\u89C4\u5219\u540D\u79F0",paraId:9,tocIndex:2},{value:"\u6587\u672C",paraId:9,tocIndex:2},{value:"\u6570\u636E\u8868",paraId:9,tocIndex:2},{value:"\u5355\u9009\uFF08\u6570\u636E\u8868\uFF09",paraId:9,tocIndex:2},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:9,tocIndex:2},{value:"\u5355\u9009\uFF08mathjs/formulajs\uFF09",paraId:9,tocIndex:2},{value:"\u8868\u8FBE\u5F0F",paraId:9,tocIndex:2},{value:"\u6587\u672C",paraId:9,tocIndex:2},{value:"\u521B\u5EFA\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:10,tocIndex:2},{value:"ID",paraId:11,tocIndex:2},{value:"\u540D\u79F0",paraId:11,tocIndex:2},{value:"\u6570\u636E\u8868",paraId:11,tocIndex:2},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:11,tocIndex:2},{value:"\u8868\u8FBE\u5F0F",paraId:11,tocIndex:2},{value:"1",paraId:11,tocIndex:2},{value:"\u516B\u6298\u5546\u54C1",paraId:11,tocIndex:2},{value:"\u5546\u54C1",paraId:11,tocIndex:2},{value:"formula",paraId:11,tocIndex:2},{value:"{{\u5546\u54C1.\u4EF7\u683C}} * 0.8",paraId:11,tocIndex:2},{value:"2",paraId:11,tocIndex:2},{value:"\u4E5D\u6298\u5546\u54C1",paraId:11,tocIndex:2},{value:"\u5546\u54C1",paraId:11,tocIndex:2},{value:"formula",paraId:11,tocIndex:2},{value:"{{\u5546\u54C1.\u4EF7\u683C}} * 0.9",paraId:11,tocIndex:2},{value:"\u521B\u5EFA\u5546\u54C1\uFF0C\u5E76\u5173\u8054\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:12,tocIndex:2},{value:"ID",paraId:13,tocIndex:2},{value:"\u5546\u54C1\u540D\u79F0",paraId:13,tocIndex:2},{value:"\u4EF7\u683C",paraId:13,tocIndex:2},{value:"\u4F18\u60E0\u89C4\u5219 ID",paraId:13,tocIndex:2},{value:"1",paraId:13,tocIndex:2},{value:"iPhone 14 Pro",paraId:13,tocIndex:2},{value:"7999",paraId:13,tocIndex:2},{value:"2",paraId:13,tocIndex:2},{value:"2",paraId:13,tocIndex:2},{value:"iPhone 13 Pro",paraId:13,tocIndex:2},{value:"5999",paraId:13,tocIndex:2},{value:"1",paraId:13,tocIndex:2},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\uFF0C\u8BA2\u5355\u521B\u5EFA\u65F6\u89E6\u53D1\uFF1A",paraId:14,tocIndex:2},{value:"\u521B\u5EFA\u4E00\u4E2A\u8FD0\u7B97\u8282\u70B9\uFF0C\u914D\u7F6E\u52A8\u6001\u8868\u8FBE\u5F0F\u4E3A\u89E6\u53D1\u6570\u636E/\u5546\u54C1/\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:15,tocIndex:2},{value:"\u914D\u7F6E\u53D8\u91CF\u6570\u636E\u6E90\u4E3A\u89E6\u53D1\u6570\u636E\u4E2D\u7684\u5546\u54C1\uFF1A",paraId:16,tocIndex:2},{value:`\u589E\u52A0\u4E00\u4E2A\u66F4\u65B0\u6570\u636E\u8282\u70B9\uFF0C\u914D\u7F6E\u66F4\u65B0\u8BA2\u5355\u603B\u4EF7\u4E3A\u8BA1\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF1A -`,paraId:17,tocIndex:2},{value:"\u521B\u5EFA\u8BA2\u5355\u89E6\u53D1\u5DE5\u4F5C\u6D41\uFF0C\u518D\u67E5\u770B\u8BA2\u5355\u5217\u8868\uFF0C\u6838\u5BF9\u4EF7\u683C\uFF1A",paraId:17,tocIndex:2},{value:"\u8BA2\u5355\u5546\u54C1",paraId:18,tocIndex:2},{value:"\u8BA2\u5355\u5546\u54C1 / \u539F\u4EF7",paraId:18,tocIndex:2},{value:"\u4F18\u60E0\u89C4\u5219",paraId:18,tocIndex:2},{value:"\u603B\u4EF7",paraId:18,tocIndex:2},{value:"iPhone 14 Pro",paraId:18,tocIndex:2},{value:"7999",paraId:18,tocIndex:2},{value:"\u4E5D\u6298",paraId:18,tocIndex:2},{value:"7999 * 0.9 = 7199.1",paraId:18,tocIndex:2},{value:"iPhone 13 Pro",paraId:18,tocIndex:2},{value:"6999",paraId:18,tocIndex:2},{value:"\u516B\u6298",paraId:18,tocIndex:2},{value:"6999 * 0.8 = 5599.2",paraId:18,tocIndex:2}],Go={},lr={title:"\u5B50\u8868\u683C",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/sub-table/index.md",lastUpdated:1732240239e3,description:"\u5B50\u8868\u683C\u4EE5\u8868\u683C\u5F62\u5F0F\u5C55\u793A\u4E00\u5BF9\u591A\u6216\u591A\u5BF9\u591A\u5173\u7CFB\u8BB0\u5F55\u3002\u5B83\u63D0\u4F9B\u4E86\u4E00\u79CD\u6E05\u6670\u3001\u7ED3\u6784\u5316\u7684\u65B9\u5F0F\u6765\u5C55\u793A\u548C\u7BA1\u7406\u5173\u8054\u6570\u636E\uFF0C\u6BCF\u4E00\u884C\u4EE3\u8868\u4E00\u4E2A\u5173\u8054\u8BB0\u5F55\uFF0C\u6BCF\u5217\u4EE3\u8868\u5173\u8054\u8BB0\u5F55\u7684\u4E0D\u540C\u5B57\u6BB5\u3002"},md=[{id:"\u5B50\u8868\u683C",depth:1,title:"\u5B50\u8868\u683C"}],ar=[{value:"\u5B50\u8868\u683C\u4EE5\u8868\u683C\u5F62\u5F0F\u5C55\u793A",paraId:0,tocIndex:0},{value:"\u4E00\u5BF9\u591A\u6216\u591A\u5BF9\u591A",paraId:0,tocIndex:0},{value:"\u5173\u7CFB\u8BB0\u5F55\u3002\u5B83\u63D0\u4F9B\u4E86\u4E00\u79CD\u6E05\u6670\u3001\u7ED3\u6784\u5316\u7684\u65B9\u5F0F\u6765\u5C55\u793A\u548C\u7BA1\u7406\u5173\u8054\u6570\u636E\uFF0C\u6BCF\u4E00\u884C\u4EE3\u8868\u4E00\u4E2A\u5173\u8054\u8BB0\u5F55\uFF0C\u6BCF\u5217\u4EE3\u8868\u5173\u8054\u8BB0\u5F55\u7684\u4E0D\u540C\u5B57\u6BB5\u3002",paraId:0,tocIndex:0},{value:"\u5728\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u6A21\u578B\u4E2D\uFF0C\u4EFB\u52A1\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u5BA1\u6279\u7EAA\u5F55\u300D\uFF08\u4E00\u5BF9\u591A\uFF09\u3002",paraId:1,tocIndex:0},{value:"\u7F16\u8F91\u4E0B\u7684\u5B50\u8868\u683C",paraId:2,tocIndex:0},{value:"\u5B50\u8868\u683C\u4E2D\u5B57\u6BB5\u4F1A\u6839\u636E\u4E0D\u540C\u5B57\u6BB5\u7C7B\u578B\u5C55\u793A\u4E0D\u540C\u7EC4\u4EF6\uFF0C\u800C\u5927\u5B57\u6BB5\uFF08\u5BCC\u6587\u672C\uFF0CJson,\u591A\u884C\u6587\u672C\u7B49\u5B57\u6BB5\uFF09\u5219\u901A\u8FC7\u60AC\u6D6E\u5F39\u7A97\u7F16\u8F91",paraId:3,tocIndex:0},{value:"\u5B50\u8868\u683C\u4E2D\u5173\u7CFB\u5B57\u6BB5\u9ED8\u8BA4\u7EC4\u4EF6\u662F\u4E0B\u62C9\u9009\u62E9\u5668\uFF08\u53EF\u8C03\u6574\u4E3A\u6570\u636E\u9009\u62E9\u5668/\u5B50\u8868\u5355\uFF08\u5F39\u7A97\uFF09\uFF09",paraId:4,tocIndex:0},{value:"\u8BE6\u60C5\u4E0B\u7684\u5B50\u8868\u683C",paraId:5,tocIndex:0}],hd={},td={title:"\u8868\u683C\u914D\u7F6E\u9875\u9762\uFF08\u591A\u79CD\u65B0\u589E\u8868\u5355\uFF09",toc:"menu",filename:"docs/en-US/plugin-samples/plugin-settings/table-multiple-add-forms.md",lastUpdated:1732240239e3,description:"TODO"},Tr=[{id:"\u8868\u683C\u914D\u7F6E\u9875\u9762\u591A\u79CD\u65B0\u589E\u8868\u5355",depth:1,title:"\u8868\u683C\u914D\u7F6E\u9875\u9762\uFF08\u591A\u79CD\u65B0\u589E\u8868\u5355\uFF09"}],jr=[{value:"TODO",paraId:0,tocIndex:0}],Nd={},zd={title:"Belongs To Repository",toc:"menu",filename:"docs/en-US/api/database/relation-repository/belongs-to-repository.md",lastUpdated:1732240239e3,description:"The interface is the same as HasOneRepository. BelongsToRepository is the Repository for handling BelongsTo relationships, and it provides some convenient methods to handle BelongsTo relationships."},fd=[{id:"belongstorepository",depth:2,title:"BelongsToRepository"}],di=[{value:"The interface is the same as ",paraId:0,tocIndex:0},{value:"HasOneRepository",paraId:1,tocIndex:0},{value:". ",paraId:0,tocIndex:0},{value:"BelongsToRepository",paraId:0,tocIndex:0},{value:" is the ",paraId:0,tocIndex:0},{value:"Repository",paraId:0,tocIndex:0},{value:" for handling ",paraId:0,tocIndex:0},{value:"BelongsTo",paraId:0,tocIndex:0},{value:" relationships, and it provides some convenient methods to handle ",paraId:0,tocIndex:0},{value:"BelongsTo",paraId:0,tocIndex:0},{value:" relationships.",paraId:0,tocIndex:0}],xd={},gd={title:"Update record",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/update-record.md",lastUpdated:1732240239e3,description:"Custom row operations update record by configuring field assignments to specify the content to be modified."},ii=[{id:"update-record",depth:1,title:"Update record"}],bd=[{value:"Custom row operations update record by configuring field assignments to specify the content to be modified.",paraId:0,tocIndex:0},{value:"As shown in the illustration, an update data operation is configured in the waybill table block to confirm delivery.",paraId:1,tocIndex:0}],li={},zo={title:"JSON",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/advanced/json.md",lastUpdated:1732240239e3,description:"to be added."},nd=[{id:"json",depth:1,title:"JSON"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],od=[{value:"to be added.",paraId:0,tocIndex:3}],Fd={},ci={title:"Sort",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/advanced/sort.md",lastUpdated:1732240239e3},Hr=[],al=[],si={},ui={title:"UUID",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/advanced/uuid.md",lastUpdated:1732240239e3,description:"to be added."},ro=[{id:"uuid",depth:1,title:"UUID"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Vo=[{value:"to be added.",paraId:0,tocIndex:3}],pr={},Ir={title:"Integer",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/integer.md",lastUpdated:1732240239e3,description:"to be added."},Ic=[{id:"integer",depth:1,title:"Integer"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],tl=[{value:"to be added.",paraId:0,tocIndex:3}],Bd={},pi={title:"Percent",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/percent.md",lastUpdated:1732240239e3,description:"to be added."},yd=[{id:"percent",depth:1,title:"Percent"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],_c=[{value:"to be added.",paraId:0,tocIndex:3}],au={},tu={title:"Date",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/datetime/date.md",lastUpdated:1732240239e3,description:"to be added."},vc=[{id:"date",depth:1,title:"Date"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Ii=[{value:"to be added.",paraId:0,tocIndex:3}],_i={},nl={title:"time",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/datetime/time.md",lastUpdated:1732240239e3,description:"to be added."},ol=[{id:"time",depth:1,title:"time"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],rl=[{value:"to be added.",paraId:0,tocIndex:3}],dl={},nu={title:"\u5B50\u8868\u5355",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/sub-form/index.md",lastUpdated:1732240239e3,description:"\u82E5\u60F3\u5904\u7406\u5C42\u7EA7\u8F83\u6DF1\u7684\u5173\u7CFB\u6570\u636E\uFF0C\u901A\u8FC7 select \u548C\u6570\u636E\u9009\u62E9\u5668\u90FD\u4E0D\u592A\u65B9\u4FBF\uFF0C\u9700\u8981\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\uFF0C\u70B9\u51FB\u6B21\u6570\u592A\u591A\uFF0C\u5F88\u7E41\u7410\uFF1B\u800C\u5B50\u8868\u5355\u5C31\u662F\u4E3A\u4E86\u4F18\u5316\u8FD9\u79CD\u573A\u666F\uFF0C\u4F7F\u7528\u6237\u80FD\u591F\u5728\u5F53\u524D\u9875\u9762\u4E0A\u76F4\u63A5\u7EF4\u62A4\u5173\u8054\u7684\u4FE1\u606F\uFF0C\u591A\u5C42\u5173\u7CFB\u4EE5\u5D4C\u5957\u8868\u5355\u7684\u5F62\u5F0F\u5C55\u793A"},mc=[{id:"\u5B50\u8868\u5355",depth:1,title:"\u5B50\u8868\u5355"}],ou=[{value:"\u82E5\u60F3\u5904\u7406\u5C42\u7EA7\u8F83\u6DF1\u7684\u5173\u7CFB\u6570\u636E\uFF0C\u901A\u8FC7 select \u548C\u6570\u636E\u9009\u62E9\u5668\u90FD\u4E0D\u592A\u65B9\u4FBF\uFF0C\u9700\u8981\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\uFF0C\u70B9\u51FB\u6B21\u6570\u592A\u591A\uFF0C\u5F88\u7E41\u7410\uFF1B\u800C\u5B50\u8868\u5355\u5C31\u662F\u4E3A\u4E86\u4F18\u5316\u8FD9\u79CD\u573A\u666F\uFF0C\u4F7F\u7528\u6237\u80FD\u591F\u5728\u5F53\u524D\u9875\u9762\u4E0A\u76F4\u63A5\u7EF4\u62A4\u5173\u8054\u7684\u4FE1\u606F\uFF0C\u591A\u5C42\u5173\u7CFB\u4EE5\u5D4C\u5957\u8868\u5355\u7684\u5F62\u5F0F\u5C55\u793A",paraId:0,tocIndex:0},{value:"\u652F\u6301\u591A\u5C42\u5173\u7CFB\u5B57\u6BB5\u7684\u5D4C\u5957\u663E\u793A",paraId:1,tocIndex:0},{value:"\u53EF\u4EE5\u914D\u7F6E\u662F\u5426\u663E\u793A\u6807\u9898\u548C\u8C03\u6574\u5E03\u5C40",paraId:2,tocIndex:0}],ru={},il={title:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/custom-request.md",lastUpdated:1732240239e3,description:"\u914D\u7F6E\u81EA\u5B9A\u4E49\u8BF7\u6C42\u64CD\u4F5C\u7684\u8BF7\u6C42\u5730\u5740\uFF0C\u4EE5\u6EE1\u8DB3\u7279\u5B9A\u4E1A\u52A1\u9700\u6C42\uFF0C\u8BE6\u60C5\u67E5\u770B\u81EA\u5B9A\u4E49\u8BF7\u6C42\u63D2\u4EF6\u6587\u6863"},Or=[{id:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",depth:1,title:"\u81EA\u5B9A\u4E49\u8BF7\u6C42"}],hc=[{value:"\u914D\u7F6E\u81EA\u5B9A\u4E49\u8BF7\u6C42\u64CD\u4F5C\u7684\u8BF7\u6C42\u5730\u5740\uFF0C\u4EE5\u6EE1\u8DB3\u7279\u5B9A\u4E1A\u52A1\u9700\u6C42\uFF0C\u8BE6\u60C5\u67E5\u770B\u81EA\u5B9A\u4E49\u8BF7\u6C42\u63D2\u4EF6\u6587\u6863",paraId:0,tocIndex:0}],wd={},Cr={title:"\u6570\u636E\u8868\u5B57\u6BB5\u7C7B\u578B",toc:"menu",filename:"docs/en-US/plugins/collection-manager/user/field-interfaces/index.md",lastUpdated:1732240239e3,description:"\u7528\u4E8E\u5EFA\u7ACB\u5404\u79CD\u5173\u8054\u5173\u7CFB"},jd=[{id:"\u6570\u636E\u8868\u5B57\u6BB5\u7C7B\u578B",depth:1,title:"\u6570\u636E\u8868\u5B57\u6BB5\u7C7B\u578B"},{id:"basic",depth:2,title:"Basic"},{id:"choices",depth:2,title:"Choices"},{id:"media",depth:2,title:"Media"},{id:"date--time",depth:2,title:"Date & Time"},{id:"relation",depth:2,title:"Relation"},{id:"advanced",depth:2,title:"Advanced"},{id:"system-info",depth:2,title:"System info"}],Rr=[{value:"Single line text",paraId:0,tocIndex:1},{value:"Username",paraId:0,tocIndex:1},{value:"Long text",paraId:0,tocIndex:1},{value:"Phone",paraId:0,tocIndex:1},{value:"Email",paraId:0,tocIndex:1},{value:"URL",paraId:0,tocIndex:1},{value:"Integer",paraId:0,tocIndex:1},{value:"Number",paraId:0,tocIndex:1},{value:"Percent",paraId:0,tocIndex:1},{value:"Password",paraId:0,tocIndex:1},{value:"Color",paraId:0,tocIndex:1},{value:"Icon",paraId:0,tocIndex:1},{value:"Checkbox",paraId:1,tocIndex:2},{value:"Single select",paraId:1,tocIndex:2},{value:"Multiple select",paraId:1,tocIndex:2},{value:"Radio group",paraId:1,tocIndex:2},{value:"Checkbox group",paraId:1,tocIndex:2},{value:"China region\uFF08\u63D2\u4EF6\u6269\u5C55\uFF09",paraId:1,tocIndex:2},{value:"Markdown",paraId:2,tocIndex:3},{value:"Rich Text",paraId:2,tocIndex:3},{value:"Attachment",paraId:2,tocIndex:3},{value:"Datetime",paraId:3,tocIndex:4},{value:"Time",paraId:3,tocIndex:4},{value:"\u7528\u4E8E\u5EFA\u7ACB\u5404\u79CD\u5173\u8054\u5173\u7CFB",paraId:4,tocIndex:5},{value:"One to one (belongs to)",paraId:5,tocIndex:5},{value:"One to one (has one)",paraId:5,tocIndex:5},{value:"One to many",paraId:5,tocIndex:5},{value:"Many to one",paraId:5,tocIndex:5},{value:"Many to many",paraId:5,tocIndex:5},{value:"Formula",paraId:6,tocIndex:6},{value:"Sequence",paraId:6,tocIndex:6},{value:"JSON",paraId:6,tocIndex:6},{value:"Collection",paraId:6,tocIndex:6},{value:"ID",paraId:7,tocIndex:7},{value:"Table OID (\u7EE7\u627F\u8868\u4E2D\u4F7F\u7528)",paraId:7,tocIndex:7},{value:"Created at",paraId:7,tocIndex:7},{value:"Last updated at",paraId:7,tocIndex:7},{value:"Created by",paraId:7,tocIndex:7},{value:"Last updated by",paraId:7,tocIndex:7}],ll={},du={title:"create-nocobase-app",toc:"menu",filename:"docs/en-US/welcome/getting-started/deployment/create-nocobase-app.md",lastUpdated:1732240239e3,description:"The other processes are no different from the create-nocobase-app."},iu=[{id:"create-nocobase-app",depth:1,title:"create-nocobase-app"},{id:"managing-application-processes",depth:2,title:"Managing Application Processes"},{id:"configuring-nginx",depth:2,title:"Configuring Nginx"}],rd=[{value:"The other processes are no different from the ",paraId:0,tocIndex:0},{value:"create-nocobase-app",paraId:1,tocIndex:0},{value:".",paraId:0,tocIndex:0},{value:"Points to Note:",paraId:2,tocIndex:0},{value:"TZ",paraId:3,tocIndex:0},{value:" is used to set the application's time zone, with the default being the system's time zone;",paraId:3,tocIndex:0},{value:"APP_KEY",paraId:3,tocIndex:0},{value:" is the application's secret key, used for generating user tokens and so on (if APP_KEY is changed, the old tokens will also become invalid). It can be any random string. Please change it to your own secret key and ensure it is not disclosed to the public.",paraId:3,tocIndex:0},{value:"DB_*",paraId:3,tocIndex:0},{value:" is related to the database. If it is not the default database service in the example, please modify it according to the actual situation;",paraId:3,tocIndex:0},{value:"When deploying in a production environment, ",paraId:3,tocIndex:0},{value:"APP_ENV=production",paraId:3,tocIndex:0},{value:";",paraId:3,tocIndex:0},{value:"When deploying on a subpath, you need to configure ",paraId:3,tocIndex:0},{value:"APP_PUBLIC_PATH",paraId:3,tocIndex:0},{value:", such as ",paraId:3,tocIndex:0},{value:"APP_PUBLIC_PATH=/nocobase/",paraId:3,tocIndex:0},{value:".",paraId:3,tocIndex:0},{value:"When deploying in a production environment, to reduce volume, you can install only the necessary dependencies with ",paraId:4,tocIndex:0},{value:"yarn install --production",paraId:4,tocIndex:0},{value:">>> For more information, view the complete 'Environment Variables' <<<",paraId:5},{value:"NocoBase has already built-in ",paraId:6,tocIndex:1},{value:"PM2",paraId:6,tocIndex:1},{value:" for managing application processes. In a production environment, you can directly use ",paraId:6,tocIndex:1},{value:"yarn start",paraId:6,tocIndex:1},{value:". If you need it to run in the background, just add the ",paraId:6,tocIndex:1},{value:"-d",paraId:6,tocIndex:1},{value:" parameter, for example:",paraId:6,tocIndex:1},{value:`# Run in the background +`,paraId:17},{value:"TZ",paraId:18},{value:" is used to set the application's time zone, with the default being the system's time zone;",paraId:18},{value:"APP_KEY",paraId:18},{value:" is the application's secret key, used for generating user tokens and so on (if APP_KEY is changed, the old tokens will also become invalid). It can be any random string. Please change it to your own secret key and ensure it is not disclosed to the public.",paraId:18},{value:"DB_*",paraId:18},{value:" is related to the database. If it is not the default database service in the example, please modify it according to the actual situation.",paraId:18},{value:`cd my-nocobase-app +`,paraId:19,tocIndex:4},{value:"\u{1F4E2} This next step may take more than ten minutes due to network environment, system configuration, and other factors.",paraId:20,tocIndex:5},{value:`yarn install +`,paraId:21,tocIndex:5},{value:`yarn nocobase install --lang=en-US +`,paraId:22,tocIndex:6},{value:"Development",paraId:23,tocIndex:7},{value:`yarn dev +`,paraId:24,tocIndex:7},{value:"Production",paraId:25,tocIndex:7},{value:`yarn start +`,paraId:26,tocIndex:7},{value:"Note: For production, if the code has been modified, you need to execute ",paraId:27,tocIndex:7},{value:"yarn build",paraId:27,tocIndex:7},{value:" and restart NocoBase.",paraId:27,tocIndex:7},{value:"Open ",paraId:28,tocIndex:8},{value:"http://localhost:13000",paraId:28,tocIndex:8},{value:" in a web browser. The initial account and password are ",paraId:28,tocIndex:8},{value:"admin@nocobase.com",paraId:28,tocIndex:8},{value:" and ",paraId:28,tocIndex:8},{value:"admin123",paraId:28,tocIndex:8},{value:".",paraId:28,tocIndex:8}],_n={},Zn={title:"Custom Request",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/custom-request.md",lastUpdated:173254844e4,description:"Configure the URL for custom request operations to cater to specific business needs. For additional information, refer to the custom request plugin documentation."},Xn=[{id:"custom-request",depth:1,title:"Custom Request"}],eo=[{value:"Custom Request",paraId:0},{value:"Configure the URL for custom request operations to cater to specific business needs. For additional information, refer to the custom request plugin documentation.",paraId:1,tocIndex:0}],Vn={},to={title:"Password",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/password.md",lastUpdated:173254844e4,description:"to be added."},yo=[{id:"password",depth:1,title:"Password"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],no=[{value:"to be added.",paraId:0,tocIndex:3}],so={},Kn={title:"TextArea",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/textarea.md",lastUpdated:173254844e4,description:"Edit mode"},ur=[{id:"textarea",depth:1,title:"TextArea"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"ui-interface-configuration",depth:2,title:"UI interface configuration"}],Sn=[{value:"Edit mode",paraId:0,tocIndex:3},{value:"Read mode",paraId:1,tocIndex:3}],un={},ao={title:"Select (single)",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/choices/select.md",lastUpdated:173254844e4,description:"to be added."},Ao=[{id:"select-single",depth:1,title:"Select (single)"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Jo=[{value:"to be added.",paraId:0,tocIndex:3}],$o={},br={title:"DateTime Field Types",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/datetime/index.md",lastUpdated:173254844e4,description:"DateTime field types can be categorized as follows:"},Dr=[{id:"datetime-field-types",depth:1,title:"DateTime Field Types"},{id:"data-source-comparisons",depth:2,title:"Data Source Comparisons"},{id:"datetime-storage-processing-workflow",depth:2,title:"DateTime Storage Processing Workflow"},{id:"with-time-zone",depth:3,title:"With Time Zone"},{id:"without-time-zone",depth:3,title:"Without Time Zone"},{id:"utc",depth:2,title:"UTC"}],oo=[{value:"DateTime field types can be categorized as follows:",paraId:0,tocIndex:0},{value:"DateTime (with Time Zone):",paraId:1,tocIndex:0},{value:" These values are standardized to UTC (Coordinated Universal Time) and are subject to time zone adjustments when necessary.",paraId:1,tocIndex:0},{value:"DateTime (without Time Zone):",paraId:1,tocIndex:0},{value:" This type stores date and time data without incorporating any time zone information.",paraId:1,tocIndex:0},{value:"Date (without Time):",paraId:1,tocIndex:0},{value:" This format exclusively stores date information, omitting any time component.",paraId:1,tocIndex:0},{value:"Time:",paraId:1,tocIndex:0},{value:" Stores only time information, excluding the date.",paraId:1,tocIndex:0},{value:"Unix Timestamp:",paraId:1,tocIndex:0},{value:" This type represents the number of seconds that have elapsed since January 1, 1970, and is stored as a Unix timestamp.",paraId:1,tocIndex:0},{value:"Here are examples for each DateTime-related field type:",paraId:2,tocIndex:0},{value:"Field Type",paraId:3,tocIndex:0},{value:"Example Value",paraId:3,tocIndex:0},{value:"Description",paraId:3,tocIndex:0},{value:"DateTime (with Time Zone)",paraId:3,tocIndex:0},{value:"2024-08-24T07:30:00.000Z",paraId:3,tocIndex:0},{value:"Converted to UTC and can be adjusted for time zones",paraId:3,tocIndex:0},{value:"DateTime (without Time Zone)",paraId:3,tocIndex:0},{value:"2024-08-24 15:30:00",paraId:3,tocIndex:0},{value:"Stores date and time without time zone considerations",paraId:3,tocIndex:0},{value:"Date (without Time)",paraId:3,tocIndex:0},{value:"2024-08-24",paraId:3,tocIndex:0},{value:"Captures only the date, with no time information",paraId:3,tocIndex:0},{value:"Time",paraId:3,tocIndex:0},{value:"15:30:00",paraId:3,tocIndex:0},{value:"Captures only the time, excluding any date details",paraId:3,tocIndex:0},{value:"Unix Timestamp",paraId:3,tocIndex:0},{value:"1724437800",paraId:3,tocIndex:0},{value:"Represents seconds since 1970-01-01 00:00:00 UTC",paraId:3,tocIndex:0},{value:"Below is a comparison table for NocoBase, MySQL, and PostgreSQL:",paraId:4,tocIndex:1},{value:"Field Type",paraId:5,tocIndex:1},{value:"NocoBase",paraId:5,tocIndex:1},{value:"MySQL",paraId:5,tocIndex:1},{value:"PostgreSQL",paraId:5,tocIndex:1},{value:"DateTime (with Time Zone)",paraId:5,tocIndex:1},{value:"Datetime with timezone",paraId:5,tocIndex:1},{value:"TIMESTAMP",paraId:5,tocIndex:1},{value:" DATETIME",paraId:5,tocIndex:1},{value:"TIMESTAMP WITH TIME ZONE",paraId:5,tocIndex:1},{value:"DateTime (without Time Zone)",paraId:5,tocIndex:1},{value:"Datetime without timezone",paraId:5,tocIndex:1},{value:"DATETIME",paraId:5,tocIndex:1},{value:"TIMESTAMP WITHOUT TIME ZONE",paraId:5,tocIndex:1},{value:"Date (without Time)",paraId:5,tocIndex:1},{value:"Date",paraId:5,tocIndex:1},{value:"DATE",paraId:5,tocIndex:1},{value:"DATE",paraId:5,tocIndex:1},{value:"Time",paraId:5,tocIndex:1},{value:"Time",paraId:5,tocIndex:1},{value:"TIME",paraId:5,tocIndex:1},{value:"TIME WITHOUT TIME ZONE",paraId:5,tocIndex:1},{value:"Unix Timestamp",paraId:5,tocIndex:1},{value:"Unix timestamp",paraId:5,tocIndex:1},{value:"INTEGER",paraId:5,tocIndex:1},{value:"BIGINT",paraId:5,tocIndex:1},{value:"INTEGER",paraId:5,tocIndex:1},{value:"BIGINT",paraId:5,tocIndex:1},{value:"Time (with Time Zone)",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"TIME WITH TIME ZONE",paraId:5,tocIndex:1},{value:"Note:",paraId:6,tocIndex:1},{value:"MySQL\u2019s TIMESTAMP type covers a range between ",paraId:7,tocIndex:1},{value:"1970-01-01 00:00:01 UTC",paraId:7,tocIndex:1},{value:" and ",paraId:7,tocIndex:1},{value:"2038-01-19 03:14:07 UTC",paraId:7,tocIndex:1},{value:". For dates and times outside this range, it is recommended to use DATETIME or BIGINT to store Unix timestamps.",paraId:7,tocIndex:1},{value:"This includes ",paraId:8,tocIndex:3},{value:"DateTime (without Time Zone)",paraId:8,tocIndex:3},{value:" and ",paraId:8,tocIndex:3},{value:"Unix Timestamp",paraId:8,tocIndex:3},{value:".",paraId:8,tocIndex:3},{value:"Note:",paraId:9,tocIndex:3},{value:"To accommodate a broader range of dates, NocoBase uses the DATETIME type in MySQL for DateTime (with Time Zone) fields. The date value stored is converted based on the server's TZ environment variable, meaning that if the TZ environment variable changes, the stored DateTime value will also change.",paraId:10,tocIndex:3},{value:"Since there is a time zone difference between UTC and local time, directly displaying the raw UTC value could lead to user confusion.",paraId:10,tocIndex:3},{value:"UTC (Coordinated Universal Time) is the global time standard used to coordinate and synchronize time worldwide. It is a highly precise time standard, maintained by atomic clocks, and synchronized with the Earth's rotation.",paraId:11,tocIndex:5},{value:"The difference between UTC and local time can cause confusion when displaying raw UTC values. For example:",paraId:12,tocIndex:5},{value:"Time Zone",paraId:13,tocIndex:5},{value:"DateTime",paraId:13,tocIndex:5},{value:"UTC",paraId:13,tocIndex:5},{value:"2024-08-24T07:30:00.000Z",paraId:13,tocIndex:5},{value:"UTC+8",paraId:13,tocIndex:5},{value:"2024-08-24 15:30:00",paraId:13,tocIndex:5},{value:"UTC+5",paraId:13,tocIndex:5},{value:"2024-08-24 12:30:00",paraId:13,tocIndex:5},{value:"UTC-5",paraId:13,tocIndex:5},{value:"2024-08-24 02:30:00",paraId:13,tocIndex:5},{value:"UTC+0",paraId:13,tocIndex:5},{value:"2024-08-24 07:30:00",paraId:13,tocIndex:5},{value:"UTC-6",paraId:13,tocIndex:5},{value:"2024-08-23 01:30:00",paraId:13,tocIndex:5},{value:"These different times all correspond to the same moment, merely expressed in various time zones.",paraId:14,tocIndex:5}],yn={},Yn={title:"Line",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/geometric/line.md",lastUpdated:173254844e4,description:"to be added."},Eo=[{id:"line",depth:1,title:"Line"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Oo=[{value:"to be added.",paraId:0,tocIndex:3}],vo={},It={title:"Markdown",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/media/markdown.md",lastUpdated:173254844e4,description:"to be added."},et=[{id:"markdown",depth:1,title:"Markdown"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Rn=[{value:"to be added.",paraId:0,tocIndex:3}],lo={},co={title:"\u8868\u8FBE\u5F0F\u8868\u4F7F\u7528",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/expression/index.md",lastUpdated:173254844e4,description:"\u533A\u522B\u4E8E\u6570\u636E\u8868\u4E2D\u9488\u5BF9\u5168\u8868\u7EDF\u4E00\u7684\u516C\u5F0F\u5B57\u6BB5\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u7684\u53EF\u4EE5\u9488\u5BF9\u6BCF\u884C\u6570\u636E\u8FDB\u884C\u4E0D\u540C\u516C\u5F0F\u7684\u8BA1\u7B97\u3002\u52A8\u6001\u8868\u8FBE\u5F0F\u8BA1\u7B97\u76EE\u524D\u53EA\u5728\u5DE5\u4F5C\u6D41\u4E2D\u652F\u6301\u3002"},wo=[{id:"\u8868\u8FBE\u5F0F\u8868\u4F7F\u7528",depth:1,title:"\u8868\u8FBE\u5F0F\u8868\u4F7F\u7528"},{id:"\u57FA\u672C\u6982\u5FF5",depth:2,title:"\u57FA\u672C\u6982\u5FF5"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],Ro=[{value:"\u533A\u522B\u4E8E\u6570\u636E\u8868\u4E2D\u9488\u5BF9\u5168\u8868\u7EDF\u4E00\u7684\u516C\u5F0F\u5B57\u6BB5\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u7684\u53EF\u4EE5\u9488\u5BF9\u6BCF\u884C\u6570\u636E\u8FDB\u884C\u4E0D\u540C\u516C\u5F0F\u7684\u8BA1\u7B97\u3002\u52A8\u6001\u8868\u8FBE\u5F0F\u8BA1\u7B97\u76EE\u524D",paraId:0,tocIndex:1},{value:"\u53EA\u5728\u5DE5\u4F5C\u6D41\u4E2D\u652F\u6301",paraId:0,tocIndex:1},{value:"\u3002",paraId:0,tocIndex:1},{value:"\u8868\u8FBE\u5F0F\u6A21\u677F\u8868\u7528\u4E8E\u5B58\u50A8\u9488\u5BF9\u540C\u4E00\u7C7B\u6570\u636E\u4E0D\u540C\u7684\u516C\u5F0F\uFF0C\u4E0E\u9700\u8981\u53C2\u4E0E\u8BA1\u7B97\u7684\u6570\u636E\u8868\u901A\u5E38\u4E3A\u4E00\u5BF9\u591A\u5173\u7CFB\uFF08\u666E\u901A\u6570\u636E\u8868 belongsTo \u8868\u8FBE\u5F0F\u8868\uFF09\uFF1A",paraId:1,tocIndex:1},{value:"m:1 \u53EA\u662F\u901A\u5E38\u7684\u7528\u6CD5\uFF0C\u4F46\u5B9E\u9645\u4E0A\u666E\u901A\u6570\u636E\u8868\u4E0E\u8868\u8FBE\u5F0F\u8868\u7684\u5173\u7CFB\u662F\u53EF\u4EE5\u4EFB\u610F\u5EFA\u7ACB\u7684\uFF0C\u4E00\u884C\u6570\u636E\u5BF9\u591A\u4E2A\u8868\u8FBE\u5F0F\u901A\u5E38\u8FD8\u9700\u8981\u5176\u4ED6\u533A\u5206\u5B57\u6BB5\uFF0C\u6216\u8005\u662F\u5728\u5FAA\u73AF\u4E2D\u5BF9\u4E00\u884C\u6570\u636E\u505A\u591A\u79CD\u8BA1\u7B97\u7684\u573A\u666F\u3002",paraId:2,tocIndex:1},{value:"\u8868\u8FBE\u5F0F\u8868\u4E09\u4E2A\u5B57\u6BB5\u7684\u542B\u4E49\uFF1A",paraId:3,tocIndex:1},{value:"\u6570\u636E\u8868",paraId:4,tocIndex:1},{value:"\uFF1A\u76F8\u5F53\u4E8E\u51FD\u6570\u7684\u53C2\u6570\uFF0C\u5728\u8868\u8FBE\u5F0F\u4E2D\u53EF\u7528\u7684\u53D8\u91CF\u5B57\u6BB5\u6765\u6E90\uFF0C\u5373\u53EA\u80FD\u57FA\u4E8E\u4E00\u4E2A\u6570\u636E\u8868\u7684\u5B57\u6BB5\u8FDB\u884C\u8BA1\u7B97\u914D\u7F6E\uFF1B",paraId:4,tocIndex:1},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:4,tocIndex:1},{value:"\uFF1A\u76EE\u524D\u53EF\u9009 mathjs \u548C formulajs\uFF0C\u63A8\u8350\u4F7F\u7528 formulajs\u3002",paraId:4,tocIndex:1},{value:"\u8868\u8FBE\u5F0F",paraId:4,tocIndex:1},{value:"\uFF1A\u76F8\u5F53\u4E8E\u51FD\u6570\u7684\u5185\u5BB9\uFF0C\u8BA1\u7B97\u65F6\u5C06\u6839\u636E\u914D\u7F6E\u6267\u884C\u5F97\u5230\u4E00\u4E2A\u7ED3\u679C\u3002",paraId:4,tocIndex:1},{value:"\u4EE5\u5546\u54C1\u4E0B\u5355\u8FC7\u7A0B\u4E2D\u6839\u636E\u4E0D\u540C\u5546\u54C1\u8FDB\u884C\u4E0D\u540C\u4F18\u60E0\u89C4\u5219\u7684\u6700\u7EC8\u4EF7\u683C\u8BA1\u7B97\u4E3E\u4F8B\u3002",paraId:5,tocIndex:2},{value:"\u5EFA\u7ACB\u5546\u54C1\u8868\uFF1A",paraId:6,tocIndex:2},{value:"\u5B57\u6BB5\u540D",paraId:7,tocIndex:2},{value:"\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u5546\u54C1\u540D",paraId:7,tocIndex:2},{value:"\u6587\u672C",paraId:7,tocIndex:2},{value:"\u5546\u54C1\u539F\u4EF7",paraId:7,tocIndex:2},{value:"\u6570\u5B57",paraId:7,tocIndex:2},{value:"\u4F18\u60E0\u89C4\u5219",paraId:7,tocIndex:2},{value:"belongsTo\uFF08\u4F18\u60E0\u89C4\u5219\u8868\uFF09",paraId:7,tocIndex:2},{value:"\u5EFA\u7ACB\u4F18\u60E0\u89C4\u5219\u8868\uFF08\u4F7F\u7528\u8868\u8FBE\u5F0F\u8868\u6A21\u677F\u521B\u5EFA\uFF09\uFF1A",paraId:8,tocIndex:2},{value:"\u5B57\u6BB5\u540D",paraId:9,tocIndex:2},{value:"\u7C7B\u578B",paraId:9,tocIndex:2},{value:"\u89C4\u5219\u540D\u79F0",paraId:9,tocIndex:2},{value:"\u6587\u672C",paraId:9,tocIndex:2},{value:"\u6570\u636E\u8868",paraId:9,tocIndex:2},{value:"\u5355\u9009\uFF08\u6570\u636E\u8868\uFF09",paraId:9,tocIndex:2},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:9,tocIndex:2},{value:"\u5355\u9009\uFF08mathjs/formulajs\uFF09",paraId:9,tocIndex:2},{value:"\u8868\u8FBE\u5F0F",paraId:9,tocIndex:2},{value:"\u6587\u672C",paraId:9,tocIndex:2},{value:"\u521B\u5EFA\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:10,tocIndex:2},{value:"ID",paraId:11,tocIndex:2},{value:"\u540D\u79F0",paraId:11,tocIndex:2},{value:"\u6570\u636E\u8868",paraId:11,tocIndex:2},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:11,tocIndex:2},{value:"\u8868\u8FBE\u5F0F",paraId:11,tocIndex:2},{value:"1",paraId:11,tocIndex:2},{value:"\u516B\u6298\u5546\u54C1",paraId:11,tocIndex:2},{value:"\u5546\u54C1",paraId:11,tocIndex:2},{value:"formula",paraId:11,tocIndex:2},{value:"{{\u5546\u54C1.\u4EF7\u683C}} * 0.8",paraId:11,tocIndex:2},{value:"2",paraId:11,tocIndex:2},{value:"\u4E5D\u6298\u5546\u54C1",paraId:11,tocIndex:2},{value:"\u5546\u54C1",paraId:11,tocIndex:2},{value:"formula",paraId:11,tocIndex:2},{value:"{{\u5546\u54C1.\u4EF7\u683C}} * 0.9",paraId:11,tocIndex:2},{value:"\u521B\u5EFA\u5546\u54C1\uFF0C\u5E76\u5173\u8054\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:12,tocIndex:2},{value:"ID",paraId:13,tocIndex:2},{value:"\u5546\u54C1\u540D\u79F0",paraId:13,tocIndex:2},{value:"\u4EF7\u683C",paraId:13,tocIndex:2},{value:"\u4F18\u60E0\u89C4\u5219 ID",paraId:13,tocIndex:2},{value:"1",paraId:13,tocIndex:2},{value:"iPhone 14 Pro",paraId:13,tocIndex:2},{value:"7999",paraId:13,tocIndex:2},{value:"2",paraId:13,tocIndex:2},{value:"2",paraId:13,tocIndex:2},{value:"iPhone 13 Pro",paraId:13,tocIndex:2},{value:"5999",paraId:13,tocIndex:2},{value:"1",paraId:13,tocIndex:2},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\uFF0C\u8BA2\u5355\u521B\u5EFA\u65F6\u89E6\u53D1\uFF1A",paraId:14,tocIndex:2},{value:"\u521B\u5EFA\u4E00\u4E2A\u8FD0\u7B97\u8282\u70B9\uFF0C\u914D\u7F6E\u52A8\u6001\u8868\u8FBE\u5F0F\u4E3A\u89E6\u53D1\u6570\u636E/\u5546\u54C1/\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:15,tocIndex:2},{value:"\u914D\u7F6E\u53D8\u91CF\u6570\u636E\u6E90\u4E3A\u89E6\u53D1\u6570\u636E\u4E2D\u7684\u5546\u54C1\uFF1A",paraId:16,tocIndex:2},{value:`\u589E\u52A0\u4E00\u4E2A\u66F4\u65B0\u6570\u636E\u8282\u70B9\uFF0C\u914D\u7F6E\u66F4\u65B0\u8BA2\u5355\u603B\u4EF7\u4E3A\u8BA1\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF1A +`,paraId:17,tocIndex:2},{value:"\u521B\u5EFA\u8BA2\u5355\u89E6\u53D1\u5DE5\u4F5C\u6D41\uFF0C\u518D\u67E5\u770B\u8BA2\u5355\u5217\u8868\uFF0C\u6838\u5BF9\u4EF7\u683C\uFF1A",paraId:17,tocIndex:2},{value:"\u8BA2\u5355\u5546\u54C1",paraId:18,tocIndex:2},{value:"\u8BA2\u5355\u5546\u54C1 / \u539F\u4EF7",paraId:18,tocIndex:2},{value:"\u4F18\u60E0\u89C4\u5219",paraId:18,tocIndex:2},{value:"\u603B\u4EF7",paraId:18,tocIndex:2},{value:"iPhone 14 Pro",paraId:18,tocIndex:2},{value:"7999",paraId:18,tocIndex:2},{value:"\u4E5D\u6298",paraId:18,tocIndex:2},{value:"7999 * 0.9 = 7199.1",paraId:18,tocIndex:2},{value:"iPhone 13 Pro",paraId:18,tocIndex:2},{value:"6999",paraId:18,tocIndex:2},{value:"\u516B\u6298",paraId:18,tocIndex:2},{value:"6999 * 0.8 = 5599.2",paraId:18,tocIndex:2}],Go={},lr={title:"\u5B50\u8868\u683C",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/sub-table/index.md",lastUpdated:173254844e4,description:"\u5B50\u8868\u683C\u4EE5\u8868\u683C\u5F62\u5F0F\u5C55\u793A\u4E00\u5BF9\u591A\u6216\u591A\u5BF9\u591A\u5173\u7CFB\u8BB0\u5F55\u3002\u5B83\u63D0\u4F9B\u4E86\u4E00\u79CD\u6E05\u6670\u3001\u7ED3\u6784\u5316\u7684\u65B9\u5F0F\u6765\u5C55\u793A\u548C\u7BA1\u7406\u5173\u8054\u6570\u636E\uFF0C\u6BCF\u4E00\u884C\u4EE3\u8868\u4E00\u4E2A\u5173\u8054\u8BB0\u5F55\uFF0C\u6BCF\u5217\u4EE3\u8868\u5173\u8054\u8BB0\u5F55\u7684\u4E0D\u540C\u5B57\u6BB5\u3002"},md=[{id:"\u5B50\u8868\u683C",depth:1,title:"\u5B50\u8868\u683C"}],ar=[{value:"\u5B50\u8868\u683C\u4EE5\u8868\u683C\u5F62\u5F0F\u5C55\u793A",paraId:0,tocIndex:0},{value:"\u4E00\u5BF9\u591A\u6216\u591A\u5BF9\u591A",paraId:0,tocIndex:0},{value:"\u5173\u7CFB\u8BB0\u5F55\u3002\u5B83\u63D0\u4F9B\u4E86\u4E00\u79CD\u6E05\u6670\u3001\u7ED3\u6784\u5316\u7684\u65B9\u5F0F\u6765\u5C55\u793A\u548C\u7BA1\u7406\u5173\u8054\u6570\u636E\uFF0C\u6BCF\u4E00\u884C\u4EE3\u8868\u4E00\u4E2A\u5173\u8054\u8BB0\u5F55\uFF0C\u6BCF\u5217\u4EE3\u8868\u5173\u8054\u8BB0\u5F55\u7684\u4E0D\u540C\u5B57\u6BB5\u3002",paraId:0,tocIndex:0},{value:"\u5728\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u6A21\u578B\u4E2D\uFF0C\u4EFB\u52A1\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u5BA1\u6279\u7EAA\u5F55\u300D\uFF08\u4E00\u5BF9\u591A\uFF09\u3002",paraId:1,tocIndex:0},{value:"\u7F16\u8F91\u4E0B\u7684\u5B50\u8868\u683C",paraId:2,tocIndex:0},{value:"\u5B50\u8868\u683C\u4E2D\u5B57\u6BB5\u4F1A\u6839\u636E\u4E0D\u540C\u5B57\u6BB5\u7C7B\u578B\u5C55\u793A\u4E0D\u540C\u7EC4\u4EF6\uFF0C\u800C\u5927\u5B57\u6BB5\uFF08\u5BCC\u6587\u672C\uFF0CJson,\u591A\u884C\u6587\u672C\u7B49\u5B57\u6BB5\uFF09\u5219\u901A\u8FC7\u60AC\u6D6E\u5F39\u7A97\u7F16\u8F91",paraId:3,tocIndex:0},{value:"\u5B50\u8868\u683C\u4E2D\u5173\u7CFB\u5B57\u6BB5\u9ED8\u8BA4\u7EC4\u4EF6\u662F\u4E0B\u62C9\u9009\u62E9\u5668\uFF08\u53EF\u8C03\u6574\u4E3A\u6570\u636E\u9009\u62E9\u5668/\u5B50\u8868\u5355\uFF08\u5F39\u7A97\uFF09\uFF09",paraId:4,tocIndex:0},{value:"\u8BE6\u60C5\u4E0B\u7684\u5B50\u8868\u683C",paraId:5,tocIndex:0}],hd={},td={title:"\u8868\u683C\u914D\u7F6E\u9875\u9762\uFF08\u591A\u79CD\u65B0\u589E\u8868\u5355\uFF09",toc:"menu",filename:"docs/en-US/plugin-samples/plugin-settings/table-multiple-add-forms.md",lastUpdated:173254844e4,description:"TODO"},Tr=[{id:"\u8868\u683C\u914D\u7F6E\u9875\u9762\u591A\u79CD\u65B0\u589E\u8868\u5355",depth:1,title:"\u8868\u683C\u914D\u7F6E\u9875\u9762\uFF08\u591A\u79CD\u65B0\u589E\u8868\u5355\uFF09"}],jr=[{value:"TODO",paraId:0,tocIndex:0}],Nd={},zd={title:"Belongs To Repository",toc:"menu",filename:"docs/en-US/api/database/relation-repository/belongs-to-repository.md",lastUpdated:173254844e4,description:"The interface is the same as HasOneRepository. BelongsToRepository is the Repository for handling BelongsTo relationships, and it provides some convenient methods to handle BelongsTo relationships."},fd=[{id:"belongstorepository",depth:2,title:"BelongsToRepository"}],di=[{value:"The interface is the same as ",paraId:0,tocIndex:0},{value:"HasOneRepository",paraId:1,tocIndex:0},{value:". ",paraId:0,tocIndex:0},{value:"BelongsToRepository",paraId:0,tocIndex:0},{value:" is the ",paraId:0,tocIndex:0},{value:"Repository",paraId:0,tocIndex:0},{value:" for handling ",paraId:0,tocIndex:0},{value:"BelongsTo",paraId:0,tocIndex:0},{value:" relationships, and it provides some convenient methods to handle ",paraId:0,tocIndex:0},{value:"BelongsTo",paraId:0,tocIndex:0},{value:" relationships.",paraId:0,tocIndex:0}],xd={},gd={title:"Update record",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/update-record.md",lastUpdated:173254844e4,description:"Custom row operations update record by configuring field assignments to specify the content to be modified."},ii=[{id:"update-record",depth:1,title:"Update record"}],bd=[{value:"Custom row operations update record by configuring field assignments to specify the content to be modified.",paraId:0,tocIndex:0},{value:"As shown in the illustration, an update data operation is configured in the waybill table block to confirm delivery.",paraId:1,tocIndex:0}],li={},zo={title:"JSON",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/advanced/json.md",lastUpdated:173254844e4,description:"to be added."},nd=[{id:"json",depth:1,title:"JSON"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],od=[{value:"to be added.",paraId:0,tocIndex:3}],Fd={},ci={title:"Sort",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/advanced/sort.md",lastUpdated:173254844e4},Hr=[],al=[],si={},ui={title:"UUID",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/advanced/uuid.md",lastUpdated:173254844e4,description:"to be added."},ro=[{id:"uuid",depth:1,title:"UUID"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Vo=[{value:"to be added.",paraId:0,tocIndex:3}],pr={},Ir={title:"Integer",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/integer.md",lastUpdated:173254844e4,description:"to be added."},Ic=[{id:"integer",depth:1,title:"Integer"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],tl=[{value:"to be added.",paraId:0,tocIndex:3}],Bd={},pi={title:"Percent",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/percent.md",lastUpdated:173254844e4,description:"to be added."},yd=[{id:"percent",depth:1,title:"Percent"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],_c=[{value:"to be added.",paraId:0,tocIndex:3}],au={},tu={title:"Date",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/datetime/date.md",lastUpdated:173254844e4,description:"to be added."},vc=[{id:"date",depth:1,title:"Date"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Ii=[{value:"to be added.",paraId:0,tocIndex:3}],_i={},nl={title:"time",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/datetime/time.md",lastUpdated:173254844e4,description:"to be added."},ol=[{id:"time",depth:1,title:"time"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],rl=[{value:"to be added.",paraId:0,tocIndex:3}],dl={},nu={title:"\u5B50\u8868\u5355",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/sub-form/index.md",lastUpdated:173254844e4,description:"\u82E5\u60F3\u5904\u7406\u5C42\u7EA7\u8F83\u6DF1\u7684\u5173\u7CFB\u6570\u636E\uFF0C\u901A\u8FC7 select \u548C\u6570\u636E\u9009\u62E9\u5668\u90FD\u4E0D\u592A\u65B9\u4FBF\uFF0C\u9700\u8981\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\uFF0C\u70B9\u51FB\u6B21\u6570\u592A\u591A\uFF0C\u5F88\u7E41\u7410\uFF1B\u800C\u5B50\u8868\u5355\u5C31\u662F\u4E3A\u4E86\u4F18\u5316\u8FD9\u79CD\u573A\u666F\uFF0C\u4F7F\u7528\u6237\u80FD\u591F\u5728\u5F53\u524D\u9875\u9762\u4E0A\u76F4\u63A5\u7EF4\u62A4\u5173\u8054\u7684\u4FE1\u606F\uFF0C\u591A\u5C42\u5173\u7CFB\u4EE5\u5D4C\u5957\u8868\u5355\u7684\u5F62\u5F0F\u5C55\u793A"},mc=[{id:"\u5B50\u8868\u5355",depth:1,title:"\u5B50\u8868\u5355"}],ou=[{value:"\u82E5\u60F3\u5904\u7406\u5C42\u7EA7\u8F83\u6DF1\u7684\u5173\u7CFB\u6570\u636E\uFF0C\u901A\u8FC7 select \u548C\u6570\u636E\u9009\u62E9\u5668\u90FD\u4E0D\u592A\u65B9\u4FBF\uFF0C\u9700\u8981\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\uFF0C\u70B9\u51FB\u6B21\u6570\u592A\u591A\uFF0C\u5F88\u7E41\u7410\uFF1B\u800C\u5B50\u8868\u5355\u5C31\u662F\u4E3A\u4E86\u4F18\u5316\u8FD9\u79CD\u573A\u666F\uFF0C\u4F7F\u7528\u6237\u80FD\u591F\u5728\u5F53\u524D\u9875\u9762\u4E0A\u76F4\u63A5\u7EF4\u62A4\u5173\u8054\u7684\u4FE1\u606F\uFF0C\u591A\u5C42\u5173\u7CFB\u4EE5\u5D4C\u5957\u8868\u5355\u7684\u5F62\u5F0F\u5C55\u793A",paraId:0,tocIndex:0},{value:"\u652F\u6301\u591A\u5C42\u5173\u7CFB\u5B57\u6BB5\u7684\u5D4C\u5957\u663E\u793A",paraId:1,tocIndex:0},{value:"\u53EF\u4EE5\u914D\u7F6E\u662F\u5426\u663E\u793A\u6807\u9898\u548C\u8C03\u6574\u5E03\u5C40",paraId:2,tocIndex:0}],ru={},il={title:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/custom-request.md",lastUpdated:173254844e4,description:"\u914D\u7F6E\u81EA\u5B9A\u4E49\u8BF7\u6C42\u64CD\u4F5C\u7684\u8BF7\u6C42\u5730\u5740\uFF0C\u4EE5\u6EE1\u8DB3\u7279\u5B9A\u4E1A\u52A1\u9700\u6C42\uFF0C\u8BE6\u60C5\u67E5\u770B\u81EA\u5B9A\u4E49\u8BF7\u6C42\u63D2\u4EF6\u6587\u6863"},Or=[{id:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",depth:1,title:"\u81EA\u5B9A\u4E49\u8BF7\u6C42"}],hc=[{value:"\u914D\u7F6E\u81EA\u5B9A\u4E49\u8BF7\u6C42\u64CD\u4F5C\u7684\u8BF7\u6C42\u5730\u5740\uFF0C\u4EE5\u6EE1\u8DB3\u7279\u5B9A\u4E1A\u52A1\u9700\u6C42\uFF0C\u8BE6\u60C5\u67E5\u770B\u81EA\u5B9A\u4E49\u8BF7\u6C42\u63D2\u4EF6\u6587\u6863",paraId:0,tocIndex:0}],wd={},Cr={title:"\u6570\u636E\u8868\u5B57\u6BB5\u7C7B\u578B",toc:"menu",filename:"docs/en-US/plugins/collection-manager/user/field-interfaces/index.md",lastUpdated:173254844e4,description:"\u7528\u4E8E\u5EFA\u7ACB\u5404\u79CD\u5173\u8054\u5173\u7CFB"},jd=[{id:"\u6570\u636E\u8868\u5B57\u6BB5\u7C7B\u578B",depth:1,title:"\u6570\u636E\u8868\u5B57\u6BB5\u7C7B\u578B"},{id:"basic",depth:2,title:"Basic"},{id:"choices",depth:2,title:"Choices"},{id:"media",depth:2,title:"Media"},{id:"date--time",depth:2,title:"Date & Time"},{id:"relation",depth:2,title:"Relation"},{id:"advanced",depth:2,title:"Advanced"},{id:"system-info",depth:2,title:"System info"}],Rr=[{value:"Single line text",paraId:0,tocIndex:1},{value:"Username",paraId:0,tocIndex:1},{value:"Long text",paraId:0,tocIndex:1},{value:"Phone",paraId:0,tocIndex:1},{value:"Email",paraId:0,tocIndex:1},{value:"URL",paraId:0,tocIndex:1},{value:"Integer",paraId:0,tocIndex:1},{value:"Number",paraId:0,tocIndex:1},{value:"Percent",paraId:0,tocIndex:1},{value:"Password",paraId:0,tocIndex:1},{value:"Color",paraId:0,tocIndex:1},{value:"Icon",paraId:0,tocIndex:1},{value:"Checkbox",paraId:1,tocIndex:2},{value:"Single select",paraId:1,tocIndex:2},{value:"Multiple select",paraId:1,tocIndex:2},{value:"Radio group",paraId:1,tocIndex:2},{value:"Checkbox group",paraId:1,tocIndex:2},{value:"China region\uFF08\u63D2\u4EF6\u6269\u5C55\uFF09",paraId:1,tocIndex:2},{value:"Markdown",paraId:2,tocIndex:3},{value:"Rich Text",paraId:2,tocIndex:3},{value:"Attachment",paraId:2,tocIndex:3},{value:"Datetime",paraId:3,tocIndex:4},{value:"Time",paraId:3,tocIndex:4},{value:"\u7528\u4E8E\u5EFA\u7ACB\u5404\u79CD\u5173\u8054\u5173\u7CFB",paraId:4,tocIndex:5},{value:"One to one (belongs to)",paraId:5,tocIndex:5},{value:"One to one (has one)",paraId:5,tocIndex:5},{value:"One to many",paraId:5,tocIndex:5},{value:"Many to one",paraId:5,tocIndex:5},{value:"Many to many",paraId:5,tocIndex:5},{value:"Formula",paraId:6,tocIndex:6},{value:"Sequence",paraId:6,tocIndex:6},{value:"JSON",paraId:6,tocIndex:6},{value:"Collection",paraId:6,tocIndex:6},{value:"ID",paraId:7,tocIndex:7},{value:"Table OID (\u7EE7\u627F\u8868\u4E2D\u4F7F\u7528)",paraId:7,tocIndex:7},{value:"Created at",paraId:7,tocIndex:7},{value:"Last updated at",paraId:7,tocIndex:7},{value:"Created by",paraId:7,tocIndex:7},{value:"Last updated by",paraId:7,tocIndex:7}],ll={},du={title:"create-nocobase-app",toc:"menu",filename:"docs/en-US/welcome/getting-started/deployment/create-nocobase-app.md",lastUpdated:173254844e4,description:"The other processes are no different from the create-nocobase-app."},iu=[{id:"create-nocobase-app",depth:1,title:"create-nocobase-app"},{id:"managing-application-processes",depth:2,title:"Managing Application Processes"},{id:"configuring-nginx",depth:2,title:"Configuring Nginx"}],rd=[{value:"The other processes are no different from the ",paraId:0,tocIndex:0},{value:"create-nocobase-app",paraId:1,tocIndex:0},{value:".",paraId:0,tocIndex:0},{value:"Points to Note:",paraId:2,tocIndex:0},{value:"TZ",paraId:3,tocIndex:0},{value:" is used to set the application's time zone, with the default being the system's time zone;",paraId:3,tocIndex:0},{value:"APP_KEY",paraId:3,tocIndex:0},{value:" is the application's secret key, used for generating user tokens and so on (if APP_KEY is changed, the old tokens will also become invalid). It can be any random string. Please change it to your own secret key and ensure it is not disclosed to the public.",paraId:3,tocIndex:0},{value:"DB_*",paraId:3,tocIndex:0},{value:" is related to the database. If it is not the default database service in the example, please modify it according to the actual situation;",paraId:3,tocIndex:0},{value:"When deploying in a production environment, ",paraId:3,tocIndex:0},{value:"APP_ENV=production",paraId:3,tocIndex:0},{value:";",paraId:3,tocIndex:0},{value:"When deploying on a subpath, you need to configure ",paraId:3,tocIndex:0},{value:"APP_PUBLIC_PATH",paraId:3,tocIndex:0},{value:", such as ",paraId:3,tocIndex:0},{value:"APP_PUBLIC_PATH=/nocobase/",paraId:3,tocIndex:0},{value:".",paraId:3,tocIndex:0},{value:"When deploying in a production environment, to reduce volume, you can install only the necessary dependencies with ",paraId:4,tocIndex:0},{value:"yarn install --production",paraId:4,tocIndex:0},{value:">>> For more information, view the complete 'Environment Variables' <<<",paraId:5},{value:"NocoBase has already built-in ",paraId:6,tocIndex:1},{value:"PM2",paraId:6,tocIndex:1},{value:" for managing application processes. In a production environment, you can directly use ",paraId:6,tocIndex:1},{value:"yarn start",paraId:6,tocIndex:1},{value:". If you need it to run in the background, just add the ",paraId:6,tocIndex:1},{value:"-d",paraId:6,tocIndex:1},{value:" parameter, for example:",paraId:6,tocIndex:1},{value:`# Run in the background yarn start -d `,paraId:7,tocIndex:1},{value:"Restart",paraId:8,tocIndex:1},{value:`yarn nocobase pm2-restart `,paraId:9,tocIndex:1},{value:"Stop",paraId:10,tocIndex:1},{value:`yarn nocobase pm2-stop `,paraId:11,tocIndex:1},{value:"More PM2 commands",paraId:12,tocIndex:1},{value:`yarn nocobase pm2 -h `,paraId:13,tocIndex:1},{value:"In a production environment, you can consider having Nginx proxy the static files. NocoBase provides the ",paraId:14,tocIndex:2},{value:"create-nginx-conf",paraId:14,tocIndex:2},{value:" command to generate Nginx configuration files.",paraId:14,tocIndex:2},{value:`yarn nocobase create-nginx-conf `,paraId:15,tocIndex:2},{value:"The file path is ",paraId:16,tocIndex:2},{value:"./storage/nocobase.conf",paraId:16,tocIndex:2},{value:". Adjust it further according to the actual situation, and finally add it to ",paraId:16,tocIndex:2},{value:"/etc/nginx/sites-enabled",paraId:16,tocIndex:2},{value:", for example:",paraId:16,tocIndex:2},{value:`ln -s /app/nocobase/storage/nocobase.conf /etc/nginx/sites-enabled/nocobase.conf -`,paraId:17,tocIndex:2},{value:"Remarks",paraId:18,tocIndex:2},{value:"When deploying to a subpath, you need to configure the ",paraId:19,tocIndex:2},{value:"APP_PUBLIC_PATH",paraId:19,tocIndex:2},{value:" environment variable. After configuring, you need to re-execute the ",paraId:19,tocIndex:2},{value:"create-nginx-conf",paraId:19,tocIndex:2},{value:" command;",paraId:19,tocIndex:2},{value:"Modify the generated ",paraId:19,tocIndex:2},{value:"nocobase.conf",paraId:19,tocIndex:2},{value:" according to the actual situation, such as configuring the domain name, etc.;",paraId:19,tocIndex:2},{value:"/app/nocobase/",paraId:19,tocIndex:2},{value:" is the directory where the example application is located, and it needs to be adjusted according to the actual situation;",paraId:19,tocIndex:2},{value:"/etc/nginx/sites-enabled",paraId:19,tocIndex:2},{value:" is the default Nginx configuration path, the actual situation may vary, you can check it with ",paraId:19,tocIndex:2},{value:"nginx -V",paraId:19,tocIndex:2},{value:";",paraId:19,tocIndex:2},{value:"If you are not using Nginx, you can make some adjustments referring to the Nginx configuration.",paraId:19,tocIndex:2}],Hd={},kd={title:"\u914D\u7F6E\u8D44\u6E90\u548C\u64CD\u4F5C",toc:"menu",filename:"docs/en-US/development/server/resources-actions-v2/configuration.md",lastUpdated:1732240239e3,description:`\u6700\u7B80\u5355\u7684 resource actions +`,paraId:17,tocIndex:2},{value:"Remarks",paraId:18,tocIndex:2},{value:"When deploying to a subpath, you need to configure the ",paraId:19,tocIndex:2},{value:"APP_PUBLIC_PATH",paraId:19,tocIndex:2},{value:" environment variable. After configuring, you need to re-execute the ",paraId:19,tocIndex:2},{value:"create-nginx-conf",paraId:19,tocIndex:2},{value:" command;",paraId:19,tocIndex:2},{value:"Modify the generated ",paraId:19,tocIndex:2},{value:"nocobase.conf",paraId:19,tocIndex:2},{value:" according to the actual situation, such as configuring the domain name, etc.;",paraId:19,tocIndex:2},{value:"/app/nocobase/",paraId:19,tocIndex:2},{value:" is the directory where the example application is located, and it needs to be adjusted according to the actual situation;",paraId:19,tocIndex:2},{value:"/etc/nginx/sites-enabled",paraId:19,tocIndex:2},{value:" is the default Nginx configuration path, the actual situation may vary, you can check it with ",paraId:19,tocIndex:2},{value:"nginx -V",paraId:19,tocIndex:2},{value:";",paraId:19,tocIndex:2},{value:"If you are not using Nginx, you can make some adjustments referring to the Nginx configuration.",paraId:19,tocIndex:2}],Hd={},kd={title:"\u914D\u7F6E\u8D44\u6E90\u548C\u64CD\u4F5C",toc:"menu",filename:"docs/en-US/development/server/resources-actions-v2/configuration.md",lastUpdated:173254844e4,description:`\u6700\u7B80\u5355\u7684 resource actions \u5E26\u9ED8\u8BA4\u53C2\u6570\u7684 Action \u4F7F\u7528\u5168\u5C40 Action Action \u53C2\u6570\u7684\u591A\u6765\u6E90\u5408\u5E76 @@ -422,7 +437,7 @@ POST /api/posts/1/comments:destroy/1 destroy: {}, }, }); -`,paraId:18,tocIndex:6}],Sd={},Wr={title:"Number",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/number.md",lastUpdated:1732240239e3,description:"to be added."},mo=[{id:"number",depth:1,title:"Number"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],uo=[{value:"to be added.",paraId:0,tocIndex:3}],$r={},Ko={title:"After Successful Submission",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/affter-successful.md",lastUpdated:1732240239e3,description:"The After successful submission enables customization of the response behavior upon completion. It supports defining custom success messages, selecting automatic or manual dismissal of success notifications, and choosing whether to remain on the current page, return to the previous popup or page, or redirect to a specified route, depending on the requirements."},tr=[{id:"after-successful-submission",depth:1,title:"After Successful Submission"},{id:"introduction",depth:2,title:"Introduction"}],dd=[{value:"The After successful submission enables customization of the response behavior upon completion. It supports defining custom success messages, selecting automatic or manual dismissal of success notifications, and choosing whether to remain on the current page, return to the previous popup or page, or redirect to a specified route, depending on the requirements.",paraId:0,tocIndex:1},{value:"Stay on the current popup or page: After the operation is successful, the pop-up window or route is not closed",paraId:1,tocIndex:1},{value:"Return to the previous popup or page(default): Close the popup window after the operation is successful",paraId:1,tocIndex:1},{value:"Redirect to: After the operation succeeds, the route is switched to the specified route",paraId:1,tocIndex:1}],Ud={},nr={title:"Workflow: Manual todos block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/other-blocks/workflow-manual-todos.md",lastUpdated:1732240239e3,description:"To facilitate manual processing, a todo list should be added to the page. This list will display tasks that require attention, allowing relevant personnel to easily access and manage specific tasks within the manual node."},mi=[{id:"workflow-manual-todos-block",depth:1,title:"Workflow: Manual todos block"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"todo-details",depth:2,title:"Todo Details"}],fc=[{value:"To facilitate manual processing, a todo list should be added to the page. This list will display tasks that require attention, allowing relevant personnel to easily access and manage specific tasks within the manual node.",paraId:0,tocIndex:0},{value:'To add a todo list block, select "Workflow Todo" from the available blocks on the page:',paraId:1,tocIndex:1},{value:"Here is an example of a todo list block:",paraId:2,tocIndex:1},{value:"Personnel can click on the relevant todo task to open a pop-up window for manual processing:",paraId:3,tocIndex:2}],xc={},hi={title:"\u65E5\u5386\u8868",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/calender/index.md",lastUpdated:1732240239e3,description:"\u65E5\u5386\u6570\u636E\u8868\u6A21\u677F\u662F\u4E00\u79CD\u7528\u4E8E\u7BA1\u7406\u65F6\u95F4\u76F8\u5173\u6570\u636E\u7684\u6570\u636E\u6A21\u677F\uFF0C\u901A\u5E38\u7528\u4E8E\u5B58\u50A8\u548C\u7BA1\u7406\u4E8B\u4EF6\u3001\u7EA6\u4F1A\u3001\u4EFB\u52A1\u7B49\u4E0E\u65E5\u671F/\u65F6\u95F4\u76F8\u5173\u7684\u4FE1\u606F\u3002\u4EE5\u4E0B\u662F\u65E5\u5386\u6570\u636E\u8868\u6A21\u677F\u7684\u9884\u5B9A\u4E49\u5B57\u6BB5\uFF1A"},gc=[{id:"\u65E5\u5386\u8868",depth:1,title:"\u65E5\u5386\u8868"}],Mr=[{value:"\u65E5\u5386\u6570\u636E\u8868\u6A21\u677F\u662F\u4E00\u79CD\u7528\u4E8E\u7BA1\u7406\u65F6\u95F4\u76F8\u5173\u6570\u636E\u7684\u6570\u636E\u6A21\u677F\uFF0C\u901A\u5E38\u7528\u4E8E\u5B58\u50A8\u548C\u7BA1\u7406\u4E8B\u4EF6\u3001\u7EA6\u4F1A\u3001\u4EFB\u52A1\u7B49\u4E0E\u65E5\u671F/\u65F6\u95F4\u76F8\u5173\u7684\u4FE1\u606F\u3002\u4EE5\u4E0B\u662F\u65E5\u5386\u6570\u636E\u8868\u6A21\u677F\u7684\u9884\u5B9A\u4E49\u5B57\u6BB5\uFF1A",paraId:0,tocIndex:0},{value:"\u521B\u5EFA\u65F6\u95F4\u548C\u7ED3\u675F\u65F6\u95F4\uFF1A\u8868\u793A\u4E8B\u4EF6\u7684\u5F00\u59CB\u548C\u7ED3\u675F\u65E5\u671F\u53CA\u65F6\u95F4\u3002",paraId:1,tocIndex:0},{value:"\u521B\u5EFA\u8005\u548C\u66F4\u65B0\u8005\uFF1A\u5217\u51FA\u4E8B\u4EF6\u7684\u4EBA\u5458\u3002",paraId:1,tocIndex:0},{value:"\u91CD\u590D\u9891\u7387\uFF1A\u5B9A\u4E49\u4E8B\u4EF6\u7684\u91CD\u590D\u6A21\u5F0F\uFF0C\u5982\u6BCF\u5929\u3001\u6BCF\u5468\u3001\u6BCF\u6708\u7B49\u3002",paraId:1,tocIndex:0},{value:"\u901A\u8FC7\u65E5\u5386\u6570\u636E\u8868\u6A21\u677F\uFF0C\u53EF\u4EE5\u65B9\u4FBF\u5730\u521B\u5EFA\u548C\u7BA1\u7406\u4E0E\u65F6\u95F4\u76F8\u5173\u7684\u4FE1\u606F\uFF0C\u5E76\u652F\u6301\u65E5\u7A0B\u5B89\u6392\u3001\u63D0\u9192\u548C\u8DDF\u8E2A\u4EFB\u52A1\u7684\u8FDB\u5EA6\u3002\u8FD9\u79CD\u6A21\u677F\u5E38\u7528\u4E8E\u4E2A\u4EBA\u65E5\u7A0B\u7BA1\u7406\u3001\u56E2\u961F\u534F\u4F5C\u3001\u4F1A\u8BAE\u5B89\u6392\u7B49\u5E94\u7528",paraId:2,tocIndex:0}],fi={},sl={title:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/summary/index.md",lastUpdated:1732240239e3,description:"NocoBase \u7684\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u65E8\u5728\u5E2E\u52A9\u7528\u6237\u66F4\u597D\u5730\u5C55\u793A\u548C\u5904\u7406\u5173\u8054\u6570\u636E\u3002\u65E0\u8BBA\u5173\u7CFB\u7C7B\u578B\u5982\u4F55\uFF0C\u8FD9\u4E9B\u7EC4\u4EF6\u5177\u6709\u7075\u6D3B\u6027\u548C\u901A\u7528\u6027\uFF0C\u7528\u6237\u80FD\u591F\u6839\u636E\u5177\u4F53\u9700\u6C42\u9009\u62E9\u5E76\u914D\u7F6E\u8FD9\u4E9B\u7EC4\u4EF6\u3002"},bc=[{id:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6",depth:1,title:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6"},{id:"\u4F7F\u7528\u603B\u7ED3",depth:4,title:"\u4F7F\u7528\u603B\u7ED3"}],lu=[{value:"NocoBase \u7684\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u65E8\u5728\u5E2E\u52A9\u7528\u6237\u66F4\u597D\u5730\u5C55\u793A\u548C\u5904\u7406\u5173\u8054\u6570\u636E\u3002\u65E0\u8BBA\u5173\u7CFB\u7C7B\u578B\u5982\u4F55\uFF0C\u8FD9\u4E9B\u7EC4\u4EF6\u5177\u6709\u7075\u6D3B\u6027\u548C\u901A\u7528\u6027\uFF0C\u7528\u6237\u80FD\u591F\u6839\u636E\u5177\u4F53\u9700\u6C42\u9009\u62E9\u5E76\u914D\u7F6E\u8FD9\u4E9B\u7EC4\u4EF6\u3002",paraId:0,tocIndex:0},{value:"\u4E0B\u62C9\u9009\u62E9\u5668\uFF1A\u7528\u4E8E\u4ECE\u4E00\u4E2A\u4E0B\u62C9\u5217\u8868\u4E2D",paraId:1,tocIndex:1},{value:"\u9009\u62E9\u6216\u65B0\u5EFA",paraId:1,tocIndex:1},{value:"\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u9879\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\uFF0C\u652F\u6301\u8BBE\u7F6E\u4E0B\u62C9\u5217\u8868\u7684\u6807\u9898\u5B57\u6BB5\u3002",paraId:1,tocIndex:1},{value:"\u6570\u636E\u9009\u62E9\u5668\uFF1A\u7528\u4E8E\u4ECE\u76F8\u5173\u6570\u636E\u4E2D",paraId:1,tocIndex:1},{value:"\u9009\u62E9\u6216\u65B0\u5EFA",paraId:1,tocIndex:1},{value:"\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u9879\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\u3002\u914D\u7F6E\u548C\u4F7F\u7528\u65F6\uFF0C\u53EF\u4EE5\u914D\u7F6E\u9009\u62E9\u5668\u5217\u8868\u7684\u5C55\u793A\u4FE1\u606F",paraId:1,tocIndex:1},{value:"\u7EA7\u8054\u9009\u62E9\u5668\uFF1A\u7528\u4E8E\u76EE\u6807\u8868\u4E3A",paraId:1,tocIndex:1},{value:"\u6811\u8868",paraId:1,tocIndex:1},{value:"\u7684\u5173\u7CFB\u6570\u636E\uFF0C\u6309\u6811\u5F62\u7ED3\u6784\u4E00\u5C42\u4E00\u5C42\u7684\u5F80\u4E0B\u9009\u53D6\u6570\u636E\u3002",paraId:1,tocIndex:1},{value:"\u5B50\u8868\u5355/\u5B50\u8BE6\u60C5\uFF1A\u7528\u4E8E\u5728\u5F53\u524D\u8868\u5355\u6216\u8BE6\u60C5\u9875\u9762\u4E2D\u5C55\u793A\u5173\u8054\u8BB0\u5F55\u7684\u6570\u636E\u3002\u5B83\u63D0\u4F9B\u4E86\u4E00\u79CD\u4FBF\u6377\u7684\u5D4C\u5957\u65B9\u5F0F\u6765\u67E5\u770B\u548C\u7F16\u8F91\u5173\u8054\u6570\u636E\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u65E0\u9700\u8DF3\u8F6C\u5230\u5176\u4ED6\u9875\u9762\uFF0C\u63D0\u4F9B\u4E86\u66F4\u6D41\u7545\u548C\u9AD8\u6548\u7684\u7528\u6237\u4F53\u9A8C\uFF0C**\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B\uFF0C**\u591A\u5C42\u7684\u5173\u7CFB\u6570\u636E\u80FD\u4EE5\u5D4C\u5957\u7684\u5F62\u5F0F\u5C55\u793A\uFF0C\u914D\u7F6E\u4F7F\u7528\u65F6\u6CE8\u610F\u5E03\u5C40\u7684\u8C03\u6574",paraId:1,tocIndex:1},{value:"\u5B50\u8868\u683C\uFF1A\u7F16\u8F91\u72B6\u6001\u4E0B\u5B50\u8868\u683C\u652F\u6301\u76F4\u63A5",paraId:1,tocIndex:1},{value:"\u65B0\u5EFA/\u7F16\u8F91",paraId:1,tocIndex:1},{value:"\u5173\u7CFB\u6570\u636E\uFF0C",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u4E00\u5BF9\u591A\u6216\u591A\u5BF9\u591A\u7684\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\uFF0C\u6682\u4E0D\u652F\u6301\u9009\u62E9\u5173\u8054\u3002",paraId:1,tocIndex:1},{value:"\u5B50\u8868\u5355\uFF08\u5F39\u7A97\uFF09\uFF1A\u901A\u8FC7\u5C06\u6B21\u8981\u6216\u590D\u6742\u6570\u636E\u5B57\u6BB5\u653E\u5728\u5F39\u7A97\u4E2D\uFF0C\u4F18\u5316\u4E86\u4E3B\u8868\u5355\u7684\u5E03\u5C40\uFF0C\u4F7F\u754C\u9762\u66F4\u7B80\u6D01\u3001\u76F4\u89C2\u3002\u89E3\u51B3\u4E86\u590D\u6742\u5173\u7CFB\u5C42\u7EA7\u4E0B\u8868\u5355\u7684\u5197\u957F\u95EE\u9898\uFF0C\u63D0\u5347\u7528\u6237\u4F53\u9A8C\u3002\u9002\u7528\u4E8E\u6709\u5927\u91CF\u6570\u636E\u5B57\u6BB5\u3001\u5173\u7CFB\u5C42\u7EA7\u590D\u6742\u7684\u573A\u666F\uFF0C\u5C06\u6B21\u8981\u4FE1\u606F\u4E0E\u4E3B\u8981\u4FE1\u606F\u5206\u5F00\u586B\u5199\uFF0C\u63D0\u9AD8\u8868\u5355\u7684\u53EF\u7528\u6027\u3002",paraId:1,tocIndex:1},{value:"\u6807\u7B7E\uFF1A\u901A\u8FC7\u4E3A\u5173\u7CFB\u5B57\u6BB5\u914D\u7F6E\u6807\u7B7E\u7EC4\u4EF6\uFF0C\u5B9E\u73B0\u4E86\u6570\u636E\u7684\u5206\u7C7B\u548C\u6807\u8BC6\uFF0C\u80FD\u591F\u66F4\u76F4\u89C2\u5730\u5C55\u793A\u6570\u636E\u5173\u7CFB\uFF0C\u9002\u7528\u4E8E\u9700\u8981\u5C06\u6570\u636E\u6309\u7167\u7C7B\u522B\u8FDB\u884C\u5206\u7EC4\u7684\u573A\u666F",paraId:1,tocIndex:1},{value:"\u6587\u4EF6\u7BA1\u7406\u5668\uFF1A\u7528\u4E8E\u76F4\u63A5",paraId:1,tocIndex:1},{value:"\u4E0A\u4F20\u6216\u9009\u62E9",paraId:1,tocIndex:1},{value:"\u4E0E\u5F53\u524D\u8BB0\u5F55\u5173\u8054\u7684\u6587\u4EF6\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u7684\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\u3002",paraId:1,tocIndex:1},{value:"\u6807\u9898\uFF1A\u7528\u4E8E\u5728\u9605\u8BFB\u6A21\u5F0F\u4E0B\u663E\u793A\u5173\u8054\u8BB0\u5F55\uFF0C\u662F\u6240\u6709\u5173\u7CFB\u5B57\u6BB5\u9605\u8BFB\u72B6\u6001\u4E0B\u7684\u9ED8\u8BA4\u5B57\u6BB5\u7EC4\u4EF6\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\u3002\u914D\u7F6E\u548C\u4F7F\u7528\u65F6\uFF0C\u9ED8\u8BA4\u6807\u9898\u5B57\u6BB5\u4E3A id,\u652F\u6301\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u6807\u9898\u5B57\u6BB5\u3002",paraId:1,tocIndex:1},{value:"\u901A\u8FC7\u4F7F\u7528\u8FD9\u4E9B\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u53EF\u4EE5\u5B9A\u5236\u548C\u4F18\u5316\u6570\u636E\u5C55\u793A\u548C\u64CD\u4F5C\u7684\u754C\u9762\uFF0C\u63D0\u4F9B\u66F4\u597D\u7684\u7528\u6237\u4F53\u9A8C\u3002\u6839\u636E\u5177\u4F53\u7684\u4E1A\u52A1\u9700\u6C42\u548C\u5173\u7CFB\u7C7B\u578B\uFF0C\u9009\u62E9\u5408\u9002\u7684\u5B57\u6BB5\u7EC4\u4EF6\u3002\u66F4\u591A\u5173\u7CFB\u5B57\u6BB5\u7684\u529F\u80FD\u53EF\u5728\u7CFB\u7EDF\u4E2D\u4F53\u9A8C\u5E76\u63D0\u51FA\u53CD\u9988\u3002",paraId:2,tocIndex:1}],Gr={},cu={title:"\u5B9E\u73B0\u6570\u636E\u5B57\u6BB5 Initializer",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/configure-fields-bk.md",lastUpdated:1732240239e3,description:"\u5982\u679C\u65B0\u521B\u5EFA\u7684\u533A\u5757\u662F\u4E00\u4E2A\u590D\u6742\u7684\u6570\u636E\u533A\u5757\uFF0C\u90A3\u4E48\u5B83\u5185\u90E8\u53EF\u80FD\u5305\u542B\u591A\u4E2A\u52A8\u6001\u6DFB\u52A0\u7684\u90E8\u5206\uFF0C\u5176\u4E2D\u91CD\u70B9\u5C31\u662F\u901A\u8FC7 Configure fields \u5BF9\u5E94\u7684 initializer \u52A8\u6001\u6DFB\u52A0\u5B57\u6BB5\u3002\u4F8B\u5982 Form \u533A\u5757\uFF0C\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 Configure fields \u6765\u914D\u7F6E\u663E\u793A\u7684\u5B57\u6BB5\u3002"},yr=[{id:"\u5B9E\u73B0\u6570\u636E\u5B57\u6BB5-initializer",depth:1,title:"\u5B9E\u73B0\u6570\u636E\u5B57\u6BB5 Initializer"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-copy-\u4EE3\u7801\u5E76\u4FEE\u6539\u63D2\u4EF6\u540D\u79F0",depth:3,title:"1. Copy \u4EE3\u7801\u5E76\u4FEE\u6539\u63D2\u4EF6\u540D\u79F0"},{id:"2-\u521B\u5EFA-configure-fields-\u5BF9\u5E94\u7684-initializer",depth:3,title:"2. \u521B\u5EFA Configure fields \u5BF9\u5E94\u7684 initializer"},{id:"3-\u6CE8\u518C-configure-fields-initializer",depth:3,title:"3. \u6CE8\u518C Configure fields initializer"},{id:"4-\u4FEE\u6539-getinfoblockschema-\u533A\u5757",depth:3,title:"4. \u4FEE\u6539 getInfoBlockSchema() \u533A\u5757"},{id:"5-\u4FEE\u6539-infoblock-\u7EC4\u4EF6",depth:3,title:"5. \u4FEE\u6539 InfoBlock \u7EC4\u4EF6"},{id:"6-\u8BFB\u53D6\u6570\u636E\u8868\u5B57\u6BB5\u4F5C\u4E3A-configure-fields-\u7684\u5B50\u9879",depth:3,title:"6. \u8BFB\u53D6\u6570\u636E\u8868\u5B57\u6BB5\u4F5C\u4E3A Configure fields \u7684\u5B50\u9879"},{id:"7-\u5B9E\u73B0-switch-\u7684\u6DFB\u52A0\u548C\u5220\u9664",depth:3,title:"7. \u5B9E\u73B0 switch \u7684\u6DFB\u52A0\u548C\u5220\u9664"},{id:"8-\u5B8C\u5584\u5B50\u8282\u70B9-schema-\u548C\u7EC4\u4EF6",depth:3,title:"8. \u5B8C\u5584\u5B50\u8282\u70B9 Schema \u548C\u7EC4\u4EF6"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],xi=[{value:"\u5982\u679C\u65B0\u521B\u5EFA\u7684\u533A\u5757\u662F\u4E00\u4E2A\u590D\u6742\u7684\u6570\u636E\u533A\u5757\uFF0C\u90A3\u4E48\u5B83\u5185\u90E8\u53EF\u80FD\u5305\u542B\u591A\u4E2A\u52A8\u6001\u6DFB\u52A0\u7684\u90E8\u5206\uFF0C\u5176\u4E2D\u91CD\u70B9\u5C31\u662F\u901A\u8FC7 ",paraId:0,tocIndex:1},{value:"Configure fields",paraId:0,tocIndex:1},{value:" \u5BF9\u5E94\u7684 initializer \u52A8\u6001\u6DFB\u52A0\u5B57\u6BB5\u3002\u4F8B\u5982 ",paraId:0,tocIndex:1},{value:"Form",paraId:0,tocIndex:1},{value:" \u533A\u5757\uFF0C\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 ",paraId:0,tocIndex:1},{value:"Configure fields",paraId:0,tocIndex:1},{value:" \u6765\u914D\u7F6E\u663E\u793A\u7684\u5B57\u6BB5\u3002",paraId:0,tocIndex:1},{value:"\u672C\u5B9E\u4F8B\u4F1A\u5728 ",paraId:1,tocIndex:2},{value:"\u6DFB\u52A0\u6570\u636E\u533A\u5757 Data Block",paraId:2,tocIndex:2},{value:" \u57FA\u7840\u4E0A\u7EE7\u7EED\u5B9E\u73B0\u7C7B\u4F3C ",paraId:1,tocIndex:2},{value:"Form",paraId:1,tocIndex:2},{value:" \u533A\u5757\u7684\u6548\u679C\uFF0C\u901A\u8FC7 ",paraId:1,tocIndex:2},{value:"Configure fields",paraId:1,tocIndex:2},{value:" \u6765\u914D\u7F6E\u663E\u793A\u7684\u5B57\u6BB5\u3002",paraId:1,tocIndex:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:3,tocIndex:2},{value:"plugin-samples",paraId:3,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:3,tocIndex:2},{value:` +`,paraId:18,tocIndex:6}],Sd={},Wr={title:"Number",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/number.md",lastUpdated:173254844e4,description:"to be added."},mo=[{id:"number",depth:1,title:"Number"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],uo=[{value:"to be added.",paraId:0,tocIndex:3}],$r={},Ko={title:"After Successful Submission",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/affter-successful.md",lastUpdated:173254844e4,description:"The After successful submission enables customization of the response behavior upon completion. It supports defining custom success messages, selecting automatic or manual dismissal of success notifications, and choosing whether to remain on the current page, return to the previous popup or page, or redirect to a specified route, depending on the requirements."},tr=[{id:"after-successful-submission",depth:1,title:"After Successful Submission"},{id:"introduction",depth:2,title:"Introduction"}],dd=[{value:"The After successful submission enables customization of the response behavior upon completion. It supports defining custom success messages, selecting automatic or manual dismissal of success notifications, and choosing whether to remain on the current page, return to the previous popup or page, or redirect to a specified route, depending on the requirements.",paraId:0,tocIndex:1},{value:"Stay on the current popup or page: After the operation is successful, the pop-up window or route is not closed",paraId:1,tocIndex:1},{value:"Return to the previous popup or page(default): Close the popup window after the operation is successful",paraId:1,tocIndex:1},{value:"Redirect to: After the operation succeeds, the route is switched to the specified route",paraId:1,tocIndex:1}],Ud={},nr={title:"Workflow: Manual todos block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/other-blocks/workflow-manual-todos.md",lastUpdated:173254844e4,description:"To facilitate manual processing, a todo list should be added to the page. This list will display tasks that require attention, allowing relevant personnel to easily access and manage specific tasks within the manual node."},mi=[{id:"workflow-manual-todos-block",depth:1,title:"Workflow: Manual todos block"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"todo-details",depth:2,title:"Todo Details"}],fc=[{value:"To facilitate manual processing, a todo list should be added to the page. This list will display tasks that require attention, allowing relevant personnel to easily access and manage specific tasks within the manual node.",paraId:0,tocIndex:0},{value:'To add a todo list block, select "Workflow Todo" from the available blocks on the page:',paraId:1,tocIndex:1},{value:"Here is an example of a todo list block:",paraId:2,tocIndex:1},{value:"Personnel can click on the relevant todo task to open a pop-up window for manual processing:",paraId:3,tocIndex:2}],xc={},hi={title:"\u65E5\u5386\u8868",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/calender/index.md",lastUpdated:173254844e4,description:"\u65E5\u5386\u6570\u636E\u8868\u6A21\u677F\u662F\u4E00\u79CD\u7528\u4E8E\u7BA1\u7406\u65F6\u95F4\u76F8\u5173\u6570\u636E\u7684\u6570\u636E\u6A21\u677F\uFF0C\u901A\u5E38\u7528\u4E8E\u5B58\u50A8\u548C\u7BA1\u7406\u4E8B\u4EF6\u3001\u7EA6\u4F1A\u3001\u4EFB\u52A1\u7B49\u4E0E\u65E5\u671F/\u65F6\u95F4\u76F8\u5173\u7684\u4FE1\u606F\u3002\u4EE5\u4E0B\u662F\u65E5\u5386\u6570\u636E\u8868\u6A21\u677F\u7684\u9884\u5B9A\u4E49\u5B57\u6BB5\uFF1A"},gc=[{id:"\u65E5\u5386\u8868",depth:1,title:"\u65E5\u5386\u8868"}],Mr=[{value:"\u65E5\u5386\u6570\u636E\u8868\u6A21\u677F\u662F\u4E00\u79CD\u7528\u4E8E\u7BA1\u7406\u65F6\u95F4\u76F8\u5173\u6570\u636E\u7684\u6570\u636E\u6A21\u677F\uFF0C\u901A\u5E38\u7528\u4E8E\u5B58\u50A8\u548C\u7BA1\u7406\u4E8B\u4EF6\u3001\u7EA6\u4F1A\u3001\u4EFB\u52A1\u7B49\u4E0E\u65E5\u671F/\u65F6\u95F4\u76F8\u5173\u7684\u4FE1\u606F\u3002\u4EE5\u4E0B\u662F\u65E5\u5386\u6570\u636E\u8868\u6A21\u677F\u7684\u9884\u5B9A\u4E49\u5B57\u6BB5\uFF1A",paraId:0,tocIndex:0},{value:"\u521B\u5EFA\u65F6\u95F4\u548C\u7ED3\u675F\u65F6\u95F4\uFF1A\u8868\u793A\u4E8B\u4EF6\u7684\u5F00\u59CB\u548C\u7ED3\u675F\u65E5\u671F\u53CA\u65F6\u95F4\u3002",paraId:1,tocIndex:0},{value:"\u521B\u5EFA\u8005\u548C\u66F4\u65B0\u8005\uFF1A\u5217\u51FA\u4E8B\u4EF6\u7684\u4EBA\u5458\u3002",paraId:1,tocIndex:0},{value:"\u91CD\u590D\u9891\u7387\uFF1A\u5B9A\u4E49\u4E8B\u4EF6\u7684\u91CD\u590D\u6A21\u5F0F\uFF0C\u5982\u6BCF\u5929\u3001\u6BCF\u5468\u3001\u6BCF\u6708\u7B49\u3002",paraId:1,tocIndex:0},{value:"\u901A\u8FC7\u65E5\u5386\u6570\u636E\u8868\u6A21\u677F\uFF0C\u53EF\u4EE5\u65B9\u4FBF\u5730\u521B\u5EFA\u548C\u7BA1\u7406\u4E0E\u65F6\u95F4\u76F8\u5173\u7684\u4FE1\u606F\uFF0C\u5E76\u652F\u6301\u65E5\u7A0B\u5B89\u6392\u3001\u63D0\u9192\u548C\u8DDF\u8E2A\u4EFB\u52A1\u7684\u8FDB\u5EA6\u3002\u8FD9\u79CD\u6A21\u677F\u5E38\u7528\u4E8E\u4E2A\u4EBA\u65E5\u7A0B\u7BA1\u7406\u3001\u56E2\u961F\u534F\u4F5C\u3001\u4F1A\u8BAE\u5B89\u6392\u7B49\u5E94\u7528",paraId:2,tocIndex:0}],fi={},sl={title:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/summary/index.md",lastUpdated:173254844e4,description:"NocoBase \u7684\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u65E8\u5728\u5E2E\u52A9\u7528\u6237\u66F4\u597D\u5730\u5C55\u793A\u548C\u5904\u7406\u5173\u8054\u6570\u636E\u3002\u65E0\u8BBA\u5173\u7CFB\u7C7B\u578B\u5982\u4F55\uFF0C\u8FD9\u4E9B\u7EC4\u4EF6\u5177\u6709\u7075\u6D3B\u6027\u548C\u901A\u7528\u6027\uFF0C\u7528\u6237\u80FD\u591F\u6839\u636E\u5177\u4F53\u9700\u6C42\u9009\u62E9\u5E76\u914D\u7F6E\u8FD9\u4E9B\u7EC4\u4EF6\u3002"},bc=[{id:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6",depth:1,title:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6"},{id:"\u4F7F\u7528\u603B\u7ED3",depth:4,title:"\u4F7F\u7528\u603B\u7ED3"}],lu=[{value:"NocoBase \u7684\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u65E8\u5728\u5E2E\u52A9\u7528\u6237\u66F4\u597D\u5730\u5C55\u793A\u548C\u5904\u7406\u5173\u8054\u6570\u636E\u3002\u65E0\u8BBA\u5173\u7CFB\u7C7B\u578B\u5982\u4F55\uFF0C\u8FD9\u4E9B\u7EC4\u4EF6\u5177\u6709\u7075\u6D3B\u6027\u548C\u901A\u7528\u6027\uFF0C\u7528\u6237\u80FD\u591F\u6839\u636E\u5177\u4F53\u9700\u6C42\u9009\u62E9\u5E76\u914D\u7F6E\u8FD9\u4E9B\u7EC4\u4EF6\u3002",paraId:0,tocIndex:0},{value:"\u4E0B\u62C9\u9009\u62E9\u5668\uFF1A\u7528\u4E8E\u4ECE\u4E00\u4E2A\u4E0B\u62C9\u5217\u8868\u4E2D",paraId:1,tocIndex:1},{value:"\u9009\u62E9\u6216\u65B0\u5EFA",paraId:1,tocIndex:1},{value:"\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u9879\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\uFF0C\u652F\u6301\u8BBE\u7F6E\u4E0B\u62C9\u5217\u8868\u7684\u6807\u9898\u5B57\u6BB5\u3002",paraId:1,tocIndex:1},{value:"\u6570\u636E\u9009\u62E9\u5668\uFF1A\u7528\u4E8E\u4ECE\u76F8\u5173\u6570\u636E\u4E2D",paraId:1,tocIndex:1},{value:"\u9009\u62E9\u6216\u65B0\u5EFA",paraId:1,tocIndex:1},{value:"\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u9879\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\u3002\u914D\u7F6E\u548C\u4F7F\u7528\u65F6\uFF0C\u53EF\u4EE5\u914D\u7F6E\u9009\u62E9\u5668\u5217\u8868\u7684\u5C55\u793A\u4FE1\u606F",paraId:1,tocIndex:1},{value:"\u7EA7\u8054\u9009\u62E9\u5668\uFF1A\u7528\u4E8E\u76EE\u6807\u8868\u4E3A",paraId:1,tocIndex:1},{value:"\u6811\u8868",paraId:1,tocIndex:1},{value:"\u7684\u5173\u7CFB\u6570\u636E\uFF0C\u6309\u6811\u5F62\u7ED3\u6784\u4E00\u5C42\u4E00\u5C42\u7684\u5F80\u4E0B\u9009\u53D6\u6570\u636E\u3002",paraId:1,tocIndex:1},{value:"\u5B50\u8868\u5355/\u5B50\u8BE6\u60C5\uFF1A\u7528\u4E8E\u5728\u5F53\u524D\u8868\u5355\u6216\u8BE6\u60C5\u9875\u9762\u4E2D\u5C55\u793A\u5173\u8054\u8BB0\u5F55\u7684\u6570\u636E\u3002\u5B83\u63D0\u4F9B\u4E86\u4E00\u79CD\u4FBF\u6377\u7684\u5D4C\u5957\u65B9\u5F0F\u6765\u67E5\u770B\u548C\u7F16\u8F91\u5173\u8054\u6570\u636E\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u65E0\u9700\u8DF3\u8F6C\u5230\u5176\u4ED6\u9875\u9762\uFF0C\u63D0\u4F9B\u4E86\u66F4\u6D41\u7545\u548C\u9AD8\u6548\u7684\u7528\u6237\u4F53\u9A8C\uFF0C**\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B\uFF0C**\u591A\u5C42\u7684\u5173\u7CFB\u6570\u636E\u80FD\u4EE5\u5D4C\u5957\u7684\u5F62\u5F0F\u5C55\u793A\uFF0C\u914D\u7F6E\u4F7F\u7528\u65F6\u6CE8\u610F\u5E03\u5C40\u7684\u8C03\u6574",paraId:1,tocIndex:1},{value:"\u5B50\u8868\u683C\uFF1A\u7F16\u8F91\u72B6\u6001\u4E0B\u5B50\u8868\u683C\u652F\u6301\u76F4\u63A5",paraId:1,tocIndex:1},{value:"\u65B0\u5EFA/\u7F16\u8F91",paraId:1,tocIndex:1},{value:"\u5173\u7CFB\u6570\u636E\uFF0C",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u4E00\u5BF9\u591A\u6216\u591A\u5BF9\u591A\u7684\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\uFF0C\u6682\u4E0D\u652F\u6301\u9009\u62E9\u5173\u8054\u3002",paraId:1,tocIndex:1},{value:"\u5B50\u8868\u5355\uFF08\u5F39\u7A97\uFF09\uFF1A\u901A\u8FC7\u5C06\u6B21\u8981\u6216\u590D\u6742\u6570\u636E\u5B57\u6BB5\u653E\u5728\u5F39\u7A97\u4E2D\uFF0C\u4F18\u5316\u4E86\u4E3B\u8868\u5355\u7684\u5E03\u5C40\uFF0C\u4F7F\u754C\u9762\u66F4\u7B80\u6D01\u3001\u76F4\u89C2\u3002\u89E3\u51B3\u4E86\u590D\u6742\u5173\u7CFB\u5C42\u7EA7\u4E0B\u8868\u5355\u7684\u5197\u957F\u95EE\u9898\uFF0C\u63D0\u5347\u7528\u6237\u4F53\u9A8C\u3002\u9002\u7528\u4E8E\u6709\u5927\u91CF\u6570\u636E\u5B57\u6BB5\u3001\u5173\u7CFB\u5C42\u7EA7\u590D\u6742\u7684\u573A\u666F\uFF0C\u5C06\u6B21\u8981\u4FE1\u606F\u4E0E\u4E3B\u8981\u4FE1\u606F\u5206\u5F00\u586B\u5199\uFF0C\u63D0\u9AD8\u8868\u5355\u7684\u53EF\u7528\u6027\u3002",paraId:1,tocIndex:1},{value:"\u6807\u7B7E\uFF1A\u901A\u8FC7\u4E3A\u5173\u7CFB\u5B57\u6BB5\u914D\u7F6E\u6807\u7B7E\u7EC4\u4EF6\uFF0C\u5B9E\u73B0\u4E86\u6570\u636E\u7684\u5206\u7C7B\u548C\u6807\u8BC6\uFF0C\u80FD\u591F\u66F4\u76F4\u89C2\u5730\u5C55\u793A\u6570\u636E\u5173\u7CFB\uFF0C\u9002\u7528\u4E8E\u9700\u8981\u5C06\u6570\u636E\u6309\u7167\u7C7B\u522B\u8FDB\u884C\u5206\u7EC4\u7684\u573A\u666F",paraId:1,tocIndex:1},{value:"\u6587\u4EF6\u7BA1\u7406\u5668\uFF1A\u7528\u4E8E\u76F4\u63A5",paraId:1,tocIndex:1},{value:"\u4E0A\u4F20\u6216\u9009\u62E9",paraId:1,tocIndex:1},{value:"\u4E0E\u5F53\u524D\u8BB0\u5F55\u5173\u8054\u7684\u6587\u4EF6\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u7684\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\u3002",paraId:1,tocIndex:1},{value:"\u6807\u9898\uFF1A\u7528\u4E8E\u5728\u9605\u8BFB\u6A21\u5F0F\u4E0B\u663E\u793A\u5173\u8054\u8BB0\u5F55\uFF0C\u662F\u6240\u6709\u5173\u7CFB\u5B57\u6BB5\u9605\u8BFB\u72B6\u6001\u4E0B\u7684\u9ED8\u8BA4\u5B57\u6BB5\u7EC4\u4EF6\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\u3002\u914D\u7F6E\u548C\u4F7F\u7528\u65F6\uFF0C\u9ED8\u8BA4\u6807\u9898\u5B57\u6BB5\u4E3A id,\u652F\u6301\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u6807\u9898\u5B57\u6BB5\u3002",paraId:1,tocIndex:1},{value:"\u901A\u8FC7\u4F7F\u7528\u8FD9\u4E9B\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u53EF\u4EE5\u5B9A\u5236\u548C\u4F18\u5316\u6570\u636E\u5C55\u793A\u548C\u64CD\u4F5C\u7684\u754C\u9762\uFF0C\u63D0\u4F9B\u66F4\u597D\u7684\u7528\u6237\u4F53\u9A8C\u3002\u6839\u636E\u5177\u4F53\u7684\u4E1A\u52A1\u9700\u6C42\u548C\u5173\u7CFB\u7C7B\u578B\uFF0C\u9009\u62E9\u5408\u9002\u7684\u5B57\u6BB5\u7EC4\u4EF6\u3002\u66F4\u591A\u5173\u7CFB\u5B57\u6BB5\u7684\u529F\u80FD\u53EF\u5728\u7CFB\u7EDF\u4E2D\u4F53\u9A8C\u5E76\u63D0\u51FA\u53CD\u9988\u3002",paraId:2,tocIndex:1}],Gr={},cu={title:"\u5B9E\u73B0\u6570\u636E\u5B57\u6BB5 Initializer",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/configure-fields-bk.md",lastUpdated:173254844e4,description:"\u5982\u679C\u65B0\u521B\u5EFA\u7684\u533A\u5757\u662F\u4E00\u4E2A\u590D\u6742\u7684\u6570\u636E\u533A\u5757\uFF0C\u90A3\u4E48\u5B83\u5185\u90E8\u53EF\u80FD\u5305\u542B\u591A\u4E2A\u52A8\u6001\u6DFB\u52A0\u7684\u90E8\u5206\uFF0C\u5176\u4E2D\u91CD\u70B9\u5C31\u662F\u901A\u8FC7 Configure fields \u5BF9\u5E94\u7684 initializer \u52A8\u6001\u6DFB\u52A0\u5B57\u6BB5\u3002\u4F8B\u5982 Form \u533A\u5757\uFF0C\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 Configure fields \u6765\u914D\u7F6E\u663E\u793A\u7684\u5B57\u6BB5\u3002"},yr=[{id:"\u5B9E\u73B0\u6570\u636E\u5B57\u6BB5-initializer",depth:1,title:"\u5B9E\u73B0\u6570\u636E\u5B57\u6BB5 Initializer"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-copy-\u4EE3\u7801\u5E76\u4FEE\u6539\u63D2\u4EF6\u540D\u79F0",depth:3,title:"1. Copy \u4EE3\u7801\u5E76\u4FEE\u6539\u63D2\u4EF6\u540D\u79F0"},{id:"2-\u521B\u5EFA-configure-fields-\u5BF9\u5E94\u7684-initializer",depth:3,title:"2. \u521B\u5EFA Configure fields \u5BF9\u5E94\u7684 initializer"},{id:"3-\u6CE8\u518C-configure-fields-initializer",depth:3,title:"3. \u6CE8\u518C Configure fields initializer"},{id:"4-\u4FEE\u6539-getinfoblockschema-\u533A\u5757",depth:3,title:"4. \u4FEE\u6539 getInfoBlockSchema() \u533A\u5757"},{id:"5-\u4FEE\u6539-infoblock-\u7EC4\u4EF6",depth:3,title:"5. \u4FEE\u6539 InfoBlock \u7EC4\u4EF6"},{id:"6-\u8BFB\u53D6\u6570\u636E\u8868\u5B57\u6BB5\u4F5C\u4E3A-configure-fields-\u7684\u5B50\u9879",depth:3,title:"6. \u8BFB\u53D6\u6570\u636E\u8868\u5B57\u6BB5\u4F5C\u4E3A Configure fields \u7684\u5B50\u9879"},{id:"7-\u5B9E\u73B0-switch-\u7684\u6DFB\u52A0\u548C\u5220\u9664",depth:3,title:"7. \u5B9E\u73B0 switch \u7684\u6DFB\u52A0\u548C\u5220\u9664"},{id:"8-\u5B8C\u5584\u5B50\u8282\u70B9-schema-\u548C\u7EC4\u4EF6",depth:3,title:"8. \u5B8C\u5584\u5B50\u8282\u70B9 Schema \u548C\u7EC4\u4EF6"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],xi=[{value:"\u5982\u679C\u65B0\u521B\u5EFA\u7684\u533A\u5757\u662F\u4E00\u4E2A\u590D\u6742\u7684\u6570\u636E\u533A\u5757\uFF0C\u90A3\u4E48\u5B83\u5185\u90E8\u53EF\u80FD\u5305\u542B\u591A\u4E2A\u52A8\u6001\u6DFB\u52A0\u7684\u90E8\u5206\uFF0C\u5176\u4E2D\u91CD\u70B9\u5C31\u662F\u901A\u8FC7 ",paraId:0,tocIndex:1},{value:"Configure fields",paraId:0,tocIndex:1},{value:" \u5BF9\u5E94\u7684 initializer \u52A8\u6001\u6DFB\u52A0\u5B57\u6BB5\u3002\u4F8B\u5982 ",paraId:0,tocIndex:1},{value:"Form",paraId:0,tocIndex:1},{value:" \u533A\u5757\uFF0C\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 ",paraId:0,tocIndex:1},{value:"Configure fields",paraId:0,tocIndex:1},{value:" \u6765\u914D\u7F6E\u663E\u793A\u7684\u5B57\u6BB5\u3002",paraId:0,tocIndex:1},{value:"\u672C\u5B9E\u4F8B\u4F1A\u5728 ",paraId:1,tocIndex:2},{value:"\u6DFB\u52A0\u6570\u636E\u533A\u5757 Data Block",paraId:2,tocIndex:2},{value:" \u57FA\u7840\u4E0A\u7EE7\u7EED\u5B9E\u73B0\u7C7B\u4F3C ",paraId:1,tocIndex:2},{value:"Form",paraId:1,tocIndex:2},{value:" \u533A\u5757\u7684\u6548\u679C\uFF0C\u901A\u8FC7 ",paraId:1,tocIndex:2},{value:"Configure fields",paraId:1,tocIndex:2},{value:" \u6765\u914D\u7F6E\u663E\u793A\u7684\u5B57\u6BB5\u3002",paraId:1,tocIndex:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:3,tocIndex:2},{value:"plugin-samples",paraId:3,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:3,tocIndex:2},{value:` `,paraId:4},{value:"\u6211\u4EEC\u6309\u7167 ",paraId:5,tocIndex:3},{value:"\u7F16\u5199\u7B2C\u4E00\u4E2A\u63D2\u4EF6",paraId:6,tocIndex:3},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u5982\u679C\u6CA1\u6709\u4E00\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u5148\u521B\u5EFA\u4E00\u4E2A\u9879\u76EE\uFF0C\u5982\u679C\u5DF2\u7ECF\u6709\u4E86\u6216\u8005\u662F clone \u7684\u6E90\u7801\uFF0C\u5219\u8DF3\u8FC7\u8FD9\u4E00\u6B65\u3002",paraId:5,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -651,13 +666,13 @@ function getInfoItemSchema(collectionFieldName: string) { `,paraId:52,tocIndex:12},{value:` `,paraId:4},{value:"\u6309\u7167 ",paraId:53,tocIndex:13},{value:"\u6784\u5EFA\u5E76\u6253\u5305\u63D2\u4EF6",paraId:54,tocIndex:13},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6253\u5305\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883\u3002",paraId:53,tocIndex:13},{value:"\u5982\u679C\u662F clone \u7684\u6E90\u7801\uFF0C\u9700\u8981\u5148\u6267\u884C\u4E00\u6B21\u5168\u91CF build\uFF0C\u5C06\u63D2\u4EF6\u7684\u4F9D\u8D56\u4E5F\u6784\u5EFA\u597D\u3002",paraId:55,tocIndex:13},{value:`yarn build `,paraId:56,tocIndex:13},{value:"\u5982\u679C\u662F\u4F7F\u7528\u7684 ",paraId:57,tocIndex:13},{value:"create-nocobase-app",paraId:57,tocIndex:13},{value:" \u521B\u5EFA\u7684\u9879\u76EE\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A",paraId:57,tocIndex:13},{value:`yarn build @nocobase-sample/plugin-initializer-configure-fields --tar -`,paraId:58,tocIndex:13},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:59,tocIndex:13},{value:"storage/tar/@nocobase-sample/plugin-initializer-configure-fields.tar.gz",paraId:59,tocIndex:13},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:59,tocIndex:13},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:60,tocIndex:13},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:59,tocIndex:13}],gi={},Pd={title:"\u66F4\u65B0\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/update-record.md",lastUpdated:1732240239e3,description:"\u81EA\u5B9A\u4E49\u884C\u64CD\u4F5C\u66F4\u65B0\u6570\u636E\uFF0C\u901A\u8FC7\u914D\u7F6E\u5B57\u6BB5\u8D4B\u503C\u786E\u5B9A\u8981\u4FEE\u6539\u7684\u5185\u5BB9"},ul=[{id:"\u66F4\u65B0\u6570\u636E",depth:1,title:"\u66F4\u65B0\u6570\u636E"}],pl=[{value:"\u81EA\u5B9A\u4E49\u884C\u64CD\u4F5C\u66F4\u65B0\u6570\u636E\uFF0C\u901A\u8FC7\u914D\u7F6E\u5B57\u6BB5\u8D4B\u503C\u786E\u5B9A\u8981\u4FEE\u6539\u7684\u5185\u5BB9",paraId:0,tocIndex:0},{value:"\u5982\u56FE\u5728\u8FD0\u5355\u8868\u683C\u533A\u5757\u4E2D\u914D\u7F6E\u66F4\u65B0\u6570\u636E\u64CD\u4F5C\u7528\u4E8E\u786E\u8BA4\u9001\u8FBE",paraId:1,tocIndex:0}],Il={},_l={title:"Upgrading for create-nocobase-app",toc:"menu",filename:"docs/en-US/welcome/getting-started/upgrading/create-nocobase-app.md",lastUpdated:1732240239e3,description:"Make sure to backup the database before upgrading!!!"},Td=[{id:"upgrading-for-create-nocobase-app",depth:1,title:"Upgrading for create-nocobase-app"},{id:"0-preparing-for-the-upgrade",depth:2,title:"0. Preparing for the upgrade"},{id:"1-upgrading",depth:2,title:"1. Upgrading"},{id:"2-upgrading-independent-plugins",depth:2,title:"2. Upgrading independent plugins"}],_r=[{value:"create-nocobase-app",paraId:0},{value:"Make sure to backup the database before upgrading!!!",paraId:1},{value:"Upgrade the application by running the ",paraId:2,tocIndex:2},{value:"yarn nocobase upgrade",paraId:2,tocIndex:2},{value:" command.",paraId:2,tocIndex:2},{value:`# Switch to the corresponding directory +`,paraId:58,tocIndex:13},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:59,tocIndex:13},{value:"storage/tar/@nocobase-sample/plugin-initializer-configure-fields.tar.gz",paraId:59,tocIndex:13},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:59,tocIndex:13},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:60,tocIndex:13},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:59,tocIndex:13}],gi={},Pd={title:"\u66F4\u65B0\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/update-record.md",lastUpdated:173254844e4,description:"\u81EA\u5B9A\u4E49\u884C\u64CD\u4F5C\u66F4\u65B0\u6570\u636E\uFF0C\u901A\u8FC7\u914D\u7F6E\u5B57\u6BB5\u8D4B\u503C\u786E\u5B9A\u8981\u4FEE\u6539\u7684\u5185\u5BB9"},ul=[{id:"\u66F4\u65B0\u6570\u636E",depth:1,title:"\u66F4\u65B0\u6570\u636E"}],pl=[{value:"\u81EA\u5B9A\u4E49\u884C\u64CD\u4F5C\u66F4\u65B0\u6570\u636E\uFF0C\u901A\u8FC7\u914D\u7F6E\u5B57\u6BB5\u8D4B\u503C\u786E\u5B9A\u8981\u4FEE\u6539\u7684\u5185\u5BB9",paraId:0,tocIndex:0},{value:"\u5982\u56FE\u5728\u8FD0\u5355\u8868\u683C\u533A\u5757\u4E2D\u914D\u7F6E\u66F4\u65B0\u6570\u636E\u64CD\u4F5C\u7528\u4E8E\u786E\u8BA4\u9001\u8FBE",paraId:1,tocIndex:0}],Il={},_l={title:"Upgrading for create-nocobase-app",toc:"menu",filename:"docs/en-US/welcome/getting-started/upgrading/create-nocobase-app.md",lastUpdated:173254844e4,description:"Make sure to backup the database before upgrading!!!"},Td=[{id:"upgrading-for-create-nocobase-app",depth:1,title:"Upgrading for create-nocobase-app"},{id:"0-preparing-for-the-upgrade",depth:2,title:"0. Preparing for the upgrade"},{id:"1-upgrading",depth:2,title:"1. Upgrading"},{id:"2-upgrading-independent-plugins",depth:2,title:"2. Upgrading independent plugins"}],_r=[{value:"create-nocobase-app",paraId:0},{value:"Make sure to backup the database before upgrading!!!",paraId:1},{value:"Upgrade the application by running the ",paraId:2,tocIndex:2},{value:"yarn nocobase upgrade",paraId:2,tocIndex:2},{value:" command.",paraId:2,tocIndex:2},{value:`# Switch to the corresponding directory cd my-nocobase-app # Execute the update command yarn nocobase upgrade # Start yarn dev -`,paraId:3,tocIndex:2},{value:"If there are problems with upgrading, you can also ",paraId:4,tocIndex:2},{value:"recreate new app",paraId:5,tocIndex:2},{value:" and refer to the old version of .env to change the environment variables. The database information needs to be configured correctly. When using a SQLite database, you need to copy the database files to the ",paraId:4,tocIndex:2},{value:"./storage/db/",paraId:4,tocIndex:2},{value:" directory. Finally, run ",paraId:4,tocIndex:2},{value:"yarn nocobase upgrade",paraId:4,tocIndex:2},{value:" to upgrade.",paraId:4,tocIndex:2},{value:"After upgrading NocoBase, independent plugins installed through the interface might also need to be upgraded. Please refer to documentation ",paraId:6,tocIndex:3},{value:"Installation and Upgrade of Plugins",paraId:7,tocIndex:3}],wr={},Vr={title:"HasManyRepository",toc:"menu",filename:"docs/en-US/api/database/relation-repository/has-many-repository.md",lastUpdated:1732240239e3,description:"HasManyRepository is the Relation Repository for handling HasMany relationships."},vl=[{id:"hasmanyrepository",depth:1,title:"HasManyRepository"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"find",depth:3,title:"find()"},{id:"findone",depth:3,title:"findOne()"},{id:"count",depth:3,title:"count()"},{id:"findandcount",depth:3,title:"findAndCount()"},{id:"create",depth:3,title:"create()"},{id:"update",depth:3,title:"update()"},{id:"destroy",depth:3,title:"destroy()"},{id:"add",depth:3,title:"add()"},{id:"remove",depth:3,title:"remove()"},{id:"set",depth:3,title:"set()"}],yc=[{value:"HasManyRepository",paraId:0,tocIndex:0},{value:" is the ",paraId:0,tocIndex:0},{value:"Relation Repository",paraId:0,tocIndex:0},{value:" for handling ",paraId:0,tocIndex:0},{value:"HasMany",paraId:0,tocIndex:0},{value:" relationships.",paraId:0,tocIndex:0},{value:"find()",paraId:1},{value:"Find associated objects.",paraId:2,tocIndex:2},{value:"Signature",paraId:3,tocIndex:2},{value:"async find(options?: FindOptions): Promise",paraId:4,tocIndex:2},{value:"Detailed Information",paraId:5,tocIndex:2},{value:"Query parameters are the same as ",paraId:6,tocIndex:2},{value:"Repository.find()",paraId:7,tocIndex:2},{value:".",paraId:6,tocIndex:2},{value:"findOne()",paraId:1},{value:"Find associated objects, only to return one record.",paraId:8,tocIndex:3},{value:"Signature",paraId:9,tocIndex:3},{value:"async findOne(options?: FindOneOptions): Promise",paraId:10,tocIndex:3},{value:"\u7C7B\u578B",paraId:11,tocIndex:3},{value:`type FindOneOptions = Omit; +`,paraId:3,tocIndex:2},{value:"If there are problems with upgrading, you can also ",paraId:4,tocIndex:2},{value:"recreate new app",paraId:5,tocIndex:2},{value:" and refer to the old version of .env to change the environment variables. The database information needs to be configured correctly. When using a SQLite database, you need to copy the database files to the ",paraId:4,tocIndex:2},{value:"./storage/db/",paraId:4,tocIndex:2},{value:" directory. Finally, run ",paraId:4,tocIndex:2},{value:"yarn nocobase upgrade",paraId:4,tocIndex:2},{value:" to upgrade.",paraId:4,tocIndex:2},{value:"After upgrading NocoBase, independent plugins installed through the interface might also need to be upgraded. Please refer to documentation ",paraId:6,tocIndex:3},{value:"Installation and Upgrade of Plugins",paraId:7,tocIndex:3}],wr={},Vr={title:"HasManyRepository",toc:"menu",filename:"docs/en-US/api/database/relation-repository/has-many-repository.md",lastUpdated:173254844e4,description:"HasManyRepository is the Relation Repository for handling HasMany relationships."},vl=[{id:"hasmanyrepository",depth:1,title:"HasManyRepository"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"find",depth:3,title:"find()"},{id:"findone",depth:3,title:"findOne()"},{id:"count",depth:3,title:"count()"},{id:"findandcount",depth:3,title:"findAndCount()"},{id:"create",depth:3,title:"create()"},{id:"update",depth:3,title:"update()"},{id:"destroy",depth:3,title:"destroy()"},{id:"add",depth:3,title:"add()"},{id:"remove",depth:3,title:"remove()"},{id:"set",depth:3,title:"set()"}],yc=[{value:"HasManyRepository",paraId:0,tocIndex:0},{value:" is the ",paraId:0,tocIndex:0},{value:"Relation Repository",paraId:0,tocIndex:0},{value:" for handling ",paraId:0,tocIndex:0},{value:"HasMany",paraId:0,tocIndex:0},{value:" relationships.",paraId:0,tocIndex:0},{value:"find()",paraId:1},{value:"Find associated objects.",paraId:2,tocIndex:2},{value:"Signature",paraId:3,tocIndex:2},{value:"async find(options?: FindOptions): Promise",paraId:4,tocIndex:2},{value:"Detailed Information",paraId:5,tocIndex:2},{value:"Query parameters are the same as ",paraId:6,tocIndex:2},{value:"Repository.find()",paraId:7,tocIndex:2},{value:".",paraId:6,tocIndex:2},{value:"findOne()",paraId:1},{value:"Find associated objects, only to return one record.",paraId:8,tocIndex:3},{value:"Signature",paraId:9,tocIndex:3},{value:"async findOne(options?: FindOneOptions): Promise",paraId:10,tocIndex:3},{value:"\u7C7B\u578B",paraId:11,tocIndex:3},{value:`type FindOneOptions = Omit; `,paraId:12,tocIndex:3},{value:"\u53C2\u6570",paraId:13,tocIndex:3},{value:"\u5927\u90E8\u5206\u53C2\u6570\u4E0E ",paraId:14,tocIndex:3},{value:"find()",paraId:14,tocIndex:3},{value:" \u76F8\u540C\uFF0C\u4E0D\u540C\u4E4B\u5904\u5728\u4E8E ",paraId:14,tocIndex:3},{value:"findOne()",paraId:14,tocIndex:3},{value:" \u53EA\u8FD4\u56DE\u5355\u6761\u6570\u636E\uFF0C\u6240\u4EE5\u4E0D\u9700\u8981 ",paraId:14,tocIndex:3},{value:"limit",paraId:14,tocIndex:3},{value:" \u53C2\u6570\uFF0C\u4E14\u67E5\u8BE2\u65F6\u59CB\u7EC8\u4E3A ",paraId:14,tocIndex:3},{value:"1",paraId:14,tocIndex:3},{value:"\u3002",paraId:14,tocIndex:3},{value:"count()",paraId:1},{value:"Return the number of records matching the query criteria.",paraId:15,tocIndex:4},{value:"Signature",paraId:16,tocIndex:4},{value:"async count(options?: CountOptions)",paraId:17,tocIndex:4},{value:"Type",paraId:18,tocIndex:4},{value:`interface CountOptions extends Omit, Transactionable { @@ -695,7 +710,7 @@ interface CreateOptions extends SequelizeCreateOptions { } `,paraId:53,tocIndex:9},{value:"Detailed Information",paraId:54,tocIndex:9},{value:"tk",paraId:55,tocIndex:9},{value:` - The targetKey value of the associated object, either as a single value or an array. -`,paraId:55,tocIndex:9},{value:"transaction",paraId:56,tocIndex:9},{value:": \u4E8B\u52A1\u5BF9\u8C61\u3002\u5982\u679C\u6CA1\u6709\u4F20\u5165\u4E8B\u52A1\u53C2\u6570\uFF0C\u8BE5\u65B9\u6CD5\u4F1A\u81EA\u52A8\u521B\u5EFA\u4E00\u4E2A\u5185\u90E8\u4E8B\u52A1\u3002",paraId:56,tocIndex:9},{value:"remove()",paraId:1},{value:"Remove the association with the given objects.",paraId:57,tocIndex:10},{value:"Signature",paraId:58,tocIndex:10},{value:"async remove(options: TargetKey | TargetKey[] | AssociatedOptions)",paraId:59,tocIndex:10},{value:"Detailed Information",paraId:60,tocIndex:10},{value:"Same parameters as the ",paraId:61,tocIndex:10},{value:"add()",paraId:62,tocIndex:10},{value:" method.",paraId:61,tocIndex:10},{value:"set()",paraId:1},{value:"Set the associated object of the current relationship.",paraId:63,tocIndex:11},{value:"Signature",paraId:64,tocIndex:11},{value:"async set(options: TargetKey | TargetKey[] | AssociatedOptions)",paraId:65,tocIndex:11},{value:"Detailed Information",paraId:66,tocIndex:11},{value:"Same parameters as the ",paraId:67,tocIndex:11},{value:"add()",paraId:68,tocIndex:11},{value:" method.",paraId:67,tocIndex:11}],Lr={},Kr={title:"Save Record",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/save-record.md",lastUpdated:1732240239e3,description:"Custom Save Record operations are unique to form blocks, supporting the customization of the operation's behavior:"},bi=[{id:"save-record",depth:1,title:"Save Record"}],wc=[{value:"Custom Save Record operations are unique to form blocks, supporting the customization of the operation's behavior:",paraId:0,tocIndex:0},{value:"Edit Button",paraId:1,tocIndex:0},{value:"Assign Field Values: Upon clicking the custom button, the current data field assignments are saved.",paraId:1,tocIndex:0},{value:"Skip Required Validation",paraId:1,tocIndex:0},{value:"After successful submission",paraId:1,tocIndex:0},{value:"Bind Workflow",paraId:2,tocIndex:0}],yi={},kc={title:"Color",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/color.md",lastUpdated:1732240239e3,description:"to be added."},Sc=[{id:"color",depth:1,title:"Color"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],ml=[{value:"to be added.",paraId:0,tocIndex:3}],wi={},Uc={title:"Email",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/email.md",lastUpdated:1732240239e3,description:"to be added."},Pc=[{id:"email",depth:1,title:"Email"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Tc=[{value:"to be added.",paraId:0,tocIndex:3}],hl={},Cd={title:"Input",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/input.md",lastUpdated:1732240239e3,description:"Edit mode"},Ad=[{id:"input",depth:1,title:"Input"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"ui-interface-configuration",depth:2,title:"UI interface configuration"}],ki=[{value:"Edit mode",paraId:0,tocIndex:3},{value:"Read mode",paraId:1,tocIndex:3}],Si={},vr={title:"Phone",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/phone.md",lastUpdated:1732240239e3,description:"to be added."},mr=[{id:"phone",depth:1,title:"Phone"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],id=[{value:"to be added.",paraId:0,tocIndex:3}],Nr={},zr={title:"\u666E\u901A\u8868",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/general/index.md",lastUpdated:1732240239e3,description:"\u666E\u901A\u6570\u636E\u8868\u6A21\u677F\uFF0C\u652F\u6301\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u6570\u636E\u8868\u7684\u884C\u4E3A\uFF1A"},ld=[{id:"\u666E\u901A\u8868",depth:1,title:"\u666E\u901A\u8868"}],Cc=[{value:"\u666E\u901A\u6570\u636E\u8868\u6A21\u677F\uFF0C\u652F\u6301\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u6570\u636E\u8868\u7684\u884C\u4E3A\uFF1A",paraId:0,tocIndex:0},{value:"\u81EA\u52A8\u751F\u6210 ID \u5B57\u6BB5",paraId:1,tocIndex:0},{value:"\u8BB0\u5F55\u521B\u5EFA\u4EBA",paraId:1,tocIndex:0},{value:"\u8BB0\u5F55\u6700\u540E\u66F4\u65B0\u4EBA",paraId:1,tocIndex:0},{value:"\u8BB0\u5F55\u521B\u5EFA\u65F6\u95F4",paraId:1,tocIndex:0},{value:"\u8BB0\u5F55\u6700\u540E\u66F4\u65B0\u65F6\u95F4",paraId:1,tocIndex:0},{value:"\u53EF\u4EE5\u5BF9\u884C\u8BB0\u5F55\u8FDB\u884C\u6392\u5E8F",paraId:1,tocIndex:0}],fl={},xl={title:"\u4E0B\u62C9\u9009\u62E9\u5668",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/select/index.md",lastUpdated:1732240239e3,description:"\u4E0B\u62C9\u9009\u62E9\u5668\u662F\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u7684\u5E38\u7528\u7EC4\u4EF6\uFF0C\u9664\u4E86\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u7684\u6240\u6709\u5173\u7CFB\u5B57\u6BB5\uFF0C\u7F16\u8F91\u72B6\u6001\u4E0B\u7684\u9ED8\u8BA4\u7EC4\u4EF6\u5747\u4E3A\u4E0B\u62C9\u9009\u62E9\u5668\uFF0C\u652F\u6301\u4ECE\u76EE\u6807\u8868\u9009\u62E9\u5DF2\u6709\u6570\u636E\u5173\u8054\u6216\u6DFB\u52A0\u65B0\u6570\u636E\u540E\u5173\u8054\u3002"},cr=[{id:"\u4E0B\u62C9\u9009\u62E9\u5668",depth:1,title:"\u4E0B\u62C9\u9009\u62E9\u5668"}],or=[{value:"\u4E0B\u62C9\u9009\u62E9\u5668\u662F\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u7684\u5E38\u7528\u7EC4\u4EF6\uFF0C\u9664\u4E86\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u7684\u6240\u6709\u5173\u7CFB\u5B57\u6BB5\uFF0C\u7F16\u8F91\u72B6\u6001\u4E0B\u7684\u9ED8\u8BA4\u7EC4\u4EF6\u5747\u4E3A\u4E0B\u62C9\u9009\u62E9\u5668\uFF0C\u652F\u6301\u4ECE\u76EE\u6807\u8868\u9009\u62E9\u5DF2\u6709\u6570\u636E\u5173\u8054\u6216\u6DFB\u52A0\u65B0\u6570\u636E\u540E\u5173\u8054\u3002",paraId:0,tocIndex:0},{value:"\u5982\u56FE\u5728\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u4E2D,\u4EFB\u52A1\u8868\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u8D1F\u8D23\u4EBA\u300D\uFF08\u591A\u5BF9\u4E00\uFF09",paraId:1,tocIndex:0},{value:"\u9009\u62E9\u5173\u8054\u6570\u636E\uFF0C\u4ECE\u76EE\u6807\u8868\u7684\u5DF2\u6709\u6570\u636E\u4E2D\u9009\u62E9\u5173\u8054",paraId:2,tocIndex:0},{value:"\u65B0\u589E\u6570\u636E\u540E\u5173\u8054",paraId:3,tocIndex:0},{value:"\u76F4\u63A5\u4E3A\u76EE\u6807\u8868\u65B0\u5EFA\u6570\u636E\u540E\u8FDB\u884C\u5173\u8054\uFF0C\u76EE\u524D\u6709\u4E24\u79CD\u65B0\u5EFA\u65B9\u5F0F\uFF08\u4E0B\u62C9\u83DC\u5355/\u5F39\u7A97\u6DFB\u52A0\uFF09",paraId:4,tocIndex:0},{value:"\u4E0B\u62C9\u83DC\u5355\u6DFB\u52A0\uFF0C\u521B\u5EFA\u6210\u529F\u540E\u81EA\u52A8\u9009\u4E2D\u521B\u5EFA\u7684\u6570\u636E\uFF0C\u9700\u8981\u914D\u7F6E\u6807\u9898\u5B57\u6BB5",paraId:5,tocIndex:0},{value:"\u793A\u4F8B\u5982\u4E0B",paraId:6,tocIndex:0},{value:"\u5F39\u7A97\u6DFB\u52A0\uFF1A\u521B\u5EFA\u6210\u529F\u540E\u4F1A\u81EA\u52A8\u9009\u4E2D\u521B\u5EFA\u7684\u6570\u636E",paraId:7,tocIndex:0},{value:"\u5728\u5F88\u591A\u573A\u666F\u4E2D\uFF0C\u5E0C\u671B\u901A\u8FC7\u5173\u7CFB\u9009\u62E9\u5668\u5E26\u51FA\u5173\u8054\u6570\u636E\uFF0C\u800C\u4E0B\u62C9\u9009\u62E9\u5668\u53EA\u80FD\u5E26\u51FA\u76EE\u6807\u8868\u4E2D\u7684\u7B80\u5355\u5B57\u6BB5\uFF0C\u5173\u7CFB\u7684\u5173\u7CFB\u6570\u636E\u5219\u8981\u901A\u8FC7\u914D\u7F6E\u6570\u636E\u9009\u62E9\u5668\u6765\u5E26\u51FA",paraId:8,tocIndex:0}],xo={},kr={title:"HasOneRepository",toc:"menu",filename:"docs/en-US/api/database/relation-repository/has-one-repository.md",lastUpdated:1732240239e3,description:"HasOneRepository is the associated repository of type HasOne."},Ac=[{id:"hasonerepository",depth:1,title:"HasOneRepository"},{id:"overview",depth:2,title:"Overview"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"find",depth:3,title:"find()"},{id:"create",depth:3,title:"create()"},{id:"update",depth:3,title:"update()"},{id:"remove",depth:3,title:"remove()"},{id:"destroy",depth:3,title:"destroy()"},{id:"set",depth:3,title:"set()"}],qc=[{value:"HasOneRepository",paraId:0,tocIndex:1},{value:" is the associated repository of type ",paraId:0,tocIndex:1},{value:"HasOne",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:`const User = db.collection({ +`,paraId:55,tocIndex:9},{value:"transaction",paraId:56,tocIndex:9},{value:": \u4E8B\u52A1\u5BF9\u8C61\u3002\u5982\u679C\u6CA1\u6709\u4F20\u5165\u4E8B\u52A1\u53C2\u6570\uFF0C\u8BE5\u65B9\u6CD5\u4F1A\u81EA\u52A8\u521B\u5EFA\u4E00\u4E2A\u5185\u90E8\u4E8B\u52A1\u3002",paraId:56,tocIndex:9},{value:"remove()",paraId:1},{value:"Remove the association with the given objects.",paraId:57,tocIndex:10},{value:"Signature",paraId:58,tocIndex:10},{value:"async remove(options: TargetKey | TargetKey[] | AssociatedOptions)",paraId:59,tocIndex:10},{value:"Detailed Information",paraId:60,tocIndex:10},{value:"Same parameters as the ",paraId:61,tocIndex:10},{value:"add()",paraId:62,tocIndex:10},{value:" method.",paraId:61,tocIndex:10},{value:"set()",paraId:1},{value:"Set the associated object of the current relationship.",paraId:63,tocIndex:11},{value:"Signature",paraId:64,tocIndex:11},{value:"async set(options: TargetKey | TargetKey[] | AssociatedOptions)",paraId:65,tocIndex:11},{value:"Detailed Information",paraId:66,tocIndex:11},{value:"Same parameters as the ",paraId:67,tocIndex:11},{value:"add()",paraId:68,tocIndex:11},{value:" method.",paraId:67,tocIndex:11}],Lr={},Kr={title:"Save Record",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/save-record.md",lastUpdated:173254844e4,description:"Custom Save Record operations are unique to form blocks, supporting the customization of the operation's behavior:"},bi=[{id:"save-record",depth:1,title:"Save Record"}],wc=[{value:"Custom Save Record operations are unique to form blocks, supporting the customization of the operation's behavior:",paraId:0,tocIndex:0},{value:"Edit Button",paraId:1,tocIndex:0},{value:"Assign Field Values: Upon clicking the custom button, the current data field assignments are saved.",paraId:1,tocIndex:0},{value:"Skip Required Validation",paraId:1,tocIndex:0},{value:"After successful submission",paraId:1,tocIndex:0},{value:"Bind Workflow",paraId:2,tocIndex:0}],yi={},kc={title:"Color",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/color.md",lastUpdated:173254844e4,description:"to be added."},Sc=[{id:"color",depth:1,title:"Color"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],ml=[{value:"to be added.",paraId:0,tocIndex:3}],wi={},Uc={title:"Email",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/email.md",lastUpdated:173254844e4,description:"to be added."},Pc=[{id:"email",depth:1,title:"Email"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Tc=[{value:"to be added.",paraId:0,tocIndex:3}],hl={},Cd={title:"Input",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/input.md",lastUpdated:173254844e4,description:"Edit mode"},Ad=[{id:"input",depth:1,title:"Input"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"ui-interface-configuration",depth:2,title:"UI interface configuration"}],ki=[{value:"Edit mode",paraId:0,tocIndex:3},{value:"Read mode",paraId:1,tocIndex:3}],Si={},vr={title:"Phone",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/phone.md",lastUpdated:173254844e4,description:"to be added."},mr=[{id:"phone",depth:1,title:"Phone"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],id=[{value:"to be added.",paraId:0,tocIndex:3}],Nr={},zr={title:"\u666E\u901A\u8868",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/general/index.md",lastUpdated:173254844e4,description:"\u666E\u901A\u6570\u636E\u8868\u6A21\u677F\uFF0C\u652F\u6301\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u6570\u636E\u8868\u7684\u884C\u4E3A\uFF1A"},ld=[{id:"\u666E\u901A\u8868",depth:1,title:"\u666E\u901A\u8868"}],Cc=[{value:"\u666E\u901A\u6570\u636E\u8868\u6A21\u677F\uFF0C\u652F\u6301\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u6570\u636E\u8868\u7684\u884C\u4E3A\uFF1A",paraId:0,tocIndex:0},{value:"\u81EA\u52A8\u751F\u6210 ID \u5B57\u6BB5",paraId:1,tocIndex:0},{value:"\u8BB0\u5F55\u521B\u5EFA\u4EBA",paraId:1,tocIndex:0},{value:"\u8BB0\u5F55\u6700\u540E\u66F4\u65B0\u4EBA",paraId:1,tocIndex:0},{value:"\u8BB0\u5F55\u521B\u5EFA\u65F6\u95F4",paraId:1,tocIndex:0},{value:"\u8BB0\u5F55\u6700\u540E\u66F4\u65B0\u65F6\u95F4",paraId:1,tocIndex:0},{value:"\u53EF\u4EE5\u5BF9\u884C\u8BB0\u5F55\u8FDB\u884C\u6392\u5E8F",paraId:1,tocIndex:0}],fl={},xl={title:"\u4E0B\u62C9\u9009\u62E9\u5668",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/select/index.md",lastUpdated:173254844e4,description:"\u4E0B\u62C9\u9009\u62E9\u5668\u662F\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u7684\u5E38\u7528\u7EC4\u4EF6\uFF0C\u9664\u4E86\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u7684\u6240\u6709\u5173\u7CFB\u5B57\u6BB5\uFF0C\u7F16\u8F91\u72B6\u6001\u4E0B\u7684\u9ED8\u8BA4\u7EC4\u4EF6\u5747\u4E3A\u4E0B\u62C9\u9009\u62E9\u5668\uFF0C\u652F\u6301\u4ECE\u76EE\u6807\u8868\u9009\u62E9\u5DF2\u6709\u6570\u636E\u5173\u8054\u6216\u6DFB\u52A0\u65B0\u6570\u636E\u540E\u5173\u8054\u3002"},cr=[{id:"\u4E0B\u62C9\u9009\u62E9\u5668",depth:1,title:"\u4E0B\u62C9\u9009\u62E9\u5668"}],or=[{value:"\u4E0B\u62C9\u9009\u62E9\u5668\u662F\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u7684\u5E38\u7528\u7EC4\u4EF6\uFF0C\u9664\u4E86\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u7684\u6240\u6709\u5173\u7CFB\u5B57\u6BB5\uFF0C\u7F16\u8F91\u72B6\u6001\u4E0B\u7684\u9ED8\u8BA4\u7EC4\u4EF6\u5747\u4E3A\u4E0B\u62C9\u9009\u62E9\u5668\uFF0C\u652F\u6301\u4ECE\u76EE\u6807\u8868\u9009\u62E9\u5DF2\u6709\u6570\u636E\u5173\u8054\u6216\u6DFB\u52A0\u65B0\u6570\u636E\u540E\u5173\u8054\u3002",paraId:0,tocIndex:0},{value:"\u5982\u56FE\u5728\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u4E2D,\u4EFB\u52A1\u8868\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u8D1F\u8D23\u4EBA\u300D\uFF08\u591A\u5BF9\u4E00\uFF09",paraId:1,tocIndex:0},{value:"\u9009\u62E9\u5173\u8054\u6570\u636E\uFF0C\u4ECE\u76EE\u6807\u8868\u7684\u5DF2\u6709\u6570\u636E\u4E2D\u9009\u62E9\u5173\u8054",paraId:2,tocIndex:0},{value:"\u65B0\u589E\u6570\u636E\u540E\u5173\u8054",paraId:3,tocIndex:0},{value:"\u76F4\u63A5\u4E3A\u76EE\u6807\u8868\u65B0\u5EFA\u6570\u636E\u540E\u8FDB\u884C\u5173\u8054\uFF0C\u76EE\u524D\u6709\u4E24\u79CD\u65B0\u5EFA\u65B9\u5F0F\uFF08\u4E0B\u62C9\u83DC\u5355/\u5F39\u7A97\u6DFB\u52A0\uFF09",paraId:4,tocIndex:0},{value:"\u4E0B\u62C9\u83DC\u5355\u6DFB\u52A0\uFF0C\u521B\u5EFA\u6210\u529F\u540E\u81EA\u52A8\u9009\u4E2D\u521B\u5EFA\u7684\u6570\u636E\uFF0C\u9700\u8981\u914D\u7F6E\u6807\u9898\u5B57\u6BB5",paraId:5,tocIndex:0},{value:"\u793A\u4F8B\u5982\u4E0B",paraId:6,tocIndex:0},{value:"\u5F39\u7A97\u6DFB\u52A0\uFF1A\u521B\u5EFA\u6210\u529F\u540E\u4F1A\u81EA\u52A8\u9009\u4E2D\u521B\u5EFA\u7684\u6570\u636E",paraId:7,tocIndex:0},{value:"\u5728\u5F88\u591A\u573A\u666F\u4E2D\uFF0C\u5E0C\u671B\u901A\u8FC7\u5173\u7CFB\u9009\u62E9\u5668\u5E26\u51FA\u5173\u8054\u6570\u636E\uFF0C\u800C\u4E0B\u62C9\u9009\u62E9\u5668\u53EA\u80FD\u5E26\u51FA\u76EE\u6807\u8868\u4E2D\u7684\u7B80\u5355\u5B57\u6BB5\uFF0C\u5173\u7CFB\u7684\u5173\u7CFB\u6570\u636E\u5219\u8981\u901A\u8FC7\u914D\u7F6E\u6570\u636E\u9009\u62E9\u5668\u6765\u5E26\u51FA",paraId:8,tocIndex:0}],xo={},kr={title:"HasOneRepository",toc:"menu",filename:"docs/en-US/api/database/relation-repository/has-one-repository.md",lastUpdated:173254844e4,description:"HasOneRepository is the associated repository of type HasOne."},Ac=[{id:"hasonerepository",depth:1,title:"HasOneRepository"},{id:"overview",depth:2,title:"Overview"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"find",depth:3,title:"find()"},{id:"create",depth:3,title:"create()"},{id:"update",depth:3,title:"update()"},{id:"remove",depth:3,title:"remove()"},{id:"destroy",depth:3,title:"destroy()"},{id:"set",depth:3,title:"set()"}],qc=[{value:"HasOneRepository",paraId:0,tocIndex:1},{value:" is the associated repository of type ",paraId:0,tocIndex:1},{value:"HasOne",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:`const User = db.collection({ name: 'users', fields: [ { type: 'hasOne', name: 'profile' }, @@ -783,7 +798,7 @@ profile.get('avatar'); // 'avatar2' await UserProfileRepository.set(newProfile.get('id')); (await UserProfileRepository.find()).get('id') === newProfile.get('id'); // true -`,paraId:55,tocIndex:8}],gl={},bl={title:"To Resource",toc:"menu",filename:"docs/en-US/development/server/resources-actions-v2/to-resource.md",lastUpdated:1732240239e3},Ec=[],Wd=[],qd={},yl={title:"Add Record",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/add-record.md",lastUpdated:1732240239e3,description:"The custom add data operation empowers users to insert data into any table within the system."},$d=[{id:"add-record",depth:1,title:"Add Record"}],Ui=[{value:"Add Record",paraId:0},{value:"The custom add data operation empowers users to insert data into any table within the system.",paraId:1,tocIndex:0}],Dc={},Oc={title:"Open popup",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/open-popup.md",lastUpdated:1732240239e3,description:"The Open popup operation presents data in a popup window, allowing you to customize detail blocks or form blocks. This feature is suitable for various scenarios. For example, when a data table has many fields, these fields can be divided into different operation blocks, allowing you to focus on viewing or modifying specific fields. You can create multiple customized data display or editing interfaces based on business needs."},Ed=[{id:"open-popup",depth:1,title:"Open popup"}],Rc=[{value:"The Open popup operation presents data in a popup window, allowing you to customize detail blocks or form blocks. This feature is suitable for various scenarios. For example, when a data table has many fields, these fields can be divided into different operation blocks, allowing you to focus on viewing or modifying specific fields. You can create multiple customized data display or editing interfaces based on business needs.",paraId:0,tocIndex:0},{value:"As illustrated, the order table is configured with three Open popup operations: View Main Order (Order Main Information), View Products (Product Information associated with the Order), and View Customer (Customer Information associated with the Order).",paraId:1,tocIndex:0}],Gd={},Ar={title:"Icon",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/icon.md",lastUpdated:1732240239e3,description:"to be added."},Vd=[{id:"icon",depth:1,title:"Icon"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Kd=[{value:"to be added.",paraId:0,tocIndex:3}],cd={},wl={title:"Extension",toc:"menu",filename:"docs/en-US/handbook/notification-manager/development/extension.md",lastUpdated:1732240239e3,description:"NocoBase supports the expansion of notification channel types, such as SMS notifications and app push notifications,etc."},Dd=[{id:"extension",depth:2,title:"Extension"},{id:"client",depth:2,title:"Client"},{id:"channel-type-registration",depth:3,title:"Channel Type Registration"},{id:"server",depth:2,title:"Server"},{id:"extending-abstract-class",depth:3,title:"Extending Abstract Class"},{id:"server-registration",depth:3,title:"Server Registration"},{id:"full-example",depth:2,title:"Full Example"},{id:"plugin-creation",depth:3,title:"Plugin Creation"},{id:"client-development",depth:3,title:"Client Development"},{id:"channelconfigform",depth:4,title:"ChannelConfigForm"},{id:"messageconfigform",depth:4,title:"MessageConfigForm"},{id:"client-component-registration",depth:4,title:"Client Component Registration"},{id:"server-development",depth:3,title:"Server Development"},{id:"plugin-registration-and-launch",depth:3,title:"Plugin Registration and Launch"},{id:"channel-configuration",depth:3,title:"Channel Configuration"}],Mc=[{value:"NocoBase supports the expansion of notification channel types, such as SMS notifications and app push notifications,etc.",paraId:0,tocIndex:0},{value:"The client channel configuration and message configuration interface are registered through the ",paraId:1,tocIndex:2},{value:"registerChannelType",paraId:1,tocIndex:2},{value:" method provided by the notification management plugin client:",paraId:1,tocIndex:2},{value:`import PluginNotificationManagerClient from '@nocobase/plugin-notification-manager/client'; +`,paraId:55,tocIndex:8}],gl={},bl={title:"To Resource",toc:"menu",filename:"docs/en-US/development/server/resources-actions-v2/to-resource.md",lastUpdated:173254844e4},Ec=[],Wd=[],qd={},yl={title:"Add Record",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/add-record.md",lastUpdated:173254844e4,description:"The custom add data operation empowers users to insert data into any table within the system."},$d=[{id:"add-record",depth:1,title:"Add Record"}],Ui=[{value:"Add Record",paraId:0},{value:"The custom add data operation empowers users to insert data into any table within the system.",paraId:1,tocIndex:0}],Dc={},Oc={title:"Open popup",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/open-popup.md",lastUpdated:173254844e4,description:"The Open popup operation presents data in a popup window, allowing you to customize detail blocks or form blocks. This feature is suitable for various scenarios. For example, when a data table has many fields, these fields can be divided into different operation blocks, allowing you to focus on viewing or modifying specific fields. You can create multiple customized data display or editing interfaces based on business needs."},Ed=[{id:"open-popup",depth:1,title:"Open popup"}],Rc=[{value:"The Open popup operation presents data in a popup window, allowing you to customize detail blocks or form blocks. This feature is suitable for various scenarios. For example, when a data table has many fields, these fields can be divided into different operation blocks, allowing you to focus on viewing or modifying specific fields. You can create multiple customized data display or editing interfaces based on business needs.",paraId:0,tocIndex:0},{value:"As illustrated, the order table is configured with three Open popup operations: View Main Order (Order Main Information), View Products (Product Information associated with the Order), and View Customer (Customer Information associated with the Order).",paraId:1,tocIndex:0}],Gd={},Ar={title:"Icon",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/icon.md",lastUpdated:173254844e4,description:"to be added."},Vd=[{id:"icon",depth:1,title:"Icon"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Kd=[{value:"to be added.",paraId:0,tocIndex:3}],cd={},wl={title:"Extension",toc:"menu",filename:"docs/en-US/handbook/notification-manager/development/extension.md",lastUpdated:173254844e4,description:"NocoBase supports the expansion of notification channel types, such as SMS notifications and app push notifications,etc."},Dd=[{id:"extension",depth:2,title:"Extension"},{id:"client",depth:2,title:"Client"},{id:"channel-type-registration",depth:3,title:"Channel Type Registration"},{id:"server",depth:2,title:"Server"},{id:"extending-abstract-class",depth:3,title:"Extending Abstract Class"},{id:"server-registration",depth:3,title:"Server Registration"},{id:"full-example",depth:2,title:"Full Example"},{id:"plugin-creation",depth:3,title:"Plugin Creation"},{id:"client-development",depth:3,title:"Client Development"},{id:"channelconfigform",depth:4,title:"ChannelConfigForm"},{id:"messageconfigform",depth:4,title:"MessageConfigForm"},{id:"client-component-registration",depth:4,title:"Client Component Registration"},{id:"server-development",depth:3,title:"Server Development"},{id:"plugin-registration-and-launch",depth:3,title:"Plugin Registration and Launch"},{id:"channel-configuration",depth:3,title:"Channel Configuration"}],Mc=[{value:"NocoBase supports the expansion of notification channel types, such as SMS notifications and app push notifications,etc.",paraId:0,tocIndex:0},{value:"The client channel configuration and message configuration interface are registered through the ",paraId:1,tocIndex:2},{value:"registerChannelType",paraId:1,tocIndex:2},{value:" method provided by the notification management plugin client:",paraId:1,tocIndex:2},{value:`import PluginNotificationManagerClient from '@nocobase/plugin-notification-manager/client'; class PluginNotificationExampleClient extends Plugin { async afterAdd() {} @@ -976,7 +991,7 @@ export default PluginNotificationExampleServer; `,paraId:22,tocIndex:14},{value:`Add a sample channel. `,paraId:23,tocIndex:14},{value:`Create a new workflow and configure the notification node. `,paraId:24,tocIndex:14},{value:`Trigger the workflow execution to view the following information output in the console. -`,paraId:25,tocIndex:14}],kl={},ko={title:"\u6807\u9898",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/title/index.md",lastUpdated:1732240239e3,description:"\u6807\u9898\u7EC4\u4EF6\u662F\u9605\u8BFB\u6A21\u5F0F\u4E0B\u63D0\u4F9B\u7684\u4E00\u79CD\u6E05\u6670\u660E\u4E86\u7684\u65B9\u5F0F\u6765\u663E\u793A\u4E0E\u5F53\u524D\u8BB0\u5F55\u5173\u8054\u7684\u5173\u952E\u4FE1\u606F\uFF0C\u8BE6\u60C5\u72B6\u6001\u4E0B\u5173\u7CFB\u5B57\u6BB5\u7684\u9ED8\u8BA4\u7EC4\u4EF6\u5747\u4E3A\u6807\u9898,\u9ED8\u8BA4\u6807\u9898\u5B57\u6BB5\u4E3A id,\u652F\u6301\u81EA\u5B9A\u4E49\u6807\u9898\u5B57\u6BB5\u3002"},Pi=[{id:"\u6807\u9898",depth:1,title:"\u6807\u9898"}],Sl=[{value:"\u6807\u9898\u7EC4\u4EF6\u662F\u9605\u8BFB\u6A21\u5F0F\u4E0B\u63D0\u4F9B\u7684\u4E00\u79CD\u6E05\u6670\u660E\u4E86\u7684\u65B9\u5F0F\u6765\u663E\u793A\u4E0E\u5F53\u524D\u8BB0\u5F55\u5173\u8054\u7684\u5173\u952E\u4FE1\u606F\uFF0C\u8BE6\u60C5\u72B6\u6001\u4E0B\u5173\u7CFB\u5B57\u6BB5\u7684\u9ED8\u8BA4\u7EC4\u4EF6\u5747\u4E3A\u6807\u9898,\u9ED8\u8BA4\u6807\u9898\u5B57\u6BB5\u4E3A id,\u652F\u6301\u81EA\u5B9A\u4E49\u6807\u9898\u5B57\u6BB5\u3002",paraId:0,tocIndex:0}],Ul={},Ti={title:"Packaging and Uploading to Production",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initailizer/add-item-to-block.md",lastUpdated:1732240239e3,description:"The functionality to be implemented is similar to the Global Registration of Component and Scope example, but this time, the component and scope will be registered within the plugin itself, instead of globally."},Pl=[{id:"partial-registration-of-component-and-scope",depth:1,title:"Partial Registration of Component and Scope"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"functionality-implementation",depth:1,title:"Functionality Implementation"},{id:"1-creating-a-custom-page",depth:2,title:"1. Creating a Custom Page"},{id:"2-rendering-content-directly-with-component",depth:2,title:"2. Rendering Content Directly with Component"},{id:"3-rendering-content-with-schemacomponent",depth:2,title:"3. Rendering Content with SchemaComponent"},{id:"packaging-and-uploading-to-production",depth:1,title:"Packaging and Uploading to Production"}],sd=[{value:"The functionality to be implemented is similar to the ",paraId:0,tocIndex:1},{value:"Global Registration of Component and Scope",paraId:1,tocIndex:1},{value:" example, but this time, the component and scope will be registered within the plugin itself, instead of globally.",paraId:0,tocIndex:1},{value:"You can view the complete sample code for this document in ",paraId:2,tocIndex:1},{value:"plugin-samples",paraId:2,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"Following the guide on ",paraId:3,tocIndex:2},{value:"Writing Your First Plugin",paraId:4,tocIndex:2},{value:", if you do not yet have a project, you can create one first. If you already have a project or have cloned the source code, you can skip this step.",paraId:3,tocIndex:2},{value:`yarn create nocobase-app my-nocobase-app -d sqlite +`,paraId:25,tocIndex:14}],kl={},ko={title:"\u6807\u9898",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/title/index.md",lastUpdated:173254844e4,description:"\u6807\u9898\u7EC4\u4EF6\u662F\u9605\u8BFB\u6A21\u5F0F\u4E0B\u63D0\u4F9B\u7684\u4E00\u79CD\u6E05\u6670\u660E\u4E86\u7684\u65B9\u5F0F\u6765\u663E\u793A\u4E0E\u5F53\u524D\u8BB0\u5F55\u5173\u8054\u7684\u5173\u952E\u4FE1\u606F\uFF0C\u8BE6\u60C5\u72B6\u6001\u4E0B\u5173\u7CFB\u5B57\u6BB5\u7684\u9ED8\u8BA4\u7EC4\u4EF6\u5747\u4E3A\u6807\u9898,\u9ED8\u8BA4\u6807\u9898\u5B57\u6BB5\u4E3A id,\u652F\u6301\u81EA\u5B9A\u4E49\u6807\u9898\u5B57\u6BB5\u3002"},Pi=[{id:"\u6807\u9898",depth:1,title:"\u6807\u9898"}],Sl=[{value:"\u6807\u9898\u7EC4\u4EF6\u662F\u9605\u8BFB\u6A21\u5F0F\u4E0B\u63D0\u4F9B\u7684\u4E00\u79CD\u6E05\u6670\u660E\u4E86\u7684\u65B9\u5F0F\u6765\u663E\u793A\u4E0E\u5F53\u524D\u8BB0\u5F55\u5173\u8054\u7684\u5173\u952E\u4FE1\u606F\uFF0C\u8BE6\u60C5\u72B6\u6001\u4E0B\u5173\u7CFB\u5B57\u6BB5\u7684\u9ED8\u8BA4\u7EC4\u4EF6\u5747\u4E3A\u6807\u9898,\u9ED8\u8BA4\u6807\u9898\u5B57\u6BB5\u4E3A id,\u652F\u6301\u81EA\u5B9A\u4E49\u6807\u9898\u5B57\u6BB5\u3002",paraId:0,tocIndex:0}],Ul={},Ti={title:"Packaging and Uploading to Production",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initailizer/add-item-to-block.md",lastUpdated:173254844e4,description:"The functionality to be implemented is similar to the Global Registration of Component and Scope example, but this time, the component and scope will be registered within the plugin itself, instead of globally."},Pl=[{id:"partial-registration-of-component-and-scope",depth:1,title:"Partial Registration of Component and Scope"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"functionality-implementation",depth:1,title:"Functionality Implementation"},{id:"1-creating-a-custom-page",depth:2,title:"1. Creating a Custom Page"},{id:"2-rendering-content-directly-with-component",depth:2,title:"2. Rendering Content Directly with Component"},{id:"3-rendering-content-with-schemacomponent",depth:2,title:"3. Rendering Content with SchemaComponent"},{id:"packaging-and-uploading-to-production",depth:1,title:"Packaging and Uploading to Production"}],sd=[{value:"The functionality to be implemented is similar to the ",paraId:0,tocIndex:1},{value:"Global Registration of Component and Scope",paraId:1,tocIndex:1},{value:" example, but this time, the component and scope will be registered within the plugin itself, instead of globally.",paraId:0,tocIndex:1},{value:"You can view the complete sample code for this document in ",paraId:2,tocIndex:1},{value:"plugin-samples",paraId:2,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"Following the guide on ",paraId:3,tocIndex:2},{value:"Writing Your First Plugin",paraId:4,tocIndex:2},{value:", if you do not yet have a project, you can create one first. If you already have a project or have cloned the source code, you can skip this step.",paraId:3,tocIndex:2},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install yarn nocobase install @@ -1051,7 +1066,7 @@ export const SamplesCustomPage = () => { } `,paraId:25,tocIndex:6},{value:"We defined the ",paraId:26,tocIndex:6},{value:"SamplesHello",paraId:26,tocIndex:6},{value:" and ",paraId:26,tocIndex:6},{value:"useSamplesHelloProps",paraId:26,tocIndex:6},{value:" components.",paraId:26,tocIndex:6},{value:"Then, we created a ",paraId:26,tocIndex:6},{value:"schema",paraId:26,tocIndex:6},{value:" object where the ",paraId:26,tocIndex:6},{value:"demo1",paraId:26,tocIndex:6},{value:" and ",paraId:26,tocIndex:6},{value:"demo2",paraId:26,tocIndex:6},{value:" fields use corresponding components and scope, while the ",paraId:26,tocIndex:6},{value:"demo3",paraId:26,tocIndex:6},{value:" and ",paraId:26,tocIndex:6},{value:"demo4",paraId:26,tocIndex:6},{value:" fields use string-type components and scope.",paraId:26,tocIndex:6},{value:"Finally, we used the ",paraId:26,tocIndex:6},{value:"SchemaComponent",paraId:26,tocIndex:6},{value:"'s ",paraId:26,tocIndex:6},{value:"components",paraId:26,tocIndex:6},{value:" and ",paraId:26,tocIndex:6},{value:"scope",paraId:26,tocIndex:6},{value:" attributes to locally register ",paraId:26,tocIndex:6},{value:"SamplesHello",paraId:26,tocIndex:6},{value:" and ",paraId:26,tocIndex:6},{value:"useSamplesHelloProps",paraId:26,tocIndex:6},{value:".",paraId:26,tocIndex:6},{value:"Visit ",paraId:27,tocIndex:6},{value:"http://localhost:13000/admin/custom-page2",paraId:27,tocIndex:6},{value:" to see the content of the ",paraId:27,tocIndex:6},{value:"CustomPage",paraId:27,tocIndex:6},{value:" component.",paraId:27,tocIndex:6},{value:"Following the guide on ",paraId:28,tocIndex:7},{value:"Building and Packaging Plugins",paraId:29,tocIndex:7},{value:", you can package the plugin and upload it to the production environment.",paraId:28,tocIndex:7},{value:"If you cloned the source code, you need to perform a full build to package the plugin's dependencies:",paraId:30,tocIndex:7},{value:`yarn build `,paraId:31,tocIndex:7},{value:"If you used ",paraId:32,tocIndex:7},{value:"create-nocobase-app",paraId:32,tocIndex:7},{value:" to create the project, simply run:",paraId:32,tocIndex:7},{value:`yarn build @nocobase-sample/plugin-component-and-scope-local --tar -`,paraId:33,tocIndex:7},{value:"This will generate the file ",paraId:34,tocIndex:7},{value:"storage/tar/@nocobase-sample/plugin-component-and-scope-local.tar.gz",paraId:34,tocIndex:7},{value:", which you can then upload using the ",paraId:34,tocIndex:7},{value:"plugin upload method",paraId:35,tocIndex:7},{value:".",paraId:34,tocIndex:7}],So={},Mo={title:"\u533A\u5757\u5185\u5D4C\u7684 Initializer - \u914D\u7F6E\u64CD\u4F5C",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/configure-actions.md",lastUpdated:1732240239e3,description:"\u5982\u679C\u65B0\u521B\u5EFA\u7684\u533A\u5757\u662F\u4E00\u4E2A\u590D\u6742\u7684\u6570\u636E\u533A\u5757\uFF0C\u90A3\u4E48\u5B83\u5185\u90E8\u53EF\u80FD\u5305\u542B\u591A\u4E2A\u52A8\u6001\u6DFB\u52A0\u7684\u90E8\u5206\uFF0C\u5176\u4E2D Configure actions \u5BF9\u5E94\u7684 initializer \u4E3B\u8981\u662F\u8D1F\u8D23\u52A8\u6001\u6DFB\u52A0\u4E00\u4E9B\u6309\u94AE\u5B9E\u73B0\u5404\u79CD\u64CD\u4F5C\u3002\u4F8B\u5982 Details \u533A\u5757\uFF0C\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 Configure actions \u6DFB\u52A0 Edit\u3001Print \u7B49\u6309\u94AE\u3002"},Fo=[{id:"\u533A\u5757\u5185\u5D4C\u7684-initializer---\u914D\u7F6E\u64CD\u4F5C",depth:1,title:"\u533A\u5757\u5185\u5D4C\u7684 Initializer - \u914D\u7F6E\u64CD\u4F5C"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u521B\u5EFA\u533A\u5757",depth:3,title:"1. \u521B\u5EFA\u533A\u5757"},{id:"2-\u5B9E\u73B0-initializer",depth:3,title:"2. \u5B9E\u73B0 initializer"},{id:"21-\u5B9A\u4E49-initializer",depth:4,title:"2.1 \u5B9A\u4E49 initializer"},{id:"22-\u6CE8\u518C-initializer",depth:4,title:"2.2 \u6CE8\u518C initializer"},{id:"23-\u4F7F\u7528-initializer",depth:4,title:"2.3 \u4F7F\u7528 initializer"},{id:"24-\u533A\u5757\u6E32\u67D3\u5B50\u8282\u70B9",depth:4,title:"2.4 \u533A\u5757\u6E32\u67D3\u5B50\u8282\u70B9"},{id:"3-\u5B9E\u73B0-initializer-items",depth:3,title:"3. \u5B9E\u73B0 initializer items"},{id:"31-\u590D\u7528custom-request-action",depth:4,title:"3.1 \u590D\u7528\uFF1ACustom request Action"},{id:"32-\u81EA\u5B9A\u4E49custom-refresh-action",depth:4,title:"3.2 \u81EA\u5B9A\u4E49\uFF1ACustom Refresh Action"},{id:"321-\u5B9A\u4E49\u540D\u79F0",depth:4,title:"3.2.1 \u5B9A\u4E49\u540D\u79F0"},{id:"322-\u5B9A\u4E49-schema",depth:4,title:"3.2.2 \u5B9A\u4E49 Schema"},{id:"3221-\u5B9A\u4E49-schema",depth:5,title:"3.2.2.1 \u5B9A\u4E49 Schema"},{id:"3222-\u6CE8\u518C\u4E0A\u4E0B\u6587",depth:5,title:"3.2.2.2 \u6CE8\u518C\u4E0A\u4E0B\u6587"},{id:"332-\u5B9E\u73B0-settings",depth:4,title:"3.3.2 \u5B9E\u73B0 settings"},{id:"3321-\u5B9A\u4E49-settings",depth:5,title:"3.3.2.1 \u5B9A\u4E49 settings"},{id:"3322-\u6CE8\u518C-settings",depth:5,title:"3.3.2.2 \u6CE8\u518C settings"},{id:"3322-\u4F7F\u7528-settings",depth:5,title:"3.3.2.2 \u4F7F\u7528 settings"},{id:"333-\u5B9A\u4E49-schemainitializer-item",depth:5,title:"3.3.3 \u5B9A\u4E49 SchemaInitializer item"},{id:"3331-\u5B9A\u4E49-schemainitializer-item",depth:6,title:"3.3.3.1 \u5B9A\u4E49 SchemaInitializer item"},{id:"3332-\u4F7F\u7528-schemainitializer-item",depth:6,title:"3.3.3.2 \u4F7F\u7528 SchemaInitializer item"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],Ci=[{value:"\u5982\u679C\u65B0\u521B\u5EFA\u7684\u533A\u5757\u662F\u4E00\u4E2A\u590D\u6742\u7684\u6570\u636E\u533A\u5757\uFF0C\u90A3\u4E48\u5B83\u5185\u90E8\u53EF\u80FD\u5305\u542B\u591A\u4E2A\u52A8\u6001\u6DFB\u52A0\u7684\u90E8\u5206\uFF0C\u5176\u4E2D ",paraId:0,tocIndex:1},{value:"Configure actions",paraId:0,tocIndex:1},{value:" \u5BF9\u5E94\u7684 initializer \u4E3B\u8981\u662F\u8D1F\u8D23\u52A8\u6001\u6DFB\u52A0\u4E00\u4E9B\u6309\u94AE\u5B9E\u73B0\u5404\u79CD\u64CD\u4F5C\u3002\u4F8B\u5982 ",paraId:0,tocIndex:1},{value:"Details",paraId:0,tocIndex:1},{value:" \u533A\u5757\uFF0C\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 ",paraId:0,tocIndex:1},{value:"Configure actions",paraId:0,tocIndex:1},{value:" \u6DFB\u52A0 ",paraId:0,tocIndex:1},{value:"Edit",paraId:0,tocIndex:1},{value:"\u3001",paraId:0,tocIndex:1},{value:"Print",paraId:0,tocIndex:1},{value:" \u7B49\u6309\u94AE\u3002",paraId:0,tocIndex:1},{value:"\u672C\u5B9E\u4F8B\u4F1A\u5728 ",paraId:1,tocIndex:2},{value:"\u6DFB\u52A0\u6570\u636E\u533A\u5757 Data Block",paraId:2,tocIndex:2},{value:" \u57FA\u7840\u4E0A\u7EE7\u7EED\u5B9E\u73B0\u7C7B\u4F3C ",paraId:1,tocIndex:2},{value:"Details",paraId:1,tocIndex:2},{value:" \u533A\u5757\u7684\u6548\u679C\uFF0C\u901A\u8FC7 ",paraId:1,tocIndex:2},{value:"Configure actions",paraId:1,tocIndex:2},{value:" \u6765\u914D\u7F6E\u6309\u94AE\u3002",paraId:1,tocIndex:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:3,tocIndex:2},{value:"plugin-samples",paraId:3,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:3,tocIndex:2},{value:` +`,paraId:33,tocIndex:7},{value:"This will generate the file ",paraId:34,tocIndex:7},{value:"storage/tar/@nocobase-sample/plugin-component-and-scope-local.tar.gz",paraId:34,tocIndex:7},{value:", which you can then upload using the ",paraId:34,tocIndex:7},{value:"plugin upload method",paraId:35,tocIndex:7},{value:".",paraId:34,tocIndex:7}],So={},Mo={title:"\u533A\u5757\u5185\u5D4C\u7684 Initializer - \u914D\u7F6E\u64CD\u4F5C",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/configure-actions.md",lastUpdated:173254844e4,description:"\u5982\u679C\u65B0\u521B\u5EFA\u7684\u533A\u5757\u662F\u4E00\u4E2A\u590D\u6742\u7684\u6570\u636E\u533A\u5757\uFF0C\u90A3\u4E48\u5B83\u5185\u90E8\u53EF\u80FD\u5305\u542B\u591A\u4E2A\u52A8\u6001\u6DFB\u52A0\u7684\u90E8\u5206\uFF0C\u5176\u4E2D Configure actions \u5BF9\u5E94\u7684 initializer \u4E3B\u8981\u662F\u8D1F\u8D23\u52A8\u6001\u6DFB\u52A0\u4E00\u4E9B\u6309\u94AE\u5B9E\u73B0\u5404\u79CD\u64CD\u4F5C\u3002\u4F8B\u5982 Details \u533A\u5757\uFF0C\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 Configure actions \u6DFB\u52A0 Edit\u3001Print \u7B49\u6309\u94AE\u3002"},Fo=[{id:"\u533A\u5757\u5185\u5D4C\u7684-initializer---\u914D\u7F6E\u64CD\u4F5C",depth:1,title:"\u533A\u5757\u5185\u5D4C\u7684 Initializer - \u914D\u7F6E\u64CD\u4F5C"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u521B\u5EFA\u533A\u5757",depth:3,title:"1. \u521B\u5EFA\u533A\u5757"},{id:"2-\u5B9E\u73B0-initializer",depth:3,title:"2. \u5B9E\u73B0 initializer"},{id:"21-\u5B9A\u4E49-initializer",depth:4,title:"2.1 \u5B9A\u4E49 initializer"},{id:"22-\u6CE8\u518C-initializer",depth:4,title:"2.2 \u6CE8\u518C initializer"},{id:"23-\u4F7F\u7528-initializer",depth:4,title:"2.3 \u4F7F\u7528 initializer"},{id:"24-\u533A\u5757\u6E32\u67D3\u5B50\u8282\u70B9",depth:4,title:"2.4 \u533A\u5757\u6E32\u67D3\u5B50\u8282\u70B9"},{id:"3-\u5B9E\u73B0-initializer-items",depth:3,title:"3. \u5B9E\u73B0 initializer items"},{id:"31-\u590D\u7528custom-request-action",depth:4,title:"3.1 \u590D\u7528\uFF1ACustom request Action"},{id:"32-\u81EA\u5B9A\u4E49custom-refresh-action",depth:4,title:"3.2 \u81EA\u5B9A\u4E49\uFF1ACustom Refresh Action"},{id:"321-\u5B9A\u4E49\u540D\u79F0",depth:4,title:"3.2.1 \u5B9A\u4E49\u540D\u79F0"},{id:"322-\u5B9A\u4E49-schema",depth:4,title:"3.2.2 \u5B9A\u4E49 Schema"},{id:"3221-\u5B9A\u4E49-schema",depth:5,title:"3.2.2.1 \u5B9A\u4E49 Schema"},{id:"3222-\u6CE8\u518C\u4E0A\u4E0B\u6587",depth:5,title:"3.2.2.2 \u6CE8\u518C\u4E0A\u4E0B\u6587"},{id:"332-\u5B9E\u73B0-settings",depth:4,title:"3.3.2 \u5B9E\u73B0 settings"},{id:"3321-\u5B9A\u4E49-settings",depth:5,title:"3.3.2.1 \u5B9A\u4E49 settings"},{id:"3322-\u6CE8\u518C-settings",depth:5,title:"3.3.2.2 \u6CE8\u518C settings"},{id:"3322-\u4F7F\u7528-settings",depth:5,title:"3.3.2.2 \u4F7F\u7528 settings"},{id:"333-\u5B9A\u4E49-schemainitializer-item",depth:5,title:"3.3.3 \u5B9A\u4E49 SchemaInitializer item"},{id:"3331-\u5B9A\u4E49-schemainitializer-item",depth:6,title:"3.3.3.1 \u5B9A\u4E49 SchemaInitializer item"},{id:"3332-\u4F7F\u7528-schemainitializer-item",depth:6,title:"3.3.3.2 \u4F7F\u7528 SchemaInitializer item"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],Ci=[{value:"\u5982\u679C\u65B0\u521B\u5EFA\u7684\u533A\u5757\u662F\u4E00\u4E2A\u590D\u6742\u7684\u6570\u636E\u533A\u5757\uFF0C\u90A3\u4E48\u5B83\u5185\u90E8\u53EF\u80FD\u5305\u542B\u591A\u4E2A\u52A8\u6001\u6DFB\u52A0\u7684\u90E8\u5206\uFF0C\u5176\u4E2D ",paraId:0,tocIndex:1},{value:"Configure actions",paraId:0,tocIndex:1},{value:" \u5BF9\u5E94\u7684 initializer \u4E3B\u8981\u662F\u8D1F\u8D23\u52A8\u6001\u6DFB\u52A0\u4E00\u4E9B\u6309\u94AE\u5B9E\u73B0\u5404\u79CD\u64CD\u4F5C\u3002\u4F8B\u5982 ",paraId:0,tocIndex:1},{value:"Details",paraId:0,tocIndex:1},{value:" \u533A\u5757\uFF0C\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 ",paraId:0,tocIndex:1},{value:"Configure actions",paraId:0,tocIndex:1},{value:" \u6DFB\u52A0 ",paraId:0,tocIndex:1},{value:"Edit",paraId:0,tocIndex:1},{value:"\u3001",paraId:0,tocIndex:1},{value:"Print",paraId:0,tocIndex:1},{value:" \u7B49\u6309\u94AE\u3002",paraId:0,tocIndex:1},{value:"\u672C\u5B9E\u4F8B\u4F1A\u5728 ",paraId:1,tocIndex:2},{value:"\u6DFB\u52A0\u6570\u636E\u533A\u5757 Data Block",paraId:2,tocIndex:2},{value:" \u57FA\u7840\u4E0A\u7EE7\u7EED\u5B9E\u73B0\u7C7B\u4F3C ",paraId:1,tocIndex:2},{value:"Details",paraId:1,tocIndex:2},{value:" \u533A\u5757\u7684\u6548\u679C\uFF0C\u901A\u8FC7 ",paraId:1,tocIndex:2},{value:"Configure actions",paraId:1,tocIndex:2},{value:" \u6765\u914D\u7F6E\u6309\u94AE\u3002",paraId:1,tocIndex:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:3,tocIndex:2},{value:"plugin-samples",paraId:3,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:3,tocIndex:2},{value:` `,paraId:4},{value:"\u6211\u4EEC\u6309\u7167 ",paraId:5,tocIndex:3},{value:"\u7F16\u5199\u7B2C\u4E00\u4E2A\u63D2\u4EF6",paraId:6,tocIndex:3},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u5982\u679C\u6CA1\u6709\u4E00\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u5148\u521B\u5EFA\u4E00\u4E2A\u9879\u76EE\uFF0C\u5982\u679C\u5DF2\u7ECF\u6709\u4E86\u6216\u8005\u662F clone \u7684\u6E90\u7801\uFF0C\u5219\u8DF3\u8FC7\u8FD9\u4E00\u6B65\u3002",paraId:5,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -1273,7 +1288,7 @@ export const configureActionsInitializer = new SchemaInitializer({ `,paraId:83,tocIndex:24},{value:` `,paraId:4},{value:"\u4F60\u53EF\u4EE5\u6839\u636E\u9700\u8981\u5B9E\u73B0\u66F4\u591A\u7684 ",paraId:84,tocIndex:24},{value:"Action",paraId:84,tocIndex:24},{value:"\u3002",paraId:84,tocIndex:24},{value:"\u6309\u7167 ",paraId:85,tocIndex:25},{value:"\u6784\u5EFA\u5E76\u6253\u5305\u63D2\u4EF6",paraId:86,tocIndex:25},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6253\u5305\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883\u3002",paraId:85,tocIndex:25},{value:"\u5982\u679C\u662F clone \u7684\u6E90\u7801\uFF0C\u9700\u8981\u5148\u6267\u884C\u4E00\u6B21\u5168\u91CF build\uFF0C\u5C06\u63D2\u4EF6\u7684\u4F9D\u8D56\u4E5F\u6784\u5EFA\u597D\u3002",paraId:87,tocIndex:25},{value:`yarn build `,paraId:88,tocIndex:25},{value:"\u5982\u679C\u662F\u4F7F\u7528\u7684 ",paraId:89,tocIndex:25},{value:"create-nocobase-app",paraId:89,tocIndex:25},{value:" \u521B\u5EFA\u7684\u9879\u76EE\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A",paraId:89,tocIndex:25},{value:`yarn build @nocobase-sample/plugin-initializer-configure-actions --tar -`,paraId:90,tocIndex:25},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:91,tocIndex:25},{value:"storage/tar/@nocobase-sample/plugin-initializer-configure-actions.tar.gz",paraId:91,tocIndex:25},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:91,tocIndex:25},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:92,tocIndex:25},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:91,tocIndex:25}],Zd={},Yd={title:"\u4FDD\u5B58\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/save-record.md",lastUpdated:1732240239e3,description:"\u81EA\u5B9A\u4E49\u4FDD\u5B58\u6570\u636E\u64CD\u4F5C\u662F\u8868\u5355\u533A\u5757\u7279\u6709\u7684\u64CD\u4F5C\uFF0C\u652F\u6301\u81EA\u5B9A\u4E49\u64CD\u4F5C\u7684\u884C\u4E3A\uFF1A"},su=[{id:"\u4FDD\u5B58\u6570\u636E",depth:1,title:"\u4FDD\u5B58\u6570\u636E"}],Zo=[{value:"\u81EA\u5B9A\u4E49\u4FDD\u5B58\u6570\u636E\u64CD\u4F5C\u662F\u8868\u5355\u533A\u5757\u7279\u6709\u7684\u64CD\u4F5C\uFF0C\u652F\u6301\u81EA\u5B9A\u4E49\u64CD\u4F5C\u7684\u884C\u4E3A\uFF1A",paraId:0,tocIndex:0},{value:"\u7F16\u8F91\u6309\u94AE",paraId:1,tocIndex:0},{value:"\u5B57\u6BB5\u8D4B\u503C\uFF1A\u70B9\u51FB\u5F53\u524D\u81EA\u5B9A\u4E49\u6309\u94AE\u65F6\uFF0C\u5F53\u524D\u6570\u636E\u5B57\u6BB5\u8D4B\u503C\u4E2D\u7684\u60C5\u51B5\u4FDD\u5B58\u3002",paraId:1,tocIndex:0},{value:"\u8DF3\u8FC7\u5FC5\u586B\u6821\u9A8C",paraId:1,tocIndex:0},{value:"\u63D0\u4EA4\u6210\u529F\u540E\u7684\u52A8\u4F5C",paraId:1,tocIndex:0},{value:"\u7ED1\u5B9A\u5DE5\u4F5C\u6D41",paraId:2,tocIndex:0}],Tl={},Cl={title:"Docker (\u{1F44D} Recommended)",toc:"menu",filename:"docs/en-US/welcome/getting-started/installation/docker-compose.md",lastUpdated:1732240239e3,description:"\u26A1\u26A1 Please make sure you have installed Docker"},Al=[{id:"docker--recommended",depth:1,title:"Docker (\u{1F44D} Recommended)"},{id:"0-prerequisites",depth:2,title:"0. Prerequisites"},{id:"1-create-a-docker-composeyml-file",depth:2,title:"1. Create a docker-compose.yml file"},{id:"2-configure-docker-composeyml",depth:2,title:"2. Configure docker-compose.yml"},{id:"3-install-and-start-nocobase",depth:2,title:"3. Install and start NocoBase"},{id:"4-log-in-to-nocobase",depth:2,title:"4. Log in to NocoBase"}],qr=[{value:"\u26A1\u26A1 Please make sure you have installed ",paraId:0,tocIndex:1},{value:"Docker",paraId:0,tocIndex:1},{value:"docker-compose.yml",paraId:1},{value:`# Create a folder named my-project (or any other name) to store the system files generated by NocoBase +`,paraId:90,tocIndex:25},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:91,tocIndex:25},{value:"storage/tar/@nocobase-sample/plugin-initializer-configure-actions.tar.gz",paraId:91,tocIndex:25},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:91,tocIndex:25},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:92,tocIndex:25},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:91,tocIndex:25}],Zd={},Yd={title:"\u4FDD\u5B58\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/save-record.md",lastUpdated:173254844e4,description:"\u81EA\u5B9A\u4E49\u4FDD\u5B58\u6570\u636E\u64CD\u4F5C\u662F\u8868\u5355\u533A\u5757\u7279\u6709\u7684\u64CD\u4F5C\uFF0C\u652F\u6301\u81EA\u5B9A\u4E49\u64CD\u4F5C\u7684\u884C\u4E3A\uFF1A"},su=[{id:"\u4FDD\u5B58\u6570\u636E",depth:1,title:"\u4FDD\u5B58\u6570\u636E"}],Zo=[{value:"\u81EA\u5B9A\u4E49\u4FDD\u5B58\u6570\u636E\u64CD\u4F5C\u662F\u8868\u5355\u533A\u5757\u7279\u6709\u7684\u64CD\u4F5C\uFF0C\u652F\u6301\u81EA\u5B9A\u4E49\u64CD\u4F5C\u7684\u884C\u4E3A\uFF1A",paraId:0,tocIndex:0},{value:"\u7F16\u8F91\u6309\u94AE",paraId:1,tocIndex:0},{value:"\u5B57\u6BB5\u8D4B\u503C\uFF1A\u70B9\u51FB\u5F53\u524D\u81EA\u5B9A\u4E49\u6309\u94AE\u65F6\uFF0C\u5F53\u524D\u6570\u636E\u5B57\u6BB5\u8D4B\u503C\u4E2D\u7684\u60C5\u51B5\u4FDD\u5B58\u3002",paraId:1,tocIndex:0},{value:"\u8DF3\u8FC7\u5FC5\u586B\u6821\u9A8C",paraId:1,tocIndex:0},{value:"\u63D0\u4EA4\u6210\u529F\u540E\u7684\u52A8\u4F5C",paraId:1,tocIndex:0},{value:"\u7ED1\u5B9A\u5DE5\u4F5C\u6D41",paraId:2,tocIndex:0}],Tl={},Cl={title:"Docker (\u{1F44D} Recommended)",toc:"menu",filename:"docs/en-US/welcome/getting-started/installation/docker-compose.md",lastUpdated:173254844e4,description:"\u26A1\u26A1 Please make sure you have installed Docker"},Al=[{id:"docker--recommended",depth:1,title:"Docker (\u{1F44D} Recommended)"},{id:"0-prerequisites",depth:2,title:"0. Prerequisites"},{id:"1-create-a-docker-composeyml-file",depth:2,title:"1. Create a docker-compose.yml file"},{id:"2-configure-docker-composeyml",depth:2,title:"2. Configure docker-compose.yml"},{id:"4-log-in-to-nocobase",depth:2,title:"4. Log in to NocoBase"}],qr=[{value:"\u26A1\u26A1 Please make sure you have installed ",paraId:0,tocIndex:1},{value:"Docker",paraId:0,tocIndex:1},{value:"docker-compose.yml",paraId:1},{value:`# Create a folder named my-project (or any other name) to store the system files generated by NocoBase mkdir my-project && cd my-project # Create an empty docker-compose.yml file @@ -1429,19 +1444,33 @@ services: - ./storage/db/mariadb:/var/lib/mysql networks: - nocobase -`,paraId:6},{value:"Choose the appropriate NocoBase version, refer to ",paraId:7},{value:"versions",paraId:8},{value:"latest",paraId:9},{value:": Stable and well-tested version and only bug fixed will be made. This version is recommended.",paraId:9},{value:"beta",paraId:9},{value:": This version includes new features that are about to be released and it has been preliminarily tested, but still have known or unknown issues.",paraId:9},{value:"alpha",paraId:9},{value:": A development version containing the latest features, which may be incomplete or unstable.",paraId:9},{value:"1.3.51",paraId:9},{value:": Specify the version number. To check the latest version, see the ",paraId:9},{value:"list of released versions",paraId:9},{value:".",paraId:9},{value:"Example:",paraId:10},{value:`# ... +`,paraId:6},{value:"Choose the appropriate NocoBase version, refer to ",paraId:7},{value:"versions",paraId:8},{value:"latest",paraId:9},{value:": Stable and well-tested version and only bug fixed will be made. This version is recommended.",paraId:9},{value:"beta",paraId:9},{value:": This version includes new features that are about to be released and it has been preliminarily tested, but still have known or unknown issues.",paraId:9},{value:"alpha",paraId:9},{value:": A development version containing the latest features, which may be incomplete or unstable.",paraId:9},{value:"1.3.51",paraId:9},{value:": Specify the version number. To check the latest version, see the ",paraId:9},{value:"list of released versions",paraId:9},{value:".",paraId:9},{value:"Example:",paraId:10},{value:`#... services: app: + # Domestic users suggest using Ali Cloud image + image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:latest + image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:beta + image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:alpha + Image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:1.3.51 + + # Docker Hub image (Domestic users cannot download) image: nocobase/nocobase:latest image: nocobase/nocobase:beta image: nocobase/nocobase:alpha image: nocobase/nocobase:1.3.51 # ... -`,paraId:11},{value:"It may take a few minutes",paraId:12,tocIndex:4},{value:`# pull service images +\` \` \` + +## 3. Install and start NocoBase + +It may take a few minutes + +\`\`\`bash +# pull service images $ docker-compose pull # run in the background $ docker-compose up -d -# view app logs +# view app process $ docker-compose logs app app-postgres-app-1 | nginx started @@ -1454,7 +1483,7 @@ app-postgres-app-1 | 2022-04-28T15:45:38: PM2 log: Launching in no daemon mode app-postgres-app-1 | 2022-04-28T15:45:38: PM2 log: App [index:0] starting in -fork mode- app-postgres-app-1 | 2022-04-28T15:45:38: PM2 log: App [index:0] online app-postgres-app-1 | \u{1F680} NocoBase server running at: http://localhost:13000/ -`,paraId:13,tocIndex:4},{value:"Open ",paraId:14,tocIndex:5},{value:"http://localhost:13000",paraId:14,tocIndex:5},{value:" in a web browser. The initial account and password are ",paraId:14,tocIndex:5},{value:"admin@nocobase.com",paraId:14,tocIndex:5},{value:" and ",paraId:14,tocIndex:5},{value:"admin123",paraId:14,tocIndex:5},{value:".",paraId:14,tocIndex:5}],hr={},Qd={title:"Collection templates",toc:"menu",filename:"docs/en-US/development/server/collections/collection-template.md",lastUpdated:1732240239e3,description:"In real business scenarios, different collections may have their own initialization rules and business logic, and NocoBase addresses such issues by providing collection templates."},ql=[{id:"collection-templates",depth:1,title:"Collection templates"},{id:"general-collections",depth:2,title:"General collections"},{id:"tree-structure-collections",depth:2,title:"Tree structure collections"},{id:"parent-child-inheritance-collections",depth:2,title:"Parent-child inheritance collections"},{id:"more-templates",depth:2,title:"More templates"}],El=[{value:` +`,paraId:11},{value:"Open ",paraId:12,tocIndex:4},{value:"http://localhost:13000",paraId:12,tocIndex:4},{value:" in a web browser. The initial account and password are ",paraId:12,tocIndex:4},{value:"admin@nocobase.com",paraId:12,tocIndex:4},{value:" and ",paraId:12,tocIndex:4},{value:"admin123",paraId:12,tocIndex:4},{value:".",paraId:12,tocIndex:4}],hr={},Qd={title:"Collection templates",toc:"menu",filename:"docs/en-US/development/server/collections/collection-template.md",lastUpdated:173254844e4,description:"In real business scenarios, different collections may have their own initialization rules and business logic, and NocoBase addresses such issues by providing collection templates."},ql=[{id:"collection-templates",depth:1,title:"Collection templates"},{id:"general-collections",depth:2,title:"General collections"},{id:"tree-structure-collections",depth:2,title:"Tree structure collections"},{id:"parent-child-inheritance-collections",depth:2,title:"Parent-child inheritance collections"},{id:"more-templates",depth:2,title:"More templates"}],El=[{value:` \u{1F4E2} Collection templates are scheduled to be available in Q4 2022. `,paraId:0},{value:"In real business scenarios, different collections may have their own initialization rules and business logic, and NocoBase addresses such issues by providing collection templates.",paraId:1},{value:`db.collection({ name: 'posts', @@ -1505,9 +1534,9 @@ db.collection({ name: 'events', template: 'calendar', }); -`,paraId:6,tocIndex:4}],Lc={},Nc={title:"Duplicate",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/duplicate.md",lastUpdated:1732240239e3,description:"The Duplicate operation enables users to duplicate a row of data to create new records, offering two methods: direct duplicate and copy into the form and continue to fill in."},zc=[{id:"duplicate",depth:1,title:"Duplicate"},{id:"direct-duplicate",depth:2,title:"Direct Duplicate"},{id:"copy-into-the-form-and-continue-to-fill-in",depth:2,title:"Copy into the form and continue to fill in"},{id:"explanation-of-different-reference-and-preload",depth:2,title:"Explanation of Different, Reference, and Preload"},{id:"about-select-all",depth:2,title:"About Select All"},{id:"template-data-processing-logic",depth:2,title:"Template Data Processing Logic"},{id:"understanding-sync-form-fields",depth:2,title:"Understanding Sync Form Fields"}],Fc=[{value:"The Duplicate operation enables users to duplicate a row of data to create new records, offering two methods: ",paraId:0,tocIndex:0},{value:"direct duplicate",paraId:0,tocIndex:0},{value:" and ",paraId:0,tocIndex:0},{value:"copy into the form and continue to fill in",paraId:0,tocIndex:0},{value:".",paraId:0,tocIndex:0},{value:"By default, the data is copied directly.",paraId:1,tocIndex:1},{value:"Target Data Table: This is the table where the copied data will be added. In cases involving inheritance, it can be copied to a sub-table; however, direct Duplicate only adds data to the current table.",paraId:1,tocIndex:1},{value:"Template Fields: These specify the fields to be copied, allowing for full selection. This configuration is mandatory.",paraId:1,tocIndex:1},{value:"Once the configuration is complete, simply click the button to duplicate the data.",paraId:2,tocIndex:1},{value:"The template fields you configure will populate the form with default values, which can be modified before submission.",paraId:3,tocIndex:2},{value:"You can choose either the current table or a sub-table as the target table for adding the copied data.",paraId:4,tocIndex:2},{value:"Configure Template Fields: Template fields will serve as default values in the form, only including the values of selected fields.",paraId:5,tocIndex:2},{value:'The "Waybill" (o2m) relationship is duplicated. Adjust its field component to a sub-form, where you can configure the sub-form fields.',paraId:6,tocIndex:2},{value:"Sync Form Fields: After configuring the form, click the sync form fields button. This will automatically select all configured fields within the form (note: each time the form field configuration is modified, it must be manually synced again). After syncing, you can further customize the template fields.",paraId:7,tocIndex:2},{value:"Clicking the Duplicate button will open a pop-up window, where the template data will populate the form with default values. You can then modify the data before submission to complete the copy process.",paraId:8,tocIndex:2},{value:"The complete example below demonstrates how to configure the duplicate operation within an order list.",paraId:9,tocIndex:2},{value:"Different fields (with different relationship types) follow distinct processing logics, such as duplicate, reference, and preload. Adjusting field components within relationship fields also influences the processing logic. For example, Select and Record Picker handle reference relationships, while Sub-form and Sub-table manage copy relationships.",paraId:10,tocIndex:3},{value:"Duplicate",paraId:11,tocIndex:3},{value:"Standard fields are duplicated.",paraId:12,tocIndex:3},{value:`The relationship fields of hasOne and hasMany can only be copied (i.e., these types of relationship fields cannot use Select or Record Picker as field components; instead, Sub-form or Sub-table should be used). -`,paraId:12,tocIndex:3},{value:"Changes to the field components of hasOne and hasMany do not alter the processing logic (copy).",paraId:13,tocIndex:3},{value:"In copied relationship fields, all child fields are selectable.",paraId:13,tocIndex:3},{value:"Reference",paraId:14,tocIndex:3},{value:"belongsTo and belongsToMany are references.",paraId:15,tocIndex:3},{value:"References can be converted into copies. For instance, if the field component is changed from select to sub-form, the relationship transitions from reference to copy (after conversion, all child fields become selectable).",paraId:15,tocIndex:3},{value:"Preload: Relationship fields within referenced fields",paraId:16,tocIndex:3},{value:"These relationship fields are preloaded.",paraId:17,tocIndex:3},{value:"Preloaded relationship fields may shift to reference or copy following adjustments to the field components.",paraId:17,tocIndex:3},{value:"All copy fields are selected.",paraId:18,tocIndex:4},{value:"All reference fields are selected.",paraId:18,tocIndex:4},{value:"All foreign key fields in relationships are filtered out.",paraId:19,tocIndex:5},{value:"For copied relationships, primary key fields are also filtered out.",paraId:19,tocIndex:5},{value:"References and preloads retain their primary key fields.",paraId:19,tocIndex:5},{value:"In most cases, form configurations involve a large number of fields. Managing such complex forms manually can be cumbersome. To streamline this process, the sync form fields button has been introduced. This feature automatically analyzes the form field configurations and applies the appropriate copy logic\u2014whether copy, reference, or preload\u2014based on the field types and relationship field components. Fields that have already been configured are selected by default.",paraId:20,tocIndex:6},{value:"After any modifications to the form field configurations, the system does not automatically update these changes. Therefore, users need to manually click the sync form fields button to apply the latest configuration to the template settings.",paraId:21,tocIndex:6}],Bc={},jc={title:"URL",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/url.md",lastUpdated:1732240239e3,description:"to be added."},Hc=[{id:"url",depth:1,title:"URL"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Jd=[{value:"to be added.",paraId:0,tocIndex:3}],Wc={},Ai={title:"Edit description",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/edit-description.md",lastUpdated:1732240239e3,description:"Field descriptions are short descriptive text displayed in light gray below the field component, which can be used to help users understand the purpose of the field and the input requirements."},qi=[{id:"edit-description",depth:1,title:"Edit description"},{id:"introduction",depth:2,title:"Introduction"}],$c=[{value:"Field descriptions are short descriptive text displayed in light gray below the field component, which can be used to help users understand the purpose of the field and the input requirements.",paraId:0,tocIndex:1}],Dl={},Gc={title:"Validation Rules",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/validation-rules.md",lastUpdated:1732240239e3,description:"Setting validation rules is crucial to ensure that user-entered data aligns with expected standards. While there are preset format validations, users also have the flexibility to define custom rules."},Vc=[{id:"validation-rules",depth:1,title:"Validation Rules"},{id:"introduction",depth:2,title:"Introduction"},{id:"lengthsize-validation",depth:3,title:"Length/Size Validation"},{id:"custom-regular-expression-validation",depth:3,title:"Custom Regular Expression Validation"}],Kc=[{value:"Setting validation rules is crucial to ensure that user-entered data aligns with expected standards. While there are preset format validations, users also have the flexibility to define custom rules.",paraId:0,tocIndex:1},{value:"We provide several preset format validations for commonly used data types, including numerical values, ID numbers, email addresses, and phone numbers.",paraId:1,tocIndex:1},{value:"This feature allows for validating the minimum value of numerical data, with current support limited to constants.",paraId:2,tocIndex:2},{value:` - `,paraId:3},{value:"Example: Create a custom regular expression to validate Singaporean phone numbers and configure the corresponding error messages.",paraId:4,tocIndex:3}],Zc={},Ol={title:"\u6DFB\u52A0\u5E26\u5F39\u7A97\u7684\u6570\u636E\u533A\u5757 Data Block Modal",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/block-data-modal.md",lastUpdated:1732240239e3,description:"\u5F88\u591A\u60C5\u51B5\u4E0B\u5728\u70B9\u51FB\u521B\u5EFA\u533A\u5757\u4E4B\u524D\uFF0C\u6211\u4EEC\u9700\u8981\u5148\u9009\u62E9\u914D\u7F6E\u4FE1\u606F\u3002\u4F8B\u5982\uFF1A"},Yc=[{id:"\u6DFB\u52A0\u5E26\u5F39\u7A97\u7684\u6570\u636E\u533A\u5757-data-block-modal",depth:1,title:"\u6DFB\u52A0\u5E26\u5F39\u7A97\u7684\u6570\u636E\u533A\u5757 Data Block Modal"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u5B9A\u4E49\u540D\u79F0",depth:3,title:"1. \u5B9A\u4E49\u540D\u79F0"},{id:"2-\u5B9E\u73B0\u533A\u5757\u7EC4\u4EF6",depth:3,title:"2. \u5B9E\u73B0\u533A\u5757\u7EC4\u4EF6"},{id:"21-\u5B9A\u4E49\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.1 \u5B9A\u4E49\u533A\u5757\u7EC4\u4EF6"},{id:"22-\u6CE8\u518C\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.2 \u6CE8\u518C\u533A\u5757\u7EC4\u4EF6"},{id:"23-\u9A8C\u8BC1\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.3 \u9A8C\u8BC1\u533A\u5757\u7EC4\u4EF6"},{id:"3-\u5B9A\u4E49\u914D\u7F6E\u8868\u5355",depth:3,title:"3. \u5B9A\u4E49\u914D\u7F6E\u8868\u5355"},{id:"31-\u5B9A\u4E49\u914D\u7F6E\u8868\u5355\u7EC4\u4EF6",depth:4,title:"3.1 \u5B9A\u4E49\u914D\u7F6E\u8868\u5355\u7EC4\u4EF6"},{id:"32-\u5B9E\u73B0\u914D\u7F6E\u8868\u5355-schema",depth:4,title:"3.2 \u5B9E\u73B0\u914D\u7F6E\u8868\u5355 Schema"},{id:"33-\u9A8C\u8BC1\u914D\u7F6E\u8868\u5355",depth:4,title:"3.3 \u9A8C\u8BC1\u914D\u7F6E\u8868\u5355"},{id:"4-\u5B9A\u4E49\u533A\u5757-schema",depth:3,title:"4. \u5B9A\u4E49\u533A\u5757 Schema"},{id:"41-\u5B9A\u4E49\u533A\u5757-schema",depth:4,title:"4.1 \u5B9A\u4E49\u533A\u5757 Schema"},{id:"42-\u6CE8\u518C-scope",depth:4,title:"4.2 \u6CE8\u518C scope"},{id:"43-\u9A8C\u8BC1\u533A\u5757-schema",depth:4,title:"4.3 \u9A8C\u8BC1\u533A\u5757 Schema"},{id:"5-\u5B9A\u4E49-schema-initializer-item",depth:3,title:"5. \u5B9A\u4E49 Schema Initializer Item"},{id:"6-\u5B9E\u73B0-schema-settings",depth:3,title:"6. \u5B9E\u73B0 Schema Settings"},{id:"61-\u5B9A\u4E49-schema-settings",depth:4,title:"6.1 \u5B9A\u4E49 Schema Settings"},{id:"62-\u6CE8\u518C-schema-settings",depth:4,title:"6.2 \u6CE8\u518C Schema Settings"},{id:"63-\u4F7F\u7528-schema-settings",depth:4,title:"6.3 \u4F7F\u7528 Schema Settings"},{id:"7-\u6DFB\u52A0\u5230-add-block-\u4E2D",depth:3,title:"7. \u6DFB\u52A0\u5230 Add block \u4E2D"},{id:"71-\u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B-add-block-\u4E2D",depth:4,title:"7.1 \u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B Add block \u4E2D"},{id:"72-\u6DFB\u52A0\u5230\u5F39\u7A97-add-block-\u4E2D",depth:4,title:"7.2 \u6DFB\u52A0\u5230\u5F39\u7A97 Add block \u4E2D"},{id:"73-\u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF-add-block-\u4E2D",depth:4,title:"7.3 \u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF Add block \u4E2D"},{id:"8-\u591A\u8BED\u8A00",depth:3,title:"8. \u591A\u8BED\u8A00"},{id:"81-\u82F1\u6587",depth:4,title:"8.1 \u82F1\u6587"},{id:"82-\u4E2D\u6587",depth:4,title:"8.2 \u4E2D\u6587"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],Qc=[{value:"\u5F88\u591A\u60C5\u51B5\u4E0B\u5728\u70B9\u51FB\u521B\u5EFA\u533A\u5757\u4E4B\u524D\uFF0C\u6211\u4EEC\u9700\u8981\u5148\u9009\u62E9\u914D\u7F6E\u4FE1\u606F\u3002\u4F8B\u5982\uFF1A",paraId:0,tocIndex:1},{value:"Kanban",paraId:1,tocIndex:1},{value:" \u533A\u5757\u70B9\u51FB\u540E\u9700\u8981\u5148\u9009\u62E9 ",paraId:1,tocIndex:1},{value:"Grouping field",paraId:1,tocIndex:1},{value:" \u548C ",paraId:1,tocIndex:1},{value:"Sorting field",paraId:1,tocIndex:1},{value:"Calendar",paraId:1,tocIndex:1},{value:" \u533A\u5757\u9700\u8981\u5148\u9009\u62E9 ",paraId:1,tocIndex:1},{value:"Title field",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"Start date field",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"End date field",paraId:1,tocIndex:1},{value:"Chart",paraId:1,tocIndex:1},{value:" \u533A\u5757\u9700\u8981\u5148\u914D\u7F6E\u56FE\u6807\u76F8\u5173\u4FE1\u606F",paraId:1,tocIndex:1},{value:` +`,paraId:6,tocIndex:4}],Lc={},Nc={title:"Duplicate",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/duplicate.md",lastUpdated:173254844e4,description:"The Duplicate operation enables users to duplicate a row of data to create new records, offering two methods: direct duplicate and copy into the form and continue to fill in."},zc=[{id:"duplicate",depth:1,title:"Duplicate"},{id:"direct-duplicate",depth:2,title:"Direct Duplicate"},{id:"copy-into-the-form-and-continue-to-fill-in",depth:2,title:"Copy into the form and continue to fill in"},{id:"explanation-of-different-reference-and-preload",depth:2,title:"Explanation of Different, Reference, and Preload"},{id:"about-select-all",depth:2,title:"About Select All"},{id:"template-data-processing-logic",depth:2,title:"Template Data Processing Logic"},{id:"understanding-sync-form-fields",depth:2,title:"Understanding Sync Form Fields"}],Fc=[{value:"The Duplicate operation enables users to duplicate a row of data to create new records, offering two methods: ",paraId:0,tocIndex:0},{value:"direct duplicate",paraId:0,tocIndex:0},{value:" and ",paraId:0,tocIndex:0},{value:"copy into the form and continue to fill in",paraId:0,tocIndex:0},{value:".",paraId:0,tocIndex:0},{value:"By default, the data is copied directly.",paraId:1,tocIndex:1},{value:"Target Data Table: This is the table where the copied data will be added. In cases involving inheritance, it can be copied to a sub-table; however, direct Duplicate only adds data to the current table.",paraId:1,tocIndex:1},{value:"Template Fields: These specify the fields to be copied, allowing for full selection. This configuration is mandatory.",paraId:1,tocIndex:1},{value:"Once the configuration is complete, simply click the button to duplicate the data.",paraId:2,tocIndex:1},{value:"The template fields you configure will populate the form with default values, which can be modified before submission.",paraId:3,tocIndex:2},{value:"You can choose either the current table or a sub-table as the target table for adding the copied data.",paraId:4,tocIndex:2},{value:"Configure Template Fields: Template fields will serve as default values in the form, only including the values of selected fields.",paraId:5,tocIndex:2},{value:'The "Waybill" (o2m) relationship is duplicated. Adjust its field component to a sub-form, where you can configure the sub-form fields.',paraId:6,tocIndex:2},{value:"Sync Form Fields: After configuring the form, click the sync form fields button. This will automatically select all configured fields within the form (note: each time the form field configuration is modified, it must be manually synced again). After syncing, you can further customize the template fields.",paraId:7,tocIndex:2},{value:"Clicking the Duplicate button will open a pop-up window, where the template data will populate the form with default values. You can then modify the data before submission to complete the copy process.",paraId:8,tocIndex:2},{value:"The complete example below demonstrates how to configure the duplicate operation within an order list.",paraId:9,tocIndex:2},{value:"Different fields (with different relationship types) follow distinct processing logics, such as duplicate, reference, and preload. Adjusting field components within relationship fields also influences the processing logic. For example, Select and Record Picker handle reference relationships, while Sub-form and Sub-table manage copy relationships.",paraId:10,tocIndex:3},{value:"Duplicate",paraId:11,tocIndex:3},{value:"Standard fields are duplicated.",paraId:12,tocIndex:3},{value:`The relationship fields of hasOne and hasMany can only be copied (i.e., these types of relationship fields cannot use Select or Record Picker as field components; instead, Sub-form or Sub-table should be used). +`,paraId:12,tocIndex:3},{value:"Changes to the field components of hasOne and hasMany do not alter the processing logic (copy).",paraId:13,tocIndex:3},{value:"In copied relationship fields, all child fields are selectable.",paraId:13,tocIndex:3},{value:"Reference",paraId:14,tocIndex:3},{value:"belongsTo and belongsToMany are references.",paraId:15,tocIndex:3},{value:"References can be converted into copies. For instance, if the field component is changed from select to sub-form, the relationship transitions from reference to copy (after conversion, all child fields become selectable).",paraId:15,tocIndex:3},{value:"Preload: Relationship fields within referenced fields",paraId:16,tocIndex:3},{value:"These relationship fields are preloaded.",paraId:17,tocIndex:3},{value:"Preloaded relationship fields may shift to reference or copy following adjustments to the field components.",paraId:17,tocIndex:3},{value:"All copy fields are selected.",paraId:18,tocIndex:4},{value:"All reference fields are selected.",paraId:18,tocIndex:4},{value:"All foreign key fields in relationships are filtered out.",paraId:19,tocIndex:5},{value:"For copied relationships, primary key fields are also filtered out.",paraId:19,tocIndex:5},{value:"References and preloads retain their primary key fields.",paraId:19,tocIndex:5},{value:"In most cases, form configurations involve a large number of fields. Managing such complex forms manually can be cumbersome. To streamline this process, the sync form fields button has been introduced. This feature automatically analyzes the form field configurations and applies the appropriate copy logic\u2014whether copy, reference, or preload\u2014based on the field types and relationship field components. Fields that have already been configured are selected by default.",paraId:20,tocIndex:6},{value:"After any modifications to the form field configurations, the system does not automatically update these changes. Therefore, users need to manually click the sync form fields button to apply the latest configuration to the template settings.",paraId:21,tocIndex:6}],Bc={},jc={title:"URL",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/basic/url.md",lastUpdated:173254844e4,description:"to be added."},Hc=[{id:"url",depth:1,title:"URL"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"instructions",depth:2,title:"Instructions"}],Jd=[{value:"to be added.",paraId:0,tocIndex:3}],Wc={},Ai={title:"Edit description",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/edit-description.md",lastUpdated:173254844e4,description:"Field descriptions are short descriptive text displayed in light gray below the field component, which can be used to help users understand the purpose of the field and the input requirements."},qi=[{id:"edit-description",depth:1,title:"Edit description"},{id:"introduction",depth:2,title:"Introduction"}],$c=[{value:"Field descriptions are short descriptive text displayed in light gray below the field component, which can be used to help users understand the purpose of the field and the input requirements.",paraId:0,tocIndex:1}],Dl={},Gc={title:"Validation Rules",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/validation-rules.md",lastUpdated:173254844e4,description:"Setting validation rules is crucial to ensure that user-entered data aligns with expected standards. While there are preset format validations, users also have the flexibility to define custom rules."},Vc=[{id:"validation-rules",depth:1,title:"Validation Rules"},{id:"introduction",depth:2,title:"Introduction"},{id:"lengthsize-validation",depth:3,title:"Length/Size Validation"},{id:"custom-regular-expression-validation",depth:3,title:"Custom Regular Expression Validation"}],Kc=[{value:"Setting validation rules is crucial to ensure that user-entered data aligns with expected standards. While there are preset format validations, users also have the flexibility to define custom rules.",paraId:0,tocIndex:1},{value:"We provide several preset format validations for commonly used data types, including numerical values, ID numbers, email addresses, and phone numbers.",paraId:1,tocIndex:1},{value:"This feature allows for validating the minimum value of numerical data, with current support limited to constants.",paraId:2,tocIndex:2},{value:` + `,paraId:3},{value:"Example: Create a custom regular expression to validate Singaporean phone numbers and configure the corresponding error messages.",paraId:4,tocIndex:3}],Zc={},Ol={title:"\u6DFB\u52A0\u5E26\u5F39\u7A97\u7684\u6570\u636E\u533A\u5757 Data Block Modal",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/block-data-modal.md",lastUpdated:173254844e4,description:"\u5F88\u591A\u60C5\u51B5\u4E0B\u5728\u70B9\u51FB\u521B\u5EFA\u533A\u5757\u4E4B\u524D\uFF0C\u6211\u4EEC\u9700\u8981\u5148\u9009\u62E9\u914D\u7F6E\u4FE1\u606F\u3002\u4F8B\u5982\uFF1A"},Yc=[{id:"\u6DFB\u52A0\u5E26\u5F39\u7A97\u7684\u6570\u636E\u533A\u5757-data-block-modal",depth:1,title:"\u6DFB\u52A0\u5E26\u5F39\u7A97\u7684\u6570\u636E\u533A\u5757 Data Block Modal"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u5B9A\u4E49\u540D\u79F0",depth:3,title:"1. \u5B9A\u4E49\u540D\u79F0"},{id:"2-\u5B9E\u73B0\u533A\u5757\u7EC4\u4EF6",depth:3,title:"2. \u5B9E\u73B0\u533A\u5757\u7EC4\u4EF6"},{id:"21-\u5B9A\u4E49\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.1 \u5B9A\u4E49\u533A\u5757\u7EC4\u4EF6"},{id:"22-\u6CE8\u518C\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.2 \u6CE8\u518C\u533A\u5757\u7EC4\u4EF6"},{id:"23-\u9A8C\u8BC1\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.3 \u9A8C\u8BC1\u533A\u5757\u7EC4\u4EF6"},{id:"3-\u5B9A\u4E49\u914D\u7F6E\u8868\u5355",depth:3,title:"3. \u5B9A\u4E49\u914D\u7F6E\u8868\u5355"},{id:"31-\u5B9A\u4E49\u914D\u7F6E\u8868\u5355\u7EC4\u4EF6",depth:4,title:"3.1 \u5B9A\u4E49\u914D\u7F6E\u8868\u5355\u7EC4\u4EF6"},{id:"32-\u5B9E\u73B0\u914D\u7F6E\u8868\u5355-schema",depth:4,title:"3.2 \u5B9E\u73B0\u914D\u7F6E\u8868\u5355 Schema"},{id:"33-\u9A8C\u8BC1\u914D\u7F6E\u8868\u5355",depth:4,title:"3.3 \u9A8C\u8BC1\u914D\u7F6E\u8868\u5355"},{id:"4-\u5B9A\u4E49\u533A\u5757-schema",depth:3,title:"4. \u5B9A\u4E49\u533A\u5757 Schema"},{id:"41-\u5B9A\u4E49\u533A\u5757-schema",depth:4,title:"4.1 \u5B9A\u4E49\u533A\u5757 Schema"},{id:"42-\u6CE8\u518C-scope",depth:4,title:"4.2 \u6CE8\u518C scope"},{id:"43-\u9A8C\u8BC1\u533A\u5757-schema",depth:4,title:"4.3 \u9A8C\u8BC1\u533A\u5757 Schema"},{id:"5-\u5B9A\u4E49-schema-initializer-item",depth:3,title:"5. \u5B9A\u4E49 Schema Initializer Item"},{id:"6-\u5B9E\u73B0-schema-settings",depth:3,title:"6. \u5B9E\u73B0 Schema Settings"},{id:"61-\u5B9A\u4E49-schema-settings",depth:4,title:"6.1 \u5B9A\u4E49 Schema Settings"},{id:"62-\u6CE8\u518C-schema-settings",depth:4,title:"6.2 \u6CE8\u518C Schema Settings"},{id:"63-\u4F7F\u7528-schema-settings",depth:4,title:"6.3 \u4F7F\u7528 Schema Settings"},{id:"7-\u6DFB\u52A0\u5230-add-block-\u4E2D",depth:3,title:"7. \u6DFB\u52A0\u5230 Add block \u4E2D"},{id:"71-\u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B-add-block-\u4E2D",depth:4,title:"7.1 \u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B Add block \u4E2D"},{id:"72-\u6DFB\u52A0\u5230\u5F39\u7A97-add-block-\u4E2D",depth:4,title:"7.2 \u6DFB\u52A0\u5230\u5F39\u7A97 Add block \u4E2D"},{id:"73-\u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF-add-block-\u4E2D",depth:4,title:"7.3 \u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF Add block \u4E2D"},{id:"8-\u591A\u8BED\u8A00",depth:3,title:"8. \u591A\u8BED\u8A00"},{id:"81-\u82F1\u6587",depth:4,title:"8.1 \u82F1\u6587"},{id:"82-\u4E2D\u6587",depth:4,title:"8.2 \u4E2D\u6587"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],Qc=[{value:"\u5F88\u591A\u60C5\u51B5\u4E0B\u5728\u70B9\u51FB\u521B\u5EFA\u533A\u5757\u4E4B\u524D\uFF0C\u6211\u4EEC\u9700\u8981\u5148\u9009\u62E9\u914D\u7F6E\u4FE1\u606F\u3002\u4F8B\u5982\uFF1A",paraId:0,tocIndex:1},{value:"Kanban",paraId:1,tocIndex:1},{value:" \u533A\u5757\u70B9\u51FB\u540E\u9700\u8981\u5148\u9009\u62E9 ",paraId:1,tocIndex:1},{value:"Grouping field",paraId:1,tocIndex:1},{value:" \u548C ",paraId:1,tocIndex:1},{value:"Sorting field",paraId:1,tocIndex:1},{value:"Calendar",paraId:1,tocIndex:1},{value:" \u533A\u5757\u9700\u8981\u5148\u9009\u62E9 ",paraId:1,tocIndex:1},{value:"Title field",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"Start date field",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"End date field",paraId:1,tocIndex:1},{value:"Chart",paraId:1,tocIndex:1},{value:" \u533A\u5757\u9700\u8981\u5148\u914D\u7F6E\u56FE\u6807\u76F8\u5173\u4FE1\u606F",paraId:1,tocIndex:1},{value:` `,paraId:2},{value:"\u672C\u5B9E\u4F8B\u4F1A\u57FA\u4E8E ant-design ",paraId:3,tocIndex:2},{value:"Timeline \u7EC4\u4EF6",paraId:3,tocIndex:2},{value:" \u521B\u5EFA\u4E00\u4E2A ",paraId:3,tocIndex:2},{value:"Timeline",paraId:3,tocIndex:2},{value:" \u533A\u5757\uFF0C\u5E76\u4E14\u5728\u533A\u5757\u521B\u5EFA\u524D\u9009\u62E9 ",paraId:3,tocIndex:2},{value:"Time Field",paraId:3,tocIndex:2},{value:" \u548C ",paraId:3,tocIndex:2},{value:"Title Field",paraId:3,tocIndex:2},{value:"\u3002",paraId:3,tocIndex:2},{value:"\u672C\u5B9E\u4F8B\u4E3B\u8981\u4E3A\u4E86\u6F14\u793A initializer \u7684\u4F7F\u7528\uFF0C\u66F4\u591A\u5173\u4E8E\u533A\u5757\u6269\u5C55\u53EF\u4EE5\u67E5\u770B ",paraId:4,tocIndex:2},{value:"\u533A\u5757\u6269\u5C55",paraId:5,tocIndex:2},{value:" \u6587\u6863\u3002",paraId:4,tocIndex:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:6,tocIndex:2},{value:"plugin-samples",paraId:6,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:6,tocIndex:2},{value:` `,paraId:2},{value:"\u6211\u4EEC\u6309\u7167 ",paraId:7,tocIndex:3},{value:"\u7F16\u5199\u7B2C\u4E00\u4E2A\u63D2\u4EF6",paraId:8,tocIndex:3},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u5982\u679C\u6CA1\u6709\u4E00\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u5148\u521B\u5EFA\u4E00\u4E2A\u9879\u76EE\uFF0C\u5982\u679C\u5DF2\u7ECF\u6709\u4E86\u6216\u8005\u662F clone \u7684\u6E90\u7801\uFF0C\u5219\u8DF3\u8FC7\u8FD9\u4E00\u6B65\u3002",paraId:7,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app @@ -1970,7 +1999,7 @@ export default PluginInitializerBlockDataModalClient; } `,paraId:124,tocIndex:29},{value:"\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 ",paraId:125,tocIndex:29},{value:"http://localhost:13000/admin/settings/system-settings",paraId:125,tocIndex:29},{value:" \u6DFB\u52A0\u591A\u4E2A\u8BED\u8A00\uFF0C\u5E76\u4E14\u5728\u53F3\u4E0A\u89D2\u5207\u6362\u8BED\u8A00\u3002",paraId:125,tocIndex:29},{value:"\u6309\u7167 ",paraId:126,tocIndex:30},{value:"\u6784\u5EFA\u5E76\u6253\u5305\u63D2\u4EF6",paraId:127,tocIndex:30},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6253\u5305\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883\u3002",paraId:126,tocIndex:30},{value:"\u5982\u679C\u662F clone \u7684\u6E90\u7801\uFF0C\u9700\u8981\u5148\u6267\u884C\u4E00\u6B21\u5168\u91CF build\uFF0C\u5C06\u63D2\u4EF6\u7684\u4F9D\u8D56\u4E5F\u6784\u5EFA\u597D\u3002",paraId:128,tocIndex:30},{value:`yarn build `,paraId:129,tocIndex:30},{value:"\u5982\u679C\u662F\u4F7F\u7528\u7684 ",paraId:130,tocIndex:30},{value:"create-nocobase-app",paraId:130,tocIndex:30},{value:" \u521B\u5EFA\u7684\u9879\u76EE\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A",paraId:130,tocIndex:30},{value:`yarn build @nocobase-sample/plugin-initializer-block-data-modal --tar -`,paraId:131,tocIndex:30},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:132,tocIndex:30},{value:"storage/tar/@nocobase-sample/plugin-initializer-block-data-modal.tar.gz",paraId:132,tocIndex:30},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:132,tocIndex:30},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:133,tocIndex:30},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:132,tocIndex:30}],Jc={},uu={title:"\u533A\u5757\u5185\u5D4C\u7684 Initializer - \u914D\u7F6E\u5B57\u6BB5",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/configure-fields.md",lastUpdated:1732240239e3,description:"TODO"},Xc=[{id:"\u533A\u5757\u5185\u5D4C\u7684-initializer---\u914D\u7F6E\u5B57\u6BB5",depth:1,title:"\u533A\u5757\u5185\u5D4C\u7684 Initializer - \u914D\u7F6E\u5B57\u6BB5"}],pu=[{value:"TODO",paraId:0,tocIndex:0}],Iu={},es={title:"\u6DFB\u52A0\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/add-record.md",lastUpdated:1732240239e3,description:"\u81EA\u5B9A\u4E49\u6DFB\u52A0\u6570\u636E\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5728\u64CD\u4F5C\u4E2D\u4E3A\u4EFB\u610F\u6570\u636E\u8868\u4E2D\u6DFB\u52A0\u6570\u636E"},as=[{id:"\u6DFB\u52A0\u6570\u636E",depth:1,title:"\u6DFB\u52A0\u6570\u636E"}],ts=[{value:"\u81EA\u5B9A\u4E49\u6DFB\u52A0\u6570\u636E\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5728\u64CD\u4F5C\u4E2D\u4E3A\u4EFB\u610F\u6570\u636E\u8868\u4E2D\u6DFB\u52A0\u6570\u636E",paraId:0,tocIndex:0}],ns={},Ei={title:"\u6253\u5F00\u5F39\u7A97",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/open-popup.md",lastUpdated:1732240239e3,description:"\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\u4EE5\u5F39\u7A97\u7684\u65B9\u5F0F\u5448\u73B0\u6570\u636E\uFF0C\u53EF\u81EA\u5B9A\u4E49\u914D\u7F6E\u8BE6\u60C5\u533A\u5757\u6216\u8868\u5355\u533A\u5757\uFF0C\u9002\u7528\u4E8E\u591A\u79CD\u573A\u666F\u3002\u5982\u5F53\u6570\u636E\u8868\u4E2D\u6709\u8BB8\u591A\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u5C06\u5B57\u6BB5\u62C6\u5206\u5230\u4E0D\u540C\u7684\u64CD\u4F5C\u533A\u5757\u4E2D\uFF0C\u4E13\u6CE8\u4E8E\u67E5\u770B\u6216\u4FEE\u6539\u67D0\u4E9B\u5B57\u6BB5\uFF0C\u6839\u636E\u4E1A\u52A1\u9700\u6C42\u521B\u5EFA\u591A\u4E2A\u5B9A\u5236\u5316\u6570\u636E\u5C55\u793A\u6216\u7F16\u8F91\u754C\u9762\u7684\u64CD\u4F5C"},_u=[{id:"\u6253\u5F00\u5F39\u7A97",depth:1,title:"\u6253\u5F00\u5F39\u7A97"}],vu=[{value:"\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\u4EE5\u5F39\u7A97\u7684\u65B9\u5F0F\u5448\u73B0\u6570\u636E\uFF0C\u53EF\u81EA\u5B9A\u4E49\u914D\u7F6E\u8BE6\u60C5\u533A\u5757\u6216\u8868\u5355\u533A\u5757\uFF0C\u9002\u7528\u4E8E\u591A\u79CD\u573A\u666F\u3002\u5982\u5F53\u6570\u636E\u8868\u4E2D\u6709\u8BB8\u591A\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u5C06\u5B57\u6BB5\u62C6\u5206\u5230\u4E0D\u540C\u7684\u64CD\u4F5C\u533A\u5757\u4E2D\uFF0C\u4E13\u6CE8\u4E8E\u67E5\u770B\u6216\u4FEE\u6539\u67D0\u4E9B\u5B57\u6BB5\uFF0C\u6839\u636E\u4E1A\u52A1\u9700\u6C42\u521B\u5EFA\u591A\u4E2A\u5B9A\u5236\u5316\u6570\u636E\u5C55\u793A\u6216\u7F16\u8F91\u754C\u9762\u7684\u64CD\u4F5C",paraId:0,tocIndex:0},{value:"\u5982\u56FE\u8BA2\u5355\u8868\u683C\u4E2D\u914D\u7F6E\u4E86\u4E09\u4E2A\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\uFF0C\u67E5\u770B\u4E3B\u8BA2\u5355\uFF08\u8BA2\u5355\u4E3B\u4FE1\u606F\uFF09\uFF0C\u67E5\u770B\u5546\u54C1\uFF08\u8BA2\u5355\u7684\u5173\u8054\u7684\u5546\u54C1\u4FE1\u606F\uFF09\u548C\u67E5\u770B\u5BA2\u6237\uFF08\u8BA2\u5355\u5173\u8054\u7684\u5BA2\u6237\u4FE1\u606F\uFF09",paraId:1,tocIndex:0}],mu={},Rl={title:"Association Fields",toc:"menu",filename:"docs/en-US/development/server/collections/association-fields.md",lastUpdated:1732240239e3,description:"In a relational database, the standard way to build a table relationship is to add a foreign key field followed by a foreign key constraint. For example, Knex builds a table with the following example."},Ml=[{id:"association-fields",depth:1,title:"Association Fields"},{id:"relationship-parameters",depth:2,title:"Relationship parameters"},{id:"belongsto",depth:3,title:"BelongsTo"},{id:"hasone",depth:3,title:"HasOne"},{id:"hasmany",depth:3,title:"HasMany"},{id:"belongstomany",depth:3,title:"BelongsToMany"}],hu=[{value:"In a relational database, the standard way to build a table relationship is to add a foreign key field followed by a foreign key constraint. For example, Knex builds a table with the following example.",paraId:0,tocIndex:0},{value:`knex.schema.table('posts', function (table) { +`,paraId:131,tocIndex:30},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:132,tocIndex:30},{value:"storage/tar/@nocobase-sample/plugin-initializer-block-data-modal.tar.gz",paraId:132,tocIndex:30},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:132,tocIndex:30},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:133,tocIndex:30},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:132,tocIndex:30}],Jc={},uu={title:"\u533A\u5757\u5185\u5D4C\u7684 Initializer - \u914D\u7F6E\u5B57\u6BB5",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/configure-fields.md",lastUpdated:173254844e4,description:"TODO"},Xc=[{id:"\u533A\u5757\u5185\u5D4C\u7684-initializer---\u914D\u7F6E\u5B57\u6BB5",depth:1,title:"\u533A\u5757\u5185\u5D4C\u7684 Initializer - \u914D\u7F6E\u5B57\u6BB5"}],pu=[{value:"TODO",paraId:0,tocIndex:0}],Iu={},es={title:"\u6DFB\u52A0\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/add-record.md",lastUpdated:173254844e4,description:"\u81EA\u5B9A\u4E49\u6DFB\u52A0\u6570\u636E\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5728\u64CD\u4F5C\u4E2D\u4E3A\u4EFB\u610F\u6570\u636E\u8868\u4E2D\u6DFB\u52A0\u6570\u636E"},as=[{id:"\u6DFB\u52A0\u6570\u636E",depth:1,title:"\u6DFB\u52A0\u6570\u636E"}],ts=[{value:"\u81EA\u5B9A\u4E49\u6DFB\u52A0\u6570\u636E\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5728\u64CD\u4F5C\u4E2D\u4E3A\u4EFB\u610F\u6570\u636E\u8868\u4E2D\u6DFB\u52A0\u6570\u636E",paraId:0,tocIndex:0}],ns={},Ei={title:"\u6253\u5F00\u5F39\u7A97",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/open-popup.md",lastUpdated:173254844e4,description:"\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\u4EE5\u5F39\u7A97\u7684\u65B9\u5F0F\u5448\u73B0\u6570\u636E\uFF0C\u53EF\u81EA\u5B9A\u4E49\u914D\u7F6E\u8BE6\u60C5\u533A\u5757\u6216\u8868\u5355\u533A\u5757\uFF0C\u9002\u7528\u4E8E\u591A\u79CD\u573A\u666F\u3002\u5982\u5F53\u6570\u636E\u8868\u4E2D\u6709\u8BB8\u591A\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u5C06\u5B57\u6BB5\u62C6\u5206\u5230\u4E0D\u540C\u7684\u64CD\u4F5C\u533A\u5757\u4E2D\uFF0C\u4E13\u6CE8\u4E8E\u67E5\u770B\u6216\u4FEE\u6539\u67D0\u4E9B\u5B57\u6BB5\uFF0C\u6839\u636E\u4E1A\u52A1\u9700\u6C42\u521B\u5EFA\u591A\u4E2A\u5B9A\u5236\u5316\u6570\u636E\u5C55\u793A\u6216\u7F16\u8F91\u754C\u9762\u7684\u64CD\u4F5C"},_u=[{id:"\u6253\u5F00\u5F39\u7A97",depth:1,title:"\u6253\u5F00\u5F39\u7A97"}],vu=[{value:"\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\u4EE5\u5F39\u7A97\u7684\u65B9\u5F0F\u5448\u73B0\u6570\u636E\uFF0C\u53EF\u81EA\u5B9A\u4E49\u914D\u7F6E\u8BE6\u60C5\u533A\u5757\u6216\u8868\u5355\u533A\u5757\uFF0C\u9002\u7528\u4E8E\u591A\u79CD\u573A\u666F\u3002\u5982\u5F53\u6570\u636E\u8868\u4E2D\u6709\u8BB8\u591A\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u5C06\u5B57\u6BB5\u62C6\u5206\u5230\u4E0D\u540C\u7684\u64CD\u4F5C\u533A\u5757\u4E2D\uFF0C\u4E13\u6CE8\u4E8E\u67E5\u770B\u6216\u4FEE\u6539\u67D0\u4E9B\u5B57\u6BB5\uFF0C\u6839\u636E\u4E1A\u52A1\u9700\u6C42\u521B\u5EFA\u591A\u4E2A\u5B9A\u5236\u5316\u6570\u636E\u5C55\u793A\u6216\u7F16\u8F91\u754C\u9762\u7684\u64CD\u4F5C",paraId:0,tocIndex:0},{value:"\u5982\u56FE\u8BA2\u5355\u8868\u683C\u4E2D\u914D\u7F6E\u4E86\u4E09\u4E2A\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\uFF0C\u67E5\u770B\u4E3B\u8BA2\u5355\uFF08\u8BA2\u5355\u4E3B\u4FE1\u606F\uFF09\uFF0C\u67E5\u770B\u5546\u54C1\uFF08\u8BA2\u5355\u7684\u5173\u8054\u7684\u5546\u54C1\u4FE1\u606F\uFF09\u548C\u67E5\u770B\u5BA2\u6237\uFF08\u8BA2\u5355\u5173\u8054\u7684\u5BA2\u6237\u4FE1\u606F\uFF09",paraId:1,tocIndex:0}],mu={},Rl={title:"Association Fields",toc:"menu",filename:"docs/en-US/development/server/collections/association-fields.md",lastUpdated:173254844e4,description:"In a relational database, the standard way to build a table relationship is to add a foreign key field followed by a foreign key constraint. For example, Knex builds a table with the following example."},Ml=[{id:"association-fields",depth:1,title:"Association Fields"},{id:"relationship-parameters",depth:2,title:"Relationship parameters"},{id:"belongsto",depth:3,title:"BelongsTo"},{id:"hasone",depth:3,title:"HasOne"},{id:"hasmany",depth:3,title:"HasMany"},{id:"belongstomany",depth:3,title:"BelongsToMany"}],hu=[{value:"In a relational database, the standard way to build a table relationship is to add a foreign key field followed by a foreign key constraint. For example, Knex builds a table with the following example.",paraId:0,tocIndex:0},{value:`knex.schema.table('posts', function (table) { table.integer('userId').unsigned(); table.foreign('userId').references('users.id'); }); @@ -2090,7 +2119,7 @@ foreignKey?} } ], } -`,paraId:7,tocIndex:5}],os={},rs={title:"\u4E0E Router \u7684\u533A\u522B",toc:"menu",filename:"docs/en-US/development/server/resources-actions-v2/vs-router.md",lastUpdated:1732240239e3},ds=[{id:"\u4E0E-router-\u7684\u533A\u522B",depth:1,title:"\u4E0E Router \u7684\u533A\u522B"}],is=[],ls={},cs={title:"Dual-Axis Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/dual-axes.md",lastUpdated:1732240239e3},Ll=[{id:"dual-axis-chart",depth:1,title:"Dual-Axis Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"2-metrics-1-dimension",depth:3,title:"2 metrics, 1 dimension"},{id:"configuration-options",depth:4,title:"Configuration Options"}],ss=[{value:"Option",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Size",paraId:0,tocIndex:3},{value:"Sets the chart size, either with a fixed aspect ratio or a fixed height",paraId:0,tocIndex:3}],us={},Xd={title:"Diverging-bar Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/diverging-bar.md",lastUpdated:1732240239e3,description:"Configure 2 metrics and 1 dimension. One metric will be assigned as the left-side X-axis field, and the other as the right-side X-axis field."},Yo=[{id:"diverging-bar-chart",depth:1,title:"Diverging-bar Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"2-metrics-1-dimension",depth:3,title:"2 Metrics, 1 Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],fu=[{value:"Configure 2 metrics and 1 dimension. One metric will be assigned as the left-side X-axis field, and the other as the right-side X-axis field.",paraId:0,tocIndex:2},{value:"Option",paraId:1,tocIndex:3},{value:"Description",paraId:1,tocIndex:3},{value:"Left X field",paraId:1,tocIndex:3},{value:"Metric field for the left-side X-axis",paraId:1,tocIndex:3},{value:"Right X field",paraId:1,tocIndex:3},{value:"Metric field for the right-side X-axis",paraId:1,tocIndex:3},{value:"yField",paraId:1,tocIndex:3},{value:"Dimension field",paraId:1,tocIndex:3},{value:"Size",paraId:1,tocIndex:3},{value:"Set the size of the chart, either with a fixed aspect ratio or fixed height",paraId:1,tocIndex:3},{value:"Light mode theme",paraId:1,tocIndex:3},{value:"Select this option to preview in the system's light mode",paraId:1,tocIndex:3},{value:"Dark mode theme",paraId:1,tocIndex:3},{value:"Select this option to preview in the system's dark mode",paraId:1,tocIndex:3},{value:"Show legend",paraId:1,tocIndex:3},{value:"Controls whether to display the legend",paraId:1,tocIndex:3},{value:"Label type",paraId:1,tocIndex:3},{value:"Controls whether to show labels and their display types",paraId:1,tocIndex:3},{value:"Colors",paraId:1,tocIndex:3},{value:"Allows fine control of the color for each category",paraId:1,tocIndex:3},{value:"Y-Axis label rotate",paraId:1,tocIndex:3},{value:"Controls the rotation angle of Y-axis labels, useful when labels are dense",paraId:1,tocIndex:3},{value:"Padding",paraId:1,tocIndex:3},{value:"Adjust the padding within the chart",paraId:1,tocIndex:3},{value:"Split line",paraId:1,tocIndex:3},{value:"Controls whether to display grid lines and their styles",paraId:1,tocIndex:3}],xu={},rr={title:"Assign Field Values",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/assign-values.md",lastUpdated:1732240239e3,description:"Field values assignment allows you to preset values for fields before executing operations. This feature ensures that data is automatically populated when updating or creating records, eliminating the need for manual input. Common scenarios include bulk updating order statuses or automatically setting the delivery time to the current time when an order is delivered."},Xo=[{id:"assign-field-values",depth:1,title:"Assign Field Values"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"configuring-fields",depth:3,title:"Configuring Fields"},{id:"constants",depth:3,title:"Constants"},{id:"variables",depth:3,title:"Variables"}],ps=[{value:"Field values assignment allows you to preset values for fields before executing operations. This feature ensures that data is automatically populated when updating or creating records, eliminating the need for manual input. Common scenarios include bulk updating order statuses or automatically setting the delivery time to the current time when an order is delivered.",paraId:0,tocIndex:1},{value:"Only fields within the current table can be configured.",paraId:1,tocIndex:3},{value:"Different field types support various variable types, offering flexibility depending on the data you're working with.",paraId:2,tocIndex:5},{value:"For more information on variables, refer to the ",paraId:3,tocIndex:5},{value:"Variables",paraId:4,tocIndex:5},{value:" section.",paraId:3,tocIndex:5}],Is={},_s={title:"Bind Workflows",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/bind-workflow.md",lastUpdated:1732240239e3,description:"Binding a workflow is a powerful way to automate data processing. By linking an operation to a workflow, you ensure that data flows seamlessly through business processes. It\u2019s important to note that workflows are triggered only after a successful data submission; if the operation fails, the workflow will not be activated."},vs=[{id:"bind-workflows",depth:1,title:"Bind Workflows"},{id:"introduction",depth:2,title:"Introduction"}],ms=[{value:"Binding a workflow is a powerful way to automate data processing. By linking an operation to a workflow, you ensure that data flows seamlessly through business processes. It\u2019s important to note that workflows are triggered only after a successful data submission; if the operation fails, the workflow will not be activated.",paraId:0,tocIndex:1},{value:"The following operation buttons currently support workflow binding:",paraId:1,tocIndex:1},{value:'"Submit" and "Save" buttons for new forms.',paraId:2,tocIndex:1},{value:'"Submit" and "Save" buttons for update forms.',paraId:3,tocIndex:1},{value:'"Update Data" button in data rows (including tables, lists, kanban, etc.).',paraId:4,tocIndex:1},{value:"For more details, see ",paraId:5,tocIndex:1},{value:"Post-Action Events",paraId:6,tocIndex:1},{value:" in the workflow documentation.",paraId:5,tocIndex:1}],Nl={},hs={title:"Workflow: Approval blocks",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/other-blocks/workflow-approval.md",lastUpdated:1732240239e3,description:"In the data details pop-up for a submitted item, an approval block can be configured to display the relevant approval records and provide entry points for processing them:"},zl=[{id:"workflow-approval-blocks",depth:1,title:"Workflow: Approval blocks"},{id:"approval-block-in-data-details",depth:2,title:"Approval Block in Data Details"},{id:"actions-by-the-initiator",depth:3,title:"Actions by the Initiator"},{id:"actions-by-the-approver",depth:3,title:"Actions by the Approver"},{id:"approval-center-block",depth:2,title:"Approval Center Block"}],fs=[{value:"In the data details pop-up for a submitted item, an approval block can be configured to display the relevant approval records and provide entry points for processing them:",paraId:0,tocIndex:1},{value:"The approval block displays the basic application information and approval history. The initiator can view the details of their submitted application within the pop-up. If retraction is enabled and the process is still in its initial approval stage\u2014before any approver has taken action\u2014the initiator can withdraw the application:",paraId:1,tocIndex:2},{value:"If the initiator withdraws the application, the withdrawal record will appear in the approval block. By clicking on it, the application pop-up will reopen:",paraId:2,tocIndex:2},{value:"The pop-up's content remains unchanged, allowing the initiator to make adjustments and resubmit:",paraId:3,tocIndex:2},{value:'Approvers can also review the approval content through this block. In the processing history, if the logged-in user is one of the persons responsible for a node, a "View" button will appear in the details column. Clicking it will open the approval pop-up:',paraId:4,tocIndex:3},{value:"The pop-up will display the approver's interface for that approval node, typically including the approval details and an action bar:",paraId:5,tocIndex:3},{value:"Approvers can take actions such as approve, reject, or return within the pop-up. After an action is taken, a corresponding record will be added to the processing history. If the action is a return, the initiator can modify the application and resubmit it:",paraId:6,tocIndex:3},{value:"Approving or rejecting will trigger the corresponding status based on the node's configured rules:",paraId:7,tocIndex:3},{value:'The approval plugin offers two global blocks for centrally managing approval processes: "Initiations" and "Todos":',paraId:8,tocIndex:4},{value:`The "Initiations" block provides the initiator's perspective, allowing the user to initiate a new approval from the block's action bar:`,paraId:9,tocIndex:4},{value:'If the approval trigger is configured "Initiate and approve in both data blocks and global approval blocks", the corresponding approval process will appear in the drop-down menu under the "Initiate" button.',paraId:10,tocIndex:4},{value:"Users can also monitor the status of approvals they have initiated:",paraId:11,tocIndex:4},{value:`Clicking "View" opens a pop-up similar to the approval block in data details. The key difference is that the initiator's submission and the approval history are displayed on separate tabs:`,paraId:12,tocIndex:4},{value:`The "Todos" block serves the approver's perspective, allowing users to view pending approvals. Clicking the corresponding "View" button opens a processing pop-up, similar to the approval block in data details, with the distinction that the approver's form and the approval history are shown on separate tabs:`,paraId:13,tocIndex:4},{value:"If the approval has already been processed, the submitted content is displayed as is and cannot be modified.",paraId:14,tocIndex:4}],xs={},Di={title:"Field Component",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/field-component.md",lastUpdated:1732240239e3,description:"Certain fields support multiple components, allowing us to select the most appropriate one to display the field\u2019s value. For instance, the URL component can be switched to a Preview component."},Oi=[{id:"field-component",depth:1,title:"Field Component"},{id:"introduction",depth:2,title:"Introduction"}],gs=[{value:"Certain fields support multiple components, allowing us to select the most appropriate one to display the field\u2019s value. For instance, the ",paraId:0,tocIndex:1},{value:"URL",paraId:0,tocIndex:1},{value:" component can be switched to a ",paraId:0,tocIndex:1},{value:"Preview",paraId:0,tocIndex:1},{value:" component.",paraId:0,tocIndex:1},{value:"If you need to expand more components, referring to ",paraId:1,tocIndex:1},{value:"Expand Value Field Components",paraId:2,tocIndex:1},{value:"\u3002",paraId:1,tocIndex:1}],bs={},Fl={title:"MySQL \u5982\u4F55\u542F\u7528 federated \u5F15\u64CE",toc:"menu",filename:"docs/en-US/manual/collection/collection-fdw/enable-federated.md",lastUpdated:1732240239e3,description:"MySQL \u6570\u636E\u5E93\u9ED8\u8BA4\u6CA1\u6709\u5F00\u542F federated \u6A21\u5757\uFF0C\u9700\u8981\u4FEE\u6539 my.cnf \u914D\u7F6E\uFF0C\u5982\u679C\u662F docker \u7248\u672C\uFF0C\u53EF\u4EE5\u901A\u8FC7 volumes \u6765\u5904\u7406\u6269\u5C55\u7684\u60C5\u51B5\uFF1A"},ys=[{id:"mysql-\u5982\u4F55\u542F\u7528-federated-\u5F15\u64CE",depth:1,title:"MySQL \u5982\u4F55\u542F\u7528 federated \u5F15\u64CE"}],ws=[{value:"MySQL \u6570\u636E\u5E93\u9ED8\u8BA4\u6CA1\u6709\u5F00\u542F federated \u6A21\u5757\uFF0C\u9700\u8981\u4FEE\u6539 my.cnf \u914D\u7F6E\uFF0C\u5982\u679C\u662F docker \u7248\u672C\uFF0C\u53EF\u4EE5\u901A\u8FC7 volumes \u6765\u5904\u7406\u6269\u5C55\u7684\u60C5\u51B5\uFF1A",paraId:0,tocIndex:0},{value:`mysql: +`,paraId:7,tocIndex:5}],os={},rs={title:"\u4E0E Router \u7684\u533A\u522B",toc:"menu",filename:"docs/en-US/development/server/resources-actions-v2/vs-router.md",lastUpdated:173254844e4},ds=[{id:"\u4E0E-router-\u7684\u533A\u522B",depth:1,title:"\u4E0E Router \u7684\u533A\u522B"}],is=[],ls={},cs={title:"Dual-Axis Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/dual-axes.md",lastUpdated:173254844e4},Ll=[{id:"dual-axis-chart",depth:1,title:"Dual-Axis Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"2-metrics-1-dimension",depth:3,title:"2 metrics, 1 dimension"},{id:"configuration-options",depth:4,title:"Configuration Options"}],ss=[{value:"Option",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Size",paraId:0,tocIndex:3},{value:"Sets the chart size, either with a fixed aspect ratio or a fixed height",paraId:0,tocIndex:3}],us={},Xd={title:"Diverging-bar Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/diverging-bar.md",lastUpdated:173254844e4,description:"Configure 2 metrics and 1 dimension. One metric will be assigned as the left-side X-axis field, and the other as the right-side X-axis field."},Yo=[{id:"diverging-bar-chart",depth:1,title:"Diverging-bar Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"2-metrics-1-dimension",depth:3,title:"2 Metrics, 1 Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],fu=[{value:"Configure 2 metrics and 1 dimension. One metric will be assigned as the left-side X-axis field, and the other as the right-side X-axis field.",paraId:0,tocIndex:2},{value:"Option",paraId:1,tocIndex:3},{value:"Description",paraId:1,tocIndex:3},{value:"Left X field",paraId:1,tocIndex:3},{value:"Metric field for the left-side X-axis",paraId:1,tocIndex:3},{value:"Right X field",paraId:1,tocIndex:3},{value:"Metric field for the right-side X-axis",paraId:1,tocIndex:3},{value:"yField",paraId:1,tocIndex:3},{value:"Dimension field",paraId:1,tocIndex:3},{value:"Size",paraId:1,tocIndex:3},{value:"Set the size of the chart, either with a fixed aspect ratio or fixed height",paraId:1,tocIndex:3},{value:"Light mode theme",paraId:1,tocIndex:3},{value:"Select this option to preview in the system's light mode",paraId:1,tocIndex:3},{value:"Dark mode theme",paraId:1,tocIndex:3},{value:"Select this option to preview in the system's dark mode",paraId:1,tocIndex:3},{value:"Show legend",paraId:1,tocIndex:3},{value:"Controls whether to display the legend",paraId:1,tocIndex:3},{value:"Label type",paraId:1,tocIndex:3},{value:"Controls whether to show labels and their display types",paraId:1,tocIndex:3},{value:"Colors",paraId:1,tocIndex:3},{value:"Allows fine control of the color for each category",paraId:1,tocIndex:3},{value:"Y-Axis label rotate",paraId:1,tocIndex:3},{value:"Controls the rotation angle of Y-axis labels, useful when labels are dense",paraId:1,tocIndex:3},{value:"Padding",paraId:1,tocIndex:3},{value:"Adjust the padding within the chart",paraId:1,tocIndex:3},{value:"Split line",paraId:1,tocIndex:3},{value:"Controls whether to display grid lines and their styles",paraId:1,tocIndex:3}],xu={},rr={title:"Assign Field Values",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/assign-values.md",lastUpdated:173254844e4,description:"Field values assignment allows you to preset values for fields before executing operations. This feature ensures that data is automatically populated when updating or creating records, eliminating the need for manual input. Common scenarios include bulk updating order statuses or automatically setting the delivery time to the current time when an order is delivered."},Xo=[{id:"assign-field-values",depth:1,title:"Assign Field Values"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"configuring-fields",depth:3,title:"Configuring Fields"},{id:"constants",depth:3,title:"Constants"},{id:"variables",depth:3,title:"Variables"}],ps=[{value:"Field values assignment allows you to preset values for fields before executing operations. This feature ensures that data is automatically populated when updating or creating records, eliminating the need for manual input. Common scenarios include bulk updating order statuses or automatically setting the delivery time to the current time when an order is delivered.",paraId:0,tocIndex:1},{value:"Only fields within the current table can be configured.",paraId:1,tocIndex:3},{value:"Different field types support various variable types, offering flexibility depending on the data you're working with.",paraId:2,tocIndex:5},{value:"For more information on variables, refer to the ",paraId:3,tocIndex:5},{value:"Variables",paraId:4,tocIndex:5},{value:" section.",paraId:3,tocIndex:5}],Is={},_s={title:"Bind Workflows",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/bind-workflow.md",lastUpdated:173254844e4,description:"Binding a workflow is a powerful way to automate data processing. By linking an operation to a workflow, you ensure that data flows seamlessly through business processes. It\u2019s important to note that workflows are triggered only after a successful data submission; if the operation fails, the workflow will not be activated."},vs=[{id:"bind-workflows",depth:1,title:"Bind Workflows"},{id:"introduction",depth:2,title:"Introduction"}],ms=[{value:"Binding a workflow is a powerful way to automate data processing. By linking an operation to a workflow, you ensure that data flows seamlessly through business processes. It\u2019s important to note that workflows are triggered only after a successful data submission; if the operation fails, the workflow will not be activated.",paraId:0,tocIndex:1},{value:"The following operation buttons currently support workflow binding:",paraId:1,tocIndex:1},{value:'"Submit" and "Save" buttons for new forms.',paraId:2,tocIndex:1},{value:'"Submit" and "Save" buttons for update forms.',paraId:3,tocIndex:1},{value:'"Update Data" button in data rows (including tables, lists, kanban, etc.).',paraId:4,tocIndex:1},{value:"For more details, see ",paraId:5,tocIndex:1},{value:"Post-Action Events",paraId:6,tocIndex:1},{value:" in the workflow documentation.",paraId:5,tocIndex:1}],Nl={},hs={title:"Workflow: Approval blocks",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/other-blocks/workflow-approval.md",lastUpdated:173254844e4,description:"In the data details pop-up for a submitted item, an approval block can be configured to display the relevant approval records and provide entry points for processing them:"},zl=[{id:"workflow-approval-blocks",depth:1,title:"Workflow: Approval blocks"},{id:"approval-block-in-data-details",depth:2,title:"Approval Block in Data Details"},{id:"actions-by-the-initiator",depth:3,title:"Actions by the Initiator"},{id:"actions-by-the-approver",depth:3,title:"Actions by the Approver"},{id:"approval-center-block",depth:2,title:"Approval Center Block"}],fs=[{value:"In the data details pop-up for a submitted item, an approval block can be configured to display the relevant approval records and provide entry points for processing them:",paraId:0,tocIndex:1},{value:"The approval block displays the basic application information and approval history. The initiator can view the details of their submitted application within the pop-up. If retraction is enabled and the process is still in its initial approval stage\u2014before any approver has taken action\u2014the initiator can withdraw the application:",paraId:1,tocIndex:2},{value:"If the initiator withdraws the application, the withdrawal record will appear in the approval block. By clicking on it, the application pop-up will reopen:",paraId:2,tocIndex:2},{value:"The pop-up's content remains unchanged, allowing the initiator to make adjustments and resubmit:",paraId:3,tocIndex:2},{value:'Approvers can also review the approval content through this block. In the processing history, if the logged-in user is one of the persons responsible for a node, a "View" button will appear in the details column. Clicking it will open the approval pop-up:',paraId:4,tocIndex:3},{value:"The pop-up will display the approver's interface for that approval node, typically including the approval details and an action bar:",paraId:5,tocIndex:3},{value:"Approvers can take actions such as approve, reject, or return within the pop-up. After an action is taken, a corresponding record will be added to the processing history. If the action is a return, the initiator can modify the application and resubmit it:",paraId:6,tocIndex:3},{value:"Approving or rejecting will trigger the corresponding status based on the node's configured rules:",paraId:7,tocIndex:3},{value:'The approval plugin offers two global blocks for centrally managing approval processes: "Initiations" and "Todos":',paraId:8,tocIndex:4},{value:`The "Initiations" block provides the initiator's perspective, allowing the user to initiate a new approval from the block's action bar:`,paraId:9,tocIndex:4},{value:'If the approval trigger is configured "Initiate and approve in both data blocks and global approval blocks", the corresponding approval process will appear in the drop-down menu under the "Initiate" button.',paraId:10,tocIndex:4},{value:"Users can also monitor the status of approvals they have initiated:",paraId:11,tocIndex:4},{value:`Clicking "View" opens a pop-up similar to the approval block in data details. The key difference is that the initiator's submission and the approval history are displayed on separate tabs:`,paraId:12,tocIndex:4},{value:`The "Todos" block serves the approver's perspective, allowing users to view pending approvals. Clicking the corresponding "View" button opens a processing pop-up, similar to the approval block in data details, with the distinction that the approver's form and the approval history are shown on separate tabs:`,paraId:13,tocIndex:4},{value:"If the approval has already been processed, the submitted content is displayed as is and cannot be modified.",paraId:14,tocIndex:4}],xs={},Di={title:"Field Component",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/field-component.md",lastUpdated:173254844e4,description:"Certain fields support multiple components, allowing us to select the most appropriate one to display the field\u2019s value. For instance, the URL component can be switched to a Preview component."},Oi=[{id:"field-component",depth:1,title:"Field Component"},{id:"introduction",depth:2,title:"Introduction"}],gs=[{value:"Certain fields support multiple components, allowing us to select the most appropriate one to display the field\u2019s value. For instance, the ",paraId:0,tocIndex:1},{value:"URL",paraId:0,tocIndex:1},{value:" component can be switched to a ",paraId:0,tocIndex:1},{value:"Preview",paraId:0,tocIndex:1},{value:" component.",paraId:0,tocIndex:1},{value:"If you need to expand more components, referring to ",paraId:1,tocIndex:1},{value:"Expand Value Field Components",paraId:2,tocIndex:1},{value:"\u3002",paraId:1,tocIndex:1}],bs={},Fl={title:"MySQL \u5982\u4F55\u542F\u7528 federated \u5F15\u64CE",toc:"menu",filename:"docs/en-US/manual/collection/collection-fdw/enable-federated.md",lastUpdated:173254844e4,description:"MySQL \u6570\u636E\u5E93\u9ED8\u8BA4\u6CA1\u6709\u5F00\u542F federated \u6A21\u5757\uFF0C\u9700\u8981\u4FEE\u6539 my.cnf \u914D\u7F6E\uFF0C\u5982\u679C\u662F docker \u7248\u672C\uFF0C\u53EF\u4EE5\u901A\u8FC7 volumes \u6765\u5904\u7406\u6269\u5C55\u7684\u60C5\u51B5\uFF1A"},ys=[{id:"mysql-\u5982\u4F55\u542F\u7528-federated-\u5F15\u64CE",depth:1,title:"MySQL \u5982\u4F55\u542F\u7528 federated \u5F15\u64CE"}],ws=[{value:"MySQL \u6570\u636E\u5E93\u9ED8\u8BA4\u6CA1\u6709\u5F00\u542F federated \u6A21\u5757\uFF0C\u9700\u8981\u4FEE\u6539 my.cnf \u914D\u7F6E\uFF0C\u5982\u679C\u662F docker \u7248\u672C\uFF0C\u53EF\u4EE5\u901A\u8FC7 volumes \u6765\u5904\u7406\u6269\u5C55\u7684\u60C5\u51B5\uFF1A",paraId:0,tocIndex:0},{value:`mysql: image: mysql:8.1.0 volumes: - ./storage/mysql-conf:/etc/mysql/conf.d @@ -2106,7 +2135,7 @@ foreignKey?} federated `,paraId:3,tocIndex:0},{value:"\u91CD\u542F mysql",paraId:4,tocIndex:0},{value:`docker compose up -d mysql `,paraId:5,tocIndex:0},{value:"\u67E5\u770B federated \u662F\u5426\u5DF2\u7ECF\u6FC0\u6D3B",paraId:6,tocIndex:0},{value:`show engines -`,paraId:7,tocIndex:0}],Ri={},ks={title:"\u6587\u4EF6\u8868",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/file/index.md",lastUpdated:1732240239e3,description:"\u6587\u4EF6\u8868\u6570\u636E\u8868\u6A21\u677F\u901A\u8FC7 File manager \u63D2\u4EF6\u63D0\u4F9B"},Bl=[{id:"\u6587\u4EF6\u8868",depth:1,title:"\u6587\u4EF6\u8868"}],Ss=[{value:"\u6587\u4EF6\u8868\u6570\u636E\u8868\u6A21\u677F\u901A\u8FC7 File manager \u63D2\u4EF6\u63D0\u4F9B",paraId:0,tocIndex:0},{value:"\u652F\u6301\u81EA\u5B9A\u4E49\u6269\u5C55\u6587\u4EF6\u5B58\u50A8\u7C7B\u578B",paraId:1,tocIndex:0}],Fr={},gu={title:"\u6811\u8868",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/tree/index.md",lastUpdated:1732240239e3,description:"\u548C\u666E\u901A\u8868\u4E00\u6837\u652F\u6301\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u6570\u636E\u8868\u7684\u884C\u4E3A"},bu=[{id:"\u6811\u8868",depth:1,title:"\u6811\u8868"},{id:"\u5728\u533A\u5757\u4E2D\u4F7F\u7528",depth:2,title:"\u5728\u533A\u5757\u4E2D\u4F7F\u7528"}],Mi=[{value:"\u548C\u666E\u901A\u8868\u4E00\u6837\u652F\u6301\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u6570\u636E\u8868\u7684\u884C\u4E3A",paraId:0,tocIndex:0},{value:"\u6811\u8868\u6A21\u677F\u7684\u9884\u5B9A\u4E49\u5B57\u6BB5",paraId:1,tocIndex:0},{value:`[ +`,paraId:7,tocIndex:0}],Ri={},ks={title:"\u6587\u4EF6\u8868",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/file/index.md",lastUpdated:173254844e4,description:"\u6587\u4EF6\u8868\u6570\u636E\u8868\u6A21\u677F\u901A\u8FC7 File manager \u63D2\u4EF6\u63D0\u4F9B"},Bl=[{id:"\u6587\u4EF6\u8868",depth:1,title:"\u6587\u4EF6\u8868"}],Ss=[{value:"\u6587\u4EF6\u8868\u6570\u636E\u8868\u6A21\u677F\u901A\u8FC7 File manager \u63D2\u4EF6\u63D0\u4F9B",paraId:0,tocIndex:0},{value:"\u652F\u6301\u81EA\u5B9A\u4E49\u6269\u5C55\u6587\u4EF6\u5B58\u50A8\u7C7B\u578B",paraId:1,tocIndex:0}],Fr={},gu={title:"\u6811\u8868",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/tree/index.md",lastUpdated:173254844e4,description:"\u548C\u666E\u901A\u8868\u4E00\u6837\u652F\u6301\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u6570\u636E\u8868\u7684\u884C\u4E3A"},bu=[{id:"\u6811\u8868",depth:1,title:"\u6811\u8868"},{id:"\u5728\u533A\u5757\u4E2D\u4F7F\u7528",depth:2,title:"\u5728\u533A\u5757\u4E2D\u4F7F\u7528"}],Mi=[{value:"\u548C\u666E\u901A\u8868\u4E00\u6837\u652F\u6301\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u6570\u636E\u8868\u7684\u884C\u4E3A",paraId:0,tocIndex:0},{value:"\u6811\u8868\u6A21\u677F\u7684\u9884\u5B9A\u4E49\u5B57\u6BB5",paraId:1,tocIndex:0},{value:`[ { interface: 'integer', name: 'parentId', @@ -2130,15 +2159,15 @@ federated onDelete: 'CASCADE', }, ] -`,paraId:2,tocIndex:0},{value:"\u6811\u8868\u521B\u5EFA\u540E\u521D\u59CB\u5316\u5B57\u6BB5",paraId:3,tocIndex:0},{value:"\u6811\u8868\u6570\u636E\u8868\u6A21\u677F\u662F\u901A\u8FC7\u81EA\u5173\u8054\u5B57\u6BB5\u5B9E\u73B0\u6811\u5F62\u7ED3\u6784\u7684\u8BBE\u8BA1",paraId:4,tocIndex:0},{value:'\u7236\u8282\u70B9\u5173\u8054\u5B57\u6BB5\uFF08Many to One\uFF09\uFF1A\u901A\u5E38\u79F0\u4E3A "Parent" \u5B57\u6BB5\uFF0C\u5B83\u4E0E\u540C\u4E00\u8868\u4E2D\u7684\u5176\u4ED6\u8BB0\u5F55\u5EFA\u7ACB\u5173\u8054\uFF0C\u8868\u793A\u6BCF\u4E2A\u8282\u70B9\u7684\u7236\u8282\u70B9\u3002',paraId:5,tocIndex:0},{value:'\u5B50\u8282\u70B9\u5173\u8054\u5B57\u6BB5\uFF08One to Many\uFF09\uFF1A\u901A\u5E38\u79F0\u4E3A "Children" \u5B57\u6BB5\uFF0C\u5B83\u8868\u793A\u6BCF\u4E2A\u8282\u70B9\u53EF\u4EE5\u6709\u591A\u4E2A\u5B50\u8282\u70B9',paraId:5,tocIndex:0},{value:"\u6811\u8868\u683C :\u9ED8\u8BA4\u5F00\u542F\uFF08\u7981\u7528\u65F6\uFF0C\u6570\u636E\u5C06\u5E73\u94FA\u8FD4\u56DE\uFF09",paraId:6,tocIndex:1},{value:"\u6DFB\u52A0\u5B50\u8BB0\u5F55\uFF1A\u4E3A\u5F53\u524D\u8BB0\u5F55\u6DFB\u52A0\u5B50\u8BB0\u5F55",paraId:6,tocIndex:1}],Qo={},yu={title:"\u6570\u636E\u5E93\u89C6\u56FE",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/view/index.md",lastUpdated:1732240239e3,description:"\u6570\u636E\u5E93\u89C6\u56FE\u662F\u6570\u636E\u5E93\u4E2D\u7684\u865A\u62DF\u8868\uFF0C\u5B83\u57FA\u4E8E\u4E00\u4E2A\u6216\u591A\u4E2A\u6570\u636E\u5E93\u8868\u7684\u67E5\u8BE2\u7ED3\u679C\u751F\u6210\uFF0C\u5177\u6709\u4E0E\u8868\u76F8\u4F3C\u7684\u7ED3\u6784\uFF0C\u4F46\u4E0D\u5B58\u50A8\u5B9E\u9645\u6570\u636E\u3002\u6570\u636E\u5E93\u89C6\u56FE\u5141\u8BB8\u7528\u6237\u4EE5\u66F4\u7B80\u5355\u3001\u66F4\u62BD\u8C61\u7684\u65B9\u5F0F\u8BBF\u95EE\u548C\u64CD\u4F5C\u6570\u636E"},mt=[{id:"\u6570\u636E\u5E93\u89C6\u56FE",depth:1,title:"\u6570\u636E\u5E93\u89C6\u56FE"},{id:"\u57FA\u7840\u6982\u5FF5",depth:2,title:"\u57FA\u7840\u6982\u5FF5"},{id:"\u521B\u5EFA\u89C6\u56FE\u6570\u636E\u8868",depth:2,title:"\u521B\u5EFA\u89C6\u56FE\u6570\u636E\u8868"},{id:"\u89C6\u56FE\u6570\u636E\u8868\u5728-ui-\u4E2D\u7684\u4F7F\u7528",depth:2,title:"\u89C6\u56FE\u6570\u636E\u8868\u5728 UI \u4E2D\u7684\u4F7F\u7528"}],Od=[{value:"\u6570\u636E\u5E93\u89C6\u56FE\u662F\u6570\u636E\u5E93\u4E2D\u7684\u865A\u62DF\u8868\uFF0C\u5B83\u57FA\u4E8E\u4E00\u4E2A\u6216\u591A\u4E2A\u6570\u636E\u5E93\u8868\u7684\u67E5\u8BE2\u7ED3\u679C\u751F\u6210\uFF0C\u5177\u6709\u4E0E\u8868\u76F8\u4F3C\u7684\u7ED3\u6784\uFF0C\u4F46\u4E0D\u5B58\u50A8\u5B9E\u9645\u6570\u636E\u3002\u6570\u636E\u5E93\u89C6\u56FE\u5141\u8BB8\u7528\u6237\u4EE5\u66F4\u7B80\u5355\u3001\u66F4\u62BD\u8C61\u7684\u65B9\u5F0F\u8BBF\u95EE\u548C\u64CD\u4F5C\u6570\u636E",paraId:0,tocIndex:1},{value:"\u5C06\u6570\u636E\u5E93\u4E2D\u7684\u89C6\u56FE\u4E0E Collection \u8FDE\u63A5\u662F NocoBase \u63D0\u4F9B\u7684\u4E00\u79CD\u6709\u6548\u5EFA\u8868\u65B9\u5F0F\u3002\u901A\u8FC7\u5728\u6570\u636E\u5E93\u4E2D\u521B\u5EFA\u89C6\u56FE\uFF0C\u53EF\u4EE5\u5728 Collection \u7BA1\u7406\u4E2D\u5F15\u7528\u5E76\u6620\u5C04\u4E3A\u6570\u636E\u8868\uFF0C\u7279\u522B\u9002\u7528\u4E8E\u7EDF\u8BA1\u573A\u666F\u3002\u8FD9\u79CD\u65B9\u5F0F\u4E0D\u4EC5\u63D0\u9AD8\u4E86\u6570\u636E\u8868\u7684\u53EF\u7EF4\u62A4\u6027\uFF0C\u5728\u4E0D\u540C\u5E94\u7528\u573A\u666F\u4E2D\u8FD8\u80FD\u7075\u6D3B\u4F7F\u7528\u3002",paraId:1,tocIndex:1},{value:"\u4E0B\u9762\u4EE5\u8BA2\u5355\u7BA1\u7406\u7CFB\u7EDF\u4E2D\u5E38\u89C1\u7684\u7EDF\u8BA1\u4E1A\u52A1\u573A\u666F\u4E3A\u4F8B",paraId:2,tocIndex:1},{value:"\u8BA2\u5355\u8868\u548C\u5BA2\u6237\u8868\u6709\u5173\u8054\u5173\u7CFB\uFF0C\u7EDF\u8BA1\u6BCF\u4E2A\u5BA2\u6237\u7684\u9500\u552E\u91D1\u989D\u6C47\u603B\u548C\u9500\u552E\u6570\u91CF\u6C47\u603B\uFF0C\u5C55\u793A\u5B57\u6BB5\uFF1A\u5BA2\u6237\u540D\u79F0\u3001\u5BA2\u6237\u624B\u673A\u53F7\u3001\u9500\u552E\u91D1\u989D\u6C47\u603B\uFF0C\u9500\u552E\u6570\u91CF\u6C47\u603B",paraId:3,tocIndex:1},{value:"\u5728\u6570\u636E\u5E93\u4E2D\u521B\u5EFA\u89C6\u56FE\uFF1A",paraId:4,tocIndex:1},{value:`SELECT t2.customer_name, +`,paraId:2,tocIndex:0},{value:"\u6811\u8868\u521B\u5EFA\u540E\u521D\u59CB\u5316\u5B57\u6BB5",paraId:3,tocIndex:0},{value:"\u6811\u8868\u6570\u636E\u8868\u6A21\u677F\u662F\u901A\u8FC7\u81EA\u5173\u8054\u5B57\u6BB5\u5B9E\u73B0\u6811\u5F62\u7ED3\u6784\u7684\u8BBE\u8BA1",paraId:4,tocIndex:0},{value:'\u7236\u8282\u70B9\u5173\u8054\u5B57\u6BB5\uFF08Many to One\uFF09\uFF1A\u901A\u5E38\u79F0\u4E3A "Parent" \u5B57\u6BB5\uFF0C\u5B83\u4E0E\u540C\u4E00\u8868\u4E2D\u7684\u5176\u4ED6\u8BB0\u5F55\u5EFA\u7ACB\u5173\u8054\uFF0C\u8868\u793A\u6BCF\u4E2A\u8282\u70B9\u7684\u7236\u8282\u70B9\u3002',paraId:5,tocIndex:0},{value:'\u5B50\u8282\u70B9\u5173\u8054\u5B57\u6BB5\uFF08One to Many\uFF09\uFF1A\u901A\u5E38\u79F0\u4E3A "Children" \u5B57\u6BB5\uFF0C\u5B83\u8868\u793A\u6BCF\u4E2A\u8282\u70B9\u53EF\u4EE5\u6709\u591A\u4E2A\u5B50\u8282\u70B9',paraId:5,tocIndex:0},{value:"\u6811\u8868\u683C :\u9ED8\u8BA4\u5F00\u542F\uFF08\u7981\u7528\u65F6\uFF0C\u6570\u636E\u5C06\u5E73\u94FA\u8FD4\u56DE\uFF09",paraId:6,tocIndex:1},{value:"\u6DFB\u52A0\u5B50\u8BB0\u5F55\uFF1A\u4E3A\u5F53\u524D\u8BB0\u5F55\u6DFB\u52A0\u5B50\u8BB0\u5F55",paraId:6,tocIndex:1}],Qo={},yu={title:"\u6570\u636E\u5E93\u89C6\u56FE",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/view/index.md",lastUpdated:173254844e4,description:"\u6570\u636E\u5E93\u89C6\u56FE\u662F\u6570\u636E\u5E93\u4E2D\u7684\u865A\u62DF\u8868\uFF0C\u5B83\u57FA\u4E8E\u4E00\u4E2A\u6216\u591A\u4E2A\u6570\u636E\u5E93\u8868\u7684\u67E5\u8BE2\u7ED3\u679C\u751F\u6210\uFF0C\u5177\u6709\u4E0E\u8868\u76F8\u4F3C\u7684\u7ED3\u6784\uFF0C\u4F46\u4E0D\u5B58\u50A8\u5B9E\u9645\u6570\u636E\u3002\u6570\u636E\u5E93\u89C6\u56FE\u5141\u8BB8\u7528\u6237\u4EE5\u66F4\u7B80\u5355\u3001\u66F4\u62BD\u8C61\u7684\u65B9\u5F0F\u8BBF\u95EE\u548C\u64CD\u4F5C\u6570\u636E"},mt=[{id:"\u6570\u636E\u5E93\u89C6\u56FE",depth:1,title:"\u6570\u636E\u5E93\u89C6\u56FE"},{id:"\u57FA\u7840\u6982\u5FF5",depth:2,title:"\u57FA\u7840\u6982\u5FF5"},{id:"\u521B\u5EFA\u89C6\u56FE\u6570\u636E\u8868",depth:2,title:"\u521B\u5EFA\u89C6\u56FE\u6570\u636E\u8868"},{id:"\u89C6\u56FE\u6570\u636E\u8868\u5728-ui-\u4E2D\u7684\u4F7F\u7528",depth:2,title:"\u89C6\u56FE\u6570\u636E\u8868\u5728 UI \u4E2D\u7684\u4F7F\u7528"}],Od=[{value:"\u6570\u636E\u5E93\u89C6\u56FE\u662F\u6570\u636E\u5E93\u4E2D\u7684\u865A\u62DF\u8868\uFF0C\u5B83\u57FA\u4E8E\u4E00\u4E2A\u6216\u591A\u4E2A\u6570\u636E\u5E93\u8868\u7684\u67E5\u8BE2\u7ED3\u679C\u751F\u6210\uFF0C\u5177\u6709\u4E0E\u8868\u76F8\u4F3C\u7684\u7ED3\u6784\uFF0C\u4F46\u4E0D\u5B58\u50A8\u5B9E\u9645\u6570\u636E\u3002\u6570\u636E\u5E93\u89C6\u56FE\u5141\u8BB8\u7528\u6237\u4EE5\u66F4\u7B80\u5355\u3001\u66F4\u62BD\u8C61\u7684\u65B9\u5F0F\u8BBF\u95EE\u548C\u64CD\u4F5C\u6570\u636E",paraId:0,tocIndex:1},{value:"\u5C06\u6570\u636E\u5E93\u4E2D\u7684\u89C6\u56FE\u4E0E Collection \u8FDE\u63A5\u662F NocoBase \u63D0\u4F9B\u7684\u4E00\u79CD\u6709\u6548\u5EFA\u8868\u65B9\u5F0F\u3002\u901A\u8FC7\u5728\u6570\u636E\u5E93\u4E2D\u521B\u5EFA\u89C6\u56FE\uFF0C\u53EF\u4EE5\u5728 Collection \u7BA1\u7406\u4E2D\u5F15\u7528\u5E76\u6620\u5C04\u4E3A\u6570\u636E\u8868\uFF0C\u7279\u522B\u9002\u7528\u4E8E\u7EDF\u8BA1\u573A\u666F\u3002\u8FD9\u79CD\u65B9\u5F0F\u4E0D\u4EC5\u63D0\u9AD8\u4E86\u6570\u636E\u8868\u7684\u53EF\u7EF4\u62A4\u6027\uFF0C\u5728\u4E0D\u540C\u5E94\u7528\u573A\u666F\u4E2D\u8FD8\u80FD\u7075\u6D3B\u4F7F\u7528\u3002",paraId:1,tocIndex:1},{value:"\u4E0B\u9762\u4EE5\u8BA2\u5355\u7BA1\u7406\u7CFB\u7EDF\u4E2D\u5E38\u89C1\u7684\u7EDF\u8BA1\u4E1A\u52A1\u573A\u666F\u4E3A\u4F8B",paraId:2,tocIndex:1},{value:"\u8BA2\u5355\u8868\u548C\u5BA2\u6237\u8868\u6709\u5173\u8054\u5173\u7CFB\uFF0C\u7EDF\u8BA1\u6BCF\u4E2A\u5BA2\u6237\u7684\u9500\u552E\u91D1\u989D\u6C47\u603B\u548C\u9500\u552E\u6570\u91CF\u6C47\u603B\uFF0C\u5C55\u793A\u5B57\u6BB5\uFF1A\u5BA2\u6237\u540D\u79F0\u3001\u5BA2\u6237\u624B\u673A\u53F7\u3001\u9500\u552E\u91D1\u989D\u6C47\u603B\uFF0C\u9500\u552E\u6570\u91CF\u6C47\u603B",paraId:3,tocIndex:1},{value:"\u5728\u6570\u636E\u5E93\u4E2D\u521B\u5EFA\u89C6\u56FE\uFF1A",paraId:4,tocIndex:1},{value:`SELECT t2.customer_name, t2.mobile_number , sum(t1.amount) AS sum_amount, sum(t1.quantity) AS sum_quantity FROM Orders t1 JOIN Customers t2 ON t1.f_6ln1f7tqn9b = t2.id GROUP BY t2.customer_name, t2.mobile_number; -`,paraId:5,tocIndex:1},{value:"\u6570\u636E\u5E93\u4E2D\u7684\u89C6\u56FE\uFF1A",paraId:6,tocIndex:1},{value:"\u5728 NocoBase \u4E2D\u5C06\u4E0A\u9762\u89C6\u56FE\u6620\u5C04\u4E3A\u6570\u636E\u8868\uFF08Collection\uFF09\u4F7F\u7528",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u76EE\u6807\u89C6\u56FE",paraId:8,tocIndex:2},{value:"\u652F\u6301\u81EA\u5B9A\u4E49\u89C6\u56FE\u7684\u5217\u540D\uFF08\u5B57\u6BB5\u540D\uFF09",paraId:9,tocIndex:2},{value:"\u6765\u6E90\u5B57\u6BB5\uFF1A\u5373\u6E90\u8868\u7684\u5143\u5B57\u6BB5\uFF0C\u5F53\u5B57\u6BB5\u672A\u89E3\u6790\u51FA\u6E90\u8868\u6765\u6E90\u5B57\u6BB5\u65F6\uFF08\u805A\u5408\u7684\u5B57\u6BB5\u65E0\u6765\u6E90\u5B57\u6BB5\uFF09\uFF0C\u53EF\u6307\u5B9A\u5B57\u6BB5\u7684 interface",paraId:9,tocIndex:2},{value:"\u89C6\u56FE\u6570\u636E\u662F\u5426\u652F\u6301\u589E\u5220\u6539\u64CD\u4F5C\uFF08\u9ED8\u8BA4\u4E0D\u652F\u6301\uFF09",paraId:9,tocIndex:2},{value:"\u5B8C\u6574\u7684\u793A\u4F8B\u914D\u7F6E\u6D41\u7A0B\u5982\u56FE",paraId:10,tocIndex:2},{value:"Sync from database \u652F\u6301\u8C03\u6574\u89C6\u56FE\u8868\u914D\u7F6E\uFF08\u82E5\u6570\u636E\u5E93\u4E2D\u89C6\u56FE\u8FDB\u884C\u4E86\u8C03\u6574\uFF0C\u53EF\u91CD\u65B0\u8FDE\u63A5\u89C6\u56FE\u540C\u6B65\u6570\u636E\uFF09",paraId:11,tocIndex:2},{value:"\u5220\u9664\uFF1A\u8FD9\u91CC\u5220\u9664\u64CD\u4F5C\u4E0D\u4F1A\u5C06\u6E90\u8868\u5B57\u6BB5\u5220\u9664\uFF0C\u4EC5\u5220\u9664\u89C6\u56FE\u8868\u4E2D\u7684\u5B57\u6BB5",paraId:11,tocIndex:2},{value:"\u662F\u5426\u652F\u6301\u5BF9\u89C6\u56FE\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u64CD\u4F5C\uFF08\u9ED8\u8BA4\u4E0D\u542F\u7528\uFF09\uFF0C\u542F\u7528\u65F6\uFF0C\u5BF9\u5E94\u533A\u5757\u624D\u652F\u6301\u589E\u52A0\u3001\u5220\u9664\u7B49\u64CD\u4F5C",paraId:12,tocIndex:2},{value:"\u4F5C\u4E3A\u533A\u5757\u7684\u6570\u636E\u6E90",paraId:13,tocIndex:3},{value:"\u89C6\u56FE\u8868\u4E0E\u5176\u4ED6\u4EFB\u610F\u65B9\u5F0F\u521B\u5EFA\u7684\u6570\u636E\u8868\u4E00\u6837\u5728\u6240\u6709\u533A\u5757\u4E2D\u90FD\u80FD\u9009\u4E2D\u4F5C\u4E3A\u6570\u636E\u6E90",paraId:14,tocIndex:3}],jl={},Us={title:"\u6807\u7B7E",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/tag/index.md",lastUpdated:1732240239e3,description:"\u6807\u7B7E\u662F\u7528\u6765\u5728\u6570\u636E\u5C55\u793A\u4E2D\u66F4\u597D\u5730\u5206\u7C7B\u548C\u6807\u8BC6\u5173\u7CFB\u4FE1\u606F\u7684\u7EC4\u4EF6\u3002\u8BA9\u7528\u6237\u66F4\u8F7B\u677E\u5730\u8BC6\u522B\u4E0D\u540C\u7C7B\u522B\u7684\u6570\u636E\uFF0C\u63D0\u5347\u6D4F\u89C8\u6548\u7387\u548C\u6570\u636E\u7406\u89E3\u3002 \u5728\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u6A21\u578B\u4E2D\uFF0C\u4EFB\u52A1\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u4EFB\u52A1\u8FDB\u5EA6\u300D\uFF08\u4E00\u5BF9\u591A\uFF09"},wu=[{id:"\u6807\u7B7E",depth:1,title:"\u6807\u7B7E"}],ei=[{value:"\u6807\u7B7E\u662F\u7528\u6765\u5728\u6570\u636E\u5C55\u793A\u4E2D\u66F4\u597D\u5730\u5206\u7C7B\u548C\u6807\u8BC6\u5173\u7CFB\u4FE1\u606F\u7684\u7EC4\u4EF6\u3002\u8BA9\u7528\u6237\u66F4\u8F7B\u677E\u5730\u8BC6\u522B\u4E0D\u540C\u7C7B\u522B\u7684\u6570\u636E\uFF0C\u63D0\u5347\u6D4F\u89C8\u6548\u7387\u548C\u6570\u636E\u7406\u89E3\u3002 \u5728\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u6A21\u578B\u4E2D\uFF0C\u4EFB\u52A1\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u4EFB\u52A1\u8FDB\u5EA6\u300D\uFF08\u4E00\u5BF9\u591A\uFF09",paraId:0,tocIndex:0},{value:"\u9700\u8981\u914D\u7F6E\u6807\u7B7E\u7684\u989C\u8272\u5B57\u6BB5\uFF08\u4ECE\u76EE\u6807\u8868\u4E2D\u9009\u62E9\uFF09",paraId:1,tocIndex:0}],Li={},Hl={title:"\u590D\u5236",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/duplicate.md",lastUpdated:1732240239e3,description:"\u590D\u5236\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u590D\u5236\u4E00\u884C\u6570\u636E\u4EE5\u4FBF\u4E8E\u521B\u5EFA\u65B0\u7684\u6570\u636E\u8BB0\u5F55\uFF0C\u652F\u6301\u76F4\u63A5\u590D\u5236/\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199\u4E24\u79CD\u65B9\u5F0F"},Ps=[{id:"\u590D\u5236",depth:1,title:"\u590D\u5236"},{id:"\u76F4\u63A5\u590D\u5236",depth:4,title:"\u76F4\u63A5\u590D\u5236"},{id:"\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199",depth:4,title:"\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199"},{id:"\u590D\u5236\u5F15\u7528\u9884\u52A0\u8F7D\u7684\u8BF4\u660E",depth:4,title:"\u590D\u5236\u3001\u5F15\u7528\u3001\u9884\u52A0\u8F7D\u7684\u8BF4\u660E"},{id:"\u5173\u4E8E\u5168\u9009",depth:4,title:"\u5173\u4E8E\u5168\u9009"},{id:"\u6A21\u677F\u6570\u636E\u7684\u5904\u7406\u903B\u8F91",depth:4,title:"\u6A21\u677F\u6570\u636E\u7684\u5904\u7406\u903B\u8F91"},{id:"\u5982\u4F55\u7406\u89E3\u540C\u6B65\u8868\u5355\u5B57\u6BB5",depth:4,title:"\u5982\u4F55\u7406\u89E3\u540C\u6B65\u8868\u5355\u5B57\u6BB5"}],Ts=[{value:"\u590D\u5236\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u590D\u5236\u4E00\u884C\u6570\u636E\u4EE5\u4FBF\u4E8E\u521B\u5EFA\u65B0\u7684\u6570\u636E\u8BB0\u5F55\uFF0C\u652F\u6301\u76F4\u63A5\u590D\u5236/\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199\u4E24\u79CD\u65B9\u5F0F",paraId:0,tocIndex:0},{value:"\u9ED8\u8BA4\u4EE5\u76F4\u63A5\u590D\u5236\u7684\u65B9\u5F0F\u590D\u5236\u6570\u636E",paraId:1,tocIndex:1},{value:"\u76EE\u6807\u6570\u636E\u8868\uFF1A\u662F\u6307\u590D\u5236\u6DFB\u52A0\u7684\u76EE\u6807\u6570\u636E\u8868\uFF08\u5728\u7EE7\u627F\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u590D\u5236\u7ED9\u5B50\u8868\uFF0C\u76F4\u63A5\u590D\u5236\u53EA\u80FD\u590D\u5236\u6DFB\u52A0\u5230\u672C\u8868\uFF09",paraId:1,tocIndex:1},{value:"\u6A21\u7248\u5B57\u6BB5\uFF1A\u7528\u4E8E\u6307\u5B9A\u8981\u590D\u5236\u7684\u5B57\u6BB5\uFF0C\u53EF\u5168\u9009\uFF0C\u5FC5\u586B",paraId:1,tocIndex:1},{value:"\u5B8C\u6210\u914D\u7F6E\u540E\u70B9\u51FB\u6309\u94AE\u5373\u590D\u5236\u6570\u636E",paraId:2,tocIndex:1},{value:"\u914D\u7F6E\u7684\u6A21\u677F\u5B57\u6BB5\u4F5C\u4E3A\u5C06\u9ED8\u8BA4\u503C\u586B\u5145\u5230\u8868\u5355\u4E2D\uFF0C\u53EF\u4FEE\u6539\u540E\u63D0\u4EA4",paraId:3,tocIndex:2},{value:"\u53EF\u4EE5\u8BBE\u7F6E\u672C\u8868\u6216\u5B50\u8868\u4E3A\u590D\u5236\u6DFB\u52A0\u7684\u76EE\u6807\u8868",paraId:4,tocIndex:2},{value:"\u914D\u7F6E\u6A21\u677F\u5B57\u6BB5\uFF1A\u6A21\u677F\u5B57\u6BB5\u5C06\u4F5C\u4E3A\u9ED8\u8BA4\u503C\u586B\u5145\u5230\u8868\u5355\u4E2D\uFF0C\u53EA\u4F1A\u5E26\u51FA\u6709\u52FE\u9009\u7684\u5B57\u6BB5\u503C",paraId:5,tocIndex:2},{value:"\u300C\u8FD0\u5355\u300D\uFF08o2m\uFF09\u662F\u590D\u5236\u7684\u5173\u7CFB\uFF0C\u8C03\u6574\u5176\u5B57\u6BB5\u7EC4\u4EF6\u4E3A\u5B50\u8868\u5355\uFF0C\u53EF\u914D\u7F6E\u5B50\u8868\u5355\u4E2D\u7684\u5B57\u6BB5",paraId:6,tocIndex:2},{value:"\u540C\u6B65\u8868\u5355\u5B57\u6BB5\uFF1A\u5B8C\u6210\u8868\u5355\u914D\u7F6E\u540E\u53EF\u70B9\u51FB\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\uFF0C\u4F1A\u81EA\u52A8\u89E3\u6790\u5C06\u8868\u5355\u4E2D\u5DF2\u914D\u7F6E\u7684\u5B57\u6BB5\u5747\u52FE\u9009\u4E0A\uFF08\u6BCF\u6B21\u8868\u5355\u5B57\u6BB5\u914D\u7F6E\u4FEE\u6539\u4E4B\u540E\u9700\u8981\u624B\u52A8\u518D\u540C\u6B65\u4E00\u6B21\uFF09\uFF0C\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u540E\u53EF\u81EA\u5B9A\u4E49\u8C03\u6574\u6A21\u677F\u5B57\u6BB5",paraId:7,tocIndex:2},{value:"\u70B9\u51FB\u590D\u5236\u64CD\u4F5C\u4F1A\u6253\u5F00\u5F39\u7A97\uFF0C\u5E76\u6309\u7167\u6A21\u677F\u5B57\u6BB5\u5E26\u51FA\u6A21\u677F\u6570\u636E\u4F5C\u4E3A\u8868\u5355\u9ED8\u8BA4\u503C\u586B\u5145\uFF0C\u53EF\u4FEE\u6539\u6570\u636E\u540E\u63D0\u4EA4\u5B8C\u6210\u6570\u636E\u590D\u5236",paraId:8,tocIndex:2},{value:"\u5982\u4E0B\u56FE\u5B8C\u6574\u793A\u4F8B\u4E3A\u8BA2\u5355\u5217\u8868\u914D\u7F6E\u590D\u5236\u64CD\u4F5C",paraId:9,tocIndex:2},{value:"\u5BF9\u4E8E\u4E0D\u540C\u5B57\u6BB5\uFF08\u4E0D\u540C\u5173\u7CFB\u7C7B\u578B\uFF09\u6709\u4E0D\u540C\u7684\u5904\u7406\u903B\u8F91\uFF08\u590D\u5236\u3001\u5F15\u7528\u3001\u9884\u52A0\u8F7D\uFF09\uFF0C\u5176\u4E2D\u8C03\u6574\u5173\u7CFB\u5B57\u6BB5\u7684\u5B57\u6BB5\u7EC4\u4EF6\u4E2D\u4E5F\u4F1A\u5F71\u54CD\u5904\u7406\u903B\u8F91\uFF08Select \u548C Record pikcer \u7528\u4E8E\u5904\u7406\u5F15\u7528\u5173\u7CFB\uFF0CSub-form \u548C Sub-table \u7528\u4E8E\u5904\u7406\u590D\u5236\u5173\u7CFB\uFF09",paraId:10,tocIndex:3},{value:"\u590D\u5236",paraId:11,tocIndex:3},{value:"\u666E\u901A\u5B57\u6BB5\u662F\u590D\u5236",paraId:12,tocIndex:3},{value:"hasOne \u548C hasMany \u7684\u5173\u7CFB\u5B57\u6BB5\u53EA\u80FD\u662F\u590D\u5236\uFF08\u5373\u8BE5\u7C7B\u578B\u7684\u5173\u7CFB\u5B57\u6BB5\u4E0D\u80FD\u7528 Select\u3001Record picker \u4F5C\u4E3A\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u5E94\u4F7F\u7528 Sub-form\u3001Sub-table \u7B49\uFF09",paraId:13,tocIndex:3},{value:"hasOne \u548C hasMany \u5B57\u6BB5\u7EC4\u4EF6\u7684\u53D8\u66F4\u4E0D\u4F1A\u6539\u53D8\u5904\u7406\u903B\u8F91\uFF08\u590D\u5236\uFF09",paraId:14,tocIndex:3},{value:"\u590D\u5236\u7684\u5173\u7CFB\u5B57\u6BB5\uFF0C\u6240\u6709\u7684\u5B50\u5B57\u6BB5\u90FD\u53EF\u4EE5\u88AB\u9009\u62E9",paraId:14,tocIndex:3},{value:"\u5F15\u7528",paraId:15,tocIndex:3},{value:"belongsTo \u548C belongsToMany \u662F\u5F15\u7528",paraId:16,tocIndex:3},{value:"\u5F15\u7528\u662F\u53EF\u80FD\u53D8\u6210\u590D\u5236\u7684\uFF0C\u6BD4\u5982\u5B57\u6BB5\u7EC4\u4EF6\u4ECE select \u8C03\u6574\u4E3A sub-form \u540E\uFF0C\u5173\u7CFB\u5C31\u4ECE\u5F15\u7528\u53D8\u6210\u4E86\u590D\u5236\uFF08\u53D8\u6210\u590D\u5236\u4E4B\u540E\uFF0C\u6240\u6709\u7684\u5B50\u5B57\u6BB5\u90FD\u662F\u53EF\u9009\u7684\uFF09",paraId:16,tocIndex:3},{value:"\u9884\u52A0\u8F7D\uFF1A\u5F15\u7528\u5B57\u6BB5\u91CC\u7684\u5173\u7CFB\u5B57\u6BB5",paraId:17,tocIndex:3},{value:"\u5F15\u7528\u7684\u5173\u7CFB\u5B57\u6BB5\u4E0B\u7684\u5173\u7CFB\u5B57\u6BB5\u4E3A\u9884\u52A0\u8F7D",paraId:18,tocIndex:3},{value:"\u9884\u52A0\u8F7D\u7684\u5173\u7CFB\u5B57\u6BB5\u5728\u5B57\u6BB5\u7EC4\u4EF6\u53D8\u66F4\u540E\u53EF\u80FD\u53D8\u6210\u5F15\u7528\u6216\u8005\u590D\u5236",paraId:18,tocIndex:3},{value:"\u6240\u6709\u7684\u590D\u5236\u5B57\u6BB5\u90FD\u52FE\u9009\u4E0A",paraId:19,tocIndex:4},{value:"\u6240\u6709\u7684\u5F15\u7528\u5B57\u6BB5\u90FD\u52FE\u9009\u4E0A",paraId:19,tocIndex:4},{value:"\u6240\u6709\u7684\u5173\u7CFB\u7684 fk \u90FD\u4F1A\u8FC7\u6EE4\u6389",paraId:20,tocIndex:5},{value:"\u5982\u679C\u662F\u590D\u5236\u7684\u5173\u7CFB\u6570\u636E pk \u4E5F\u4F1A\u8FC7\u6EE4\u6389",paraId:20,tocIndex:5},{value:"\u5F15\u7528\u548C\u9884\u52A0\u8F7D\u6709 pk \u5B57\u6BB5",paraId:20,tocIndex:5},{value:"\u5728\u5927\u591A\u6570\u573A\u666F\u4E0B\uFF0C\u8868\u5355\u914D\u7F6E\u6D89\u53CA\u7684\u5B57\u6BB5\u975E\u5E38\u7E41\u591A\u3002\u5728\u5904\u7406\u8FD9\u79CD\u590D\u6742\u8868\u5355\u573A\u666F\u65F6\uFF0C\u624B\u52A8\u914D\u7F6E\u6A21\u677F\u5B57\u6BB5\u901A\u5E38\u4F1A\u53D8\u5F97\u975E\u5E38\u7E41\u7410\u3002\u4E3A\u4E86\u89E3\u51B3\u8FD9\u4E2A\u95EE\u9898\uFF0C\u5F15\u5165\u4E86\u4E00\u4E2A\u529F\u80FD\u5F3A\u5927\u7684\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\u3002\u8FD9\u4E2A\u6309\u94AE\u7684\u4F5C\u7528\u662F\u81EA\u52A8\u89E3\u6790\u8868\u5355\u5B57\u6BB5\u7684\u914D\u7F6E\uFF0C\u6839\u636E\u5B57\u6BB5\u7C7B\u578B\u548C\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u7684\u914D\u7F6E\u6765\u5904\u7406\u5B57\u6BB5\u590D\u5236\u903B\u8F91\uFF0C\u5305\u62EC\u590D\u5236\u3001\u5F15\u7528\u548C\u9884\u52A0\u8F7D\u3002\u5728\u8FD9\u4E2A\u8FC7\u7A0B\u4E2D\uFF0C\u5DF2\u7ECF\u914D\u7F6E\u597D\u7684\u5B57\u6BB5\u4F1A\u9ED8\u8BA4\u88AB\u52FE\u9009\u4E0A",paraId:21,tocIndex:6},{value:"\u6BCF\u5F53\u7528\u6237\u4FEE\u6539\u8868\u5355\u5B57\u6BB5\u914D\u7F6E\u4E4B\u540E\uFF0C\u7CFB\u7EDF\u4E0D\u4F1A\u81EA\u52A8\u540C\u6B65\u8FD9\u4E9B\u53D8\u5316\u3002\u56E0\u6B64\uFF0C\u7528\u6237\u9700\u8981\u624B\u52A8\u70B9\u51FB\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\uFF0C\u4EE5\u4FBF\u5C06\u6700\u65B0\u7684\u914D\u7F6E\u4FE1\u606F\u5E94\u7528\u5230\u6A21\u677F\u914D\u7F6E\u4E2D\u3002",paraId:22,tocIndex:6}],Cs={},Wl={title:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/dynamic-calculation.md",lastUpdated:1732240239e3,description:"\u533A\u522B\u4E8E\u666E\u901A\u7684\u8FD0\u7B97\u8282\u70B9\u53EA\u6267\u884C\u56FA\u5B9A\u7684\u8868\u8FBE\u5F0F\u8BA1\u7B97\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u53EF\u4EE5\u57FA\u4E8E\u6570\u636E\u5173\u8054\u7684\u8868\u8FBE\u5F0F\u8FDB\u884C\u4E0D\u540C\u7684\u8BA1\u7B97\u3002\u5176\u89E3\u51B3\u7684\u6838\u5FC3\u95EE\u9898\u662F\u7531\u4E8E\u666E\u901A\u7684\u516C\u5F0F\u5B57\u6BB5\u9488\u5BF9\u6570\u636E\u8868\u6240\u6709\u6570\u636E\u884C\u90FD\u53EA\u80FD\u4F7F\u7528\u540C\u4E00\u4E2A\u56FA\u5B9A\u516C\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u800C\u52A8\u6001\u8868\u8FBE\u5F0F\u53EF\u4EE5\u9488\u5BF9\u6570\u636E\u884C\u4E0D\u540C\u8BA1\u7B97\u65B9\u5F0F\u65F6\uFF0C\u5728\u5DE5\u4F5C\u6D41\u4E2D\u8FDB\u884C\u5904\u7406\u4EE5\u8FBE\u6210\u52A8\u6001\u8BA1\u7B97\u7684\u76EE\u6807\u3002"},$l=[{id:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97",depth:1,title:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97"},{id:"\u51C6\u5907",depth:2,title:"\u51C6\u5907"},{id:"\u521B\u5EFA\u8868\u8FBE\u5F0F\u6A21\u677F\u8868",depth:3,title:"\u521B\u5EFA\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868"},{id:"\u5F55\u5165\u8868\u8FBE\u5F0F\u6570\u636E",depth:3,title:"\u5F55\u5165\u8868\u8FBE\u5F0F\u6570\u636E"},{id:"\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u8868\u8FBE\u5F0F\u6570\u636E\u5EFA\u7ACB\u5173\u8054",depth:3,title:"\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u8868\u8FBE\u5F0F\u6570\u636E\u5EFA\u7ACB\u5173\u8054"},{id:"\u6D41\u7A0B\u4E2D\u52A0\u8F7D\u76F8\u5E94\u7684\u6570\u636E",depth:3,title:"\u6D41\u7A0B\u4E2D\u52A0\u8F7D\u76F8\u5E94\u7684\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u52A8\u6001\u8868\u8FBE\u5F0F",depth:3,title:"\u52A8\u6001\u8868\u8FBE\u5F0F"},{id:"\u53D8\u91CF\u6570\u636E\u6E90",depth:3,title:"\u53D8\u91CF\u6570\u636E\u6E90"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],Ho=[{value:"\u533A\u522B\u4E8E\u666E\u901A\u7684\u8FD0\u7B97\u8282\u70B9\u53EA\u6267\u884C\u56FA\u5B9A\u7684\u8868\u8FBE\u5F0F\u8BA1\u7B97\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u53EF\u4EE5\u57FA\u4E8E\u6570\u636E\u5173\u8054\u7684\u8868\u8FBE\u5F0F\u8FDB\u884C\u4E0D\u540C\u7684\u8BA1\u7B97\u3002\u5176\u89E3\u51B3\u7684\u6838\u5FC3\u95EE\u9898\u662F\u7531\u4E8E\u666E\u901A\u7684\u516C\u5F0F\u5B57\u6BB5\u9488\u5BF9\u6570\u636E\u8868\u6240\u6709\u6570\u636E\u884C\u90FD\u53EA\u80FD\u4F7F\u7528\u540C\u4E00\u4E2A\u56FA\u5B9A\u516C\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u800C\u52A8\u6001\u8868\u8FBE\u5F0F\u53EF\u4EE5\u9488\u5BF9\u6570\u636E\u884C\u4E0D\u540C\u8BA1\u7B97\u65B9\u5F0F\u65F6\uFF0C\u5728\u5DE5\u4F5C\u6D41\u4E2D\u8FDB\u884C\u5904\u7406\u4EE5\u8FBE\u6210\u52A8\u6001\u8BA1\u7B97\u7684\u76EE\u6807\u3002",paraId:0,tocIndex:0},{value:"\u4F8B\u5982\u8BA2\u5355\u6570\u636E\u5728\u6240\u5C5E\u4E0D\u540C\u4EA7\u54C1\u5206\u7C7B\u4E0B\u4F7F\u7528\u4E0D\u540C\u7684\u7EDF\u8BA1\u516C\u5F0F\u6765\u8BA1\u7B97\u7279\u5B9A\u7684\u62A5\u8868\u6570\u636E\u3002",paraId:1,tocIndex:0},{value:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u7684\u4F7F\u7528\u4E0E\u5DE5\u4F5C\u6D41\u5176\u4ED6\u8F83\u4E3A\u7B80\u5355\u7684\u8282\u70B9\u4E0D\u540C\uFF0C\u6709\u51E0\u4E2A\u9700\u8981\u524D\u7F6E\u5B8C\u6210\u7684\u6B65\u9AA4\uFF1A",paraId:2,tocIndex:1},{value:"\u521B\u5EFA\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868\u3002",paraId:3,tocIndex:1},{value:"\u5F55\u5165\u8868\u8FBE\u5F0F\u6570\u636E\u3002",paraId:3,tocIndex:1},{value:"\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u8868\u8FBE\u5F0F\u6570\u636E\u5EFA\u7ACB\u5173\u8054\u3002",paraId:3,tocIndex:1},{value:"\u901A\u8FC7\u67E5\u8BE2\u8282\u70B9\u6216\u8005\u6570\u636E\u89E6\u53D1\u65F6\u7684\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E\u52A0\u8F7D\u7279\u5B9A\u4E1A\u52A1\u6570\u636E\u5173\u8054\u7684\u8868\u8FBE\u5F0F\u6570\u636E\u3002",paraId:3,tocIndex:1},{value:"\u4EE5\u4E0A\u6B65\u9AA4\u5B8C\u6210\u540E\uFF0C\u518D\u5BF9\u5DE5\u4F5C\u6D41\u914D\u7F6E\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u3002",paraId:4,tocIndex:1},{value:"\u5728\u5DE5\u4F5C\u6D41\u5185\u4F7F\u7528\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97\u8282\u70B9\u4E4B\u524D\uFF0C\u9700\u8981\u5148\u5728\u6570\u636E\u8868\u7BA1\u7406\u5DE5\u5177\u4E2D\u521B\u5EFA\u4E00\u5F20\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868\uFF0C\u7528\u4E8E\u5B58\u653E\u4E0D\u540C\u7684\u8868\u8FBE\u5F0F\uFF1A",paraId:5,tocIndex:2},{value:"\u7136\u540E\u521B\u5EFA\u4E00\u4E2A\u8868\u683C\u533A\u5757\u5BF9\u8BE5\u6A21\u677F\u8868\u6DFB\u52A0\u51E0\u6761\u516C\u5F0F\u6570\u636E\uFF0C\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868\u4E2D\u6BCF\u884C\u6570\u636E\u90FD\u53EF\u4EE5\u88AB\u7406\u89E3\u4E3A\u9488\u5BF9\u7279\u5B9A\u8868\u6570\u636E\u6A21\u578B\u7684\u4E00\u4E2A\u8BA1\u7B97\u89C4\u5219\u3002\u6BCF\u884C\u516C\u5F0F\u6570\u636E\u53EF\u4F7F\u7528\u4E0D\u540C\u6570\u636E\u8868\u7684\u6570\u636E\u6A21\u578B\u4E2D\u7684\u5B57\u6BB5\u503C\u4F5C\u4E3A\u53D8\u91CF\uFF0C\u7F16\u5199\u4E0D\u540C\u7684\u8868\u8FBE\u5F0F\u4F5C\u4E3A\u8BA1\u7B97\u89C4\u5219\uFF0C\u5F53\u7136\uFF0C\u4E5F\u53EF\u4EE5\u4F7F\u7528\u4E0D\u540C\u7684\u8BA1\u7B97\u5F15\u64CE\u3002",paraId:6,tocIndex:3},{value:"\u521B\u5EFA\u597D\u516C\u5F0F\u4EE5\u540E\u8FD8\u9700\u8981\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u516C\u5F0F\u8FDB\u884C\u5173\u8054\uFF0C\u5C06\u6BCF\u884C\u4E1A\u52A1\u6570\u636E\u76F4\u63A5\u5173\u8054\u516C\u5F0F\u6570\u636E\u884C\u4F1A\u6BD4\u8F83\u7E41\u7410\uFF0C\u6240\u4EE5\u901A\u5E38\u6211\u4EEC\u4F1A\u4F7F\u7528\u7C7B\u4F3C\u5206\u7C7B\u7684\u5143\u6570\u636E\u8868\u4E0E\u516C\u5F0F\u8868\u8FDB\u884C\u591A\u5BF9\u4E00\uFF08\u6216\u4E00\u5BF9\u4E00\uFF09\u5173\u8054\uFF0C\u518D\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u5206\u7C7B\u5143\u6570\u636E\u8FDB\u884C\u591A\u5BF9\u4E00\u7684\u5173\u8054\uFF0C\u90A3\u4E48\u5728\u521B\u5EFA\u4E1A\u52A1\u6570\u636E\u65F6\u53EA\u9700\u6307\u5B9A\u7279\u5B9A\u7684\u5206\u7C7B\u5143\u6570\u636E\uFF0C\u5373\u53EF\u5728\u540E\u7EED\u4F7F\u7528\u4E2D\u901A\u8FC7\u8FD9\u4E2A\u5173\u8054\u8DEF\u5F84\u627E\u5230\u5BF9\u5E94\u7684\u516C\u5F0F\u6570\u636E\u8FDB\u884C\u4F7F\u7528\u3002",paraId:7,tocIndex:4},{value:"\u6700\u540E\u6211\u4EEC\u9700\u8981\u5728\u7279\u5B9A\u4E1A\u52A1\u7684\u5DE5\u4F5C\u6D41\u4E2D\u52A0\u5165\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\uFF0C\u5176\u5C06\u5728\u6D41\u7A0B\u89E6\u53D1\u65F6\u6267\u884C\u5BF9\u5E94\u7684\u8BA1\u7B97\u3002",paraId:8,tocIndex:7},{value:` - `,paraId:9},{value:"\u4E0E\u666E\u901A\u8FD0\u7B97\u8282\u70B9\u7684\u8868\u8FBE\u5F0F\u9009\u9879\u4E0D\u540C\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u9700\u8981\u6839\u636E\u5DF2\u7ECF\u67E5\u8BE2\u51FA\u6765\u7684\u6570\u636E\u8FDB\u884C\u9009\u62E9\uFF0C\u800C\u4E0D\u662F\u76F4\u63A5\u5F55\u5165\u8868\u8FBE\u5F0F\u3002",paraId:10,tocIndex:8},{value:"\u540C\u65F6\u8FD8\u9700\u8981\u9009\u62E9\u8868\u8FBE\u5F0F\u4E2D\u53D8\u91CF\u6240\u9700\u8981\u4F7F\u7528\u7684\u6570\u636E\u8868\u6570\u636E\u884C\u5BF9\u8C61\uFF0C\u53EF\u4EE5\u4ECE\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u4E2D\u9009\u62E9\u5DF2\u7ECF\u63D0\u524D\u52A0\u8F7D\uFF08\u6216\u67E5\u8BE2\uFF09\u51FA\u6765\u7684\u7ED3\u679C\u5BF9\u8C61\u3002",paraId:11,tocIndex:9},{value:"\u4EE5\u5546\u54C1\u4E0B\u5355\u8FC7\u7A0B\u4E2D\u6839\u636E\u4E0D\u540C\u5546\u54C1\u8FDB\u884C\u4E0D\u540C\u4F18\u60E0\u89C4\u5219\u7684\u6700\u7EC8\u4EF7\u683C\u8BA1\u7B97\u4E3E\u4F8B\u3002",paraId:12,tocIndex:10},{value:"\u5EFA\u7ACB\u5546\u54C1\u8868\uFF1A",paraId:13,tocIndex:10},{value:"\u5B57\u6BB5\u540D",paraId:14,tocIndex:10},{value:"\u7C7B\u578B",paraId:14,tocIndex:10},{value:"\u5546\u54C1\u540D",paraId:14,tocIndex:10},{value:"\u6587\u672C",paraId:14,tocIndex:10},{value:"\u5546\u54C1\u539F\u4EF7",paraId:14,tocIndex:10},{value:"\u6570\u5B57",paraId:14,tocIndex:10},{value:"\u4F18\u60E0\u89C4\u5219",paraId:14,tocIndex:10},{value:"belongsTo",paraId:14,tocIndex:10},{value:"\uFF08\u4F18\u60E0\u89C4\u5219\u8868\uFF09",paraId:14,tocIndex:10},{value:"\u5EFA\u7ACB\u4F18\u60E0\u89C4\u5219\u8868\uFF08\u4F7F\u7528\u8868\u8FBE\u5F0F\u8868\u6A21\u677F\u521B\u5EFA\uFF09\uFF1A",paraId:15,tocIndex:10},{value:"\u5B57\u6BB5\u540D",paraId:16,tocIndex:10},{value:"\u7C7B\u578B",paraId:16,tocIndex:10},{value:"\u89C4\u5219\u540D\u79F0",paraId:16,tocIndex:10},{value:"\u6587\u672C",paraId:16,tocIndex:10},{value:"\u6570\u636E\u8868",paraId:16,tocIndex:10},{value:"\u5355\u9009\uFF08\u6570\u636E\u8868\uFF09",paraId:16,tocIndex:10},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:16,tocIndex:10},{value:"\u5355\u9009\uFF08mathjs/formulajs\uFF09",paraId:16,tocIndex:10},{value:"\u8868\u8FBE\u5F0F",paraId:16,tocIndex:10},{value:"\u6587\u672C",paraId:16,tocIndex:10},{value:"\u5F55\u5165\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:17,tocIndex:10},{value:"ID",paraId:18,tocIndex:10},{value:"\u540D\u79F0",paraId:18,tocIndex:10},{value:"\u6570\u636E\u8868",paraId:18,tocIndex:10},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:18,tocIndex:10},{value:"\u8868\u8FBE\u5F0F",paraId:18,tocIndex:10},{value:"1",paraId:18,tocIndex:10},{value:"\u516B\u6298\u5546\u54C1",paraId:18,tocIndex:10},{value:"\u5546\u54C1",paraId:18,tocIndex:10},{value:"formula.js",paraId:18,tocIndex:10},{value:"{{\u5546\u54C1.\u4EF7\u683C}} * 0.8",paraId:18,tocIndex:10},{value:"2",paraId:18,tocIndex:10},{value:"\u4E5D\u6298\u5546\u54C1",paraId:18,tocIndex:10},{value:"\u5546\u54C1",paraId:18,tocIndex:10},{value:"formula.js",paraId:18,tocIndex:10},{value:"{{\u5546\u54C1.\u4EF7\u683C}} * 0.9",paraId:18,tocIndex:10},{value:"\u521B\u5EFA\u5546\u54C1\uFF0C\u5E76\u5173\u8054\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:19,tocIndex:10},{value:"ID",paraId:20,tocIndex:10},{value:"\u5546\u54C1\u540D\u79F0",paraId:20,tocIndex:10},{value:"\u4EF7\u683C",paraId:20,tocIndex:10},{value:"\u4F18\u60E0\u89C4\u5219",paraId:20,tocIndex:10},{value:"1",paraId:20,tocIndex:10},{value:"iPhone 14 Pro",paraId:20,tocIndex:10},{value:"7999",paraId:20,tocIndex:10},{value:"2",paraId:20,tocIndex:10},{value:"2",paraId:20,tocIndex:10},{value:"iPhone 13 Pro",paraId:20,tocIndex:10},{value:"6999",paraId:20,tocIndex:10},{value:"1",paraId:20,tocIndex:10},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\uFF0C\u8BA2\u5355\u521B\u5EFA\u65F6\u89E6\u53D1\uFF1A",paraId:21,tocIndex:10},{value:"\u521B\u5EFA\u4E00\u4E2A\u8FD0\u7B97\u8282\u70B9\uFF0C\u914D\u7F6E\u52A8\u6001\u8868\u8FBE\u5F0F\u4E3A\u89E6\u53D1\u6570\u636E/\u5546\u54C1/\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:22,tocIndex:10},{value:"\u914D\u7F6E\u53D8\u91CF\u6570\u636E\u6E90\u4E3A\u89E6\u53D1\u6570\u636E\u4E2D\u7684\u5546\u54C1\uFF1A",paraId:23,tocIndex:10},{value:"\u589E\u52A0\u4E00\u4E2A\u66F4\u65B0\u6570\u636E\u8282\u70B9\uFF0C\u914D\u7F6E\u66F4\u65B0\u8BA2\u5355\u603B\u4EF7\u4E3A\u8BA1\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF1A",paraId:24,tocIndex:10},{value:"\u521B\u5EFA\u8BA2\u5355\u89E6\u53D1\u5DE5\u4F5C\u6D41\uFF0C\u518D\u67E5\u770B\u8BA2\u5355\u5217\u8868\uFF0C\u6838\u5BF9\u4EF7\u683C\uFF1A",paraId:25,tocIndex:10},{value:"\u8BA2\u5355\u5546\u54C1",paraId:26,tocIndex:10},{value:"\u8BA2\u5355\u5546\u54C1 / \u539F\u4EF7",paraId:26,tocIndex:10},{value:"\u4F18\u60E0\u89C4\u5219",paraId:26,tocIndex:10},{value:"\u603B\u4EF7",paraId:26,tocIndex:10},{value:"iPhone 14 Pro",paraId:26,tocIndex:10},{value:"7999",paraId:26,tocIndex:10},{value:"\u4E5D\u6298",paraId:26,tocIndex:10},{value:"7999 * 0.9 = 7199.1",paraId:26,tocIndex:10},{value:"iPhone 13 Pro",paraId:26,tocIndex:10},{value:"6999",paraId:26,tocIndex:10},{value:"\u516B\u6298",paraId:26,tocIndex:10},{value:"6999 * 0.8 = 5599.2",paraId:26,tocIndex:10}],Sr={},Zr={title:"Docker",toc:"menu",filename:"docs/en-US/welcome/getting-started/deployment/docker-compose.md",lastUpdated:1732240239e3,description:"The other processes are no different from the Docker installation."},As=[{id:"docker",depth:1,title:"Docker"},{id:"domain-binding",depth:2,title:"Domain Binding"},{id:"deploy-on-subpath",depth:2,title:"Deploy on Subpath"}],qs=[{value:"The other processes are no different from the ",paraId:0,tocIndex:0},{value:"Docker installation",paraId:1,tocIndex:0},{value:".",paraId:0,tocIndex:0},{value:"Points to Note:",paraId:2,tocIndex:0},{value:"TZ",paraId:3,tocIndex:0},{value:" is used to set the application's time zone, with the default being the system's time zone;",paraId:3,tocIndex:0},{value:"APP_KEY",paraId:3,tocIndex:0},{value:" is the application's secret key, used for generating user tokens and so on (if APP_KEY is changed, the old tokens will also become invalid). It can be any random string. Please change it to your own secret key and ensure it is not disclosed to the public.",paraId:3,tocIndex:0},{value:"DB_*",paraId:3,tocIndex:0},{value:" is related to the database. If it is not the default database service in the example, please modify it according to the actual situation;",paraId:3,tocIndex:0},{value:"When deploying in a production environment, ",paraId:3,tocIndex:0},{value:"APP_ENV=production",paraId:3,tocIndex:0},{value:";",paraId:3,tocIndex:0},{value:"When deploying on a subpath, you need to configure ",paraId:3,tocIndex:0},{value:"APP_PUBLIC_PATH",paraId:3,tocIndex:0},{value:", such as ",paraId:3,tocIndex:0},{value:"APP_PUBLIC_PATH=/nocobase/",paraId:3,tocIndex:0},{value:".",paraId:3,tocIndex:0},{value:">>> For more information, view the complete 'Environment Variables' <<<",paraId:4},{value:"Taking nginx as an example, proxy through nginx ",paraId:5,tocIndex:1},{value:"http://127.0.0.1:13000/",paraId:5,tocIndex:1},{value:`server { +`,paraId:5,tocIndex:1},{value:"\u6570\u636E\u5E93\u4E2D\u7684\u89C6\u56FE\uFF1A",paraId:6,tocIndex:1},{value:"\u5728 NocoBase \u4E2D\u5C06\u4E0A\u9762\u89C6\u56FE\u6620\u5C04\u4E3A\u6570\u636E\u8868\uFF08Collection\uFF09\u4F7F\u7528",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u76EE\u6807\u89C6\u56FE",paraId:8,tocIndex:2},{value:"\u652F\u6301\u81EA\u5B9A\u4E49\u89C6\u56FE\u7684\u5217\u540D\uFF08\u5B57\u6BB5\u540D\uFF09",paraId:9,tocIndex:2},{value:"\u6765\u6E90\u5B57\u6BB5\uFF1A\u5373\u6E90\u8868\u7684\u5143\u5B57\u6BB5\uFF0C\u5F53\u5B57\u6BB5\u672A\u89E3\u6790\u51FA\u6E90\u8868\u6765\u6E90\u5B57\u6BB5\u65F6\uFF08\u805A\u5408\u7684\u5B57\u6BB5\u65E0\u6765\u6E90\u5B57\u6BB5\uFF09\uFF0C\u53EF\u6307\u5B9A\u5B57\u6BB5\u7684 interface",paraId:9,tocIndex:2},{value:"\u89C6\u56FE\u6570\u636E\u662F\u5426\u652F\u6301\u589E\u5220\u6539\u64CD\u4F5C\uFF08\u9ED8\u8BA4\u4E0D\u652F\u6301\uFF09",paraId:9,tocIndex:2},{value:"\u5B8C\u6574\u7684\u793A\u4F8B\u914D\u7F6E\u6D41\u7A0B\u5982\u56FE",paraId:10,tocIndex:2},{value:"Sync from database \u652F\u6301\u8C03\u6574\u89C6\u56FE\u8868\u914D\u7F6E\uFF08\u82E5\u6570\u636E\u5E93\u4E2D\u89C6\u56FE\u8FDB\u884C\u4E86\u8C03\u6574\uFF0C\u53EF\u91CD\u65B0\u8FDE\u63A5\u89C6\u56FE\u540C\u6B65\u6570\u636E\uFF09",paraId:11,tocIndex:2},{value:"\u5220\u9664\uFF1A\u8FD9\u91CC\u5220\u9664\u64CD\u4F5C\u4E0D\u4F1A\u5C06\u6E90\u8868\u5B57\u6BB5\u5220\u9664\uFF0C\u4EC5\u5220\u9664\u89C6\u56FE\u8868\u4E2D\u7684\u5B57\u6BB5",paraId:11,tocIndex:2},{value:"\u662F\u5426\u652F\u6301\u5BF9\u89C6\u56FE\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u64CD\u4F5C\uFF08\u9ED8\u8BA4\u4E0D\u542F\u7528\uFF09\uFF0C\u542F\u7528\u65F6\uFF0C\u5BF9\u5E94\u533A\u5757\u624D\u652F\u6301\u589E\u52A0\u3001\u5220\u9664\u7B49\u64CD\u4F5C",paraId:12,tocIndex:2},{value:"\u4F5C\u4E3A\u533A\u5757\u7684\u6570\u636E\u6E90",paraId:13,tocIndex:3},{value:"\u89C6\u56FE\u8868\u4E0E\u5176\u4ED6\u4EFB\u610F\u65B9\u5F0F\u521B\u5EFA\u7684\u6570\u636E\u8868\u4E00\u6837\u5728\u6240\u6709\u533A\u5757\u4E2D\u90FD\u80FD\u9009\u4E2D\u4F5C\u4E3A\u6570\u636E\u6E90",paraId:14,tocIndex:3}],jl={},Us={title:"\u6807\u7B7E",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/tag/index.md",lastUpdated:173254844e4,description:"\u6807\u7B7E\u662F\u7528\u6765\u5728\u6570\u636E\u5C55\u793A\u4E2D\u66F4\u597D\u5730\u5206\u7C7B\u548C\u6807\u8BC6\u5173\u7CFB\u4FE1\u606F\u7684\u7EC4\u4EF6\u3002\u8BA9\u7528\u6237\u66F4\u8F7B\u677E\u5730\u8BC6\u522B\u4E0D\u540C\u7C7B\u522B\u7684\u6570\u636E\uFF0C\u63D0\u5347\u6D4F\u89C8\u6548\u7387\u548C\u6570\u636E\u7406\u89E3\u3002 \u5728\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u6A21\u578B\u4E2D\uFF0C\u4EFB\u52A1\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u4EFB\u52A1\u8FDB\u5EA6\u300D\uFF08\u4E00\u5BF9\u591A\uFF09"},wu=[{id:"\u6807\u7B7E",depth:1,title:"\u6807\u7B7E"}],ei=[{value:"\u6807\u7B7E\u662F\u7528\u6765\u5728\u6570\u636E\u5C55\u793A\u4E2D\u66F4\u597D\u5730\u5206\u7C7B\u548C\u6807\u8BC6\u5173\u7CFB\u4FE1\u606F\u7684\u7EC4\u4EF6\u3002\u8BA9\u7528\u6237\u66F4\u8F7B\u677E\u5730\u8BC6\u522B\u4E0D\u540C\u7C7B\u522B\u7684\u6570\u636E\uFF0C\u63D0\u5347\u6D4F\u89C8\u6548\u7387\u548C\u6570\u636E\u7406\u89E3\u3002 \u5728\u4EFB\u52A1\u7BA1\u7406\u5E94\u7528\u6A21\u578B\u4E2D\uFF0C\u4EFB\u52A1\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u4EFB\u52A1\u8FDB\u5EA6\u300D\uFF08\u4E00\u5BF9\u591A\uFF09",paraId:0,tocIndex:0},{value:"\u9700\u8981\u914D\u7F6E\u6807\u7B7E\u7684\u989C\u8272\u5B57\u6BB5\uFF08\u4ECE\u76EE\u6807\u8868\u4E2D\u9009\u62E9\uFF09",paraId:1,tocIndex:0}],Li={},Hl={title:"\u590D\u5236",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/duplicate.md",lastUpdated:173254844e4,description:"\u590D\u5236\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u590D\u5236\u4E00\u884C\u6570\u636E\u4EE5\u4FBF\u4E8E\u521B\u5EFA\u65B0\u7684\u6570\u636E\u8BB0\u5F55\uFF0C\u652F\u6301\u76F4\u63A5\u590D\u5236/\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199\u4E24\u79CD\u65B9\u5F0F"},Ps=[{id:"\u590D\u5236",depth:1,title:"\u590D\u5236"},{id:"\u76F4\u63A5\u590D\u5236",depth:4,title:"\u76F4\u63A5\u590D\u5236"},{id:"\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199",depth:4,title:"\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199"},{id:"\u590D\u5236\u5F15\u7528\u9884\u52A0\u8F7D\u7684\u8BF4\u660E",depth:4,title:"\u590D\u5236\u3001\u5F15\u7528\u3001\u9884\u52A0\u8F7D\u7684\u8BF4\u660E"},{id:"\u5173\u4E8E\u5168\u9009",depth:4,title:"\u5173\u4E8E\u5168\u9009"},{id:"\u6A21\u677F\u6570\u636E\u7684\u5904\u7406\u903B\u8F91",depth:4,title:"\u6A21\u677F\u6570\u636E\u7684\u5904\u7406\u903B\u8F91"},{id:"\u5982\u4F55\u7406\u89E3\u540C\u6B65\u8868\u5355\u5B57\u6BB5",depth:4,title:"\u5982\u4F55\u7406\u89E3\u540C\u6B65\u8868\u5355\u5B57\u6BB5"}],Ts=[{value:"\u590D\u5236\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u590D\u5236\u4E00\u884C\u6570\u636E\u4EE5\u4FBF\u4E8E\u521B\u5EFA\u65B0\u7684\u6570\u636E\u8BB0\u5F55\uFF0C\u652F\u6301\u76F4\u63A5\u590D\u5236/\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199\u4E24\u79CD\u65B9\u5F0F",paraId:0,tocIndex:0},{value:"\u9ED8\u8BA4\u4EE5\u76F4\u63A5\u590D\u5236\u7684\u65B9\u5F0F\u590D\u5236\u6570\u636E",paraId:1,tocIndex:1},{value:"\u76EE\u6807\u6570\u636E\u8868\uFF1A\u662F\u6307\u590D\u5236\u6DFB\u52A0\u7684\u76EE\u6807\u6570\u636E\u8868\uFF08\u5728\u7EE7\u627F\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u590D\u5236\u7ED9\u5B50\u8868\uFF0C\u76F4\u63A5\u590D\u5236\u53EA\u80FD\u590D\u5236\u6DFB\u52A0\u5230\u672C\u8868\uFF09",paraId:1,tocIndex:1},{value:"\u6A21\u7248\u5B57\u6BB5\uFF1A\u7528\u4E8E\u6307\u5B9A\u8981\u590D\u5236\u7684\u5B57\u6BB5\uFF0C\u53EF\u5168\u9009\uFF0C\u5FC5\u586B",paraId:1,tocIndex:1},{value:"\u5B8C\u6210\u914D\u7F6E\u540E\u70B9\u51FB\u6309\u94AE\u5373\u590D\u5236\u6570\u636E",paraId:2,tocIndex:1},{value:"\u914D\u7F6E\u7684\u6A21\u677F\u5B57\u6BB5\u4F5C\u4E3A\u5C06\u9ED8\u8BA4\u503C\u586B\u5145\u5230\u8868\u5355\u4E2D\uFF0C\u53EF\u4FEE\u6539\u540E\u63D0\u4EA4",paraId:3,tocIndex:2},{value:"\u53EF\u4EE5\u8BBE\u7F6E\u672C\u8868\u6216\u5B50\u8868\u4E3A\u590D\u5236\u6DFB\u52A0\u7684\u76EE\u6807\u8868",paraId:4,tocIndex:2},{value:"\u914D\u7F6E\u6A21\u677F\u5B57\u6BB5\uFF1A\u6A21\u677F\u5B57\u6BB5\u5C06\u4F5C\u4E3A\u9ED8\u8BA4\u503C\u586B\u5145\u5230\u8868\u5355\u4E2D\uFF0C\u53EA\u4F1A\u5E26\u51FA\u6709\u52FE\u9009\u7684\u5B57\u6BB5\u503C",paraId:5,tocIndex:2},{value:"\u300C\u8FD0\u5355\u300D\uFF08o2m\uFF09\u662F\u590D\u5236\u7684\u5173\u7CFB\uFF0C\u8C03\u6574\u5176\u5B57\u6BB5\u7EC4\u4EF6\u4E3A\u5B50\u8868\u5355\uFF0C\u53EF\u914D\u7F6E\u5B50\u8868\u5355\u4E2D\u7684\u5B57\u6BB5",paraId:6,tocIndex:2},{value:"\u540C\u6B65\u8868\u5355\u5B57\u6BB5\uFF1A\u5B8C\u6210\u8868\u5355\u914D\u7F6E\u540E\u53EF\u70B9\u51FB\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\uFF0C\u4F1A\u81EA\u52A8\u89E3\u6790\u5C06\u8868\u5355\u4E2D\u5DF2\u914D\u7F6E\u7684\u5B57\u6BB5\u5747\u52FE\u9009\u4E0A\uFF08\u6BCF\u6B21\u8868\u5355\u5B57\u6BB5\u914D\u7F6E\u4FEE\u6539\u4E4B\u540E\u9700\u8981\u624B\u52A8\u518D\u540C\u6B65\u4E00\u6B21\uFF09\uFF0C\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u540E\u53EF\u81EA\u5B9A\u4E49\u8C03\u6574\u6A21\u677F\u5B57\u6BB5",paraId:7,tocIndex:2},{value:"\u70B9\u51FB\u590D\u5236\u64CD\u4F5C\u4F1A\u6253\u5F00\u5F39\u7A97\uFF0C\u5E76\u6309\u7167\u6A21\u677F\u5B57\u6BB5\u5E26\u51FA\u6A21\u677F\u6570\u636E\u4F5C\u4E3A\u8868\u5355\u9ED8\u8BA4\u503C\u586B\u5145\uFF0C\u53EF\u4FEE\u6539\u6570\u636E\u540E\u63D0\u4EA4\u5B8C\u6210\u6570\u636E\u590D\u5236",paraId:8,tocIndex:2},{value:"\u5982\u4E0B\u56FE\u5B8C\u6574\u793A\u4F8B\u4E3A\u8BA2\u5355\u5217\u8868\u914D\u7F6E\u590D\u5236\u64CD\u4F5C",paraId:9,tocIndex:2},{value:"\u5BF9\u4E8E\u4E0D\u540C\u5B57\u6BB5\uFF08\u4E0D\u540C\u5173\u7CFB\u7C7B\u578B\uFF09\u6709\u4E0D\u540C\u7684\u5904\u7406\u903B\u8F91\uFF08\u590D\u5236\u3001\u5F15\u7528\u3001\u9884\u52A0\u8F7D\uFF09\uFF0C\u5176\u4E2D\u8C03\u6574\u5173\u7CFB\u5B57\u6BB5\u7684\u5B57\u6BB5\u7EC4\u4EF6\u4E2D\u4E5F\u4F1A\u5F71\u54CD\u5904\u7406\u903B\u8F91\uFF08Select \u548C Record pikcer \u7528\u4E8E\u5904\u7406\u5F15\u7528\u5173\u7CFB\uFF0CSub-form \u548C Sub-table \u7528\u4E8E\u5904\u7406\u590D\u5236\u5173\u7CFB\uFF09",paraId:10,tocIndex:3},{value:"\u590D\u5236",paraId:11,tocIndex:3},{value:"\u666E\u901A\u5B57\u6BB5\u662F\u590D\u5236",paraId:12,tocIndex:3},{value:"hasOne \u548C hasMany \u7684\u5173\u7CFB\u5B57\u6BB5\u53EA\u80FD\u662F\u590D\u5236\uFF08\u5373\u8BE5\u7C7B\u578B\u7684\u5173\u7CFB\u5B57\u6BB5\u4E0D\u80FD\u7528 Select\u3001Record picker \u4F5C\u4E3A\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u5E94\u4F7F\u7528 Sub-form\u3001Sub-table \u7B49\uFF09",paraId:13,tocIndex:3},{value:"hasOne \u548C hasMany \u5B57\u6BB5\u7EC4\u4EF6\u7684\u53D8\u66F4\u4E0D\u4F1A\u6539\u53D8\u5904\u7406\u903B\u8F91\uFF08\u590D\u5236\uFF09",paraId:14,tocIndex:3},{value:"\u590D\u5236\u7684\u5173\u7CFB\u5B57\u6BB5\uFF0C\u6240\u6709\u7684\u5B50\u5B57\u6BB5\u90FD\u53EF\u4EE5\u88AB\u9009\u62E9",paraId:14,tocIndex:3},{value:"\u5F15\u7528",paraId:15,tocIndex:3},{value:"belongsTo \u548C belongsToMany \u662F\u5F15\u7528",paraId:16,tocIndex:3},{value:"\u5F15\u7528\u662F\u53EF\u80FD\u53D8\u6210\u590D\u5236\u7684\uFF0C\u6BD4\u5982\u5B57\u6BB5\u7EC4\u4EF6\u4ECE select \u8C03\u6574\u4E3A sub-form \u540E\uFF0C\u5173\u7CFB\u5C31\u4ECE\u5F15\u7528\u53D8\u6210\u4E86\u590D\u5236\uFF08\u53D8\u6210\u590D\u5236\u4E4B\u540E\uFF0C\u6240\u6709\u7684\u5B50\u5B57\u6BB5\u90FD\u662F\u53EF\u9009\u7684\uFF09",paraId:16,tocIndex:3},{value:"\u9884\u52A0\u8F7D\uFF1A\u5F15\u7528\u5B57\u6BB5\u91CC\u7684\u5173\u7CFB\u5B57\u6BB5",paraId:17,tocIndex:3},{value:"\u5F15\u7528\u7684\u5173\u7CFB\u5B57\u6BB5\u4E0B\u7684\u5173\u7CFB\u5B57\u6BB5\u4E3A\u9884\u52A0\u8F7D",paraId:18,tocIndex:3},{value:"\u9884\u52A0\u8F7D\u7684\u5173\u7CFB\u5B57\u6BB5\u5728\u5B57\u6BB5\u7EC4\u4EF6\u53D8\u66F4\u540E\u53EF\u80FD\u53D8\u6210\u5F15\u7528\u6216\u8005\u590D\u5236",paraId:18,tocIndex:3},{value:"\u6240\u6709\u7684\u590D\u5236\u5B57\u6BB5\u90FD\u52FE\u9009\u4E0A",paraId:19,tocIndex:4},{value:"\u6240\u6709\u7684\u5F15\u7528\u5B57\u6BB5\u90FD\u52FE\u9009\u4E0A",paraId:19,tocIndex:4},{value:"\u6240\u6709\u7684\u5173\u7CFB\u7684 fk \u90FD\u4F1A\u8FC7\u6EE4\u6389",paraId:20,tocIndex:5},{value:"\u5982\u679C\u662F\u590D\u5236\u7684\u5173\u7CFB\u6570\u636E pk \u4E5F\u4F1A\u8FC7\u6EE4\u6389",paraId:20,tocIndex:5},{value:"\u5F15\u7528\u548C\u9884\u52A0\u8F7D\u6709 pk \u5B57\u6BB5",paraId:20,tocIndex:5},{value:"\u5728\u5927\u591A\u6570\u573A\u666F\u4E0B\uFF0C\u8868\u5355\u914D\u7F6E\u6D89\u53CA\u7684\u5B57\u6BB5\u975E\u5E38\u7E41\u591A\u3002\u5728\u5904\u7406\u8FD9\u79CD\u590D\u6742\u8868\u5355\u573A\u666F\u65F6\uFF0C\u624B\u52A8\u914D\u7F6E\u6A21\u677F\u5B57\u6BB5\u901A\u5E38\u4F1A\u53D8\u5F97\u975E\u5E38\u7E41\u7410\u3002\u4E3A\u4E86\u89E3\u51B3\u8FD9\u4E2A\u95EE\u9898\uFF0C\u5F15\u5165\u4E86\u4E00\u4E2A\u529F\u80FD\u5F3A\u5927\u7684\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\u3002\u8FD9\u4E2A\u6309\u94AE\u7684\u4F5C\u7528\u662F\u81EA\u52A8\u89E3\u6790\u8868\u5355\u5B57\u6BB5\u7684\u914D\u7F6E\uFF0C\u6839\u636E\u5B57\u6BB5\u7C7B\u578B\u548C\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u7684\u914D\u7F6E\u6765\u5904\u7406\u5B57\u6BB5\u590D\u5236\u903B\u8F91\uFF0C\u5305\u62EC\u590D\u5236\u3001\u5F15\u7528\u548C\u9884\u52A0\u8F7D\u3002\u5728\u8FD9\u4E2A\u8FC7\u7A0B\u4E2D\uFF0C\u5DF2\u7ECF\u914D\u7F6E\u597D\u7684\u5B57\u6BB5\u4F1A\u9ED8\u8BA4\u88AB\u52FE\u9009\u4E0A",paraId:21,tocIndex:6},{value:"\u6BCF\u5F53\u7528\u6237\u4FEE\u6539\u8868\u5355\u5B57\u6BB5\u914D\u7F6E\u4E4B\u540E\uFF0C\u7CFB\u7EDF\u4E0D\u4F1A\u81EA\u52A8\u540C\u6B65\u8FD9\u4E9B\u53D8\u5316\u3002\u56E0\u6B64\uFF0C\u7528\u6237\u9700\u8981\u624B\u52A8\u70B9\u51FB\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\uFF0C\u4EE5\u4FBF\u5C06\u6700\u65B0\u7684\u914D\u7F6E\u4FE1\u606F\u5E94\u7528\u5230\u6A21\u677F\u914D\u7F6E\u4E2D\u3002",paraId:22,tocIndex:6}],Cs={},Wl={title:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/dynamic-calculation.md",lastUpdated:173254844e4,description:"\u533A\u522B\u4E8E\u666E\u901A\u7684\u8FD0\u7B97\u8282\u70B9\u53EA\u6267\u884C\u56FA\u5B9A\u7684\u8868\u8FBE\u5F0F\u8BA1\u7B97\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u53EF\u4EE5\u57FA\u4E8E\u6570\u636E\u5173\u8054\u7684\u8868\u8FBE\u5F0F\u8FDB\u884C\u4E0D\u540C\u7684\u8BA1\u7B97\u3002\u5176\u89E3\u51B3\u7684\u6838\u5FC3\u95EE\u9898\u662F\u7531\u4E8E\u666E\u901A\u7684\u516C\u5F0F\u5B57\u6BB5\u9488\u5BF9\u6570\u636E\u8868\u6240\u6709\u6570\u636E\u884C\u90FD\u53EA\u80FD\u4F7F\u7528\u540C\u4E00\u4E2A\u56FA\u5B9A\u516C\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u800C\u52A8\u6001\u8868\u8FBE\u5F0F\u53EF\u4EE5\u9488\u5BF9\u6570\u636E\u884C\u4E0D\u540C\u8BA1\u7B97\u65B9\u5F0F\u65F6\uFF0C\u5728\u5DE5\u4F5C\u6D41\u4E2D\u8FDB\u884C\u5904\u7406\u4EE5\u8FBE\u6210\u52A8\u6001\u8BA1\u7B97\u7684\u76EE\u6807\u3002"},$l=[{id:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97",depth:1,title:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97"},{id:"\u51C6\u5907",depth:2,title:"\u51C6\u5907"},{id:"\u521B\u5EFA\u8868\u8FBE\u5F0F\u6A21\u677F\u8868",depth:3,title:"\u521B\u5EFA\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868"},{id:"\u5F55\u5165\u8868\u8FBE\u5F0F\u6570\u636E",depth:3,title:"\u5F55\u5165\u8868\u8FBE\u5F0F\u6570\u636E"},{id:"\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u8868\u8FBE\u5F0F\u6570\u636E\u5EFA\u7ACB\u5173\u8054",depth:3,title:"\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u8868\u8FBE\u5F0F\u6570\u636E\u5EFA\u7ACB\u5173\u8054"},{id:"\u6D41\u7A0B\u4E2D\u52A0\u8F7D\u76F8\u5E94\u7684\u6570\u636E",depth:3,title:"\u6D41\u7A0B\u4E2D\u52A0\u8F7D\u76F8\u5E94\u7684\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u52A8\u6001\u8868\u8FBE\u5F0F",depth:3,title:"\u52A8\u6001\u8868\u8FBE\u5F0F"},{id:"\u53D8\u91CF\u6570\u636E\u6E90",depth:3,title:"\u53D8\u91CF\u6570\u636E\u6E90"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],Ho=[{value:"\u533A\u522B\u4E8E\u666E\u901A\u7684\u8FD0\u7B97\u8282\u70B9\u53EA\u6267\u884C\u56FA\u5B9A\u7684\u8868\u8FBE\u5F0F\u8BA1\u7B97\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u53EF\u4EE5\u57FA\u4E8E\u6570\u636E\u5173\u8054\u7684\u8868\u8FBE\u5F0F\u8FDB\u884C\u4E0D\u540C\u7684\u8BA1\u7B97\u3002\u5176\u89E3\u51B3\u7684\u6838\u5FC3\u95EE\u9898\u662F\u7531\u4E8E\u666E\u901A\u7684\u516C\u5F0F\u5B57\u6BB5\u9488\u5BF9\u6570\u636E\u8868\u6240\u6709\u6570\u636E\u884C\u90FD\u53EA\u80FD\u4F7F\u7528\u540C\u4E00\u4E2A\u56FA\u5B9A\u516C\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u800C\u52A8\u6001\u8868\u8FBE\u5F0F\u53EF\u4EE5\u9488\u5BF9\u6570\u636E\u884C\u4E0D\u540C\u8BA1\u7B97\u65B9\u5F0F\u65F6\uFF0C\u5728\u5DE5\u4F5C\u6D41\u4E2D\u8FDB\u884C\u5904\u7406\u4EE5\u8FBE\u6210\u52A8\u6001\u8BA1\u7B97\u7684\u76EE\u6807\u3002",paraId:0,tocIndex:0},{value:"\u4F8B\u5982\u8BA2\u5355\u6570\u636E\u5728\u6240\u5C5E\u4E0D\u540C\u4EA7\u54C1\u5206\u7C7B\u4E0B\u4F7F\u7528\u4E0D\u540C\u7684\u7EDF\u8BA1\u516C\u5F0F\u6765\u8BA1\u7B97\u7279\u5B9A\u7684\u62A5\u8868\u6570\u636E\u3002",paraId:1,tocIndex:0},{value:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u7684\u4F7F\u7528\u4E0E\u5DE5\u4F5C\u6D41\u5176\u4ED6\u8F83\u4E3A\u7B80\u5355\u7684\u8282\u70B9\u4E0D\u540C\uFF0C\u6709\u51E0\u4E2A\u9700\u8981\u524D\u7F6E\u5B8C\u6210\u7684\u6B65\u9AA4\uFF1A",paraId:2,tocIndex:1},{value:"\u521B\u5EFA\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868\u3002",paraId:3,tocIndex:1},{value:"\u5F55\u5165\u8868\u8FBE\u5F0F\u6570\u636E\u3002",paraId:3,tocIndex:1},{value:"\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u8868\u8FBE\u5F0F\u6570\u636E\u5EFA\u7ACB\u5173\u8054\u3002",paraId:3,tocIndex:1},{value:"\u901A\u8FC7\u67E5\u8BE2\u8282\u70B9\u6216\u8005\u6570\u636E\u89E6\u53D1\u65F6\u7684\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E\u52A0\u8F7D\u7279\u5B9A\u4E1A\u52A1\u6570\u636E\u5173\u8054\u7684\u8868\u8FBE\u5F0F\u6570\u636E\u3002",paraId:3,tocIndex:1},{value:"\u4EE5\u4E0A\u6B65\u9AA4\u5B8C\u6210\u540E\uFF0C\u518D\u5BF9\u5DE5\u4F5C\u6D41\u914D\u7F6E\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u3002",paraId:4,tocIndex:1},{value:"\u5728\u5DE5\u4F5C\u6D41\u5185\u4F7F\u7528\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97\u8282\u70B9\u4E4B\u524D\uFF0C\u9700\u8981\u5148\u5728\u6570\u636E\u8868\u7BA1\u7406\u5DE5\u5177\u4E2D\u521B\u5EFA\u4E00\u5F20\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868\uFF0C\u7528\u4E8E\u5B58\u653E\u4E0D\u540C\u7684\u8868\u8FBE\u5F0F\uFF1A",paraId:5,tocIndex:2},{value:"\u7136\u540E\u521B\u5EFA\u4E00\u4E2A\u8868\u683C\u533A\u5757\u5BF9\u8BE5\u6A21\u677F\u8868\u6DFB\u52A0\u51E0\u6761\u516C\u5F0F\u6570\u636E\uFF0C\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868\u4E2D\u6BCF\u884C\u6570\u636E\u90FD\u53EF\u4EE5\u88AB\u7406\u89E3\u4E3A\u9488\u5BF9\u7279\u5B9A\u8868\u6570\u636E\u6A21\u578B\u7684\u4E00\u4E2A\u8BA1\u7B97\u89C4\u5219\u3002\u6BCF\u884C\u516C\u5F0F\u6570\u636E\u53EF\u4F7F\u7528\u4E0D\u540C\u6570\u636E\u8868\u7684\u6570\u636E\u6A21\u578B\u4E2D\u7684\u5B57\u6BB5\u503C\u4F5C\u4E3A\u53D8\u91CF\uFF0C\u7F16\u5199\u4E0D\u540C\u7684\u8868\u8FBE\u5F0F\u4F5C\u4E3A\u8BA1\u7B97\u89C4\u5219\uFF0C\u5F53\u7136\uFF0C\u4E5F\u53EF\u4EE5\u4F7F\u7528\u4E0D\u540C\u7684\u8BA1\u7B97\u5F15\u64CE\u3002",paraId:6,tocIndex:3},{value:"\u521B\u5EFA\u597D\u516C\u5F0F\u4EE5\u540E\u8FD8\u9700\u8981\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u516C\u5F0F\u8FDB\u884C\u5173\u8054\uFF0C\u5C06\u6BCF\u884C\u4E1A\u52A1\u6570\u636E\u76F4\u63A5\u5173\u8054\u516C\u5F0F\u6570\u636E\u884C\u4F1A\u6BD4\u8F83\u7E41\u7410\uFF0C\u6240\u4EE5\u901A\u5E38\u6211\u4EEC\u4F1A\u4F7F\u7528\u7C7B\u4F3C\u5206\u7C7B\u7684\u5143\u6570\u636E\u8868\u4E0E\u516C\u5F0F\u8868\u8FDB\u884C\u591A\u5BF9\u4E00\uFF08\u6216\u4E00\u5BF9\u4E00\uFF09\u5173\u8054\uFF0C\u518D\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u5206\u7C7B\u5143\u6570\u636E\u8FDB\u884C\u591A\u5BF9\u4E00\u7684\u5173\u8054\uFF0C\u90A3\u4E48\u5728\u521B\u5EFA\u4E1A\u52A1\u6570\u636E\u65F6\u53EA\u9700\u6307\u5B9A\u7279\u5B9A\u7684\u5206\u7C7B\u5143\u6570\u636E\uFF0C\u5373\u53EF\u5728\u540E\u7EED\u4F7F\u7528\u4E2D\u901A\u8FC7\u8FD9\u4E2A\u5173\u8054\u8DEF\u5F84\u627E\u5230\u5BF9\u5E94\u7684\u516C\u5F0F\u6570\u636E\u8FDB\u884C\u4F7F\u7528\u3002",paraId:7,tocIndex:4},{value:"\u6700\u540E\u6211\u4EEC\u9700\u8981\u5728\u7279\u5B9A\u4E1A\u52A1\u7684\u5DE5\u4F5C\u6D41\u4E2D\u52A0\u5165\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\uFF0C\u5176\u5C06\u5728\u6D41\u7A0B\u89E6\u53D1\u65F6\u6267\u884C\u5BF9\u5E94\u7684\u8BA1\u7B97\u3002",paraId:8,tocIndex:7},{value:` + `,paraId:9},{value:"\u4E0E\u666E\u901A\u8FD0\u7B97\u8282\u70B9\u7684\u8868\u8FBE\u5F0F\u9009\u9879\u4E0D\u540C\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u9700\u8981\u6839\u636E\u5DF2\u7ECF\u67E5\u8BE2\u51FA\u6765\u7684\u6570\u636E\u8FDB\u884C\u9009\u62E9\uFF0C\u800C\u4E0D\u662F\u76F4\u63A5\u5F55\u5165\u8868\u8FBE\u5F0F\u3002",paraId:10,tocIndex:8},{value:"\u540C\u65F6\u8FD8\u9700\u8981\u9009\u62E9\u8868\u8FBE\u5F0F\u4E2D\u53D8\u91CF\u6240\u9700\u8981\u4F7F\u7528\u7684\u6570\u636E\u8868\u6570\u636E\u884C\u5BF9\u8C61\uFF0C\u53EF\u4EE5\u4ECE\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u4E2D\u9009\u62E9\u5DF2\u7ECF\u63D0\u524D\u52A0\u8F7D\uFF08\u6216\u67E5\u8BE2\uFF09\u51FA\u6765\u7684\u7ED3\u679C\u5BF9\u8C61\u3002",paraId:11,tocIndex:9},{value:"\u4EE5\u5546\u54C1\u4E0B\u5355\u8FC7\u7A0B\u4E2D\u6839\u636E\u4E0D\u540C\u5546\u54C1\u8FDB\u884C\u4E0D\u540C\u4F18\u60E0\u89C4\u5219\u7684\u6700\u7EC8\u4EF7\u683C\u8BA1\u7B97\u4E3E\u4F8B\u3002",paraId:12,tocIndex:10},{value:"\u5EFA\u7ACB\u5546\u54C1\u8868\uFF1A",paraId:13,tocIndex:10},{value:"\u5B57\u6BB5\u540D",paraId:14,tocIndex:10},{value:"\u7C7B\u578B",paraId:14,tocIndex:10},{value:"\u5546\u54C1\u540D",paraId:14,tocIndex:10},{value:"\u6587\u672C",paraId:14,tocIndex:10},{value:"\u5546\u54C1\u539F\u4EF7",paraId:14,tocIndex:10},{value:"\u6570\u5B57",paraId:14,tocIndex:10},{value:"\u4F18\u60E0\u89C4\u5219",paraId:14,tocIndex:10},{value:"belongsTo",paraId:14,tocIndex:10},{value:"\uFF08\u4F18\u60E0\u89C4\u5219\u8868\uFF09",paraId:14,tocIndex:10},{value:"\u5EFA\u7ACB\u4F18\u60E0\u89C4\u5219\u8868\uFF08\u4F7F\u7528\u8868\u8FBE\u5F0F\u8868\u6A21\u677F\u521B\u5EFA\uFF09\uFF1A",paraId:15,tocIndex:10},{value:"\u5B57\u6BB5\u540D",paraId:16,tocIndex:10},{value:"\u7C7B\u578B",paraId:16,tocIndex:10},{value:"\u89C4\u5219\u540D\u79F0",paraId:16,tocIndex:10},{value:"\u6587\u672C",paraId:16,tocIndex:10},{value:"\u6570\u636E\u8868",paraId:16,tocIndex:10},{value:"\u5355\u9009\uFF08\u6570\u636E\u8868\uFF09",paraId:16,tocIndex:10},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:16,tocIndex:10},{value:"\u5355\u9009\uFF08mathjs/formulajs\uFF09",paraId:16,tocIndex:10},{value:"\u8868\u8FBE\u5F0F",paraId:16,tocIndex:10},{value:"\u6587\u672C",paraId:16,tocIndex:10},{value:"\u5F55\u5165\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:17,tocIndex:10},{value:"ID",paraId:18,tocIndex:10},{value:"\u540D\u79F0",paraId:18,tocIndex:10},{value:"\u6570\u636E\u8868",paraId:18,tocIndex:10},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:18,tocIndex:10},{value:"\u8868\u8FBE\u5F0F",paraId:18,tocIndex:10},{value:"1",paraId:18,tocIndex:10},{value:"\u516B\u6298\u5546\u54C1",paraId:18,tocIndex:10},{value:"\u5546\u54C1",paraId:18,tocIndex:10},{value:"formula.js",paraId:18,tocIndex:10},{value:"{{\u5546\u54C1.\u4EF7\u683C}} * 0.8",paraId:18,tocIndex:10},{value:"2",paraId:18,tocIndex:10},{value:"\u4E5D\u6298\u5546\u54C1",paraId:18,tocIndex:10},{value:"\u5546\u54C1",paraId:18,tocIndex:10},{value:"formula.js",paraId:18,tocIndex:10},{value:"{{\u5546\u54C1.\u4EF7\u683C}} * 0.9",paraId:18,tocIndex:10},{value:"\u521B\u5EFA\u5546\u54C1\uFF0C\u5E76\u5173\u8054\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:19,tocIndex:10},{value:"ID",paraId:20,tocIndex:10},{value:"\u5546\u54C1\u540D\u79F0",paraId:20,tocIndex:10},{value:"\u4EF7\u683C",paraId:20,tocIndex:10},{value:"\u4F18\u60E0\u89C4\u5219",paraId:20,tocIndex:10},{value:"1",paraId:20,tocIndex:10},{value:"iPhone 14 Pro",paraId:20,tocIndex:10},{value:"7999",paraId:20,tocIndex:10},{value:"2",paraId:20,tocIndex:10},{value:"2",paraId:20,tocIndex:10},{value:"iPhone 13 Pro",paraId:20,tocIndex:10},{value:"6999",paraId:20,tocIndex:10},{value:"1",paraId:20,tocIndex:10},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\uFF0C\u8BA2\u5355\u521B\u5EFA\u65F6\u89E6\u53D1\uFF1A",paraId:21,tocIndex:10},{value:"\u521B\u5EFA\u4E00\u4E2A\u8FD0\u7B97\u8282\u70B9\uFF0C\u914D\u7F6E\u52A8\u6001\u8868\u8FBE\u5F0F\u4E3A\u89E6\u53D1\u6570\u636E/\u5546\u54C1/\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:22,tocIndex:10},{value:"\u914D\u7F6E\u53D8\u91CF\u6570\u636E\u6E90\u4E3A\u89E6\u53D1\u6570\u636E\u4E2D\u7684\u5546\u54C1\uFF1A",paraId:23,tocIndex:10},{value:"\u589E\u52A0\u4E00\u4E2A\u66F4\u65B0\u6570\u636E\u8282\u70B9\uFF0C\u914D\u7F6E\u66F4\u65B0\u8BA2\u5355\u603B\u4EF7\u4E3A\u8BA1\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF1A",paraId:24,tocIndex:10},{value:"\u521B\u5EFA\u8BA2\u5355\u89E6\u53D1\u5DE5\u4F5C\u6D41\uFF0C\u518D\u67E5\u770B\u8BA2\u5355\u5217\u8868\uFF0C\u6838\u5BF9\u4EF7\u683C\uFF1A",paraId:25,tocIndex:10},{value:"\u8BA2\u5355\u5546\u54C1",paraId:26,tocIndex:10},{value:"\u8BA2\u5355\u5546\u54C1 / \u539F\u4EF7",paraId:26,tocIndex:10},{value:"\u4F18\u60E0\u89C4\u5219",paraId:26,tocIndex:10},{value:"\u603B\u4EF7",paraId:26,tocIndex:10},{value:"iPhone 14 Pro",paraId:26,tocIndex:10},{value:"7999",paraId:26,tocIndex:10},{value:"\u4E5D\u6298",paraId:26,tocIndex:10},{value:"7999 * 0.9 = 7199.1",paraId:26,tocIndex:10},{value:"iPhone 13 Pro",paraId:26,tocIndex:10},{value:"6999",paraId:26,tocIndex:10},{value:"\u516B\u6298",paraId:26,tocIndex:10},{value:"6999 * 0.8 = 5599.2",paraId:26,tocIndex:10}],Sr={},Zr={title:"Docker",toc:"menu",filename:"docs/en-US/welcome/getting-started/deployment/docker-compose.md",lastUpdated:173254844e4,description:"The other processes are no different from the Docker installation."},As=[{id:"docker",depth:1,title:"Docker"},{id:"domain-binding",depth:2,title:"Domain Binding"},{id:"deploy-on-subpath",depth:2,title:"Deploy on Subpath"}],qs=[{value:"The other processes are no different from the ",paraId:0,tocIndex:0},{value:"Docker installation",paraId:1,tocIndex:0},{value:".",paraId:0,tocIndex:0},{value:"Points to Note:",paraId:2,tocIndex:0},{value:"TZ",paraId:3,tocIndex:0},{value:" is used to set the application's time zone, with the default being the system's time zone;",paraId:3,tocIndex:0},{value:"APP_KEY",paraId:3,tocIndex:0},{value:" is the application's secret key, used for generating user tokens and so on (if APP_KEY is changed, the old tokens will also become invalid). It can be any random string. Please change it to your own secret key and ensure it is not disclosed to the public.",paraId:3,tocIndex:0},{value:"DB_*",paraId:3,tocIndex:0},{value:" is related to the database. If it is not the default database service in the example, please modify it according to the actual situation;",paraId:3,tocIndex:0},{value:"When deploying in a production environment, ",paraId:3,tocIndex:0},{value:"APP_ENV=production",paraId:3,tocIndex:0},{value:";",paraId:3,tocIndex:0},{value:"When deploying on a subpath, you need to configure ",paraId:3,tocIndex:0},{value:"APP_PUBLIC_PATH",paraId:3,tocIndex:0},{value:", such as ",paraId:3,tocIndex:0},{value:"APP_PUBLIC_PATH=/nocobase/",paraId:3,tocIndex:0},{value:".",paraId:3,tocIndex:0},{value:">>> For more information, view the complete 'Environment Variables' <<<",paraId:4},{value:"Taking nginx as an example, proxy through nginx ",paraId:5,tocIndex:1},{value:"http://127.0.0.1:13000/",paraId:5,tocIndex:1},{value:`server { listen 80; server_name your_domain.com; # Replace your_domain.com with your domain @@ -2167,7 +2196,7 @@ federated proxy_set_header Host $host; } } -`,paraId:10,tocIndex:2},{value:"Finally, you can access it through http://your_domain.com/nocobase/",paraId:11,tocIndex:2}],Ur={},Es={title:"REST API",toc:"menu",filename:"docs/en-US/development/server/resources-actions-v2/rest-api.md",lastUpdated:1732240239e3,description:"NocoBase \u7684 HTTP API \u662F REST API \u7684\u8D85\u96C6\uFF0C\u6807\u51C6\u7684 CRUD API \u4E5F\u652F\u6301 RESTful \u98CE\u683C\u3002"},Er=[{id:"rest-api",depth:1,title:"REST API"},{id:"collection-\u8D44\u6E90",depth:2,title:"Collection \u8D44\u6E90"},{id:"\u521B\u5EFA-collection",depth:3,title:"\u521B\u5EFA collection"},{id:"\u67E5\u770B-collection-\u5217\u8868",depth:3,title:"\u67E5\u770B collection \u5217\u8868"},{id:"\u67E5\u770B-collection-\u8BE6\u60C5",depth:3,title:"\u67E5\u770B collection \u8BE6\u60C5"},{id:"\u66F4\u65B0-collection",depth:3,title:"\u66F4\u65B0 collection"},{id:"\u5220\u9664-collection",depth:3,title:"\u5220\u9664 collection"},{id:"association-\u8D44\u6E90",depth:2,title:"Association \u8D44\u6E90"},{id:"\u521B\u5EFA-association",depth:3,title:"\u521B\u5EFA Association"},{id:"\u67E5\u770B-association-\u5217\u8868",depth:3,title:"\u67E5\u770B Association \u5217\u8868"},{id:"\u67E5\u770B-association-\u8BE6\u60C5",depth:3,title:"\u67E5\u770B Association \u8BE6\u60C5"},{id:"\u66F4\u65B0-association",depth:3,title:"\u66F4\u65B0 Association"},{id:"\u5220\u9664-association",depth:3,title:"\u5220\u9664 Association"}],ku=[{value:"NocoBase \u7684 HTTP API \u662F REST API \u7684\u8D85\u96C6\uFF0C\u6807\u51C6\u7684 CRUD API \u4E5F\u652F\u6301 RESTful \u98CE\u683C\u3002",paraId:0,tocIndex:0},{value:"HTTP API",paraId:1,tocIndex:2},{value:`POST /api/:create +`,paraId:10,tocIndex:2},{value:"Finally, you can access it through http://your_domain.com/nocobase/",paraId:11,tocIndex:2}],Ur={},Es={title:"REST API",toc:"menu",filename:"docs/en-US/development/server/resources-actions-v2/rest-api.md",lastUpdated:173254844e4,description:"NocoBase \u7684 HTTP API \u662F REST API \u7684\u8D85\u96C6\uFF0C\u6807\u51C6\u7684 CRUD API \u4E5F\u652F\u6301 RESTful \u98CE\u683C\u3002"},Er=[{id:"rest-api",depth:1,title:"REST API"},{id:"collection-\u8D44\u6E90",depth:2,title:"Collection \u8D44\u6E90"},{id:"\u521B\u5EFA-collection",depth:3,title:"\u521B\u5EFA collection"},{id:"\u67E5\u770B-collection-\u5217\u8868",depth:3,title:"\u67E5\u770B collection \u5217\u8868"},{id:"\u67E5\u770B-collection-\u8BE6\u60C5",depth:3,title:"\u67E5\u770B collection \u8BE6\u60C5"},{id:"\u66F4\u65B0-collection",depth:3,title:"\u66F4\u65B0 collection"},{id:"\u5220\u9664-collection",depth:3,title:"\u5220\u9664 collection"},{id:"association-\u8D44\u6E90",depth:2,title:"Association \u8D44\u6E90"},{id:"\u521B\u5EFA-association",depth:3,title:"\u521B\u5EFA Association"},{id:"\u67E5\u770B-association-\u5217\u8868",depth:3,title:"\u67E5\u770B Association \u5217\u8868"},{id:"\u67E5\u770B-association-\u8BE6\u60C5",depth:3,title:"\u67E5\u770B Association \u8BE6\u60C5"},{id:"\u66F4\u65B0-association",depth:3,title:"\u66F4\u65B0 Association"},{id:"\u5220\u9664-association",depth:3,title:"\u5220\u9664 Association"}],ku=[{value:"NocoBase \u7684 HTTP API \u662F REST API \u7684\u8D85\u96C6\uFF0C\u6807\u51C6\u7684 CRUD API \u4E5F\u652F\u6301 RESTful \u98CE\u683C\u3002",paraId:0,tocIndex:0},{value:"HTTP API",paraId:1,tocIndex:2},{value:`POST /api/:create {} # JSON body `,paraId:2,tocIndex:2},{value:"REST API",paraId:3,tocIndex:2},{value:`POST /api/ @@ -2220,7 +2249,7 @@ POST /api///:update///:destroy/ `,paraId:38,tocIndex:12},{value:"REST API",paraId:39,tocIndex:12},{value:`DELETE /api//// -`,paraId:40,tocIndex:12}],Ds={},Os={title:"Add New",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/add-new.md",lastUpdated:1732240239e3},Rs=[{id:"add-new",depth:1,title:"Add New"}],Ms=[],Su={},Ni={title:"Refresh",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/refresh.md",lastUpdated:1732240239e3,description:"The refresh operation is designed to reload data within a data block, providing support for manual refresh."},Gl=[{id:"refresh",depth:1,title:"Refresh"}],fr=[{value:"Refresh",paraId:0},{value:"The refresh operation is designed to reload data within a data block, providing support for manual refresh.",paraId:1,tocIndex:0}],Bn={},Lo={title:"Inheritance Collection",toc:"menu",filename:"docs/en-US/handbook/data-source-main/inheritance-collection.md",lastUpdated:1732240239e3,description:"You can create a parent collection and derive child collection from that parent collection. The child collection will inherit the structure of the parent collection, and can also define its own columns. This design pattern helps organize and manage data with similar structures but possible differences."},Do=[{id:"inheritance-collection",depth:1,title:"Inheritance Collection"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"}],Wo=[{value:"You can create a parent collection and derive child collection from that parent collection. The child collection will inherit the structure of the parent collection, and can also define its own columns. This design pattern helps organize and manage data with similar structures but possible differences.",paraId:0,tocIndex:1},{value:"Here are some common features of support for inheritable collections:",paraId:1,tocIndex:1},{value:"Parent Collection: The parent collection contains common columns and data, defining the basic structure of the entire inheritance hierarchy.",paraId:2,tocIndex:1},{value:"Child Collection: The child collection inherits the structure of the parent collection, but can also define its own columns. This allows each child collection to have the common properties of the parent collection while containing attributes specific to the subclass.",paraId:2,tocIndex:1},{value:"Querying: When querying, you can choose to query the entire inheritance hierarchy, just the parent collection, or a specific child collection. This allows different levels of data to be retrieved and processed as needed.",paraId:2,tocIndex:1},{value:"Inheritance Relationship: An inheritance relationship is established between the parent collection and the child collection, meaning that the structure of the parent collection can be used to define consistent attributes, while allowing the child collection to extend or override these attributes.",paraId:2,tocIndex:1},{value:"This design pattern helps to reduce data redundancy, simplify the database model, and make the data easier to maintain. However, it needs to be used with caution as inheritable collections can increase the complexity of queries, especially when dealing with the entire inheritance hierarchy. Databases that support inheritable collections generally provide specific syntax and tools to manage and query these collection structures.",paraId:3,tocIndex:1}],sr={},Rd={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/overview.md",lastUpdated:1732240239e3,description:"Use Ant Design Charts 2.x for data visualization, supporting common basic chart types."},No=[{id:"overview",depth:1,title:"Overview"}],ai=[{value:"Use ",paraId:0,tocIndex:0},{value:"Ant Design Charts",paraId:0,tocIndex:0},{value:" 2.x for data visualization, supporting common basic chart types.",paraId:0,tocIndex:0}],ud={},zi={title:"Secondary Confirmation",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/double-check.md",lastUpdated:1732240239e3,description:"The Double check configuration is designed to ensure that an operation is deliberate before it proceeds. When an action is clicked, a confirmation box will appear. By default, the delete button has secondary confirmation enabled to prevent accidental operations that could lead to data loss or irreversible outcomes."},Vl=[{id:"secondary-confirmation",depth:1,title:"Secondary Confirmation"},{id:"introduction",depth:2,title:"Introduction"}],ti=[{value:"The Double check configuration is designed to ensure that an operation is deliberate before it proceeds. When an action is clicked, a confirmation box will appear. By default, the delete button has secondary confirmation enabled to prevent accidental operations that could lead to data loss or irreversible outcomes.",paraId:0,tocIndex:1},{value:"Support customizing secondary confirmation content and titles",paraId:1,tocIndex:1}],dr={},Kl={title:"Linkage Rule",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/linkage-rule.md",lastUpdated:1732240239e3,description:"The linkage rules for actions are configured based on contextual data conditions and execution results. By configuring these linkage rules, you can control the status of actions (Visible, Hidden, Enabled, Disabled)."},Md=[{id:"linkage-rule",depth:1,title:"Linkage Rule"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"applicable-buttons-for-linkage-rules",depth:3,title:"Applicable Buttons for Linkage Rules"},{id:"constants",depth:3,title:"Constants"},{id:"variables",depth:3,title:"Variables"}],Br=[{value:"The linkage rules for actions are configured based on contextual data conditions and execution results. By configuring these linkage rules, you can control the status of actions (Visible, Hidden, Enabled, Disabled).",paraId:0,tocIndex:1},{value:"When conditions are met (by default, they pass without conditions), the action is triggered. Constants and variables can be used in the condition evaluation.",paraId:1,tocIndex:2},{value:"Currently, only buttons with data context support configuring linkage rules.",paraId:2,tocIndex:3},{value:"Row buttons in blocks such as tables and Gantt charts;",paraId:3,tocIndex:3},{value:"Buttons in detail blocks;",paraId:4,tocIndex:3},{value:"Example: Hide the copy button for orders that have been canceled.",paraId:5,tocIndex:4},{value:"Example: Disable the delete button for orders with a delivery date later than today.",paraId:6,tocIndex:5},{value:"For further details on using variables, see the ",paraId:7,tocIndex:5},{value:"Variables",paraId:8,tocIndex:5},{value:" section.",paraId:7,tocIndex:5}],Fi={},Zl={title:"Save as template",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/block-template.md",lastUpdated:1732240239e3,description:"Saving a block as a template allows you to save both the block and its associated data tables. These templates can be centrally managed on the template management page. When adding a block, you can choose to reference or copy a template to quickly create a new block."},Yr=[{id:"save-as-template",depth:1,title:"Save as template"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-guide",depth:2,title:"User Guide"}],Bi=[{value:"Saving a block as a template allows you to save both the block and its associated data tables. These templates can be centrally managed on the template management page. When adding a block, you can choose to reference or copy a template to quickly create a new block.",paraId:0,tocIndex:1},{value:"You can customize the name of the block template.",paraId:1,tocIndex:2},{value:"All block templates can be centrally managed on the block template management page.",paraId:2,tocIndex:2},{value:"When adding a block, you can either reference or copy a template to create the block quickly.",paraId:3,tocIndex:2},{value:"For more information about block templates, refer to ",paraId:4,tocIndex:2},{value:"Block Templates",paraId:5,tocIndex:2},{value:".",paraId:4,tocIndex:2}],Qr={},ji={title:"HTTP API",toc:"menu",filename:"docs/en-US/handbook/workflow-custom-action-trigger/http-api.md",lastUpdated:1732240239e3,description:"Custom action events can be triggered not only through user interface actions but also via HTTP API calls. Specifically, these events introduce a new operation type called trigger for all collection operations, allowing workflows to be initiated through the NocoBase standard operation API."},ni=[{id:"http-api",depth:1,title:"HTTP API"}],Yl=[{value:"Custom action events can be triggered not only through user interface actions but also via HTTP API calls. Specifically, these events introduce a new operation type called ",paraId:0,tocIndex:0},{value:"trigger",paraId:0,tocIndex:0},{value:" for all collection operations, allowing workflows to be initiated through the NocoBase standard operation API.",paraId:0,tocIndex:0},{value:"For instance, a workflow typically triggered by a button can be invoked using the following command:",paraId:1,tocIndex:0},{value:`curl -X POST -H 'Authorization: Bearer ' -H 'X-Role: ' \\ +`,paraId:40,tocIndex:12}],Ds={},Os={title:"Add New",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/add-new.md",lastUpdated:173254844e4},Rs=[{id:"add-new",depth:1,title:"Add New"}],Ms=[],Su={},Ni={title:"Refresh",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/refresh.md",lastUpdated:173254844e4,description:"The refresh operation is designed to reload data within a data block, providing support for manual refresh."},Gl=[{id:"refresh",depth:1,title:"Refresh"}],fr=[{value:"Refresh",paraId:0},{value:"The refresh operation is designed to reload data within a data block, providing support for manual refresh.",paraId:1,tocIndex:0}],Bn={},Lo={title:"Inheritance Collection",toc:"menu",filename:"docs/en-US/handbook/data-source-main/inheritance-collection.md",lastUpdated:173254844e4,description:"You can create a parent collection and derive child collection from that parent collection. The child collection will inherit the structure of the parent collection, and can also define its own columns. This design pattern helps organize and manage data with similar structures but possible differences."},Do=[{id:"inheritance-collection",depth:1,title:"Inheritance Collection"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"}],Wo=[{value:"You can create a parent collection and derive child collection from that parent collection. The child collection will inherit the structure of the parent collection, and can also define its own columns. This design pattern helps organize and manage data with similar structures but possible differences.",paraId:0,tocIndex:1},{value:"Here are some common features of support for inheritable collections:",paraId:1,tocIndex:1},{value:"Parent Collection: The parent collection contains common columns and data, defining the basic structure of the entire inheritance hierarchy.",paraId:2,tocIndex:1},{value:"Child Collection: The child collection inherits the structure of the parent collection, but can also define its own columns. This allows each child collection to have the common properties of the parent collection while containing attributes specific to the subclass.",paraId:2,tocIndex:1},{value:"Querying: When querying, you can choose to query the entire inheritance hierarchy, just the parent collection, or a specific child collection. This allows different levels of data to be retrieved and processed as needed.",paraId:2,tocIndex:1},{value:"Inheritance Relationship: An inheritance relationship is established between the parent collection and the child collection, meaning that the structure of the parent collection can be used to define consistent attributes, while allowing the child collection to extend or override these attributes.",paraId:2,tocIndex:1},{value:"This design pattern helps to reduce data redundancy, simplify the database model, and make the data easier to maintain. However, it needs to be used with caution as inheritable collections can increase the complexity of queries, especially when dealing with the entire inheritance hierarchy. Databases that support inheritable collections generally provide specific syntax and tools to manage and query these collection structures.",paraId:3,tocIndex:1}],sr={},Rd={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/overview.md",lastUpdated:173254844e4,description:"Use Ant Design Charts 2.x for data visualization, supporting common basic chart types."},No=[{id:"overview",depth:1,title:"Overview"}],ai=[{value:"Use ",paraId:0,tocIndex:0},{value:"Ant Design Charts",paraId:0,tocIndex:0},{value:" 2.x for data visualization, supporting common basic chart types.",paraId:0,tocIndex:0}],ud={},zi={title:"Secondary Confirmation",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/double-check.md",lastUpdated:173254844e4,description:"The Double check configuration is designed to ensure that an operation is deliberate before it proceeds. When an action is clicked, a confirmation box will appear. By default, the delete button has secondary confirmation enabled to prevent accidental operations that could lead to data loss or irreversible outcomes."},Vl=[{id:"secondary-confirmation",depth:1,title:"Secondary Confirmation"},{id:"introduction",depth:2,title:"Introduction"}],ti=[{value:"The Double check configuration is designed to ensure that an operation is deliberate before it proceeds. When an action is clicked, a confirmation box will appear. By default, the delete button has secondary confirmation enabled to prevent accidental operations that could lead to data loss or irreversible outcomes.",paraId:0,tocIndex:1},{value:"Support customizing secondary confirmation content and titles",paraId:1,tocIndex:1}],dr={},Kl={title:"Linkage Rule",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/linkage-rule.md",lastUpdated:173254844e4,description:"The linkage rules for actions are configured based on contextual data conditions and execution results. By configuring these linkage rules, you can control the status of actions (Visible, Hidden, Enabled, Disabled)."},Md=[{id:"linkage-rule",depth:1,title:"Linkage Rule"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"applicable-buttons-for-linkage-rules",depth:3,title:"Applicable Buttons for Linkage Rules"},{id:"constants",depth:3,title:"Constants"},{id:"variables",depth:3,title:"Variables"}],Br=[{value:"The linkage rules for actions are configured based on contextual data conditions and execution results. By configuring these linkage rules, you can control the status of actions (Visible, Hidden, Enabled, Disabled).",paraId:0,tocIndex:1},{value:"When conditions are met (by default, they pass without conditions), the action is triggered. Constants and variables can be used in the condition evaluation.",paraId:1,tocIndex:2},{value:"Currently, only buttons with data context support configuring linkage rules.",paraId:2,tocIndex:3},{value:"Row buttons in blocks such as tables and Gantt charts;",paraId:3,tocIndex:3},{value:"Buttons in detail blocks;",paraId:4,tocIndex:3},{value:"Example: Hide the copy button for orders that have been canceled.",paraId:5,tocIndex:4},{value:"Example: Disable the delete button for orders with a delivery date later than today.",paraId:6,tocIndex:5},{value:"For further details on using variables, see the ",paraId:7,tocIndex:5},{value:"Variables",paraId:8,tocIndex:5},{value:" section.",paraId:7,tocIndex:5}],Fi={},Zl={title:"Save as template",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/block-template.md",lastUpdated:173254844e4,description:"Saving a block as a template allows you to save both the block and its associated data tables. These templates can be centrally managed on the template management page. When adding a block, you can choose to reference or copy a template to quickly create a new block."},Yr=[{id:"save-as-template",depth:1,title:"Save as template"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-guide",depth:2,title:"User Guide"}],Bi=[{value:"Saving a block as a template allows you to save both the block and its associated data tables. These templates can be centrally managed on the template management page. When adding a block, you can choose to reference or copy a template to quickly create a new block.",paraId:0,tocIndex:1},{value:"You can customize the name of the block template.",paraId:1,tocIndex:2},{value:"All block templates can be centrally managed on the block template management page.",paraId:2,tocIndex:2},{value:"When adding a block, you can either reference or copy a template to create the block quickly.",paraId:3,tocIndex:2},{value:"For more information about block templates, refer to ",paraId:4,tocIndex:2},{value:"Block Templates",paraId:5,tocIndex:2},{value:".",paraId:4,tocIndex:2}],Qr={},ji={title:"HTTP API",toc:"menu",filename:"docs/en-US/handbook/workflow-custom-action-trigger/http-api.md",lastUpdated:173254844e4,description:"Custom action events can be triggered not only through user interface actions but also via HTTP API calls. Specifically, these events introduce a new operation type called trigger for all collection operations, allowing workflows to be initiated through the NocoBase standard operation API."},ni=[{id:"http-api",depth:1,title:"HTTP API"}],Yl=[{value:"Custom action events can be triggered not only through user interface actions but also via HTTP API calls. Specifically, these events introduce a new operation type called ",paraId:0,tocIndex:0},{value:"trigger",paraId:0,tocIndex:0},{value:" for all collection operations, allowing workflows to be initiated through the NocoBase standard operation API.",paraId:0,tocIndex:0},{value:"For instance, a workflow typically triggered by a button can be invoked using the following command:",paraId:1,tocIndex:0},{value:`curl -X POST -H 'Authorization: Bearer ' -H 'X-Role: ' \\ "http://localhost:3000/api/samples:trigger/<:id>?triggerWorkflows=workflowKey" `,paraId:2,tocIndex:0},{value:"Since this operation targets a single data entry, when calling it for existing data, you must specify the ID of the data row by replacing the ",paraId:3,tocIndex:0},{value:"<:id>",paraId:3,tocIndex:0},{value:" portion of the URL.",paraId:3,tocIndex:0},{value:"When invoking the API for a form submission (such as adding or updating data), you can omit the ID for new entries but must provide the relevant data as the execution context:",paraId:4,tocIndex:0},{value:`curl -X POST -H 'Authorization: Bearer ' -H 'X-Role: ' -d \\ '{ @@ -2236,27 +2265,35 @@ POST /api///:destroy/?triggerWorkflows=workflowKey" `,paraId:7,tocIndex:0},{value:"If both the ID and data are provided, the specified data row will be loaded first, and then the provided data will overwrite the original row to generate the final trigger context.",paraId:8,tocIndex:0},{value:"If relational data is provided, it will also be overwritten. Take special care when handling relational data with Preload associations to avoid unintentionally altering related data.",paraId:9},{value:"Additionally, the URL parameter ",paraId:10},{value:"triggerWorkflows",paraId:10},{value:" designates the workflow key(s). Multiple workflows can be separated by commas. You can obtain this key by hovering over the workflow name at the top of the workflow canvas:",paraId:10},{value:"Once the call is successful, the custom operation event for the ",paraId:11},{value:"samples",paraId:11},{value:" table will be triggered.",paraId:11},{value:"Since external API calls also require user authentication, you must include authentication information in the request, similar to requests sent from the standard interface. This includes the ",paraId:12},{value:"Authorization",paraId:12},{value:" header or ",paraId:12},{value:"token",paraId:12},{value:" parameter (the token obtained after login) and the ",paraId:12},{value:"X-Role",paraId:12},{value:" header (the user's current role name).",paraId:12},{value:"If you need to trigger an event for a many-to-one data item (currently not supported for many-to-many relationships), you can specify the related field\u2019s trigger data using ",paraId:13},{value:"!",paraId:13},{value:" in the parameter:",paraId:13},{value:`curl -X POST -H 'Authorization: Bearer ' -H 'X-Role: ' \\ "http://localhost:3000/api/posts:trigger/<:id>?triggerWorkflows=workflowKey!category" -`,paraId:14},{value:"After a successful call, the custom operation event for the corresponding ",paraId:15},{value:"categories",paraId:15},{value:" table will be triggered.",paraId:15},{value:"When triggering an event via HTTP API, ensure that the workflow is enabled and that the collection configuration is correct. Otherwise, the call may fail or result in errors.",paraId:16}],Hi={},Wi={title:"Expression Collection",toc:"menu",filename:"docs/en-US/handbook/workflow-dynamic-calculation/collection.md",lastUpdated:1732240239e3,description:"Before utilizing dynamic expression operation nodes within a workflow, it's essential to first create an \u201CExpression\u201D template table using the data table management tool. This table serves as a repository for various expressions:"},er=[{id:"expression-collection",depth:1,title:"Expression Collection"},{id:"creating-an-expression-collection-template",depth:2,title:"Creating an \u201CExpression collection\u201D Template"},{id:"entering-expression-data",depth:2,title:"Entering Expression Data"},{id:"loading-relevant-data-into-the-process",depth:2,title:"Loading Relevant Data into the Process"}],Jr=[{value:"Before utilizing dynamic expression operation nodes within a workflow, it's essential to first create an \u201CExpression\u201D template table using the data table management tool. This table serves as a repository for various expressions:",paraId:0,tocIndex:1},{value:"Following this, you can set up a table block and input several formula entries into the template table. Each row in the \u201CExpression\u201D template table can be viewed as a calculation rule designed for a specific data model within the table. You can utilize different fields from the data models of various tables as variables, crafting unique expressions as calculation rules. Moreover, you can leverage different calculation engines as needed.",paraId:1,tocIndex:2},{value:"Once the formulas are established, they need to be linked to the business data. Directly associating each row of business data with formula data can be tedious, so a common approach is to use a metadata table, similar to a classification table, to create a many-to-one (or one-to-one) relationship with the formula table. Then, the business data is associated with the classified metadata in a many-to-one relationship. This approach allows you to simply specify the relevant classified metadata when creating business data, making it easy to locate and utilize the corresponding formula data through the established association path.",paraId:2},{value:"As an example, consider creating a workflow triggered by a data table event. When an order is created, the trigger should preload the associated product data along with the product-related expression data:",paraId:3,tocIndex:3}],xr={},$i={title:"SQL \u8868",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/sql/index.md",lastUpdated:1732240239e3,description:"SQL collection \u63D0\u4F9B\u4E86\u4E00\u79CD\u901A\u8FC7 SQL \u8BED\u53E5\u83B7\u53D6\u6570\u636E\u7684\u65B9\u6CD5\u3002\u901A\u8FC7 SQL \u8BED\u53E5\u83B7\u53D6\u6570\u636E\u5B57\u6BB5\uFF0C\u914D\u7F6E\u5B57\u6BB5\u5143\u6570\u636E\u4E4B\u540E\uFF0C\u7528\u6237\u53EF\u4EE5\u50CF\u4F7F\u7528\u666E\u901A\u8868\u4E00\u6837\uFF0C\u7ED9\u8868\u683C\u3001\u56FE\u8868\u3001\u5DE5\u4F5C\u6D41\u7B49\u4F7F\u7528\uFF0C\u9002\u7528\u4E8E\u5173\u8054\u67E5\u8BE2\u3001\u7EDF\u8BA1\u7B49\u573A\u666F\u3002"},Ls=[{id:"sql-\u8868",depth:1,title:"SQL \u8868"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u65B0\u5EFA",depth:2,title:"\u65B0\u5EFA"},{id:"\u7F16\u8F91",depth:2,title:"\u7F16\u8F91"},{id:"\u540C\u6B65",depth:2,title:"\u540C\u6B65"},{id:"sql-\u8868\u5BF9\u6BD4\u8FDE\u63A5\u6570\u636E\u5E93\u89C6\u56FE",depth:2,title:"SQL \u8868\u5BF9\u6BD4\u8FDE\u63A5\u6570\u636E\u5E93\u89C6\u56FE"}],ir=[{value:"SQL collection \u63D0\u4F9B\u4E86\u4E00\u79CD\u901A\u8FC7 SQL \u8BED\u53E5\u83B7\u53D6\u6570\u636E\u7684\u65B9\u6CD5\u3002\u901A\u8FC7 SQL \u8BED\u53E5\u83B7\u53D6\u6570\u636E\u5B57\u6BB5\uFF0C\u914D\u7F6E\u5B57\u6BB5\u5143\u6570\u636E\u4E4B\u540E\uFF0C\u7528\u6237\u53EF\u4EE5\u50CF\u4F7F\u7528\u666E\u901A\u8868\u4E00\u6837\uFF0C\u7ED9\u8868\u683C\u3001\u56FE\u8868\u3001\u5DE5\u4F5C\u6D41\u7B49\u4F7F\u7528\uFF0C\u9002\u7528\u4E8E\u5173\u8054\u67E5\u8BE2\u3001\u7EDF\u8BA1\u7B49\u573A\u666F\u3002",paraId:0,tocIndex:1},{value:"\u5728 SQL \u8F93\u5165\u6846\u8F93\u5165 SQL \u8BED\u53E5\u540E\uFF0C\u70B9\u51FB\u6267\u884C (Execute) \u540E\uFF0C\u7CFB\u7EDF\u5C06\u4F1A\u5C1D\u8BD5\u89E3\u6790 SQL \u4F7F\u7528\u4E86\u54EA\u4E9B\u8868\u548C\u5B57\u6BB5\uFF0C\u4ECE\u6765\u6E90\u8868\u4E2D\u89E3\u6790\u51FA\u5B57\u6BB5\u5143\u6570\u636E\u3002",paraId:1,tocIndex:2},{value:"\u5982\u679C\u7CFB\u7EDF\u81EA\u52A8\u5206\u6790\u7684\u6765\u6E90\u8868\u548C\u5B57\u6BB5\u4E0D\u5BF9\uFF0C\u53EF\u4EE5\u624B\u52A8\u9009\u62E9\u5BF9\u5E94\u7684\u8868\u548C\u5B57\u6BB5\uFF0C\u6765\u4F7F\u7528\u5BF9\u5E94\u5B57\u6BB5\u7684\u5143\u6570\u636E\u3002\u9700\u8981\u5148\u9009\u62E9\u6765\u6E90\u8868\uFF0C\u624D\u80FD\u5728\u4E0B\u65B9\u7684\u5B57\u6BB5\u6765\u6E90\u4E2D\u9009\u62E9\u8BE5\u8868\u7684\u5B57\u6BB5\u3002",paraId:2,tocIndex:2},{value:"\u5982\u679C\u5B57\u6BB5\u6CA1\u6709\u5BF9\u5E94\u7684\u6765\u6E90\u5B57\u6BB5\uFF0C\u7CFB\u7EDF\u4F1A\u6839\u636E\u6570\u636E\u7C7B\u578B\u63A8\u65AD\u5B57\u6BB5\u7C7B\u578B\uFF0C\u5982\u679C\u63A8\u65AD\u7ED3\u679C\u4E0D\u5BF9\uFF0C\u53EF\u4EE5\u624B\u52A8\u9009\u62E9\u5B57\u6BB5\u7C7B\u578B\u3002",paraId:3,tocIndex:2},{value:"\u5728\u914D\u7F6E\u5B57\u6BB5\u7684\u540C\u65F6\u53EF\u4EE5\u5728\u9884\u89C8\u533A\u57DF\u770B\u5230\u5BF9\u5E94\u7684\u5C55\u793A\u6548\u679C\u3002",paraId:4,tocIndex:2},{value:"\u914D\u7F6E\u5B8C\u6210\uFF0C\u786E\u8BA4\u65E0\u8BEF\u4E4B\u540E\uFF0C\u9700\u8981\u70B9\u51FB SQL \u8F93\u5165\u6846\u4E0B\u65B9\u7684\u786E\u8BA4 (Confirm) \u6309\u94AE\u624D\u80FD\u8FDB\u884C\u6700\u540E\u7684\u63D0\u4EA4\u3002",paraId:5,tocIndex:2},{value:"SQL \u8BED\u53E5\u6709\u53D8\u5316\u65F6\uFF0C\u53EF\u4EE5\u70B9\u51FB\u4FEE\u6539 (Edit) \u6309\u94AE\uFF0C\u76F4\u63A5\u4FEE\u6539 SQL \u8BED\u53E5\uFF0C\u91CD\u65B0\u914D\u7F6E\u5B57\u6BB5\u3002",paraId:6,tocIndex:3},{value:"\u9700\u8981\u4FEE\u6539\u5B57\u6BB5\u5143\u6570\u636E\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u914D\u7F6E\u5B57\u6BB5 (Configure fields), \u50CF\u666E\u901A\u8868\u4E00\u6837\u4FEE\u6539\u5B57\u6BB5\u76F8\u5173\u914D\u7F6E\u3002",paraId:6,tocIndex:3},{value:"SQL \u8BED\u53E5\u65E0\u53D8\u5316\uFF0C\u4F46\u6570\u636E\u5E93\u8868\u7ED3\u6784\u6709\u53D8\u5316\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u70B9\u51FB\u914D\u7F6E\u5B57\u6BB5 (Configure fields) - \u4ECE\u6570\u636E\u5E93\u540C\u6B65 (Sync from database) \u5BF9\u5B57\u6BB5\u8FDB\u884C\u540C\u6B65\u548C\u914D\u7F6E\u3002",paraId:7,tocIndex:4},{value:"\u6A21\u677F\u7C7B\u578B",paraId:8,tocIndex:5},{value:"\u9002\u7528\u573A\u666F",paraId:8,tocIndex:5},{value:"\u5B9E\u73B0\u539F\u7406",paraId:8,tocIndex:5},{value:"\u589E\u5220\u6539\u652F\u6301",paraId:8,tocIndex:5},{value:"SQL",paraId:8,tocIndex:5},{value:"\u6A21\u578B\u6BD4\u8F83\u7B80\u5355\uFF0C\u8F83\u8F7B\u91CF\u573A\u666F\u4E0D\u65B9\u4FBF\u64CD\u4F5C\u6570\u636E\u5E93\u4E0D\u60F3\u7EF4\u62A4\u89C6\u56FE\u60F3\u5B8C\u5168\u901A\u8FC7 UI \u64CD\u4F5C",paraId:8,tocIndex:5},{value:"SQL \u5B50\u67E5\u8BE2",paraId:8,tocIndex:5},{value:"\u4E0D\u652F\u6301",paraId:8,tocIndex:5},{value:"\u8FDE\u63A5\u6570\u636E\u5E93\u89C6\u56FE",paraId:8,tocIndex:5},{value:"\u6A21\u578B\u6BD4\u8F83\u590D\u6742\u9700\u8981\u548C\u6570\u636E\u5E93\u4EA4\u4E92\u9700\u8981\u4FEE\u6539\u6570\u636E\u9700\u8981\u66F4\u826F\u597D\u548C\u7A33\u5B9A\u7684\u6570\u636E\u5E93\u652F\u6301",paraId:8,tocIndex:5},{value:"\u6570\u636E\u5E93\u89C6\u56FE",paraId:8,tocIndex:5},{value:"\u90E8\u5206\u652F\u6301",paraId:8,tocIndex:5}],Ns={},Ql={title:"Upgrading for Docker compose",toc:"menu",filename:"docs/en-US/welcome/getting-started/upgrading/docker-compose.md",lastUpdated:1732240239e3,description:"Make sure to backup the database before upgrading!!!"},Jl=[{id:"upgrading-for-docker-compose",depth:1,title:"Upgrading for Docker compose"},{id:"0-preparing-for-the-upgrade",depth:2,title:"0. Preparing for the upgrade"},{id:"1-navigate-to-the-directory-containing-docker-composeyml",depth:2,title:"1. Navigate to the directory containing docker-compose.yml"},{id:"2-update-the-image-version",depth:2,title:"2. Update the image version"},{id:"3-restart-the-container",depth:2,title:"3. Restart the container"},{id:"4-upgrading-independent-plugins",depth:2,title:"4. Upgrading independent plugins"}],Uu=[{value:"Make sure to backup the database before upgrading!!!",paraId:0},{value:"docker-compose.yml",paraId:1},{value:"For example:",paraId:2,tocIndex:2},{value:`# MacOS, Linux... +`,paraId:14},{value:"After a successful call, the custom operation event for the corresponding ",paraId:15},{value:"categories",paraId:15},{value:" table will be triggered.",paraId:15},{value:"When triggering an event via HTTP API, ensure that the workflow is enabled and that the collection configuration is correct. Otherwise, the call may fail or result in errors.",paraId:16}],Hi={},Wi={title:"Expression Collection",toc:"menu",filename:"docs/en-US/handbook/workflow-dynamic-calculation/collection.md",lastUpdated:173254844e4,description:"Before utilizing dynamic expression operation nodes within a workflow, it's essential to first create an \u201CExpression\u201D template table using the data table management tool. This table serves as a repository for various expressions:"},er=[{id:"expression-collection",depth:1,title:"Expression Collection"},{id:"creating-an-expression-collection-template",depth:2,title:"Creating an \u201CExpression collection\u201D Template"},{id:"entering-expression-data",depth:2,title:"Entering Expression Data"},{id:"loading-relevant-data-into-the-process",depth:2,title:"Loading Relevant Data into the Process"}],Jr=[{value:"Before utilizing dynamic expression operation nodes within a workflow, it's essential to first create an \u201CExpression\u201D template table using the data table management tool. This table serves as a repository for various expressions:",paraId:0,tocIndex:1},{value:"Following this, you can set up a table block and input several formula entries into the template table. Each row in the \u201CExpression\u201D template table can be viewed as a calculation rule designed for a specific data model within the table. You can utilize different fields from the data models of various tables as variables, crafting unique expressions as calculation rules. Moreover, you can leverage different calculation engines as needed.",paraId:1,tocIndex:2},{value:"Once the formulas are established, they need to be linked to the business data. Directly associating each row of business data with formula data can be tedious, so a common approach is to use a metadata table, similar to a classification table, to create a many-to-one (or one-to-one) relationship with the formula table. Then, the business data is associated with the classified metadata in a many-to-one relationship. This approach allows you to simply specify the relevant classified metadata when creating business data, making it easy to locate and utilize the corresponding formula data through the established association path.",paraId:2},{value:"As an example, consider creating a workflow triggered by a data table event. When an order is created, the trigger should preload the associated product data along with the product-related expression data:",paraId:3,tocIndex:3}],xr={},$i={title:"SQL \u8868",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/sql/index.md",lastUpdated:173254844e4,description:"SQL collection \u63D0\u4F9B\u4E86\u4E00\u79CD\u901A\u8FC7 SQL \u8BED\u53E5\u83B7\u53D6\u6570\u636E\u7684\u65B9\u6CD5\u3002\u901A\u8FC7 SQL \u8BED\u53E5\u83B7\u53D6\u6570\u636E\u5B57\u6BB5\uFF0C\u914D\u7F6E\u5B57\u6BB5\u5143\u6570\u636E\u4E4B\u540E\uFF0C\u7528\u6237\u53EF\u4EE5\u50CF\u4F7F\u7528\u666E\u901A\u8868\u4E00\u6837\uFF0C\u7ED9\u8868\u683C\u3001\u56FE\u8868\u3001\u5DE5\u4F5C\u6D41\u7B49\u4F7F\u7528\uFF0C\u9002\u7528\u4E8E\u5173\u8054\u67E5\u8BE2\u3001\u7EDF\u8BA1\u7B49\u573A\u666F\u3002"},Ls=[{id:"sql-\u8868",depth:1,title:"SQL \u8868"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u65B0\u5EFA",depth:2,title:"\u65B0\u5EFA"},{id:"\u7F16\u8F91",depth:2,title:"\u7F16\u8F91"},{id:"\u540C\u6B65",depth:2,title:"\u540C\u6B65"},{id:"sql-\u8868\u5BF9\u6BD4\u8FDE\u63A5\u6570\u636E\u5E93\u89C6\u56FE",depth:2,title:"SQL \u8868\u5BF9\u6BD4\u8FDE\u63A5\u6570\u636E\u5E93\u89C6\u56FE"}],ir=[{value:"SQL collection \u63D0\u4F9B\u4E86\u4E00\u79CD\u901A\u8FC7 SQL \u8BED\u53E5\u83B7\u53D6\u6570\u636E\u7684\u65B9\u6CD5\u3002\u901A\u8FC7 SQL \u8BED\u53E5\u83B7\u53D6\u6570\u636E\u5B57\u6BB5\uFF0C\u914D\u7F6E\u5B57\u6BB5\u5143\u6570\u636E\u4E4B\u540E\uFF0C\u7528\u6237\u53EF\u4EE5\u50CF\u4F7F\u7528\u666E\u901A\u8868\u4E00\u6837\uFF0C\u7ED9\u8868\u683C\u3001\u56FE\u8868\u3001\u5DE5\u4F5C\u6D41\u7B49\u4F7F\u7528\uFF0C\u9002\u7528\u4E8E\u5173\u8054\u67E5\u8BE2\u3001\u7EDF\u8BA1\u7B49\u573A\u666F\u3002",paraId:0,tocIndex:1},{value:"\u5728 SQL \u8F93\u5165\u6846\u8F93\u5165 SQL \u8BED\u53E5\u540E\uFF0C\u70B9\u51FB\u6267\u884C (Execute) \u540E\uFF0C\u7CFB\u7EDF\u5C06\u4F1A\u5C1D\u8BD5\u89E3\u6790 SQL \u4F7F\u7528\u4E86\u54EA\u4E9B\u8868\u548C\u5B57\u6BB5\uFF0C\u4ECE\u6765\u6E90\u8868\u4E2D\u89E3\u6790\u51FA\u5B57\u6BB5\u5143\u6570\u636E\u3002",paraId:1,tocIndex:2},{value:"\u5982\u679C\u7CFB\u7EDF\u81EA\u52A8\u5206\u6790\u7684\u6765\u6E90\u8868\u548C\u5B57\u6BB5\u4E0D\u5BF9\uFF0C\u53EF\u4EE5\u624B\u52A8\u9009\u62E9\u5BF9\u5E94\u7684\u8868\u548C\u5B57\u6BB5\uFF0C\u6765\u4F7F\u7528\u5BF9\u5E94\u5B57\u6BB5\u7684\u5143\u6570\u636E\u3002\u9700\u8981\u5148\u9009\u62E9\u6765\u6E90\u8868\uFF0C\u624D\u80FD\u5728\u4E0B\u65B9\u7684\u5B57\u6BB5\u6765\u6E90\u4E2D\u9009\u62E9\u8BE5\u8868\u7684\u5B57\u6BB5\u3002",paraId:2,tocIndex:2},{value:"\u5982\u679C\u5B57\u6BB5\u6CA1\u6709\u5BF9\u5E94\u7684\u6765\u6E90\u5B57\u6BB5\uFF0C\u7CFB\u7EDF\u4F1A\u6839\u636E\u6570\u636E\u7C7B\u578B\u63A8\u65AD\u5B57\u6BB5\u7C7B\u578B\uFF0C\u5982\u679C\u63A8\u65AD\u7ED3\u679C\u4E0D\u5BF9\uFF0C\u53EF\u4EE5\u624B\u52A8\u9009\u62E9\u5B57\u6BB5\u7C7B\u578B\u3002",paraId:3,tocIndex:2},{value:"\u5728\u914D\u7F6E\u5B57\u6BB5\u7684\u540C\u65F6\u53EF\u4EE5\u5728\u9884\u89C8\u533A\u57DF\u770B\u5230\u5BF9\u5E94\u7684\u5C55\u793A\u6548\u679C\u3002",paraId:4,tocIndex:2},{value:"\u914D\u7F6E\u5B8C\u6210\uFF0C\u786E\u8BA4\u65E0\u8BEF\u4E4B\u540E\uFF0C\u9700\u8981\u70B9\u51FB SQL \u8F93\u5165\u6846\u4E0B\u65B9\u7684\u786E\u8BA4 (Confirm) \u6309\u94AE\u624D\u80FD\u8FDB\u884C\u6700\u540E\u7684\u63D0\u4EA4\u3002",paraId:5,tocIndex:2},{value:"SQL \u8BED\u53E5\u6709\u53D8\u5316\u65F6\uFF0C\u53EF\u4EE5\u70B9\u51FB\u4FEE\u6539 (Edit) \u6309\u94AE\uFF0C\u76F4\u63A5\u4FEE\u6539 SQL \u8BED\u53E5\uFF0C\u91CD\u65B0\u914D\u7F6E\u5B57\u6BB5\u3002",paraId:6,tocIndex:3},{value:"\u9700\u8981\u4FEE\u6539\u5B57\u6BB5\u5143\u6570\u636E\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u914D\u7F6E\u5B57\u6BB5 (Configure fields), \u50CF\u666E\u901A\u8868\u4E00\u6837\u4FEE\u6539\u5B57\u6BB5\u76F8\u5173\u914D\u7F6E\u3002",paraId:6,tocIndex:3},{value:"SQL \u8BED\u53E5\u65E0\u53D8\u5316\uFF0C\u4F46\u6570\u636E\u5E93\u8868\u7ED3\u6784\u6709\u53D8\u5316\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u70B9\u51FB\u914D\u7F6E\u5B57\u6BB5 (Configure fields) - \u4ECE\u6570\u636E\u5E93\u540C\u6B65 (Sync from database) \u5BF9\u5B57\u6BB5\u8FDB\u884C\u540C\u6B65\u548C\u914D\u7F6E\u3002",paraId:7,tocIndex:4},{value:"\u6A21\u677F\u7C7B\u578B",paraId:8,tocIndex:5},{value:"\u9002\u7528\u573A\u666F",paraId:8,tocIndex:5},{value:"\u5B9E\u73B0\u539F\u7406",paraId:8,tocIndex:5},{value:"\u589E\u5220\u6539\u652F\u6301",paraId:8,tocIndex:5},{value:"SQL",paraId:8,tocIndex:5},{value:"\u6A21\u578B\u6BD4\u8F83\u7B80\u5355\uFF0C\u8F83\u8F7B\u91CF\u573A\u666F\u4E0D\u65B9\u4FBF\u64CD\u4F5C\u6570\u636E\u5E93\u4E0D\u60F3\u7EF4\u62A4\u89C6\u56FE\u60F3\u5B8C\u5168\u901A\u8FC7 UI \u64CD\u4F5C",paraId:8,tocIndex:5},{value:"SQL \u5B50\u67E5\u8BE2",paraId:8,tocIndex:5},{value:"\u4E0D\u652F\u6301",paraId:8,tocIndex:5},{value:"\u8FDE\u63A5\u6570\u636E\u5E93\u89C6\u56FE",paraId:8,tocIndex:5},{value:"\u6A21\u578B\u6BD4\u8F83\u590D\u6742\u9700\u8981\u548C\u6570\u636E\u5E93\u4EA4\u4E92\u9700\u8981\u4FEE\u6539\u6570\u636E\u9700\u8981\u66F4\u826F\u597D\u548C\u7A33\u5B9A\u7684\u6570\u636E\u5E93\u652F\u6301",paraId:8,tocIndex:5},{value:"\u6570\u636E\u5E93\u89C6\u56FE",paraId:8,tocIndex:5},{value:"\u90E8\u5206\u652F\u6301",paraId:8,tocIndex:5}],Ns={},Ql={title:"Upgrading for Docker compose",toc:"menu",filename:"docs/en-US/welcome/getting-started/upgrading/docker-compose.md",lastUpdated:173254844e4,description:"Make sure to backup the database before upgrading!!!"},Jl=[{id:"upgrading-for-docker-compose",depth:1,title:"Upgrading for Docker compose"},{id:"0-preparing-for-the-upgrade",depth:2,title:"0. Preparing for the upgrade"},{id:"1-navigate-to-the-directory-containing-docker-composeyml",depth:2,title:"1. Navigate to the directory containing docker-compose.yml"},{id:"2-update-the-image-version",depth:2,title:"2. Update the image version"},{id:"3-restart-the-container",depth:2,title:"3. Restart the container"}],Uu=[{value:"Make sure to backup the database before upgrading!!!",paraId:0},{value:"docker-compose.yml",paraId:1},{value:"Example",paraId:2,tocIndex:2},{value:`# MacOS, Linux... cd /your/path/my-project/ # Windows cd C:\\your\\path\\my-project -`,paraId:3,tocIndex:2},{value:"latest",paraId:4,tocIndex:3},{value:" or ",paraId:4,tocIndex:3},{value:"main",paraId:4,tocIndex:3},{value:"\uFF1AThe most stable version to date, recommended for installation;",paraId:4,tocIndex:3},{value:"next",paraId:4,tocIndex:3},{value:"\uFF1AAlpha version, including some unreleased new features. This version may not be completely stable and is suitable for developers or testers to experience new features in advance or conduct compatibility testing;",paraId:4,tocIndex:3},{value:"1.2.4-alpha",paraId:4,tocIndex:3},{value:": Upgrade to a specific version. For the latest versions, see the ",paraId:4,tocIndex:3},{value:"released versions list",paraId:4,tocIndex:3},{value:"Images can only be upgraded, not downgraded. The ",paraId:5},{value:"next",paraId:5},{value:" version cannot be downgraded to ",paraId:5},{value:"latest",paraId:5},{value:".",paraId:5},{value:`# ... +`,paraId:3,tocIndex:2},{value:"'latest' : Functional stability, more complete test version, only do bug fixes. Installing this version is recommended.",paraId:4,tocIndex:3},{value:"'beta' : contains a new feature that is about to be released, a version that has been preliminarily tested and may have some known or unknown issues.",paraId:4,tocIndex:3},{value:"'alpha' : a version in development that contains the latest feature code, may not be completed or has a lot of instability, and is mainly used for internal development and rapid iteration.",paraId:4,tocIndex:3},{value:"1.3.51",paraId:4,tocIndex:3},{value:" : specify a version number, the latest version of the view [] list of previous versions (",paraId:4,tocIndex:3},{value:"https://hub.docker.com/r/nocobase/nocobase/tags",paraId:4,tocIndex:3},{value:").",paraId:4,tocIndex:3},{value:"Images can only be upgraded, not downgraded. The next version cannot be downgraded to latest.",paraId:5},{value:`# ... services: app: image: nocobase/nocobase:main image: nocobase/nocobase:latest image: nocobase/nocobase:1.2.4-alpha # ... -`,paraId:6},{value:`docker-compose pull +`,paraId:6},{value:`# Pull the latest image +docker-compose pull +# Start docker-compose up -d app +# View the app process docker-compose logs app -`,paraId:7,tocIndex:4},{value:"After upgrading NocoBase, independent plugins installed through the interface might also need to be upgraded. Please refer to documentation ",paraId:8,tocIndex:5},{value:"Installation and Upgrade of Plugins",paraId:9,tocIndex:5}],Xr={},zs={title:"Delete",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/delete.md",lastUpdated:1732240239e3,description:"The delete operation enables the removal of data records, whether through row buttons or batch operation buttons, and includes a confirmation dialog to ensure intent."},Xl=[{id:"delete",depth:1,title:"Delete"}],pd=[{value:"Delete",paraId:0},{value:"The delete operation enables the removal of data records, whether through row buttons or batch operation buttons, and includes a confirmation dialog to ensure intent.",paraId:1,tocIndex:0}],ec={},Id={title:"Export",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/export.md",lastUpdated:1732240239e3,description:"The export operation is facilitated through plugin extensions, allowing you to batch export all data from the tables associated with a block. This feature also supports configuring the titles of the export fields."},Fs=[{id:"export",depth:1,title:"Export"}],Bs=[{value:"The export operation is facilitated through plugin extensions, allowing you to batch export all data from the tables associated with a block. This feature also supports configuring the titles of the export fields.",paraId:0,tocIndex:0},{value:"Configuring Exportable Fields",paraId:1,tocIndex:0}],ac={},Gi={title:"Filtering",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/filter.md",lastUpdated:1732240239e3,description:"The filtering operation typically appears within data blocks, enabling the configuration of various conditions to filter data. It is important to note that if a block already has a data range configured, the filtering operation will merge with the data range conditions to create the final filter criteria."},Pu=[{id:"filtering",depth:1,title:"Filtering"}],Tu=[{value:"The filtering operation typically appears within data blocks, enabling the configuration of various conditions to filter data. It is important to note that if a block already has a data range configured, the filtering operation will merge with the data range conditions to create the final filter criteria.",paraId:0,tocIndex:0},{value:"Supports configuring which fields can be filtered.",paraId:1,tocIndex:0},{value:"As shown below, a filter operation is set up for the waybill list, where data is filtered by adjusting the condition configurations.",paraId:2,tocIndex:0}],js={},Hs={title:"Import",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/import.md",lastUpdated:1732240239e3,description:"The import operation is facilitated through plugin extensions, currently allowing batch data import via .xlsx files."},_d=[{id:"import",depth:1,title:"Import"}],Cu=[{value:"Import",paraId:0},{value:"The import operation is facilitated through plugin extensions, currently allowing batch data import via ",paraId:1,tocIndex:0},{value:".xlsx",paraId:1,tocIndex:0},{value:" files.",paraId:1,tocIndex:0},{value:"Set up the fields available for import.",paraId:2,tocIndex:0},{value:"Download the import template, populate it with data, and then proceed with the import.",paraId:3,tocIndex:0},{value:"For further details, consult the import documentation.",paraId:4,tocIndex:0},{value:"https://github.com/nocobase/nocobase/tree/main/packages/plugins/%40nocobase/plugin-import#%E5%AF%BC%E5%85%A5%E8%AF%B4%E6%98%8E",paraId:5,tocIndex:0}],Ld={},Ws={title:"Submit",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/submit.md",lastUpdated:1732240239e3,description:"The Submit operation is used to save form data (specific to form blocks)."},Po=[{id:"submit",depth:1,title:"Submit"},{id:"parameter-configuration",depth:3,title:"Parameter Configuration"}],Au=[{value:"The Submit operation is used to save form data (specific to form blocks).",paraId:0,tocIndex:0},{value:"Save Method: Only supports configuring save methods in ",paraId:1,tocIndex:1},{value:"new",paraId:1,tocIndex:1},{value:" operations for form blocks.",paraId:1,tocIndex:1},{value:"Bind Workflow: Supports binding with workflows, automatically triggering workflows after submission. By defining trigger data contexts, advanced automation tasks can be achieved, improving data processing efficiency and business process control.",paraId:2,tocIndex:1},{value:"For more details, refer to the Workflow Documentation.",paraId:3,tocIndex:1}],$s={},qu={title:"Scatter Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/scatter.md",lastUpdated:1732240239e3,description:"Configure one metric and two dimensions. One of the dimensions is the X-axis field (X field) and the other is the Series field (Series field)."},Eu=[{id:"scatter-chart",depth:1,title:"Scatter Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-measure-1-dimension",depth:3,title:"1 Measure, 1 Dimension"},{id:"1-measure-1-axis-dimension-one-series-dimension",depth:3,title:"1 Measure, 1 Axis Dimension, One Series Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],Gs=[{value:"Configure one metric and two dimensions. One of the dimensions is the X-axis field (X field) and the other is the Series field (Series field).",paraId:0,tocIndex:3},{value:"Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"X-axis Field",paraId:1,tocIndex:4},{value:"The dimension used to define the X-axis of the chart.",paraId:1,tocIndex:4},{value:"Series Field",paraId:1,tocIndex:4},{value:"The dimension used to categorize data points into distinct series.",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Set chart\u2019s size, either by setting a fixed aspect ratio or a fixed height.",paraId:1,tocIndex:4}],Vs={},Du={title:"Edit Button",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/edit-button.md",lastUpdated:1732240239e3,description:"You can personalize the button\u2019s name, icon, and background color. There are three color choices: default, highlighted, or Danger red."},gr=[{id:"edit-button",depth:1,title:"Edit Button"},{id:"introduction",depth:2,title:"Introduction"}],tc=[{value:"You can personalize the button\u2019s name, icon, and background color. There are three color choices: default, highlighted, or Danger red.",paraId:0,tocIndex:1}],Ou={},ed={title:"Connecting Data Blocks",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/connect-block.md",lastUpdated:1732240239e3,description:"Connecting data blocks is a powerful feature that enables dynamic filtering linkage between different data components. At its core, this functionality involves establishing a relationship between two collections: a source collection (primary collection) and a target collection (foreign key collection). This connection facilitates seamless data filtering and interaction."},Vi=[{id:"connecting-data-blocks",depth:1,title:"Connecting Data Blocks"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"},{id:"connecting-filter-blocks-to-data-blocks",depth:3,title:"Connecting Filter Blocks to Data Blocks"},{id:"connecting-data-blocks-to-data-blocks",depth:3,title:"Connecting Data Blocks to Data Blocks"},{id:"linkage-between-data-blocks-from-the-same-collection",depth:4,title:"Linkage Between Data Blocks from the Same collection"},{id:"linkage-between-related-data-collection-blocks-different-collection-blocks-with-foreign-key-constraints",depth:4,title:"Linkage Between Related Data collection Blocks (Different collection Blocks with Foreign Key Constraints)"}],vd=[{value:"Connecting data blocks is a powerful feature that enables dynamic filtering linkage between different data components. At its core, this functionality involves establishing a relationship between two collections: a source collection (primary collection) and a target collection (foreign key collection). This connection facilitates seamless data filtering and interaction.",paraId:0,tocIndex:1},{value:"The options for connecting blocks are versatile, including:",paraId:1,tocIndex:1},{value:"Data blocks from the same collection on the current page or pop-up window",paraId:2,tocIndex:1},{value:"Blocks from different collections with foreign key constraints",paraId:2,tocIndex:1},{value:"Blocks from collections with inheritance relationships",paraId:2,tocIndex:1},{value:"Users can connect multiple blocks simultaneously, enhancing the flexibility of data interactions. Regardless of the chosen method, the underlying principle remains consistent: the source collection (actively connecting collection) supplies filter parameters to the target collection (connected collection), enabling precise data filtering and display.",paraId:3,tocIndex:1},{value:"Example: Creating a dynamic linkage between an order collection block and its corresponding order details block.",paraId:4,tocIndex:5},{value:` +\` \` \` + +## 4. Upgrading independent plugins + +After upgrading NocoBase, independent plugins installed through the interface might also need to be upgraded. Please refer to documentation [Installation and Upgrade of Plugins](/welcome/getting-started/plugin) +`,paraId:7,tocIndex:4}],Xr={},zs={title:"Delete",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/delete.md",lastUpdated:173254844e4,description:"The delete operation enables the removal of data records, whether through row buttons or batch operation buttons, and includes a confirmation dialog to ensure intent."},Xl=[{id:"delete",depth:1,title:"Delete"}],pd=[{value:"Delete",paraId:0},{value:"The delete operation enables the removal of data records, whether through row buttons or batch operation buttons, and includes a confirmation dialog to ensure intent.",paraId:1,tocIndex:0}],ec={},Id={title:"Export",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/export.md",lastUpdated:173254844e4,description:"The export operation is facilitated through plugin extensions, allowing you to batch export all data from the tables associated with a block. This feature also supports configuring the titles of the export fields."},Fs=[{id:"export",depth:1,title:"Export"}],Bs=[{value:"The export operation is facilitated through plugin extensions, allowing you to batch export all data from the tables associated with a block. This feature also supports configuring the titles of the export fields.",paraId:0,tocIndex:0},{value:"Configuring Exportable Fields",paraId:1,tocIndex:0}],ac={},Gi={title:"Filtering",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/filter.md",lastUpdated:173254844e4,description:"The filtering operation typically appears within data blocks, enabling the configuration of various conditions to filter data. It is important to note that if a block already has a data range configured, the filtering operation will merge with the data range conditions to create the final filter criteria."},Pu=[{id:"filtering",depth:1,title:"Filtering"}],Tu=[{value:"The filtering operation typically appears within data blocks, enabling the configuration of various conditions to filter data. It is important to note that if a block already has a data range configured, the filtering operation will merge with the data range conditions to create the final filter criteria.",paraId:0,tocIndex:0},{value:"Supports configuring which fields can be filtered.",paraId:1,tocIndex:0},{value:"As shown below, a filter operation is set up for the waybill list, where data is filtered by adjusting the condition configurations.",paraId:2,tocIndex:0}],js={},Hs={title:"Import",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/import.md",lastUpdated:173254844e4,description:"The import operation is facilitated through plugin extensions, currently allowing batch data import via .xlsx files."},_d=[{id:"import",depth:1,title:"Import"}],Cu=[{value:"Import",paraId:0},{value:"The import operation is facilitated through plugin extensions, currently allowing batch data import via ",paraId:1,tocIndex:0},{value:".xlsx",paraId:1,tocIndex:0},{value:" files.",paraId:1,tocIndex:0},{value:"Set up the fields available for import.",paraId:2,tocIndex:0},{value:"Download the import template, populate it with data, and then proceed with the import.",paraId:3,tocIndex:0},{value:"For further details, consult the import documentation.",paraId:4,tocIndex:0},{value:"https://github.com/nocobase/nocobase/tree/main/packages/plugins/%40nocobase/plugin-import#%E5%AF%BC%E5%85%A5%E8%AF%B4%E6%98%8E",paraId:5,tocIndex:0}],Ld={},Ws={title:"Submit",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/submit.md",lastUpdated:173254844e4,description:"The Submit operation is used to save form data (specific to form blocks)."},Po=[{id:"submit",depth:1,title:"Submit"},{id:"parameter-configuration",depth:3,title:"Parameter Configuration"}],Au=[{value:"The Submit operation is used to save form data (specific to form blocks).",paraId:0,tocIndex:0},{value:"Save Method: Only supports configuring save methods in ",paraId:1,tocIndex:1},{value:"new",paraId:1,tocIndex:1},{value:" operations for form blocks.",paraId:1,tocIndex:1},{value:"Bind Workflow: Supports binding with workflows, automatically triggering workflows after submission. By defining trigger data contexts, advanced automation tasks can be achieved, improving data processing efficiency and business process control.",paraId:2,tocIndex:1},{value:"For more details, refer to the Workflow Documentation.",paraId:3,tocIndex:1}],$s={},qu={title:"Scatter Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/scatter.md",lastUpdated:173254844e4,description:"Configure one metric and two dimensions. One of the dimensions is the X-axis field (X field) and the other is the Series field (Series field)."},Eu=[{id:"scatter-chart",depth:1,title:"Scatter Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-measure-1-dimension",depth:3,title:"1 Measure, 1 Dimension"},{id:"1-measure-1-axis-dimension-one-series-dimension",depth:3,title:"1 Measure, 1 Axis Dimension, One Series Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],Gs=[{value:"Configure one metric and two dimensions. One of the dimensions is the X-axis field (X field) and the other is the Series field (Series field).",paraId:0,tocIndex:3},{value:"Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"X-axis Field",paraId:1,tocIndex:4},{value:"The dimension used to define the X-axis of the chart.",paraId:1,tocIndex:4},{value:"Series Field",paraId:1,tocIndex:4},{value:"The dimension used to categorize data points into distinct series.",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Set chart\u2019s size, either by setting a fixed aspect ratio or a fixed height.",paraId:1,tocIndex:4}],Vs={},Du={title:"Edit Button",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/edit-button.md",lastUpdated:173254844e4,description:"You can personalize the button\u2019s name, icon, and background color. There are three color choices: default, highlighted, or Danger red."},gr=[{id:"edit-button",depth:1,title:"Edit Button"},{id:"introduction",depth:2,title:"Introduction"}],tc=[{value:"You can personalize the button\u2019s name, icon, and background color. There are three color choices: default, highlighted, or Danger red.",paraId:0,tocIndex:1}],Ou={},ed={title:"Connecting Data Blocks",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/connect-block.md",lastUpdated:173254844e4,description:"Connecting data blocks is a powerful feature that enables dynamic filtering linkage between different data components. At its core, this functionality involves establishing a relationship between two collections: a source collection (primary collection) and a target collection (foreign key collection). This connection facilitates seamless data filtering and interaction."},Vi=[{id:"connecting-data-blocks",depth:1,title:"Connecting Data Blocks"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"},{id:"connecting-filter-blocks-to-data-blocks",depth:3,title:"Connecting Filter Blocks to Data Blocks"},{id:"connecting-data-blocks-to-data-blocks",depth:3,title:"Connecting Data Blocks to Data Blocks"},{id:"linkage-between-data-blocks-from-the-same-collection",depth:4,title:"Linkage Between Data Blocks from the Same collection"},{id:"linkage-between-related-data-collection-blocks-different-collection-blocks-with-foreign-key-constraints",depth:4,title:"Linkage Between Related Data collection Blocks (Different collection Blocks with Foreign Key Constraints)"}],vd=[{value:"Connecting data blocks is a powerful feature that enables dynamic filtering linkage between different data components. At its core, this functionality involves establishing a relationship between two collections: a source collection (primary collection) and a target collection (foreign key collection). This connection facilitates seamless data filtering and interaction.",paraId:0,tocIndex:1},{value:"The options for connecting blocks are versatile, including:",paraId:1,tocIndex:1},{value:"Data blocks from the same collection on the current page or pop-up window",paraId:2,tocIndex:1},{value:"Blocks from different collections with foreign key constraints",paraId:2,tocIndex:1},{value:"Blocks from collections with inheritance relationships",paraId:2,tocIndex:1},{value:"Users can connect multiple blocks simultaneously, enhancing the flexibility of data interactions. Regardless of the chosen method, the underlying principle remains consistent: the source collection (actively connecting collection) supplies filter parameters to the target collection (connected collection), enabling precise data filtering and display.",paraId:3,tocIndex:1},{value:"Example: Creating a dynamic linkage between an order collection block and its corresponding order details block.",paraId:4,tocIndex:5},{value:` `,paraId:5},{value:` `,paraId:5},{value:` `,paraId:5},{value:"Example: Leveraging the many-to-one relationship between the order collection and customer collection to implement filtering linkage. This setup allows users to query order data for a specific customer by creating a connection between the customer collection block and the order collection block.",paraId:6,tocIndex:6},{value:` `,paraId:5},{value:` `,paraId:5},{value:` - `,paraId:5}],Ki={},nc={title:"Default Value",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/default-value.md",lastUpdated:1732240239e3,description:"Default values are the initial values for fields in a new state. You can set default values when configuring fields in a data table, or you can specify default values for fields in a new form block. These values can be constants or variables."},oc=[{id:"default-value",depth:1,title:"Default Value"},{id:"introduction",depth:2,title:"Introduction"},{id:"where-can-default-values-be-configured",depth:2,title:"Where Can Default Values Be Configured?"},{id:"data-table-fields",depth:3,title:"Data Table Fields"},{id:"fields-in-new-forms",depth:3,title:"Fields in New Forms"},{id:"adding-subforms",depth:3,title:"Adding Subforms"},{id:"default-values-for-relationship-data",depth:3,title:"Default Values for Relationship Data"},{id:"default-value-variables",depth:2,title:"Default Value Variables"},{id:"what-variables-are-available",depth:3,title:"What Variables Are Available?"},{id:"field-default-value-variables",depth:3,title:"Field Default Value Variables"},{id:"relational-field-default-value-variables",depth:4,title:"Relational Field Default Value Variables"},{id:"non-relational-default-value-variables",depth:4,title:"Non-relational Default Value Variables"},{id:"field-hierarchy-optional-fields",depth:3,title:"Field Hierarchy (Optional Fields)"},{id:"special-cases",depth:2,title:"Special Cases"},{id:"many-to-many-is-equivalent-to-a-one-to-manymany-to-one-combination",depth:3,title:'"Many-to-many" is equivalent to a "one-to-many/many-to-one" combination'},{id:"why-dont-one-to-one-and-one-to-many-relationships-have-default-values",depth:3,title:"Why Don't One-to-one and One-to-many Relationships Have Default Values?"},{id:"why-cant-subforms-or-subtables-with-many-to-one-and-many-to-many-relationships-have-default-values",depth:3,title:"Why Can't Subforms or Subtables with Many-to-one and Many-to-many Relationships Have Default Values?"}],Ru=[{value:"Default values are the initial values for fields in a new state. You can set default values when configuring fields in a data table, or you can specify default values for fields in a new form block. These values can be constants or variables.",paraId:0,tocIndex:1},{value:"Most fields in new forms support setting default values.",paraId:1,tocIndex:4},{value:"Whether adding subforms in new or edit forms, the added sub-data will have default values.",paraId:2,tocIndex:5},{value:'Subform "Add new"',paraId:3,tocIndex:5},{value:'Subtable "Add new"',paraId:4,tocIndex:5},{value:"When editing existing data, if the data is empty, it will not be filled with default values; only newly added data will be filled with default values and will not be saved.",paraId:5,tocIndex:5},{value:'Default values are only available for "many-to-one" and "many-to-many" relationship types when using selector components (Select, RecordPicker).',paraId:6,tocIndex:6},{value:"Date variables;",paraId:7,tocIndex:8},{value:"Current user;",paraId:7,tocIndex:8},{value:"Current record (the concept only applies to existing data);",paraId:7,tocIndex:8},{value:"Current form (ideally, only fields in the form are listed);",paraId:7,tocIndex:8},{value:"Current object (concept for each row of data in a subform);",paraId:7,tocIndex:8},{value:'Form selected records (currently limited to the "Table Block + Add Record Form" combination);',paraId:7,tocIndex:8},{value:"For more information on variables, refer to ",paraId:8,tocIndex:8},{value:"Variables",paraId:9,tocIndex:8},{value:".",paraId:8,tocIndex:8},{value:"There are two types: non-relational field variables and relational field variables.",paraId:10,tocIndex:9},{value:"The variable object must be a collection record;",paraId:11,tocIndex:10},{value:"It must be from a table on the inheritance path, either the current table or a parent-child table;",paraId:11,tocIndex:10},{value:'The "Form selected records" variable is only available for "many-to-many" and "one-to-many/many-to-one" relationship fields;',paraId:11,tocIndex:10},{value:"For multiple levels, flatten and deduplicate the data",paraId:11,tocIndex:10},{value:`// Table selected records: + `,paraId:5}],Ki={},nc={title:"Default Value",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/default-value.md",lastUpdated:173254844e4,description:"Default values are the initial values for fields in a new state. You can set default values when configuring fields in a data table, or you can specify default values for fields in a new form block. These values can be constants or variables."},oc=[{id:"default-value",depth:1,title:"Default Value"},{id:"introduction",depth:2,title:"Introduction"},{id:"where-can-default-values-be-configured",depth:2,title:"Where Can Default Values Be Configured?"},{id:"data-table-fields",depth:3,title:"Data Table Fields"},{id:"fields-in-new-forms",depth:3,title:"Fields in New Forms"},{id:"adding-subforms",depth:3,title:"Adding Subforms"},{id:"default-values-for-relationship-data",depth:3,title:"Default Values for Relationship Data"},{id:"default-value-variables",depth:2,title:"Default Value Variables"},{id:"what-variables-are-available",depth:3,title:"What Variables Are Available?"},{id:"field-default-value-variables",depth:3,title:"Field Default Value Variables"},{id:"relational-field-default-value-variables",depth:4,title:"Relational Field Default Value Variables"},{id:"non-relational-default-value-variables",depth:4,title:"Non-relational Default Value Variables"},{id:"field-hierarchy-optional-fields",depth:3,title:"Field Hierarchy (Optional Fields)"},{id:"special-cases",depth:2,title:"Special Cases"},{id:"many-to-many-is-equivalent-to-a-one-to-manymany-to-one-combination",depth:3,title:'"Many-to-many" is equivalent to a "one-to-many/many-to-one" combination'},{id:"why-dont-one-to-one-and-one-to-many-relationships-have-default-values",depth:3,title:"Why Don't One-to-one and One-to-many Relationships Have Default Values?"},{id:"why-cant-subforms-or-subtables-with-many-to-one-and-many-to-many-relationships-have-default-values",depth:3,title:"Why Can't Subforms or Subtables with Many-to-one and Many-to-many Relationships Have Default Values?"}],Ru=[{value:"Default values are the initial values for fields in a new state. You can set default values when configuring fields in a data table, or you can specify default values for fields in a new form block. These values can be constants or variables.",paraId:0,tocIndex:1},{value:"Most fields in new forms support setting default values.",paraId:1,tocIndex:4},{value:"Whether adding subforms in new or edit forms, the added sub-data will have default values.",paraId:2,tocIndex:5},{value:'Subform "Add new"',paraId:3,tocIndex:5},{value:'Subtable "Add new"',paraId:4,tocIndex:5},{value:"When editing existing data, if the data is empty, it will not be filled with default values; only newly added data will be filled with default values and will not be saved.",paraId:5,tocIndex:5},{value:'Default values are only available for "many-to-one" and "many-to-many" relationship types when using selector components (Select, RecordPicker).',paraId:6,tocIndex:6},{value:"Date variables;",paraId:7,tocIndex:8},{value:"Current user;",paraId:7,tocIndex:8},{value:"Current record (the concept only applies to existing data);",paraId:7,tocIndex:8},{value:"Current form (ideally, only fields in the form are listed);",paraId:7,tocIndex:8},{value:"Current object (concept for each row of data in a subform);",paraId:7,tocIndex:8},{value:'Form selected records (currently limited to the "Table Block + Add Record Form" combination);',paraId:7,tocIndex:8},{value:"For more information on variables, refer to ",paraId:8,tocIndex:8},{value:"Variables",paraId:9,tocIndex:8},{value:".",paraId:8,tocIndex:8},{value:"There are two types: non-relational field variables and relational field variables.",paraId:10,tocIndex:9},{value:"The variable object must be a collection record;",paraId:11,tocIndex:10},{value:"It must be from a table on the inheritance path, either the current table or a parent-child table;",paraId:11,tocIndex:10},{value:'The "Form selected records" variable is only available for "many-to-many" and "one-to-many/many-to-one" relationship fields;',paraId:11,tocIndex:10},{value:"For multiple levels, flatten and deduplicate the data",paraId:11,tocIndex:10},{value:`// Table selected records: [{id:1},{id:2},{id:3},{id:4}] // Table selected records/one-to-one: @@ -2269,8 +2306,8 @@ docker-compose logs app // Flatten [{id:1},{id:2},{id:3},{id:4}] `,paraId:12,tocIndex:10},{value:"The type must be consistent or compatible, such as strings being compatible with numbers, and all objects that provide a toString method;",paraId:13,tocIndex:11},{value:"JSON fields are special and can store any type of data;",paraId:13,tocIndex:11},{value:"Non-relational default value variables",paraId:14,tocIndex:12},{value:"When selecting fields with multiple levels, only one-to-one relationships are supported; many-to-many relationships are not supported;",paraId:15,tocIndex:12},{value:"JSON fields are special and may have fewer restrictions;",paraId:15,tocIndex:12},{value:"Relational default value variables",paraId:16,tocIndex:12},{value:"hasOne: only supports one-to-one relationships;",paraId:17,tocIndex:12},{value:"hasMany: supports both one-to-one (internally converted) and many-to-many relationships;",paraId:17,tocIndex:12},{value:"belongsToMany: supports both one-to-one (internally converted) and many-to-many relationships;",paraId:17,tocIndex:12},{value:"belongsTo: generally for one-to-one relationships, but when the parent relationship is hasMany, it also supports many-to-many (as hasMany/belongsTo is essentially a many-to-many relationship);",paraId:17,tocIndex:12},{value:"Model",paraId:18,tocIndex:14},{value:`When setting default value variables for a many-to-many relationship, if the variable has multiple records, the selected data will have multiple records, as shown below: -When the data table in the table block and the relationship field data table are the same.`,paraId:19,tocIndex:14},{value:"For example, in an A.B relationship, if b1 is associated with a1, it cannot be associated with a2. If b1 is associated with a2, it will disassociate from a1. In this case, the data is not shared, while default values operate on a shared mechanism (both can be associated), so one-to-one and one-to-many cannot have default values.",paraId:20,tocIndex:15},{value:"Because subforms and subtables focus on directly editing relationship data (including adding or removing), and relationship default values work on a shared mechanism where both can be associated but cannot modify the relationship data. Therefore, it is not suitable to provide default values in this scenario.",paraId:21,tocIndex:16},{value:"Additionally, subforms or subtables have subfields, so it would be unclear whether the default value is for rows or columns.",paraId:22,tocIndex:16},{value:"Considering this, it is more appropriate not to allow setting default values for any type of subform or subtable relationship.",paraId:23,tocIndex:16}],rc={},Mu={title:"Display Title",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/display-title.md",lastUpdated:1732240239e3,description:"This option controls whether field titles are displayed. It is enabled by default but allows you to disable it based on different layout requirements, hiding the title display when necessary."},Ks=[{id:"display-title",depth:1,title:"Display Title"},{id:"introduction",depth:2,title:"Introduction"}],Zs=[{value:"This option controls whether field titles are displayed. It is enabled by default but allows you to disable it based on different layout requirements, hiding the title display when necessary.",paraId:0,tocIndex:1}],Zi={},Yi={title:"Number Format",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/number-format.md",lastUpdated:1732240239e3,description:"Number Format is the process of visually enhancing and standardizing numerical fields (including formula fields) to make them more readable. This includes configuring options such as thousand separators, decimal precision, unit conversion, and scientific notation. By setting up numerical formatting, you can cater to the numerical expression preferences of different regions and industries."},Ys=[{id:"number-format",depth:1,title:"Number Format"},{id:"introduction",depth:2,title:"Introduction"},{id:"instructions-for-use",depth:2,title:"Instructions for Use"}],dc=[{value:"Number ",paraId:0,tocIndex:1},{value:"Format",paraId:0,tocIndex:1},{value:" is the process of visually enhancing and standardizing numerical fields (including formula fields) to make them more readable. This includes configuring options such as thousand separators, decimal precision, unit conversion, and scientific notation. By setting up numerical formatting, you can cater to the numerical expression preferences of different regions and industries.",paraId:0,tocIndex:1},{value:"This feature supports simple unit conversions, thousand separators, prefixes and suffixes, precision adjustments, and scientific notation.",paraId:1,tocIndex:2},{value:"Example: Formatting an order amount to include a currency symbol (such as the Chinese Yuan symbol \uFFE5), thousand separators (like commas or periods), and specific decimal precision to ensure the amount is clearly and easily understood.",paraId:2,tocIndex:2},{value:` - `,paraId:3},{value:"Scientific notation in use.",paraId:4,tocIndex:2}],Lu={},Qs={title:"Collaps Panel Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/generic/filter-collapse-item.md",lastUpdated:1732240239e3,description:"The Collapse filter block exclusively supports the selection of relational fields and option fields as filter criteria."},ic=[{id:"collaps-panel-fields",depth:1,title:"Collaps Panel Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"setting-the-data-scope",depth:3,title:"Setting the Data Scope"},{id:"title-field",depth:3,title:"Title Field"}],Qi=[{value:"The Collapse filter block exclusively supports the selection of relational fields and option fields as filter criteria.",paraId:0,tocIndex:1},{value:"Define the data scope for relational fields.",paraId:1,tocIndex:3},{value:"Example: Filtering out non-promotional products.",paraId:2,tocIndex:3},{value:"For additional information, refer to ",paraId:3,tocIndex:3},{value:"Setting the Data Scope",paraId:4,tocIndex:3},{value:".",paraId:3,tocIndex:3},{value:"For further details, refer to ",paraId:5,tocIndex:4},{value:"Title Field",paraId:6,tocIndex:4},{value:".",paraId:5,tocIndex:4},{value:"Default display (collapsed by default)",paraId:7,tocIndex:4},{value:"Define sorting rules (for relational data)",paraId:7,tocIndex:4},{value:"Customize the title",paraId:7,tocIndex:4}],lc={},Ji={title:"Example",toc:"menu",filename:"docs/en-US/handbook/workflow-custom-action-trigger/example.md",lastUpdated:1732240239e3,description:`Imagine we have a "Sample" collection. For samples marked as "Collected," a "Send to Testing" operation is needed. This operation first checks the sample's basic information, generates a "Testing" Record, and then updates the sample's status to "Testing". This entire process is too complex to be handled by simple "Create, Read, Update, Delete" button clicks. In such scenarios, custom operation events are the perfect solution.`},Js=[{id:"example",depth:1,title:"Example"}],Nu=[{value:`Imagine we have a "Sample" collection. For samples marked as "Collected," a "Send to Testing" operation is needed. This operation first checks the sample's basic information, generates a "Testing" Record, and then updates the sample's status to "Testing". This entire process is too complex to be handled by simple "Create, Read, Update, Delete" button clicks. In such scenarios, custom operation events are the perfect solution.`,paraId:0,tocIndex:0},{value:'To start, create a "Sample" collection and a "Testing" collection, and input some basic test data into the Sample collection:',paraId:1,tocIndex:0},{value:`Next, you'll need to create a "Custom action Event" workflow. If you require immediate feedback during the operation, opt for the synchronous mode (bear in mind that synchronous mode doesn't support asynchronous nodes like human intervention):`,paraId:2,tocIndex:0},{value:'Within the trigger configuration, choose "Sample" as the collection:',paraId:3,tocIndex:0},{value:'Now, arrange the logic of the process according to your business needs. For instance, you might set it so that the "Send to Testing" operation is only allowed when the index parameter exceeds ',paraId:4,tocIndex:0},{value:"90",paraId:4,tocIndex:0},{value:"; otherwise, a relevant warning is provided:",paraId:4,tocIndex:0},{value:'The "',paraId:5},{value:"Response Message",paraId:6},{value:`" node can be utilized in synchronous custom operation events to send feedback messages to the client. This feature isn't available in asynchronous mode.`,paraId:5},{value:'After setting up and enabling the workflow, return to the table interface, and add a "Trigger Workflow" button in the operations column:',paraId:7},{value:"Next, in the button's configuration menu, select the option to bind the workflow, and open the configuration window:",paraId:8},{value:"Add the workflow that was previously enabled:",paraId:9},{value:'After submission, rename the button to reflect the action, like "Testing," and the configuration is complete.',paraId:10},{value:`To use the feature, select any sample data from the table and click the "Send to Testing" button to trigger the custom operation event. As per the pre-arranged logic, if the sample's index parameter is below 90, you'll see a warning message like this:`,paraId:11},{value:`If the index parameter is over 90, the process will proceed as expected, creating a "Testing Record" entry and updating the sample's status to "Testing":`,paraId:12},{value:"And there you have it\u2014a simple custom operation event. This approach can be similarly applied to other complex business operations, such as order processing or report submission, using custom operation events to achieve the desired results.",paraId:13}],Xi={},zu={title:"Trigger Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-custom-action-trigger/trigger.md",lastUpdated:1732240239e3,description:'When setting up a workflow, begin by selecting "Custom action event":'},oi=[{id:"trigger-configuration",depth:1,title:"Trigger Configuration"},{id:"creating-a-workflow",depth:2,title:"Creating a Workflow"},{id:"trigger-configuration-1",depth:2,title:"Trigger Configuration"},{id:"data-table",depth:3,title:"Data Table"},{id:"related-data-to-utilize",depth:3,title:"Related Data to Utilize"}],Fu=[{value:'When setting up a workflow, begin by selecting "Custom action event":',paraId:0,tocIndex:1},{value:"Since custom operation events are tied to specific data rows, you'll need to first choose the data table that will be associated with your data model:",paraId:1,tocIndex:3},{value:"If your workflow requires the use of related data from the triggered data row, you can select the necessary deep relationship fields here:",paraId:2,tocIndex:4},{value:"These fields will be automatically preloaded into the workflow's context once the event is triggered, making them available for use within the workflow.",paraId:3,tocIndex:4}],el={},a={title:"Adding a Simple Action",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/action-simple.md",lastUpdated:1732240239e3,description:"NocoBase provides various Configure actions for adding action buttons to the interface."},t=[{id:"adding-a-simple-action",depth:1,title:"Adding a Simple Action"},{id:"scenario-description",depth:2,title:"Scenario Description"},{id:"example-explanation",depth:2,title:"Example Explanation"},{id:"initializing-the-plugin",depth:2,title:"Initializing the Plugin"},{id:"functionality-implementation",depth:2,title:"Functionality Implementation"},{id:"1-define-the-name",depth:3,title:"1. Define the Name"},{id:"2-define-the-schema",depth:3,title:"2. Define the Schema"},{id:"21-define-the-schema",depth:4,title:"2.1 Define the Schema"},{id:"4-implement-schema-settings",depth:3,title:"4. Implement Schema Settings"},{id:"41-define-schema-settings",depth:4,title:"4.1 Define Schema Settings"},{id:"42-register-schema-settings",depth:4,title:"4.2 Register Schema Settings"},{id:"43-use-schema-settings",depth:4,title:"4.3 Use Schema Settings"},{id:"5-add-to-the-configure-actions-page",depth:3,title:"5. Add to the Configure Actions Page"},{id:"6-multi-language-support",depth:3,title:"6. Multi-language Support"},{id:"61-english",depth:4,title:"6.1 English"},{id:"62-chinese",depth:4,title:"6.2 Chinese"},{id:"packaging-and-uploading-to-the-production-environment",depth:3,title:"Packaging and Uploading to the Production Environment"}],d=[{value:"NocoBase provides various ",paraId:0,tocIndex:1},{value:"Configure actions",paraId:0,tocIndex:1},{value:" for adding action buttons to the interface.",paraId:0,tocIndex:1},{value:"If the existing action buttons do not fully meet our needs, we can add new buttons by creating sub-items within the ",paraId:1,tocIndex:1},{value:"Configure actions",paraId:1,tocIndex:1},{value:".",paraId:1,tocIndex:1},{value:'The term "simple action" in the title refers to actions that do not require a popup. For details on how to add a popup action, refer to ',paraId:2,tocIndex:1},{value:"Adding a Popup Action",paraId:3,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"This example creates a button that opens the corresponding block's documentation when clicked. This button will be added to the ",paraId:4,tocIndex:2},{value:"Table",paraId:4,tocIndex:2},{value:", ",paraId:4,tocIndex:2},{value:"Details",paraId:4,tocIndex:2},{value:", and ",paraId:4,tocIndex:2},{value:"Form",paraId:4,tocIndex:2},{value:" blocks within the ",paraId:4,tocIndex:2},{value:"Configure actions",paraId:4,tocIndex:2},{value:".",paraId:4,tocIndex:2},{value:"You can view the complete sample code in ",paraId:5,tocIndex:2},{value:"plugin-samples",paraId:5,tocIndex:2},{value:".",paraId:5,tocIndex:2},{value:` +When the data table in the table block and the relationship field data table are the same.`,paraId:19,tocIndex:14},{value:"For example, in an A.B relationship, if b1 is associated with a1, it cannot be associated with a2. If b1 is associated with a2, it will disassociate from a1. In this case, the data is not shared, while default values operate on a shared mechanism (both can be associated), so one-to-one and one-to-many cannot have default values.",paraId:20,tocIndex:15},{value:"Because subforms and subtables focus on directly editing relationship data (including adding or removing), and relationship default values work on a shared mechanism where both can be associated but cannot modify the relationship data. Therefore, it is not suitable to provide default values in this scenario.",paraId:21,tocIndex:16},{value:"Additionally, subforms or subtables have subfields, so it would be unclear whether the default value is for rows or columns.",paraId:22,tocIndex:16},{value:"Considering this, it is more appropriate not to allow setting default values for any type of subform or subtable relationship.",paraId:23,tocIndex:16}],rc={},Mu={title:"Display Title",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/display-title.md",lastUpdated:173254844e4,description:"This option controls whether field titles are displayed. It is enabled by default but allows you to disable it based on different layout requirements, hiding the title display when necessary."},Ks=[{id:"display-title",depth:1,title:"Display Title"},{id:"introduction",depth:2,title:"Introduction"}],Zs=[{value:"This option controls whether field titles are displayed. It is enabled by default but allows you to disable it based on different layout requirements, hiding the title display when necessary.",paraId:0,tocIndex:1}],Zi={},Yi={title:"Number Format",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/number-format.md",lastUpdated:173254844e4,description:"Number Format is the process of visually enhancing and standardizing numerical fields (including formula fields) to make them more readable. This includes configuring options such as thousand separators, decimal precision, unit conversion, and scientific notation. By setting up numerical formatting, you can cater to the numerical expression preferences of different regions and industries."},Ys=[{id:"number-format",depth:1,title:"Number Format"},{id:"introduction",depth:2,title:"Introduction"},{id:"instructions-for-use",depth:2,title:"Instructions for Use"}],dc=[{value:"Number ",paraId:0,tocIndex:1},{value:"Format",paraId:0,tocIndex:1},{value:" is the process of visually enhancing and standardizing numerical fields (including formula fields) to make them more readable. This includes configuring options such as thousand separators, decimal precision, unit conversion, and scientific notation. By setting up numerical formatting, you can cater to the numerical expression preferences of different regions and industries.",paraId:0,tocIndex:1},{value:"This feature supports simple unit conversions, thousand separators, prefixes and suffixes, precision adjustments, and scientific notation.",paraId:1,tocIndex:2},{value:"Example: Formatting an order amount to include a currency symbol (such as the Chinese Yuan symbol \uFFE5), thousand separators (like commas or periods), and specific decimal precision to ensure the amount is clearly and easily understood.",paraId:2,tocIndex:2},{value:` + `,paraId:3},{value:"Scientific notation in use.",paraId:4,tocIndex:2}],Lu={},Qs={title:"Collaps Panel Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/generic/filter-collapse-item.md",lastUpdated:173254844e4,description:"The Collapse filter block exclusively supports the selection of relational fields and option fields as filter criteria."},ic=[{id:"collaps-panel-fields",depth:1,title:"Collaps Panel Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"setting-the-data-scope",depth:3,title:"Setting the Data Scope"},{id:"title-field",depth:3,title:"Title Field"}],Qi=[{value:"The Collapse filter block exclusively supports the selection of relational fields and option fields as filter criteria.",paraId:0,tocIndex:1},{value:"Define the data scope for relational fields.",paraId:1,tocIndex:3},{value:"Example: Filtering out non-promotional products.",paraId:2,tocIndex:3},{value:"For additional information, refer to ",paraId:3,tocIndex:3},{value:"Setting the Data Scope",paraId:4,tocIndex:3},{value:".",paraId:3,tocIndex:3},{value:"For further details, refer to ",paraId:5,tocIndex:4},{value:"Title Field",paraId:6,tocIndex:4},{value:".",paraId:5,tocIndex:4},{value:"Default display (collapsed by default)",paraId:7,tocIndex:4},{value:"Define sorting rules (for relational data)",paraId:7,tocIndex:4},{value:"Customize the title",paraId:7,tocIndex:4}],lc={},Ji={title:"Example",toc:"menu",filename:"docs/en-US/handbook/workflow-custom-action-trigger/example.md",lastUpdated:173254844e4,description:`Imagine we have a "Sample" collection. For samples marked as "Collected," a "Send to Testing" operation is needed. This operation first checks the sample's basic information, generates a "Testing" Record, and then updates the sample's status to "Testing". This entire process is too complex to be handled by simple "Create, Read, Update, Delete" button clicks. In such scenarios, custom operation events are the perfect solution.`},Js=[{id:"example",depth:1,title:"Example"}],Nu=[{value:`Imagine we have a "Sample" collection. For samples marked as "Collected," a "Send to Testing" operation is needed. This operation first checks the sample's basic information, generates a "Testing" Record, and then updates the sample's status to "Testing". This entire process is too complex to be handled by simple "Create, Read, Update, Delete" button clicks. In such scenarios, custom operation events are the perfect solution.`,paraId:0,tocIndex:0},{value:'To start, create a "Sample" collection and a "Testing" collection, and input some basic test data into the Sample collection:',paraId:1,tocIndex:0},{value:`Next, you'll need to create a "Custom action Event" workflow. If you require immediate feedback during the operation, opt for the synchronous mode (bear in mind that synchronous mode doesn't support asynchronous nodes like human intervention):`,paraId:2,tocIndex:0},{value:'Within the trigger configuration, choose "Sample" as the collection:',paraId:3,tocIndex:0},{value:'Now, arrange the logic of the process according to your business needs. For instance, you might set it so that the "Send to Testing" operation is only allowed when the index parameter exceeds ',paraId:4,tocIndex:0},{value:"90",paraId:4,tocIndex:0},{value:"; otherwise, a relevant warning is provided:",paraId:4,tocIndex:0},{value:'The "',paraId:5},{value:"Response Message",paraId:6},{value:`" node can be utilized in synchronous custom operation events to send feedback messages to the client. This feature isn't available in asynchronous mode.`,paraId:5},{value:'After setting up and enabling the workflow, return to the table interface, and add a "Trigger Workflow" button in the operations column:',paraId:7},{value:"Next, in the button's configuration menu, select the option to bind the workflow, and open the configuration window:",paraId:8},{value:"Add the workflow that was previously enabled:",paraId:9},{value:'After submission, rename the button to reflect the action, like "Testing," and the configuration is complete.',paraId:10},{value:`To use the feature, select any sample data from the table and click the "Send to Testing" button to trigger the custom operation event. As per the pre-arranged logic, if the sample's index parameter is below 90, you'll see a warning message like this:`,paraId:11},{value:`If the index parameter is over 90, the process will proceed as expected, creating a "Testing Record" entry and updating the sample's status to "Testing":`,paraId:12},{value:"And there you have it\u2014a simple custom operation event. This approach can be similarly applied to other complex business operations, such as order processing or report submission, using custom operation events to achieve the desired results.",paraId:13}],Xi={},zu={title:"Trigger Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-custom-action-trigger/trigger.md",lastUpdated:173254844e4,description:'When setting up a workflow, begin by selecting "Custom action event":'},oi=[{id:"trigger-configuration",depth:1,title:"Trigger Configuration"},{id:"creating-a-workflow",depth:2,title:"Creating a Workflow"},{id:"trigger-configuration-1",depth:2,title:"Trigger Configuration"},{id:"data-table",depth:3,title:"Data Table"},{id:"related-data-to-utilize",depth:3,title:"Related Data to Utilize"}],Fu=[{value:'When setting up a workflow, begin by selecting "Custom action event":',paraId:0,tocIndex:1},{value:"Since custom operation events are tied to specific data rows, you'll need to first choose the data table that will be associated with your data model:",paraId:1,tocIndex:3},{value:"If your workflow requires the use of related data from the triggered data row, you can select the necessary deep relationship fields here:",paraId:2,tocIndex:4},{value:"These fields will be automatically preloaded into the workflow's context once the event is triggered, making them available for use within the workflow.",paraId:3,tocIndex:4}],el={},a={title:"Adding a Simple Action",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/action-simple.md",lastUpdated:173254844e4,description:"NocoBase provides various Configure actions for adding action buttons to the interface."},t=[{id:"adding-a-simple-action",depth:1,title:"Adding a Simple Action"},{id:"scenario-description",depth:2,title:"Scenario Description"},{id:"example-explanation",depth:2,title:"Example Explanation"},{id:"initializing-the-plugin",depth:2,title:"Initializing the Plugin"},{id:"functionality-implementation",depth:2,title:"Functionality Implementation"},{id:"1-define-the-name",depth:3,title:"1. Define the Name"},{id:"2-define-the-schema",depth:3,title:"2. Define the Schema"},{id:"21-define-the-schema",depth:4,title:"2.1 Define the Schema"},{id:"4-implement-schema-settings",depth:3,title:"4. Implement Schema Settings"},{id:"41-define-schema-settings",depth:4,title:"4.1 Define Schema Settings"},{id:"42-register-schema-settings",depth:4,title:"4.2 Register Schema Settings"},{id:"43-use-schema-settings",depth:4,title:"4.3 Use Schema Settings"},{id:"5-add-to-the-configure-actions-page",depth:3,title:"5. Add to the Configure Actions Page"},{id:"6-multi-language-support",depth:3,title:"6. Multi-language Support"},{id:"61-english",depth:4,title:"6.1 English"},{id:"62-chinese",depth:4,title:"6.2 Chinese"},{id:"packaging-and-uploading-to-the-production-environment",depth:3,title:"Packaging and Uploading to the Production Environment"}],d=[{value:"NocoBase provides various ",paraId:0,tocIndex:1},{value:"Configure actions",paraId:0,tocIndex:1},{value:" for adding action buttons to the interface.",paraId:0,tocIndex:1},{value:"If the existing action buttons do not fully meet our needs, we can add new buttons by creating sub-items within the ",paraId:1,tocIndex:1},{value:"Configure actions",paraId:1,tocIndex:1},{value:".",paraId:1,tocIndex:1},{value:'The term "simple action" in the title refers to actions that do not require a popup. For details on how to add a popup action, refer to ',paraId:2,tocIndex:1},{value:"Adding a Popup Action",paraId:3,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"This example creates a button that opens the corresponding block's documentation when clicked. This button will be added to the ",paraId:4,tocIndex:2},{value:"Table",paraId:4,tocIndex:2},{value:", ",paraId:4,tocIndex:2},{value:"Details",paraId:4,tocIndex:2},{value:", and ",paraId:4,tocIndex:2},{value:"Form",paraId:4,tocIndex:2},{value:" blocks within the ",paraId:4,tocIndex:2},{value:"Configure actions",paraId:4,tocIndex:2},{value:".",paraId:4,tocIndex:2},{value:"You can view the complete sample code in ",paraId:5,tocIndex:2},{value:"plugin-samples",paraId:5,tocIndex:2},{value:".",paraId:5,tocIndex:2},{value:` `,paraId:6},{value:"Following the instructions in the ",paraId:7,tocIndex:3},{value:"Writing Your First Plugin",paraId:8,tocIndex:3},{value:" document, you can create a project if one does not already exist. If you have an existing project or cloned the source code, skip this step.",paraId:7,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -2378,7 +2415,7 @@ export default PluginInitializerActionSimpleClient; } `,paraId:52,tocIndex:15},{value:"If more language support is needed, additional entries can be added.",paraId:53,tocIndex:15},{value:"You can add multiple languages via ",paraId:54,tocIndex:15},{value:"http://localhost:13000/admin/settings/system-settings",paraId:54,tocIndex:15},{value:" and switch languages in the upper right corner.",paraId:54,tocIndex:15},{value:"Following the ",paraId:55,tocIndex:16},{value:"Build and Package Plugin",paraId:56,tocIndex:16},{value:" guide, we can package the plugin and upload it to the production environment.",paraId:55,tocIndex:16},{value:"If the source code was cloned, a full build is needed first to construct the plugin dependencies.",paraId:57,tocIndex:16},{value:`yarn build `,paraId:58,tocIndex:16},{value:"If the project was created using ",paraId:59,tocIndex:16},{value:"create-nocobase-app",paraId:59,tocIndex:16},{value:", simply run:",paraId:59,tocIndex:16},{value:`yarn build @nocobase-sample/plugin-initializer-action-simple --tar -`,paraId:60,tocIndex:16},{value:"Afterward, you will see the file ",paraId:61,tocIndex:16},{value:"storage/tar/@nocobase-sample/plugin-initializer-action-simple.tar.gz",paraId:61,tocIndex:16},{value:", which can be uploaded for installation following the ",paraId:61,tocIndex:16},{value:"upload guide",paraId:62,tocIndex:16},{value:".",paraId:61,tocIndex:16}],x={},A={title:"\u6DFB\u52A0",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/add-new.md",lastUpdated:1732240239e3},M=[{id:"\u6DFB\u52A0",depth:1,title:"\u6DFB\u52A0"}],re=[],ye={},Re={title:"\u5237\u65B0",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/refresh.md",lastUpdated:1732240239e3,description:"\u5237\u65B0\u64CD\u4F5C\u7528\u4E8E\u91CD\u65B0\u52A0\u8F7D\u6570\u636E\u533A\u5757\u4E2D\u7684\u6570\u636E\uFF0C\u652F\u6301\u624B\u52A8\u5237\u65B0"},ea=[{id:"\u5237\u65B0",depth:1,title:"\u5237\u65B0"}],Ta=[{value:"\u5237\u65B0\u64CD\u4F5C\u7528\u4E8E\u91CD\u65B0\u52A0\u8F7D\u6570\u636E\u533A\u5757\u4E2D\u7684\u6570\u636E\uFF0C\u652F\u6301\u624B\u52A8\u5237\u65B0",paraId:0,tocIndex:0}],at={},_a={title:"UI Schema",toc:"menu",filename:"docs/en-US/development/client/ui-schema/what-is-ui-schema.md",lastUpdated:1732240239e3,description:"A protocol for describing frontend components, based on Formily Schema 2.0, in a JSON Schema style."},_t=[{id:"ui-schema",depth:1,title:"UI Schema"},{id:"examples",depth:2,title:"Examples"},{id:"simplest-component",depth:3,title:"Simplest Component"},{id:"child-components",depth:3,title:"Child Components"},{id:"parameter-descriptions",depth:2,title:"Parameter Descriptions"},{id:"type",depth:3,title:"type"},{id:"name",depth:3,title:"name"},{id:"title",depth:3,title:"title"},{id:"properties",depth:3,title:"properties"},{id:"x-component",depth:3,title:"x-component"},{id:"x-component-props-and-x-use-component-props",depth:3,title:"x-component-props and x-use-component-props"},{id:"x-decorator",depth:3,title:"x-decorator"},{id:"x-decorator-props-and-x-use-decorator-props",depth:3,title:"x-decorator-props and x-use-decorator-props"},{id:"x-display",depth:3,title:"x-display"},{id:"x-display-visible",depth:4,title:"'x-display': 'visible'"},{id:"x-display-hidden",depth:4,title:"'x-display': 'hidden'"},{id:"x-display-none",depth:4,title:"'x-display': 'none'"},{id:"x-pattern",depth:3,title:"x-pattern"},{id:"x-pattern-editable",depth:4,title:"'x-pattern': 'editable'"},{id:"x-pattern-disabled",depth:4,title:"'x-pattern': 'disabled'"},{id:"x-pattern-readpretty",depth:4,title:"'x-pattern': 'readPretty'"},{id:"x-initializer",depth:3,title:"x-initializer"},{id:"x-settings",depth:3,title:"x-settings"},{id:"x-toolbar",depth:3,title:"x-toolbar"}],Xa=[{value:"A protocol for describing frontend components, based on Formily Schema 2.0, in a JSON Schema style.",paraId:0,tocIndex:0},{value:`interface ISchema { +`,paraId:60,tocIndex:16},{value:"Afterward, you will see the file ",paraId:61,tocIndex:16},{value:"storage/tar/@nocobase-sample/plugin-initializer-action-simple.tar.gz",paraId:61,tocIndex:16},{value:", which can be uploaded for installation following the ",paraId:61,tocIndex:16},{value:"upload guide",paraId:62,tocIndex:16},{value:".",paraId:61,tocIndex:16}],x={},A={title:"\u6DFB\u52A0",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/add-new.md",lastUpdated:173254844e4},M=[{id:"\u6DFB\u52A0",depth:1,title:"\u6DFB\u52A0"}],re=[],ye={},Re={title:"\u5237\u65B0",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/refresh.md",lastUpdated:173254844e4,description:"\u5237\u65B0\u64CD\u4F5C\u7528\u4E8E\u91CD\u65B0\u52A0\u8F7D\u6570\u636E\u533A\u5757\u4E2D\u7684\u6570\u636E\uFF0C\u652F\u6301\u624B\u52A8\u5237\u65B0"},ea=[{id:"\u5237\u65B0",depth:1,title:"\u5237\u65B0"}],Ta=[{value:"\u5237\u65B0\u64CD\u4F5C\u7528\u4E8E\u91CD\u65B0\u52A0\u8F7D\u6570\u636E\u533A\u5757\u4E2D\u7684\u6570\u636E\uFF0C\u652F\u6301\u624B\u52A8\u5237\u65B0",paraId:0,tocIndex:0}],at={},_a={title:"UI Schema",toc:"menu",filename:"docs/en-US/development/client/ui-schema/what-is-ui-schema.md",lastUpdated:173254844e4,description:"A protocol for describing frontend components, based on Formily Schema 2.0, in a JSON Schema style."},_t=[{id:"ui-schema",depth:1,title:"UI Schema"},{id:"examples",depth:2,title:"Examples"},{id:"simplest-component",depth:3,title:"Simplest Component"},{id:"child-components",depth:3,title:"Child Components"},{id:"parameter-descriptions",depth:2,title:"Parameter Descriptions"},{id:"type",depth:3,title:"type"},{id:"name",depth:3,title:"name"},{id:"title",depth:3,title:"title"},{id:"properties",depth:3,title:"properties"},{id:"x-component",depth:3,title:"x-component"},{id:"x-component-props-and-x-use-component-props",depth:3,title:"x-component-props and x-use-component-props"},{id:"x-decorator",depth:3,title:"x-decorator"},{id:"x-decorator-props-and-x-use-decorator-props",depth:3,title:"x-decorator-props and x-use-decorator-props"},{id:"x-display",depth:3,title:"x-display"},{id:"x-display-visible",depth:4,title:"'x-display': 'visible'"},{id:"x-display-hidden",depth:4,title:"'x-display': 'hidden'"},{id:"x-display-none",depth:4,title:"'x-display': 'none'"},{id:"x-pattern",depth:3,title:"x-pattern"},{id:"x-pattern-editable",depth:4,title:"'x-pattern': 'editable'"},{id:"x-pattern-disabled",depth:4,title:"'x-pattern': 'disabled'"},{id:"x-pattern-readpretty",depth:4,title:"'x-pattern': 'readPretty'"},{id:"x-initializer",depth:3,title:"x-initializer"},{id:"x-settings",depth:3,title:"x-settings"},{id:"x-toolbar",depth:3,title:"x-toolbar"}],Xa=[{value:"A protocol for describing frontend components, based on Formily Schema 2.0, in a JSON Schema style.",paraId:0,tocIndex:0},{value:`interface ISchema { type: 'void' | 'string' | 'number' | 'object' | 'array'; name?: string; title?: any; @@ -2692,7 +2729,7 @@ interface ISchema { 'x-decorator': 'CardItem', 'x-component': 'Hello', } -`,paraId:85,tocIndex:23},{value:"Custom components can also use ",paraId:86,tocIndex:23},{value:"useToolbarRender()",paraId:86,tocIndex:23},{value:" to handle ",paraId:86,tocIndex:23},{value:"x-toolbar",paraId:86,tocIndex:23},{value:" rendering. Refer to the ",paraId:86,tocIndex:23},{value:"SchemaToolbar Toolbar",paraId:87,tocIndex:23},{value:" section for detailed usage.",paraId:86,tocIndex:23}],ln={},qo={title:"How to extend fields",toc:"menu",filename:"docs/en-US/development/server/collections/field-extension.md",lastUpdated:1732240239e3,description:"The composition of a Collection Field in NocoBase consists of"},Ke=[{id:"how-to-extend-fields",depth:1,title:"How to extend fields"},{id:"extend-field-type",depth:2,title:"Extend Field Type"},{id:"extend-field-component",depth:2,title:"Extend Field Component"},{id:"extend-field-interface",depth:2,title:"Extend Field Interface"}],Ne=[{value:"The composition of a Collection Field in NocoBase consists of",paraId:0,tocIndex:0},{value:"For example, to extend the password type field ``type: 'password'`",paraId:1,tocIndex:1},{value:`export class MyPlugin extends Plugin { +`,paraId:85,tocIndex:23},{value:"Custom components can also use ",paraId:86,tocIndex:23},{value:"useToolbarRender()",paraId:86,tocIndex:23},{value:" to handle ",paraId:86,tocIndex:23},{value:"x-toolbar",paraId:86,tocIndex:23},{value:" rendering. Refer to the ",paraId:86,tocIndex:23},{value:"SchemaToolbar Toolbar",paraId:87,tocIndex:23},{value:" section for detailed usage.",paraId:86,tocIndex:23}],ln={},qo={title:"How to extend fields",toc:"menu",filename:"docs/en-US/development/server/collections/field-extension.md",lastUpdated:173254844e4,description:"The composition of a Collection Field in NocoBase consists of"},Ke=[{id:"how-to-extend-fields",depth:1,title:"How to extend fields"},{id:"extend-field-type",depth:2,title:"Extend Field Type"},{id:"extend-field-component",depth:2,title:"Extend Field Component"},{id:"extend-field-interface",depth:2,title:"Extend Field Interface"}],Ne=[{value:"The composition of a Collection Field in NocoBase consists of",paraId:0,tocIndex:0},{value:"For example, to extend the password type field ``type: 'password'`",paraId:1,tocIndex:1},{value:`export class MyPlugin extends Plugin { beforeLoad() { this.db.registerFieldTypes({ password: PasswordField, @@ -2705,8 +2742,8 @@ export class PasswordField extends Field { return DataTypes.STRING; } } -`,paraId:2,tocIndex:1},{value:"More implementations of the built-in field types can be found here",paraId:3,tocIndex:1},{value:"Also see the full samples plugin ",paraId:3,tocIndex:1},{value:"packages/samples/shop-modeling",paraId:3,tocIndex:1},{value:"Related extension documentation can be found at",paraId:4,tocIndex:2},{value:"Extending Schema Components",paraId:5,tocIndex:2},{value:"Schema component library",paraId:6,tocIndex:2},{value:"Built-in field interfaces view here",paraId:7,tocIndex:3}],Xe={},za={title:"Actions",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/index.md",lastUpdated:1732240239e3,description:"In the UI, actions are buttons designed to trigger specific commands. These buttons can be placed directly on the page, within dialogs or drawers, and can also be used in combination with blocks. Currently, dynamic configurations of actions are primarily used in combination with blocks."},gt=[{id:"actions",depth:1,title:"Actions"},{id:"actions-in-blocks",depth:2,title:"Actions in Blocks"},{id:"action-designer-toolbar",depth:2,title:"Action Designer (Toolbar)"},{id:"action-drag-sorting",depth:2,title:"Action Drag Sorting"},{id:"general-parameter-configuration",depth:2,title:"General Parameter Configuration"},{id:"action-linkage-rules",depth:2,title:"Action Linkage Rules"}],Bt=[{value:"In the UI, actions are buttons designed to trigger specific commands. These buttons can be placed directly on the page, within dialogs or drawers, and can also be used in combination with blocks. Currently, dynamic configurations of actions are primarily used in combination with blocks.",paraId:0,tocIndex:0},{value:"Unlike blocks and fields, the action designer only features two icons:",paraId:1,tocIndex:2},{value:"Drag",paraId:2,tocIndex:2},{value:"Parameter Configuration",paraId:2,tocIndex:2},{value:'By holding down the "Drag" icon in the button designer, you can reorder the buttons.',paraId:3,tocIndex:3},{value:`A gif is missing -`,paraId:4,tocIndex:3},{value:"Edit Button",paraId:5,tocIndex:4},{value:"Open Mode: Drawer, Dialog",paraId:5,tocIndex:4},{value:"Popup Size: Large, Medium, Small",paraId:5,tocIndex:4},{value:"Delete",paraId:5,tocIndex:4},{value:'Actions with contextual data can also be configured with "Linkage Rules."',paraId:6,tocIndex:5},{value:"Linkage Rules Configuration",paraId:7,tocIndex:5},{value:"Multiple rules can be added, with conditions similar to those used in filtering. These rules can control whether buttons are displayed, hidden, enabled, or disabled.",paraId:8,tocIndex:5}],jt={},an={title:"Print",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/print.md",lastUpdated:1732240239e3},Bo=[{id:"print",depth:1,title:"Print"}],$n=[],ad={},Bu={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/index.md",lastUpdated:1732240239e3,description:"NocoBase classifies fields into the following categories from the Interface perspective:"},cp=[{id:"overview",depth:1,title:"Overview"},{id:"interface-types-of-fields",depth:2,title:"Interface Types of Fields"},{id:"field-data-types",depth:2,title:"Field Data Types"},{id:"field-type-mapping",depth:2,title:"Field Type Mapping"}],sp=[{value:"NocoBase classifies fields into the following categories from the Interface perspective:",paraId:0,tocIndex:1},{value:"Each Field Interface has a default data type. For instance, for fields with the Interface as a Number, the default data type is double, but it can also be float, decimal, etc. The data types currently supported are:",paraId:1,tocIndex:2},{value:"The process for adding new fields to the main database is as follows:",paraId:2,tocIndex:3},{value:"Select the Interface type",paraId:3,tocIndex:3},{value:"Configure the optional data type for the current Interface",paraId:3,tocIndex:3},{value:"The process for field mapping from external data sources is:",paraId:4,tocIndex:3},{value:"Automatically map the corresponding data type (Field type) and UI type (Field Interface) based on the field type of the external database.",paraId:5,tocIndex:3},{value:"Modify to a more suitable data type and Interface type as needed",paraId:5,tocIndex:3}],up={},pp={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-source-manager/external-database.md",lastUpdated:1732240239e3,description:"Use an existing external database as a data source. Currently, the supported external databases are MySQL, MariaDB, and PostgreSQL."},Ip=[{id:"overview",depth:1,title:"Overview"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"adding-an-external-database",depth:3,title:"Adding an External Database"},{id:"data-table-synchronization",depth:3,title:"Data Table Synchronization"},{id:"configuring-fields",depth:3,title:"Configuring Fields"},{id:"field-type-mapping",depth:3,title:"Field Type Mapping"},{id:"unsupported-field-types",depth:3,title:"Unsupported Field Types"},{id:"filter-target-key",depth:3,title:"Filter Target Key"}],_p=[{value:"Use an existing external database as a data source. Currently, the supported external databases are MySQL, MariaDB, and PostgreSQL.",paraId:0,tocIndex:1},{value:"After activating the plugin, you can select and add it from the Add new dropdown menu in the data source management.",paraId:1,tocIndex:3},{value:"Fill in the information of the database you need to connect to.",paraId:2,tocIndex:3},{value:'After establishing a connection with the external database, all data tables in the data source will be directly read. The external database does not support directly adding data tables or modifying table structures. If modifications are needed, they can be made through the database client, and then the "Refresh" button can be clicked on the interface to synchronize.',paraId:3,tocIndex:4},{value:'The external database will automatically read the fields of the existing data tables and display them. You can quickly view and configure the title of the field, the data type (Field type), and the UI type (Field interface). You can also click the "Edit" button to modify more configurations.',paraId:4,tocIndex:5},{value:"Because the external database does not support modifying table structures, the only type available when adding new fields is the relationship field. Relationship fields are not real fields, but are used to establish connections between tables.",paraId:5,tocIndex:5},{value:"For more content, refer to the ",paraId:6,tocIndex:5},{value:"Collection Fields/Overview",paraId:7,tocIndex:5},{value:" section.",paraId:6,tocIndex:5},{value:"NocoBase will automatically map the corresponding data type (Field type) and UI type (Field Interface) for the field types of the external database.",paraId:8,tocIndex:6},{value:"Data type (Field type): Used to define the kind, format, and structure of data that the field can store.",paraId:9,tocIndex:6},{value:"UI type (Field Interface): Refers to the type of control used to display and input field values in the user interface.",paraId:9,tocIndex:6},{value:"The table below shows the mapping of field types for PostgreSQL, MySQL/MariaDB to NocoBase Data Type and NocoBase Interface Type.",paraId:10,tocIndex:6},{value:"PostgreSQL",paraId:11,tocIndex:6},{value:"MySQL/MariaDB",paraId:11,tocIndex:6},{value:"NocoBase Data Type",paraId:11,tocIndex:6},{value:"NocoBase Interface Type",paraId:11,tocIndex:6},{value:"BOOLEAN",paraId:11,tocIndex:6},{value:"BOOLEAN",paraId:11,tocIndex:6},{value:"TINYINT(1)",paraId:11,tocIndex:6},{value:"boolean",paraId:11,tocIndex:6},{value:"checkbox ",paraId:11,tocIndex:6},{value:" switch",paraId:11,tocIndex:6},{value:"SMALLINT",paraId:11,tocIndex:6},{value:"INTEGER",paraId:11,tocIndex:6},{value:"SERIAL",paraId:11,tocIndex:6},{value:"SMALLSERIAL",paraId:11,tocIndex:6},{value:"TINYINT",paraId:11,tocIndex:6},{value:"SMALLINT",paraId:11,tocIndex:6},{value:"MEDIUMINT",paraId:11,tocIndex:6},{value:"INTEGER",paraId:11,tocIndex:6},{value:"integer",paraId:11,tocIndex:6},{value:"boolean",paraId:11,tocIndex:6},{value:"sort",paraId:11,tocIndex:6},{value:"integer",paraId:11,tocIndex:6},{value:"sort",paraId:11,tocIndex:6},{value:"checkbox",paraId:11,tocIndex:6},{value:"switch",paraId:11,tocIndex:6},{value:"select",paraId:11,tocIndex:6},{value:"radioGroup",paraId:11,tocIndex:6},{value:"BIGINT",paraId:11,tocIndex:6},{value:"BIGSERIAL",paraId:11,tocIndex:6},{value:"BIGINT",paraId:11,tocIndex:6},{value:"bigInt",paraId:11,tocIndex:6},{value:"sort",paraId:11,tocIndex:6},{value:"integer",paraId:11,tocIndex:6},{value:"sort",paraId:11,tocIndex:6},{value:"checkbox",paraId:11,tocIndex:6},{value:"switch",paraId:11,tocIndex:6},{value:"select",paraId:11,tocIndex:6},{value:"radioGroup",paraId:11,tocIndex:6},{value:"unixTimestamp",paraId:11,tocIndex:6},{value:"createdAt",paraId:11,tocIndex:6},{value:"updatedAt",paraId:11,tocIndex:6},{value:"REAL",paraId:11,tocIndex:6},{value:"FLOAT",paraId:11,tocIndex:6},{value:"float",paraId:11,tocIndex:6},{value:"number",paraId:11,tocIndex:6},{value:"percent",paraId:11,tocIndex:6},{value:"DOUBLE PRECISION",paraId:11,tocIndex:6},{value:"DOUBLE PRECISION",paraId:11,tocIndex:6},{value:"double",paraId:11,tocIndex:6},{value:"number",paraId:11,tocIndex:6},{value:"percent",paraId:11,tocIndex:6},{value:"DECIMAL",paraId:11,tocIndex:6},{value:"NUMERIC",paraId:11,tocIndex:6},{value:"DECIMAL",paraId:11,tocIndex:6},{value:"decimal",paraId:11,tocIndex:6},{value:"number",paraId:11,tocIndex:6},{value:"percent",paraId:11,tocIndex:6},{value:"currency",paraId:11,tocIndex:6},{value:"VARCHAR",paraId:11,tocIndex:6},{value:"CHAR",paraId:11,tocIndex:6},{value:"VARCHAR",paraId:11,tocIndex:6},{value:"CHAR",paraId:11,tocIndex:6},{value:"string",paraId:11,tocIndex:6},{value:"password",paraId:11,tocIndex:6},{value:"uuid",paraId:11,tocIndex:6},{value:"nanoid",paraId:11,tocIndex:6},{value:"input",paraId:11,tocIndex:6},{value:"email",paraId:11,tocIndex:6},{value:"phone",paraId:11,tocIndex:6},{value:"password",paraId:11,tocIndex:6},{value:"color",paraId:11,tocIndex:6},{value:"icon",paraId:11,tocIndex:6},{value:"select",paraId:11,tocIndex:6},{value:"radioGroup",paraId:11,tocIndex:6},{value:"uuid",paraId:11,tocIndex:6},{value:"nanoid",paraId:11,tocIndex:6},{value:"TEXT",paraId:11,tocIndex:6},{value:"TEXT",paraId:11,tocIndex:6},{value:"TINYTEXT",paraId:11,tocIndex:6},{value:"MEDIUMTEXT",paraId:11,tocIndex:6},{value:"LONGTEXT",paraId:11,tocIndex:6},{value:"text",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"textarea",paraId:11,tocIndex:6},{value:"markdown",paraId:11,tocIndex:6},{value:"vditor",paraId:11,tocIndex:6},{value:"richText",paraId:11,tocIndex:6},{value:"url",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"UUID",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"uuid",paraId:11,tocIndex:6},{value:"uuid",paraId:11,tocIndex:6},{value:"JSON",paraId:11,tocIndex:6},{value:"JSONB",paraId:11,tocIndex:6},{value:"JSON",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"TIMESTAMP",paraId:11,tocIndex:6},{value:"DATETIME",paraId:11,tocIndex:6},{value:"TIMESTAMP",paraId:11,tocIndex:6},{value:"date",paraId:11,tocIndex:6},{value:"date",paraId:11,tocIndex:6},{value:"time",paraId:11,tocIndex:6},{value:"createdAt",paraId:11,tocIndex:6},{value:"updatedAt",paraId:11,tocIndex:6},{value:"DATE",paraId:11,tocIndex:6},{value:"DATE",paraId:11,tocIndex:6},{value:"dateOnly",paraId:11,tocIndex:6},{value:"datetime",paraId:11,tocIndex:6},{value:"TIME",paraId:11,tocIndex:6},{value:"TIME",paraId:11,tocIndex:6},{value:"time",paraId:11,tocIndex:6},{value:"time",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"YEAR",paraId:11,tocIndex:6},{value:"datetime",paraId:11,tocIndex:6},{value:"CIRCEL",paraId:11,tocIndex:6},{value:"circle",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"circle",paraId:11,tocIndex:6},{value:"PATH",paraId:11,tocIndex:6},{value:"GEOMETRY(LINESTRING)",paraId:11,tocIndex:6},{value:"LINESTRING",paraId:11,tocIndex:6},{value:"lineString",paraId:11,tocIndex:6},{value:"Json",paraId:11,tocIndex:6},{value:"lineString",paraId:11,tocIndex:6},{value:"POINT",paraId:11,tocIndex:6},{value:"GEOMETRY(POINT)",paraId:11,tocIndex:6},{value:"POINT",paraId:11,tocIndex:6},{value:"point",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"point",paraId:11,tocIndex:6},{value:"POLYGON",paraId:11,tocIndex:6},{value:"GEOMETRY(POLYGON)",paraId:11,tocIndex:6},{value:"POLYGON",paraId:11,tocIndex:6},{value:"polygon",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"polygon",paraId:11,tocIndex:6},{value:"GEOMETRY",paraId:11,tocIndex:6},{value:"GEOMETRY",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"BLOB",paraId:11,tocIndex:6},{value:"BLOB",paraId:11,tocIndex:6},{value:"blob",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"ENUM",paraId:11,tocIndex:6},{value:"ENUM",paraId:11,tocIndex:6},{value:"enum",paraId:11,tocIndex:6},{value:"select",paraId:11,tocIndex:6},{value:"radioGroup",paraId:11,tocIndex:6},{value:"ARRAY",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"array",paraId:11,tocIndex:6},{value:"multipleSelect",paraId:11,tocIndex:6},{value:"checkboxGroup",paraId:11,tocIndex:6},{value:"BIT",paraId:11,tocIndex:6},{value:"BIT",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"SET",paraId:11,tocIndex:6},{value:"SET",paraId:11,tocIndex:6},{value:"set",paraId:11,tocIndex:6},{value:"multipleSelect",paraId:11,tocIndex:6},{value:"checkboxGroup",paraId:11,tocIndex:6},{value:"RANGE",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"Unsupported field types will be displayed separately. These fields need to be developed for adaptation before they can be used.",paraId:12,tocIndex:7},{value:"Data tables that are displayed as blocks must have a filter target key configured. The filter target key refers to filtering data based on a specific field, and the field value must be unique. The filter target key defaults to the primary key field of the data table. If it is a view or a data table without a primary key, or a data table with a composite primary key, you need to customize the filter target key.",paraId:13,tocIndex:8},{value:"Only data tables that have set a filter target key can be added to the page.",paraId:14,tocIndex:8}],vp={},mp={title:"Column Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/column.md",lastUpdated:1732240239e3,description:"Configure 1 measure and 2 dimensions, where one dimension is used as the X-axis field (X field) and the other as the category field (Series field). The X-axis field and the category field can be the same."},hp=[{id:"column-chart",depth:1,title:"Column Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-measure-1-dimension",depth:3,title:"1 Measure, 1 Dimension"},{id:"1-measure-1-axis-dimension-1-category-dimension",depth:3,title:"1 Measure, 1 Axis Dimension, 1 Category Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],fp=[{value:"Configure 1 measure and 2 dimensions, where one dimension is used as the X-axis field (X field) and the other as the category field (Series field). The X-axis field and the category field can be the same.",paraId:0,tocIndex:3},{value:"Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"X-axis Field",paraId:1,tocIndex:4},{value:"The dimension field for the X-axis",paraId:1,tocIndex:4},{value:"Category Field",paraId:1,tocIndex:4},{value:"The dimension field for categorization",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Set the size of the chart, either with a fixed aspect ratio or fixed height",paraId:1,tocIndex:4},{value:"Grouped Display",paraId:1,tocIndex:4},{value:"Toggle grouped display",paraId:1,tocIndex:4},{value:"Stacked Display",paraId:1,tocIndex:4},{value:"Toggle stacked display",paraId:1,tocIndex:4},{value:"Percentage Display",paraId:1,tocIndex:4},{value:"Toggle percentage display",paraId:1,tocIndex:4}],xp={},gp={title:"Extended Tutorial",toc:"menu",filename:"docs/en-US/handbook/data-visualization/step-by-step/index.md",lastUpdated:1732240239e3,description:"Using the addition of ECharts charts as an example, the complete code is available in the @nocobase/plugin-sample-add-custom-charts plugin."},bp=[{id:"extended-tutorial",depth:1,title:"Extended Tutorial"},{id:"creating-a-new-plugin",depth:2,title:"Creating a New Plugin"},{id:"echarts-react-component",depth:2,title:"ECharts React Component"},{id:"extending-the-chart-class",depth:2,title:"Extending the Chart Class"},{id:"step-1",depth:3,title:"Step 1"},{id:"step-2",depth:3,title:"Step 2"},{id:"step-3",depth:3,title:"Step 3"},{id:"step-4",depth:3,title:"Step 4"},{id:"defining-charts",depth:2,title:"Defining Charts"},{id:"adding-charts",depth:2,title:"Adding Charts"}],yp=[{value:"Using the addition of ECharts charts as an example, the complete code is available in the ",paraId:0,tocIndex:0},{value:"@nocobase/plugin-sample-add-custom-charts",paraId:0,tocIndex:0},{value:" plugin.",paraId:0,tocIndex:0},{value:"Follow the steps in the ",paraId:1,tocIndex:1},{value:"Plugin Development Guide",paraId:1,tocIndex:1},{value:" to create a new plugin. Be sure to include the dependencies ",paraId:1,tocIndex:1},{value:"echarts",paraId:1,tocIndex:1},{value:", ",paraId:1,tocIndex:1},{value:"echarts-for-react",paraId:1,tocIndex:1},{value:", and ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-data-visualization",paraId:1,tocIndex:1},{value:", placing these external dependencies in the ",paraId:1,tocIndex:1},{value:"devDependencies",paraId:1,tocIndex:1},{value:" section of the ",paraId:1,tocIndex:1},{value:"package.json",paraId:1,tocIndex:1},{value:" file.",paraId:1,tocIndex:1},{value:`yarn pm create @nocobase/plugin-sample-add-custom-charts +`,paraId:2,tocIndex:1},{value:"More implementations of the built-in field types can be found here",paraId:3,tocIndex:1},{value:"Also see the full samples plugin ",paraId:3,tocIndex:1},{value:"packages/samples/shop-modeling",paraId:3,tocIndex:1},{value:"Related extension documentation can be found at",paraId:4,tocIndex:2},{value:"Extending Schema Components",paraId:5,tocIndex:2},{value:"Schema component library",paraId:6,tocIndex:2},{value:"Built-in field interfaces view here",paraId:7,tocIndex:3}],Xe={},za={title:"Actions",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/index.md",lastUpdated:173254844e4,description:"In the UI, actions are buttons designed to trigger specific commands. These buttons can be placed directly on the page, within dialogs or drawers, and can also be used in combination with blocks. Currently, dynamic configurations of actions are primarily used in combination with blocks."},gt=[{id:"actions",depth:1,title:"Actions"},{id:"actions-in-blocks",depth:2,title:"Actions in Blocks"},{id:"action-designer-toolbar",depth:2,title:"Action Designer (Toolbar)"},{id:"action-drag-sorting",depth:2,title:"Action Drag Sorting"},{id:"general-parameter-configuration",depth:2,title:"General Parameter Configuration"},{id:"action-linkage-rules",depth:2,title:"Action Linkage Rules"}],Bt=[{value:"In the UI, actions are buttons designed to trigger specific commands. These buttons can be placed directly on the page, within dialogs or drawers, and can also be used in combination with blocks. Currently, dynamic configurations of actions are primarily used in combination with blocks.",paraId:0,tocIndex:0},{value:"Unlike blocks and fields, the action designer only features two icons:",paraId:1,tocIndex:2},{value:"Drag",paraId:2,tocIndex:2},{value:"Parameter Configuration",paraId:2,tocIndex:2},{value:'By holding down the "Drag" icon in the button designer, you can reorder the buttons.',paraId:3,tocIndex:3},{value:`A gif is missing +`,paraId:4,tocIndex:3},{value:"Edit Button",paraId:5,tocIndex:4},{value:"Open Mode: Drawer, Dialog",paraId:5,tocIndex:4},{value:"Popup Size: Large, Medium, Small",paraId:5,tocIndex:4},{value:"Delete",paraId:5,tocIndex:4},{value:'Actions with contextual data can also be configured with "Linkage Rules."',paraId:6,tocIndex:5},{value:"Linkage Rules Configuration",paraId:7,tocIndex:5},{value:"Multiple rules can be added, with conditions similar to those used in filtering. These rules can control whether buttons are displayed, hidden, enabled, or disabled.",paraId:8,tocIndex:5}],jt={},an={title:"Print",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/print.md",lastUpdated:173254844e4},Bo=[{id:"print",depth:1,title:"Print"}],$n=[],ad={},Bu={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection-fields/index.md",lastUpdated:173254844e4,description:"NocoBase classifies fields into the following categories from the Interface perspective:"},cp=[{id:"overview",depth:1,title:"Overview"},{id:"interface-types-of-fields",depth:2,title:"Interface Types of Fields"},{id:"field-data-types",depth:2,title:"Field Data Types"},{id:"field-type-mapping",depth:2,title:"Field Type Mapping"}],sp=[{value:"NocoBase classifies fields into the following categories from the Interface perspective:",paraId:0,tocIndex:1},{value:"Each Field Interface has a default data type. For instance, for fields with the Interface as a Number, the default data type is double, but it can also be float, decimal, etc. The data types currently supported are:",paraId:1,tocIndex:2},{value:"The process for adding new fields to the main database is as follows:",paraId:2,tocIndex:3},{value:"Select the Interface type",paraId:3,tocIndex:3},{value:"Configure the optional data type for the current Interface",paraId:3,tocIndex:3},{value:"The process for field mapping from external data sources is:",paraId:4,tocIndex:3},{value:"Automatically map the corresponding data type (Field type) and UI type (Field Interface) based on the field type of the external database.",paraId:5,tocIndex:3},{value:"Modify to a more suitable data type and Interface type as needed",paraId:5,tocIndex:3}],up={},pp={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-source-manager/external-database.md",lastUpdated:173254844e4,description:"Use an existing external database as a data source. Currently, the supported external databases are MySQL, MariaDB, and PostgreSQL."},Ip=[{id:"overview",depth:1,title:"Overview"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"adding-an-external-database",depth:3,title:"Adding an External Database"},{id:"data-table-synchronization",depth:3,title:"Data Table Synchronization"},{id:"configuring-fields",depth:3,title:"Configuring Fields"},{id:"field-type-mapping",depth:3,title:"Field Type Mapping"},{id:"unsupported-field-types",depth:3,title:"Unsupported Field Types"},{id:"filter-target-key",depth:3,title:"Filter Target Key"}],_p=[{value:"Use an existing external database as a data source. Currently, the supported external databases are MySQL, MariaDB, and PostgreSQL.",paraId:0,tocIndex:1},{value:"After activating the plugin, you can select and add it from the Add new dropdown menu in the data source management.",paraId:1,tocIndex:3},{value:"Fill in the information of the database you need to connect to.",paraId:2,tocIndex:3},{value:'After establishing a connection with the external database, all data tables in the data source will be directly read. The external database does not support directly adding data tables or modifying table structures. If modifications are needed, they can be made through the database client, and then the "Refresh" button can be clicked on the interface to synchronize.',paraId:3,tocIndex:4},{value:'The external database will automatically read the fields of the existing data tables and display them. You can quickly view and configure the title of the field, the data type (Field type), and the UI type (Field interface). You can also click the "Edit" button to modify more configurations.',paraId:4,tocIndex:5},{value:"Because the external database does not support modifying table structures, the only type available when adding new fields is the relationship field. Relationship fields are not real fields, but are used to establish connections between tables.",paraId:5,tocIndex:5},{value:"For more content, refer to the ",paraId:6,tocIndex:5},{value:"Collection Fields/Overview",paraId:7,tocIndex:5},{value:" section.",paraId:6,tocIndex:5},{value:"NocoBase will automatically map the corresponding data type (Field type) and UI type (Field Interface) for the field types of the external database.",paraId:8,tocIndex:6},{value:"Data type (Field type): Used to define the kind, format, and structure of data that the field can store.",paraId:9,tocIndex:6},{value:"UI type (Field Interface): Refers to the type of control used to display and input field values in the user interface.",paraId:9,tocIndex:6},{value:"The table below shows the mapping of field types for PostgreSQL, MySQL/MariaDB to NocoBase Data Type and NocoBase Interface Type.",paraId:10,tocIndex:6},{value:"PostgreSQL",paraId:11,tocIndex:6},{value:"MySQL/MariaDB",paraId:11,tocIndex:6},{value:"NocoBase Data Type",paraId:11,tocIndex:6},{value:"NocoBase Interface Type",paraId:11,tocIndex:6},{value:"BOOLEAN",paraId:11,tocIndex:6},{value:"BOOLEAN",paraId:11,tocIndex:6},{value:"TINYINT(1)",paraId:11,tocIndex:6},{value:"boolean",paraId:11,tocIndex:6},{value:"checkbox ",paraId:11,tocIndex:6},{value:" switch",paraId:11,tocIndex:6},{value:"SMALLINT",paraId:11,tocIndex:6},{value:"INTEGER",paraId:11,tocIndex:6},{value:"SERIAL",paraId:11,tocIndex:6},{value:"SMALLSERIAL",paraId:11,tocIndex:6},{value:"TINYINT",paraId:11,tocIndex:6},{value:"SMALLINT",paraId:11,tocIndex:6},{value:"MEDIUMINT",paraId:11,tocIndex:6},{value:"INTEGER",paraId:11,tocIndex:6},{value:"integer",paraId:11,tocIndex:6},{value:"boolean",paraId:11,tocIndex:6},{value:"sort",paraId:11,tocIndex:6},{value:"integer",paraId:11,tocIndex:6},{value:"sort",paraId:11,tocIndex:6},{value:"checkbox",paraId:11,tocIndex:6},{value:"switch",paraId:11,tocIndex:6},{value:"select",paraId:11,tocIndex:6},{value:"radioGroup",paraId:11,tocIndex:6},{value:"BIGINT",paraId:11,tocIndex:6},{value:"BIGSERIAL",paraId:11,tocIndex:6},{value:"BIGINT",paraId:11,tocIndex:6},{value:"bigInt",paraId:11,tocIndex:6},{value:"sort",paraId:11,tocIndex:6},{value:"integer",paraId:11,tocIndex:6},{value:"sort",paraId:11,tocIndex:6},{value:"checkbox",paraId:11,tocIndex:6},{value:"switch",paraId:11,tocIndex:6},{value:"select",paraId:11,tocIndex:6},{value:"radioGroup",paraId:11,tocIndex:6},{value:"unixTimestamp",paraId:11,tocIndex:6},{value:"createdAt",paraId:11,tocIndex:6},{value:"updatedAt",paraId:11,tocIndex:6},{value:"REAL",paraId:11,tocIndex:6},{value:"FLOAT",paraId:11,tocIndex:6},{value:"float",paraId:11,tocIndex:6},{value:"number",paraId:11,tocIndex:6},{value:"percent",paraId:11,tocIndex:6},{value:"DOUBLE PRECISION",paraId:11,tocIndex:6},{value:"DOUBLE PRECISION",paraId:11,tocIndex:6},{value:"double",paraId:11,tocIndex:6},{value:"number",paraId:11,tocIndex:6},{value:"percent",paraId:11,tocIndex:6},{value:"DECIMAL",paraId:11,tocIndex:6},{value:"NUMERIC",paraId:11,tocIndex:6},{value:"DECIMAL",paraId:11,tocIndex:6},{value:"decimal",paraId:11,tocIndex:6},{value:"number",paraId:11,tocIndex:6},{value:"percent",paraId:11,tocIndex:6},{value:"currency",paraId:11,tocIndex:6},{value:"VARCHAR",paraId:11,tocIndex:6},{value:"CHAR",paraId:11,tocIndex:6},{value:"VARCHAR",paraId:11,tocIndex:6},{value:"CHAR",paraId:11,tocIndex:6},{value:"string",paraId:11,tocIndex:6},{value:"password",paraId:11,tocIndex:6},{value:"uuid",paraId:11,tocIndex:6},{value:"nanoid",paraId:11,tocIndex:6},{value:"input",paraId:11,tocIndex:6},{value:"email",paraId:11,tocIndex:6},{value:"phone",paraId:11,tocIndex:6},{value:"password",paraId:11,tocIndex:6},{value:"color",paraId:11,tocIndex:6},{value:"icon",paraId:11,tocIndex:6},{value:"select",paraId:11,tocIndex:6},{value:"radioGroup",paraId:11,tocIndex:6},{value:"uuid",paraId:11,tocIndex:6},{value:"nanoid",paraId:11,tocIndex:6},{value:"TEXT",paraId:11,tocIndex:6},{value:"TEXT",paraId:11,tocIndex:6},{value:"TINYTEXT",paraId:11,tocIndex:6},{value:"MEDIUMTEXT",paraId:11,tocIndex:6},{value:"LONGTEXT",paraId:11,tocIndex:6},{value:"text",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"textarea",paraId:11,tocIndex:6},{value:"markdown",paraId:11,tocIndex:6},{value:"vditor",paraId:11,tocIndex:6},{value:"richText",paraId:11,tocIndex:6},{value:"url",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"UUID",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"uuid",paraId:11,tocIndex:6},{value:"uuid",paraId:11,tocIndex:6},{value:"JSON",paraId:11,tocIndex:6},{value:"JSONB",paraId:11,tocIndex:6},{value:"JSON",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"TIMESTAMP",paraId:11,tocIndex:6},{value:"DATETIME",paraId:11,tocIndex:6},{value:"TIMESTAMP",paraId:11,tocIndex:6},{value:"date",paraId:11,tocIndex:6},{value:"date",paraId:11,tocIndex:6},{value:"time",paraId:11,tocIndex:6},{value:"createdAt",paraId:11,tocIndex:6},{value:"updatedAt",paraId:11,tocIndex:6},{value:"DATE",paraId:11,tocIndex:6},{value:"DATE",paraId:11,tocIndex:6},{value:"dateOnly",paraId:11,tocIndex:6},{value:"datetime",paraId:11,tocIndex:6},{value:"TIME",paraId:11,tocIndex:6},{value:"TIME",paraId:11,tocIndex:6},{value:"time",paraId:11,tocIndex:6},{value:"time",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"YEAR",paraId:11,tocIndex:6},{value:"datetime",paraId:11,tocIndex:6},{value:"CIRCEL",paraId:11,tocIndex:6},{value:"circle",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"circle",paraId:11,tocIndex:6},{value:"PATH",paraId:11,tocIndex:6},{value:"GEOMETRY(LINESTRING)",paraId:11,tocIndex:6},{value:"LINESTRING",paraId:11,tocIndex:6},{value:"lineString",paraId:11,tocIndex:6},{value:"Json",paraId:11,tocIndex:6},{value:"lineString",paraId:11,tocIndex:6},{value:"POINT",paraId:11,tocIndex:6},{value:"GEOMETRY(POINT)",paraId:11,tocIndex:6},{value:"POINT",paraId:11,tocIndex:6},{value:"point",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"point",paraId:11,tocIndex:6},{value:"POLYGON",paraId:11,tocIndex:6},{value:"GEOMETRY(POLYGON)",paraId:11,tocIndex:6},{value:"POLYGON",paraId:11,tocIndex:6},{value:"polygon",paraId:11,tocIndex:6},{value:"json",paraId:11,tocIndex:6},{value:"polygon",paraId:11,tocIndex:6},{value:"GEOMETRY",paraId:11,tocIndex:6},{value:"GEOMETRY",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"BLOB",paraId:11,tocIndex:6},{value:"BLOB",paraId:11,tocIndex:6},{value:"blob",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"ENUM",paraId:11,tocIndex:6},{value:"ENUM",paraId:11,tocIndex:6},{value:"enum",paraId:11,tocIndex:6},{value:"select",paraId:11,tocIndex:6},{value:"radioGroup",paraId:11,tocIndex:6},{value:"ARRAY",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"array",paraId:11,tocIndex:6},{value:"multipleSelect",paraId:11,tocIndex:6},{value:"checkboxGroup",paraId:11,tocIndex:6},{value:"BIT",paraId:11,tocIndex:6},{value:"BIT",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"SET",paraId:11,tocIndex:6},{value:"SET",paraId:11,tocIndex:6},{value:"set",paraId:11,tocIndex:6},{value:"multipleSelect",paraId:11,tocIndex:6},{value:"checkboxGroup",paraId:11,tocIndex:6},{value:"RANGE",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"-",paraId:11,tocIndex:6},{value:"Unsupported field types will be displayed separately. These fields need to be developed for adaptation before they can be used.",paraId:12,tocIndex:7},{value:"Data tables that are displayed as blocks must have a filter target key configured. The filter target key refers to filtering data based on a specific field, and the field value must be unique. The filter target key defaults to the primary key field of the data table. If it is a view or a data table without a primary key, or a data table with a composite primary key, you need to customize the filter target key.",paraId:13,tocIndex:8},{value:"Only data tables that have set a filter target key can be added to the page.",paraId:14,tocIndex:8}],vp={},mp={title:"Column Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/column.md",lastUpdated:173254844e4,description:"Configure 1 measure and 2 dimensions, where one dimension is used as the X-axis field (X field) and the other as the category field (Series field). The X-axis field and the category field can be the same."},hp=[{id:"column-chart",depth:1,title:"Column Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-measure-1-dimension",depth:3,title:"1 Measure, 1 Dimension"},{id:"1-measure-1-axis-dimension-1-category-dimension",depth:3,title:"1 Measure, 1 Axis Dimension, 1 Category Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],fp=[{value:"Configure 1 measure and 2 dimensions, where one dimension is used as the X-axis field (X field) and the other as the category field (Series field). The X-axis field and the category field can be the same.",paraId:0,tocIndex:3},{value:"Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"X-axis Field",paraId:1,tocIndex:4},{value:"The dimension field for the X-axis",paraId:1,tocIndex:4},{value:"Category Field",paraId:1,tocIndex:4},{value:"The dimension field for categorization",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Set the size of the chart, either with a fixed aspect ratio or fixed height",paraId:1,tocIndex:4},{value:"Grouped Display",paraId:1,tocIndex:4},{value:"Toggle grouped display",paraId:1,tocIndex:4},{value:"Stacked Display",paraId:1,tocIndex:4},{value:"Toggle stacked display",paraId:1,tocIndex:4},{value:"Percentage Display",paraId:1,tocIndex:4},{value:"Toggle percentage display",paraId:1,tocIndex:4}],xp={},gp={title:"Extended Tutorial",toc:"menu",filename:"docs/en-US/handbook/data-visualization/step-by-step/index.md",lastUpdated:173254844e4,description:"Using the addition of ECharts charts as an example, the complete code is available in the @nocobase/plugin-sample-add-custom-charts plugin."},bp=[{id:"extended-tutorial",depth:1,title:"Extended Tutorial"},{id:"creating-a-new-plugin",depth:2,title:"Creating a New Plugin"},{id:"echarts-react-component",depth:2,title:"ECharts React Component"},{id:"extending-the-chart-class",depth:2,title:"Extending the Chart Class"},{id:"step-1",depth:3,title:"Step 1"},{id:"step-2",depth:3,title:"Step 2"},{id:"step-3",depth:3,title:"Step 3"},{id:"step-4",depth:3,title:"Step 4"},{id:"defining-charts",depth:2,title:"Defining Charts"},{id:"adding-charts",depth:2,title:"Adding Charts"}],yp=[{value:"Using the addition of ECharts charts as an example, the complete code is available in the ",paraId:0,tocIndex:0},{value:"@nocobase/plugin-sample-add-custom-charts",paraId:0,tocIndex:0},{value:" plugin.",paraId:0,tocIndex:0},{value:"Follow the steps in the ",paraId:1,tocIndex:1},{value:"Plugin Development Guide",paraId:1,tocIndex:1},{value:" to create a new plugin. Be sure to include the dependencies ",paraId:1,tocIndex:1},{value:"echarts",paraId:1,tocIndex:1},{value:", ",paraId:1,tocIndex:1},{value:"echarts-for-react",paraId:1,tocIndex:1},{value:", and ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-data-visualization",paraId:1,tocIndex:1},{value:", placing these external dependencies in the ",paraId:1,tocIndex:1},{value:"devDependencies",paraId:1,tocIndex:1},{value:" section of the ",paraId:1,tocIndex:1},{value:"package.json",paraId:1,tocIndex:1},{value:" file.",paraId:1,tocIndex:1},{value:`yarn pm create @nocobase/plugin-sample-add-custom-charts npx lerna add echarts --scope=@nocobase/plugin-sample-add-custom-charts --dev npx lerna add echarts-for-react --scope=@nocobase/plugin-sample-add-custom-charts --dev `,paraId:2,tocIndex:1},{value:`// package.json @@ -2986,7 +3023,7 @@ export class PluginSampleAddCustomChartClient extends Plugin { // You can get and modify the app instance here async load() {} } -`,paraId:29,tocIndex:9}],wp={},kp={title:"Popup Size",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/popup-size.md",lastUpdated:1732240239e3,description:"Popups are available in three sizes: Large, Middle, and Small, with Middle being the default. You can adjust the Popup size to match the content."},Sp=[{id:"popup-size",depth:1,title:"Popup Size"},{id:"introduction",depth:2,title:"Introduction"}],Up=[{value:"Popups are available in three sizes: Large, Middle, and Small, with Middle being the default. You can adjust the Popup size to match the content.",paraId:0,tocIndex:1}],Pp={},Tp={title:"Delete Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/block-delete.md",lastUpdated:1732240239e3,description:"Deleting a block from the current page is an irreversible action."},Cp=[{id:"delete-block",depth:1,title:"Delete Block"},{id:"introduction",depth:2,title:"Introduction"}],Ap=[{value:"Deleting a block from the current page is an irreversible action.",paraId:0,tocIndex:1}],qp={},Ep={title:"Block Height",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/block-height.md",lastUpdated:1732240239e3,description:"Block height settings in NocoBase accommodate three scenarios: default height, specified height, and full height. This feature is supported by most blocks, with the exception of Gantt chart blocks. For chart blocks, height is controlled through specific parameters."},Dp=[{id:"block-height",depth:1,title:"Block Height"},{id:"introduction",depth:2,title:"Introduction"},{id:"default-height",depth:3,title:"Default Height"},{id:"specified-height",depth:3,title:"Specified Height"},{id:"full-height",depth:3,title:"Full Height"},{id:"full-height-table-example",depth:4,title:"Full Height Table Example"},{id:"full-height-form-example",depth:4,title:"Full Height Form Example"}],Op=[{value:"Block height settings in NocoBase accommodate three scenarios: default height, specified height, and full height. This feature is supported by most blocks, with the exception of Gantt chart blocks. For chart blocks, height is controlled through specific parameters.",paraId:0,tocIndex:1},{value:"Each block type handles default height uniquely. For instance, table and form blocks dynamically adjust their height to fit the content, while kanban blocks default to 70% of the viewport height.",paraId:1,tocIndex:2},{value:"Users have the flexibility to define the overall height of a block's outer frame. The block's internal components then automatically calculate and distribute the available space.",paraId:2,tocIndex:3},{value:"The full height mode, akin to specified height, automatically determines and allocates block height based on the window's visible area. This approach eliminates page-level scrollbars, confining them to the interior of individual blocks.",paraId:3,tocIndex:4},{value:"Height handling varies subtly across different block types:",paraId:4,tocIndex:4},{value:"Tables: Scrolling occurs within the tbody;",paraId:5,tocIndex:4},{value:"Forms/Details: The Grid area scrolls, excluding the operations section;",paraId:5,tocIndex:4},{value:"Lists/Grid Cards: The Grid area scrolls, excluding operations and pagination;",paraId:5,tocIndex:4},{value:"Kanban: Each column scrolls independently;",paraId:5,tocIndex:4},{value:"Maps and Calendars: Adapt to full height without scrollbars;",paraId:5,tocIndex:4},{value:"Iframes/Markdown: The block's outer frame height is fixed, with scrolling inside the block.",paraId:5,tocIndex:4}],Rp={},Mp={title:"Layout",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/block-layout.md",lastUpdated:1732240239e3,description:"The version of NocoBase needs to be v1.3.34-beta or above."},Lp=[{id:"layout",depth:1,title:"Layout"},{id:"introduction",depth:2,title:"Introduction"},{id:"verticaldefault",depth:3,title:"Vertical(default)"},{id:"horizontal",depth:3,title:"Horizontal"}],Np=[{value:"The version of NocoBase needs to be v1.3.34-beta or above.",paraId:0},{value:"Form components, such as form blocks, detail blocks, and list blocks, support layout settings. The layout options include vertical layout (where labels and input fields are arranged in separate rows) and horizontal layout (where labels and input fields are placed side by side). This flexible layout choice can optimize the user experience based on specific needs, ensuring that information input is both clear and efficient.",paraId:1,tocIndex:1},{value:"Subforms and subform (popup) also support layout configuration, with the default layout set to vertical.",paraId:2,tocIndex:2},{value:"Horizontal layout places labels and input fields side by side, making better use of space.",paraId:3,tocIndex:3},{value:"The main form uses a vertical layout, while the subform uses a horizontal layout.",paraId:4,tocIndex:3}],zp={},Fp={title:"Linkage Rules",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/linkage-rule.md",lastUpdated:1732240239e3,description:"Linkage rules allow dynamic adjustment of form field states based on user behavior, such as Visible/Hidden, Required/Not Required, and value assignment. Currently, the following components support configuring linkage rules: Form Blocks, Details Blocks, Action Buttons, Sub Forms (requires v1.3.17-beta or above), and Sub Tables (requires v1.3.17-beta or above)."},Bp=[{id:"linkage-rules",depth:1,title:"Linkage Rules"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"value-assignment",depth:3,title:"Value Assignment"},{id:"field-requirement",depth:3,title:"Field Requirement"},{id:"visibility-control",depth:3,title:"Visibility Control"}],jp=[{value:"Linkage rules allow dynamic adjustment of form field states based on user behavior, such as Visible/Hidden, Required/Not Required, and value assignment. Currently, the following components support configuring linkage rules: ",paraId:0,tocIndex:1},{value:"Form Blocks",paraId:0,tocIndex:1},{value:", ",paraId:0,tocIndex:1},{value:"Details Blocks",paraId:0,tocIndex:1},{value:", ",paraId:0,tocIndex:1},{value:"Action Buttons",paraId:0,tocIndex:1},{value:", ",paraId:0,tocIndex:1},{value:"Sub Forms",paraId:0,tocIndex:1},{value:" (requires v1.3.17-beta or above), and ",paraId:0,tocIndex:1},{value:"Sub Tables",paraId:0,tocIndex:1},{value:" (requires v1.3.17-beta or above).",paraId:0,tocIndex:1},{value:"Field Configuration: Ensure all form fields utilized in the rules are properly configured to guarantee rule effectiveness and accuracy.",paraId:1,tocIndex:2},{value:"Conditional Activation: When rule conditions are satisfied (optional), the system automatically executes the specified property modifications.",paraId:2,tocIndex:2},{value:"Multi-Rule Support: Forms can accommodate multiple linkage rules. When several rule conditions are simultaneously met, the system executes the results sequentially, following the order of rule definition.",paraId:3,tocIndex:2},{value:"Rule Management: Enjoy comprehensive control with features for custom naming, sorting, deleting, enabling, disabling, and duplicating rules.",paraId:4,tocIndex:2},{value:"Constant and Variable Integration: Leverage constants or variables in field assignments and condition configurations. For detailed information on variables, consult the ",paraId:5,tocIndex:2},{value:"Variables",paraId:6,tocIndex:2},{value:" section.",paraId:5,tocIndex:2},{value:"Illustration: Automatically evaluate and designate customer levels (e.g., A+, A, A-) based on projected annual purchase amounts.",paraId:7,tocIndex:3},{value:"Estimated annual purchase exceeding 20,000: Customer classified as A+.",paraId:8,tocIndex:3},{value:"Estimated annual purchase between 10,000 and 20,000 (inclusive): Customer classified as A.",paraId:9,tocIndex:3},{value:"Estimated annual purchase below 10,000: Customer classified as A-.",paraId:10,tocIndex:3},{value:"Illustration: Dynamically adjust the requirement status of the product's promotional price based on its promotion status.",paraId:11,tocIndex:4},{value:'When "IsPromotion" is active, promotional price becomes mandatory.',paraId:12,tocIndex:4},{value:'When "IsPromotion" is inactive, promotional price becomes optional.',paraId:13,tocIndex:4},{value:"Illustration: Manage the visibility of the promotional price input field based on the product's promotion status.",paraId:14,tocIndex:5},{value:'When "IsPromotion" is true, the promotional price field is displayed and required.',paraId:15,tocIndex:5},{value:'When "IsPromotion" is false, the promotional price field is hidden and not required.',paraId:16,tocIndex:5}],Hp={},Wp={title:"Data Loading Mode",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/loading-mode.md",lastUpdated:1732240239e3,description:'The default data loading method is "Load all data when filter criteria are empty." The "filter criteria" refers to the values in the Filter Block. Another option is "Do not load data when filter criteria are empty."'},$p=[{id:"data-loading-mode",depth:1,title:"Data Loading Mode"},{id:"introduction",depth:2,title:"Introduction"},{id:"load-all-data-when-filter-is-empty",depth:3,title:"Load all data when filter is empty"},{id:"do-not-load-data-when-filter-is-empty",depth:3,title:"Do not load data when filter is empty"}],Gp=[{value:'The default data loading method is "Load all data when filter criteria are empty." The "filter criteria" refers to the values in the ',paraId:0,tocIndex:1},{value:"Filter Block",paraId:0,tocIndex:1},{value:'. Another option is "Do not load data when filter criteria are empty."',paraId:0,tocIndex:1}],Vp={},Kp={title:"Sorting Rules",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/sorting-rule.md",lastUpdated:1732240239e3,description:"Configuring sort rules allows you to define default sorting criteria for data blocks, ensuring that the information within each block is presented in a specific, predetermined order."},Zp=[{id:"sorting-rules",depth:1,title:"Sorting Rules"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-guide",depth:2,title:"User Guide"},{id:"single-sort-rule",depth:3,title:"Single Sort Rule"},{id:"multiple-sort-rules",depth:3,title:"Multiple Sort Rules"}],Yp=[{value:"Configuring sort rules allows you to define default sorting criteria for data blocks, ensuring that the information within each block is presented in a specific, predetermined order.",paraId:0,tocIndex:1},{value:"At present, the system only supports sorting based on fields within the current table.",paraId:1,tocIndex:2},{value:"This feature is ideal for complex sorting scenarios. For instance, you might want to first organize data by order status, and then arrange items within each status category according to their delivery time.",paraId:2,tocIndex:4}],Qp={},Jp={title:"Edit tooltip",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/edit-tooltip.md",lastUpdated:1732240239e3,description:"When a user hovers over a field, a tooltip with additional information or guidance appears. This tooltip typically provides details such as the field's purpose, input format, and any restrictions, helping users to better understand and utilize the field."},Xp=[{id:"edit-tooltip",depth:1,title:"Edit tooltip"},{id:"introduction",depth:2,title:"Introduction"}],eI=[{value:"When a user hovers over a field, a tooltip with additional information or guidance appears. This tooltip typically provides details such as the field's purpose, input format, and any restrictions, helping users to better understand and utilize the field.",paraId:0,tocIndex:1}],aI={},tI={title:"Bulk Edit Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/generic/bulk-edit-form-item.md",lastUpdated:1732240239e3,description:"The Bulk edit form is a specialized form block designed for batch editing operations."},nI=[{id:"bulk-edit-fields",depth:1,title:"Bulk Edit Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"}],oI=[{value:"The Bulk edit form is a specialized form block designed for batch editing operations.",paraId:0,tocIndex:1},{value:"You can configure only the fields within the current table. There are three methods for updating fields:",paraId:1,tocIndex:2},{value:"No Update:",paraId:2,tocIndex:2},{value:" The field retains its original value after submission.",paraId:2,tocIndex:2},{value:"Modify To:",paraId:2,tocIndex:2},{value:" The field becomes required.",paraId:2,tocIndex:2},{value:"Clear:",paraId:2,tocIndex:2},{value:" The field's value is cleared after submission.",paraId:2,tocIndex:2},{value:"For relationship fields, you can flexibly switch between different field components.",paraId:3,tocIndex:2},{value:"Edit Field Title",paraId:4,tocIndex:3},{value:"Display Title",paraId:5,tocIndex:3},{value:"Edit Field Description",paraId:6,tocIndex:3},{value:"Edit Field Tooltip",paraId:7,tocIndex:3},{value:"Set Validation Rules",paraId:8,tocIndex:3}],rI={},dI={title:"Action Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-custom-action-trigger/action.md",lastUpdated:1732240239e3,description:'Within any data block, you have the option to add a "Trigger Workflow" button to the action bar for individual rows of data, whether in forms, tables, or detail pages:'},iI=[{id:"action-configuration",depth:1,title:"Action Configuration"}],lI=[{value:'Within any data block, you have the option to add a "Trigger Workflow" button to the action bar for individual rows of data, whether in forms, tables, or detail pages:',paraId:0,tocIndex:0},{value:"Once the button is added, you can link it to the workflow you previously created:",paraId:1,tocIndex:0},{value:"Afterward, simply clicking this button will initiate the custom action event:",paraId:2,tocIndex:0}],cI={},sI={title:"Advanced Understanding",toc:"menu",filename:"docs/en-US/handbook/workflow-request-interceptor/advanced.md",lastUpdated:1732240239e3,description:"Conditions for Interception"},uI=[{id:"advanced-understanding",depth:1,title:"Advanced Understanding"}],pI=[{value:"Conditions for Interception",paraId:0,tocIndex:0},{value:'In "pre-action events," two specific conditions may cause the corresponding operation to be intercepted:',paraId:1,tocIndex:0},{value:'The process reaches an "End Process" node. As explained earlier, if the triggering data does not meet the conditions set in the "Condition" node, the process will follow the "No" branch, executing the "End Process" node. This causes the process to terminate, and the requested operation is intercepted.',paraId:2,tocIndex:0},{value:'Any node within the process fails to execute\u2014whether due to an error or other exceptional circumstances. In such cases, the process concludes with the corresponding status, and the operation is intercepted. For instance, if an "HTTP Request" is used to fetch external data and the request fails, the process ends in a failed state, simultaneously intercepting the corresponding operation request.',paraId:2,tocIndex:0},{value:"Once these interception conditions are met, the operation in question is halted entirely. For example, if an order submission is intercepted, no corresponding order data will be generated.",paraId:3,tocIndex:0},{value:"Parameters for Corresponding Operations",paraId:4,tocIndex:0},{value:'In "pre-action event" workflows, various data points are available as variables within the process, depending on the operation:',paraId:5,tocIndex:0},{value:"Operation Type \\ Variable",paraId:6,tocIndex:0},{value:'"User acted"',paraId:6,tocIndex:0},{value:'"Role of user acted"',paraId:6,tocIndex:0},{value:'Operation Parameter: "ID"',paraId:6,tocIndex:0},{value:'Parameter: "Values submitted"',paraId:6,tocIndex:0},{value:"Create a record",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"-",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"Update a record",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"Delete one or more records",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"-",paraId:6,tocIndex:0},{value:'The variables "Trigger variables / Parameter / Values submitted" in pre-action events are not the actual data stored in the database but the parameters submitted with the operation. To retrieve actual database data, you must use the "Query record" node within the process.',paraId:7},{value:'Additionally, for delete operations, when dealing with a single record, the "ID" in the operation parameters is a simple value. For multiple records, however, the "ID" is an array.',paraId:8},{value:"Response Messages",paraId:9},{value:`Once the trigger is configured, you can define the relevant logic within the workflow. Typically, the "Condition" node's branching mechanism is used to decide whether to "End Process" based on specific business conditions, returning a pre-defined "Response Message":`,paraId:10},{value:"At this stage, the workflow configuration is complete. You can test it by submitting data that does not meet the configured conditions, triggering the interception logic. This will result in the return of a response message:",paraId:11},{value:"Response Message Status",paraId:12},{value:'If the "End Process" node is set to exit with a "Success" status and the process reaches this node, the operation request will still be intercepted. However, the returned response message will display a "Success" (instead of "Error") status:',paraId:13}],II={},_I={title:"HTTP API",toc:"menu",filename:"docs/en-US/handbook/workflow-request-interceptor/http-api.md",lastUpdated:1732240239e3,description:"The pre-operation event is integrated during the request processing phase, enabling it to be triggered via an HTTP API call."},vI=[{id:"http-api",depth:1,title:"HTTP API"}],mI=[{value:"The pre-operation event is integrated during the request processing phase, enabling it to be triggered via an HTTP API call.",paraId:0,tocIndex:0},{value:"For workflows that are locally bound to an action button, you can trigger them with the following command (using a button for the ",paraId:1,tocIndex:0},{value:"posts",paraId:1,tocIndex:0},{value:" table as an example):",paraId:1,tocIndex:0},{value:`curl -X POST -H 'Authorization: Bearer ' -H 'X-Role: ' -d \\ +`,paraId:29,tocIndex:9}],wp={},kp={title:"Popup Size",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/popup-size.md",lastUpdated:173254844e4,description:"Popups are available in three sizes: Large, Middle, and Small, with Middle being the default. You can adjust the Popup size to match the content."},Sp=[{id:"popup-size",depth:1,title:"Popup Size"},{id:"introduction",depth:2,title:"Introduction"}],Up=[{value:"Popups are available in three sizes: Large, Middle, and Small, with Middle being the default. You can adjust the Popup size to match the content.",paraId:0,tocIndex:1}],Pp={},Tp={title:"Delete Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/block-delete.md",lastUpdated:173254844e4,description:"Deleting a block from the current page is an irreversible action."},Cp=[{id:"delete-block",depth:1,title:"Delete Block"},{id:"introduction",depth:2,title:"Introduction"}],Ap=[{value:"Deleting a block from the current page is an irreversible action.",paraId:0,tocIndex:1}],qp={},Ep={title:"Block Height",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/block-height.md",lastUpdated:173254844e4,description:"Block height settings in NocoBase accommodate three scenarios: default height, specified height, and full height. This feature is supported by most blocks, with the exception of Gantt chart blocks. For chart blocks, height is controlled through specific parameters."},Dp=[{id:"block-height",depth:1,title:"Block Height"},{id:"introduction",depth:2,title:"Introduction"},{id:"default-height",depth:3,title:"Default Height"},{id:"specified-height",depth:3,title:"Specified Height"},{id:"full-height",depth:3,title:"Full Height"},{id:"full-height-table-example",depth:4,title:"Full Height Table Example"},{id:"full-height-form-example",depth:4,title:"Full Height Form Example"}],Op=[{value:"Block height settings in NocoBase accommodate three scenarios: default height, specified height, and full height. This feature is supported by most blocks, with the exception of Gantt chart blocks. For chart blocks, height is controlled through specific parameters.",paraId:0,tocIndex:1},{value:"Each block type handles default height uniquely. For instance, table and form blocks dynamically adjust their height to fit the content, while kanban blocks default to 70% of the viewport height.",paraId:1,tocIndex:2},{value:"Users have the flexibility to define the overall height of a block's outer frame. The block's internal components then automatically calculate and distribute the available space.",paraId:2,tocIndex:3},{value:"The full height mode, akin to specified height, automatically determines and allocates block height based on the window's visible area. This approach eliminates page-level scrollbars, confining them to the interior of individual blocks.",paraId:3,tocIndex:4},{value:"Height handling varies subtly across different block types:",paraId:4,tocIndex:4},{value:"Tables: Scrolling occurs within the tbody;",paraId:5,tocIndex:4},{value:"Forms/Details: The Grid area scrolls, excluding the operations section;",paraId:5,tocIndex:4},{value:"Lists/Grid Cards: The Grid area scrolls, excluding operations and pagination;",paraId:5,tocIndex:4},{value:"Kanban: Each column scrolls independently;",paraId:5,tocIndex:4},{value:"Maps and Calendars: Adapt to full height without scrollbars;",paraId:5,tocIndex:4},{value:"Iframes/Markdown: The block's outer frame height is fixed, with scrolling inside the block.",paraId:5,tocIndex:4}],Rp={},Mp={title:"Layout",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/block-layout.md",lastUpdated:173254844e4,description:"The version of NocoBase needs to be v1.3.34-beta or above."},Lp=[{id:"layout",depth:1,title:"Layout"},{id:"introduction",depth:2,title:"Introduction"},{id:"verticaldefault",depth:3,title:"Vertical(default)"},{id:"horizontal",depth:3,title:"Horizontal"}],Np=[{value:"The version of NocoBase needs to be v1.3.34-beta or above.",paraId:0},{value:"Form components, such as form blocks, detail blocks, and list blocks, support layout settings. The layout options include vertical layout (where labels and input fields are arranged in separate rows) and horizontal layout (where labels and input fields are placed side by side). This flexible layout choice can optimize the user experience based on specific needs, ensuring that information input is both clear and efficient.",paraId:1,tocIndex:1},{value:"Subforms and subform (popup) also support layout configuration, with the default layout set to vertical.",paraId:2,tocIndex:2},{value:"Horizontal layout places labels and input fields side by side, making better use of space.",paraId:3,tocIndex:3},{value:"The main form uses a vertical layout, while the subform uses a horizontal layout.",paraId:4,tocIndex:3}],zp={},Fp={title:"Linkage Rules",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/linkage-rule.md",lastUpdated:173254844e4,description:"Linkage rules allow dynamic adjustment of form field states based on user behavior, such as Visible/Hidden, Required/Not Required, and value assignment. Currently, the following components support configuring linkage rules: Form Blocks, Details Blocks, Action Buttons, Sub Forms (requires v1.3.17-beta or above), and Sub Tables (requires v1.3.17-beta or above)."},Bp=[{id:"linkage-rules",depth:1,title:"Linkage Rules"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"value-assignment",depth:3,title:"Value Assignment"},{id:"field-requirement",depth:3,title:"Field Requirement"},{id:"visibility-control",depth:3,title:"Visibility Control"}],jp=[{value:"Linkage rules allow dynamic adjustment of form field states based on user behavior, such as Visible/Hidden, Required/Not Required, and value assignment. Currently, the following components support configuring linkage rules: ",paraId:0,tocIndex:1},{value:"Form Blocks",paraId:0,tocIndex:1},{value:", ",paraId:0,tocIndex:1},{value:"Details Blocks",paraId:0,tocIndex:1},{value:", ",paraId:0,tocIndex:1},{value:"Action Buttons",paraId:0,tocIndex:1},{value:", ",paraId:0,tocIndex:1},{value:"Sub Forms",paraId:0,tocIndex:1},{value:" (requires v1.3.17-beta or above), and ",paraId:0,tocIndex:1},{value:"Sub Tables",paraId:0,tocIndex:1},{value:" (requires v1.3.17-beta or above).",paraId:0,tocIndex:1},{value:"Field Configuration: Ensure all form fields utilized in the rules are properly configured to guarantee rule effectiveness and accuracy.",paraId:1,tocIndex:2},{value:"Conditional Activation: When rule conditions are satisfied (optional), the system automatically executes the specified property modifications.",paraId:2,tocIndex:2},{value:"Multi-Rule Support: Forms can accommodate multiple linkage rules. When several rule conditions are simultaneously met, the system executes the results sequentially, following the order of rule definition.",paraId:3,tocIndex:2},{value:"Rule Management: Enjoy comprehensive control with features for custom naming, sorting, deleting, enabling, disabling, and duplicating rules.",paraId:4,tocIndex:2},{value:"Constant and Variable Integration: Leverage constants or variables in field assignments and condition configurations. For detailed information on variables, consult the ",paraId:5,tocIndex:2},{value:"Variables",paraId:6,tocIndex:2},{value:" section.",paraId:5,tocIndex:2},{value:"Illustration: Automatically evaluate and designate customer levels (e.g., A+, A, A-) based on projected annual purchase amounts.",paraId:7,tocIndex:3},{value:"Estimated annual purchase exceeding 20,000: Customer classified as A+.",paraId:8,tocIndex:3},{value:"Estimated annual purchase between 10,000 and 20,000 (inclusive): Customer classified as A.",paraId:9,tocIndex:3},{value:"Estimated annual purchase below 10,000: Customer classified as A-.",paraId:10,tocIndex:3},{value:"Illustration: Dynamically adjust the requirement status of the product's promotional price based on its promotion status.",paraId:11,tocIndex:4},{value:'When "IsPromotion" is active, promotional price becomes mandatory.',paraId:12,tocIndex:4},{value:'When "IsPromotion" is inactive, promotional price becomes optional.',paraId:13,tocIndex:4},{value:"Illustration: Manage the visibility of the promotional price input field based on the product's promotion status.",paraId:14,tocIndex:5},{value:'When "IsPromotion" is true, the promotional price field is displayed and required.',paraId:15,tocIndex:5},{value:'When "IsPromotion" is false, the promotional price field is hidden and not required.',paraId:16,tocIndex:5}],Hp={},Wp={title:"Data Loading Mode",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/loading-mode.md",lastUpdated:173254844e4,description:'The default data loading method is "Load all data when filter criteria are empty." The "filter criteria" refers to the values in the Filter Block. Another option is "Do not load data when filter criteria are empty."'},$p=[{id:"data-loading-mode",depth:1,title:"Data Loading Mode"},{id:"introduction",depth:2,title:"Introduction"},{id:"load-all-data-when-filter-is-empty",depth:3,title:"Load all data when filter is empty"},{id:"do-not-load-data-when-filter-is-empty",depth:3,title:"Do not load data when filter is empty"}],Gp=[{value:'The default data loading method is "Load all data when filter criteria are empty." The "filter criteria" refers to the values in the ',paraId:0,tocIndex:1},{value:"Filter Block",paraId:0,tocIndex:1},{value:'. Another option is "Do not load data when filter criteria are empty."',paraId:0,tocIndex:1}],Vp={},Kp={title:"Sorting Rules",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/sorting-rule.md",lastUpdated:173254844e4,description:"Configuring sort rules allows you to define default sorting criteria for data blocks, ensuring that the information within each block is presented in a specific, predetermined order."},Zp=[{id:"sorting-rules",depth:1,title:"Sorting Rules"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-guide",depth:2,title:"User Guide"},{id:"single-sort-rule",depth:3,title:"Single Sort Rule"},{id:"multiple-sort-rules",depth:3,title:"Multiple Sort Rules"}],Yp=[{value:"Configuring sort rules allows you to define default sorting criteria for data blocks, ensuring that the information within each block is presented in a specific, predetermined order.",paraId:0,tocIndex:1},{value:"At present, the system only supports sorting based on fields within the current table.",paraId:1,tocIndex:2},{value:"This feature is ideal for complex sorting scenarios. For instance, you might want to first organize data by order status, and then arrange items within each status category according to their delivery time.",paraId:2,tocIndex:4}],Qp={},Jp={title:"Edit tooltip",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/edit-tooltip.md",lastUpdated:173254844e4,description:"When a user hovers over a field, a tooltip with additional information or guidance appears. This tooltip typically provides details such as the field's purpose, input format, and any restrictions, helping users to better understand and utilize the field."},Xp=[{id:"edit-tooltip",depth:1,title:"Edit tooltip"},{id:"introduction",depth:2,title:"Introduction"}],eI=[{value:"When a user hovers over a field, a tooltip with additional information or guidance appears. This tooltip typically provides details such as the field's purpose, input format, and any restrictions, helping users to better understand and utilize the field.",paraId:0,tocIndex:1}],aI={},tI={title:"Bulk Edit Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/generic/bulk-edit-form-item.md",lastUpdated:173254844e4,description:"The Bulk edit form is a specialized form block designed for batch editing operations."},nI=[{id:"bulk-edit-fields",depth:1,title:"Bulk Edit Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"}],oI=[{value:"The Bulk edit form is a specialized form block designed for batch editing operations.",paraId:0,tocIndex:1},{value:"You can configure only the fields within the current table. There are three methods for updating fields:",paraId:1,tocIndex:2},{value:"No Update:",paraId:2,tocIndex:2},{value:" The field retains its original value after submission.",paraId:2,tocIndex:2},{value:"Modify To:",paraId:2,tocIndex:2},{value:" The field becomes required.",paraId:2,tocIndex:2},{value:"Clear:",paraId:2,tocIndex:2},{value:" The field's value is cleared after submission.",paraId:2,tocIndex:2},{value:"For relationship fields, you can flexibly switch between different field components.",paraId:3,tocIndex:2},{value:"Edit Field Title",paraId:4,tocIndex:3},{value:"Display Title",paraId:5,tocIndex:3},{value:"Edit Field Description",paraId:6,tocIndex:3},{value:"Edit Field Tooltip",paraId:7,tocIndex:3},{value:"Set Validation Rules",paraId:8,tocIndex:3}],rI={},dI={title:"Action Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-custom-action-trigger/action.md",lastUpdated:173254844e4,description:'Within any data block, you have the option to add a "Trigger Workflow" button to the action bar for individual rows of data, whether in forms, tables, or detail pages:'},iI=[{id:"action-configuration",depth:1,title:"Action Configuration"}],lI=[{value:'Within any data block, you have the option to add a "Trigger Workflow" button to the action bar for individual rows of data, whether in forms, tables, or detail pages:',paraId:0,tocIndex:0},{value:"Once the button is added, you can link it to the workflow you previously created:",paraId:1,tocIndex:0},{value:"Afterward, simply clicking this button will initiate the custom action event:",paraId:2,tocIndex:0}],cI={},sI={title:"Advanced Understanding",toc:"menu",filename:"docs/en-US/handbook/workflow-request-interceptor/advanced.md",lastUpdated:173254844e4,description:"Conditions for Interception"},uI=[{id:"advanced-understanding",depth:1,title:"Advanced Understanding"}],pI=[{value:"Conditions for Interception",paraId:0,tocIndex:0},{value:'In "pre-action events," two specific conditions may cause the corresponding operation to be intercepted:',paraId:1,tocIndex:0},{value:'The process reaches an "End Process" node. As explained earlier, if the triggering data does not meet the conditions set in the "Condition" node, the process will follow the "No" branch, executing the "End Process" node. This causes the process to terminate, and the requested operation is intercepted.',paraId:2,tocIndex:0},{value:'Any node within the process fails to execute\u2014whether due to an error or other exceptional circumstances. In such cases, the process concludes with the corresponding status, and the operation is intercepted. For instance, if an "HTTP Request" is used to fetch external data and the request fails, the process ends in a failed state, simultaneously intercepting the corresponding operation request.',paraId:2,tocIndex:0},{value:"Once these interception conditions are met, the operation in question is halted entirely. For example, if an order submission is intercepted, no corresponding order data will be generated.",paraId:3,tocIndex:0},{value:"Parameters for Corresponding Operations",paraId:4,tocIndex:0},{value:'In "pre-action event" workflows, various data points are available as variables within the process, depending on the operation:',paraId:5,tocIndex:0},{value:"Operation Type \\ Variable",paraId:6,tocIndex:0},{value:'"User acted"',paraId:6,tocIndex:0},{value:'"Role of user acted"',paraId:6,tocIndex:0},{value:'Operation Parameter: "ID"',paraId:6,tocIndex:0},{value:'Parameter: "Values submitted"',paraId:6,tocIndex:0},{value:"Create a record",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"-",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"Update a record",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"Delete one or more records",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"\u2713",paraId:6,tocIndex:0},{value:"-",paraId:6,tocIndex:0},{value:'The variables "Trigger variables / Parameter / Values submitted" in pre-action events are not the actual data stored in the database but the parameters submitted with the operation. To retrieve actual database data, you must use the "Query record" node within the process.',paraId:7},{value:'Additionally, for delete operations, when dealing with a single record, the "ID" in the operation parameters is a simple value. For multiple records, however, the "ID" is an array.',paraId:8},{value:"Response Messages",paraId:9},{value:`Once the trigger is configured, you can define the relevant logic within the workflow. Typically, the "Condition" node's branching mechanism is used to decide whether to "End Process" based on specific business conditions, returning a pre-defined "Response Message":`,paraId:10},{value:"At this stage, the workflow configuration is complete. You can test it by submitting data that does not meet the configured conditions, triggering the interception logic. This will result in the return of a response message:",paraId:11},{value:"Response Message Status",paraId:12},{value:'If the "End Process" node is set to exit with a "Success" status and the process reaches this node, the operation request will still be intercepted. However, the returned response message will display a "Success" (instead of "Error") status:',paraId:13}],II={},_I={title:"HTTP API",toc:"menu",filename:"docs/en-US/handbook/workflow-request-interceptor/http-api.md",lastUpdated:173254844e4,description:"The pre-operation event is integrated during the request processing phase, enabling it to be triggered via an HTTP API call."},vI=[{id:"http-api",depth:1,title:"HTTP API"}],mI=[{value:"The pre-operation event is integrated during the request processing phase, enabling it to be triggered via an HTTP API call.",paraId:0,tocIndex:0},{value:"For workflows that are locally bound to an action button, you can trigger them with the following command (using a button for the ",paraId:1,tocIndex:0},{value:"posts",paraId:1,tocIndex:0},{value:" table as an example):",paraId:1,tocIndex:0},{value:`curl -X POST -H 'Authorization: Bearer ' -H 'X-Role: ' -d \\ '{ "title": "Hello, world!", "content": "This is a test post." @@ -3012,7 +3049,7 @@ export class PluginSampleAddCustomChartClient extends Plugin { "content": "This is a test post." }' "http://localhost:3000/api/posts:create" -`,paraId:12},{value:"When triggering post-operation events via an HTTP API call, ensure the workflow is enabled and that the data table configuration matches the expected setup. Otherwise, the call may fail or result in errors.",paraId:13}],hI={},fI={title:"6. Multi-language Support",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/action-modal.md",lastUpdated:1732240239e3,description:"In NocoBase, there are many Configure actions used to add operation buttons to the interface."},xI=[{id:"adding-a-popup-action",depth:1,title:"Adding a Popup Action"},{id:"scenario-description",depth:2,title:"Scenario Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initializing-the-plugin",depth:2,title:"Initializing the Plugin"},{id:"functionality-implementation",depth:2,title:"Functionality Implementation"},{id:"1-define-the-name",depth:2,title:"1. Define the Name"},{id:"2-define-the-schema",depth:2,title:"2. Define the Schema"},{id:"21-define-the-schema",depth:3,title:"2.1 Define the Schema"},{id:"22-validate-the-schema",depth:3,title:"2.2 Validate the Schema"},{id:"3-define-schema-initializer-item",depth:1,title:"3. Define Schema Initializer Item"},{id:"4-implement-schema-settings",depth:1,title:"4. Implement Schema Settings"},{id:"41-define-schema-settings",depth:2,title:"4.1 Define Schema Settings"},{id:"42-register-schema-settings",depth:2,title:"4.2 Register Schema Settings"},{id:"43-use-schema-settings",depth:2,title:"4.3 Use Schema Settings"},{id:"5-add-to-configure-actions-in-the-page",depth:1,title:"5. Add to Configure Actions in the Page"},{id:"6-multi-language-support",depth:1,title:"6. Multi-language Support"},{id:"61-english",depth:3,title:"6.1 English"},{id:"62-chinese",depth:3,title:"6.2 Chinese"},{id:"packaging-and-uploading-to-production",depth:2,title:"Packaging and Uploading to Production"}],gI=[{value:"In NocoBase, there are many ",paraId:0,tocIndex:1},{value:"Configure actions",paraId:0,tocIndex:1},{value:" used to add operation buttons to the interface.",paraId:0,tocIndex:1},{value:"If the existing action buttons do not fully meet our needs, we can add sub-items to the current ",paraId:1,tocIndex:1},{value:"Configure actions",paraId:1,tocIndex:1},{value:" to create new action buttons.",paraId:1,tocIndex:1},{value:"In this example, we will create a button that, when clicked, opens a popup. The popup contains a document embedded in an iframe. This button will be added to the ",paraId:2,tocIndex:2},{value:"Table",paraId:2,tocIndex:2},{value:", ",paraId:2,tocIndex:2},{value:"Details",paraId:2,tocIndex:2},{value:", and ",paraId:2,tocIndex:2},{value:"Form",paraId:2,tocIndex:2},{value:" blocks within the ",paraId:2,tocIndex:2},{value:"Configure actions",paraId:2,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"The complete example code can be found in ",paraId:3,tocIndex:2},{value:"plugin-samples",paraId:3,tocIndex:2},{value:".",paraId:3,tocIndex:2},{value:"Follow the instructions in ",paraId:4,tocIndex:3},{value:"Creating Your First Plugin",paraId:5,tocIndex:3},{value:". If you don\u2019t already have a project, you can create one. If you already have one or have cloned the source code, you can skip this step.",paraId:4,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite +`,paraId:12},{value:"When triggering post-operation events via an HTTP API call, ensure the workflow is enabled and that the data table configuration matches the expected setup. Otherwise, the call may fail or result in errors.",paraId:13}],hI={},fI={title:"6. Multi-language Support",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/action-modal.md",lastUpdated:173254844e4,description:"In NocoBase, there are many Configure actions used to add operation buttons to the interface."},xI=[{id:"adding-a-popup-action",depth:1,title:"Adding a Popup Action"},{id:"scenario-description",depth:2,title:"Scenario Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initializing-the-plugin",depth:2,title:"Initializing the Plugin"},{id:"functionality-implementation",depth:2,title:"Functionality Implementation"},{id:"1-define-the-name",depth:2,title:"1. Define the Name"},{id:"2-define-the-schema",depth:2,title:"2. Define the Schema"},{id:"21-define-the-schema",depth:3,title:"2.1 Define the Schema"},{id:"22-validate-the-schema",depth:3,title:"2.2 Validate the Schema"},{id:"3-define-schema-initializer-item",depth:1,title:"3. Define Schema Initializer Item"},{id:"4-implement-schema-settings",depth:1,title:"4. Implement Schema Settings"},{id:"41-define-schema-settings",depth:2,title:"4.1 Define Schema Settings"},{id:"42-register-schema-settings",depth:2,title:"4.2 Register Schema Settings"},{id:"43-use-schema-settings",depth:2,title:"4.3 Use Schema Settings"},{id:"5-add-to-configure-actions-in-the-page",depth:1,title:"5. Add to Configure Actions in the Page"},{id:"6-multi-language-support",depth:1,title:"6. Multi-language Support"},{id:"61-english",depth:3,title:"6.1 English"},{id:"62-chinese",depth:3,title:"6.2 Chinese"},{id:"packaging-and-uploading-to-production",depth:2,title:"Packaging and Uploading to Production"}],gI=[{value:"In NocoBase, there are many ",paraId:0,tocIndex:1},{value:"Configure actions",paraId:0,tocIndex:1},{value:" used to add operation buttons to the interface.",paraId:0,tocIndex:1},{value:"If the existing action buttons do not fully meet our needs, we can add sub-items to the current ",paraId:1,tocIndex:1},{value:"Configure actions",paraId:1,tocIndex:1},{value:" to create new action buttons.",paraId:1,tocIndex:1},{value:"In this example, we will create a button that, when clicked, opens a popup. The popup contains a document embedded in an iframe. This button will be added to the ",paraId:2,tocIndex:2},{value:"Table",paraId:2,tocIndex:2},{value:", ",paraId:2,tocIndex:2},{value:"Details",paraId:2,tocIndex:2},{value:", and ",paraId:2,tocIndex:2},{value:"Form",paraId:2,tocIndex:2},{value:" blocks within the ",paraId:2,tocIndex:2},{value:"Configure actions",paraId:2,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"The complete example code can be found in ",paraId:3,tocIndex:2},{value:"plugin-samples",paraId:3,tocIndex:2},{value:".",paraId:3,tocIndex:2},{value:"Follow the instructions in ",paraId:4,tocIndex:3},{value:"Creating Your First Plugin",paraId:5,tocIndex:3},{value:". If you don\u2019t already have a project, you can create one. If you already have one or have cloned the source code, you can skip this step.",paraId:4,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install yarn nocobase install @@ -3168,7 +3205,7 @@ export default PluginInitializerActionModalClient; } `,paraId:59,tocIndex:17},{value:"If additional language support is required, more languages can be added.",paraId:60,tocIndex:17},{value:"You can manage multiple languages and switch between them through the UI at ",paraId:61,tocIndex:17},{value:"http://localhost:13000/admin/settings/system-settings",paraId:61,tocIndex:17},{value:".",paraId:61,tocIndex:17},{value:"Following the guidelines outlined in the ",paraId:62,tocIndex:18},{value:"Build and Package Plugins",paraId:63,tocIndex:18},{value:" documentation, we can package the plugin and deploy it to the production environment.",paraId:62,tocIndex:18},{value:"For cloned source code, ensure a full build is executed first to compile plugin dependencies:",paraId:64,tocIndex:18},{value:`yarn build `,paraId:65,tocIndex:18},{value:"For projects created using ",paraId:66,tocIndex:18},{value:"create-nocobase-app",paraId:66,tocIndex:18},{value:", execute the following:",paraId:66,tocIndex:18},{value:`yarn build @nocobase-sample/plugin-initializer-action-modal --tar -`,paraId:67,tocIndex:18},{value:"This will generate the file ",paraId:68,tocIndex:18},{value:"storage/tar/@nocobase-sample/plugin-initializer-action-modal.tar.gz",paraId:68,tocIndex:18},{value:", which can then be installed by following the ",paraId:68,tocIndex:18},{value:"upload process",paraId:69,tocIndex:18},{value:".",paraId:68,tocIndex:18}],bI={},yI={title:"\u6DFB\u52A0\u65B0\u7684\u7B80\u5355\u533A\u5757 Simple Block",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/block-simple.md",lastUpdated:1732240239e3,description:"NocoBase \u6709\u5F88\u591A Add block \u6309\u94AE\u7528\u4E8E\u5411\u754C\u9762\u6DFB\u52A0\u533A\u5757\u3002\u5176\u4E2D\u6709\u4E9B\u548C\u6570\u636E\u8868\u6709\u5173\u7CFB\u7684\u88AB\u6210\u4E3A\u6570\u636E\u533A\u5757 Data Block\uFF0C\u6709\u4E9B\u548C\u6570\u636E\u8868\u65E0\u5173\u7684\u88AB\u79F0\u4E3A\u7B80\u5355\u533A\u5757 Simple Block\u3002"},wI=[{id:"\u6DFB\u52A0\u65B0\u7684\u7B80\u5355\u533A\u5757-simple-block",depth:1,title:"\u6DFB\u52A0\u65B0\u7684\u7B80\u5355\u533A\u5757 Simple Block"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u5B9A\u4E49\u540D\u79F0",depth:3,title:"1. \u5B9A\u4E49\u540D\u79F0"},{id:"2-\u5B9E\u73B0\u533A\u5757\u7EC4\u4EF6",depth:3,title:"2. \u5B9E\u73B0\u533A\u5757\u7EC4\u4EF6"},{id:"21-\u5B9A\u4E49\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.1 \u5B9A\u4E49\u533A\u5757\u7EC4\u4EF6"},{id:"22-\u6CE8\u518C\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.2 \u6CE8\u518C\u533A\u5757\u7EC4\u4EF6"},{id:"23-\u9A8C\u8BC1\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.3 \u9A8C\u8BC1\u533A\u5757\u7EC4\u4EF6"},{id:"3-\u5B9A\u4E49\u533A\u5757-schema",depth:3,title:"3. \u5B9A\u4E49\u533A\u5757 Schema"},{id:"31-\u5B9A\u4E49\u533A\u5757-schema",depth:4,title:"3.1 \u5B9A\u4E49\u533A\u5757 Schema"},{id:"32-\u9A8C\u8BC1\u533A\u5757-schema",depth:4,title:"3.2 \u9A8C\u8BC1\u533A\u5757 Schema"},{id:"4-\u5B9A\u4E49-schema-initializer-item",depth:3,title:"4. \u5B9A\u4E49 Schema Initializer Item"},{id:"5-\u5B9E\u73B0-schema-settings",depth:3,title:"5. \u5B9E\u73B0 Schema Settings"},{id:"51-\u5B9A\u4E49-schema-settings",depth:4,title:"5.1 \u5B9A\u4E49 Schema Settings"},{id:"52-\u6CE8\u518C-schema-settings",depth:4,title:"5.2 \u6CE8\u518C Schema Settings"},{id:"53-\u4F7F\u7528-schema-settings",depth:4,title:"5.3 \u4F7F\u7528 Schema Settings"},{id:"6-\u6DFB\u52A0\u5230-add-block-\u4E2D",depth:3,title:"6. \u6DFB\u52A0\u5230 Add block \u4E2D"},{id:"61-\u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B-add-block-\u4E2D",depth:4,title:"6.1 \u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B Add block \u4E2D"},{id:"62-\u6DFB\u52A0\u5230\u5F39\u7A97-add-block-\u4E2D",depth:4,title:"6.2 \u6DFB\u52A0\u5230\u5F39\u7A97 Add block \u4E2D"},{id:"63-\u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF-add-block-\u4E2D",depth:4,title:"6.3 \u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF Add block \u4E2D"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],kI=[{value:"NocoBase \u6709\u5F88\u591A ",paraId:0,tocIndex:1},{value:"Add block",paraId:0,tocIndex:1},{value:" \u6309\u94AE\u7528\u4E8E\u5411\u754C\u9762\u6DFB\u52A0\u533A\u5757\u3002\u5176\u4E2D\u6709\u4E9B\u548C\u6570\u636E\u8868\u6709\u5173\u7CFB\u7684\u88AB\u6210\u4E3A\u6570\u636E\u533A\u5757 ",paraId:0,tocIndex:1},{value:"Data Block",paraId:0,tocIndex:1},{value:"\uFF0C\u6709\u4E9B\u548C\u6570\u636E\u8868\u65E0\u5173\u7684\u88AB\u79F0\u4E3A\u7B80\u5355\u533A\u5757 ",paraId:0,tocIndex:1},{value:"Simple Block",paraId:0,tocIndex:1},{value:"\u3002",paraId:0,tocIndex:1},{value:"\u4F46\u662F\u76EE\u524D\u5DF2\u6709\u7684\u533A\u5757\u7C7B\u578B\u4E0D\u4E00\u5B9A\u6EE1\u8DB3\u6211\u4EEC\u7684\u9700\u6C42\uFF0C\u6211\u4EEC\u5C31\u9700\u8981\u6839\u636E\u9700\u6C42\u81EA\u5B9A\u5F00\u53D1\u4E00\u4E9B\u533A\u5757\uFF0C\u672C\u7BC7\u6587\u7AE0\u5C31\u662F\u9488\u5BF9\u7B80\u5355\u533A\u5757 ",paraId:1,tocIndex:1},{value:"Simple Block",paraId:1,tocIndex:1},{value:" \u8FDB\u884C\u8BF4\u660E\u3002",paraId:1,tocIndex:1},{value:"\u672C\u5B9E\u4F8B\u4F1A\u521B\u5EFA\u4E00\u4E2A\u56FE\u7247\u533A\u5757\u7C7B\u578B\uFF0C\u5E76\u5C06\u5176\u6DFB\u52A0\u5230 ",paraId:2,tocIndex:2},{value:"Page",paraId:2,tocIndex:2},{value:"\u3001",paraId:2,tocIndex:2},{value:"Table",paraId:2,tocIndex:2},{value:" \u4EE5\u53CA\u79FB\u52A8\u7AEF\u7684 ",paraId:2,tocIndex:2},{value:"Add block",paraId:2,tocIndex:2},{value:" \u4E2D\u3002",paraId:2,tocIndex:2},{value:"\u672C\u5B9E\u4F8B\u4E3B\u8981\u4E3A\u4E86\u6F14\u793A initializer \u7684\u4F7F\u7528\uFF0C\u66F4\u591A\u5173\u4E8E\u533A\u5757\u6269\u5C55\u53EF\u4EE5\u67E5\u770B ",paraId:3,tocIndex:2},{value:"\u533A\u5757\u6269\u5C55",paraId:4,tocIndex:2},{value:" \u6587\u6863\u3002",paraId:3,tocIndex:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:5,tocIndex:2},{value:"plugin-samples",paraId:5,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:5,tocIndex:2},{value:` +`,paraId:67,tocIndex:18},{value:"This will generate the file ",paraId:68,tocIndex:18},{value:"storage/tar/@nocobase-sample/plugin-initializer-action-modal.tar.gz",paraId:68,tocIndex:18},{value:", which can then be installed by following the ",paraId:68,tocIndex:18},{value:"upload process",paraId:69,tocIndex:18},{value:".",paraId:68,tocIndex:18}],bI={},yI={title:"\u6DFB\u52A0\u65B0\u7684\u7B80\u5355\u533A\u5757 Simple Block",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/block-simple.md",lastUpdated:173254844e4,description:"NocoBase \u6709\u5F88\u591A Add block \u6309\u94AE\u7528\u4E8E\u5411\u754C\u9762\u6DFB\u52A0\u533A\u5757\u3002\u5176\u4E2D\u6709\u4E9B\u548C\u6570\u636E\u8868\u6709\u5173\u7CFB\u7684\u88AB\u6210\u4E3A\u6570\u636E\u533A\u5757 Data Block\uFF0C\u6709\u4E9B\u548C\u6570\u636E\u8868\u65E0\u5173\u7684\u88AB\u79F0\u4E3A\u7B80\u5355\u533A\u5757 Simple Block\u3002"},wI=[{id:"\u6DFB\u52A0\u65B0\u7684\u7B80\u5355\u533A\u5757-simple-block",depth:1,title:"\u6DFB\u52A0\u65B0\u7684\u7B80\u5355\u533A\u5757 Simple Block"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u5B9A\u4E49\u540D\u79F0",depth:3,title:"1. \u5B9A\u4E49\u540D\u79F0"},{id:"2-\u5B9E\u73B0\u533A\u5757\u7EC4\u4EF6",depth:3,title:"2. \u5B9E\u73B0\u533A\u5757\u7EC4\u4EF6"},{id:"21-\u5B9A\u4E49\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.1 \u5B9A\u4E49\u533A\u5757\u7EC4\u4EF6"},{id:"22-\u6CE8\u518C\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.2 \u6CE8\u518C\u533A\u5757\u7EC4\u4EF6"},{id:"23-\u9A8C\u8BC1\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.3 \u9A8C\u8BC1\u533A\u5757\u7EC4\u4EF6"},{id:"3-\u5B9A\u4E49\u533A\u5757-schema",depth:3,title:"3. \u5B9A\u4E49\u533A\u5757 Schema"},{id:"31-\u5B9A\u4E49\u533A\u5757-schema",depth:4,title:"3.1 \u5B9A\u4E49\u533A\u5757 Schema"},{id:"32-\u9A8C\u8BC1\u533A\u5757-schema",depth:4,title:"3.2 \u9A8C\u8BC1\u533A\u5757 Schema"},{id:"4-\u5B9A\u4E49-schema-initializer-item",depth:3,title:"4. \u5B9A\u4E49 Schema Initializer Item"},{id:"5-\u5B9E\u73B0-schema-settings",depth:3,title:"5. \u5B9E\u73B0 Schema Settings"},{id:"51-\u5B9A\u4E49-schema-settings",depth:4,title:"5.1 \u5B9A\u4E49 Schema Settings"},{id:"52-\u6CE8\u518C-schema-settings",depth:4,title:"5.2 \u6CE8\u518C Schema Settings"},{id:"53-\u4F7F\u7528-schema-settings",depth:4,title:"5.3 \u4F7F\u7528 Schema Settings"},{id:"6-\u6DFB\u52A0\u5230-add-block-\u4E2D",depth:3,title:"6. \u6DFB\u52A0\u5230 Add block \u4E2D"},{id:"61-\u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B-add-block-\u4E2D",depth:4,title:"6.1 \u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B Add block \u4E2D"},{id:"62-\u6DFB\u52A0\u5230\u5F39\u7A97-add-block-\u4E2D",depth:4,title:"6.2 \u6DFB\u52A0\u5230\u5F39\u7A97 Add block \u4E2D"},{id:"63-\u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF-add-block-\u4E2D",depth:4,title:"6.3 \u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF Add block \u4E2D"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],kI=[{value:"NocoBase \u6709\u5F88\u591A ",paraId:0,tocIndex:1},{value:"Add block",paraId:0,tocIndex:1},{value:" \u6309\u94AE\u7528\u4E8E\u5411\u754C\u9762\u6DFB\u52A0\u533A\u5757\u3002\u5176\u4E2D\u6709\u4E9B\u548C\u6570\u636E\u8868\u6709\u5173\u7CFB\u7684\u88AB\u6210\u4E3A\u6570\u636E\u533A\u5757 ",paraId:0,tocIndex:1},{value:"Data Block",paraId:0,tocIndex:1},{value:"\uFF0C\u6709\u4E9B\u548C\u6570\u636E\u8868\u65E0\u5173\u7684\u88AB\u79F0\u4E3A\u7B80\u5355\u533A\u5757 ",paraId:0,tocIndex:1},{value:"Simple Block",paraId:0,tocIndex:1},{value:"\u3002",paraId:0,tocIndex:1},{value:"\u4F46\u662F\u76EE\u524D\u5DF2\u6709\u7684\u533A\u5757\u7C7B\u578B\u4E0D\u4E00\u5B9A\u6EE1\u8DB3\u6211\u4EEC\u7684\u9700\u6C42\uFF0C\u6211\u4EEC\u5C31\u9700\u8981\u6839\u636E\u9700\u6C42\u81EA\u5B9A\u5F00\u53D1\u4E00\u4E9B\u533A\u5757\uFF0C\u672C\u7BC7\u6587\u7AE0\u5C31\u662F\u9488\u5BF9\u7B80\u5355\u533A\u5757 ",paraId:1,tocIndex:1},{value:"Simple Block",paraId:1,tocIndex:1},{value:" \u8FDB\u884C\u8BF4\u660E\u3002",paraId:1,tocIndex:1},{value:"\u672C\u5B9E\u4F8B\u4F1A\u521B\u5EFA\u4E00\u4E2A\u56FE\u7247\u533A\u5757\u7C7B\u578B\uFF0C\u5E76\u5C06\u5176\u6DFB\u52A0\u5230 ",paraId:2,tocIndex:2},{value:"Page",paraId:2,tocIndex:2},{value:"\u3001",paraId:2,tocIndex:2},{value:"Table",paraId:2,tocIndex:2},{value:" \u4EE5\u53CA\u79FB\u52A8\u7AEF\u7684 ",paraId:2,tocIndex:2},{value:"Add block",paraId:2,tocIndex:2},{value:" \u4E2D\u3002",paraId:2,tocIndex:2},{value:"\u672C\u5B9E\u4F8B\u4E3B\u8981\u4E3A\u4E86\u6F14\u793A initializer \u7684\u4F7F\u7528\uFF0C\u66F4\u591A\u5173\u4E8E\u533A\u5757\u6269\u5C55\u53EF\u4EE5\u67E5\u770B ",paraId:3,tocIndex:2},{value:"\u533A\u5757\u6269\u5C55",paraId:4,tocIndex:2},{value:" \u6587\u6863\u3002",paraId:3,tocIndex:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:5,tocIndex:2},{value:"plugin-samples",paraId:5,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:5,tocIndex:2},{value:` `,paraId:6},{value:"\u6211\u4EEC\u6309\u7167 ",paraId:7,tocIndex:3},{value:"\u7F16\u5199\u7B2C\u4E00\u4E2A\u63D2\u4EF6",paraId:8,tocIndex:3},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u5982\u679C\u6CA1\u6709\u4E00\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u5148\u521B\u5EFA\u4E00\u4E2A\u9879\u76EE\uFF0C\u5982\u679C\u5DF2\u7ECF\u6709\u4E86\u6216\u8005\u662F clone \u7684\u6E90\u7801\uFF0C\u5219\u8DF3\u8FC7\u8FD9\u4E00\u6B65\u3002",paraId:7,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -3374,21 +3411,36 @@ export default PluginInitializerBlockSimpleClient; } `,paraId:86,tocIndex:21},{value:"\u5982\u679C\u9700\u8981\u66F4\u591A\u7684 ",paraId:87,tocIndex:21},{value:"Add block",paraId:87,tocIndex:21},{value:"\uFF0C\u53EF\u4EE5\u7EE7\u7EED\u6DFB\u52A0\uFF0C\u53EA\u9700\u8981\u77E5\u9053\u5BF9\u5E94\u7684 ",paraId:87,tocIndex:21},{value:"name",paraId:87,tocIndex:21},{value:" \u5373\u53EF\u3002",paraId:87,tocIndex:21},{value:"\u6309\u7167 ",paraId:88,tocIndex:22},{value:"\u6784\u5EFA\u5E76\u6253\u5305\u63D2\u4EF6",paraId:89,tocIndex:22},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6253\u5305\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883\u3002",paraId:88,tocIndex:22},{value:"\u5982\u679C\u662F clone \u7684\u6E90\u7801\uFF0C\u9700\u8981\u5148\u6267\u884C\u4E00\u6B21\u5168\u91CF build\uFF0C\u5C06\u63D2\u4EF6\u7684\u4F9D\u8D56\u4E5F\u6784\u5EFA\u597D\u3002",paraId:90,tocIndex:22},{value:`yarn build `,paraId:91,tocIndex:22},{value:"\u5982\u679C\u662F\u4F7F\u7528\u7684 ",paraId:92,tocIndex:22},{value:"create-nocobase-app",paraId:92,tocIndex:22},{value:" \u521B\u5EFA\u7684\u9879\u76EE\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A",paraId:92,tocIndex:22},{value:`yarn build @nocobase-sample/plugin-initializer-block-simple --tar -`,paraId:93,tocIndex:22},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:94,tocIndex:22},{value:"storage/tar/@nocobase-sample/plugin-initializer-block-simple.tar.gz",paraId:94,tocIndex:22},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:94,tocIndex:22},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:95,tocIndex:22},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:94,tocIndex:22}],SI={},UI={title:"\u5220\u9664",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/delete.md",lastUpdated:1732240239e3,description:"\u5220\u9664\u64CD\u4F5C\u7528\u4E8E\u5220\u9664\u6570\u636E\u8BB0\u5F55\uFF08\u884C\u6309\u94AE/\u6279\u91CF\u64CD\u4F5C\u6309\u94AE\uFF09\uFF0C\u6709\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97"},PI=[{id:"\u5220\u9664",depth:1,title:"\u5220\u9664"}],TI=[{value:"\u5220\u9664\u64CD\u4F5C\u7528\u4E8E\u5220\u9664\u6570\u636E\u8BB0\u5F55\uFF08\u884C\u6309\u94AE/\u6279\u91CF\u64CD\u4F5C\u6309\u94AE\uFF09\uFF0C\u6709\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97",paraId:0,tocIndex:0}],CI={},AI={title:"\u5BFC\u51FA",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/export.md",lastUpdated:1732240239e3,description:"\u5BFC\u51FA\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u6279\u91CF\u5BFC\u51FA\u533A\u5757\u4E2D\u6240\u7ED1\u5B9A\u7684\u6570\u636E\u8868\u7684\u6240\u6709\u6570\u636E\uFF0C\u652F\u6301\u914D\u7F6E\u5BFC\u51FA\u5B57\u6BB5\u7684\u6807\u9898"},qI=[{id:"\u5BFC\u51FA",depth:1,title:"\u5BFC\u51FA"}],EI=[{value:"\u5BFC\u51FA\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u6279\u91CF\u5BFC\u51FA\u533A\u5757\u4E2D\u6240\u7ED1\u5B9A\u7684\u6570\u636E\u8868\u7684\u6240\u6709\u6570\u636E\uFF0C\u652F\u6301\u914D\u7F6E\u5BFC\u51FA\u5B57\u6BB5\u7684\u6807\u9898",paraId:0,tocIndex:0},{value:"\u914D\u7F6E\u53EF\u5BFC\u51FA\u5B57\u6BB5",paraId:1,tocIndex:0}],DI={},OI={title:"\u7B5B\u9009",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/filter.md",lastUpdated:1732240239e3,description:"\u7B5B\u9009\u64CD\u4F5C\u901A\u5E38\u51FA\u73B0\u5728\u6570\u636E\u533A\u5757\u4E2D\uFF0C\u53EF\u4EE5\u914D\u7F6E\u5404\u79CD\u6761\u4EF6\u6765\u8FC7\u6EE4\u6570\u636E\uFF0C\u9700\u8981\u6CE8\u610F\u7684\u662F\u5982\u679C\u533A\u5757\u5DF2\u7ECF\u914D\u7F6E\u4E86\u6570\u636E\u8303\u56F4\uFF0C\u7B5B\u9009\u64CD\u4F5C\u5C06\u4E0E\u6570\u636E\u8303\u56F4\u7684\u6761\u4EF6\u5408\u5E76\u4F5C\u4E3A\u6700\u7EC8\u8FC7\u6EE4\u6761\u4EF6\u3002"},RI=[{id:"\u7B5B\u9009",depth:1,title:"\u7B5B\u9009"}],MI=[{value:"\u7B5B\u9009\u64CD\u4F5C\u901A\u5E38\u51FA\u73B0\u5728\u6570\u636E\u533A\u5757\u4E2D\uFF0C\u53EF\u4EE5\u914D\u7F6E\u5404\u79CD\u6761\u4EF6\u6765\u8FC7\u6EE4\u6570\u636E\uFF0C\u9700\u8981\u6CE8\u610F\u7684\u662F\u5982\u679C\u533A\u5757\u5DF2\u7ECF\u914D\u7F6E\u4E86\u6570\u636E\u8303\u56F4\uFF0C\u7B5B\u9009\u64CD\u4F5C\u5C06\u4E0E\u6570\u636E\u8303\u56F4\u7684\u6761\u4EF6\u5408\u5E76\u4F5C\u4E3A\u6700\u7EC8\u8FC7\u6EE4\u6761\u4EF6\u3002",paraId:0,tocIndex:0},{value:"\u652F\u6301\u914D\u7F6E\u53EF\u7B5B\u9009\u7684\u5B57\u6BB5",paraId:1,tocIndex:0},{value:"\u5982\u4E0B\u56FE\u8FD0\u5355\u5217\u8868\u914D\u7F6E\u7B5B\u9009\u64CD\u4F5C\uFF1A\u901A\u8FC7\u8C03\u6574\u6761\u4EF6\u914D\u7F6E\u7B5B\u9009\u6570\u636E",paraId:2,tocIndex:0}],LI={},NI={title:"\u5BFC\u5165",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/import.md",lastUpdated:1732240239e3,description:"\u5BFC\u5165\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u76EE\u524D\u652F\u6301\u901A\u8FC7\u5BFC\u5165xlsx\u6587\u4EF6\u6279\u91CF\u5BFC\u5165\u6570\u636E"},zI=[{id:"\u5BFC\u5165",depth:1,title:"\u5BFC\u5165"}],FI=[{value:"\u5BFC\u5165\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u76EE\u524D\u652F\u6301\u901A\u8FC7\u5BFC\u5165",paraId:0,tocIndex:0},{value:"xlsx",paraId:0,tocIndex:0},{value:"\u6587\u4EF6\u6279\u91CF\u5BFC\u5165\u6570\u636E",paraId:0,tocIndex:0},{value:"\u914D\u7F6E\u53EF\u5BFC\u5165\u7684\u5B57\u6BB5",paraId:1,tocIndex:0},{value:"\u4E0B\u8F7D\u5BFC\u5165\u7684\u6A21\u677F\uFF0C\u5728\u6A21\u677F\u4E2D\u6DFB\u52A0\u6570\u636E\u540E\u5BFC\u5165",paraId:2,tocIndex:0},{value:"\u8BE6\u89C1\u5BFC\u5165\u8BF4\u660E",paraId:3,tocIndex:0},{value:"https://github.com/nocobase/nocobase/tree/main/packages/plugins/%40nocobase/plugin-import#%E5%AF%BC%E5%85%A5%E8%AF%B4%E6%98%8E",paraId:4,tocIndex:0}],BI={},jI={title:"\u63D0\u4EA4",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/submit.md",lastUpdated:1732240239e3,description:"\u63D0\u4EA4\u64CD\u4F5C\u7528\u4E8E\u4FDD\u5B58\u8868\u5355\u6570\u636E\uFF08\u8868\u5355\u533A\u5757\u7279\u6709\uFF09"},HI=[{id:"\u63D0\u4EA4",depth:1,title:"\u63D0\u4EA4"},{id:"\u53C2\u6570\u914D\u7F6E",depth:4,title:"\u53C2\u6570\u914D\u7F6E"}],WI=[{value:"\u63D0\u4EA4\u64CD\u4F5C\u7528\u4E8E\u4FDD\u5B58\u8868\u5355\u6570\u636E\uFF08\u8868\u5355\u533A\u5757\u7279\u6709\uFF09",paraId:0,tocIndex:0},{value:"\u4FDD\u5B58\u65B9\u5F0F\uFF1A\u4EC5\u9488\u5BF9",paraId:1,tocIndex:1},{value:"\u65B0\u5EFA",paraId:1,tocIndex:1},{value:"\u64CD\u4F5C\u4E2D\u8868\u5355\u533A\u5757\u7684\u63D0\u4EA4\u652F\u6301\u914D\u7F6E\u4FDD\u5B58\u65B9\u5F0F",paraId:1,tocIndex:1},{value:"\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\uFF1A\u652F\u6301\u4E0E\u5DE5\u4F5C\u6D41\u7684\u7ED1\u5B9A\u914D\u7F6E\uFF0C\u63D0\u4EA4\u540E\u81EA\u52A8\u89E6\u53D1\u5DE5\u4F5C\u6D41\uFF0C\u901A\u8FC7\u5B9A\u4E49\u89E6\u53D1\u6570\u636E\u4E0A\u4E0B\u6587\uFF0C\u5B9E\u73B0\u9AD8\u7EA7\u7684\u81EA\u52A8\u5316\u4EFB\u52A1\uFF0C\u63D0\u9AD8\u6570\u636E\u5904\u7406\u6548\u7387\u548C\u4E1A\u52A1\u6D41\u7A0B\u63A7\u5236",paraId:2,tocIndex:1},{value:"\u8BE6\u60C5\u53EF\u67E5\u770B\u5DE5\u4F5C\u6D41\u4F7F\u7528\u6587\u6863",paraId:3,tocIndex:1}],$I={},GI={title:"Git source code",toc:"menu",filename:"docs/en-US/welcome/getting-started/installation/git-clone.md",lastUpdated:1732240239e3,description:"Make sure you have:"},VI=[{id:"git-source-code",depth:1,title:"Git source code"},{id:"0-prerequisites",depth:2,title:"0. Prerequisites"},{id:"1-download-with-git",depth:2,title:"1. Download with Git"},{id:"latest-version-main",depth:3,title:"Latest version (main)"},{id:"beta-version-next",depth:3,title:"Beta version (next)"},{id:"alpha-version-develop",depth:3,title:"Alpha version (develop)"},{id:"2-switch-to-the-project-directory",depth:2,title:"2. Switch to the project directory"},{id:"3-install-dependencies",depth:2,title:"3. Install dependencies"},{id:"4-set-environment-variables",depth:2,title:"4. Set environment variables"},{id:"5-install-nocobase",depth:2,title:"5. Install NocoBase"},{id:"6-start-nocobase",depth:2,title:"6. Start NocoBase"},{id:"7-log-in-to-nocobase",depth:2,title:"7. Log in to NocoBase"}],KI=[{value:"Make sure you have:",paraId:0,tocIndex:1},{value:"Git, Node.js 20+, Yarn 1.22.x installed",paraId:1,tocIndex:1},{value:"Configured and started the required database \u2014 MySQL 8.x, MariaDB 10.9+, PostgreSQL 10+ \u2014 choose any one.",paraId:1,tocIndex:1},{value:"main",paraId:2},{value:"Stable and well-tested version and only bug fixed will be made. This version is recommended.",paraId:3,tocIndex:3},{value:`git clone https://github.com/nocobase/nocobase.git -b main --depth=1 my-nocobase +`,paraId:93,tocIndex:22},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:94,tocIndex:22},{value:"storage/tar/@nocobase-sample/plugin-initializer-block-simple.tar.gz",paraId:94,tocIndex:22},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:94,tocIndex:22},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:95,tocIndex:22},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:94,tocIndex:22}],SI={},UI={title:"\u5220\u9664",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/delete.md",lastUpdated:173254844e4,description:"\u5220\u9664\u64CD\u4F5C\u7528\u4E8E\u5220\u9664\u6570\u636E\u8BB0\u5F55\uFF08\u884C\u6309\u94AE/\u6279\u91CF\u64CD\u4F5C\u6309\u94AE\uFF09\uFF0C\u6709\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97"},PI=[{id:"\u5220\u9664",depth:1,title:"\u5220\u9664"}],TI=[{value:"\u5220\u9664\u64CD\u4F5C\u7528\u4E8E\u5220\u9664\u6570\u636E\u8BB0\u5F55\uFF08\u884C\u6309\u94AE/\u6279\u91CF\u64CD\u4F5C\u6309\u94AE\uFF09\uFF0C\u6709\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97",paraId:0,tocIndex:0}],CI={},AI={title:"\u5BFC\u51FA",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/export.md",lastUpdated:173254844e4,description:"\u5BFC\u51FA\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u6279\u91CF\u5BFC\u51FA\u533A\u5757\u4E2D\u6240\u7ED1\u5B9A\u7684\u6570\u636E\u8868\u7684\u6240\u6709\u6570\u636E\uFF0C\u652F\u6301\u914D\u7F6E\u5BFC\u51FA\u5B57\u6BB5\u7684\u6807\u9898"},qI=[{id:"\u5BFC\u51FA",depth:1,title:"\u5BFC\u51FA"}],EI=[{value:"\u5BFC\u51FA\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u6279\u91CF\u5BFC\u51FA\u533A\u5757\u4E2D\u6240\u7ED1\u5B9A\u7684\u6570\u636E\u8868\u7684\u6240\u6709\u6570\u636E\uFF0C\u652F\u6301\u914D\u7F6E\u5BFC\u51FA\u5B57\u6BB5\u7684\u6807\u9898",paraId:0,tocIndex:0},{value:"\u914D\u7F6E\u53EF\u5BFC\u51FA\u5B57\u6BB5",paraId:1,tocIndex:0}],DI={},OI={title:"\u7B5B\u9009",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/filter.md",lastUpdated:173254844e4,description:"\u7B5B\u9009\u64CD\u4F5C\u901A\u5E38\u51FA\u73B0\u5728\u6570\u636E\u533A\u5757\u4E2D\uFF0C\u53EF\u4EE5\u914D\u7F6E\u5404\u79CD\u6761\u4EF6\u6765\u8FC7\u6EE4\u6570\u636E\uFF0C\u9700\u8981\u6CE8\u610F\u7684\u662F\u5982\u679C\u533A\u5757\u5DF2\u7ECF\u914D\u7F6E\u4E86\u6570\u636E\u8303\u56F4\uFF0C\u7B5B\u9009\u64CD\u4F5C\u5C06\u4E0E\u6570\u636E\u8303\u56F4\u7684\u6761\u4EF6\u5408\u5E76\u4F5C\u4E3A\u6700\u7EC8\u8FC7\u6EE4\u6761\u4EF6\u3002"},RI=[{id:"\u7B5B\u9009",depth:1,title:"\u7B5B\u9009"}],MI=[{value:"\u7B5B\u9009\u64CD\u4F5C\u901A\u5E38\u51FA\u73B0\u5728\u6570\u636E\u533A\u5757\u4E2D\uFF0C\u53EF\u4EE5\u914D\u7F6E\u5404\u79CD\u6761\u4EF6\u6765\u8FC7\u6EE4\u6570\u636E\uFF0C\u9700\u8981\u6CE8\u610F\u7684\u662F\u5982\u679C\u533A\u5757\u5DF2\u7ECF\u914D\u7F6E\u4E86\u6570\u636E\u8303\u56F4\uFF0C\u7B5B\u9009\u64CD\u4F5C\u5C06\u4E0E\u6570\u636E\u8303\u56F4\u7684\u6761\u4EF6\u5408\u5E76\u4F5C\u4E3A\u6700\u7EC8\u8FC7\u6EE4\u6761\u4EF6\u3002",paraId:0,tocIndex:0},{value:"\u652F\u6301\u914D\u7F6E\u53EF\u7B5B\u9009\u7684\u5B57\u6BB5",paraId:1,tocIndex:0},{value:"\u5982\u4E0B\u56FE\u8FD0\u5355\u5217\u8868\u914D\u7F6E\u7B5B\u9009\u64CD\u4F5C\uFF1A\u901A\u8FC7\u8C03\u6574\u6761\u4EF6\u914D\u7F6E\u7B5B\u9009\u6570\u636E",paraId:2,tocIndex:0}],LI={},NI={title:"\u5BFC\u5165",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/import.md",lastUpdated:173254844e4,description:"\u5BFC\u5165\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u76EE\u524D\u652F\u6301\u901A\u8FC7\u5BFC\u5165xlsx\u6587\u4EF6\u6279\u91CF\u5BFC\u5165\u6570\u636E"},zI=[{id:"\u5BFC\u5165",depth:1,title:"\u5BFC\u5165"}],FI=[{value:"\u5BFC\u5165\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u76EE\u524D\u652F\u6301\u901A\u8FC7\u5BFC\u5165",paraId:0,tocIndex:0},{value:"xlsx",paraId:0,tocIndex:0},{value:"\u6587\u4EF6\u6279\u91CF\u5BFC\u5165\u6570\u636E",paraId:0,tocIndex:0},{value:"\u914D\u7F6E\u53EF\u5BFC\u5165\u7684\u5B57\u6BB5",paraId:1,tocIndex:0},{value:"\u4E0B\u8F7D\u5BFC\u5165\u7684\u6A21\u677F\uFF0C\u5728\u6A21\u677F\u4E2D\u6DFB\u52A0\u6570\u636E\u540E\u5BFC\u5165",paraId:2,tocIndex:0},{value:"\u8BE6\u89C1\u5BFC\u5165\u8BF4\u660E",paraId:3,tocIndex:0},{value:"https://github.com/nocobase/nocobase/tree/main/packages/plugins/%40nocobase/plugin-import#%E5%AF%BC%E5%85%A5%E8%AF%B4%E6%98%8E",paraId:4,tocIndex:0}],BI={},jI={title:"\u63D0\u4EA4",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/submit.md",lastUpdated:173254844e4,description:"\u63D0\u4EA4\u64CD\u4F5C\u7528\u4E8E\u4FDD\u5B58\u8868\u5355\u6570\u636E\uFF08\u8868\u5355\u533A\u5757\u7279\u6709\uFF09"},HI=[{id:"\u63D0\u4EA4",depth:1,title:"\u63D0\u4EA4"},{id:"\u53C2\u6570\u914D\u7F6E",depth:4,title:"\u53C2\u6570\u914D\u7F6E"}],WI=[{value:"\u63D0\u4EA4\u64CD\u4F5C\u7528\u4E8E\u4FDD\u5B58\u8868\u5355\u6570\u636E\uFF08\u8868\u5355\u533A\u5757\u7279\u6709\uFF09",paraId:0,tocIndex:0},{value:"\u4FDD\u5B58\u65B9\u5F0F\uFF1A\u4EC5\u9488\u5BF9",paraId:1,tocIndex:1},{value:"\u65B0\u5EFA",paraId:1,tocIndex:1},{value:"\u64CD\u4F5C\u4E2D\u8868\u5355\u533A\u5757\u7684\u63D0\u4EA4\u652F\u6301\u914D\u7F6E\u4FDD\u5B58\u65B9\u5F0F",paraId:1,tocIndex:1},{value:"\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\uFF1A\u652F\u6301\u4E0E\u5DE5\u4F5C\u6D41\u7684\u7ED1\u5B9A\u914D\u7F6E\uFF0C\u63D0\u4EA4\u540E\u81EA\u52A8\u89E6\u53D1\u5DE5\u4F5C\u6D41\uFF0C\u901A\u8FC7\u5B9A\u4E49\u89E6\u53D1\u6570\u636E\u4E0A\u4E0B\u6587\uFF0C\u5B9E\u73B0\u9AD8\u7EA7\u7684\u81EA\u52A8\u5316\u4EFB\u52A1\uFF0C\u63D0\u9AD8\u6570\u636E\u5904\u7406\u6548\u7387\u548C\u4E1A\u52A1\u6D41\u7A0B\u63A7\u5236",paraId:2,tocIndex:1},{value:"\u8BE6\u60C5\u53EF\u67E5\u770B\u5DE5\u4F5C\u6D41\u4F7F\u7528\u6587\u6863",paraId:3,tocIndex:1}],$I={},GI={title:"Git source code",toc:"menu",filename:"docs/en-US/welcome/getting-started/installation/git-clone.md",lastUpdated:173254844e4,description:"Make sure you have:"},VI=[{id:"git-source-code",depth:1,title:"Git source code"},{id:"0-prerequisites",depth:2,title:"0. Prerequisites"},{id:"1-download-with-git",depth:2,title:"1. Download with Git"},{id:"latest-version-main",depth:3,title:"Latest version (main)"},{id:"beta-version-next",depth:3,title:"Beta version (next)"},{id:"alpha-version-develop",depth:3,title:"Alpha version (develop)"},{id:"2-switch-to-the-project-directory",depth:2,title:"2. Switch to the project directory"},{id:"3-install-dependencies",depth:2,title:"3. Install dependencies"},{id:"5-install-nocobase",depth:2,title:"5. Install NocoBase"},{id:"6-start-nocobase",depth:2,title:"6. Start NocoBase"},{id:"7-log-in-to-nocobase",depth:2,title:"7. Log in to NocoBase"}],KI=[{value:"Make sure you have:",paraId:0,tocIndex:1},{value:"Git, Node.js 20+, Yarn 1.22.x installed",paraId:1,tocIndex:1},{value:"Configured and started the required database \u2014 MySQL 8.x, MariaDB 10.9+, PostgreSQL 10+ \u2014 choose any one.",paraId:1,tocIndex:1},{value:"main",paraId:2},{value:"Stable and well-tested version and only bug fixed will be made. This version is recommended.",paraId:3,tocIndex:3},{value:`git clone https://github.com/nocobase/nocobase.git -b main --depth=1 my-nocobase `,paraId:4,tocIndex:3},{value:"next",paraId:2},{value:"This version includes new features that are about to be released and it has been preliminarily tested, but still have known or unknown issues.",paraId:5,tocIndex:4},{value:`git clone https://github.com/nocobase/nocobase.git -b next --depth=1 my-nocobase `,paraId:6,tocIndex:4},{value:"develop",paraId:2},{value:"A development version containing the latest features, which may be incomplete or unstable.",paraId:7,tocIndex:5},{value:`git clone https://github.com/nocobase/nocobase.git -b develop --depth=1 my-nocobase `,paraId:8,tocIndex:5},{value:`cd my-nocobase -`,paraId:9,tocIndex:6},{value:`yarn install --frozen-lockfile -# If you are deploying in a production environment, you can install only the necessary dependencies to reduce the size -yarn install --frozen-lockfile --production -`,paraId:10,tocIndex:7},{value:"The environment variables required by NocoBase are stored in the root ",paraId:11,tocIndex:8},{value:".env",paraId:11,tocIndex:8},{value:" file, modify the environment variables according to the actual situation, if you don't know how to change them, ",paraId:11,tocIndex:8},{value:"click here for environment variables description",paraId:12,tocIndex:8},{value:", or you can leave it as default.",paraId:11,tocIndex:8},{value:`DB_HOST=localhost +`,paraId:9,tocIndex:6},{value:"Due to the domestic network environment, it is strongly recommended that you replace the domestic mirror.",paraId:10,tocIndex:7},{value:`$ yarn config set disable-self-update-check true +$ yarn config set registry https://registry.npmmirror.com/ +$ yarn config set sqlite3_binary_host_mirror https://npmmirror.com/mirrors/sqlite3/ +\` \` \` + +\u{1F4E2} This step may take about 10 minutes due to network environment and system configuration. + +\`\`\`bash +yarn install --frozen-lockfile +\` \` \` + +## 4. Set environment variables + +The environment variables required by NocoBase are stored in the root \`.env\` file, modify the environment variables according to the actual situation, if you don't know how to change them, [click here for environment variables description](../env.md), or you can leave it as default. + +\`\`\`bash +TZ=Asia/Shanghai +APP_KEY=your-secret-key +DB_HOST=localhost DB_PORT=5432 DB_DATABASE=postgres DB_USER=nocobase DB_PASSWORD=nocobase -`,paraId:13,tocIndex:8},{value:"TZ",paraId:14},{value:" is used to set the application's time zone, with the default being the system's time zone;",paraId:14},{value:"APP_KEY",paraId:14},{value:" is the application's secret key, used for generating user tokens and so on (if APP_KEY is changed, the old tokens will also become invalid). It can be any random string. Please change it to your own secret key and ensure it is not disclosed to the public.",paraId:14},{value:"DB_*",paraId:14},{value:" is related to the database. If it is not the default database service in the example, please modify it according to the actual situation.",paraId:14},{value:`yarn nocobase install --lang=en-US -`,paraId:15,tocIndex:9},{value:"Development",paraId:16,tocIndex:10},{value:`yarn dev -`,paraId:17,tocIndex:10},{value:"Production",paraId:18,tocIndex:10},{value:"# Build (make sure you have executed `yarn install --frozen-lockfile`, note that it does not include `--production`)\nyarn build\n# Start\nyarn start\n",paraId:19,tocIndex:10},{value:"Open ",paraId:20,tocIndex:11},{value:"http://localhost:13000",paraId:20,tocIndex:11},{value:" in a web browser. The initial account and password are ",paraId:20,tocIndex:11},{value:"admin@nocobase.com",paraId:20,tocIndex:11},{value:" and ",paraId:20,tocIndex:11},{value:"admin123",paraId:20,tocIndex:11},{value:".",paraId:20,tocIndex:11}],ZI={},YI={title:"SchemaInitializer",toc:"menu",filename:"docs/en-US/api/client/schema-designer/schema-initializer.md",lastUpdated:1732240239e3,description:"Used for the initialization of various schemas. Newly added schema can be inserted anywhere in an existing schema node, including:"},QI=[{id:"schemainitializer",depth:1,title:"SchemaInitializer"},{id:"schemainitializerprovider-",depth:3,title:""},{id:"schemainitializerbutton-",depth:3,title:""},{id:"schemainitializeritem",depth:3,title:""}],JI=[{value:"Used for the initialization of various schemas. Newly added schema can be inserted anywhere in an existing schema node, including:",paraId:0,tocIndex:0},{value:`{ +`,paraId:11,tocIndex:7},{value:"TZ",paraId:12},{value:" is used to set the application's time zone, with the default being the system's time zone;",paraId:12},{value:"APP_KEY",paraId:12},{value:" is the application's secret key, used for generating user tokens and so on (if APP_KEY is changed, the old tokens will also become invalid). It can be any random string. Please change it to your own secret key and ensure it is not disclosed to the public.",paraId:12},{value:"DB_*",paraId:12},{value:" is related to the database. If it is not the default database service in the example, please modify it according to the actual situation.",paraId:12},{value:`yarn nocobase install --lang=en-US +`,paraId:13,tocIndex:8},{value:"Development",paraId:14,tocIndex:9},{value:`yarn dev +`,paraId:15,tocIndex:9},{value:"Production",paraId:16,tocIndex:9},{value:"# Build (make sure you have executed `yarn install --frozen-lockfile`, note that it does not include `--production`)\nyarn build\n# Start\nyarn start\n",paraId:17,tocIndex:9},{value:"Open ",paraId:18,tocIndex:10},{value:"http://localhost:13000",paraId:18,tocIndex:10},{value:" in a web browser. The initial account and password are ",paraId:18,tocIndex:10},{value:"admin@nocobase.com",paraId:18,tocIndex:10},{value:" and ",paraId:18,tocIndex:10},{value:"admin123",paraId:18,tocIndex:10},{value:".",paraId:18,tocIndex:10}],ZI={},YI={title:"SchemaInitializer",toc:"menu",filename:"docs/en-US/api/client/schema-designer/schema-initializer.md",lastUpdated:173254844e4,description:"Used for the initialization of various schemas. Newly added schema can be inserted anywhere in an existing schema node, including:"},QI=[{id:"schemainitializer",depth:1,title:"SchemaInitializer"},{id:"schemainitializerprovider-",depth:3,title:""},{id:"schemainitializerbutton-",depth:3,title:""},{id:"schemainitializeritem",depth:3,title:""}],JI=[{value:"Used for the initialization of various schemas. Newly added schema can be inserted anywhere in an existing schema node, including:",paraId:0,tocIndex:0},{value:`{ properties: { // beforeBegin - Insert in front of the current node node1: { @@ -3401,7 +3453,7 @@ DB_PASSWORD=nocobase // afterEnd - After the current node }, } -`,paraId:1,tocIndex:0},{value:"The core of SchemaInitializer includes ",paraId:2,tocIndex:0},{value:"",paraId:2,tocIndex:0},{value:" and ",paraId:2,tocIndex:0},{value:"",paraId:2,tocIndex:0},{value:" the two components. ",paraId:2,tocIndex:0},{value:"",paraId:2,tocIndex:0},{value:" is used to create the dropdown menu button of schema, and the options of the dropdown menu is ",paraId:2,tocIndex:0},{value:"",paraId:2,tocIndex:0},{value:".",paraId:2,tocIndex:0},{value:"",paraId:3},{value:"",paraId:3},{value:"",paraId:3}],XI={},e_={title:"\u6838\u5FC3\u6982\u5FF5",toc:"menu",filename:"docs/en-US/development/server/resources-actions-v2/index.md",lastUpdated:1732240239e3,description:"\u5728 NocoBase \u91CC\uFF0C\u8D44\u6E90\uFF08resource\uFF09\u6709\u4E24\u79CD\u8868\u8FBE\u65B9\u5F0F\uFF1A"},a_=[{id:"\u6838\u5FC3\u6982\u5FF5",depth:1,title:"\u6838\u5FC3\u6982\u5FF5"},{id:"\u8D44\u6E90-resource",depth:2,title:"\u8D44\u6E90 Resource"},{id:"\u64CD\u4F5C-action",depth:2,title:"\u64CD\u4F5C Action"},{id:"\u5982\u4F55\u8BF7\u6C42\u8D44\u6E90",depth:2,title:"\u5982\u4F55\u8BF7\u6C42\u8D44\u6E90"},{id:"\u8D44\u6E90\u5B9A\u4F4D",depth:2,title:"\u8D44\u6E90\u5B9A\u4F4D"}],t_=[{value:"\u5728 NocoBase \u91CC\uFF0C\u8D44\u6E90\uFF08resource\uFF09\u6709\u4E24\u79CD\u8868\u8FBE\u65B9\u5F0F\uFF1A",paraId:0,tocIndex:1},{value:"",paraId:1,tocIndex:1},{value:".",paraId:1,tocIndex:1},{value:"collection \u662F\u6240\u6709\u62BD\u8C61\u6570\u636E\u7684\u96C6\u5408",paraId:2},{value:"association \u4E3A collection \u7684\u5173\u8054\u6570\u636E",paraId:2},{value:"\u793A\u4F8B",paraId:3},{value:"posts",paraId:4},{value:" \u6587\u7AE0",paraId:4},{value:"posts.user",paraId:4},{value:" \u6587\u7AE0\u7528\u6237",paraId:4},{value:"posts.tags",paraId:4},{value:" \u6587\u7AE0\u6807\u7B7E",paraId:4},{value:"\u914D\u7F6E",paraId:5},{value:`// \u6587\u7AE0 +`,paraId:1,tocIndex:0},{value:"The core of SchemaInitializer includes ",paraId:2,tocIndex:0},{value:"",paraId:2,tocIndex:0},{value:" and ",paraId:2,tocIndex:0},{value:"",paraId:2,tocIndex:0},{value:" the two components. ",paraId:2,tocIndex:0},{value:"",paraId:2,tocIndex:0},{value:" is used to create the dropdown menu button of schema, and the options of the dropdown menu is ",paraId:2,tocIndex:0},{value:"",paraId:2,tocIndex:0},{value:".",paraId:2,tocIndex:0},{value:"",paraId:3},{value:"",paraId:3},{value:"",paraId:3}],XI={},e_={title:"\u6838\u5FC3\u6982\u5FF5",toc:"menu",filename:"docs/en-US/development/server/resources-actions-v2/index.md",lastUpdated:173254844e4,description:"\u5728 NocoBase \u91CC\uFF0C\u8D44\u6E90\uFF08resource\uFF09\u6709\u4E24\u79CD\u8868\u8FBE\u65B9\u5F0F\uFF1A"},a_=[{id:"\u6838\u5FC3\u6982\u5FF5",depth:1,title:"\u6838\u5FC3\u6982\u5FF5"},{id:"\u8D44\u6E90-resource",depth:2,title:"\u8D44\u6E90 Resource"},{id:"\u64CD\u4F5C-action",depth:2,title:"\u64CD\u4F5C Action"},{id:"\u5982\u4F55\u8BF7\u6C42\u8D44\u6E90",depth:2,title:"\u5982\u4F55\u8BF7\u6C42\u8D44\u6E90"},{id:"\u8D44\u6E90\u5B9A\u4F4D",depth:2,title:"\u8D44\u6E90\u5B9A\u4F4D"}],t_=[{value:"\u5728 NocoBase \u91CC\uFF0C\u8D44\u6E90\uFF08resource\uFF09\u6709\u4E24\u79CD\u8868\u8FBE\u65B9\u5F0F\uFF1A",paraId:0,tocIndex:1},{value:"",paraId:1,tocIndex:1},{value:".",paraId:1,tocIndex:1},{value:"collection \u662F\u6240\u6709\u62BD\u8C61\u6570\u636E\u7684\u96C6\u5408",paraId:2},{value:"association \u4E3A collection \u7684\u5173\u8054\u6570\u636E",paraId:2},{value:"\u793A\u4F8B",paraId:3},{value:"posts",paraId:4},{value:" \u6587\u7AE0",paraId:4},{value:"posts.user",paraId:4},{value:" \u6587\u7AE0\u7528\u6237",paraId:4},{value:"posts.tags",paraId:4},{value:" \u6587\u7AE0\u6807\u7B7E",paraId:4},{value:"\u914D\u7F6E",paraId:5},{value:`// \u6587\u7AE0 { name: 'posts', } @@ -3461,7 +3513,7 @@ POST /api/posts/1/tags:add GET /api/posts/1/tags:remove `,paraId:20,tocIndex:3},{value:"\u6240\u6709\u8D44\u6E90\u90FD\u901A\u8FC7 ",paraId:21,tocIndex:4},{value:"filterByTk",paraId:21,tocIndex:4},{value:" \u5B9A\u4F4D",paraId:21,tocIndex:4},{value:"collection \u8D44\u6E90\uFF0C",paraId:22,tocIndex:4},{value:"filterByTk",paraId:22,tocIndex:4},{value:" \u5FC5\u987B\u662F\u552F\u4E00\u7684",paraId:22,tocIndex:4},{value:"association \u8D44\u6E90\uFF0C",paraId:22,tocIndex:4},{value:"filterByTk",paraId:22,tocIndex:4},{value:" \u53EF\u80FD\u5E76\u4E0D\u662F\u552F\u4E00\u7684\uFF0C\u9700\u8981\u540C\u65F6\u63D0\u4F9B ",paraId:22,tocIndex:4},{value:"sourceId",paraId:22,tocIndex:4},{value:" \u6765\u5B9A\u4F4D\u3002",paraId:22,tocIndex:4},{value:"\u4F8B\u5982 ",paraId:23,tocIndex:4},{value:"tables.fields",paraId:23,tocIndex:4},{value:" \u8868\u793A\u6570\u636E\u8868\u7684\u5B57\u6BB5",paraId:23,tocIndex:4},{value:`GET /api/tables/table1/fields/title GET /api/tables/table2/fields/title -`,paraId:24,tocIndex:4},{value:"table1 \u548C table2 \u90FD\u6709 title \u5B57\u6BB5\uFF0Ctitle \u5728 table1 \u91CC\u662F\u552F\u4E00\u7684\uFF0C\u4F46\u662F\u5176\u4ED6\u8868\u4E5F\u53EF\u80FD\u6709 title \u5B57\u6BB5",paraId:25,tocIndex:4}],n_={},o_={title:"Edit",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/edit.md",lastUpdated:1732240239e3,description:"The edit operation allows for data modification, typically achieved by configuring the relevant form block."},r_=[{id:"edit",depth:1,title:"Edit"}],d_=[{value:"Edit",paraId:0},{value:"The edit operation allows for data modification, typically achieved by configuring the relevant form block.",paraId:1,tocIndex:0}],i_={},l_={title:"View",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/view.md",lastUpdated:1732240239e3,description:"Detail operations are used to view detailed information about data, usually by configuring detail blocks."},c_=[{id:"view",depth:1,title:"View"}],s_=[{value:"Detail operations are used to view detailed information about data, usually by configuring detail blocks.",paraId:0,tocIndex:0}],u_={},p_={title:"Block",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/blocks/index.md",lastUpdated:1732240239e3,description:"A block serves as the content container, designed to be placed within a page, modal, or drawer. These blocks can be easily rearranged through drag-and-drop functionality, allowing for flexible layout customization."},I_=[{id:"block",depth:1,title:"Block"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"blocks-within-pages",depth:3,title:"Blocks within Pages"},{id:"blocks-within-modals-dialogs-or-drawers",depth:3,title:"Blocks within Modals (Dialogs or Drawers)"},{id:"drawers",depth:4,title:"Drawers"},{id:"dialogs",depth:4,title:"Dialogs"},{id:"block-designer",depth:2,title:"Block Designer"},{id:"block-layout",depth:2,title:"Block Layout"},{id:"block-templates",depth:2,title:"Block Templates"},{id:"how-to-add-and-use-templates",depth:3,title:"How to Add and Use Templates"},{id:"difference-between-duplicate-and-referencing",depth:3,title:"Difference Between Duplicate and Referencing"},{id:"block-types",depth:2,title:"Block Types"},{id:"data-blocks",depth:3,title:"Data Blocks"},{id:"filter-blocks",depth:3,title:"Filter Blocks"},{id:"relationship-blocks",depth:3,title:"Relationship Blocks"},{id:"other-blocks",depth:3,title:"Other Blocks"},{id:"filter-interactions",depth:2,title:"Filter Interactions"}],__=[{value:"A block serves as the content container, designed to be placed within a page, modal, or drawer. These blocks can be easily rearranged through drag-and-drop functionality, allowing for flexible layout customization.",paraId:0,tocIndex:0},{value:"Blocks can be seamlessly integrated into a page, a modal, or a drawer, depending on the desired application.",paraId:1,tocIndex:1},{value:"Within pages, you can choose from various block types, including Data Blocks, Filter Blocks, and Other Blocks, each serving distinct purposes.",paraId:2,tocIndex:2},{value:"Modals, which include dialogs and drawers, also support block integration. While similar to pages, the blocks within modals are typically used for operations related to single records, such as adding, editing, or viewing data. Available block types include Current Data Blocks, Relationship Blocks, and Other Blocks.",paraId:3,tocIndex:3},{value:"Each block features three icons in the upper right corner, offering easy access to essential tools:",paraId:4,tocIndex:6},{value:"Drag-and-Drop Layout",paraId:5,tocIndex:6},{value:"Quick Add Block",paraId:5,tocIndex:6},{value:"Block Parameter Configuration",paraId:5,tocIndex:6},{value:'For simple blocks, all configuration options are centralized under "Block Parameter Configuration," such as in Markdown blocks.',paraId:6,tocIndex:6},{value:'More complex blocks, especially those dealing with data, provide additional embedded options like "Configure Field" and "Configure Action," offering greater flexibility.',paraId:7,tocIndex:6},{value:"Moreover, you can explore advanced nesting possibilities, as demonstrated by the Chart Block.",paraId:8,tocIndex:6},{value:"To customize the layout, simply drag and drop blocks into your preferred arrangement.",paraId:9,tocIndex:7},{value:"You can save any data-type block as a template, which allows for quick duplication or referencing in future projects. For example, a form used for both adding and editing data can be saved as a template, streamlining your workflow by reusing it in different contexts.",paraId:10,tocIndex:8},{value:"Save a data block as a block template (note: only data-type blocks have this feature).",paraId:11,tocIndex:9},{value:"When adding a block, select either the duplicate or reference option for the template.",paraId:12,tocIndex:9},{value:"Duplicate template a new block based on the template, with no link to the original template\u2014any changes to the block will not affect the template. Referencing, however, directly links to the template, meaning any changes to the block will alter the template, and all instances where the template is referenced will be updated accordingly.",paraId:13,tocIndex:10},{value:"NocoBase categorizes blocks into four primary types:",paraId:14,tocIndex:11},{value:"Data Blocks:",paraId:15,tocIndex:11},{value:" Used to display Collection data within the block.",paraId:15,tocIndex:11},{value:"Filter Blocks:",paraId:15,tocIndex:11},{value:" These can be added to pages and are specifically designed for filtering data within Data Blocks.",paraId:15,tocIndex:11},{value:"Relationship Blocks:",paraId:15,tocIndex:11},{value:" These are added to modals and are used for CRUD operations on data related to the current record.",paraId:15,tocIndex:11},{value:"Other Blocks:",paraId:15,tocIndex:11},{value:" These include standalone blocks like Markdown, Audit Log blocks, Workflow To-Do blocks, etc.",paraId:15,tocIndex:11}],v_={},m_={title:"Fields",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/fields/index.md",lastUpdated:1732240239e3,description:"In the UI, fields are field components that carry unit data, with different types of data presented by different field components. Fields can only be attached to blocks and cannot be used independently."},h_=[{id:"fields",depth:3,title:"Fields"},{id:"fields-in-blocks",depth:4,title:"Fields in Blocks"},{id:"field-designer-toolbar",depth:4,title:"Field Designer (Toolbar)"},{id:"field-layout",depth:4,title:"Field Layout"},{id:"general-parameter-configuration",depth:4,title:"General Parameter Configuration"},{id:"validation-rules",depth:5,title:"Validation Rules"},{id:"default-value",depth:5,title:"Default Value"},{id:"pattern",depth:5,title:"Pattern"},{id:"field-types",depth:4,title:"Field Types"}],f_=[{value:"In the UI, fields are field components that carry unit data, with different types of data presented by different field components. Fields can only be attached to blocks and cannot be used independently.",paraId:0,tocIndex:0},{value:'Fields are generally not used alone but exist as sub-elements of data-type blocks. Data-type blocks typically have a "configure fields" option, and the field list is provided by the current data table.',paraId:1,tocIndex:1},{value:"Like blocks, field components also have three icons in the upper right corner:",paraId:2,tocIndex:2},{value:"Drag to layout",paraId:3,tocIndex:2},{value:"Quick add field",paraId:3,tocIndex:2},{value:"Configure field parameters",paraId:3,tocIndex:2},{value:"The layout of fields within a block can be customized by dragging to move them.",paraId:4,tocIndex:3},{value:"Edit field title",paraId:5,tocIndex:4},{value:"Display title",paraId:5,tocIndex:4},{value:"Edit description",paraId:5,tocIndex:4},{value:"Required",paraId:5,tocIndex:4},{value:"Validation rules",paraId:5,tocIndex:4},{value:"Set Default value",paraId:5,tocIndex:4},{value:"Pattern",paraId:5,tocIndex:4},{value:"Important Parameter Configuration:",paraId:6,tocIndex:4},{value:"(to be added)",paraId:7,tocIndex:5},{value:"(to be added)",paraId:8,tocIndex:6},{value:"Unlike blocks, field components have three display modes:",paraId:9,tocIndex:7},{value:"Editable",paraId:10,tocIndex:7},{value:"Readonly (non-editable)",paraId:10,tocIndex:7},{value:"Easy-reading (read mode)",paraId:10,tocIndex:7},{value:"The fields in a block are provided by the data table. For more field type configurations, refer to ",paraId:11,tocIndex:8},{value:"Data Table Field Types",paraId:11,tocIndex:8},{value:".",paraId:11,tocIndex:8}],x_={},g_={title:"Word Cloud Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/wordcloud.md",lastUpdated:1732240239e3},b_=[{id:"word-cloud-chart",depth:1,title:"Word Cloud Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-measure-1-dimension",depth:3,title:"1 Measure, 1 Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],y_=[{value:"Option",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Size",paraId:0,tocIndex:3},{value:"Sets the size of the chart, with either a fixed aspect ratio or fixed height",paraId:0,tocIndex:3},{value:"Light mode theme",paraId:0,tocIndex:3},{value:"Select this option to preview when the system is in light mode",paraId:0,tocIndex:3},{value:"Dark mode theme",paraId:0,tocIndex:3},{value:"Select this option to preview when the system is in dark mode",paraId:0,tocIndex:3},{value:"Shape",paraId:0,tocIndex:3},{value:"Controls the shape of the chart",paraId:0,tocIndex:3}],w_={},k_={title:"API",toc:"menu",filename:"docs/en-US/handbook/notification-manager/development/api.md",lastUpdated:1732240239e3,description:"This abstract class represents a base for different types of notification channels, defining essential interfaces for channel implementation. To add a new notification channel, you must extend this class and implement its methods."},S_=[{id:"api",depth:1,title:"API"},{id:"server-side",depth:2,title:"Server Side"},{id:"basenotificationchannel",depth:3,title:"BaseNotificationChannel"},{id:"pluginnotificationmanagerserver",depth:3,title:"PluginNotificationManagerServer"},{id:"registerchanneltype",depth:4,title:"registerChannelType()"},{id:"signature",depth:5,title:"Signature"},{id:"send",depth:4,title:"send()"},{id:"signature-1",depth:5,title:"Signature"},{id:"detailed-information",depth:5,title:"Detailed Information"},{id:"client-side",depth:2,title:"Client Side"},{id:"pluginnotificationmanagerclient",depth:3,title:"PluginNotificationManagerClient"},{id:"channeltypes",depth:4,title:"channelTypes"},{id:"signature-2",depth:5,title:"Signature"},{id:"registerchanneltype-1",depth:4,title:"registerChannelType()"},{id:"signature-3",depth:5,title:"Signature"},{id:"type",depth:5,title:"Type"}],U_=[{value:"BaseNotificationChannel",paraId:0},{value:"This abstract class represents a base for different types of notification channels, defining essential interfaces for channel implementation. To add a new notification channel, you must extend this class and implement its methods.",paraId:1,tocIndex:2},{value:`export abstract class BaseNotificationChannel { +`,paraId:24,tocIndex:4},{value:"table1 \u548C table2 \u90FD\u6709 title \u5B57\u6BB5\uFF0Ctitle \u5728 table1 \u91CC\u662F\u552F\u4E00\u7684\uFF0C\u4F46\u662F\u5176\u4ED6\u8868\u4E5F\u53EF\u80FD\u6709 title \u5B57\u6BB5",paraId:25,tocIndex:4}],n_={},o_={title:"Edit",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/edit.md",lastUpdated:173254844e4,description:"The edit operation allows for data modification, typically achieved by configuring the relevant form block."},r_=[{id:"edit",depth:1,title:"Edit"}],d_=[{value:"Edit",paraId:0},{value:"The edit operation allows for data modification, typically achieved by configuring the relevant form block.",paraId:1,tocIndex:0}],i_={},l_={title:"View",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/actions/view.md",lastUpdated:173254844e4,description:"Detail operations are used to view detailed information about data, usually by configuring detail blocks."},c_=[{id:"view",depth:1,title:"View"}],s_=[{value:"Detail operations are used to view detailed information about data, usually by configuring detail blocks.",paraId:0,tocIndex:0}],u_={},p_={title:"Block",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/blocks/index.md",lastUpdated:173254844e4,description:"A block serves as the content container, designed to be placed within a page, modal, or drawer. These blocks can be easily rearranged through drag-and-drop functionality, allowing for flexible layout customization."},I_=[{id:"block",depth:1,title:"Block"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"blocks-within-pages",depth:3,title:"Blocks within Pages"},{id:"blocks-within-modals-dialogs-or-drawers",depth:3,title:"Blocks within Modals (Dialogs or Drawers)"},{id:"drawers",depth:4,title:"Drawers"},{id:"dialogs",depth:4,title:"Dialogs"},{id:"block-designer",depth:2,title:"Block Designer"},{id:"block-layout",depth:2,title:"Block Layout"},{id:"block-templates",depth:2,title:"Block Templates"},{id:"how-to-add-and-use-templates",depth:3,title:"How to Add and Use Templates"},{id:"difference-between-duplicate-and-referencing",depth:3,title:"Difference Between Duplicate and Referencing"},{id:"block-types",depth:2,title:"Block Types"},{id:"data-blocks",depth:3,title:"Data Blocks"},{id:"filter-blocks",depth:3,title:"Filter Blocks"},{id:"relationship-blocks",depth:3,title:"Relationship Blocks"},{id:"other-blocks",depth:3,title:"Other Blocks"},{id:"filter-interactions",depth:2,title:"Filter Interactions"}],__=[{value:"A block serves as the content container, designed to be placed within a page, modal, or drawer. These blocks can be easily rearranged through drag-and-drop functionality, allowing for flexible layout customization.",paraId:0,tocIndex:0},{value:"Blocks can be seamlessly integrated into a page, a modal, or a drawer, depending on the desired application.",paraId:1,tocIndex:1},{value:"Within pages, you can choose from various block types, including Data Blocks, Filter Blocks, and Other Blocks, each serving distinct purposes.",paraId:2,tocIndex:2},{value:"Modals, which include dialogs and drawers, also support block integration. While similar to pages, the blocks within modals are typically used for operations related to single records, such as adding, editing, or viewing data. Available block types include Current Data Blocks, Relationship Blocks, and Other Blocks.",paraId:3,tocIndex:3},{value:"Each block features three icons in the upper right corner, offering easy access to essential tools:",paraId:4,tocIndex:6},{value:"Drag-and-Drop Layout",paraId:5,tocIndex:6},{value:"Quick Add Block",paraId:5,tocIndex:6},{value:"Block Parameter Configuration",paraId:5,tocIndex:6},{value:'For simple blocks, all configuration options are centralized under "Block Parameter Configuration," such as in Markdown blocks.',paraId:6,tocIndex:6},{value:'More complex blocks, especially those dealing with data, provide additional embedded options like "Configure Field" and "Configure Action," offering greater flexibility.',paraId:7,tocIndex:6},{value:"Moreover, you can explore advanced nesting possibilities, as demonstrated by the Chart Block.",paraId:8,tocIndex:6},{value:"To customize the layout, simply drag and drop blocks into your preferred arrangement.",paraId:9,tocIndex:7},{value:"You can save any data-type block as a template, which allows for quick duplication or referencing in future projects. For example, a form used for both adding and editing data can be saved as a template, streamlining your workflow by reusing it in different contexts.",paraId:10,tocIndex:8},{value:"Save a data block as a block template (note: only data-type blocks have this feature).",paraId:11,tocIndex:9},{value:"When adding a block, select either the duplicate or reference option for the template.",paraId:12,tocIndex:9},{value:"Duplicate template a new block based on the template, with no link to the original template\u2014any changes to the block will not affect the template. Referencing, however, directly links to the template, meaning any changes to the block will alter the template, and all instances where the template is referenced will be updated accordingly.",paraId:13,tocIndex:10},{value:"NocoBase categorizes blocks into four primary types:",paraId:14,tocIndex:11},{value:"Data Blocks:",paraId:15,tocIndex:11},{value:" Used to display Collection data within the block.",paraId:15,tocIndex:11},{value:"Filter Blocks:",paraId:15,tocIndex:11},{value:" These can be added to pages and are specifically designed for filtering data within Data Blocks.",paraId:15,tocIndex:11},{value:"Relationship Blocks:",paraId:15,tocIndex:11},{value:" These are added to modals and are used for CRUD operations on data related to the current record.",paraId:15,tocIndex:11},{value:"Other Blocks:",paraId:15,tocIndex:11},{value:" These include standalone blocks like Markdown, Audit Log blocks, Workflow To-Do blocks, etc.",paraId:15,tocIndex:11}],v_={},m_={title:"Fields",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/fields/index.md",lastUpdated:173254844e4,description:"In the UI, fields are field components that carry unit data, with different types of data presented by different field components. Fields can only be attached to blocks and cannot be used independently."},h_=[{id:"fields",depth:3,title:"Fields"},{id:"fields-in-blocks",depth:4,title:"Fields in Blocks"},{id:"field-designer-toolbar",depth:4,title:"Field Designer (Toolbar)"},{id:"field-layout",depth:4,title:"Field Layout"},{id:"general-parameter-configuration",depth:4,title:"General Parameter Configuration"},{id:"validation-rules",depth:5,title:"Validation Rules"},{id:"default-value",depth:5,title:"Default Value"},{id:"pattern",depth:5,title:"Pattern"},{id:"field-types",depth:4,title:"Field Types"}],f_=[{value:"In the UI, fields are field components that carry unit data, with different types of data presented by different field components. Fields can only be attached to blocks and cannot be used independently.",paraId:0,tocIndex:0},{value:'Fields are generally not used alone but exist as sub-elements of data-type blocks. Data-type blocks typically have a "configure fields" option, and the field list is provided by the current data table.',paraId:1,tocIndex:1},{value:"Like blocks, field components also have three icons in the upper right corner:",paraId:2,tocIndex:2},{value:"Drag to layout",paraId:3,tocIndex:2},{value:"Quick add field",paraId:3,tocIndex:2},{value:"Configure field parameters",paraId:3,tocIndex:2},{value:"The layout of fields within a block can be customized by dragging to move them.",paraId:4,tocIndex:3},{value:"Edit field title",paraId:5,tocIndex:4},{value:"Display title",paraId:5,tocIndex:4},{value:"Edit description",paraId:5,tocIndex:4},{value:"Required",paraId:5,tocIndex:4},{value:"Validation rules",paraId:5,tocIndex:4},{value:"Set Default value",paraId:5,tocIndex:4},{value:"Pattern",paraId:5,tocIndex:4},{value:"Important Parameter Configuration:",paraId:6,tocIndex:4},{value:"(to be added)",paraId:7,tocIndex:5},{value:"(to be added)",paraId:8,tocIndex:6},{value:"Unlike blocks, field components have three display modes:",paraId:9,tocIndex:7},{value:"Editable",paraId:10,tocIndex:7},{value:"Readonly (non-editable)",paraId:10,tocIndex:7},{value:"Easy-reading (read mode)",paraId:10,tocIndex:7},{value:"The fields in a block are provided by the data table. For more field type configurations, refer to ",paraId:11,tocIndex:8},{value:"Data Table Field Types",paraId:11,tocIndex:8},{value:".",paraId:11,tocIndex:8}],x_={},g_={title:"Word Cloud Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/wordcloud.md",lastUpdated:173254844e4},b_=[{id:"word-cloud-chart",depth:1,title:"Word Cloud Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-measure-1-dimension",depth:3,title:"1 Measure, 1 Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],y_=[{value:"Option",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Size",paraId:0,tocIndex:3},{value:"Sets the size of the chart, with either a fixed aspect ratio or fixed height",paraId:0,tocIndex:3},{value:"Light mode theme",paraId:0,tocIndex:3},{value:"Select this option to preview when the system is in light mode",paraId:0,tocIndex:3},{value:"Dark mode theme",paraId:0,tocIndex:3},{value:"Select this option to preview when the system is in dark mode",paraId:0,tocIndex:3},{value:"Shape",paraId:0,tocIndex:3},{value:"Controls the shape of the chart",paraId:0,tocIndex:3}],w_={},k_={title:"API",toc:"menu",filename:"docs/en-US/handbook/notification-manager/development/api.md",lastUpdated:173254844e4,description:"This abstract class represents a base for different types of notification channels, defining essential interfaces for channel implementation. To add a new notification channel, you must extend this class and implement its methods."},S_=[{id:"api",depth:1,title:"API"},{id:"server-side",depth:2,title:"Server Side"},{id:"basenotificationchannel",depth:3,title:"BaseNotificationChannel"},{id:"pluginnotificationmanagerserver",depth:3,title:"PluginNotificationManagerServer"},{id:"registerchanneltype",depth:4,title:"registerChannelType()"},{id:"signature",depth:5,title:"Signature"},{id:"send",depth:4,title:"send()"},{id:"signature-1",depth:5,title:"Signature"},{id:"detailed-information",depth:5,title:"Detailed Information"},{id:"client-side",depth:2,title:"Client Side"},{id:"pluginnotificationmanagerclient",depth:3,title:"PluginNotificationManagerClient"},{id:"channeltypes",depth:4,title:"channelTypes"},{id:"signature-2",depth:5,title:"Signature"},{id:"registerchanneltype-1",depth:4,title:"registerChannelType()"},{id:"signature-3",depth:5,title:"Signature"},{id:"type",depth:5,title:"Type"}],U_=[{value:"BaseNotificationChannel",paraId:0},{value:"This abstract class represents a base for different types of notification channels, defining essential interfaces for channel implementation. To add a new notification channel, you must extend this class and implement its methods.",paraId:1,tocIndex:2},{value:`export abstract class BaseNotificationChannel { constructor(protected app: Application) {} abstract send(params: { channel: ChannelOptions; @@ -3515,7 +3567,7 @@ send('email', }; type RegisterChannelType = (params: ChannelType) => void -`,paraId:18,tocIndex:15}],P_={},T_={title:"Open Mode",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/open-mode.md",lastUpdated:1732240239e3,description:"There are two ways to open a popup: using a drawer or dialog, with the drawer being the default. Drawers are ideal for managing large amounts of information and complex operations, while dialog boxes are better suited for straightforward content or quick actions. The popup can be closed by clicking on the overlay."},C_=[{id:"open-mode",depth:1,title:"Open Mode"},{id:"introduction",depth:2,title:"Introduction"}],A_=[{value:"There are two ways to open a popup: using a drawer or dialog, with the drawer being the default. Drawers are ideal for managing large amounts of information and complex operations, while dialog boxes are better suited for straightforward content or quick actions. The popup can be closed by clicking on the overlay.",paraId:0,tocIndex:1},{value:"drawer",paraId:1,tocIndex:1},{value:"dialog",paraId:2,tocIndex:1}],q_={},E_={title:"Block Title",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/block-title.md",lastUpdated:1732240239e3,description:"Custom block title."},D_=[{id:"block-title",depth:1,title:"Block Title"},{id:"introduction",depth:2,title:"Introduction"}],O_=[{value:"Custom block title.",paraId:0,tocIndex:1}],R_={},M_={title:"Title Field",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/title-field.md",lastUpdated:1732240239e3,description:"The title field is a key element in relational field components, serving as the visible identifier of relational data within the user interface."},L_=[{id:"title-field",depth:1,title:"Title Field"},{id:"introduction",depth:2,title:"Introduction"},{id:"configuration-locations-for-the-title-field",depth:2,title:"Configuration Locations for the Title Field"},{id:"global-configuration-in-the-data-table",depth:3,title:"Global Configuration in the Data Table"},{id:"configuration-within-relational-field-components",depth:3,title:"Configuration within Relational Field Components"}],N_=[{value:"The title field is a key element in relational field components, serving as the visible identifier of relational data within the user interface.",paraId:0,tocIndex:1},{value:"This setting applies across the entire application.",paraId:1,tocIndex:3},{value:"This setting is limited to the specific block, taking precedence over global settings.",paraId:2,tocIndex:4}],z_={},F_={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow-custom-action-trigger/index.md",lastUpdated:1732240239e3,description:`NocoBase provides built-in standard data operations like create, read, update, and delete. However, when these operations aren't sufficient to meet complex business requirements, custom action events within workflows can be utilized. These events can be linked to the "Trigger Workflow" button on page blocks, enabling you to perform custom data operations tailored to specific needs.`},B_=[{id:"overview",depth:1,title:"Overview"},{id:"user-manual",depth:2,title:"User Manual"}],j_=[{value:`NocoBase provides built-in standard data operations like create, read, update, and delete. However, when these operations aren't sufficient to meet complex business requirements, custom action events within workflows can be utilized. These events can be linked to the "Trigger Workflow" button on page blocks, enabling you to perform custom data operations tailored to specific needs.`,paraId:0},{value:'The "Custom Action Event" evolved from the "Submit to Workflow" mode found in the "Post-Action Event" feature. As of version ',paraId:1},{value:"v1.0.0-alpha.7",paraId:1},{value:', it has been separated into its own event and renamed as "Custom Action Event."',paraId:1},{value:"Custom action events are used in several key areas:",paraId:2,tocIndex:1},{value:"Trigger Configuration",paraId:3,tocIndex:1},{value:"Action Configuration",paraId:4,tocIndex:1},{value:"For practical examples of how to use these events, refer to the ",paraId:5,tocIndex:1},{value:"Examples",paraId:6,tocIndex:1},{value:" section.",paraId:5,tocIndex:1},{value:"If integration with an external system is needed, consult the ",paraId:7,tocIndex:1},{value:"Http Api",paraId:8,tocIndex:1},{value:" guide.",paraId:7,tocIndex:1}],H_={},W_={title:"Example",toc:"menu",filename:"docs/en-US/handbook/workflow-dynamic-calculation/example.md",lastUpdated:1732240239e3,description:"Following the configuration steps outlined above, let's illustrate how to calculate the final price for different products by applying various Price Rules during the order placement process."},$_=[{id:"example",depth:1,title:"Example"}],G_=[{value:"Following the configuration steps outlined above, let's illustrate how to calculate the final price for different products by applying various Price Rules during the order placement process.",paraId:0,tocIndex:0},{value:"Set Up the Product Collection:",paraId:1,tocIndex:0},{value:`| Field Name | Type | +`,paraId:18,tocIndex:15}],P_={},T_={title:"Open Mode",toc:"menu",filename:"docs/en-US/handbook/ui/actions/action-settings/open-mode.md",lastUpdated:173254844e4,description:"There are two ways to open a popup: using a drawer or dialog, with the drawer being the default. Drawers are ideal for managing large amounts of information and complex operations, while dialog boxes are better suited for straightforward content or quick actions. The popup can be closed by clicking on the overlay."},C_=[{id:"open-mode",depth:1,title:"Open Mode"},{id:"introduction",depth:2,title:"Introduction"}],A_=[{value:"There are two ways to open a popup: using a drawer or dialog, with the drawer being the default. Drawers are ideal for managing large amounts of information and complex operations, while dialog boxes are better suited for straightforward content or quick actions. The popup can be closed by clicking on the overlay.",paraId:0,tocIndex:1},{value:"drawer",paraId:1,tocIndex:1},{value:"dialog",paraId:2,tocIndex:1}],q_={},E_={title:"Block Title",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/block-title.md",lastUpdated:173254844e4,description:"Custom block title."},D_=[{id:"block-title",depth:1,title:"Block Title"},{id:"introduction",depth:2,title:"Introduction"}],O_=[{value:"Custom block title.",paraId:0,tocIndex:1}],R_={},M_={title:"Title Field",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/title-field.md",lastUpdated:173254844e4,description:"The title field is a key element in relational field components, serving as the visible identifier of relational data within the user interface."},L_=[{id:"title-field",depth:1,title:"Title Field"},{id:"introduction",depth:2,title:"Introduction"},{id:"configuration-locations-for-the-title-field",depth:2,title:"Configuration Locations for the Title Field"},{id:"global-configuration-in-the-data-table",depth:3,title:"Global Configuration in the Data Table"},{id:"configuration-within-relational-field-components",depth:3,title:"Configuration within Relational Field Components"}],N_=[{value:"The title field is a key element in relational field components, serving as the visible identifier of relational data within the user interface.",paraId:0,tocIndex:1},{value:"This setting applies across the entire application.",paraId:1,tocIndex:3},{value:"This setting is limited to the specific block, taking precedence over global settings.",paraId:2,tocIndex:4}],z_={},F_={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow-custom-action-trigger/index.md",lastUpdated:173254844e4,description:`NocoBase provides built-in standard data operations like create, read, update, and delete. However, when these operations aren't sufficient to meet complex business requirements, custom action events within workflows can be utilized. These events can be linked to the "Trigger Workflow" button on page blocks, enabling you to perform custom data operations tailored to specific needs.`},B_=[{id:"overview",depth:1,title:"Overview"},{id:"user-manual",depth:2,title:"User Manual"}],j_=[{value:`NocoBase provides built-in standard data operations like create, read, update, and delete. However, when these operations aren't sufficient to meet complex business requirements, custom action events within workflows can be utilized. These events can be linked to the "Trigger Workflow" button on page blocks, enabling you to perform custom data operations tailored to specific needs.`,paraId:0},{value:'The "Custom Action Event" evolved from the "Submit to Workflow" mode found in the "Post-Action Event" feature. As of version ',paraId:1},{value:"v1.0.0-alpha.7",paraId:1},{value:', it has been separated into its own event and renamed as "Custom Action Event."',paraId:1},{value:"Custom action events are used in several key areas:",paraId:2,tocIndex:1},{value:"Trigger Configuration",paraId:3,tocIndex:1},{value:"Action Configuration",paraId:4,tocIndex:1},{value:"For practical examples of how to use these events, refer to the ",paraId:5,tocIndex:1},{value:"Examples",paraId:6,tocIndex:1},{value:" section.",paraId:5,tocIndex:1},{value:"If integration with an external system is needed, consult the ",paraId:7,tocIndex:1},{value:"Http Api",paraId:8,tocIndex:1},{value:" guide.",paraId:7,tocIndex:1}],H_={},W_={title:"Example",toc:"menu",filename:"docs/en-US/handbook/workflow-dynamic-calculation/example.md",lastUpdated:173254844e4,description:"Following the configuration steps outlined above, let's illustrate how to calculate the final price for different products by applying various Price Rules during the order placement process."},$_=[{id:"example",depth:1,title:"Example"}],G_=[{value:"Following the configuration steps outlined above, let's illustrate how to calculate the final price for different products by applying various Price Rules during the order placement process.",paraId:0,tocIndex:0},{value:"Set Up the Product Collection:",paraId:1,tocIndex:0},{value:`| Field Name | Type | | -------------- | ---------------------- | | Product Name | Text | | Price | Number | @@ -3533,8 +3585,8 @@ type RegisterChannelType = (params: ChannelType) => void | 2 | iPhone 13 Pro | 6999 | 1 |`,paraId:8,tocIndex:0},{value:"Set Up a Workflow Triggered by Order Creation:",paraId:9,tocIndex:0},{value:"Create a Dynamic Expression Calculation Node and Configure it Using Trigger Data/Product/Price Rule:",paraId:10,tocIndex:0},{value:"Set the variable data source to the product in the trigger data:",paraId:11,tocIndex:0},{value:"Add a Data Update Node to Update the Order Total Price with the Result from the Calculation Node:",paraId:12,tocIndex:0},{value:"Trigger the Workflow Upon Order Creation and Verify the Prices in the Order List:",paraId:13,tocIndex:0},{value:`| Order Product | Price | Price Rule | Total Price | | ---------------- | -------------- |----------------|----------------------| | iPhone 14 Pro | 7999 | Rule1: 90% off | 7999 * 0.9 = 7199.1 | -| iPhone 13 Pro | 6999 | Rule2: 80% off | 6999 * 0.8 = 5599.2 |`,paraId:14,tocIndex:0},{value:"The final price displayed in the image below should match the calculated price in the Collection above:",paraId:15,tocIndex:0},{value:"Since the workflow operates asynchronously, the total price might not be immediately reflected in the Collection after the order is created. You may need to wait a moment before refreshing the page to see the updated total price.",paraId:16,tocIndex:0}],V_={},K_={title:"Example",toc:"menu",filename:"docs/en-US/handbook/workflow-request-interceptor/example.md",lastUpdated:1732240239e3,description:`Building on the basic instructions provided earlier, let's explore an example scenario of "Order Submission." In this scenario, we need to verify the stock levels of all products selected by the user at the time of order submission. If any product has insufficient stock, the order submission will be blocked, and a relevant notification will be displayed. The system will iterate through each product, and if all products have sufficient stock, the order data will be generated successfully.`},Z_=[{id:"example",depth:1,title:"Example"}],Y_=[{value:`Building on the basic instructions provided earlier, let's explore an example scenario of "Order Submission." In this scenario, we need to verify the stock levels of all products selected by the user at the time of order submission. If any product has insufficient stock, the order submission will be blocked, and a relevant notification will be displayed. The system will iterate through each product, and if all products have sufficient stock, the order data will be generated successfully.`,paraId:0,tocIndex:0},{value:`The other steps follow the same procedure outlined in the instructions. However, since an order may include multiple products, in addition to establishing a many-to-many relationship between "Order" <-- m:1 -- "Details" -- 1:m --> "Product" during data modeling, it's necessary to introduce a "Loop" node in the "Pre-Action Event" workflow. This loop will be used to check the stock level of each product:`,paraId:1,tocIndex:0},{value:'The loop object should be set to the "Details" array within the submitted order data:',paraId:2,tocIndex:0},{value:"Within the loop, a condition check node is employed to determine whether the stock of the current product is sufficient:",paraId:3,tocIndex:0},{value:"The other configurations remain consistent with those in the basic usage instructions. Upon order submission, if any product's stock is insufficient, the order will be blocked, and a corresponding notification will be returned. During testing, you can attempt to submit multiple products in one order, with one product having insufficient stock and another having sufficient stock. The response message you receive will look like this:",paraId:4,tocIndex:0},{value:`As illustrated, the response message does not flag the insufficient stock of the first product, "iPhone 15 Pro," but it does indicate the insufficient stock of the second product, "iPhone 14 Pro." This happens because the first product's stock was adequate, allowing the submission to proceed, while the second product's insufficient stock led to the order being blocked.`,paraId:5,tocIndex:0}],Q_={},J_={title:"Trigger Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-request-interceptor/trigger.md",lastUpdated:1732240239e3,description:'When setting up a workflow, select "Pre-action event" as the event type:'},X_=[{id:"trigger-configuration",depth:1,title:"Trigger Configuration"},{id:"creating-a-trigger",depth:2,title:"Creating a Trigger"},{id:"selecting-the-data-table",depth:2,title:"Selecting the Data Table"},{id:"intercept-mode",depth:2,title:"Intercept Mode"}],ev=[{value:'When setting up a workflow, select "Pre-action event" as the event type:',paraId:0,tocIndex:1},{value:"The first step in configuring a trigger for intercepting workflows is to select the data table associated with the action:",paraId:1,tocIndex:2},{value:"Next, choose the intercept mode. You can either intercept only the action buttons linked to this workflow or intercept all selected actions for the data table (regardless of the form the action originates from and without needing to bind the corresponding workflow):",paraId:2,tocIndex:2},{value:'Currently, the supported action types include "Create," "Update," and "Delete." You can select multiple action types simultaneously.',paraId:3,tocIndex:3}],av={},tv={title:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/index.md",lastUpdated:1732240239e3,description:"NocoBase \u7684\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u65E8\u5728\u5E2E\u52A9\u7528\u6237\u66F4\u597D\u5730\u5C55\u793A\u548C\u5904\u7406\u5173\u8054\u6570\u636E\u3002\u65E0\u8BBA\u5173\u7CFB\u7C7B\u578B\u5982\u4F55\uFF0C\u8FD9\u4E9B\u7EC4\u4EF6\u5177\u6709\u7075\u6D3B\u6027\u548C\u901A\u7528\u6027\uFF0C\u7528\u6237\u80FD\u591F\u6839\u636E\u5177\u4F53\u9700\u6C42\u9009\u62E9\u5E76\u914D\u7F6E\u8FD9\u4E9B\u7EC4\u4EF6\u3002"},nv=[{id:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6",depth:1,title:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6"},{id:"\u4F7F\u7528\u603B\u7ED3",depth:4,title:"\u4F7F\u7528\u603B\u7ED3"}],ov=[{value:"NocoBase \u7684\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u65E8\u5728\u5E2E\u52A9\u7528\u6237\u66F4\u597D\u5730\u5C55\u793A\u548C\u5904\u7406\u5173\u8054\u6570\u636E\u3002\u65E0\u8BBA\u5173\u7CFB\u7C7B\u578B\u5982\u4F55\uFF0C\u8FD9\u4E9B\u7EC4\u4EF6\u5177\u6709\u7075\u6D3B\u6027\u548C\u901A\u7528\u6027\uFF0C\u7528\u6237\u80FD\u591F\u6839\u636E\u5177\u4F53\u9700\u6C42\u9009\u62E9\u5E76\u914D\u7F6E\u8FD9\u4E9B\u7EC4\u4EF6\u3002",paraId:0,tocIndex:0},{value:"\u4E0B\u62C9\u9009\u62E9\u5668\uFF1A\u7528\u4E8E\u4ECE\u4E00\u4E2A\u4E0B\u62C9\u5217\u8868\u4E2D",paraId:1,tocIndex:1},{value:"\u9009\u62E9\u6216\u65B0\u5EFA",paraId:1,tocIndex:1},{value:"\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u9879\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\uFF0C\u652F\u6301\u8BBE\u7F6E\u4E0B\u62C9\u5217\u8868\u7684\u6807\u9898\u5B57\u6BB5\u3002",paraId:1,tocIndex:1},{value:"\u6570\u636E\u9009\u62E9\u5668\uFF1A\u7528\u4E8E\u4ECE\u76F8\u5173\u6570\u636E\u4E2D",paraId:1,tocIndex:1},{value:"\u9009\u62E9\u6216\u65B0\u5EFA",paraId:1,tocIndex:1},{value:"\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u9879\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\u3002\u914D\u7F6E\u548C\u4F7F\u7528\u65F6\uFF0C\u53EF\u4EE5\u914D\u7F6E\u9009\u62E9\u5668\u5217\u8868\u7684\u5C55\u793A\u4FE1\u606F",paraId:1,tocIndex:1},{value:"\u7EA7\u8054\u9009\u62E9\u5668\uFF1A\u7528\u4E8E\u76EE\u6807\u8868\u4E3A",paraId:1,tocIndex:1},{value:"\u6811\u8868",paraId:1,tocIndex:1},{value:"\u7684\u5173\u7CFB\u6570\u636E\uFF0C\u6309\u6811\u5F62\u7ED3\u6784\u4E00\u5C42\u4E00\u5C42\u7684\u5F80\u4E0B\u9009\u53D6\u6570\u636E\u3002",paraId:1,tocIndex:1},{value:"\u5B50\u8868\u5355/\u5B50\u8BE6\u60C5\uFF1A\u7528\u4E8E\u5728\u5F53\u524D\u8868\u5355\u6216\u8BE6\u60C5\u9875\u9762\u4E2D\u5C55\u793A\u5173\u8054\u8BB0\u5F55\u7684\u6570\u636E\u3002\u5B83\u63D0\u4F9B\u4E86\u4E00\u79CD\u4FBF\u6377\u7684\u5D4C\u5957\u65B9\u5F0F\u6765\u67E5\u770B\u548C\u7F16\u8F91\u5173\u8054\u6570\u636E\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u65E0\u9700\u8DF3\u8F6C\u5230\u5176\u4ED6\u9875\u9762\uFF0C\u63D0\u4F9B\u4E86\u66F4\u6D41\u7545\u548C\u9AD8\u6548\u7684\u7528\u6237\u4F53\u9A8C\uFF0C**\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B\uFF0C**\u591A\u5C42\u7684\u5173\u7CFB\u6570\u636E\u80FD\u4EE5\u5D4C\u5957\u7684\u5F62\u5F0F\u5C55\u793A\uFF0C\u914D\u7F6E\u4F7F\u7528\u65F6\u6CE8\u610F\u5E03\u5C40\u7684\u8C03\u6574",paraId:1,tocIndex:1},{value:"\u5B50\u8868\u683C\uFF1A\u7F16\u8F91\u72B6\u6001\u4E0B\u5B50\u8868\u683C\u652F\u6301\u76F4\u63A5",paraId:1,tocIndex:1},{value:"\u65B0\u5EFA/\u7F16\u8F91",paraId:1,tocIndex:1},{value:"\u5173\u7CFB\u6570\u636E\uFF0C",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u4E00\u5BF9\u591A\u6216\u591A\u5BF9\u591A\u7684\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\uFF0C\u6682\u4E0D\u652F\u6301\u9009\u62E9\u5173\u8054\u3002",paraId:1,tocIndex:1},{value:"\u5B50\u8868\u5355\uFF08\u5F39\u7A97\uFF09\uFF1A\u901A\u8FC7\u5C06\u6B21\u8981\u6216\u590D\u6742\u6570\u636E\u5B57\u6BB5\u653E\u5728\u5F39\u7A97\u4E2D\uFF0C\u4F18\u5316\u4E86\u4E3B\u8868\u5355\u7684\u5E03\u5C40\uFF0C\u4F7F\u754C\u9762\u66F4\u7B80\u6D01\u3001\u76F4\u89C2\u3002\u89E3\u51B3\u4E86\u590D\u6742\u5173\u7CFB\u5C42\u7EA7\u4E0B\u8868\u5355\u7684\u5197\u957F\u95EE\u9898\uFF0C\u63D0\u5347\u7528\u6237\u4F53\u9A8C\u3002\u9002\u7528\u4E8E\u6709\u5927\u91CF\u6570\u636E\u5B57\u6BB5\u3001\u5173\u7CFB\u5C42\u7EA7\u590D\u6742\u7684\u573A\u666F\uFF0C\u5C06\u6B21\u8981\u4FE1\u606F\u4E0E\u4E3B\u8981\u4FE1\u606F\u5206\u5F00\u586B\u5199\uFF0C\u63D0\u9AD8\u8868\u5355\u7684\u53EF\u7528\u6027\u3002",paraId:1,tocIndex:1},{value:"\u6807\u7B7E\uFF1A\u901A\u8FC7\u4E3A\u5173\u7CFB\u5B57\u6BB5\u914D\u7F6E\u6807\u7B7E\u7EC4\u4EF6\uFF0C\u5B9E\u73B0\u4E86\u6570\u636E\u7684\u5206\u7C7B\u548C\u6807\u8BC6\uFF0C\u80FD\u591F\u66F4\u76F4\u89C2\u5730\u5C55\u793A\u6570\u636E\u5173\u7CFB\uFF0C\u9002\u7528\u4E8E\u9700\u8981\u5C06\u6570\u636E\u6309\u7167\u7C7B\u522B\u8FDB\u884C\u5206\u7EC4\u7684\u573A\u666F",paraId:1,tocIndex:1},{value:"\u6587\u4EF6\u7BA1\u7406\u5668\uFF1A\u7528\u4E8E\u76F4\u63A5",paraId:1,tocIndex:1},{value:"\u4E0A\u4F20\u6216\u9009\u62E9",paraId:1,tocIndex:1},{value:"\u4E0E\u5F53\u524D\u8BB0\u5F55\u5173\u8054\u7684\u6587\u4EF6\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u7684\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\u3002",paraId:1,tocIndex:1},{value:"\u6807\u9898\uFF1A\u7528\u4E8E\u5728\u9605\u8BFB\u6A21\u5F0F\u4E0B\u663E\u793A\u5173\u8054\u8BB0\u5F55\uFF0C\u662F\u6240\u6709\u5173\u7CFB\u5B57\u6BB5\u9605\u8BFB\u72B6\u6001\u4E0B\u7684\u9ED8\u8BA4\u5B57\u6BB5\u7EC4\u4EF6\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\u3002\u914D\u7F6E\u548C\u4F7F\u7528\u65F6\uFF0C\u9ED8\u8BA4\u6807\u9898\u5B57\u6BB5\u4E3A id,\u652F\u6301\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u6807\u9898\u5B57\u6BB5\u3002",paraId:1,tocIndex:1},{value:"\u901A\u8FC7\u4F7F\u7528\u8FD9\u4E9B\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u53EF\u4EE5\u5B9A\u5236\u548C\u4F18\u5316\u6570\u636E\u5C55\u793A\u548C\u64CD\u4F5C\u7684\u754C\u9762\uFF0C\u63D0\u4F9B\u66F4\u597D\u7684\u7528\u6237\u4F53\u9A8C\u3002\u6839\u636E\u5177\u4F53\u7684\u4E1A\u52A1\u9700\u6C42\u548C\u5173\u7CFB\u7C7B\u578B\uFF0C\u9009\u62E9\u5408\u9002\u7684\u5B57\u6BB5\u7EC4\u4EF6\u3002\u66F4\u591A\u5173\u7CFB\u5B57\u6BB5\u7684\u529F\u80FD\u53EF\u5728\u7CFB\u7EDF\u4E2D\u4F53\u9A8C\u5E76\u63D0\u51FA\u53CD\u9988\u3002",paraId:2,tocIndex:1}],rv={},dv={title:"\u64CD\u4F5C",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/index.md",lastUpdated:1732240239e3,description:"\u5728 UI \u91CC\uFF0C\u64CD\u4F5C\u662F\u7528\u6765\u89E6\u53D1\u4E00\u6BB5\u6307\u4EE4\u7684\u6309\u94AE\u3002\u53EF\u4EE5\u76F4\u63A5\u653E\u5728\u9875\u9762\u3001\u5BF9\u8BDD\u6846\u3001\u62BD\u5C49\u91CC\uFF0C\u4E5F\u53EF\u4EE5\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528\u3002\u76EE\u524D\u53EF\u52A8\u6001\u914D\u7F6E\u7684\u64CD\u4F5C\uFF0C\u4E3B\u8981\u662F\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528"},iv=[{id:"\u64CD\u4F5C",depth:1,title:"\u64CD\u4F5C"},{id:"\u533A\u5757\u91CC\u7684\u64CD\u4F5C",depth:2,title:"\u533A\u5757\u91CC\u7684\u64CD\u4F5C"},{id:"\u64CD\u4F5C\u7684\u8BBE\u8BA1\u5668\u5DE5\u5177\u680F",depth:2,title:"\u64CD\u4F5C\u7684\u8BBE\u8BA1\u5668\uFF08\u5DE5\u5177\u680F\uFF09"},{id:"\u64CD\u4F5C\u7684\u62D6\u62FD\u6392\u5E8F",depth:2,title:"\u64CD\u4F5C\u7684\u62D6\u62FD\u6392\u5E8F"},{id:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E",depth:2,title:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E"},{id:"\u64CD\u4F5C\u7684\u8054\u52A8\u89C4\u5219",depth:2,title:"\u64CD\u4F5C\u7684\u8054\u52A8\u89C4\u5219"}],lv=[{value:"\u5728 UI \u91CC\uFF0C\u64CD\u4F5C\u662F\u7528\u6765\u89E6\u53D1\u4E00\u6BB5\u6307\u4EE4\u7684\u6309\u94AE\u3002\u53EF\u4EE5\u76F4\u63A5\u653E\u5728\u9875\u9762\u3001\u5BF9\u8BDD\u6846\u3001\u62BD\u5C49\u91CC\uFF0C\u4E5F\u53EF\u4EE5\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528\u3002\u76EE\u524D\u53EF\u52A8\u6001\u914D\u7F6E\u7684\u64CD\u4F5C\uFF0C\u4E3B\u8981\u662F\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528",paraId:0,tocIndex:0},{value:"\u548C\u533A\u5757\u3001\u5B57\u6BB5\u4E0D\u592A\u4E00\u6837\uFF0C\u64CD\u4F5C\u7684\u8BBE\u8BA1\u5668\u91CC\u53EA\u6709\u4E24\u4E2A\u56FE\u6807\uFF0C\u5206\u522B\u4E3A\uFF1A",paraId:1,tocIndex:2},{value:"\u62D6\u62FD",paraId:2,tocIndex:2},{value:"\u53C2\u6570\u914D\u7F6E",paraId:2,tocIndex:2},{value:"\u6309\u4F4F\u6309\u94AE\u8BBE\u8BA1\u5668\u91CC\u7684\u300C\u62D6\u62FD\u300D\u56FE\u6807\uFF0C\u53EF\u4EE5\u5BF9\u6309\u94AE\u8FDB\u884C\u6392\u5E8F",paraId:3,tocIndex:3},{value:`\u7F3A\u5C11\u4E00\u4E2A\u52A8\u56FE -`,paraId:4,tocIndex:3},{value:"\u7F16\u8F91\u6309\u94AE",paraId:5,tocIndex:4},{value:"\u6253\u5F00\u65B9\u5F0F\uFF1A\u62BD\u5C49\u3001\u5BF9\u8BDD\u6846",paraId:5,tocIndex:4},{value:"\u5F39\u7A97\u5C3A\u5BF8\uFF1A\u5927\u3001\u4E2D\u3001\u5C0F",paraId:5,tocIndex:4},{value:"\u5220\u9664",paraId:5,tocIndex:4},{value:"\u6709\u4E0A\u4E0B\u6587\u6570\u636E\u7684\u64CD\u4F5C\uFF0C\u8FD8\u53EF\u4EE5\u914D\u7F6E\u300C\u8054\u52A8\u89C4\u5219\u300D",paraId:6,tocIndex:5},{value:"\u8054\u52A8\u89C4\u5219\u914D\u7F6E",paraId:7,tocIndex:5},{value:"\u53EF\u4EE5\u6DFB\u52A0\u591A\u6761\uFF0C\u6761\u4EF6\u4E0E\u7B5B\u9009\u7528\u6CD5\u4E00\u81F4\uFF0C\u53EF\u4EE5\u63A7\u5236\u6309\u94AE\u7684\u663E\u793A\u3001\u9690\u85CF\u3001\u542F\u7528\u3001\u7981\u7528",paraId:8,tocIndex:5}],cv={},sv={title:"\u6253\u5370",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/print.md",lastUpdated:1732240239e3},uv=[{id:"\u6253\u5370",depth:1,title:"\u6253\u5370"}],pv=[],Iv={},_v={title:"\u6269\u5C55\u6559\u7A0B",toc:"menu",filename:"docs/en-US/plugins/data-visualization/step-by-step/index.md",lastUpdated:1732240239e3,description:"\u4EE5\u6DFB\u52A0 ECharts \u56FE\u8868\u4E3A\u4F8B\uFF0C\u5B8C\u6574\u4EE3\u7801\u53EF\u53C2\u8003 @nocobase/plugin-sample-add-custom-charts \u63D2\u4EF6"},vv=[{id:"\u6269\u5C55\u6559\u7A0B",depth:1,title:"\u6269\u5C55\u6559\u7A0B"},{id:"\u65B0\u5EFA\u63D2\u4EF6",depth:2,title:"\u65B0\u5EFA\u63D2\u4EF6"},{id:"echarts-react-\u7EC4\u4EF6",depth:2,title:"ECharts React \u7EC4\u4EF6"},{id:"\u6269\u5C55-chart-\u7C7B",depth:2,title:"\u6269\u5C55 Chart \u7C7B"},{id:"\u6B65\u9AA4\u4E00",depth:3,title:"\u6B65\u9AA4\u4E00"},{id:"\u6B65\u9AA4\u4E8C",depth:3,title:"\u6B65\u9AA4\u4E8C"},{id:"\u6B65\u9AA4\u4E09",depth:3,title:"\u6B65\u9AA4\u4E09"},{id:"\u6B65\u9AA4\u56DB",depth:3,title:"\u6B65\u9AA4\u56DB"},{id:"\u5B9A\u4E49\u56FE\u8868",depth:2,title:"\u5B9A\u4E49\u56FE\u8868"},{id:"\u6DFB\u52A0\u56FE\u8868",depth:2,title:"\u6DFB\u52A0\u56FE\u8868"}],mv=[{value:"\u4EE5\u6DFB\u52A0 ECharts \u56FE\u8868\u4E3A\u4F8B\uFF0C\u5B8C\u6574\u4EE3\u7801\u53EF\u53C2\u8003 ",paraId:0,tocIndex:0},{value:"@nocobase/plugin-sample-add-custom-charts",paraId:0,tocIndex:0},{value:" \u63D2\u4EF6",paraId:0,tocIndex:0},{value:"\u6309\u7167",paraId:1,tocIndex:1},{value:"\u63D2\u4EF6\u5F00\u53D1\u6307\u5357",paraId:1,tocIndex:1},{value:"\u7684\u6B65\u9AA4\uFF0C\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u63D2\u4EF6\u3002\u6DFB\u52A0\u597D\u4F9D\u8D56 ",paraId:1,tocIndex:1},{value:"echarts",paraId:1,tocIndex:1},{value:", ",paraId:1,tocIndex:1},{value:"echarts-for-react",paraId:1,tocIndex:1},{value:", ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-data-visualization",paraId:1,tocIndex:1},{value:"\uFF0C\u5916\u90E8\u4F9D\u8D56\u653E\u5230 ",paraId:1,tocIndex:1},{value:"package.json",paraId:1,tocIndex:1},{value:" \u7684 ",paraId:1,tocIndex:1},{value:"devDependencies",paraId:1,tocIndex:1},{value:" \u4E2D\u3002",paraId:1,tocIndex:1},{value:`yarn pm create @nocobase/plugin-sample-add-custom-charts +| iPhone 13 Pro | 6999 | Rule2: 80% off | 6999 * 0.8 = 5599.2 |`,paraId:14,tocIndex:0},{value:"The final price displayed in the image below should match the calculated price in the Collection above:",paraId:15,tocIndex:0},{value:"Since the workflow operates asynchronously, the total price might not be immediately reflected in the Collection after the order is created. You may need to wait a moment before refreshing the page to see the updated total price.",paraId:16,tocIndex:0}],V_={},K_={title:"Example",toc:"menu",filename:"docs/en-US/handbook/workflow-request-interceptor/example.md",lastUpdated:173254844e4,description:`Building on the basic instructions provided earlier, let's explore an example scenario of "Order Submission." In this scenario, we need to verify the stock levels of all products selected by the user at the time of order submission. If any product has insufficient stock, the order submission will be blocked, and a relevant notification will be displayed. The system will iterate through each product, and if all products have sufficient stock, the order data will be generated successfully.`},Z_=[{id:"example",depth:1,title:"Example"}],Y_=[{value:`Building on the basic instructions provided earlier, let's explore an example scenario of "Order Submission." In this scenario, we need to verify the stock levels of all products selected by the user at the time of order submission. If any product has insufficient stock, the order submission will be blocked, and a relevant notification will be displayed. The system will iterate through each product, and if all products have sufficient stock, the order data will be generated successfully.`,paraId:0,tocIndex:0},{value:`The other steps follow the same procedure outlined in the instructions. However, since an order may include multiple products, in addition to establishing a many-to-many relationship between "Order" <-- m:1 -- "Details" -- 1:m --> "Product" during data modeling, it's necessary to introduce a "Loop" node in the "Pre-Action Event" workflow. This loop will be used to check the stock level of each product:`,paraId:1,tocIndex:0},{value:'The loop object should be set to the "Details" array within the submitted order data:',paraId:2,tocIndex:0},{value:"Within the loop, a condition check node is employed to determine whether the stock of the current product is sufficient:",paraId:3,tocIndex:0},{value:"The other configurations remain consistent with those in the basic usage instructions. Upon order submission, if any product's stock is insufficient, the order will be blocked, and a corresponding notification will be returned. During testing, you can attempt to submit multiple products in one order, with one product having insufficient stock and another having sufficient stock. The response message you receive will look like this:",paraId:4,tocIndex:0},{value:`As illustrated, the response message does not flag the insufficient stock of the first product, "iPhone 15 Pro," but it does indicate the insufficient stock of the second product, "iPhone 14 Pro." This happens because the first product's stock was adequate, allowing the submission to proceed, while the second product's insufficient stock led to the order being blocked.`,paraId:5,tocIndex:0}],Q_={},J_={title:"Trigger Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-request-interceptor/trigger.md",lastUpdated:173254844e4,description:'When setting up a workflow, select "Pre-action event" as the event type:'},X_=[{id:"trigger-configuration",depth:1,title:"Trigger Configuration"},{id:"creating-a-trigger",depth:2,title:"Creating a Trigger"},{id:"selecting-the-data-table",depth:2,title:"Selecting the Data Table"},{id:"intercept-mode",depth:2,title:"Intercept Mode"}],ev=[{value:'When setting up a workflow, select "Pre-action event" as the event type:',paraId:0,tocIndex:1},{value:"The first step in configuring a trigger for intercepting workflows is to select the data table associated with the action:",paraId:1,tocIndex:2},{value:"Next, choose the intercept mode. You can either intercept only the action buttons linked to this workflow or intercept all selected actions for the data table (regardless of the form the action originates from and without needing to bind the corresponding workflow):",paraId:2,tocIndex:2},{value:'Currently, the supported action types include "Create," "Update," and "Delete." You can select multiple action types simultaneously.',paraId:3,tocIndex:3}],av={},tv={title:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6",toc:"menu",filename:"docs/en-US/manual/ui/fields/association-components/index.md",lastUpdated:173254844e4,description:"NocoBase \u7684\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u65E8\u5728\u5E2E\u52A9\u7528\u6237\u66F4\u597D\u5730\u5C55\u793A\u548C\u5904\u7406\u5173\u8054\u6570\u636E\u3002\u65E0\u8BBA\u5173\u7CFB\u7C7B\u578B\u5982\u4F55\uFF0C\u8FD9\u4E9B\u7EC4\u4EF6\u5177\u6709\u7075\u6D3B\u6027\u548C\u901A\u7528\u6027\uFF0C\u7528\u6237\u80FD\u591F\u6839\u636E\u5177\u4F53\u9700\u6C42\u9009\u62E9\u5E76\u914D\u7F6E\u8FD9\u4E9B\u7EC4\u4EF6\u3002"},nv=[{id:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6",depth:1,title:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6"},{id:"\u4F7F\u7528\u603B\u7ED3",depth:4,title:"\u4F7F\u7528\u603B\u7ED3"}],ov=[{value:"NocoBase \u7684\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u65E8\u5728\u5E2E\u52A9\u7528\u6237\u66F4\u597D\u5730\u5C55\u793A\u548C\u5904\u7406\u5173\u8054\u6570\u636E\u3002\u65E0\u8BBA\u5173\u7CFB\u7C7B\u578B\u5982\u4F55\uFF0C\u8FD9\u4E9B\u7EC4\u4EF6\u5177\u6709\u7075\u6D3B\u6027\u548C\u901A\u7528\u6027\uFF0C\u7528\u6237\u80FD\u591F\u6839\u636E\u5177\u4F53\u9700\u6C42\u9009\u62E9\u5E76\u914D\u7F6E\u8FD9\u4E9B\u7EC4\u4EF6\u3002",paraId:0,tocIndex:0},{value:"\u4E0B\u62C9\u9009\u62E9\u5668\uFF1A\u7528\u4E8E\u4ECE\u4E00\u4E2A\u4E0B\u62C9\u5217\u8868\u4E2D",paraId:1,tocIndex:1},{value:"\u9009\u62E9\u6216\u65B0\u5EFA",paraId:1,tocIndex:1},{value:"\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u9879\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\uFF0C\u652F\u6301\u8BBE\u7F6E\u4E0B\u62C9\u5217\u8868\u7684\u6807\u9898\u5B57\u6BB5\u3002",paraId:1,tocIndex:1},{value:"\u6570\u636E\u9009\u62E9\u5668\uFF1A\u7528\u4E8E\u4ECE\u76F8\u5173\u6570\u636E\u4E2D",paraId:1,tocIndex:1},{value:"\u9009\u62E9\u6216\u65B0\u5EFA",paraId:1,tocIndex:1},{value:"\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u9879\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\u3002\u914D\u7F6E\u548C\u4F7F\u7528\u65F6\uFF0C\u53EF\u4EE5\u914D\u7F6E\u9009\u62E9\u5668\u5217\u8868\u7684\u5C55\u793A\u4FE1\u606F",paraId:1,tocIndex:1},{value:"\u7EA7\u8054\u9009\u62E9\u5668\uFF1A\u7528\u4E8E\u76EE\u6807\u8868\u4E3A",paraId:1,tocIndex:1},{value:"\u6811\u8868",paraId:1,tocIndex:1},{value:"\u7684\u5173\u7CFB\u6570\u636E\uFF0C\u6309\u6811\u5F62\u7ED3\u6784\u4E00\u5C42\u4E00\u5C42\u7684\u5F80\u4E0B\u9009\u53D6\u6570\u636E\u3002",paraId:1,tocIndex:1},{value:"\u5B50\u8868\u5355/\u5B50\u8BE6\u60C5\uFF1A\u7528\u4E8E\u5728\u5F53\u524D\u8868\u5355\u6216\u8BE6\u60C5\u9875\u9762\u4E2D\u5C55\u793A\u5173\u8054\u8BB0\u5F55\u7684\u6570\u636E\u3002\u5B83\u63D0\u4F9B\u4E86\u4E00\u79CD\u4FBF\u6377\u7684\u5D4C\u5957\u65B9\u5F0F\u6765\u67E5\u770B\u548C\u7F16\u8F91\u5173\u8054\u6570\u636E\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u65E0\u9700\u8DF3\u8F6C\u5230\u5176\u4ED6\u9875\u9762\uFF0C\u63D0\u4F9B\u4E86\u66F4\u6D41\u7545\u548C\u9AD8\u6548\u7684\u7528\u6237\u4F53\u9A8C\uFF0C**\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B\uFF0C**\u591A\u5C42\u7684\u5173\u7CFB\u6570\u636E\u80FD\u4EE5\u5D4C\u5957\u7684\u5F62\u5F0F\u5C55\u793A\uFF0C\u914D\u7F6E\u4F7F\u7528\u65F6\u6CE8\u610F\u5E03\u5C40\u7684\u8C03\u6574",paraId:1,tocIndex:1},{value:"\u5B50\u8868\u683C\uFF1A\u7F16\u8F91\u72B6\u6001\u4E0B\u5B50\u8868\u683C\u652F\u6301\u76F4\u63A5",paraId:1,tocIndex:1},{value:"\u65B0\u5EFA/\u7F16\u8F91",paraId:1,tocIndex:1},{value:"\u5173\u7CFB\u6570\u636E\uFF0C",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u4E00\u5BF9\u591A\u6216\u591A\u5BF9\u591A\u7684\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\uFF0C\u6682\u4E0D\u652F\u6301\u9009\u62E9\u5173\u8054\u3002",paraId:1,tocIndex:1},{value:"\u5B50\u8868\u5355\uFF08\u5F39\u7A97\uFF09\uFF1A\u901A\u8FC7\u5C06\u6B21\u8981\u6216\u590D\u6742\u6570\u636E\u5B57\u6BB5\u653E\u5728\u5F39\u7A97\u4E2D\uFF0C\u4F18\u5316\u4E86\u4E3B\u8868\u5355\u7684\u5E03\u5C40\uFF0C\u4F7F\u754C\u9762\u66F4\u7B80\u6D01\u3001\u76F4\u89C2\u3002\u89E3\u51B3\u4E86\u590D\u6742\u5173\u7CFB\u5C42\u7EA7\u4E0B\u8868\u5355\u7684\u5197\u957F\u95EE\u9898\uFF0C\u63D0\u5347\u7528\u6237\u4F53\u9A8C\u3002\u9002\u7528\u4E8E\u6709\u5927\u91CF\u6570\u636E\u5B57\u6BB5\u3001\u5173\u7CFB\u5C42\u7EA7\u590D\u6742\u7684\u573A\u666F\uFF0C\u5C06\u6B21\u8981\u4FE1\u606F\u4E0E\u4E3B\u8981\u4FE1\u606F\u5206\u5F00\u586B\u5199\uFF0C\u63D0\u9AD8\u8868\u5355\u7684\u53EF\u7528\u6027\u3002",paraId:1,tocIndex:1},{value:"\u6807\u7B7E\uFF1A\u901A\u8FC7\u4E3A\u5173\u7CFB\u5B57\u6BB5\u914D\u7F6E\u6807\u7B7E\u7EC4\u4EF6\uFF0C\u5B9E\u73B0\u4E86\u6570\u636E\u7684\u5206\u7C7B\u548C\u6807\u8BC6\uFF0C\u80FD\u591F\u66F4\u76F4\u89C2\u5730\u5C55\u793A\u6570\u636E\u5173\u7CFB\uFF0C\u9002\u7528\u4E8E\u9700\u8981\u5C06\u6570\u636E\u6309\u7167\u7C7B\u522B\u8FDB\u884C\u5206\u7EC4\u7684\u573A\u666F",paraId:1,tocIndex:1},{value:"\u6587\u4EF6\u7BA1\u7406\u5668\uFF1A\u7528\u4E8E\u76F4\u63A5",paraId:1,tocIndex:1},{value:"\u4E0A\u4F20\u6216\u9009\u62E9",paraId:1,tocIndex:1},{value:"\u4E0E\u5F53\u524D\u8BB0\u5F55\u5173\u8054\u7684\u6587\u4EF6\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u76EE\u6807\u8868\u4E3A\u6587\u4EF6\u8868\u7684\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\u3002",paraId:1,tocIndex:1},{value:"\u6807\u9898\uFF1A\u7528\u4E8E\u5728\u9605\u8BFB\u6A21\u5F0F\u4E0B\u663E\u793A\u5173\u8054\u8BB0\u5F55\uFF0C\u662F\u6240\u6709\u5173\u7CFB\u5B57\u6BB5\u9605\u8BFB\u72B6\u6001\u4E0B\u7684\u9ED8\u8BA4\u5B57\u6BB5\u7EC4\u4EF6\u3002",paraId:1,tocIndex:1},{value:"\u9002\u7528\u4E8E\u6240\u6709\u5173\u7CFB\u7C7B\u578B",paraId:1,tocIndex:1},{value:"\u3002\u914D\u7F6E\u548C\u4F7F\u7528\u65F6\uFF0C\u9ED8\u8BA4\u6807\u9898\u5B57\u6BB5\u4E3A id,\u652F\u6301\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u6807\u9898\u5B57\u6BB5\u3002",paraId:1,tocIndex:1},{value:"\u901A\u8FC7\u4F7F\u7528\u8FD9\u4E9B\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u53EF\u4EE5\u5B9A\u5236\u548C\u4F18\u5316\u6570\u636E\u5C55\u793A\u548C\u64CD\u4F5C\u7684\u754C\u9762\uFF0C\u63D0\u4F9B\u66F4\u597D\u7684\u7528\u6237\u4F53\u9A8C\u3002\u6839\u636E\u5177\u4F53\u7684\u4E1A\u52A1\u9700\u6C42\u548C\u5173\u7CFB\u7C7B\u578B\uFF0C\u9009\u62E9\u5408\u9002\u7684\u5B57\u6BB5\u7EC4\u4EF6\u3002\u66F4\u591A\u5173\u7CFB\u5B57\u6BB5\u7684\u529F\u80FD\u53EF\u5728\u7CFB\u7EDF\u4E2D\u4F53\u9A8C\u5E76\u63D0\u51FA\u53CD\u9988\u3002",paraId:2,tocIndex:1}],rv={},dv={title:"\u64CD\u4F5C",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/index.md",lastUpdated:173254844e4,description:"\u5728 UI \u91CC\uFF0C\u64CD\u4F5C\u662F\u7528\u6765\u89E6\u53D1\u4E00\u6BB5\u6307\u4EE4\u7684\u6309\u94AE\u3002\u53EF\u4EE5\u76F4\u63A5\u653E\u5728\u9875\u9762\u3001\u5BF9\u8BDD\u6846\u3001\u62BD\u5C49\u91CC\uFF0C\u4E5F\u53EF\u4EE5\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528\u3002\u76EE\u524D\u53EF\u52A8\u6001\u914D\u7F6E\u7684\u64CD\u4F5C\uFF0C\u4E3B\u8981\u662F\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528"},iv=[{id:"\u64CD\u4F5C",depth:1,title:"\u64CD\u4F5C"},{id:"\u533A\u5757\u91CC\u7684\u64CD\u4F5C",depth:2,title:"\u533A\u5757\u91CC\u7684\u64CD\u4F5C"},{id:"\u64CD\u4F5C\u7684\u8BBE\u8BA1\u5668\u5DE5\u5177\u680F",depth:2,title:"\u64CD\u4F5C\u7684\u8BBE\u8BA1\u5668\uFF08\u5DE5\u5177\u680F\uFF09"},{id:"\u64CD\u4F5C\u7684\u62D6\u62FD\u6392\u5E8F",depth:2,title:"\u64CD\u4F5C\u7684\u62D6\u62FD\u6392\u5E8F"},{id:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E",depth:2,title:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E"},{id:"\u64CD\u4F5C\u7684\u8054\u52A8\u89C4\u5219",depth:2,title:"\u64CD\u4F5C\u7684\u8054\u52A8\u89C4\u5219"}],lv=[{value:"\u5728 UI \u91CC\uFF0C\u64CD\u4F5C\u662F\u7528\u6765\u89E6\u53D1\u4E00\u6BB5\u6307\u4EE4\u7684\u6309\u94AE\u3002\u53EF\u4EE5\u76F4\u63A5\u653E\u5728\u9875\u9762\u3001\u5BF9\u8BDD\u6846\u3001\u62BD\u5C49\u91CC\uFF0C\u4E5F\u53EF\u4EE5\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528\u3002\u76EE\u524D\u53EF\u52A8\u6001\u914D\u7F6E\u7684\u64CD\u4F5C\uFF0C\u4E3B\u8981\u662F\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528",paraId:0,tocIndex:0},{value:"\u548C\u533A\u5757\u3001\u5B57\u6BB5\u4E0D\u592A\u4E00\u6837\uFF0C\u64CD\u4F5C\u7684\u8BBE\u8BA1\u5668\u91CC\u53EA\u6709\u4E24\u4E2A\u56FE\u6807\uFF0C\u5206\u522B\u4E3A\uFF1A",paraId:1,tocIndex:2},{value:"\u62D6\u62FD",paraId:2,tocIndex:2},{value:"\u53C2\u6570\u914D\u7F6E",paraId:2,tocIndex:2},{value:"\u6309\u4F4F\u6309\u94AE\u8BBE\u8BA1\u5668\u91CC\u7684\u300C\u62D6\u62FD\u300D\u56FE\u6807\uFF0C\u53EF\u4EE5\u5BF9\u6309\u94AE\u8FDB\u884C\u6392\u5E8F",paraId:3,tocIndex:3},{value:`\u7F3A\u5C11\u4E00\u4E2A\u52A8\u56FE +`,paraId:4,tocIndex:3},{value:"\u7F16\u8F91\u6309\u94AE",paraId:5,tocIndex:4},{value:"\u6253\u5F00\u65B9\u5F0F\uFF1A\u62BD\u5C49\u3001\u5BF9\u8BDD\u6846",paraId:5,tocIndex:4},{value:"\u5F39\u7A97\u5C3A\u5BF8\uFF1A\u5927\u3001\u4E2D\u3001\u5C0F",paraId:5,tocIndex:4},{value:"\u5220\u9664",paraId:5,tocIndex:4},{value:"\u6709\u4E0A\u4E0B\u6587\u6570\u636E\u7684\u64CD\u4F5C\uFF0C\u8FD8\u53EF\u4EE5\u914D\u7F6E\u300C\u8054\u52A8\u89C4\u5219\u300D",paraId:6,tocIndex:5},{value:"\u8054\u52A8\u89C4\u5219\u914D\u7F6E",paraId:7,tocIndex:5},{value:"\u53EF\u4EE5\u6DFB\u52A0\u591A\u6761\uFF0C\u6761\u4EF6\u4E0E\u7B5B\u9009\u7528\u6CD5\u4E00\u81F4\uFF0C\u53EF\u4EE5\u63A7\u5236\u6309\u94AE\u7684\u663E\u793A\u3001\u9690\u85CF\u3001\u542F\u7528\u3001\u7981\u7528",paraId:8,tocIndex:5}],cv={},sv={title:"\u6253\u5370",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/print.md",lastUpdated:173254844e4},uv=[{id:"\u6253\u5370",depth:1,title:"\u6253\u5370"}],pv=[],Iv={},_v={title:"\u6269\u5C55\u6559\u7A0B",toc:"menu",filename:"docs/en-US/plugins/data-visualization/step-by-step/index.md",lastUpdated:173254844e4,description:"\u4EE5\u6DFB\u52A0 ECharts \u56FE\u8868\u4E3A\u4F8B\uFF0C\u5B8C\u6574\u4EE3\u7801\u53EF\u53C2\u8003 @nocobase/plugin-sample-add-custom-charts \u63D2\u4EF6"},vv=[{id:"\u6269\u5C55\u6559\u7A0B",depth:1,title:"\u6269\u5C55\u6559\u7A0B"},{id:"\u65B0\u5EFA\u63D2\u4EF6",depth:2,title:"\u65B0\u5EFA\u63D2\u4EF6"},{id:"echarts-react-\u7EC4\u4EF6",depth:2,title:"ECharts React \u7EC4\u4EF6"},{id:"\u6269\u5C55-chart-\u7C7B",depth:2,title:"\u6269\u5C55 Chart \u7C7B"},{id:"\u6B65\u9AA4\u4E00",depth:3,title:"\u6B65\u9AA4\u4E00"},{id:"\u6B65\u9AA4\u4E8C",depth:3,title:"\u6B65\u9AA4\u4E8C"},{id:"\u6B65\u9AA4\u4E09",depth:3,title:"\u6B65\u9AA4\u4E09"},{id:"\u6B65\u9AA4\u56DB",depth:3,title:"\u6B65\u9AA4\u56DB"},{id:"\u5B9A\u4E49\u56FE\u8868",depth:2,title:"\u5B9A\u4E49\u56FE\u8868"},{id:"\u6DFB\u52A0\u56FE\u8868",depth:2,title:"\u6DFB\u52A0\u56FE\u8868"}],mv=[{value:"\u4EE5\u6DFB\u52A0 ECharts \u56FE\u8868\u4E3A\u4F8B\uFF0C\u5B8C\u6574\u4EE3\u7801\u53EF\u53C2\u8003 ",paraId:0,tocIndex:0},{value:"@nocobase/plugin-sample-add-custom-charts",paraId:0,tocIndex:0},{value:" \u63D2\u4EF6",paraId:0,tocIndex:0},{value:"\u6309\u7167",paraId:1,tocIndex:1},{value:"\u63D2\u4EF6\u5F00\u53D1\u6307\u5357",paraId:1,tocIndex:1},{value:"\u7684\u6B65\u9AA4\uFF0C\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u63D2\u4EF6\u3002\u6DFB\u52A0\u597D\u4F9D\u8D56 ",paraId:1,tocIndex:1},{value:"echarts",paraId:1,tocIndex:1},{value:", ",paraId:1,tocIndex:1},{value:"echarts-for-react",paraId:1,tocIndex:1},{value:", ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-data-visualization",paraId:1,tocIndex:1},{value:"\uFF0C\u5916\u90E8\u4F9D\u8D56\u653E\u5230 ",paraId:1,tocIndex:1},{value:"package.json",paraId:1,tocIndex:1},{value:" \u7684 ",paraId:1,tocIndex:1},{value:"devDependencies",paraId:1,tocIndex:1},{value:" \u4E2D\u3002",paraId:1,tocIndex:1},{value:`yarn pm create @nocobase/plugin-sample-add-custom-charts npx lerna add echarts --scope=@nocobase/plugin-sample-add-custom-charts --dev npx lerna add echarts-for-react --scope=@nocobase/plugin-sample-add-custom-charts --dev `,paraId:2,tocIndex:1},{value:`// package.json @@ -3811,11 +3863,11 @@ export class PluginSampleAddCustomChartClient extends Plugin { // You can get and modify the app instance here async load() {} } -`,paraId:29,tocIndex:9}],hv={},fv={title:"ICollectionManager",toc:"menu",filename:"docs/en-US/api/data-source-manager/i-collection-manager.md",lastUpdated:1732240239e3,description:"ICollectionManager \u63A5\u53E3\uFF0C\u7528\u4E8E\u7BA1\u7406\u6570\u636E\u6E90\u7684 Collection \u5B9E\u4F8B\u3002"},xv=[{id:"icollectionmanager",depth:1,title:"ICollectionManager"},{id:"api",depth:2,title:"API"},{id:"registerfieldtypes",depth:3,title:"registerFieldTypes()"},{id:"\u7B7E\u540D",depth:4,title:"\u7B7E\u540D"},{id:"registerfieldinterfaces",depth:3,title:"registerFieldInterfaces()"},{id:"\u7B7E\u540D-1",depth:4,title:"\u7B7E\u540D"},{id:"registercollectiontemplates",depth:3,title:"registerCollectionTemplates()"},{id:"\u7B7E\u540D-2",depth:4,title:"\u7B7E\u540D"},{id:"registermodels",depth:3,title:"registerModels()"},{id:"\u7B7E\u540D-3",depth:4,title:"\u7B7E\u540D"},{id:"registerrepositories",depth:3,title:"registerRepositories()"},{id:"\u7B7E\u540D-4",depth:4,title:"\u7B7E\u540D"},{id:"getregisteredrepository",depth:3,title:"getRegisteredRepository()"},{id:"\u7B7E\u540D-5",depth:4,title:"\u7B7E\u540D"},{id:"definecollection",depth:3,title:"defineCollection()"},{id:"\u7B7E\u540D-6",depth:4,title:"\u7B7E\u540D"},{id:"extendcollection",depth:3,title:"extendCollection()"},{id:"\u7B7E\u540D-7",depth:4,title:"\u7B7E\u540D"},{id:"hascollection",depth:3,title:"hasCollection()"},{id:"\u7B7E\u540D-8",depth:4,title:"\u7B7E\u540D"},{id:"getcollection",depth:3,title:"getCollection()"},{id:"\u7B7E\u540D-9",depth:4,title:"\u7B7E\u540D"},{id:"getcollections",depth:3,title:"getCollections()"},{id:"\u7B7E\u540D-10",depth:4,title:"\u7B7E\u540D"},{id:"getrepository",depth:3,title:"getRepository()"},{id:"\u7B7E\u540D-11",depth:4,title:"\u7B7E\u540D"},{id:"sync",depth:3,title:"sync()"},{id:"\u7B7E\u540D-12",depth:4,title:"\u7B7E\u540D"}],gv=[{value:"ICollectionManager",paraId:0,tocIndex:0},{value:" \u63A5\u53E3\uFF0C\u7528\u4E8E\u7BA1\u7406\u6570\u636E\u6E90\u7684 ",paraId:0,tocIndex:0},{value:"Collection",paraId:0,tocIndex:0},{value:" \u5B9E\u4F8B\u3002",paraId:0,tocIndex:0},{value:"\u6CE8\u518C ",paraId:1,tocIndex:2},{value:"Collection",paraId:1,tocIndex:2},{value:" \u4E2D\u7684\u5B57\u6BB5\u7C7B\u578B\u3002",paraId:1,tocIndex:2},{value:"registerFieldTypes(types: Record): void",paraId:2,tocIndex:3},{value:"\u6CE8\u518C ",paraId:3,tocIndex:4},{value:"Collection",paraId:3,tocIndex:4},{value:" \u7684 ",paraId:3,tocIndex:4},{value:"Interface",paraId:3,tocIndex:4},{value:" \u3002",paraId:3,tocIndex:4},{value:"registerFieldInterfaces(interfaces: Record): void",paraId:4,tocIndex:5},{value:"\u6CE8\u518C ",paraId:5,tocIndex:6},{value:"Collection Template",paraId:5,tocIndex:6},{value:"\u3002",paraId:5,tocIndex:6},{value:"registerCollectionTemplates(templates: Record): void",paraId:6,tocIndex:7},{value:"\u6CE8\u518C ",paraId:7,tocIndex:8},{value:"Model",paraId:7,tocIndex:8},{value:"\u3002",paraId:7,tocIndex:8},{value:"registerModels(models: Record): void",paraId:8,tocIndex:9},{value:"\u6CE8\u518C ",paraId:9,tocIndex:10},{value:"Repository",paraId:9,tocIndex:10},{value:"\u3002",paraId:9,tocIndex:10},{value:"registerRepositories(repositories: Record): void",paraId:10,tocIndex:11},{value:"\u83B7\u53D6\u5DF2\u6CE8\u518C\u7684\u4ED3\u5E93\u5B9E\u4F8B\u3002",paraId:11,tocIndex:12},{value:"getRegisteredRepository(key: string): IRepository",paraId:12,tocIndex:13},{value:"\u5B9A\u4E49\u4E00\u4E2A ",paraId:13,tocIndex:14},{value:"Collection",paraId:13,tocIndex:14},{value:"\u3002",paraId:13,tocIndex:14},{value:"defineCollection(options: CollectionOptions): ICollection",paraId:14,tocIndex:15},{value:"\u4FEE\u6539\u4E00\u4E2A\u5DF2\u5B58\u5728\u7684 ",paraId:15,tocIndex:16},{value:"Collection",paraId:15,tocIndex:16},{value:" \u5C5E\u6027\u3002",paraId:15,tocIndex:16},{value:"extendCollection(collectionOptions: CollectionOptions, mergeOptions?: MergeOptions): ICollection",paraId:16,tocIndex:17},{value:"\u5224\u65AD ",paraId:17,tocIndex:18},{value:"Collection",paraId:17,tocIndex:18},{value:" \u662F\u5426\u5B58\u5728\u3002",paraId:17,tocIndex:18},{value:"hasCollection(name: string): boolean",paraId:18,tocIndex:19},{value:"\u83B7\u53D6 ",paraId:19,tocIndex:20},{value:"Collection",paraId:19,tocIndex:20},{value:" \u5B9E\u4F8B\u3002",paraId:19,tocIndex:20},{value:"getCollection(name: string): ICollection",paraId:20,tocIndex:21},{value:"\u83B7\u53D6\u6240\u6709\u7684 ",paraId:21,tocIndex:22},{value:"Collection",paraId:21,tocIndex:22},{value:" \u5B9E\u4F8B\u3002",paraId:21,tocIndex:22},{value:"getCollections(): Array",paraId:22,tocIndex:23},{value:"\u83B7\u53D6 ",paraId:23,tocIndex:24},{value:"Repository",paraId:23,tocIndex:24},{value:" \u5B9E\u4F8B\u3002",paraId:23,tocIndex:24},{value:"getRepository(name: string, sourceId?: string | number): IRepository",paraId:24,tocIndex:25},{value:"\u540C\u6B65\u6570\u636E\u6E90\uFF0C\u903B\u8F91\u7531\u5B50\u7C7B\u5B9E\u73B0\u3002",paraId:25,tocIndex:26},{value:"sync(): Promise",paraId:26,tocIndex:27}],bv={},yv={title:"Menus",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/menus/index.md",lastUpdated:1732240239e3,description:"There are three built-in menu item types:"},wv=[{id:"menu",depth:3,title:"Menu"},{id:"menu-item-types",depth:4,title:"Menu Item Types"},{id:"group",depth:5,title:"Group"},{id:"page",depth:5,title:"Page"},{id:"link",depth:5,title:"Link"},{id:"menu-item-designer",depth:4,title:"Menu Item Designer"},{id:"menu-item-configuration",depth:5,title:"Menu Item Configuration"}],kv=[{value:"There are three built-in menu item types:",paraId:0,tocIndex:1},{value:"Group",paraId:1,tocIndex:1},{value:"Page",paraId:1,tocIndex:1},{value:"Link",paraId:1,tocIndex:1},{value:"When using a group, a submenu will appear on the left side.",paraId:2,tocIndex:2},{value:"A page can be used to add various blocks.",paraId:3,tocIndex:3},{value:"Used for URL redirection.",paraId:4,tocIndex:4},{value:"In the upper right corner of each menu item, there are two icons:",paraId:5,tocIndex:5},{value:"Drag to move",paraId:6,tocIndex:5},{value:"Configure menu item",paraId:6,tocIndex:5},{value:"Edit:",paraId:7,tocIndex:6},{value:" Modify the menu item title, icon, etc.",paraId:7,tocIndex:6},{value:"Move to:",paraId:7,tocIndex:6},{value:' Besides dragging to move, you can also use the "Move to" option to quickly relocate the menu item.',paraId:7,tocIndex:6},{value:"Insert before",paraId:7,tocIndex:6},{value:"Insert after",paraId:7,tocIndex:6},{value:"Insert inside",paraId:7,tocIndex:6},{value:" (only for group type)",paraId:7,tocIndex:6},{value:"Delete",paraId:7,tocIndex:6}],Sv={},Uv={title:"Pages",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/pages/index.md",lastUpdated:1732240239e3,description:"After enabling page tabs, you can add subpages within the page."},Pv=[{id:"page",depth:3,title:"Page"},{id:"page-structure",depth:4,title:"Page Structure"},{id:"page-designer",depth:4,title:"Page Designer"},{id:"page-tabs",depth:4,title:"Page Tabs"},{id:"page-layout",depth:4,title:"Page Layout"}],Tv=[{value:"Page Designer",paraId:0,tocIndex:1},{value:"Page Title",paraId:0,tocIndex:1},{value:"Page Tabs (Subpages)",paraId:0,tocIndex:1},{value:"Page Body (Hosts blocks)",paraId:0,tocIndex:1},{value:"Enable page header:",paraId:1,tocIndex:2},{value:" Controls whether the header is displayed.",paraId:1,tocIndex:2},{value:"Display page title:",paraId:1,tocIndex:2},{value:" Controls whether the page title is displayed in the header.",paraId:1,tocIndex:2},{value:"Edit page title:",paraId:1,tocIndex:2},{value:" The default page title is the menu item title, but you can customize it.",paraId:1,tocIndex:2},{value:"Enable page tabs:",paraId:1,tocIndex:2},{value:" Tabs refer to the subpages of the page.",paraId:1,tocIndex:2},{value:"After enabling page tabs, you can add subpages within the page.",paraId:2,tocIndex:3},{value:"Multiple blocks can be arranged by dragging to adjust the layout.",paraId:3,tocIndex:4}],Cv={},Av={title:"External Data Source - PostgreSQL",toc:"menu",filename:"docs/en-US/handbook/data-source-external-postgres/index.md",lastUpdated:1732240239e3,description:"Use an external PostgreSQL database as a data source. Currently supported versions: PostgreSQL >= 9.5"},qv=[{id:"external-data-source---postgresql",depth:1,title:"External Data Source - PostgreSQL"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"}],Ev=[{value:"Use an external PostgreSQL database as a data source. Currently supported versions: PostgreSQL >= 9.5",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin, which needs to be uploaded and activated through the plugin manager.",paraId:1,tocIndex:2},{value:"Refer to the ",paraId:2,tocIndex:3},{value:"Data Source / External Database",paraId:3,tocIndex:3},{value:" section.",paraId:2,tocIndex:3}],Dv={},Ov={title:"General Collection",toc:"menu",filename:"docs/en-US/handbook/data-source-main/general-collection.md",lastUpdated:1732240239e3,description:"It is used in most scenarios. A general collection can be used unless a special collection template is needed."},Rv=[{id:"general-collection",depth:1,title:"General Collection"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"}],Mv=[{value:"It is used in most scenarios. A general collection can be used unless a special collection template is needed.",paraId:0,tocIndex:1}],Lv={},Nv={title:"Line Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/line.md",lastUpdated:1732240239e3,description:"The line chart can be configured with one measure and one dimension, as illustrated below:"},zv=[{id:"line-chart",depth:1,title:"Line Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-measure-1-dimension",depth:3,title:"1 Measure, 1 Dimension"},{id:"1-measure-1-axis-dimension-one-category-dimension",depth:3,title:"1 Measure, 1 Axis Dimension, One Category Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],Fv=[{value:"The line chart can be configured with one measure and one dimension, as illustrated below:",paraId:0,tocIndex:2},{value:"Configure one metric and two dimensions. One of the dimensions is the X-axis field (X field) and the other is the Series field (Series field).",paraId:1,tocIndex:3},{value:"Configuration Option",paraId:2,tocIndex:4},{value:"Description",paraId:2,tocIndex:4},{value:"X-axis Field",paraId:2,tocIndex:4},{value:"The dimension field that defines the X-axis",paraId:2,tocIndex:4},{value:"Series Field",paraId:2,tocIndex:4},{value:"The dimension field that defines the categories",paraId:2,tocIndex:4},{value:"Size",paraId:2,tocIndex:4},{value:"Set the size of the chart, either fixed aspect ratio or fixed height",paraId:2,tocIndex:4},{value:"Smooth Curves",paraId:2,tocIndex:4},{value:"Enable or disable smooth curve rendering",paraId:2,tocIndex:4},{value:"Stack Data",paraId:2,tocIndex:4},{value:"Whether to stack the data values on top of each other",paraId:2,tocIndex:4}],Bv={},jv={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/overview.md",lastUpdated:1732240239e3,description:"The use of ECharts enables data visualization, supporting more chart types such as funnel charts, radar charts, and provides a more user-friendly visualization configuration."},Hv=[{id:"overview",depth:1,title:"Overview"}],Wv=[{value:"The use of ",paraId:0},{value:" ECharts ",paraId:0},{value:" enables data visualization, supporting more chart types such as funnel charts, radar charts, and provides a more user-friendly visualization configuration.",paraId:0}],$v={},Gv={title:"Chart Block",toc:"menu",filename:"docs/en-US/handbook/data-visualization/user/chart-block.md",lastUpdated:1732240239e3,description:"The chart block is a panel used for organizing multiple charts."},Vv=[{id:"chart-block",depth:1,title:"Chart Block"},{id:"add-block",depth:2,title:"Add Block"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"configure-block-operations",depth:2,title:"Configure Block Operations"},{id:"refresh-and-auto-refresh",depth:3,title:"Refresh and Auto-Refresh"},{id:"configure-chart-operations",depth:2,title:"Configure Chart Operations"},{id:"refresh-and-auto-refresh-1",depth:3,title:"Refresh and Auto-Refresh"}],Kv=[{value:"The chart block is a panel used for organizing multiple charts.",paraId:0,tocIndex:0},{value:'Click "Add Block" - "Charts" to create an empty chart block.',paraId:1,tocIndex:1},{value:'Inside the chart block, click "Add Block" - "Chart" and select the corresponding data Collection to create and configure charts. Only tables that the user has permission to view can be used for chart configuration, otherwise, they will be hidden from the options.',paraId:2,tocIndex:1},{value:"Edit Block Title - Allows setting a title for multiple charts in the block.",paraId:3,tocIndex:2},{value:"Show Background - Determines whether to display the background color of the chart block.",paraId:3,tocIndex:2},{value:"Show Padding - Determines whether to display the padding of the chart block.",paraId:3,tocIndex:2},{value:"The background and padding settings are particularly useful when there is only one chart in the block or when viewing on mobile devices, helping the style appear more comfortable.",paraId:4,tocIndex:2},{value:"The charts within a chart block can be freely dragged and organized like regular blocks.",paraId:5,tocIndex:2},{value:'Click the "Configure" button to modify the settings of the current chart.',paraId:6,tocIndex:2},{value:'Click the "Duplicate" button to quickly copy the current chart.',paraId:6,tocIndex:2},{value:'Click the "Delete" button to remove the current chart.',paraId:6,tocIndex:2},{value:"The configuration operation feature applies to chart blocks added in version ",paraId:7},{value:"v1.4.0-alpha",paraId:7},{value:" and later.",paraId:7},{value:"Chart blocks support configuring a refresh button. Clicking it refreshes all the charts within the block.",paraId:8,tocIndex:4},{value:"In configuration mode, you can set the refresh button to configure the auto-refresh interval, which will apply to all charts in the block. The auto-refresh interval configured here will apply to all users who access the page by default.",paraId:9,tocIndex:4},{value:"Users can also modify the auto-refresh interval using the button on the right, but this adjustment is only effective temporarily and will reset after the page is refreshed.",paraId:10,tocIndex:4},{value:"The operation buttons configured for individual charts will only appear when the mouse hovers over the chart and will automatically hide when the mouse leaves.",paraId:11},{value:"Individual charts also support configuring a refresh button, functioning the same way as the block's refresh button, but only affecting the current chart.",paraId:12,tocIndex:6},{value:"If both the chart block and an individual chart are configured with auto-refresh intervals, the interval configured for the individual chart takes precedence.",paraId:13},{value:"If the chart block is configured with an auto-refresh interval, and an individual chart either has auto-refresh disabled or has no refresh button configured, the auto-refresh interval of the chart block will apply.",paraId:13}],Zv={},Yv={title:"Data scope",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/data-scope.md",lastUpdated:1732240239e3,description:"Data scope is a powerful feature that allows users to define default filtering conditions for data blocks. This functionality enables users to dynamically adjust the scope of displayed data, tailoring it to their specific needs and enhancing the overall user experience."},Qv=[{id:"data-scope",depth:1,title:"Data scope"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"},{id:"operators",depth:3,title:"Operators"},{id:"static-values",depth:3,title:"Static Values"},{id:"variable-values",depth:3,title:"Variable Values"}],Jv=[{value:"Data scope is a powerful feature that allows users to define default filtering conditions for data blocks. This functionality enables users to dynamically adjust the scope of displayed data, tailoring it to their specific needs and enhancing the overall user experience.",paraId:0,tocIndex:1},{value:"Filter fields support selecting fields from the current table, as well as from related tables (up to three levels of relationships).",paraId:1,tocIndex:2},{value:'Different field types support various operators. For instance, text fields support operators such as "equals," "not equals," and "contains." Numeric fields allow for operators like "greater than" and "less than," while date fields offer options such as "within a range" or "before a specific date."',paraId:2,tocIndex:3},{value:'Example: Setting an Order "Status" to "Shipped".',paraId:3,tocIndex:4},{value:` +`,paraId:29,tocIndex:9}],hv={},fv={title:"ICollectionManager",toc:"menu",filename:"docs/en-US/api/data-source-manager/i-collection-manager.md",lastUpdated:173254844e4,description:"ICollectionManager \u63A5\u53E3\uFF0C\u7528\u4E8E\u7BA1\u7406\u6570\u636E\u6E90\u7684 Collection \u5B9E\u4F8B\u3002"},xv=[{id:"icollectionmanager",depth:1,title:"ICollectionManager"},{id:"api",depth:2,title:"API"},{id:"registerfieldtypes",depth:3,title:"registerFieldTypes()"},{id:"\u7B7E\u540D",depth:4,title:"\u7B7E\u540D"},{id:"registerfieldinterfaces",depth:3,title:"registerFieldInterfaces()"},{id:"\u7B7E\u540D-1",depth:4,title:"\u7B7E\u540D"},{id:"registercollectiontemplates",depth:3,title:"registerCollectionTemplates()"},{id:"\u7B7E\u540D-2",depth:4,title:"\u7B7E\u540D"},{id:"registermodels",depth:3,title:"registerModels()"},{id:"\u7B7E\u540D-3",depth:4,title:"\u7B7E\u540D"},{id:"registerrepositories",depth:3,title:"registerRepositories()"},{id:"\u7B7E\u540D-4",depth:4,title:"\u7B7E\u540D"},{id:"getregisteredrepository",depth:3,title:"getRegisteredRepository()"},{id:"\u7B7E\u540D-5",depth:4,title:"\u7B7E\u540D"},{id:"definecollection",depth:3,title:"defineCollection()"},{id:"\u7B7E\u540D-6",depth:4,title:"\u7B7E\u540D"},{id:"extendcollection",depth:3,title:"extendCollection()"},{id:"\u7B7E\u540D-7",depth:4,title:"\u7B7E\u540D"},{id:"hascollection",depth:3,title:"hasCollection()"},{id:"\u7B7E\u540D-8",depth:4,title:"\u7B7E\u540D"},{id:"getcollection",depth:3,title:"getCollection()"},{id:"\u7B7E\u540D-9",depth:4,title:"\u7B7E\u540D"},{id:"getcollections",depth:3,title:"getCollections()"},{id:"\u7B7E\u540D-10",depth:4,title:"\u7B7E\u540D"},{id:"getrepository",depth:3,title:"getRepository()"},{id:"\u7B7E\u540D-11",depth:4,title:"\u7B7E\u540D"},{id:"sync",depth:3,title:"sync()"},{id:"\u7B7E\u540D-12",depth:4,title:"\u7B7E\u540D"}],gv=[{value:"ICollectionManager",paraId:0,tocIndex:0},{value:" \u63A5\u53E3\uFF0C\u7528\u4E8E\u7BA1\u7406\u6570\u636E\u6E90\u7684 ",paraId:0,tocIndex:0},{value:"Collection",paraId:0,tocIndex:0},{value:" \u5B9E\u4F8B\u3002",paraId:0,tocIndex:0},{value:"\u6CE8\u518C ",paraId:1,tocIndex:2},{value:"Collection",paraId:1,tocIndex:2},{value:" \u4E2D\u7684\u5B57\u6BB5\u7C7B\u578B\u3002",paraId:1,tocIndex:2},{value:"registerFieldTypes(types: Record): void",paraId:2,tocIndex:3},{value:"\u6CE8\u518C ",paraId:3,tocIndex:4},{value:"Collection",paraId:3,tocIndex:4},{value:" \u7684 ",paraId:3,tocIndex:4},{value:"Interface",paraId:3,tocIndex:4},{value:" \u3002",paraId:3,tocIndex:4},{value:"registerFieldInterfaces(interfaces: Record): void",paraId:4,tocIndex:5},{value:"\u6CE8\u518C ",paraId:5,tocIndex:6},{value:"Collection Template",paraId:5,tocIndex:6},{value:"\u3002",paraId:5,tocIndex:6},{value:"registerCollectionTemplates(templates: Record): void",paraId:6,tocIndex:7},{value:"\u6CE8\u518C ",paraId:7,tocIndex:8},{value:"Model",paraId:7,tocIndex:8},{value:"\u3002",paraId:7,tocIndex:8},{value:"registerModels(models: Record): void",paraId:8,tocIndex:9},{value:"\u6CE8\u518C ",paraId:9,tocIndex:10},{value:"Repository",paraId:9,tocIndex:10},{value:"\u3002",paraId:9,tocIndex:10},{value:"registerRepositories(repositories: Record): void",paraId:10,tocIndex:11},{value:"\u83B7\u53D6\u5DF2\u6CE8\u518C\u7684\u4ED3\u5E93\u5B9E\u4F8B\u3002",paraId:11,tocIndex:12},{value:"getRegisteredRepository(key: string): IRepository",paraId:12,tocIndex:13},{value:"\u5B9A\u4E49\u4E00\u4E2A ",paraId:13,tocIndex:14},{value:"Collection",paraId:13,tocIndex:14},{value:"\u3002",paraId:13,tocIndex:14},{value:"defineCollection(options: CollectionOptions): ICollection",paraId:14,tocIndex:15},{value:"\u4FEE\u6539\u4E00\u4E2A\u5DF2\u5B58\u5728\u7684 ",paraId:15,tocIndex:16},{value:"Collection",paraId:15,tocIndex:16},{value:" \u5C5E\u6027\u3002",paraId:15,tocIndex:16},{value:"extendCollection(collectionOptions: CollectionOptions, mergeOptions?: MergeOptions): ICollection",paraId:16,tocIndex:17},{value:"\u5224\u65AD ",paraId:17,tocIndex:18},{value:"Collection",paraId:17,tocIndex:18},{value:" \u662F\u5426\u5B58\u5728\u3002",paraId:17,tocIndex:18},{value:"hasCollection(name: string): boolean",paraId:18,tocIndex:19},{value:"\u83B7\u53D6 ",paraId:19,tocIndex:20},{value:"Collection",paraId:19,tocIndex:20},{value:" \u5B9E\u4F8B\u3002",paraId:19,tocIndex:20},{value:"getCollection(name: string): ICollection",paraId:20,tocIndex:21},{value:"\u83B7\u53D6\u6240\u6709\u7684 ",paraId:21,tocIndex:22},{value:"Collection",paraId:21,tocIndex:22},{value:" \u5B9E\u4F8B\u3002",paraId:21,tocIndex:22},{value:"getCollections(): Array",paraId:22,tocIndex:23},{value:"\u83B7\u53D6 ",paraId:23,tocIndex:24},{value:"Repository",paraId:23,tocIndex:24},{value:" \u5B9E\u4F8B\u3002",paraId:23,tocIndex:24},{value:"getRepository(name: string, sourceId?: string | number): IRepository",paraId:24,tocIndex:25},{value:"\u540C\u6B65\u6570\u636E\u6E90\uFF0C\u903B\u8F91\u7531\u5B50\u7C7B\u5B9E\u73B0\u3002",paraId:25,tocIndex:26},{value:"sync(): Promise",paraId:26,tocIndex:27}],bv={},yv={title:"Menus",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/menus/index.md",lastUpdated:173254844e4,description:"There are three built-in menu item types:"},wv=[{id:"menu",depth:3,title:"Menu"},{id:"menu-item-types",depth:4,title:"Menu Item Types"},{id:"group",depth:5,title:"Group"},{id:"page",depth:5,title:"Page"},{id:"link",depth:5,title:"Link"},{id:"menu-item-designer",depth:4,title:"Menu Item Designer"},{id:"menu-item-configuration",depth:5,title:"Menu Item Configuration"}],kv=[{value:"There are three built-in menu item types:",paraId:0,tocIndex:1},{value:"Group",paraId:1,tocIndex:1},{value:"Page",paraId:1,tocIndex:1},{value:"Link",paraId:1,tocIndex:1},{value:"When using a group, a submenu will appear on the left side.",paraId:2,tocIndex:2},{value:"A page can be used to add various blocks.",paraId:3,tocIndex:3},{value:"Used for URL redirection.",paraId:4,tocIndex:4},{value:"In the upper right corner of each menu item, there are two icons:",paraId:5,tocIndex:5},{value:"Drag to move",paraId:6,tocIndex:5},{value:"Configure menu item",paraId:6,tocIndex:5},{value:"Edit:",paraId:7,tocIndex:6},{value:" Modify the menu item title, icon, etc.",paraId:7,tocIndex:6},{value:"Move to:",paraId:7,tocIndex:6},{value:' Besides dragging to move, you can also use the "Move to" option to quickly relocate the menu item.',paraId:7,tocIndex:6},{value:"Insert before",paraId:7,tocIndex:6},{value:"Insert after",paraId:7,tocIndex:6},{value:"Insert inside",paraId:7,tocIndex:6},{value:" (only for group type)",paraId:7,tocIndex:6},{value:"Delete",paraId:7,tocIndex:6}],Sv={},Uv={title:"Pages",toc:"menu",filename:"docs/en-US/handbook/client/user/ui-designer/pages/index.md",lastUpdated:173254844e4,description:"After enabling page tabs, you can add subpages within the page."},Pv=[{id:"page",depth:3,title:"Page"},{id:"page-structure",depth:4,title:"Page Structure"},{id:"page-designer",depth:4,title:"Page Designer"},{id:"page-tabs",depth:4,title:"Page Tabs"},{id:"page-layout",depth:4,title:"Page Layout"}],Tv=[{value:"Page Designer",paraId:0,tocIndex:1},{value:"Page Title",paraId:0,tocIndex:1},{value:"Page Tabs (Subpages)",paraId:0,tocIndex:1},{value:"Page Body (Hosts blocks)",paraId:0,tocIndex:1},{value:"Enable page header:",paraId:1,tocIndex:2},{value:" Controls whether the header is displayed.",paraId:1,tocIndex:2},{value:"Display page title:",paraId:1,tocIndex:2},{value:" Controls whether the page title is displayed in the header.",paraId:1,tocIndex:2},{value:"Edit page title:",paraId:1,tocIndex:2},{value:" The default page title is the menu item title, but you can customize it.",paraId:1,tocIndex:2},{value:"Enable page tabs:",paraId:1,tocIndex:2},{value:" Tabs refer to the subpages of the page.",paraId:1,tocIndex:2},{value:"After enabling page tabs, you can add subpages within the page.",paraId:2,tocIndex:3},{value:"Multiple blocks can be arranged by dragging to adjust the layout.",paraId:3,tocIndex:4}],Cv={},Av={title:"External Data Source - PostgreSQL",toc:"menu",filename:"docs/en-US/handbook/data-source-external-postgres/index.md",lastUpdated:173254844e4,description:"Use an external PostgreSQL database as a data source. Currently supported versions: PostgreSQL >= 9.5"},qv=[{id:"external-data-source---postgresql",depth:1,title:"External Data Source - PostgreSQL"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"}],Ev=[{value:"Use an external PostgreSQL database as a data source. Currently supported versions: PostgreSQL >= 9.5",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin, which needs to be uploaded and activated through the plugin manager.",paraId:1,tocIndex:2},{value:"Refer to the ",paraId:2,tocIndex:3},{value:"Data Source / External Database",paraId:3,tocIndex:3},{value:" section.",paraId:2,tocIndex:3}],Dv={},Ov={title:"General Collection",toc:"menu",filename:"docs/en-US/handbook/data-source-main/general-collection.md",lastUpdated:173254844e4,description:"It is used in most scenarios. A general collection can be used unless a special collection template is needed."},Rv=[{id:"general-collection",depth:1,title:"General Collection"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"}],Mv=[{value:"It is used in most scenarios. A general collection can be used unless a special collection template is needed.",paraId:0,tocIndex:1}],Lv={},Nv={title:"Line Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/line.md",lastUpdated:173254844e4,description:"The line chart can be configured with one measure and one dimension, as illustrated below:"},zv=[{id:"line-chart",depth:1,title:"Line Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-measure-1-dimension",depth:3,title:"1 Measure, 1 Dimension"},{id:"1-measure-1-axis-dimension-one-category-dimension",depth:3,title:"1 Measure, 1 Axis Dimension, One Category Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],Fv=[{value:"The line chart can be configured with one measure and one dimension, as illustrated below:",paraId:0,tocIndex:2},{value:"Configure one metric and two dimensions. One of the dimensions is the X-axis field (X field) and the other is the Series field (Series field).",paraId:1,tocIndex:3},{value:"Configuration Option",paraId:2,tocIndex:4},{value:"Description",paraId:2,tocIndex:4},{value:"X-axis Field",paraId:2,tocIndex:4},{value:"The dimension field that defines the X-axis",paraId:2,tocIndex:4},{value:"Series Field",paraId:2,tocIndex:4},{value:"The dimension field that defines the categories",paraId:2,tocIndex:4},{value:"Size",paraId:2,tocIndex:4},{value:"Set the size of the chart, either fixed aspect ratio or fixed height",paraId:2,tocIndex:4},{value:"Smooth Curves",paraId:2,tocIndex:4},{value:"Enable or disable smooth curve rendering",paraId:2,tocIndex:4},{value:"Stack Data",paraId:2,tocIndex:4},{value:"Whether to stack the data values on top of each other",paraId:2,tocIndex:4}],Bv={},jv={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/overview.md",lastUpdated:173254844e4,description:"The use of ECharts enables data visualization, supporting more chart types such as funnel charts, radar charts, and provides a more user-friendly visualization configuration."},Hv=[{id:"overview",depth:1,title:"Overview"}],Wv=[{value:"The use of ",paraId:0},{value:" ECharts ",paraId:0},{value:" enables data visualization, supporting more chart types such as funnel charts, radar charts, and provides a more user-friendly visualization configuration.",paraId:0}],$v={},Gv={title:"Chart Block",toc:"menu",filename:"docs/en-US/handbook/data-visualization/user/chart-block.md",lastUpdated:173254844e4,description:"The chart block is a panel used for organizing multiple charts."},Vv=[{id:"chart-block",depth:1,title:"Chart Block"},{id:"add-block",depth:2,title:"Add Block"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"configure-block-operations",depth:2,title:"Configure Block Operations"},{id:"refresh-and-auto-refresh",depth:3,title:"Refresh and Auto-Refresh"},{id:"configure-chart-operations",depth:2,title:"Configure Chart Operations"},{id:"refresh-and-auto-refresh-1",depth:3,title:"Refresh and Auto-Refresh"}],Kv=[{value:"The chart block is a panel used for organizing multiple charts.",paraId:0,tocIndex:0},{value:'Click "Add Block" - "Charts" to create an empty chart block.',paraId:1,tocIndex:1},{value:'Inside the chart block, click "Add Block" - "Chart" and select the corresponding data Collection to create and configure charts. Only tables that the user has permission to view can be used for chart configuration, otherwise, they will be hidden from the options.',paraId:2,tocIndex:1},{value:"Edit Block Title - Allows setting a title for multiple charts in the block.",paraId:3,tocIndex:2},{value:"Show Background - Determines whether to display the background color of the chart block.",paraId:3,tocIndex:2},{value:"Show Padding - Determines whether to display the padding of the chart block.",paraId:3,tocIndex:2},{value:"The background and padding settings are particularly useful when there is only one chart in the block or when viewing on mobile devices, helping the style appear more comfortable.",paraId:4,tocIndex:2},{value:"The charts within a chart block can be freely dragged and organized like regular blocks.",paraId:5,tocIndex:2},{value:'Click the "Configure" button to modify the settings of the current chart.',paraId:6,tocIndex:2},{value:'Click the "Duplicate" button to quickly copy the current chart.',paraId:6,tocIndex:2},{value:'Click the "Delete" button to remove the current chart.',paraId:6,tocIndex:2},{value:"The configuration operation feature applies to chart blocks added in version ",paraId:7},{value:"v1.4.0-alpha",paraId:7},{value:" and later.",paraId:7},{value:"Chart blocks support configuring a refresh button. Clicking it refreshes all the charts within the block.",paraId:8,tocIndex:4},{value:"In configuration mode, you can set the refresh button to configure the auto-refresh interval, which will apply to all charts in the block. The auto-refresh interval configured here will apply to all users who access the page by default.",paraId:9,tocIndex:4},{value:"Users can also modify the auto-refresh interval using the button on the right, but this adjustment is only effective temporarily and will reset after the page is refreshed.",paraId:10,tocIndex:4},{value:"The operation buttons configured for individual charts will only appear when the mouse hovers over the chart and will automatically hide when the mouse leaves.",paraId:11},{value:"Individual charts also support configuring a refresh button, functioning the same way as the block's refresh button, but only affecting the current chart.",paraId:12,tocIndex:6},{value:"If both the chart block and an individual chart are configured with auto-refresh intervals, the interval configured for the individual chart takes precedence.",paraId:13},{value:"If the chart block is configured with an auto-refresh interval, and an individual chart either has auto-refresh disabled or has no refresh button configured, the auto-refresh interval of the chart block will apply.",paraId:13}],Zv={},Yv={title:"Data scope",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-settings/data-scope.md",lastUpdated:173254844e4,description:"Data scope is a powerful feature that allows users to define default filtering conditions for data blocks. This functionality enables users to dynamically adjust the scope of displayed data, tailoring it to their specific needs and enhancing the overall user experience."},Qv=[{id:"data-scope",depth:1,title:"Data scope"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"},{id:"operators",depth:3,title:"Operators"},{id:"static-values",depth:3,title:"Static Values"},{id:"variable-values",depth:3,title:"Variable Values"}],Jv=[{value:"Data scope is a powerful feature that allows users to define default filtering conditions for data blocks. This functionality enables users to dynamically adjust the scope of displayed data, tailoring it to their specific needs and enhancing the overall user experience.",paraId:0,tocIndex:1},{value:"Filter fields support selecting fields from the current table, as well as from related tables (up to three levels of relationships).",paraId:1,tocIndex:2},{value:'Different field types support various operators. For instance, text fields support operators such as "equals," "not equals," and "contains." Numeric fields allow for operators like "greater than" and "less than," while date fields offer options such as "within a range" or "before a specific date."',paraId:2,tocIndex:3},{value:'Example: Setting an Order "Status" to "Shipped".',paraId:3,tocIndex:4},{value:` `,paraId:4},{value:` `,paraId:4},{value:'Example: "Delivery Date" is earlier than "yesterday."',paraId:5,tocIndex:5},{value:` - `,paraId:4},{value:"For more information about variables, refer to ",paraId:6,tocIndex:5},{value:"Variables",paraId:7,tocIndex:5},{value:".",paraId:6,tocIndex:5}],Xv={},em={title:"Set The Data Scope",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/data-scope.md",lastUpdated:1732240239e3,description:"The data scope for relationship fields is similar to the data scope setting for blocks, allowing you to set default filtering criteria for relational data."},am=[{id:"set-the-data-scope",depth:1,title:"Set The Data Scope"},{id:"introduction",depth:2,title:"Introduction"},{id:"instructions",depth:2,title:"Instructions"},{id:"static-value",depth:3,title:"Static Value"},{id:"variable-value",depth:3,title:"Variable Value"},{id:"relationship-field-linkage",depth:3,title:"Relationship Field Linkage"}],tm=[{value:"The data scope for relationship fields is similar to the data scope setting for blocks, allowing you to set default filtering criteria for relational data.",paraId:0,tocIndex:1},{value:"Example: Only products currently for sale can be selected as related items.",paraId:1,tocIndex:3},{value:"Example: Only products with a production date earlier than last month can be selected as related items.",paraId:2,tocIndex:4},{value:"For more information on variables, refer to ",paraId:3,tocIndex:4},{value:"Variables",paraId:4,tocIndex:4},{value:".",paraId:3,tocIndex:4},{value:"Relationship fields can be linked by setting the data scope.",paraId:5,tocIndex:5},{value:'Example: In the order form, there are many-to-many relationship fields "Products" and a many-to-one relationship field "Customers." The product table has a many-to-many relationship field "Customers." In the order form block, the selectable products are those associated with the customer selected in the current form.',paraId:6,tocIndex:5},{value:` - `,paraId:7}],nm={},om={title:"Edit field title",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/edit-title.md",lastUpdated:1732240239e3,description:"The field title refers to the name or label defined by the field, which can be personalized according to the needs of different blocks."},rm=[{id:"edit-field-title",depth:1,title:"Edit field title"},{id:"introduction",depth:2,title:"Introduction"}],dm=[{value:"The field title refers to the name or label defined by the field, which can be personalized according to the needs of different blocks.",paraId:0,tocIndex:1}],im={},lm={title:"Action Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-request-interceptor/action.md",lastUpdated:1732240239e3,description:'If you set the trigger configuration to "Triggered only when a form bound to this workflow is submitted", you must return to the form interface and bind the workflow to the appropriate action button:'},cm=[{id:"action-configuration",depth:1,title:"Action Configuration"}],sm=[{value:'If you set the trigger configuration to "Triggered only when a form bound to this workflow is submitted", you must return to the form interface and bind the workflow to the appropriate action button:',paraId:0,tocIndex:0},{value:'In the workflow binding configuration, select the relevant workflow. Typically, choosing "Entire Form Data" as the context for triggering data is sufficient:',paraId:1,tocIndex:0},{value:'Currently, buttons bound to pre-action events only support the "Submit" (or "Save"), "Update records," and "Delete" buttons in forms for new entries or updates. The "Trigger Workflow" button is not supported (this button can only be bound to post-action events).',paraId:2}],um={},pm={title:"\u6570\u636E\u8868\u6A21\u677F",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/index.md",lastUpdated:1732240239e3},Im=[{id:"\u6570\u636E\u8868\u6A21\u677F",depth:1,title:"\u6570\u636E\u8868\u6A21\u677F"}],_m=[],vm={},mm={title:"Adding Data Blocks",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/block-data.md",lastUpdated:1732240239e3,description:"NocoBase has many Add block buttons used to add blocks to the interface. Some of these blocks are related to data tables and are referred to as Data Blocks, while others that are not related to data tables are called Simple Blocks."},hm=[{id:"adding-data-blocks",depth:1,title:"Adding Data Blocks"},{id:"scenario-description",depth:2,title:"Scenario Description"},{id:"example-explanation",depth:2,title:"Example Explanation"},{id:"initializing-the-plugin",depth:2,title:"Initializing the Plugin"},{id:"feature-implementation",depth:2,title:"Feature Implementation"},{id:"1-defining-names",depth:3,title:"1. Defining Names"},{id:"2-implementing-block-components",depth:3,title:"2. Implementing Block Components"},{id:"21-defining-the-block-component",depth:4,title:"2.1 Defining the Block Component"},{id:"22-registering-the-block-component",depth:4,title:"2.2 Registering the Block Component"},{id:"23-verifying-the-block-component",depth:4,title:"2.3 Verifying the Block Component"},{id:"3-\u5B9A\u4E49\u533A\u5757-schema",depth:3,title:"3. \u5B9A\u4E49\u533A\u5757 Schema"},{id:"31-\u5B9A\u4E49\u533A\u5757-schema",depth:4,title:"3.1 \u5B9A\u4E49\u533A\u5757 Schema"},{id:"32-\u6CE8\u518C-scope",depth:4,title:"3.2 \u6CE8\u518C scope"},{id:"33-\u9A8C\u8BC1\u533A\u5757-schema",depth:4,title:"3.3 \u9A8C\u8BC1\u533A\u5757 Schema"},{id:"4-\u5B9A\u4E49-schema-initializer-item",depth:3,title:"4. \u5B9A\u4E49 Schema Initializer Item"},{id:"5-\u5B9E\u73B0-schema-settings",depth:3,title:"5. \u5B9E\u73B0 Schema Settings"},{id:"51-\u5B9A\u4E49-schema-settings",depth:4,title:"5.1 \u5B9A\u4E49 Schema Settings"},{id:"52-\u6CE8\u518C-schema-settings",depth:4,title:"5.2 \u6CE8\u518C Schema Settings"},{id:"53-\u4F7F\u7528-schema-settings",depth:4,title:"5.3 \u4F7F\u7528 Schema Settings"},{id:"6-\u6DFB\u52A0\u5230-add-block-\u4E2D",depth:3,title:"6. \u6DFB\u52A0\u5230 Add block \u4E2D"},{id:"61-\u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B-add-block-\u4E2D",depth:4,title:"6.1 \u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B Add block \u4E2D"},{id:"62-\u6DFB\u52A0\u5230\u5F39\u7A97-add-block-\u4E2D",depth:4,title:"6.2 \u6DFB\u52A0\u5230\u5F39\u7A97 Add block \u4E2D"},{id:"63-\u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF-add-block-\u4E2D",depth:4,title:"6.3 \u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF Add block \u4E2D"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],fm=[{value:"NocoBase has many ",paraId:0,tocIndex:1},{value:"Add block",paraId:0,tocIndex:1},{value:" buttons used to add blocks to the interface. Some of these blocks are related to data tables and are referred to as Data Blocks, while others that are not related to data tables are called Simple Blocks.",paraId:0,tocIndex:1},{value:"However, the existing block types may not fully meet our needs, so we may need to custom-develop some blocks according to our requirements. This article specifically explains how to create Data Blocks.",paraId:1,tocIndex:1},{value:"In this example, we will create an ",paraId:2,tocIndex:2},{value:"Info",paraId:2,tocIndex:2},{value:" block and add it to the ",paraId:2,tocIndex:2},{value:"Page",paraId:2,tocIndex:2},{value:", ",paraId:2,tocIndex:2},{value:"Table",paraId:2,tocIndex:2},{value:", and the mobile ",paraId:2,tocIndex:2},{value:"Add block",paraId:2,tocIndex:2},{value:" sections.",paraId:2,tocIndex:2},{value:"This example mainly demonstrates the usage of the initializer. For more information on block extensions, refer to the ",paraId:3,tocIndex:2},{value:"Block Extension",paraId:4,tocIndex:2},{value:" documentation.",paraId:3,tocIndex:2},{value:"The complete sample code for this document can be found in the ",paraId:5,tocIndex:2},{value:"plugin-samples repository",paraId:5,tocIndex:2},{value:".",paraId:5,tocIndex:2},{value:` + `,paraId:4},{value:"For more information about variables, refer to ",paraId:6,tocIndex:5},{value:"Variables",paraId:7,tocIndex:5},{value:".",paraId:6,tocIndex:5}],Xv={},em={title:"Set The Data Scope",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/data-scope.md",lastUpdated:173254844e4,description:"The data scope for relationship fields is similar to the data scope setting for blocks, allowing you to set default filtering criteria for relational data."},am=[{id:"set-the-data-scope",depth:1,title:"Set The Data Scope"},{id:"introduction",depth:2,title:"Introduction"},{id:"instructions",depth:2,title:"Instructions"},{id:"static-value",depth:3,title:"Static Value"},{id:"variable-value",depth:3,title:"Variable Value"},{id:"relationship-field-linkage",depth:3,title:"Relationship Field Linkage"}],tm=[{value:"The data scope for relationship fields is similar to the data scope setting for blocks, allowing you to set default filtering criteria for relational data.",paraId:0,tocIndex:1},{value:"Example: Only products currently for sale can be selected as related items.",paraId:1,tocIndex:3},{value:"Example: Only products with a production date earlier than last month can be selected as related items.",paraId:2,tocIndex:4},{value:"For more information on variables, refer to ",paraId:3,tocIndex:4},{value:"Variables",paraId:4,tocIndex:4},{value:".",paraId:3,tocIndex:4},{value:"Relationship fields can be linked by setting the data scope.",paraId:5,tocIndex:5},{value:'Example: In the order form, there are many-to-many relationship fields "Products" and a many-to-one relationship field "Customers." The product table has a many-to-many relationship field "Customers." In the order form block, the selectable products are those associated with the customer selected in the current form.',paraId:6,tocIndex:5},{value:` + `,paraId:7}],nm={},om={title:"Edit field title",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/edit-title.md",lastUpdated:173254844e4,description:"The field title refers to the name or label defined by the field, which can be personalized according to the needs of different blocks."},rm=[{id:"edit-field-title",depth:1,title:"Edit field title"},{id:"introduction",depth:2,title:"Introduction"}],dm=[{value:"The field title refers to the name or label defined by the field, which can be personalized according to the needs of different blocks.",paraId:0,tocIndex:1}],im={},lm={title:"Action Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-request-interceptor/action.md",lastUpdated:173254844e4,description:'If you set the trigger configuration to "Triggered only when a form bound to this workflow is submitted", you must return to the form interface and bind the workflow to the appropriate action button:'},cm=[{id:"action-configuration",depth:1,title:"Action Configuration"}],sm=[{value:'If you set the trigger configuration to "Triggered only when a form bound to this workflow is submitted", you must return to the form interface and bind the workflow to the appropriate action button:',paraId:0,tocIndex:0},{value:'In the workflow binding configuration, select the relevant workflow. Typically, choosing "Entire Form Data" as the context for triggering data is sufficient:',paraId:1,tocIndex:0},{value:'Currently, buttons bound to pre-action events only support the "Submit" (or "Save"), "Update records," and "Delete" buttons in forms for new entries or updates. The "Trigger Workflow" button is not supported (this button can only be bound to post-action events).',paraId:2}],um={},pm={title:"\u6570\u636E\u8868\u6A21\u677F",toc:"menu",filename:"docs/en-US/manual/collection/collection-templates/index.md",lastUpdated:173254844e4},Im=[{id:"\u6570\u636E\u8868\u6A21\u677F",depth:1,title:"\u6570\u636E\u8868\u6A21\u677F"}],_m=[],vm={},mm={title:"Adding Data Blocks",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/block-data.md",lastUpdated:173254844e4,description:"NocoBase has many Add block buttons used to add blocks to the interface. Some of these blocks are related to data tables and are referred to as Data Blocks, while others that are not related to data tables are called Simple Blocks."},hm=[{id:"adding-data-blocks",depth:1,title:"Adding Data Blocks"},{id:"scenario-description",depth:2,title:"Scenario Description"},{id:"example-explanation",depth:2,title:"Example Explanation"},{id:"initializing-the-plugin",depth:2,title:"Initializing the Plugin"},{id:"feature-implementation",depth:2,title:"Feature Implementation"},{id:"1-defining-names",depth:3,title:"1. Defining Names"},{id:"2-implementing-block-components",depth:3,title:"2. Implementing Block Components"},{id:"21-defining-the-block-component",depth:4,title:"2.1 Defining the Block Component"},{id:"22-registering-the-block-component",depth:4,title:"2.2 Registering the Block Component"},{id:"23-verifying-the-block-component",depth:4,title:"2.3 Verifying the Block Component"},{id:"3-\u5B9A\u4E49\u533A\u5757-schema",depth:3,title:"3. \u5B9A\u4E49\u533A\u5757 Schema"},{id:"31-\u5B9A\u4E49\u533A\u5757-schema",depth:4,title:"3.1 \u5B9A\u4E49\u533A\u5757 Schema"},{id:"32-\u6CE8\u518C-scope",depth:4,title:"3.2 \u6CE8\u518C scope"},{id:"33-\u9A8C\u8BC1\u533A\u5757-schema",depth:4,title:"3.3 \u9A8C\u8BC1\u533A\u5757 Schema"},{id:"4-\u5B9A\u4E49-schema-initializer-item",depth:3,title:"4. \u5B9A\u4E49 Schema Initializer Item"},{id:"5-\u5B9E\u73B0-schema-settings",depth:3,title:"5. \u5B9E\u73B0 Schema Settings"},{id:"51-\u5B9A\u4E49-schema-settings",depth:4,title:"5.1 \u5B9A\u4E49 Schema Settings"},{id:"52-\u6CE8\u518C-schema-settings",depth:4,title:"5.2 \u6CE8\u518C Schema Settings"},{id:"53-\u4F7F\u7528-schema-settings",depth:4,title:"5.3 \u4F7F\u7528 Schema Settings"},{id:"6-\u6DFB\u52A0\u5230-add-block-\u4E2D",depth:3,title:"6. \u6DFB\u52A0\u5230 Add block \u4E2D"},{id:"61-\u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B-add-block-\u4E2D",depth:4,title:"6.1 \u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B Add block \u4E2D"},{id:"62-\u6DFB\u52A0\u5230\u5F39\u7A97-add-block-\u4E2D",depth:4,title:"6.2 \u6DFB\u52A0\u5230\u5F39\u7A97 Add block \u4E2D"},{id:"63-\u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF-add-block-\u4E2D",depth:4,title:"6.3 \u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF Add block \u4E2D"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],fm=[{value:"NocoBase has many ",paraId:0,tocIndex:1},{value:"Add block",paraId:0,tocIndex:1},{value:" buttons used to add blocks to the interface. Some of these blocks are related to data tables and are referred to as Data Blocks, while others that are not related to data tables are called Simple Blocks.",paraId:0,tocIndex:1},{value:"However, the existing block types may not fully meet our needs, so we may need to custom-develop some blocks according to our requirements. This article specifically explains how to create Data Blocks.",paraId:1,tocIndex:1},{value:"In this example, we will create an ",paraId:2,tocIndex:2},{value:"Info",paraId:2,tocIndex:2},{value:" block and add it to the ",paraId:2,tocIndex:2},{value:"Page",paraId:2,tocIndex:2},{value:", ",paraId:2,tocIndex:2},{value:"Table",paraId:2,tocIndex:2},{value:", and the mobile ",paraId:2,tocIndex:2},{value:"Add block",paraId:2,tocIndex:2},{value:" sections.",paraId:2,tocIndex:2},{value:"This example mainly demonstrates the usage of the initializer. For more information on block extensions, refer to the ",paraId:3,tocIndex:2},{value:"Block Extension",paraId:4,tocIndex:2},{value:" documentation.",paraId:3,tocIndex:2},{value:"The complete sample code for this document can be found in the ",paraId:5,tocIndex:2},{value:"plugin-samples repository",paraId:5,tocIndex:2},{value:".",paraId:5,tocIndex:2},{value:` `,paraId:6},{value:"Following the instructions in the ",paraId:7,tocIndex:3},{value:"Creating Your First Plugin",paraId:8,tocIndex:3},{value:" document, if you don't have a project yet, you can create one first. If you already have a project or have cloned the source code, skip this step.",paraId:7,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -4097,20 +4149,20 @@ export class PluginDataBlockInitializerClient extends Plugin { export default PluginDataBlockInitializerClient; `,paraId:97,tocIndex:22},{value:"\u5982\u679C\u9700\u8981\u66F4\u591A\u7684 ",paraId:98,tocIndex:22},{value:"Add block",paraId:98,tocIndex:22},{value:"\uFF0C\u53EF\u4EE5\u7EE7\u7EED\u6DFB\u52A0\uFF0C\u53EA\u9700\u8981\u77E5\u9053\u5BF9\u5E94\u7684 ",paraId:98,tocIndex:22},{value:"name",paraId:98,tocIndex:22},{value:" \u5373\u53EF\u3002",paraId:98,tocIndex:22},{value:"\u6309\u7167 ",paraId:99,tocIndex:23},{value:"\u6784\u5EFA\u5E76\u6253\u5305\u63D2\u4EF6",paraId:100,tocIndex:23},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6253\u5305\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883\u3002",paraId:99,tocIndex:23},{value:"\u5982\u679C\u662F clone \u7684\u6E90\u7801\uFF0C\u9700\u8981\u5148\u6267\u884C\u4E00\u6B21\u5168\u91CF build\uFF0C\u5C06\u63D2\u4EF6\u7684\u4F9D\u8D56\u4E5F\u6784\u5EFA\u597D\u3002",paraId:101,tocIndex:23},{value:`yarn build `,paraId:102,tocIndex:23},{value:"\u5982\u679C\u662F\u4F7F\u7528\u7684 ",paraId:103,tocIndex:23},{value:"create-nocobase-app",paraId:103,tocIndex:23},{value:" \u521B\u5EFA\u7684\u9879\u76EE\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A",paraId:103,tocIndex:23},{value:`yarn build @nocobase-sample/plugin-initializer-block-data --tar -`,paraId:104,tocIndex:23},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:105,tocIndex:23},{value:"storage/tar/@nocobase-sample/plugin-initializer-block-data.tar.gz",paraId:105,tocIndex:23},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:105,tocIndex:23},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:106,tocIndex:23},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:105,tocIndex:23}],xm={},gm={title:"\u7F16\u8F91",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/edit.md",lastUpdated:1732240239e3,description:"\u7F16\u8F91\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5BF9\u6570\u636E\u8FDB\u884C\u4FEE\u6539\uFF0C\u901A\u5E38\u914D\u7F6E\u8868\u5355\u533A\u5757"},bm=[{id:"\u7F16\u8F91",depth:1,title:"\u7F16\u8F91"}],ym=[{value:"\u7F16\u8F91\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5BF9\u6570\u636E\u8FDB\u884C\u4FEE\u6539\uFF0C\u901A\u5E38\u914D\u7F6E\u8868\u5355\u533A\u5757",paraId:0,tocIndex:0}],wm={},km={title:"\u67E5\u770B",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/view.md",lastUpdated:1732240239e3,description:"\u8BE6\u60C5\u64CD\u4F5C\u7528\u4E8E\u67E5\u770B\u6570\u636E\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u901A\u5E38\u914D\u7F6E\u8BE6\u60C5\u533A\u5757,\u8BE6\u60C5\u533A\u5757"},Sm=[{id:"\u67E5\u770B",depth:1,title:"\u67E5\u770B"}],Um=[{value:"\u8BE6\u60C5\u64CD\u4F5C\u7528\u4E8E\u67E5\u770B\u6570\u636E\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u901A\u5E38\u914D\u7F6E\u8BE6\u60C5\u533A\u5757,\u8BE6\u60C5\u533A\u5757",paraId:0,tocIndex:0}],Pm={},Tm={title:"\u533A\u5757",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/blocks/index.md",lastUpdated:1732240239e3,description:"\u533A\u5757\u662F\u5185\u5BB9\u7684\u8F7D\u4F53\uFF0C\u53EF\u4EE5\u653E\u7F6E\u4E8E\u9875\u9762\uFF08Page\uFF09\u3001\u5BF9\u8BDD\u6846\uFF08Modal\uFF09\u6216\u62BD\u5C49\uFF08Drawer\uFF09\u91CC\uFF0C\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u81EA\u7531\u62D6\u62FD\u6392\u5217\u3002"},Cm=[{id:"\u533A\u5757",depth:1,title:"\u533A\u5757"},{id:"\u6DFB\u52A0\u533A\u5757",depth:2,title:"\u6DFB\u52A0\u533A\u5757"},{id:"\u9875\u9762\u91CC\u7684\u533A\u5757",depth:3,title:"\u9875\u9762\u91CC\u7684\u533A\u5757"},{id:"\u5F39\u7A97\u5BF9\u8BDD\u6846\u6216\u62BD\u5C49\u91CC\u7684\u533A\u5757",depth:3,title:"\u5F39\u7A97\uFF08\u5BF9\u8BDD\u6846\u6216\u62BD\u5C49\uFF09\u91CC\u7684\u533A\u5757"},{id:"\u62BD\u5C49",depth:4,title:"\u62BD\u5C49"},{id:"\u5BF9\u8BDD\u6846",depth:4,title:"\u5BF9\u8BDD\u6846"},{id:"\u533A\u5757\u7684\u8BBE\u8BA1\u5668",depth:2,title:"\u533A\u5757\u7684\u8BBE\u8BA1\u5668"},{id:"\u533A\u5757\u5E03\u5C40",depth:2,title:"\u533A\u5757\u5E03\u5C40"},{id:"\u533A\u5757\u6A21\u677F",depth:2,title:"\u533A\u5757\u6A21\u677F"},{id:"\u5982\u4F55\u6DFB\u52A0\u548C\u4F7F\u7528\u6A21\u677F",depth:3,title:"\u5982\u4F55\u6DFB\u52A0\u548C\u4F7F\u7528\u6A21\u677F\uFF1F"},{id:"\u590D\u5236\u548C\u5F15\u7528\u7684\u533A\u522B",depth:3,title:"\u590D\u5236\u548C\u5F15\u7528\u7684\u533A\u522B"},{id:"\u533A\u5757\u7C7B\u578B",depth:2,title:"\u533A\u5757\u7C7B\u578B"},{id:"\u6570\u636E\u533A\u5757",depth:3,title:"\u6570\u636E\u533A\u5757"},{id:"\u7B5B\u9009\u533A\u5757",depth:3,title:"\u7B5B\u9009\u533A\u5757"},{id:"\u5173\u7CFB\u533A\u5757",depth:3,title:"\u5173\u7CFB\u533A\u5757"},{id:"\u5176\u4ED6\u533A\u5757",depth:3,title:"\u5176\u4ED6\u533A\u5757"},{id:"\u7B5B\u9009\u8054\u52A8",depth:2,title:"\u7B5B\u9009\u8054\u52A8"}],Am=[{value:"\u533A\u5757\u662F\u5185\u5BB9\u7684\u8F7D\u4F53\uFF0C\u53EF\u4EE5\u653E\u7F6E\u4E8E\u9875\u9762\uFF08Page\uFF09\u3001\u5BF9\u8BDD\u6846\uFF08Modal\uFF09\u6216\u62BD\u5C49\uFF08Drawer\uFF09\u91CC\uFF0C\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u81EA\u7531\u62D6\u62FD\u6392\u5217\u3002",paraId:0,tocIndex:0},{value:"\u533A\u5757\u53EF\u4EE5\u653E\u7F6E\u4E8E\u9875\u9762\uFF08Page\uFF09\u3001\u5BF9\u8BDD\u6846\uFF08Modal\uFF09\u6216\u62BD\u5C49\uFF08Drawer\uFF09\u91CC",paraId:1,tocIndex:1},{value:"\u76EE\u524D\u9875\u9762\u91CC\u7684\u533A\u5757\u7C7B\u578B\u5305\u62EC\uFF1A\u6570\u636E\u533A\u5757\u3001\u7B5B\u9009\u533A\u5757\u3001\u5176\u4ED6\u533A\u5757",paraId:2,tocIndex:2},{value:"\u5F39\u7A97\u6709\u5BF9\u8BDD\u6846\u548C\u62BD\u5C49\u4E24\u79CD\uFF0C\u548C\u9875\u9762\u4E00\u6837\u4E5F\u53EF\u4EE5\u6DFB\u52A0\u533A\u5757\uFF0C\u533A\u522B\u5728\u4E8E\u5F39\u7A97\u91CC\u7684\u533A\u5757\u901A\u5E38\u4E3A\u5355\u6761\u8BB0\u5F55\u7684\u6DFB\u52A0\u3001\u7F16\u8F91\u6216\u67E5\u770B\u7B49\uFF0C\u533A\u5757\u7C7B\u578B\u5305\u62EC\u5F53\u524D\u6570\u636E\u533A\u5757\u3001\u5173\u7CFB\u533A\u5757\u3001\u5176\u4ED6\u533A\u5757\u3002",paraId:3,tocIndex:3},{value:"\u6BCF\u4E2A\u533A\u5757\u53F3\u4E0A\u89D2\u90FD\u6709\u4E09\u4E2A\u5C0F\u56FE\u6807\uFF0C\u4ECE\u5DE6\u5230\u53F3\u5206\u522B\u4E3A\uFF1A",paraId:4,tocIndex:6},{value:"\u62D6\u62FD\u5E03\u5C40",paraId:5,tocIndex:6},{value:"\u5FEB\u6377\u6DFB\u52A0\u533A\u5757",paraId:5,tocIndex:6},{value:"\u533A\u5757\u53C2\u6570\u914D\u7F6E",paraId:5,tocIndex:6},{value:"\u7B80\u5355\u7684\u533A\u5757\u6240\u6709\u7684\u914D\u7F6E\u9879\u90FD\u96C6\u4E2D\u5728\u300C\u533A\u5757\u53C2\u6570\u914D\u7F6E\u300D\u91CC\uFF0C\u5982 Markdown",paraId:6,tocIndex:6},{value:"\u590D\u6742\u7684\u6570\u636E\u7C7B\u578B\u533A\u5757\u8FD8\u4F1A\u63D0\u4F9B\u72EC\u7ACB\u7684\u5185\u5D4C\u7684\u300C\u914D\u7F6E\u5B57\u6BB5\u300D\u548C\u300C\u914D\u7F6E\u64CD\u4F5C\u300D",paraId:7,tocIndex:6},{value:"\u9664\u6B64\u4E4B\u5916\uFF0C\u4E5F\u53EF\u4EE5\u81EA\u7531\u53D1\u6325\uFF0C\u63D0\u4F9B\u66F4\u591A\u5D4C\u5957\u7684\u53EF\u80FD\uFF0C\u5982\u56FE\u8868\u533A\u5757",paraId:8,tocIndex:6},{value:"\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u901A\u8FC7\u62D6\u62FD\u8C03\u6574\u5E03\u5C40",paraId:9,tocIndex:7},{value:"\u53EF\u4EE5\u5C06\u4E00\u4E2A\u6570\u636E\u7C7B\u578B\u533A\u5757\u4FDD\u5B58\u4E3A\u6A21\u677F\uFF0C\u4EE5\u540E\u6DFB\u52A0\u533A\u5757\u65F6\u53EF\u4EE5\u76F4\u63A5\u590D\u5236\u6216\u5F15\u7528\u8FD9\u4E2A\u6A21\u677F\u3002\u6BD4\u5982\uFF0C\u4E00\u4E2A\u6570\u636E\u8868\u7684\u8868\u5355\uFF0C\u65E2\u7528\u4E8E\u65B0\u589E\u6570\u636E\uFF0C\u53C8\u7528\u4E8E\u7F16\u8F91\u6570\u636E\uFF0C\u90A3\u5C31\u53EF\u4EE5\u5C06\u8FD9\u4E2A\u8868\u5355\u4FDD\u5B58\u4E3A\u6A21\u677F\uFF0C\u5728\u65B0\u589E\u6570\u636E\u548C\u7F16\u8F91\u6570\u636E\u7684\u754C\u9762\u91CC\u5F15\u7528\u5B83\u3002",paraId:10,tocIndex:8},{value:"\u5C06\u6570\u636E\u533A\u5757\u4FDD\u5B58\u4E3A\u533A\u5757\u6A21\u677F\uFF08\u53EA\u6709\u6570\u636E\u7C7B\u578B\u7684\u533A\u5757\u624D\u6709\u8FD9\u4E2A\u914D\u7F6E\u9879\uFF09",paraId:11,tocIndex:9},{value:"\u6DFB\u52A0\u533A\u5757\u65F6\uFF0C\u9009\u62E9\u590D\u5236\u6216\u5F15\u7528\u6A21\u677F",paraId:12,tocIndex:9},{value:"\u590D\u5236\u662F\u57FA\u4E8E\u533A\u5757\u6A21\u677F\u521B\u5EFA\u7684\u5168\u65B0\u533A\u5757\uFF0C\u533A\u5757\u6709\u8C03\u6574\u4E0D\u5F71\u54CD\u6A21\u5757\uFF1B\u5F15\u7528\u662F\u76F4\u63A5\u4F7F\u7528\u533A\u5757\u6A21\u677F\uFF0C\u533A\u5757\u8C03\u6574\u4F1A\u6539\u53D8\u6A21\u677F\uFF0C\u6240\u6709\u5F15\u7528\u4E86\u5F53\u524D\u6A21\u677F\u7684\u533A\u5757\u90FD\u4F1A\u4EA7\u751F\u53D8\u5316\u3002",paraId:13,tocIndex:10},{value:"NocoBase \u9ED8\u8BA4\u5C06\u533A\u5757\u5206\u4E3A\u56DB\u79CD\u7C7B\u578B\uFF1A",paraId:14,tocIndex:11},{value:"\u6570\u636E\u533A\u5757\uFF1A\u53EF\u4EE5\u5C06 Collection \u7684\u6570\u636E\u5C55\u793A\u5728\u533A\u5757\u91CC",paraId:15,tocIndex:11},{value:"\u7B5B\u9009\u533A\u5757\uFF1A\u76EE\u524D\u53EA\u80FD\u5728\u9875\u9762\u91CC\u6DFB\u52A0\uFF0C\u53EF\u7528\u4E8E\u6570\u636E\u533A\u5757\u7684\u6570\u636E\u7B5B\u9009",paraId:15,tocIndex:11},{value:"\u5173\u7CFB\u533A\u5757\uFF1A\u76EE\u524D\u53EA\u80FD\u5728\u5F39\u7A97\u91CC\u6DFB\u52A0\uFF0C\u53EF\u7528\u4E8E\u5F53\u524D\u8BB0\u5F55\u7684\u5173\u7CFB\u6570\u636E\u7684\u589E\u5220\u6539\u67E5\u7B49",paraId:15,tocIndex:11},{value:"\u5176\u4ED6\u533A\u5757\uFF1A\u7528\u4E8E\u653E\u7F6E\u72EC\u7ACB\u533A\u5757\uFF0C\u5982 Markdown\u3001\u5BA1\u8BA1\u65E5\u5FD7\u533A\u5757\u3001\u5DE5\u4F5C\u6D41\u5F85\u529E\u533A\u5757\u7B49",paraId:15,tocIndex:11}],qm={},Em={title:"\u5B57\u6BB5",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/fields/index.md",lastUpdated:1732240239e3,description:"\u5728 UI \u91CC\uFF0C\u5B57\u6BB5\u5373\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u662F\u5355\u5143\u6570\u636E\u7684\u8F7D\u4F53\uFF0C\u4E0D\u540C\u7C7B\u578B\u6570\u636E\u4EE5\u4E0D\u540C\u5B57\u6BB5\u7EC4\u4EF6\u5448\u73B0\u3002\u5B57\u6BB5\u53EA\u80FD\u9644\u5C5E\u4E8E\u533A\u5757\uFF0C\u4E0D\u80FD\u72EC\u7ACB\u4F7F\u7528\u3002"},Dm=[{id:"\u5B57\u6BB5",depth:1,title:"\u5B57\u6BB5"},{id:"\u533A\u5757\u91CC\u7684\u5B57\u6BB5",depth:2,title:"\u533A\u5757\u91CC\u7684\u5B57\u6BB5"},{id:"\u5B57\u6BB5\u7684\u8BBE\u8BA1\u5668\u5DE5\u5177\u680F",depth:2,title:"\u5B57\u6BB5\u7684\u8BBE\u8BA1\u5668\uFF08\u5DE5\u5177\u680F\uFF09"},{id:"\u5B57\u6BB5\u7684\u5E03\u5C40",depth:2,title:"\u5B57\u6BB5\u7684\u5E03\u5C40"},{id:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E",depth:2,title:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E"},{id:"\u9A8C\u8BC1\u89C4\u5219",depth:3,title:"\u9A8C\u8BC1\u89C4\u5219"},{id:"\u9ED8\u8BA4\u503C",depth:3,title:"\u9ED8\u8BA4\u503C"},{id:"\u663E\u793A\u6A21\u5F0F",depth:3,title:"\u663E\u793A\u6A21\u5F0F"},{id:"\u5B57\u6BB5\u7684\u7C7B\u578B",depth:2,title:"\u5B57\u6BB5\u7684\u7C7B\u578B"}],Om=[{value:"\u5728 UI \u91CC\uFF0C\u5B57\u6BB5\u5373\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u662F\u5355\u5143\u6570\u636E\u7684\u8F7D\u4F53\uFF0C\u4E0D\u540C\u7C7B\u578B\u6570\u636E\u4EE5\u4E0D\u540C\u5B57\u6BB5\u7EC4\u4EF6\u5448\u73B0\u3002\u5B57\u6BB5\u53EA\u80FD\u9644\u5C5E\u4E8E\u533A\u5757\uFF0C\u4E0D\u80FD\u72EC\u7ACB\u4F7F\u7528\u3002",paraId:0,tocIndex:0},{value:"\u5B57\u6BB5\u4E00\u822C\u4E0D\u5355\u72EC\u4F7F\u7528\uFF0C\u800C\u662F\u4F5C\u4E3A\u6570\u636E\u7C7B\u578B\u533A\u5757\u7684\u5B50\u5143\u7D20\u5B58\u5728\u3002\u6570\u636E\u7C7B\u578B\u7684\u533A\u5757\u901A\u5E38\u90FD\u6709\u300C\u914D\u7F6E\u5B57\u6BB5\u300D\uFF0C\u5B57\u6BB5\u5217\u8868\u7531\u5F53\u524D\u6570\u636E\u8868\u63D0\u4F9B\u3002",paraId:1,tocIndex:1},{value:"\u548C\u533A\u5757\u4E00\u6837\uFF0C\u5B57\u6BB5\u7EC4\u4EF6\u7684\u53F3\u4E0A\u89D2\u4E5F\u6709\u4E09\u4E2A\u56FE\u6807\uFF0C\u5206\u522B\u4E3A\uFF1A",paraId:2,tocIndex:2},{value:"\u62D6\u62FD\u5E03\u5C40",paraId:3,tocIndex:2},{value:"\u5FEB\u6377\u6DFB\u52A0\u5B57\u6BB5",paraId:3,tocIndex:2},{value:"\u5B57\u6BB5\u53C2\u6570\u914D\u7F6E",paraId:3,tocIndex:2},{value:"\u901A\u8FC7\u62D6\u62FD\u79FB\u52A8\u53EF\u4EE5\u81EA\u5B9A\u4E49\u8C03\u6574\u5B57\u6BB5\u5728\u533A\u5757\u4E2D\u7684\u5E03\u5C40",paraId:4,tocIndex:3},{value:"\u7F16\u8F91\u5B57\u6BB5\u6807\u9898",paraId:5,tocIndex:4},{value:"\u663E\u793A\u6807\u9898",paraId:5,tocIndex:4},{value:"\u7F16\u8F91\u63CF\u8FF0",paraId:5,tocIndex:4},{value:"\u5FC5\u586B",paraId:5,tocIndex:4},{value:"\u9A8C\u8BC1\u89C4\u5219",paraId:5,tocIndex:4},{value:"\u9ED8\u8BA4\u503C",paraId:5,tocIndex:4},{value:"\u663E\u793A\u6A21\u5F0F",paraId:5,tocIndex:4},{value:"\u91CD\u8981\u53C2\u6570\u914D\u7F6E\u8BF4\u660E\uFF1A",paraId:6,tocIndex:4},{value:"\u5F85\u8865\u5145",paraId:7,tocIndex:5},{value:"\u5F85\u8865\u5145",paraId:8,tocIndex:6},{value:"\u548C\u533A\u5757\u4E0D\u540C\u7684\u662F\u5B57\u6BB5\u7EC4\u4EF6\u6709\u4E09\u79CD\u663E\u793A\u6A21\u5F0F\uFF1A",paraId:9,tocIndex:7},{value:"\u53EF\u7F16\u8F91 - editable",paraId:10,tocIndex:7},{value:"\u53EA\u8BFB\uFF08\u4E0D\u53EF\u7F16\u8F91\uFF09- readonly",paraId:10,tocIndex:7},{value:"\u53EA\u8BFB\uFF08\u9605\u8BFB\u6A21\u5F0F\uFF09- read friendly",paraId:10,tocIndex:7},{value:"\u533A\u5757\u7684\u5B57\u6BB5\u7531\u6570\u636E\u8868\u63D0\u4F9B\uFF0C\u66F4\u591A\u5B57\u6BB5\u7C7B\u578B\u7684\u914D\u7F6E\u53C2\u8003 ",paraId:11,tocIndex:8},{value:"\u6570\u636E\u8868\u5B57\u6BB5\u7C7B\u578B",paraId:11,tocIndex:8}],Rm={},Mm={title:"Git source code",toc:"menu",filename:"docs/en-US/welcome/getting-started/deployment/git-clone.md",lastUpdated:1732240239e3,description:"The other processes are no different from the Git source code."},Lm=[{id:"git-source-code",depth:1,title:"Git source code"},{id:"managing-application-processes",depth:2,title:"Managing Application Processes"},{id:"configuring-nginx",depth:2,title:"Configuring Nginx"}],Nm=[{value:"The other processes are no different from the ",paraId:0,tocIndex:0},{value:"Git source code",paraId:1,tocIndex:0},{value:".",paraId:0,tocIndex:0},{value:"Points to Note:",paraId:2,tocIndex:0},{value:"TZ",paraId:3,tocIndex:0},{value:" is used to set the application's time zone, with the default being the system's time zone;",paraId:3,tocIndex:0},{value:"APP_KEY",paraId:3,tocIndex:0},{value:" is the application's secret key, used for generating user tokens and so on (if APP_KEY is changed, the old tokens will also become invalid). It can be any random string. Please change it to your own secret key and ensure it is not disclosed to the public.",paraId:3,tocIndex:0},{value:"DB_*",paraId:3,tocIndex:0},{value:" is related to the database. If it is not the default database service in the example, please modify it according to the actual situation;",paraId:3,tocIndex:0},{value:"When deploying in a production environment, ",paraId:3,tocIndex:0},{value:"APP_ENV=production",paraId:3,tocIndex:0},{value:";",paraId:3,tocIndex:0},{value:"When deploying on a subpath, you need to configure ",paraId:3,tocIndex:0},{value:"APP_PUBLIC_PATH",paraId:3,tocIndex:0},{value:", such as ",paraId:3,tocIndex:0},{value:"APP_PUBLIC_PATH=/nocobase/",paraId:3,tocIndex:0},{value:".",paraId:3,tocIndex:0},{value:"When deploying in a production environment, to reduce volume, you can install only the necessary dependencies with ",paraId:4,tocIndex:0},{value:"yarn install --production",paraId:4,tocIndex:0},{value:">>> For more information, view the complete 'Environment Variables' <<<",paraId:5},{value:"NocoBase has already built-in ",paraId:6,tocIndex:1},{value:"PM2",paraId:6,tocIndex:1},{value:" for managing application processes. In a production environment, you can directly use ",paraId:6,tocIndex:1},{value:"yarn start",paraId:6,tocIndex:1},{value:". If you need it to run in the background, just add the ",paraId:6,tocIndex:1},{value:"-d",paraId:6,tocIndex:1},{value:" parameter, for example:",paraId:6,tocIndex:1},{value:`# Run in the background +`,paraId:104,tocIndex:23},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:105,tocIndex:23},{value:"storage/tar/@nocobase-sample/plugin-initializer-block-data.tar.gz",paraId:105,tocIndex:23},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:105,tocIndex:23},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:106,tocIndex:23},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:105,tocIndex:23}],xm={},gm={title:"\u7F16\u8F91",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/edit.md",lastUpdated:173254844e4,description:"\u7F16\u8F91\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5BF9\u6570\u636E\u8FDB\u884C\u4FEE\u6539\uFF0C\u901A\u5E38\u914D\u7F6E\u8868\u5355\u533A\u5757"},bm=[{id:"\u7F16\u8F91",depth:1,title:"\u7F16\u8F91"}],ym=[{value:"\u7F16\u8F91\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5BF9\u6570\u636E\u8FDB\u884C\u4FEE\u6539\uFF0C\u901A\u5E38\u914D\u7F6E\u8868\u5355\u533A\u5757",paraId:0,tocIndex:0}],wm={},km={title:"\u67E5\u770B",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/actions/view.md",lastUpdated:173254844e4,description:"\u8BE6\u60C5\u64CD\u4F5C\u7528\u4E8E\u67E5\u770B\u6570\u636E\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u901A\u5E38\u914D\u7F6E\u8BE6\u60C5\u533A\u5757,\u8BE6\u60C5\u533A\u5757"},Sm=[{id:"\u67E5\u770B",depth:1,title:"\u67E5\u770B"}],Um=[{value:"\u8BE6\u60C5\u64CD\u4F5C\u7528\u4E8E\u67E5\u770B\u6570\u636E\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u901A\u5E38\u914D\u7F6E\u8BE6\u60C5\u533A\u5757,\u8BE6\u60C5\u533A\u5757",paraId:0,tocIndex:0}],Pm={},Tm={title:"\u533A\u5757",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/blocks/index.md",lastUpdated:173254844e4,description:"\u533A\u5757\u662F\u5185\u5BB9\u7684\u8F7D\u4F53\uFF0C\u53EF\u4EE5\u653E\u7F6E\u4E8E\u9875\u9762\uFF08Page\uFF09\u3001\u5BF9\u8BDD\u6846\uFF08Modal\uFF09\u6216\u62BD\u5C49\uFF08Drawer\uFF09\u91CC\uFF0C\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u81EA\u7531\u62D6\u62FD\u6392\u5217\u3002"},Cm=[{id:"\u533A\u5757",depth:1,title:"\u533A\u5757"},{id:"\u6DFB\u52A0\u533A\u5757",depth:2,title:"\u6DFB\u52A0\u533A\u5757"},{id:"\u9875\u9762\u91CC\u7684\u533A\u5757",depth:3,title:"\u9875\u9762\u91CC\u7684\u533A\u5757"},{id:"\u5F39\u7A97\u5BF9\u8BDD\u6846\u6216\u62BD\u5C49\u91CC\u7684\u533A\u5757",depth:3,title:"\u5F39\u7A97\uFF08\u5BF9\u8BDD\u6846\u6216\u62BD\u5C49\uFF09\u91CC\u7684\u533A\u5757"},{id:"\u62BD\u5C49",depth:4,title:"\u62BD\u5C49"},{id:"\u5BF9\u8BDD\u6846",depth:4,title:"\u5BF9\u8BDD\u6846"},{id:"\u533A\u5757\u7684\u8BBE\u8BA1\u5668",depth:2,title:"\u533A\u5757\u7684\u8BBE\u8BA1\u5668"},{id:"\u533A\u5757\u5E03\u5C40",depth:2,title:"\u533A\u5757\u5E03\u5C40"},{id:"\u533A\u5757\u6A21\u677F",depth:2,title:"\u533A\u5757\u6A21\u677F"},{id:"\u5982\u4F55\u6DFB\u52A0\u548C\u4F7F\u7528\u6A21\u677F",depth:3,title:"\u5982\u4F55\u6DFB\u52A0\u548C\u4F7F\u7528\u6A21\u677F\uFF1F"},{id:"\u590D\u5236\u548C\u5F15\u7528\u7684\u533A\u522B",depth:3,title:"\u590D\u5236\u548C\u5F15\u7528\u7684\u533A\u522B"},{id:"\u533A\u5757\u7C7B\u578B",depth:2,title:"\u533A\u5757\u7C7B\u578B"},{id:"\u6570\u636E\u533A\u5757",depth:3,title:"\u6570\u636E\u533A\u5757"},{id:"\u7B5B\u9009\u533A\u5757",depth:3,title:"\u7B5B\u9009\u533A\u5757"},{id:"\u5173\u7CFB\u533A\u5757",depth:3,title:"\u5173\u7CFB\u533A\u5757"},{id:"\u5176\u4ED6\u533A\u5757",depth:3,title:"\u5176\u4ED6\u533A\u5757"},{id:"\u7B5B\u9009\u8054\u52A8",depth:2,title:"\u7B5B\u9009\u8054\u52A8"}],Am=[{value:"\u533A\u5757\u662F\u5185\u5BB9\u7684\u8F7D\u4F53\uFF0C\u53EF\u4EE5\u653E\u7F6E\u4E8E\u9875\u9762\uFF08Page\uFF09\u3001\u5BF9\u8BDD\u6846\uFF08Modal\uFF09\u6216\u62BD\u5C49\uFF08Drawer\uFF09\u91CC\uFF0C\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u81EA\u7531\u62D6\u62FD\u6392\u5217\u3002",paraId:0,tocIndex:0},{value:"\u533A\u5757\u53EF\u4EE5\u653E\u7F6E\u4E8E\u9875\u9762\uFF08Page\uFF09\u3001\u5BF9\u8BDD\u6846\uFF08Modal\uFF09\u6216\u62BD\u5C49\uFF08Drawer\uFF09\u91CC",paraId:1,tocIndex:1},{value:"\u76EE\u524D\u9875\u9762\u91CC\u7684\u533A\u5757\u7C7B\u578B\u5305\u62EC\uFF1A\u6570\u636E\u533A\u5757\u3001\u7B5B\u9009\u533A\u5757\u3001\u5176\u4ED6\u533A\u5757",paraId:2,tocIndex:2},{value:"\u5F39\u7A97\u6709\u5BF9\u8BDD\u6846\u548C\u62BD\u5C49\u4E24\u79CD\uFF0C\u548C\u9875\u9762\u4E00\u6837\u4E5F\u53EF\u4EE5\u6DFB\u52A0\u533A\u5757\uFF0C\u533A\u522B\u5728\u4E8E\u5F39\u7A97\u91CC\u7684\u533A\u5757\u901A\u5E38\u4E3A\u5355\u6761\u8BB0\u5F55\u7684\u6DFB\u52A0\u3001\u7F16\u8F91\u6216\u67E5\u770B\u7B49\uFF0C\u533A\u5757\u7C7B\u578B\u5305\u62EC\u5F53\u524D\u6570\u636E\u533A\u5757\u3001\u5173\u7CFB\u533A\u5757\u3001\u5176\u4ED6\u533A\u5757\u3002",paraId:3,tocIndex:3},{value:"\u6BCF\u4E2A\u533A\u5757\u53F3\u4E0A\u89D2\u90FD\u6709\u4E09\u4E2A\u5C0F\u56FE\u6807\uFF0C\u4ECE\u5DE6\u5230\u53F3\u5206\u522B\u4E3A\uFF1A",paraId:4,tocIndex:6},{value:"\u62D6\u62FD\u5E03\u5C40",paraId:5,tocIndex:6},{value:"\u5FEB\u6377\u6DFB\u52A0\u533A\u5757",paraId:5,tocIndex:6},{value:"\u533A\u5757\u53C2\u6570\u914D\u7F6E",paraId:5,tocIndex:6},{value:"\u7B80\u5355\u7684\u533A\u5757\u6240\u6709\u7684\u914D\u7F6E\u9879\u90FD\u96C6\u4E2D\u5728\u300C\u533A\u5757\u53C2\u6570\u914D\u7F6E\u300D\u91CC\uFF0C\u5982 Markdown",paraId:6,tocIndex:6},{value:"\u590D\u6742\u7684\u6570\u636E\u7C7B\u578B\u533A\u5757\u8FD8\u4F1A\u63D0\u4F9B\u72EC\u7ACB\u7684\u5185\u5D4C\u7684\u300C\u914D\u7F6E\u5B57\u6BB5\u300D\u548C\u300C\u914D\u7F6E\u64CD\u4F5C\u300D",paraId:7,tocIndex:6},{value:"\u9664\u6B64\u4E4B\u5916\uFF0C\u4E5F\u53EF\u4EE5\u81EA\u7531\u53D1\u6325\uFF0C\u63D0\u4F9B\u66F4\u591A\u5D4C\u5957\u7684\u53EF\u80FD\uFF0C\u5982\u56FE\u8868\u533A\u5757",paraId:8,tocIndex:6},{value:"\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u901A\u8FC7\u62D6\u62FD\u8C03\u6574\u5E03\u5C40",paraId:9,tocIndex:7},{value:"\u53EF\u4EE5\u5C06\u4E00\u4E2A\u6570\u636E\u7C7B\u578B\u533A\u5757\u4FDD\u5B58\u4E3A\u6A21\u677F\uFF0C\u4EE5\u540E\u6DFB\u52A0\u533A\u5757\u65F6\u53EF\u4EE5\u76F4\u63A5\u590D\u5236\u6216\u5F15\u7528\u8FD9\u4E2A\u6A21\u677F\u3002\u6BD4\u5982\uFF0C\u4E00\u4E2A\u6570\u636E\u8868\u7684\u8868\u5355\uFF0C\u65E2\u7528\u4E8E\u65B0\u589E\u6570\u636E\uFF0C\u53C8\u7528\u4E8E\u7F16\u8F91\u6570\u636E\uFF0C\u90A3\u5C31\u53EF\u4EE5\u5C06\u8FD9\u4E2A\u8868\u5355\u4FDD\u5B58\u4E3A\u6A21\u677F\uFF0C\u5728\u65B0\u589E\u6570\u636E\u548C\u7F16\u8F91\u6570\u636E\u7684\u754C\u9762\u91CC\u5F15\u7528\u5B83\u3002",paraId:10,tocIndex:8},{value:"\u5C06\u6570\u636E\u533A\u5757\u4FDD\u5B58\u4E3A\u533A\u5757\u6A21\u677F\uFF08\u53EA\u6709\u6570\u636E\u7C7B\u578B\u7684\u533A\u5757\u624D\u6709\u8FD9\u4E2A\u914D\u7F6E\u9879\uFF09",paraId:11,tocIndex:9},{value:"\u6DFB\u52A0\u533A\u5757\u65F6\uFF0C\u9009\u62E9\u590D\u5236\u6216\u5F15\u7528\u6A21\u677F",paraId:12,tocIndex:9},{value:"\u590D\u5236\u662F\u57FA\u4E8E\u533A\u5757\u6A21\u677F\u521B\u5EFA\u7684\u5168\u65B0\u533A\u5757\uFF0C\u533A\u5757\u6709\u8C03\u6574\u4E0D\u5F71\u54CD\u6A21\u5757\uFF1B\u5F15\u7528\u662F\u76F4\u63A5\u4F7F\u7528\u533A\u5757\u6A21\u677F\uFF0C\u533A\u5757\u8C03\u6574\u4F1A\u6539\u53D8\u6A21\u677F\uFF0C\u6240\u6709\u5F15\u7528\u4E86\u5F53\u524D\u6A21\u677F\u7684\u533A\u5757\u90FD\u4F1A\u4EA7\u751F\u53D8\u5316\u3002",paraId:13,tocIndex:10},{value:"NocoBase \u9ED8\u8BA4\u5C06\u533A\u5757\u5206\u4E3A\u56DB\u79CD\u7C7B\u578B\uFF1A",paraId:14,tocIndex:11},{value:"\u6570\u636E\u533A\u5757\uFF1A\u53EF\u4EE5\u5C06 Collection \u7684\u6570\u636E\u5C55\u793A\u5728\u533A\u5757\u91CC",paraId:15,tocIndex:11},{value:"\u7B5B\u9009\u533A\u5757\uFF1A\u76EE\u524D\u53EA\u80FD\u5728\u9875\u9762\u91CC\u6DFB\u52A0\uFF0C\u53EF\u7528\u4E8E\u6570\u636E\u533A\u5757\u7684\u6570\u636E\u7B5B\u9009",paraId:15,tocIndex:11},{value:"\u5173\u7CFB\u533A\u5757\uFF1A\u76EE\u524D\u53EA\u80FD\u5728\u5F39\u7A97\u91CC\u6DFB\u52A0\uFF0C\u53EF\u7528\u4E8E\u5F53\u524D\u8BB0\u5F55\u7684\u5173\u7CFB\u6570\u636E\u7684\u589E\u5220\u6539\u67E5\u7B49",paraId:15,tocIndex:11},{value:"\u5176\u4ED6\u533A\u5757\uFF1A\u7528\u4E8E\u653E\u7F6E\u72EC\u7ACB\u533A\u5757\uFF0C\u5982 Markdown\u3001\u5BA1\u8BA1\u65E5\u5FD7\u533A\u5757\u3001\u5DE5\u4F5C\u6D41\u5F85\u529E\u533A\u5757\u7B49",paraId:15,tocIndex:11}],qm={},Em={title:"\u5B57\u6BB5",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/fields/index.md",lastUpdated:173254844e4,description:"\u5728 UI \u91CC\uFF0C\u5B57\u6BB5\u5373\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u662F\u5355\u5143\u6570\u636E\u7684\u8F7D\u4F53\uFF0C\u4E0D\u540C\u7C7B\u578B\u6570\u636E\u4EE5\u4E0D\u540C\u5B57\u6BB5\u7EC4\u4EF6\u5448\u73B0\u3002\u5B57\u6BB5\u53EA\u80FD\u9644\u5C5E\u4E8E\u533A\u5757\uFF0C\u4E0D\u80FD\u72EC\u7ACB\u4F7F\u7528\u3002"},Dm=[{id:"\u5B57\u6BB5",depth:1,title:"\u5B57\u6BB5"},{id:"\u533A\u5757\u91CC\u7684\u5B57\u6BB5",depth:2,title:"\u533A\u5757\u91CC\u7684\u5B57\u6BB5"},{id:"\u5B57\u6BB5\u7684\u8BBE\u8BA1\u5668\u5DE5\u5177\u680F",depth:2,title:"\u5B57\u6BB5\u7684\u8BBE\u8BA1\u5668\uFF08\u5DE5\u5177\u680F\uFF09"},{id:"\u5B57\u6BB5\u7684\u5E03\u5C40",depth:2,title:"\u5B57\u6BB5\u7684\u5E03\u5C40"},{id:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E",depth:2,title:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E"},{id:"\u9A8C\u8BC1\u89C4\u5219",depth:3,title:"\u9A8C\u8BC1\u89C4\u5219"},{id:"\u9ED8\u8BA4\u503C",depth:3,title:"\u9ED8\u8BA4\u503C"},{id:"\u663E\u793A\u6A21\u5F0F",depth:3,title:"\u663E\u793A\u6A21\u5F0F"},{id:"\u5B57\u6BB5\u7684\u7C7B\u578B",depth:2,title:"\u5B57\u6BB5\u7684\u7C7B\u578B"}],Om=[{value:"\u5728 UI \u91CC\uFF0C\u5B57\u6BB5\u5373\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u662F\u5355\u5143\u6570\u636E\u7684\u8F7D\u4F53\uFF0C\u4E0D\u540C\u7C7B\u578B\u6570\u636E\u4EE5\u4E0D\u540C\u5B57\u6BB5\u7EC4\u4EF6\u5448\u73B0\u3002\u5B57\u6BB5\u53EA\u80FD\u9644\u5C5E\u4E8E\u533A\u5757\uFF0C\u4E0D\u80FD\u72EC\u7ACB\u4F7F\u7528\u3002",paraId:0,tocIndex:0},{value:"\u5B57\u6BB5\u4E00\u822C\u4E0D\u5355\u72EC\u4F7F\u7528\uFF0C\u800C\u662F\u4F5C\u4E3A\u6570\u636E\u7C7B\u578B\u533A\u5757\u7684\u5B50\u5143\u7D20\u5B58\u5728\u3002\u6570\u636E\u7C7B\u578B\u7684\u533A\u5757\u901A\u5E38\u90FD\u6709\u300C\u914D\u7F6E\u5B57\u6BB5\u300D\uFF0C\u5B57\u6BB5\u5217\u8868\u7531\u5F53\u524D\u6570\u636E\u8868\u63D0\u4F9B\u3002",paraId:1,tocIndex:1},{value:"\u548C\u533A\u5757\u4E00\u6837\uFF0C\u5B57\u6BB5\u7EC4\u4EF6\u7684\u53F3\u4E0A\u89D2\u4E5F\u6709\u4E09\u4E2A\u56FE\u6807\uFF0C\u5206\u522B\u4E3A\uFF1A",paraId:2,tocIndex:2},{value:"\u62D6\u62FD\u5E03\u5C40",paraId:3,tocIndex:2},{value:"\u5FEB\u6377\u6DFB\u52A0\u5B57\u6BB5",paraId:3,tocIndex:2},{value:"\u5B57\u6BB5\u53C2\u6570\u914D\u7F6E",paraId:3,tocIndex:2},{value:"\u901A\u8FC7\u62D6\u62FD\u79FB\u52A8\u53EF\u4EE5\u81EA\u5B9A\u4E49\u8C03\u6574\u5B57\u6BB5\u5728\u533A\u5757\u4E2D\u7684\u5E03\u5C40",paraId:4,tocIndex:3},{value:"\u7F16\u8F91\u5B57\u6BB5\u6807\u9898",paraId:5,tocIndex:4},{value:"\u663E\u793A\u6807\u9898",paraId:5,tocIndex:4},{value:"\u7F16\u8F91\u63CF\u8FF0",paraId:5,tocIndex:4},{value:"\u5FC5\u586B",paraId:5,tocIndex:4},{value:"\u9A8C\u8BC1\u89C4\u5219",paraId:5,tocIndex:4},{value:"\u9ED8\u8BA4\u503C",paraId:5,tocIndex:4},{value:"\u663E\u793A\u6A21\u5F0F",paraId:5,tocIndex:4},{value:"\u91CD\u8981\u53C2\u6570\u914D\u7F6E\u8BF4\u660E\uFF1A",paraId:6,tocIndex:4},{value:"\u5F85\u8865\u5145",paraId:7,tocIndex:5},{value:"\u5F85\u8865\u5145",paraId:8,tocIndex:6},{value:"\u548C\u533A\u5757\u4E0D\u540C\u7684\u662F\u5B57\u6BB5\u7EC4\u4EF6\u6709\u4E09\u79CD\u663E\u793A\u6A21\u5F0F\uFF1A",paraId:9,tocIndex:7},{value:"\u53EF\u7F16\u8F91 - editable",paraId:10,tocIndex:7},{value:"\u53EA\u8BFB\uFF08\u4E0D\u53EF\u7F16\u8F91\uFF09- readonly",paraId:10,tocIndex:7},{value:"\u53EA\u8BFB\uFF08\u9605\u8BFB\u6A21\u5F0F\uFF09- read friendly",paraId:10,tocIndex:7},{value:"\u533A\u5757\u7684\u5B57\u6BB5\u7531\u6570\u636E\u8868\u63D0\u4F9B\uFF0C\u66F4\u591A\u5B57\u6BB5\u7C7B\u578B\u7684\u914D\u7F6E\u53C2\u8003 ",paraId:11,tocIndex:8},{value:"\u6570\u636E\u8868\u5B57\u6BB5\u7C7B\u578B",paraId:11,tocIndex:8}],Rm={},Mm={title:"Git source code",toc:"menu",filename:"docs/en-US/welcome/getting-started/deployment/git-clone.md",lastUpdated:173254844e4,description:"The other processes are no different from the Git source code."},Lm=[{id:"git-source-code",depth:1,title:"Git source code"},{id:"managing-application-processes",depth:2,title:"Managing Application Processes"},{id:"configuring-nginx",depth:2,title:"Configuring Nginx"}],Nm=[{value:"The other processes are no different from the ",paraId:0,tocIndex:0},{value:"Git source code",paraId:1,tocIndex:0},{value:".",paraId:0,tocIndex:0},{value:"Points to Note:",paraId:2,tocIndex:0},{value:"TZ",paraId:3,tocIndex:0},{value:" is used to set the application's time zone, with the default being the system's time zone;",paraId:3,tocIndex:0},{value:"APP_KEY",paraId:3,tocIndex:0},{value:" is the application's secret key, used for generating user tokens and so on (if APP_KEY is changed, the old tokens will also become invalid). It can be any random string. Please change it to your own secret key and ensure it is not disclosed to the public.",paraId:3,tocIndex:0},{value:"DB_*",paraId:3,tocIndex:0},{value:" is related to the database. If it is not the default database service in the example, please modify it according to the actual situation;",paraId:3,tocIndex:0},{value:"When deploying in a production environment, ",paraId:3,tocIndex:0},{value:"APP_ENV=production",paraId:3,tocIndex:0},{value:";",paraId:3,tocIndex:0},{value:"When deploying on a subpath, you need to configure ",paraId:3,tocIndex:0},{value:"APP_PUBLIC_PATH",paraId:3,tocIndex:0},{value:", such as ",paraId:3,tocIndex:0},{value:"APP_PUBLIC_PATH=/nocobase/",paraId:3,tocIndex:0},{value:".",paraId:3,tocIndex:0},{value:"When deploying in a production environment, to reduce volume, you can install only the necessary dependencies with ",paraId:4,tocIndex:0},{value:"yarn install --production",paraId:4,tocIndex:0},{value:">>> For more information, view the complete 'Environment Variables' <<<",paraId:5},{value:"NocoBase has already built-in ",paraId:6,tocIndex:1},{value:"PM2",paraId:6,tocIndex:1},{value:" for managing application processes. In a production environment, you can directly use ",paraId:6,tocIndex:1},{value:"yarn start",paraId:6,tocIndex:1},{value:". If you need it to run in the background, just add the ",paraId:6,tocIndex:1},{value:"-d",paraId:6,tocIndex:1},{value:" parameter, for example:",paraId:6,tocIndex:1},{value:`# Run in the background yarn start -d `,paraId:7,tocIndex:1},{value:"Restart",paraId:8,tocIndex:1},{value:`yarn nocobase pm2-restart `,paraId:9,tocIndex:1},{value:"Stop",paraId:10,tocIndex:1},{value:`yarn nocobase pm2-stop `,paraId:11,tocIndex:1},{value:"More PM2 commands",paraId:12,tocIndex:1},{value:`yarn nocobase pm2 -h `,paraId:13,tocIndex:1},{value:"In a production environment, you can consider having Nginx proxy the static files. NocoBase provides the ",paraId:14,tocIndex:2},{value:"create-nginx-conf",paraId:14,tocIndex:2},{value:" command to generate Nginx configuration files.",paraId:14,tocIndex:2},{value:`yarn nocobase create-nginx-conf `,paraId:15,tocIndex:2},{value:"The file path is ",paraId:16,tocIndex:2},{value:"./storage/nocobase.conf",paraId:16,tocIndex:2},{value:". Adjust it further according to the actual situation, and finally add it to ",paraId:16,tocIndex:2},{value:"/etc/nginx/sites-enabled",paraId:16,tocIndex:2},{value:", for example:",paraId:16,tocIndex:2},{value:`ln -s /app/nocobase/storage/nocobase.conf /etc/nginx/sites-enabled/nocobase.conf -`,paraId:17,tocIndex:2},{value:"Remarks",paraId:18,tocIndex:2},{value:"When deploying to a subpath, you need to configure the ",paraId:19,tocIndex:2},{value:"APP_PUBLIC_PATH",paraId:19,tocIndex:2},{value:" environment variable. After configuring, you need to re-execute the ",paraId:19,tocIndex:2},{value:"create-nginx-conf",paraId:19,tocIndex:2},{value:" command;",paraId:19,tocIndex:2},{value:"Modify the generated ",paraId:19,tocIndex:2},{value:"nocobase.conf",paraId:19,tocIndex:2},{value:" according to the actual situation, such as configuring the domain name, etc.;",paraId:19,tocIndex:2},{value:"/app/nocobase/",paraId:19,tocIndex:2},{value:" is the directory where the example application is located, and it needs to be adjusted according to the actual situation;",paraId:19,tocIndex:2},{value:"/etc/nginx/sites-enabled",paraId:19,tocIndex:2},{value:" is the default Nginx configuration path, the actual situation may vary, you can check it with ",paraId:19,tocIndex:2},{value:"nginx -V",paraId:19,tocIndex:2},{value:";",paraId:19,tocIndex:2},{value:"If you are not using Nginx, you can make some adjustments referring to the Nginx configuration.",paraId:19,tocIndex:2}],zm={},Fm={title:"SchemaComponent",toc:"menu",filename:"docs/en-US/api/client/schema-designer/schema-component.md",lastUpdated:1732240239e3},Bm=[{id:"schemacomponent",depth:1,title:"SchemaComponent"},{id:"core-components",depth:2,title:"Core Components"},{id:"schemacomponentprovider-",depth:3,title:""},{id:"schemacomponentoptions",depth:3,title:""},{id:"schemacomponent-1",depth:3,title:""},{id:"core-methods",depth:2,title:"Core Methods"},{id:"createdesignable",depth:3,title:"createDesignable()"},{id:"usedesignable",depth:3,title:"useDesignable()"},{id:"usecompile",depth:3,title:"useCompile()"}],jm=[{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"createDesignable()",paraId:0},{value:"useDesignable()",paraId:0},{value:"useCompile()",paraId:0}],Hm={},Wm={title:"External Data Source - MariaDB",toc:"menu",filename:"docs/en-US/handbook/data-source-external-mariadb/index.md",lastUpdated:1732240239e3,description:"Use an external MariaDB database as a data source. Currently supported versions: MariaDB >= 10.3"},$m=[{id:"external-data-source---mariadb",depth:1,title:"External Data Source - MariaDB"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"}],Gm=[{value:"Use an external MariaDB database as a data source. Currently supported versions: MariaDB >= 10.3",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin, which needs to be uploaded and activated through the plugin manager.",paraId:1,tocIndex:2},{value:"Refer to the ",paraId:2,tocIndex:3},{value:"Data Source / External Database",paraId:3,tocIndex:3},{value:" section.",paraId:2,tocIndex:3}],Vm={},Km={title:"Bar Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/bar.md",lastUpdated:1732240239e3,description:"In this setup, configure one metric and two dimensions. One dimension serves as the X-axis field (X field), while the other acts as the category field (Series field). The X-axis field and the category field can be the same."},Zm=[{id:"bar-chart",depth:1,title:"Bar Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-metric-1-dimension",depth:3,title:"1 Metric, 1 Dimension"},{id:"1-metric-1-axis-dimension-1-category-dimension",depth:3,title:"1 Metric, 1 Axis Dimension, 1 Category Dimension"},{id:"configuration-options",depth:4,title:"Configuration Options"}],Ym=[{value:"In this setup, configure one metric and two dimensions. One dimension serves as the X-axis field (X field), while the other acts as the category field (Series field). The X-axis field and the category field can be the same.",paraId:0,tocIndex:3},{value:"Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"X-axis Field",paraId:1,tocIndex:4},{value:"The field used for the X-axis dimension",paraId:1,tocIndex:4},{value:"Category Field",paraId:1,tocIndex:4},{value:"The field used for the category dimension",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Sets the chart size, either fixed aspect ratio or height",paraId:1,tocIndex:4},{value:"Grouping",paraId:1,tocIndex:4},{value:"Specifies whether to display grouped bars",paraId:1,tocIndex:4},{value:"Stacking",paraId:1,tocIndex:4},{value:"Specifies whether to stack the bars",paraId:1,tocIndex:4},{value:"Percentage View",paraId:1,tocIndex:4},{value:"Specifies whether percentage display",paraId:1,tocIndex:4}],Qm={},Jm={title:"Pie Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/pie.md",lastUpdated:1732240239e3},Xm=[{id:"pie-chart",depth:1,title:"Pie Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-metric-1-dimension",depth:3,title:"1 Metric, 1 Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],eh=[{value:"Option",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Size",paraId:0,tocIndex:3},{value:"Adjust the chart size, either by maintaining a fixed aspect ratio or setting a fixed height.",paraId:0,tocIndex:3}],ah={},th={title:"Scatter Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/scatter.md",lastUpdated:1732240239e3,description:"Configure one metric and two dimensions. One of the dimensions will serve as the X-axis field (X field), while the other will act as the series field."},nh=[{id:"scatter-chart",depth:1,title:"Scatter Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-or-multiple-metrics-1-dimension",depth:3,title:"1 or Multiple Metrics, 1 Dimension"},{id:"1-metric-1-axis-dimension-one-category-dimension",depth:3,title:"1 Metric, 1 Axis Dimension, One Category Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],oh=[{value:"Configure one metric and two dimensions. One of the dimensions will serve as the X-axis field (X field), while the other will act as the series field.",paraId:0,tocIndex:3},{value:"Configuration Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"xField",paraId:1,tocIndex:4},{value:"Dimension field for the X-axis",paraId:1,tocIndex:4},{value:"seriesField",paraId:1,tocIndex:4},{value:"Dimension field for categorization",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Set the chart size, either fixed aspect ratio or fixed height",paraId:1,tocIndex:4},{value:"Light mode theme",paraId:1,tocIndex:4},{value:"Preview available when the system is in light mode",paraId:1,tocIndex:4},{value:"Dark mode theme",paraId:1,tocIndex:4},{value:"Preview available when the system is in dark mode",paraId:1,tocIndex:4},{value:"Show legend",paraId:1,tocIndex:4},{value:"Toggle the visibility of the legend",paraId:1,tocIndex:4},{value:"Legend orient",paraId:1,tocIndex:4},{value:"Control the orientation of the legend, either horizontal or vertical",paraId:1,tocIndex:4},{value:"Legend position (left, bottom, right, top)",paraId:1,tocIndex:4},{value:"Control the relative position of the legend",paraId:1,tocIndex:4},{value:"Label type",paraId:1,tocIndex:4},{value:"Control whether labels are shown and the type of labels",paraId:1,tocIndex:4},{value:"X-Axis title",paraId:1,tocIndex:4},{value:"Control the display position of the X-axis title",paraId:1,tocIndex:4},{value:"Y-Axis title",paraId:1,tocIndex:4},{value:"Control the display position of the Y-axis title",paraId:1,tocIndex:4},{value:"X-Axis label rotate",paraId:1,tocIndex:4},{value:"Adjust the rotation angle of the X-axis labels; useful when there are dense labels to display more effectively",paraId:1,tocIndex:4},{value:"Padding",paraId:1,tocIndex:4},{value:"Adjust the internal padding of the chart",paraId:1,tocIndex:4},{value:"Split line",paraId:1,tocIndex:4},{value:"Control whether the grid lines are displayed and their style",paraId:1,tocIndex:4},{value:"Mark line",paraId:1,tocIndex:4},{value:"Add reference lines, set their title, value, and color",paraId:1,tocIndex:4}],rh={},dh={title:"Treemap Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/treemap.md",lastUpdated:1732240239e3},ih=[{id:"treemap-chart",depth:1,title:"Treemap Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-measure-1-dimension",depth:3,title:"1 Measure, 1 Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],lh=[{value:"Option",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Size",paraId:0,tocIndex:3},{value:"Set the size of the chart, either with a fixed aspect ratio or fixed height",paraId:0,tocIndex:3},{value:"Light mode theme",paraId:0,tocIndex:3},{value:"Must be selected for preview when the system is in light mode",paraId:0,tocIndex:3},{value:"Dark mode theme",paraId:0,tocIndex:3},{value:"Must be selected for preview when the system is in dark mode",paraId:0,tocIndex:3},{value:"Label type",paraId:0,tocIndex:3},{value:"Controls whether labels are displayed and the type of display",paraId:0,tocIndex:3}],ch={},sh={title:"Details Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/generic/detail-form-item.md",lastUpdated:1732240239e3,description:"In detail blocks, list blocks, and grid blocks, the field configuration remains largely consistent, primarily focusing on how fields are presented in a reading view."},uh=[{id:"details-fields",depth:1,title:"Details Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"date-field-formatting",depth:3,title:"Date Field Formatting"},{id:"numeric-field-formatting",depth:3,title:"Numeric Field Formatting"},{id:"field-component",depth:3,title:"Field Component"},{id:"style",depth:3,title:"Style"}],ph=[{value:"In detail blocks, list blocks, and grid blocks, the field configuration remains largely consistent, primarily focusing on how fields are presented in a reading view.",paraId:0,tocIndex:1},{value:"For more information, see ",paraId:1,tocIndex:3},{value:"Date Formatting",paraId:2,tocIndex:3},{value:".",paraId:1,tocIndex:3},{value:"This feature supports basic unit conversions, thousand separators, prefix and suffix customization, precision settings, and scientific notation.",paraId:3,tocIndex:4},{value:"For more details, see ",paraId:4,tocIndex:4},{value:"Number Formatting",paraId:5,tocIndex:4},{value:".",paraId:4,tocIndex:4},{value:"Edit Field Title",paraId:6,tocIndex:4},{value:"Display Title",paraId:7,tocIndex:4},{value:"Edit Field Description",paraId:8,tocIndex:4},{value:"Edit Field Tooltip",paraId:9,tocIndex:4},{value:"Certain fields allow for switching to different components. For instance, the ",paraId:10,tocIndex:5},{value:"URL",paraId:10,tocIndex:5},{value:" component can be changed to a ",paraId:10,tocIndex:5},{value:"Preview",paraId:10,tocIndex:5},{value:" component.",paraId:10,tocIndex:5},{value:"If you need to add more components, refer to ",paraId:11,tocIndex:5},{value:"Extending Field Value Components",paraId:12,tocIndex:5},{value:".",paraId:11,tocIndex:5}],Ih={},_h={title:"Filter blocks - Form Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/generic/filter-form-item.md",lastUpdated:1732240239e3,description:"The filter form allows you to select fields from both the current table and related tables (including fields from associated relationships) to serve as filter criteria."},vh=[{id:"filter-blocks---form-fields",depth:1,title:"Filter blocks - Form Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"operators",depth:3,title:"Operators"}],mh=[{value:"The filter form allows you to select fields from both the current table and related tables (including fields from associated relationships) to serve as filter criteria.",paraId:0,tocIndex:1},{value:"Example:",paraId:1,tocIndex:1},{value:" Suppose you want to filter orders using fields from a related table. The order table and the customer table have a one-to-many relationship. In this case, you can configure the customer's name and phone number fields from the customer table as filter criteria to help narrow down the orders.",paraId:1,tocIndex:1},{value:"Selecting the right operators for filtering is crucial to enhance accuracy and efficiency. For string-type fields, fuzzy matching is enabled by default.",paraId:2,tocIndex:3},{value:"Edit Field Title",paraId:3,tocIndex:3},{value:"Display Title",paraId:4,tocIndex:3},{value:"Edit Field Description",paraId:5,tocIndex:3},{value:"Edit Field Tooltip",paraId:6,tocIndex:3}],hh={},fh={title:"Dynamic Calculation",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/dynamic-calculation.md",lastUpdated:1732240239e3,description:"Create a dynamic calculation node:"},xh=[{id:"dynamic-calculation",depth:1,title:"Dynamic Calculation"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"calculation-expression",depth:2,title:"Calculation Expression"},{id:"variable-data-source",depth:3,title:"Variable Data Source"},{id:"related-content",depth:2,title:"Related Content"}],gh=[{value:"Create a dynamic calculation node:",paraId:0,tocIndex:1},{value:"Unlike the expression options in a standard calculation node, dynamic expressions must be selected based on preloaded data rather than directly inputting the expression. Choose the preloaded product discount rule data from the trigger:",paraId:1,tocIndex:3},{value:"You also need to select the data row object from the table to be used as a variable in the expression. This can be chosen from the workflow context, where results have been preloaded or queried. The object must be a data row from the table associated with the expression data. In this case, select the product data:",paraId:2,tocIndex:4},{value:"Saving the node configuration completes the entire setup process.",paraId:3,tocIndex:4},{value:"Except for node configuration, there are also some related contents about dynamic calculation that can be further understood through the ",paraId:4,tocIndex:5},{value:"plugin documentation",paraId:5,tocIndex:5},{value:".",paraId:4,tocIndex:5}],bh={},yh={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow-dynamic-calculation/index.md",lastUpdated:1732240239e3,description:"Dynamic Calculation nodes stand out from Operator nodes by allowing diverse calculations based on data-associated expressions. While traditional formula fields are limited to applying a single fixed formula across all data rows, Dynamic calculation solve this limitation by enabling workflows to handle different calculation methods for varying data rows."},wh=[{id:"overview",depth:1,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"}],kh=[{value:"Dynamic Calculation nodes stand out from Operator nodes by allowing diverse calculations based on data-associated expressions. While traditional formula fields are limited to applying a single fixed formula across all data rows, Dynamic calculation solve this limitation by enabling workflows to handle different calculation methods for varying data rows.",paraId:0},{value:"For example, different product categories in order data may require distinct statistical formulas to compute specific report data.",paraId:1},{value:"This plugin comes pre-installed and does not require any additional setup.",paraId:2,tocIndex:1},{value:"Using dynamic expressions involves several key sections:",paraId:3,tocIndex:2},{value:'"Expression" Template Table',paraId:4,tocIndex:2},{value:"Node",paraId:5,tocIndex:2},{value:"For practical examples, refer to the ",paraId:6,tocIndex:2},{value:"Examples",paraId:7,tocIndex:2},{value:" section.",paraId:6,tocIndex:2}],Sh={},Uh={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow-request-interceptor/index.md",lastUpdated:1732240239e3,description:'The pre-operation event plugin introduces a powerful mechanism for intercepting form operation requests. This interception occurs after a form operation is submitted but before it\u2019s processed. If the process triggered includes an "End Process" node or if any other nodes fail to execute correctly (whether due to errors or incomplete execution), the form operation will be intercepted. Otherwise, the operation will proceed as planned. When paired with the "Response Message" node, this feature allows you to configure the process to return specific response messages to the client, offering clear and relevant prompts. Pre-operation events are ideal for business validation or logic checks, enabling the approval or interception of client-submitted requests for creating, updating, or deleting records.'},Ph=[{id:"overview",depth:1,title:"Overview"},{id:"user-guide",depth:2,title:"User Guide"}],Th=[{value:'The pre-operation event plugin introduces a powerful mechanism for intercepting form operation requests. This interception occurs after a form operation is submitted but before it\u2019s processed. If the process triggered includes an "End Process" node or if any other nodes fail to execute correctly (whether due to errors or incomplete execution), the form operation will be intercepted. Otherwise, the operation will proceed as planned. When paired with the "Response Message" node, this feature allows you to configure the process to return specific response messages to the client, offering clear and relevant prompts. Pre-operation events are ideal for business validation or logic checks, enabling the approval or interception of client-submitted requests for creating, updating, or deleting records.',paraId:0},{value:"Using pre-operation events involves several key steps:",paraId:1,tocIndex:1},{value:"Trigger Configuration",paraId:2,tocIndex:1},{value:"Operation Configuration",paraId:3,tocIndex:1},{value:"For a deeper understanding, you can explore ",paraId:4,tocIndex:1},{value:"Advanced Usage",paraId:5,tocIndex:1},{value:", and see how it\u2019s applied in real scenarios by reviewing the ",paraId:4,tocIndex:1},{value:"Examples",paraId:6,tocIndex:1},{value:".",paraId:4,tocIndex:1},{value:"If you need to integrate with an external system, refer to ",paraId:7,tocIndex:1},{value:"External Call",paraId:8,tocIndex:1},{value:".",paraId:7,tocIndex:1}],Ch={},Ah={title:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3",toc:"menu",filename:"docs/en-US/manual/plugin-manager/plugin-settings/index.md",lastUpdated:1732240239e3,description:"\u7BA1\u7406\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u4E2A\u96C6\u4E2D\u7BA1\u7406\u548C\u914D\u7F6E\u7CFB\u7EDF\u4FE1\u606F\u4EE5\u53CA\u4E0E\u5DE5\u4F5C\u76F8\u5173\u8BBE\u7F6E\u7684\u5E73\u53F0\u3002\u7528\u6237\u53EF\u4EE5\u6839\u636E\u5176\u7279\u5B9A\u7684\u4E1A\u52A1\u9700\u6C42\u548C\u4E2A\u4EBA\u504F\u597D\u6765\u81EA\u5B9A\u4E49\u7CFB\u7EDF\u3001\u6570\u636E\u8868\u5EFA\u6A21\u3001\u5DE5\u4F5C\u6D41\u914D\u7F6E\u548C\u63D2\u4EF6\u914D\u7F6E"},qh=[{id:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3",depth:1,title:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3"}],Eh=[{value:"\u7BA1\u7406\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u4E2A\u96C6\u4E2D\u7BA1\u7406\u548C\u914D\u7F6E\u7CFB\u7EDF\u4FE1\u606F\u4EE5\u53CA\u4E0E\u5DE5\u4F5C\u76F8\u5173\u8BBE\u7F6E\u7684\u5E73\u53F0\u3002\u7528\u6237\u53EF\u4EE5\u6839\u636E\u5176\u7279\u5B9A\u7684\u4E1A\u52A1\u9700\u6C42\u548C\u4E2A\u4EBA\u504F\u597D\u6765\u81EA\u5B9A\u4E49\u7CFB\u7EDF\u3001\u6570\u636E\u8868\u5EFA\u6A21\u3001\u5DE5\u4F5C\u6D41\u914D\u7F6E\u548C\u63D2\u4EF6\u914D\u7F6E",paraId:0,tocIndex:0},{value:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3\u7684\u7EC4\u6210",paraId:1,tocIndex:0},{value:"\u7F6E\u9876\u7684\u5FEB\u6377\u914D\u7F6E\u9879",paraId:2,tocIndex:0},{value:"\u6240\u6709\u6FC0\u6D3B\u7684\u63D2\u4EF6\u914D\u7F6E\u5217\u8868",paraId:2,tocIndex:0},{value:"\u63D2\u4EF6\u7684\u6807\u7B7E\u9875",paraId:2,tocIndex:0},{value:"\u6B63\u6587\u5185\u5BB9",paraId:2,tocIndex:0}],Dh={},Oh={title:"\u83DC\u5355",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/menus/index.md",lastUpdated:1732240239e3,description:"\u5185\u7F6E\u4E09\u79CD\u83DC\u9879\u7C7B\u578B\uFF1A"},Rh=[{id:"\u83DC\u5355",depth:1,title:"\u83DC\u5355"},{id:"\u83DC\u5355\u9879\u7C7B\u578B",depth:2,title:"\u83DC\u5355\u9879\u7C7B\u578B"},{id:"\u5206\u7EC4",depth:3,title:"\u5206\u7EC4"},{id:"\u9875\u9762",depth:3,title:"\u9875\u9762"},{id:"\u94FE\u63A5",depth:3,title:"\u94FE\u63A5"},{id:"\u83DC\u5355\u9879\u8BBE\u8BA1\u5668",depth:2,title:"\u83DC\u5355\u9879\u8BBE\u8BA1\u5668"},{id:"\u83DC\u5355\u9879\u914D\u7F6E",depth:3,title:"\u83DC\u5355\u9879\u914D\u7F6E"}],Mh=[{value:"\u5185\u7F6E\u4E09\u79CD\u83DC\u9879\u7C7B\u578B\uFF1A",paraId:0,tocIndex:1},{value:"\u5206\u7EC4",paraId:1,tocIndex:1},{value:"\u9875\u9762",paraId:1,tocIndex:1},{value:"\u94FE\u63A5",paraId:1,tocIndex:1},{value:"\u4F7F\u7528\u5206\u7EC4\u65F6\uFF0C\u5DE6\u4FA7\u4F1A\u591A\u51FA\u4E00\u4E2A\u5B50\u83DC\u5355",paraId:2,tocIndex:2},{value:"\u9875\u9762\u53EF\u4EE5\u7528\u4E8E\u6DFB\u52A0\u5404\u79CD\u533A\u5757",paraId:3,tocIndex:3},{value:"\u7528\u4E8E URL \u8DF3\u8F6C",paraId:4,tocIndex:4},{value:"\u5728\u83DC\u5355\u9879\u7684\u53F3\u4E0A\u89D2\u6709\u4E24\u4E2A\u56FE\u6807\uFF0C\u5206\u522B\u662F\uFF1A",paraId:5,tocIndex:5},{value:"\u62D6\u62FD\u79FB\u52A8",paraId:6,tocIndex:5},{value:"\u83DC\u5355\u9879\u914D\u7F6E",paraId:6,tocIndex:5},{value:"\u7F16\u8F91\uFF1A\u5305\u62EC\u83DC\u5355\u9879\u7684\u6807\u9898\u3001\u56FE\u6807\u7B49",paraId:7,tocIndex:6},{value:"\u79FB\u52A8\u5230\uFF1A\u9664\u4E86\u62D6\u62FD\u79FB\u52A8\u4EE5\u5916\uFF0C\u4E5F\u53EF\u4EE5\u901A\u8FC7\u300C\u79FB\u52A8\u5230\u300D\u5FEB\u901F\u7684\u79FB\u52A8\u83DC\u5355\u9879",paraId:7,tocIndex:6},{value:"\u5728\u524D\u9762\u63D2\u5165",paraId:7,tocIndex:6},{value:"\u5728\u540E\u9762\u63D2\u5165",paraId:7,tocIndex:6},{value:"\u5728\u91CC\u9762\u63D2\u5165\uFF08\u4EC5\u9650\u4E8E\u5206\u7EC4\u7C7B\u578B\uFF09",paraId:7,tocIndex:6},{value:"\u5220\u9664",paraId:7,tocIndex:6}],Lh={},Nh={title:"\u9875\u9762",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/pages/index.md",lastUpdated:1732240239e3,description:"\u542F\u7528\u9875\u9762\u6807\u7B7E\u9875\u4E4B\u540E\uFF0C\u53EF\u4EE5\u5728\u9875\u9762\u91CC\u6DFB\u52A0\u5B50\u9875\u9762\u3002"},zh=[{id:"\u9875\u9762",depth:1,title:"\u9875\u9762"},{id:"\u9875\u9762\u7ED3\u6784",depth:2,title:"\u9875\u9762\u7ED3\u6784"},{id:"\u9875\u9762\u8BBE\u8BA1\u5668",depth:2,title:"\u9875\u9762\u8BBE\u8BA1\u5668"},{id:"\u9875\u9762\u6807\u7B7E\u9875",depth:2,title:"\u9875\u9762\u6807\u7B7E\u9875"},{id:"\u9875\u9762\u5E03\u5C40",depth:2,title:"\u9875\u9762\u5E03\u5C40"}],Fh=[{value:"\u9875\u9762\u8BBE\u8BA1\u5668",paraId:0,tocIndex:1},{value:"\u9875\u9762\u6807\u9898",paraId:0,tocIndex:1},{value:"\u9875\u9762\u6807\u7B7E\u9875\uFF08\u5B50\u9875\u9762\uFF09",paraId:0,tocIndex:1},{value:"\u9875\u9762\u4E3B\u4F53\uFF08\u627F\u8F7D\u533A\u5757\uFF09",paraId:0,tocIndex:1},{value:"\u542F\u7528\u9875\u7709\uFF1A\u7528\u4E8E\u63A7\u5236\u662F\u5426\u663E\u793A\u9875\u7709\uFF1B",paraId:1,tocIndex:2},{value:"\u663E\u793A\u9875\u9762\u6807\u9898\uFF1A\u662F\u5426\u5728\u9875\u7709\u4E2D\u663E\u793A\u9875\u9762\u6807\u9898\uFF1B",paraId:1,tocIndex:2},{value:"\u7F16\u8F91\u9875\u9762\u6807\u9898\uFF1A\u9ED8\u8BA4\u7684\u9875\u9762\u6807\u9898\u4E3A\u83DC\u5355\u9879\u6807\u9898\uFF0C\u4E5F\u53EF\u4EE5\u81EA\u5B9A\u4E49\u4FEE\u6539\uFF1B",paraId:1,tocIndex:2},{value:"\u542F\u7528\u6807\u7B7E\u9875\uFF1A\u6807\u7B7E\u9875\u5373\u9875\u9762\u7684\u5B50\u9875\u9762\u3002",paraId:1,tocIndex:2},{value:"\u542F\u7528\u9875\u9762\u6807\u7B7E\u9875\u4E4B\u540E\uFF0C\u53EF\u4EE5\u5728\u9875\u9762\u91CC\u6DFB\u52A0\u5B50\u9875\u9762\u3002",paraId:2,tocIndex:3},{value:"\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u901A\u8FC7\u62D6\u62FD\u8C03\u6574\u5E03\u5C40\u3002",paraId:3,tocIndex:4}],Bh={},jh={title:"\u56FE\u8868\u533A\u5757",toc:"menu",filename:"docs/en-US/plugins/data-visualization/user/chart-block.md",lastUpdated:1732240239e3,description:"\u56FE\u8868\u533A\u5757\u662F\u4E00\u4E2A\u7528\u4E8E\u7EC4\u7EC7\u591A\u4E2A\u56FE\u8868\u7684\u9762\u677F\u3002"},Hh=[{id:"\u56FE\u8868\u533A\u5757",depth:1,title:"\u56FE\u8868\u533A\u5757"},{id:"\u6DFB\u52A0",depth:2,title:"\u6DFB\u52A0"},{id:"\u914D\u7F6E",depth:2,title:"\u914D\u7F6E"}],Wh=[{value:"\u56FE\u8868\u533A\u5757\u662F\u4E00\u4E2A\u7528\u4E8E\u7EC4\u7EC7\u591A\u4E2A\u56FE\u8868\u7684\u9762\u677F\u3002",paraId:0,tocIndex:0},{value:"\u70B9\u51FB\u201C\u6DFB\u52A0\u533A\u5757\u201D (Add block) - \u201C\u56FE\u8868\u201D (Charts)\uFF0C\u53EF\u4EE5\u521B\u5EFA\u53EF\u4EE5\u7A7A\u767D\u7684\u56FE\u8868\u533A\u5757\u3002",paraId:1,tocIndex:1},{value:"\u5728\u56FE\u8868\u533A\u5757\u4E2D\u70B9\u51FB\u201C\u6DFB\u52A0\u533A\u5757\u201D (Add block) - \u201C\u56FE\u8868\u201D (Chart)\uFF0C\u9009\u62E9\u5BF9\u5E94\u7684\u6570\u636E\u8868 (Collection), \u53EF\u4EE5\u521B\u5EFA\u548C\u914D\u7F6E\u56FE\u8868\u3002\u6709\u67E5\u770B\u6743\u9650\u7684\u6570\u636E\u8868\u624D\u53EF\u4EE5\u7528\u4E8E\u914D\u7F6E\u56FE\u8868\uFF0C\u5426\u5219\u5C06\u4F1A\u5728\u9009\u9879\u4E2D\u88AB\u9690\u85CF\u3002",paraId:2,tocIndex:1},{value:"\u56FE\u8868\u533A\u5757\u4E2D\u7684\u56FE\u8868\u53EF\u4EE5\u50CF\u666E\u901A\u533A\u5757\u4E00\u6837\uFF0C\u5728\u56FE\u8868\u533A\u5757\u4E2D\uFF0C\u81EA\u7531\u62D6\u62FD\u548C\u7EC4\u7EC7\u3002",paraId:3,tocIndex:2},{value:"\u70B9\u51FB\u201C\u914D\u7F6E\u201D (Configure) \u6309\u94AE\uFF0C\u53EF\u4EE5\u5BF9\u5F53\u524D\u56FE\u8868\u8FDB\u884C\u4FEE\u6539\u3002",paraId:3,tocIndex:2},{value:"\u70B9\u51FB\u201C\u590D\u5236\u201D (Duplicate) \u6309\u94AE\uFF0C\u53EF\u4EE5\u5FEB\u901F\u590D\u5236\u5F53\u524D\u56FE\u8868\u3002",paraId:3,tocIndex:2},{value:"\u53EF\u4EE5\u201C\u7F16\u8F91\u533A\u5757\u6807\u9898\u201D (Edit block title)\uFF0C\u7ED9\u5F53\u524D\u56FE\u8868\u6DFB\u52A0\u6807\u9898\u8BF4\u660E\u3002",paraId:3,tocIndex:2}],$h={},Gh={title:"\u6570\u636E\u8868\u4E8B\u4EF6",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/triggers/collection.md",lastUpdated:1732240239e3,description:"\u6570\u636E\u8868\u4E8B\u4EF6\u7C7B\u578B\u7684\u89E6\u53D1\u5668\u5C06\u76D1\u542C\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u4E8B\u4EF6\uFF0C\u5F53\u53D1\u751F\u5BF9\u8BE5\u8868\u7684\u6570\u636E\u64CD\u4F5C\u4E14\u6EE1\u8DB3\u914D\u7F6E\u7684\u6761\u4EF6\u65F6\uFF0C\u89E6\u53D1\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u3002\u4F8B\u5982\u65B0\u589E\u8BA2\u5355\u540E\u6263\u51CF\u5546\u54C1\u7684\u5E93\u5B58\uFF0C\u65B0\u589E\u4E00\u6761\u8BC4\u8BBA\u540E\u7B49\u5F85\u4EBA\u5DE5\u5BA1\u6838\u7B49\u573A\u666F\u3002"},Vh=[{id:"\u6570\u636E\u8868\u4E8B\u4EF6",depth:1,title:"\u6570\u636E\u8868\u4E8B\u4EF6"},{id:"\u57FA\u672C\u4F7F\u7528",depth:2,title:"\u57FA\u672C\u4F7F\u7528"},{id:"\u76F8\u5173\u63D0\u793A",depth:2,title:"\u76F8\u5173\u63D0\u793A"},{id:"\u6682\u4E0D\u652F\u6301\u6279\u91CF\u6570\u636E\u64CD\u4F5C\u89E6\u53D1",depth:3,title:"\u6682\u4E0D\u652F\u6301\u6279\u91CF\u6570\u636E\u64CD\u4F5C\u89E6\u53D1"},{id:"\u975E\u5E94\u7528\u5185\u7684\u6570\u636E\u64CD\u4F5C\u4E0D\u4F1A\u89E6\u53D1",depth:3,title:"\u975E\u5E94\u7528\u5185\u7684\u6570\u636E\u64CD\u4F5C\u4E0D\u4F1A\u89E6\u53D1"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],Kh=[{value:"\u6570\u636E\u8868\u4E8B\u4EF6\u7C7B\u578B\u7684\u89E6\u53D1\u5668\u5C06\u76D1\u542C\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u4E8B\u4EF6\uFF0C\u5F53\u53D1\u751F\u5BF9\u8BE5\u8868\u7684\u6570\u636E\u64CD\u4F5C\u4E14\u6EE1\u8DB3\u914D\u7F6E\u7684\u6761\u4EF6\u65F6\uFF0C\u89E6\u53D1\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u3002\u4F8B\u5982\u65B0\u589E\u8BA2\u5355\u540E\u6263\u51CF\u5546\u54C1\u7684\u5E93\u5B58\uFF0C\u65B0\u589E\u4E00\u6761\u8BC4\u8BBA\u540E\u7B49\u5F85\u4EBA\u5DE5\u5BA1\u6838\u7B49\u573A\u666F\u3002",paraId:0,tocIndex:0},{value:"\u6570\u636E\u8868\u7684\u53D8\u52A8\u6709\u51E0\u79CD\u60C5\u51B5\uFF1A",paraId:1,tocIndex:1},{value:"\u65B0\u589E\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:"\u66F4\u65B0\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:"\u65B0\u589E\u6216\u66F4\u65B0\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:"\u5220\u9664\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:` +`,paraId:17,tocIndex:2},{value:"Remarks",paraId:18,tocIndex:2},{value:"When deploying to a subpath, you need to configure the ",paraId:19,tocIndex:2},{value:"APP_PUBLIC_PATH",paraId:19,tocIndex:2},{value:" environment variable. After configuring, you need to re-execute the ",paraId:19,tocIndex:2},{value:"create-nginx-conf",paraId:19,tocIndex:2},{value:" command;",paraId:19,tocIndex:2},{value:"Modify the generated ",paraId:19,tocIndex:2},{value:"nocobase.conf",paraId:19,tocIndex:2},{value:" according to the actual situation, such as configuring the domain name, etc.;",paraId:19,tocIndex:2},{value:"/app/nocobase/",paraId:19,tocIndex:2},{value:" is the directory where the example application is located, and it needs to be adjusted according to the actual situation;",paraId:19,tocIndex:2},{value:"/etc/nginx/sites-enabled",paraId:19,tocIndex:2},{value:" is the default Nginx configuration path, the actual situation may vary, you can check it with ",paraId:19,tocIndex:2},{value:"nginx -V",paraId:19,tocIndex:2},{value:";",paraId:19,tocIndex:2},{value:"If you are not using Nginx, you can make some adjustments referring to the Nginx configuration.",paraId:19,tocIndex:2}],zm={},Fm={title:"SchemaComponent",toc:"menu",filename:"docs/en-US/api/client/schema-designer/schema-component.md",lastUpdated:173254844e4},Bm=[{id:"schemacomponent",depth:1,title:"SchemaComponent"},{id:"core-components",depth:2,title:"Core Components"},{id:"schemacomponentprovider-",depth:3,title:""},{id:"schemacomponentoptions",depth:3,title:""},{id:"schemacomponent-1",depth:3,title:""},{id:"core-methods",depth:2,title:"Core Methods"},{id:"createdesignable",depth:3,title:"createDesignable()"},{id:"usedesignable",depth:3,title:"useDesignable()"},{id:"usecompile",depth:3,title:"useCompile()"}],jm=[{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"createDesignable()",paraId:0},{value:"useDesignable()",paraId:0},{value:"useCompile()",paraId:0}],Hm={},Wm={title:"External Data Source - MariaDB",toc:"menu",filename:"docs/en-US/handbook/data-source-external-mariadb/index.md",lastUpdated:173254844e4,description:"Use an external MariaDB database as a data source. Currently supported versions: MariaDB >= 10.3"},$m=[{id:"external-data-source---mariadb",depth:1,title:"External Data Source - MariaDB"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"}],Gm=[{value:"Use an external MariaDB database as a data source. Currently supported versions: MariaDB >= 10.3",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin, which needs to be uploaded and activated through the plugin manager.",paraId:1,tocIndex:2},{value:"Refer to the ",paraId:2,tocIndex:3},{value:"Data Source / External Database",paraId:3,tocIndex:3},{value:" section.",paraId:2,tocIndex:3}],Vm={},Km={title:"Bar Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/bar.md",lastUpdated:173254844e4,description:"In this setup, configure one metric and two dimensions. One dimension serves as the X-axis field (X field), while the other acts as the category field (Series field). The X-axis field and the category field can be the same."},Zm=[{id:"bar-chart",depth:1,title:"Bar Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-metric-1-dimension",depth:3,title:"1 Metric, 1 Dimension"},{id:"1-metric-1-axis-dimension-1-category-dimension",depth:3,title:"1 Metric, 1 Axis Dimension, 1 Category Dimension"},{id:"configuration-options",depth:4,title:"Configuration Options"}],Ym=[{value:"In this setup, configure one metric and two dimensions. One dimension serves as the X-axis field (X field), while the other acts as the category field (Series field). The X-axis field and the category field can be the same.",paraId:0,tocIndex:3},{value:"Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"X-axis Field",paraId:1,tocIndex:4},{value:"The field used for the X-axis dimension",paraId:1,tocIndex:4},{value:"Category Field",paraId:1,tocIndex:4},{value:"The field used for the category dimension",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Sets the chart size, either fixed aspect ratio or height",paraId:1,tocIndex:4},{value:"Grouping",paraId:1,tocIndex:4},{value:"Specifies whether to display grouped bars",paraId:1,tocIndex:4},{value:"Stacking",paraId:1,tocIndex:4},{value:"Specifies whether to stack the bars",paraId:1,tocIndex:4},{value:"Percentage View",paraId:1,tocIndex:4},{value:"Specifies whether percentage display",paraId:1,tocIndex:4}],Qm={},Jm={title:"Pie Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd-charts/pie.md",lastUpdated:173254844e4},Xm=[{id:"pie-chart",depth:1,title:"Pie Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-metric-1-dimension",depth:3,title:"1 Metric, 1 Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],eh=[{value:"Option",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Size",paraId:0,tocIndex:3},{value:"Adjust the chart size, either by maintaining a fixed aspect ratio or setting a fixed height.",paraId:0,tocIndex:3}],ah={},th={title:"Scatter Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/scatter.md",lastUpdated:173254844e4,description:"Configure one metric and two dimensions. One of the dimensions will serve as the X-axis field (X field), while the other will act as the series field."},nh=[{id:"scatter-chart",depth:1,title:"Scatter Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-or-multiple-metrics-1-dimension",depth:3,title:"1 or Multiple Metrics, 1 Dimension"},{id:"1-metric-1-axis-dimension-one-category-dimension",depth:3,title:"1 Metric, 1 Axis Dimension, One Category Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],oh=[{value:"Configure one metric and two dimensions. One of the dimensions will serve as the X-axis field (X field), while the other will act as the series field.",paraId:0,tocIndex:3},{value:"Configuration Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"xField",paraId:1,tocIndex:4},{value:"Dimension field for the X-axis",paraId:1,tocIndex:4},{value:"seriesField",paraId:1,tocIndex:4},{value:"Dimension field for categorization",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Set the chart size, either fixed aspect ratio or fixed height",paraId:1,tocIndex:4},{value:"Light mode theme",paraId:1,tocIndex:4},{value:"Preview available when the system is in light mode",paraId:1,tocIndex:4},{value:"Dark mode theme",paraId:1,tocIndex:4},{value:"Preview available when the system is in dark mode",paraId:1,tocIndex:4},{value:"Show legend",paraId:1,tocIndex:4},{value:"Toggle the visibility of the legend",paraId:1,tocIndex:4},{value:"Legend orient",paraId:1,tocIndex:4},{value:"Control the orientation of the legend, either horizontal or vertical",paraId:1,tocIndex:4},{value:"Legend position (left, bottom, right, top)",paraId:1,tocIndex:4},{value:"Control the relative position of the legend",paraId:1,tocIndex:4},{value:"Label type",paraId:1,tocIndex:4},{value:"Control whether labels are shown and the type of labels",paraId:1,tocIndex:4},{value:"X-Axis title",paraId:1,tocIndex:4},{value:"Control the display position of the X-axis title",paraId:1,tocIndex:4},{value:"Y-Axis title",paraId:1,tocIndex:4},{value:"Control the display position of the Y-axis title",paraId:1,tocIndex:4},{value:"X-Axis label rotate",paraId:1,tocIndex:4},{value:"Adjust the rotation angle of the X-axis labels; useful when there are dense labels to display more effectively",paraId:1,tocIndex:4},{value:"Padding",paraId:1,tocIndex:4},{value:"Adjust the internal padding of the chart",paraId:1,tocIndex:4},{value:"Split line",paraId:1,tocIndex:4},{value:"Control whether the grid lines are displayed and their style",paraId:1,tocIndex:4},{value:"Mark line",paraId:1,tocIndex:4},{value:"Add reference lines, set their title, value, and color",paraId:1,tocIndex:4}],rh={},dh={title:"Treemap Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/treemap.md",lastUpdated:173254844e4},ih=[{id:"treemap-chart",depth:1,title:"Treemap Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-measure-1-dimension",depth:3,title:"1 Measure, 1 Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],lh=[{value:"Option",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Size",paraId:0,tocIndex:3},{value:"Set the size of the chart, either with a fixed aspect ratio or fixed height",paraId:0,tocIndex:3},{value:"Light mode theme",paraId:0,tocIndex:3},{value:"Must be selected for preview when the system is in light mode",paraId:0,tocIndex:3},{value:"Dark mode theme",paraId:0,tocIndex:3},{value:"Must be selected for preview when the system is in dark mode",paraId:0,tocIndex:3},{value:"Label type",paraId:0,tocIndex:3},{value:"Controls whether labels are displayed and the type of display",paraId:0,tocIndex:3}],ch={},sh={title:"Details Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/generic/detail-form-item.md",lastUpdated:173254844e4,description:"In detail blocks, list blocks, and grid blocks, the field configuration remains largely consistent, primarily focusing on how fields are presented in a reading view."},uh=[{id:"details-fields",depth:1,title:"Details Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"date-field-formatting",depth:3,title:"Date Field Formatting"},{id:"numeric-field-formatting",depth:3,title:"Numeric Field Formatting"},{id:"field-component",depth:3,title:"Field Component"},{id:"style",depth:3,title:"Style"}],ph=[{value:"In detail blocks, list blocks, and grid blocks, the field configuration remains largely consistent, primarily focusing on how fields are presented in a reading view.",paraId:0,tocIndex:1},{value:"For more information, see ",paraId:1,tocIndex:3},{value:"Date Formatting",paraId:2,tocIndex:3},{value:".",paraId:1,tocIndex:3},{value:"This feature supports basic unit conversions, thousand separators, prefix and suffix customization, precision settings, and scientific notation.",paraId:3,tocIndex:4},{value:"For more details, see ",paraId:4,tocIndex:4},{value:"Number Formatting",paraId:5,tocIndex:4},{value:".",paraId:4,tocIndex:4},{value:"Edit Field Title",paraId:6,tocIndex:4},{value:"Display Title",paraId:7,tocIndex:4},{value:"Edit Field Description",paraId:8,tocIndex:4},{value:"Edit Field Tooltip",paraId:9,tocIndex:4},{value:"Certain fields allow for switching to different components. For instance, the ",paraId:10,tocIndex:5},{value:"URL",paraId:10,tocIndex:5},{value:" component can be changed to a ",paraId:10,tocIndex:5},{value:"Preview",paraId:10,tocIndex:5},{value:" component.",paraId:10,tocIndex:5},{value:"If you need to add more components, refer to ",paraId:11,tocIndex:5},{value:"Extending Field Value Components",paraId:12,tocIndex:5},{value:".",paraId:11,tocIndex:5}],Ih={},_h={title:"Filter blocks - Form Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/generic/filter-form-item.md",lastUpdated:173254844e4,description:"The filter form allows you to select fields from both the current table and related tables (including fields from associated relationships) to serve as filter criteria."},vh=[{id:"filter-blocks---form-fields",depth:1,title:"Filter blocks - Form Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"operators",depth:3,title:"Operators"}],mh=[{value:"The filter form allows you to select fields from both the current table and related tables (including fields from associated relationships) to serve as filter criteria.",paraId:0,tocIndex:1},{value:"Example:",paraId:1,tocIndex:1},{value:" Suppose you want to filter orders using fields from a related table. The order table and the customer table have a one-to-many relationship. In this case, you can configure the customer's name and phone number fields from the customer table as filter criteria to help narrow down the orders.",paraId:1,tocIndex:1},{value:"Selecting the right operators for filtering is crucial to enhance accuracy and efficiency. For string-type fields, fuzzy matching is enabled by default.",paraId:2,tocIndex:3},{value:"Edit Field Title",paraId:3,tocIndex:3},{value:"Display Title",paraId:4,tocIndex:3},{value:"Edit Field Description",paraId:5,tocIndex:3},{value:"Edit Field Tooltip",paraId:6,tocIndex:3}],hh={},fh={title:"Dynamic Calculation",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/dynamic-calculation.md",lastUpdated:173254844e4,description:"Create a dynamic calculation node:"},xh=[{id:"dynamic-calculation",depth:1,title:"Dynamic Calculation"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"calculation-expression",depth:2,title:"Calculation Expression"},{id:"variable-data-source",depth:3,title:"Variable Data Source"},{id:"related-content",depth:2,title:"Related Content"}],gh=[{value:"Create a dynamic calculation node:",paraId:0,tocIndex:1},{value:"Unlike the expression options in a standard calculation node, dynamic expressions must be selected based on preloaded data rather than directly inputting the expression. Choose the preloaded product discount rule data from the trigger:",paraId:1,tocIndex:3},{value:"You also need to select the data row object from the table to be used as a variable in the expression. This can be chosen from the workflow context, where results have been preloaded or queried. The object must be a data row from the table associated with the expression data. In this case, select the product data:",paraId:2,tocIndex:4},{value:"Saving the node configuration completes the entire setup process.",paraId:3,tocIndex:4},{value:"Except for node configuration, there are also some related contents about dynamic calculation that can be further understood through the ",paraId:4,tocIndex:5},{value:"plugin documentation",paraId:5,tocIndex:5},{value:".",paraId:4,tocIndex:5}],bh={},yh={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow-dynamic-calculation/index.md",lastUpdated:173254844e4,description:"Dynamic Calculation nodes stand out from Operator nodes by allowing diverse calculations based on data-associated expressions. While traditional formula fields are limited to applying a single fixed formula across all data rows, Dynamic calculation solve this limitation by enabling workflows to handle different calculation methods for varying data rows."},wh=[{id:"overview",depth:1,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"}],kh=[{value:"Dynamic Calculation nodes stand out from Operator nodes by allowing diverse calculations based on data-associated expressions. While traditional formula fields are limited to applying a single fixed formula across all data rows, Dynamic calculation solve this limitation by enabling workflows to handle different calculation methods for varying data rows.",paraId:0},{value:"For example, different product categories in order data may require distinct statistical formulas to compute specific report data.",paraId:1},{value:"This plugin comes pre-installed and does not require any additional setup.",paraId:2,tocIndex:1},{value:"Using dynamic expressions involves several key sections:",paraId:3,tocIndex:2},{value:'"Expression" Template Table',paraId:4,tocIndex:2},{value:"Node",paraId:5,tocIndex:2},{value:"For practical examples, refer to the ",paraId:6,tocIndex:2},{value:"Examples",paraId:7,tocIndex:2},{value:" section.",paraId:6,tocIndex:2}],Sh={},Uh={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow-request-interceptor/index.md",lastUpdated:173254844e4,description:'The pre-operation event plugin introduces a powerful mechanism for intercepting form operation requests. This interception occurs after a form operation is submitted but before it\u2019s processed. If the process triggered includes an "End Process" node or if any other nodes fail to execute correctly (whether due to errors or incomplete execution), the form operation will be intercepted. Otherwise, the operation will proceed as planned. When paired with the "Response Message" node, this feature allows you to configure the process to return specific response messages to the client, offering clear and relevant prompts. Pre-operation events are ideal for business validation or logic checks, enabling the approval or interception of client-submitted requests for creating, updating, or deleting records.'},Ph=[{id:"overview",depth:1,title:"Overview"},{id:"user-guide",depth:2,title:"User Guide"}],Th=[{value:'The pre-operation event plugin introduces a powerful mechanism for intercepting form operation requests. This interception occurs after a form operation is submitted but before it\u2019s processed. If the process triggered includes an "End Process" node or if any other nodes fail to execute correctly (whether due to errors or incomplete execution), the form operation will be intercepted. Otherwise, the operation will proceed as planned. When paired with the "Response Message" node, this feature allows you to configure the process to return specific response messages to the client, offering clear and relevant prompts. Pre-operation events are ideal for business validation or logic checks, enabling the approval or interception of client-submitted requests for creating, updating, or deleting records.',paraId:0},{value:"Using pre-operation events involves several key steps:",paraId:1,tocIndex:1},{value:"Trigger Configuration",paraId:2,tocIndex:1},{value:"Operation Configuration",paraId:3,tocIndex:1},{value:"For a deeper understanding, you can explore ",paraId:4,tocIndex:1},{value:"Advanced Usage",paraId:5,tocIndex:1},{value:", and see how it\u2019s applied in real scenarios by reviewing the ",paraId:4,tocIndex:1},{value:"Examples",paraId:6,tocIndex:1},{value:".",paraId:4,tocIndex:1},{value:"If you need to integrate with an external system, refer to ",paraId:7,tocIndex:1},{value:"External Call",paraId:8,tocIndex:1},{value:".",paraId:7,tocIndex:1}],Ch={},Ah={title:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3",toc:"menu",filename:"docs/en-US/manual/plugin-manager/plugin-settings/index.md",lastUpdated:173254844e4,description:"\u7BA1\u7406\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u4E2A\u96C6\u4E2D\u7BA1\u7406\u548C\u914D\u7F6E\u7CFB\u7EDF\u4FE1\u606F\u4EE5\u53CA\u4E0E\u5DE5\u4F5C\u76F8\u5173\u8BBE\u7F6E\u7684\u5E73\u53F0\u3002\u7528\u6237\u53EF\u4EE5\u6839\u636E\u5176\u7279\u5B9A\u7684\u4E1A\u52A1\u9700\u6C42\u548C\u4E2A\u4EBA\u504F\u597D\u6765\u81EA\u5B9A\u4E49\u7CFB\u7EDF\u3001\u6570\u636E\u8868\u5EFA\u6A21\u3001\u5DE5\u4F5C\u6D41\u914D\u7F6E\u548C\u63D2\u4EF6\u914D\u7F6E"},qh=[{id:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3",depth:1,title:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3"}],Eh=[{value:"\u7BA1\u7406\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u4E2A\u96C6\u4E2D\u7BA1\u7406\u548C\u914D\u7F6E\u7CFB\u7EDF\u4FE1\u606F\u4EE5\u53CA\u4E0E\u5DE5\u4F5C\u76F8\u5173\u8BBE\u7F6E\u7684\u5E73\u53F0\u3002\u7528\u6237\u53EF\u4EE5\u6839\u636E\u5176\u7279\u5B9A\u7684\u4E1A\u52A1\u9700\u6C42\u548C\u4E2A\u4EBA\u504F\u597D\u6765\u81EA\u5B9A\u4E49\u7CFB\u7EDF\u3001\u6570\u636E\u8868\u5EFA\u6A21\u3001\u5DE5\u4F5C\u6D41\u914D\u7F6E\u548C\u63D2\u4EF6\u914D\u7F6E",paraId:0,tocIndex:0},{value:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3\u7684\u7EC4\u6210",paraId:1,tocIndex:0},{value:"\u7F6E\u9876\u7684\u5FEB\u6377\u914D\u7F6E\u9879",paraId:2,tocIndex:0},{value:"\u6240\u6709\u6FC0\u6D3B\u7684\u63D2\u4EF6\u914D\u7F6E\u5217\u8868",paraId:2,tocIndex:0},{value:"\u63D2\u4EF6\u7684\u6807\u7B7E\u9875",paraId:2,tocIndex:0},{value:"\u6B63\u6587\u5185\u5BB9",paraId:2,tocIndex:0}],Dh={},Oh={title:"\u83DC\u5355",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/menus/index.md",lastUpdated:173254844e4,description:"\u5185\u7F6E\u4E09\u79CD\u83DC\u9879\u7C7B\u578B\uFF1A"},Rh=[{id:"\u83DC\u5355",depth:1,title:"\u83DC\u5355"},{id:"\u83DC\u5355\u9879\u7C7B\u578B",depth:2,title:"\u83DC\u5355\u9879\u7C7B\u578B"},{id:"\u5206\u7EC4",depth:3,title:"\u5206\u7EC4"},{id:"\u9875\u9762",depth:3,title:"\u9875\u9762"},{id:"\u94FE\u63A5",depth:3,title:"\u94FE\u63A5"},{id:"\u83DC\u5355\u9879\u8BBE\u8BA1\u5668",depth:2,title:"\u83DC\u5355\u9879\u8BBE\u8BA1\u5668"},{id:"\u83DC\u5355\u9879\u914D\u7F6E",depth:3,title:"\u83DC\u5355\u9879\u914D\u7F6E"}],Mh=[{value:"\u5185\u7F6E\u4E09\u79CD\u83DC\u9879\u7C7B\u578B\uFF1A",paraId:0,tocIndex:1},{value:"\u5206\u7EC4",paraId:1,tocIndex:1},{value:"\u9875\u9762",paraId:1,tocIndex:1},{value:"\u94FE\u63A5",paraId:1,tocIndex:1},{value:"\u4F7F\u7528\u5206\u7EC4\u65F6\uFF0C\u5DE6\u4FA7\u4F1A\u591A\u51FA\u4E00\u4E2A\u5B50\u83DC\u5355",paraId:2,tocIndex:2},{value:"\u9875\u9762\u53EF\u4EE5\u7528\u4E8E\u6DFB\u52A0\u5404\u79CD\u533A\u5757",paraId:3,tocIndex:3},{value:"\u7528\u4E8E URL \u8DF3\u8F6C",paraId:4,tocIndex:4},{value:"\u5728\u83DC\u5355\u9879\u7684\u53F3\u4E0A\u89D2\u6709\u4E24\u4E2A\u56FE\u6807\uFF0C\u5206\u522B\u662F\uFF1A",paraId:5,tocIndex:5},{value:"\u62D6\u62FD\u79FB\u52A8",paraId:6,tocIndex:5},{value:"\u83DC\u5355\u9879\u914D\u7F6E",paraId:6,tocIndex:5},{value:"\u7F16\u8F91\uFF1A\u5305\u62EC\u83DC\u5355\u9879\u7684\u6807\u9898\u3001\u56FE\u6807\u7B49",paraId:7,tocIndex:6},{value:"\u79FB\u52A8\u5230\uFF1A\u9664\u4E86\u62D6\u62FD\u79FB\u52A8\u4EE5\u5916\uFF0C\u4E5F\u53EF\u4EE5\u901A\u8FC7\u300C\u79FB\u52A8\u5230\u300D\u5FEB\u901F\u7684\u79FB\u52A8\u83DC\u5355\u9879",paraId:7,tocIndex:6},{value:"\u5728\u524D\u9762\u63D2\u5165",paraId:7,tocIndex:6},{value:"\u5728\u540E\u9762\u63D2\u5165",paraId:7,tocIndex:6},{value:"\u5728\u91CC\u9762\u63D2\u5165\uFF08\u4EC5\u9650\u4E8E\u5206\u7EC4\u7C7B\u578B\uFF09",paraId:7,tocIndex:6},{value:"\u5220\u9664",paraId:7,tocIndex:6}],Lh={},Nh={title:"\u9875\u9762",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/pages/index.md",lastUpdated:173254844e4,description:"\u542F\u7528\u9875\u9762\u6807\u7B7E\u9875\u4E4B\u540E\uFF0C\u53EF\u4EE5\u5728\u9875\u9762\u91CC\u6DFB\u52A0\u5B50\u9875\u9762\u3002"},zh=[{id:"\u9875\u9762",depth:1,title:"\u9875\u9762"},{id:"\u9875\u9762\u7ED3\u6784",depth:2,title:"\u9875\u9762\u7ED3\u6784"},{id:"\u9875\u9762\u8BBE\u8BA1\u5668",depth:2,title:"\u9875\u9762\u8BBE\u8BA1\u5668"},{id:"\u9875\u9762\u6807\u7B7E\u9875",depth:2,title:"\u9875\u9762\u6807\u7B7E\u9875"},{id:"\u9875\u9762\u5E03\u5C40",depth:2,title:"\u9875\u9762\u5E03\u5C40"}],Fh=[{value:"\u9875\u9762\u8BBE\u8BA1\u5668",paraId:0,tocIndex:1},{value:"\u9875\u9762\u6807\u9898",paraId:0,tocIndex:1},{value:"\u9875\u9762\u6807\u7B7E\u9875\uFF08\u5B50\u9875\u9762\uFF09",paraId:0,tocIndex:1},{value:"\u9875\u9762\u4E3B\u4F53\uFF08\u627F\u8F7D\u533A\u5757\uFF09",paraId:0,tocIndex:1},{value:"\u542F\u7528\u9875\u7709\uFF1A\u7528\u4E8E\u63A7\u5236\u662F\u5426\u663E\u793A\u9875\u7709\uFF1B",paraId:1,tocIndex:2},{value:"\u663E\u793A\u9875\u9762\u6807\u9898\uFF1A\u662F\u5426\u5728\u9875\u7709\u4E2D\u663E\u793A\u9875\u9762\u6807\u9898\uFF1B",paraId:1,tocIndex:2},{value:"\u7F16\u8F91\u9875\u9762\u6807\u9898\uFF1A\u9ED8\u8BA4\u7684\u9875\u9762\u6807\u9898\u4E3A\u83DC\u5355\u9879\u6807\u9898\uFF0C\u4E5F\u53EF\u4EE5\u81EA\u5B9A\u4E49\u4FEE\u6539\uFF1B",paraId:1,tocIndex:2},{value:"\u542F\u7528\u6807\u7B7E\u9875\uFF1A\u6807\u7B7E\u9875\u5373\u9875\u9762\u7684\u5B50\u9875\u9762\u3002",paraId:1,tocIndex:2},{value:"\u542F\u7528\u9875\u9762\u6807\u7B7E\u9875\u4E4B\u540E\uFF0C\u53EF\u4EE5\u5728\u9875\u9762\u91CC\u6DFB\u52A0\u5B50\u9875\u9762\u3002",paraId:2,tocIndex:3},{value:"\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u901A\u8FC7\u62D6\u62FD\u8C03\u6574\u5E03\u5C40\u3002",paraId:3,tocIndex:4}],Bh={},jh={title:"\u56FE\u8868\u533A\u5757",toc:"menu",filename:"docs/en-US/plugins/data-visualization/user/chart-block.md",lastUpdated:173254844e4,description:"\u56FE\u8868\u533A\u5757\u662F\u4E00\u4E2A\u7528\u4E8E\u7EC4\u7EC7\u591A\u4E2A\u56FE\u8868\u7684\u9762\u677F\u3002"},Hh=[{id:"\u56FE\u8868\u533A\u5757",depth:1,title:"\u56FE\u8868\u533A\u5757"},{id:"\u6DFB\u52A0",depth:2,title:"\u6DFB\u52A0"},{id:"\u914D\u7F6E",depth:2,title:"\u914D\u7F6E"}],Wh=[{value:"\u56FE\u8868\u533A\u5757\u662F\u4E00\u4E2A\u7528\u4E8E\u7EC4\u7EC7\u591A\u4E2A\u56FE\u8868\u7684\u9762\u677F\u3002",paraId:0,tocIndex:0},{value:"\u70B9\u51FB\u201C\u6DFB\u52A0\u533A\u5757\u201D (Add block) - \u201C\u56FE\u8868\u201D (Charts)\uFF0C\u53EF\u4EE5\u521B\u5EFA\u53EF\u4EE5\u7A7A\u767D\u7684\u56FE\u8868\u533A\u5757\u3002",paraId:1,tocIndex:1},{value:"\u5728\u56FE\u8868\u533A\u5757\u4E2D\u70B9\u51FB\u201C\u6DFB\u52A0\u533A\u5757\u201D (Add block) - \u201C\u56FE\u8868\u201D (Chart)\uFF0C\u9009\u62E9\u5BF9\u5E94\u7684\u6570\u636E\u8868 (Collection), \u53EF\u4EE5\u521B\u5EFA\u548C\u914D\u7F6E\u56FE\u8868\u3002\u6709\u67E5\u770B\u6743\u9650\u7684\u6570\u636E\u8868\u624D\u53EF\u4EE5\u7528\u4E8E\u914D\u7F6E\u56FE\u8868\uFF0C\u5426\u5219\u5C06\u4F1A\u5728\u9009\u9879\u4E2D\u88AB\u9690\u85CF\u3002",paraId:2,tocIndex:1},{value:"\u56FE\u8868\u533A\u5757\u4E2D\u7684\u56FE\u8868\u53EF\u4EE5\u50CF\u666E\u901A\u533A\u5757\u4E00\u6837\uFF0C\u5728\u56FE\u8868\u533A\u5757\u4E2D\uFF0C\u81EA\u7531\u62D6\u62FD\u548C\u7EC4\u7EC7\u3002",paraId:3,tocIndex:2},{value:"\u70B9\u51FB\u201C\u914D\u7F6E\u201D (Configure) \u6309\u94AE\uFF0C\u53EF\u4EE5\u5BF9\u5F53\u524D\u56FE\u8868\u8FDB\u884C\u4FEE\u6539\u3002",paraId:3,tocIndex:2},{value:"\u70B9\u51FB\u201C\u590D\u5236\u201D (Duplicate) \u6309\u94AE\uFF0C\u53EF\u4EE5\u5FEB\u901F\u590D\u5236\u5F53\u524D\u56FE\u8868\u3002",paraId:3,tocIndex:2},{value:"\u53EF\u4EE5\u201C\u7F16\u8F91\u533A\u5757\u6807\u9898\u201D (Edit block title)\uFF0C\u7ED9\u5F53\u524D\u56FE\u8868\u6DFB\u52A0\u6807\u9898\u8BF4\u660E\u3002",paraId:3,tocIndex:2}],$h={},Gh={title:"\u6570\u636E\u8868\u4E8B\u4EF6",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/triggers/collection.md",lastUpdated:173254844e4,description:"\u6570\u636E\u8868\u4E8B\u4EF6\u7C7B\u578B\u7684\u89E6\u53D1\u5668\u5C06\u76D1\u542C\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u4E8B\u4EF6\uFF0C\u5F53\u53D1\u751F\u5BF9\u8BE5\u8868\u7684\u6570\u636E\u64CD\u4F5C\u4E14\u6EE1\u8DB3\u914D\u7F6E\u7684\u6761\u4EF6\u65F6\uFF0C\u89E6\u53D1\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u3002\u4F8B\u5982\u65B0\u589E\u8BA2\u5355\u540E\u6263\u51CF\u5546\u54C1\u7684\u5E93\u5B58\uFF0C\u65B0\u589E\u4E00\u6761\u8BC4\u8BBA\u540E\u7B49\u5F85\u4EBA\u5DE5\u5BA1\u6838\u7B49\u573A\u666F\u3002"},Vh=[{id:"\u6570\u636E\u8868\u4E8B\u4EF6",depth:1,title:"\u6570\u636E\u8868\u4E8B\u4EF6"},{id:"\u57FA\u672C\u4F7F\u7528",depth:2,title:"\u57FA\u672C\u4F7F\u7528"},{id:"\u76F8\u5173\u63D0\u793A",depth:2,title:"\u76F8\u5173\u63D0\u793A"},{id:"\u6682\u4E0D\u652F\u6301\u6279\u91CF\u6570\u636E\u64CD\u4F5C\u89E6\u53D1",depth:3,title:"\u6682\u4E0D\u652F\u6301\u6279\u91CF\u6570\u636E\u64CD\u4F5C\u89E6\u53D1"},{id:"\u975E\u5E94\u7528\u5185\u7684\u6570\u636E\u64CD\u4F5C\u4E0D\u4F1A\u89E6\u53D1",depth:3,title:"\u975E\u5E94\u7528\u5185\u7684\u6570\u636E\u64CD\u4F5C\u4E0D\u4F1A\u89E6\u53D1"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],Kh=[{value:"\u6570\u636E\u8868\u4E8B\u4EF6\u7C7B\u578B\u7684\u89E6\u53D1\u5668\u5C06\u76D1\u542C\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u4E8B\u4EF6\uFF0C\u5F53\u53D1\u751F\u5BF9\u8BE5\u8868\u7684\u6570\u636E\u64CD\u4F5C\u4E14\u6EE1\u8DB3\u914D\u7F6E\u7684\u6761\u4EF6\u65F6\uFF0C\u89E6\u53D1\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u3002\u4F8B\u5982\u65B0\u589E\u8BA2\u5355\u540E\u6263\u51CF\u5546\u54C1\u7684\u5E93\u5B58\uFF0C\u65B0\u589E\u4E00\u6761\u8BC4\u8BBA\u540E\u7B49\u5F85\u4EBA\u5DE5\u5BA1\u6838\u7B49\u573A\u666F\u3002",paraId:0,tocIndex:0},{value:"\u6570\u636E\u8868\u7684\u53D8\u52A8\u6709\u51E0\u79CD\u60C5\u51B5\uFF1A",paraId:1,tocIndex:1},{value:"\u65B0\u589E\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:"\u66F4\u65B0\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:"\u65B0\u589E\u6216\u66F4\u65B0\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:"\u5220\u9664\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:` `,paraId:3},{value:"\u53EF\u4EE5\u6839\u636E\u4E1A\u52A1\u7684\u4E0D\u540C\u9700\u8981\u9009\u62E9\u89E6\u53D1\u7684\u65F6\u673A\u3002\u5F53\u9009\u62E9\u53D8\u52A8\u60C5\u51B5\u4E2D\u5305\u542B\u66F4\u65B0\u6570\u636E\u8868\u7684\u60C5\u51B5\u65F6\uFF0C\u8FD8\u53EF\u4EE5\u5BF9\u53D1\u751F\u53D8\u52A8\u7684\u5B57\u6BB5\u8FDB\u884C\u9650\u5B9A\uFF0C\u53EA\u6709\u9009\u4E2D\u5B57\u6BB5\u53D1\u751F\u53D8\u52A8\u65F6\uFF0C\u624D\u6EE1\u8DB3\u89E6\u53D1\u6761\u4EF6\uFF0C\u4E0D\u9009\u62E9\u5219\u4EE3\u8868\u6240\u6709\u5B57\u6BB5\u53D1\u751F\u53D8\u52A8\u90FD\u53EF\u4EE5\u89E6\u53D1\u3002",paraId:4,tocIndex:1},{value:` `,paraId:3},{value:"\u66F4\u7EC6\u8282\u5730\uFF0C\u53EF\u4EE5\u5BF9\u89E6\u53D1\u7684\u6570\u636E\u884C\u7684\u5404\u4E2A\u5B57\u6BB5\u914D\u7F6E\u6761\u4EF6\u89C4\u5219\uFF0C\u5F53\u5176\u4E2D\u7684\u5B57\u6BB5\u6EE1\u8DB3\u76F8\u5E94\u6761\u4EF6\uFF0C\u624D\u8FDB\u884C\u89E6\u53D1\u3002",paraId:5,tocIndex:1},{value:` `,paraId:3},{value:"\u6570\u636E\u8868\u4E8B\u4EF6\u89E6\u53D1\u540E\u4F1A\u5728\u6267\u884C\u8BA1\u5212\u4E2D\u6CE8\u5165\u4EA7\u751F\u4E8B\u4EF6\u7684\u6570\u636E\u884C\u4F5C\u4E3A\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u4EE5\u4F9B\u540E\u7EED\u6D41\u7A0B\u4E2D\u7684\u8282\u70B9\u4F5C\u4E3A\u53D8\u91CF\u8C03\u7528\u3002\u4F46\u5F53\u540E\u7EED\u8282\u70B9\u4E2D\u5E0C\u671B\u4F7F\u7528\u8BE5\u6570\u636E\u7684\u5173\u7CFB\u5B57\u6BB5\u65F6\uFF0C\u9700\u8981\u5148\u914D\u7F6E\u5BF9\u5173\u7CFB\u6570\u636E\u7684\u9884\u52A0\u8F7D\uFF0C\u9009\u4E2D\u7684\u5173\u7CFB\u6570\u636E\u5C06\u4F1A\u5728\u89E6\u53D1\u540E\u4E00\u5E76\u6CE8\u5165\u5230\u4E0A\u4E0B\u6587\u4E2D\uFF0C\u4E14\u53EF\u88AB\u6309\u5C42\u7EA7\u8FDB\u884C\u9009\u62E9\u4F7F\u7528\u3002",paraId:6,tocIndex:1},{value:"\u6570\u636E\u8868\u4E8B\u4EF6\u4E8B\u4EF6\u6682\u4E0D\u652F\u6301\u6279\u91CF\u6570\u636E\u64CD\u4F5C\u7684\u89E6\u53D1\uFF0C\u4F8B\u5982\u65B0\u589E\u6587\u7AE0\u6570\u636E\u65F6\u540C\u65F6\u65B0\u589E\u7684\u8BE5\u6587\u7AE0\u7684\u591A\u4E2A\u6807\u7B7E\u6570\u636E\uFF08\u5BF9\u591A\u5173\u7CFB\u6570\u636E\uFF09\uFF0C\u5C06\u4EC5\u80FD\u89E6\u53D1\u5BF9\u6587\u7AE0\u65B0\u589E\u7684\u5DE5\u4F5C\u6D41\uFF0C\u800C\u540C\u65F6\u65B0\u589E\u7684\u591A\u4E2A\u6807\u7B7E\u5C06\u4E0D\u4F1A\u89E6\u53D1\u65B0\u589E\u6807\u7B7E\u7684\u5DE5\u4F5C\u6D41\u3002\u591A\u5BF9\u591A\u5173\u7CFB\u6570\u636E\u7684\u5173\u8054\u548C\u65B0\u589E\u65F6\uFF0C\u4E5F\u4E0D\u4F1A\u89E6\u53D1\u4E2D\u95F4\u8868\u7684\u5DE5\u4F5C\u6D41\u3002",paraId:7,tocIndex:3},{value:"\u53E6\u5916\uFF0C\u901A\u8FC7 HTTP API \u8C03\u7528\u5E94\u7528\u63A5\u53E3\u5BF9\u6570\u636E\u8868\u7684\u64CD\u4F5C\u4E5F\u53EF\u4EE5\u89E6\u53D1\u76F8\u5E94\u4E8B\u4EF6\uFF0C\u4F46\u5982\u679C\u4E0D\u901A\u8FC7 NodoBase \u5E94\u7528\uFF0C\u800C\u662F\u76F4\u63A5\u901A\u8FC7\u6570\u636E\u5E93\u64CD\u4F5C\u4EA7\u751F\u7684\u6570\u636E\u53D8\u52A8\uFF0C\u5C31\u65E0\u6CD5\u89E6\u53D1\u76F8\u5E94\u4E8B\u4EF6\u3002\u6BD4\u5982\u6570\u636E\u5E93\u4E2D\u672C\u8EAB\u7684\u89E6\u53D1\u5668\u4E0D\u4F1A\u4E0E\u5E94\u7528\u4E2D\u7684\u5DE5\u4F5C\u6D41\u4EA7\u751F\u5173\u8054\u3002",paraId:8,tocIndex:4},{value:"\u4EE5\u65B0\u589E\u4E00\u4E2A\u8BA2\u5355\u540E\u8BA1\u7B97\u603B\u4EF7\u5E76\u6263\u51CF\u5E93\u5B58\u7684\u573A\u666F\u4E3E\u4F8B\u3002",paraId:9,tocIndex:5},{value:"\u9996\u5148\uFF0C\u6211\u4EEC\u521B\u5EFA\u5546\u54C1\u8868\u548C\u8BA2\u5355\u8868\uFF0C\u6570\u636E\u6A21\u578B\u5982\u4E0B\uFF1A",paraId:10,tocIndex:5},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:11,tocIndex:5},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:11,tocIndex:5},{value:"\u5546\u54C1\u540D\u79F0",paraId:11,tocIndex:5},{value:"\u5355\u884C\u6587\u672C",paraId:11,tocIndex:5},{value:"\u4EF7\u683C",paraId:11,tocIndex:5},{value:"\u6570\u5B57",paraId:11,tocIndex:5},{value:"\u5E93\u5B58",paraId:11,tocIndex:5},{value:"\u6574\u6570",paraId:11,tocIndex:5},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:12,tocIndex:5},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:12,tocIndex:5},{value:"\u8BA2\u5355\u53F7",paraId:12,tocIndex:5},{value:"\u81EA\u52A8\u7F16\u53F7",paraId:12,tocIndex:5},{value:"\u8BA2\u5355\u5546\u54C1",paraId:12,tocIndex:5},{value:"\u591A\u5BF9\u4E00\uFF08\u5546\u54C1\uFF09",paraId:12,tocIndex:5},{value:"\u8BA2\u5355\u603B\u4EF7",paraId:12,tocIndex:5},{value:"\u6570\u5B57",paraId:12,tocIndex:5},{value:"\u5E76\u6DFB\u52A0\u57FA\u7840\u7684\u5546\u54C1\u6570\u636E\uFF1A",paraId:13,tocIndex:5},{value:"\u5546\u54C1\u540D\u79F0",paraId:14,tocIndex:5},{value:"\u4EF7\u683C",paraId:14,tocIndex:5},{value:"\u5E93\u5B58",paraId:14,tocIndex:5},{value:"iPhone 14 Pro",paraId:14,tocIndex:5},{value:"7999",paraId:14,tocIndex:5},{value:"10",paraId:14,tocIndex:5},{value:"iPhone 13 Pro",paraId:14,tocIndex:5},{value:"5999",paraId:14,tocIndex:5},{value:"0",paraId:14,tocIndex:5},{value:"\u7136\u540E\u521B\u5EFA\u4E00\u4E2A\u57FA\u4E8E\u8BA2\u5355\u6570\u636E\u8868\u4E8B\u4EF6\u7684\u5DE5\u4F5C\u6D41\uFF1A",paraId:15,tocIndex:5},{value:` `,paraId:3},{value:"\u5176\u4E2D\u7684\u51E0\u4E2A\u914D\u7F6E\u9879\uFF1A",paraId:16,tocIndex:5},{value:"\u6570\u636E\u8868\uFF1A\u9009\u62E9\u201C\u8BA2\u5355\u201D\u8868\u3002",paraId:17,tocIndex:5},{value:"\u89E6\u53D1\u65F6\u673A\uFF1A\u9009\u62E9\u201C\u65B0\u589E\u6570\u636E\u540E\u201D\u89E6\u53D1\u3002",paraId:17,tocIndex:5},{value:"\u89E6\u53D1\u6761\u4EF6\uFF1A\u7559\u7A7A\u3002",paraId:17,tocIndex:5},{value:"\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E\uFF1A\u52FE\u9009\u201C\u5546\u54C1\u201D\u3002",paraId:17,tocIndex:5},{value:"\u4E4B\u540E\u6839\u636E\u6D41\u7A0B\u7684\u903B\u8F91\u914D\u7F6E\u5176\u4ED6\u8282\u70B9\uFF0C\u68C0\u67E5\u5546\u54C1\u5E93\u5B58\u662F\u5426\u5927\u4E8E 0\uFF0C\u5927\u4E8E 0 \u7684\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u65E0\u6548\u5220\u9664\u8BA2\u5355\uFF1A",paraId:18,tocIndex:5},{value:` `,paraId:3},{value:"\u8282\u70B9\u7684\u914D\u7F6E\u4F1A\u5728\u5177\u4F53\u7C7B\u578B\u7684\u4ECB\u7ECD\u6587\u6863\u4E2D\u8BE6\u7EC6\u8BF4\u660E\u3002",paraId:19,tocIndex:5},{value:"\u542F\u7528\u8BE5\u5DE5\u4F5C\u6D41\uFF0C\u5E76\u901A\u8FC7\u754C\u9762\u65B0\u589E\u8BA2\u5355\u6765\u6D4B\u8BD5\u3002\u5BF9\u201CiPhone 14 Pro\u201D\u4E0B\u5355\u540E\uFF0C\u5BF9\u5E94\u5546\u54C1\u7684\u5E93\u5B58\u4F1A\u6263\u51CF\u4E3A 9\uFF0C\u800C\u5982\u679C\u5BF9\u201CiPhone 13 Pro\u201D\u4E0B\u5355\uFF0C\u7531\u4E8E\u5E93\u5B58\u4E0D\u8DB3\uFF0C\u8BA2\u5355\u5C06\u88AB\u5220\u9664\u3002",paraId:20,tocIndex:5},{value:` - `,paraId:3}],Zh={},Yh={title:"Env Note",toc:"menu",filename:"docs/en-US/welcome/getting-started/deployment/env-note.md",lastUpdated:1732240239e3,description:"Points to Note:"},Qh=[],Jh=[{value:"Points to Note:",paraId:0},{value:"TZ",paraId:1},{value:" is used to set the application's time zone, with the default being the system's time zone;",paraId:1},{value:"APP_KEY",paraId:1},{value:" is the application's secret key, used for generating user tokens and so on (if APP_KEY is changed, the old tokens will also become invalid). It can be any random string. Please change it to your own secret key and ensure it is not disclosed to the public.",paraId:1},{value:"DB_*",paraId:1},{value:" is related to the database. If it is not the default database service in the example, please modify it according to the actual situation;",paraId:1},{value:"When deploying in a production environment, ",paraId:1},{value:"APP_ENV=production",paraId:1},{value:";",paraId:1},{value:"When deploying on a subpath, you need to configure ",paraId:1},{value:"APP_PUBLIC_PATH",paraId:1},{value:", such as ",paraId:1},{value:"APP_PUBLIC_PATH=/nocobase/",paraId:1},{value:".",paraId:1}],Xh={},ef={title:"Upgrading for Git source code",toc:"menu",filename:"docs/en-US/welcome/getting-started/upgrading/git-clone.md",lastUpdated:1732240239e3,description:"Make sure to backup the database before upgrading!!!"},af=[{id:"upgrading-for-git-source-code",depth:1,title:"Upgrading for Git source code"},{id:"0-preparing-for-the-upgrade",depth:2,title:"0. Preparing for the upgrade"},{id:"1-switch-to-the-nocobase-project-directory",depth:2,title:"1. switch to the NocoBase project directory"},{id:"2-pull-the-latest-code",depth:2,title:"2. Pull the latest code"},{id:"3-delete-cache-and-dependencies-optional",depth:2,title:"3. Delete cache and dependencies (optional)"},{id:"4-update-dependencies",depth:2,title:"4. Update dependencies"},{id:"5-execute-the-update-command",depth:2,title:"5. Execute the update command"},{id:"6-start-nocobase",depth:2,title:"6. Start NocoBase"},{id:"7-upgrading-independent-plugins",depth:2,title:"7. Upgrading independent plugins"}],tf=[{value:"Make sure to backup the database before upgrading!!!",paraId:0},{value:`cd my-nocobase-app + `,paraId:3}],Zh={},Yh={title:"Env Note",toc:"menu",filename:"docs/en-US/welcome/getting-started/deployment/env-note.md",lastUpdated:173254844e4,description:"Points to Note:"},Qh=[],Jh=[{value:"Points to Note:",paraId:0},{value:"TZ",paraId:1},{value:" is used to set the application's time zone, with the default being the system's time zone;",paraId:1},{value:"APP_KEY",paraId:1},{value:" is the application's secret key, used for generating user tokens and so on (if APP_KEY is changed, the old tokens will also become invalid). It can be any random string. Please change it to your own secret key and ensure it is not disclosed to the public.",paraId:1},{value:"DB_*",paraId:1},{value:" is related to the database. If it is not the default database service in the example, please modify it according to the actual situation;",paraId:1},{value:"When deploying in a production environment, ",paraId:1},{value:"APP_ENV=production",paraId:1},{value:";",paraId:1},{value:"When deploying on a subpath, you need to configure ",paraId:1},{value:"APP_PUBLIC_PATH",paraId:1},{value:", such as ",paraId:1},{value:"APP_PUBLIC_PATH=/nocobase/",paraId:1},{value:".",paraId:1}],Xh={},ef={title:"Upgrading for Git source code",toc:"menu",filename:"docs/en-US/welcome/getting-started/upgrading/git-clone.md",lastUpdated:173254844e4,description:"Make sure to backup the database before upgrading!!!"},af=[{id:"upgrading-for-git-source-code",depth:1,title:"Upgrading for Git source code"},{id:"0-preparing-for-the-upgrade",depth:2,title:"0. Preparing for the upgrade"},{id:"1-switch-to-the-nocobase-project-directory",depth:2,title:"1. switch to the NocoBase project directory"},{id:"2-pull-the-latest-code",depth:2,title:"2. Pull the latest code"},{id:"3-delete-cache-and-dependencies-optional",depth:2,title:"3. Delete cache and dependencies (optional)"},{id:"4-update-dependencies",depth:2,title:"4. Update dependencies"},{id:"5-execute-the-update-command",depth:2,title:"5. Execute the update command"},{id:"6-start-nocobase",depth:2,title:"6. Start NocoBase"},{id:"7-upgrading-independent-plugins",depth:2,title:"7. Upgrading independent plugins"}],tf=[{value:"Make sure to backup the database before upgrading!!!",paraId:0},{value:`cd my-nocobase-app `,paraId:1,tocIndex:2},{value:`git pull `,paraId:2,tocIndex:3},{value:"If the normal upgrade process fails, try emptying the cache and dependencies and re-downloading it.",paraId:3,tocIndex:4},{value:`# delete nocobase cache yarn nocobase clean @@ -4124,23 +4176,23 @@ yarn build # Start yarn start -`,paraId:10,tocIndex:7},{value:"After upgrading NocoBase, independent plugins installed through the interface might also need to be upgraded. Please refer to documentation ",paraId:11,tocIndex:8},{value:"Installation and Upgrade of Plugins",paraId:12,tocIndex:8}],nf={},of={title:"SchemaSettings",toc:"menu",filename:"docs/en-US/api/client/schema-designer/schema-settings.md",lastUpdated:1732240239e3},rf=[{id:"schemasettings",depth:1,title:"SchemaSettings"},{id:"schemasettings-",depth:3,title:""},{id:"schemasettingsitem-",depth:3,title:""},{id:"schemasettingsitemgroup-",depth:3,title:""},{id:"schemasettingssubmenu-",depth:3,title:""},{id:"schemasettingsdivider-",depth:3,title:""},{id:"schemasettingsremove-",depth:3,title:""},{id:"schemasettingsselectitem-",depth:3,title:""},{id:"schemasettingsswitchitem-",depth:3,title:""},{id:"schemasettingsmodalitem-",depth:3,title:""},{id:"schemasettingsactionmodalitem-",depth:3,title:""},{id:"schemasettingstemplate-",depth:3,title:""},{id:"schemasettingsblocktitleitem-",depth:3,title:""}],df=[{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0}],lf={},cf={title:"Plugin Management",toc:"menu",filename:"docs/en-US/handbook/client/user/plugin-settings/index.md",lastUpdated:1732240239e3,description:"The Management Center offers users a unified platform to manage and configure system information and work-related settings. It allows users to tailor the system, data table modeling, workflow configuration, and plugin settings to meet their specific business needs and personal preferences."},sf=[{id:"plugin-management",depth:1,title:"Plugin Management"},{id:"overview-of-the-plugin-management-center",depth:2,title:"Overview of the Plugin Management Center"}],uf=[{value:"The Management Center offers users a unified platform to manage and configure system information and work-related settings. It allows users to tailor the system, data table modeling, workflow configuration, and plugin settings to meet their specific business needs and personal preferences.",paraId:0,tocIndex:0},{value:"Quick Configuration Items at the Top",paraId:1,tocIndex:1},{value:"List of All Activated Plugin Configurations",paraId:1,tocIndex:1},{value:"Plugin Tabs",paraId:1,tocIndex:1},{value:"Main Content Area",paraId:1,tocIndex:1}],pf={},If={title:"Statistical Values",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd/statistic.md",lastUpdated:1732240239e3},_f=[{id:"statistical-values",depth:1,title:"Statistical Values"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-metric",depth:3,title:"1 Metric"},{id:"configuration-options",depth:2,title:"Configuration Options"}],vf=[{value:"Configuration Item",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Link",paraId:0,tocIndex:3},{value:"Fixed link, clickable for redirection",paraId:0,tocIndex:3}],mf={},hf={title:"Column Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/column.md",lastUpdated:1732240239e3,description:"Configure 1 measure and 2 dimensions. 1 dimension serves as the X-axis field (X field), and the other as the Series field."},ff=[{id:"column-chart",depth:1,title:"Column Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-or-more-measures-1-dimension",depth:3,title:"1 or More Measures, 1 Dimension"},{id:"1-measure-1-axis-dimension-1-category-dimension",depth:3,title:"1 Measure, 1 Axis Dimension, 1 Category Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],xf=[{value:"Configure 1 measure and 2 dimensions. 1 dimension serves as the X-axis field (X field), and the other as the Series field.",paraId:0,tocIndex:3},{value:"Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"xField",paraId:1,tocIndex:4},{value:"Dimension field for the X-axis",paraId:1,tocIndex:4},{value:"seriesField",paraId:1,tocIndex:4},{value:"Dimension field for categorization",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Set the chart size, either with a fixed aspect ratio or a fixed height",paraId:1,tocIndex:4},{value:"Light mode theme",paraId:1,tocIndex:4},{value:"Preview the chart when the system is in light mode",paraId:1,tocIndex:4},{value:"Dark mode theme",paraId:1,tocIndex:4},{value:"Preview the chart when the system is in dark mode",paraId:1,tocIndex:4},{value:"Show legend",paraId:1,tocIndex:4},{value:"Toggle the visibility of the legend",paraId:1,tocIndex:4},{value:"Legend orient Legend orient",paraId:1,tocIndex:4},{value:"Set the orientation of the legend, either horizontal or vertical",paraId:1,tocIndex:4},{value:"Legend position (left, bottom, right, top)",paraId:1,tocIndex:4},{value:"Set the position of the legend relative to the chart",paraId:1,tocIndex:4},{value:"Label type",paraId:1,tocIndex:4},{value:"Control whether to display labels and which type of labels to show",paraId:1,tocIndex:4},{value:"Label position",paraId:1,tocIndex:4},{value:"Set the position of the labels, such as top, inside, or inside top",paraId:1,tocIndex:4},{value:"Stack",paraId:1,tocIndex:4},{value:"Control whether the bars are stacked, with options for no stacking, stacking, or percentage stacking ",paraId:1,tocIndex:4},{value:" ",paraId:1,tocIndex:4},{value:"Bar width (min, max)",paraId:1,tocIndex:4},{value:"Control the width of the bars, which can be a fixed value, percentage, or even negative values",paraId:1,tocIndex:4},{value:"Bar gap",paraId:1,tocIndex:4},{value:"Set the spacing between bars, as a percentage of the bar width",paraId:1,tocIndex:4},{value:"Bar category gap",paraId:1,tocIndex:4},{value:"Set the spacing between different categories, as a percentage of the bar width",paraId:1,tocIndex:4},{value:"Color by",paraId:1,tocIndex:4},{value:"Set bar colors by category or by data",paraId:1,tocIndex:4},{value:"Colors",paraId:1,tocIndex:4},{value:"Fine-tune the color for each category",paraId:1,tocIndex:4},{value:"X-Axis title",paraId:1,tocIndex:4},{value:"Control the display position of the X-axis title",paraId:1,tocIndex:4},{value:"Y-Axis title",paraId:1,tocIndex:4},{value:"Control the display position of the Y-axis title",paraId:1,tocIndex:4},{value:"X-Axis label rotate",paraId:1,tocIndex:4},{value:"Adjust the rotation angle of the X-axis labels to display more labels when they are dense",paraId:1,tocIndex:4},{value:"Padding",paraId:1,tocIndex:4},{value:"Adjust the chart's inner padding",paraId:1,tocIndex:4},{value:"Split line",paraId:1,tocIndex:4},{value:"Control whether gridlines are displayed and their style",paraId:1,tocIndex:4},{value:"Mark line",paraId:1,tocIndex:4},{value:"Add marker lines with custom titles, values, and colors",paraId:1,tocIndex:4}],gf={},bf={title:"Funnel Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/funnel.md",lastUpdated:1732240239e3},yf=[{id:"funnel-chart",depth:1,title:"Funnel Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-metric-1-dimension",depth:3,title:"1 Metric, 1 Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],wf=[{value:"Option",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Size",paraId:0,tocIndex:3},{value:"Set the chart size, choosing either a fixed aspect ratio or a fixed height.",paraId:0,tocIndex:3},{value:"Light mode theme",paraId:0,tocIndex:3},{value:"Required for previewing the chart in light mode.",paraId:0,tocIndex:3},{value:"Dark mode theme",paraId:0,tocIndex:3},{value:"Required for previewing the chart in dark mode.",paraId:0,tocIndex:3},{value:"Show legend",paraId:0,tocIndex:3},{value:"Toggles the visibility of the chart legend.",paraId:0,tocIndex:3},{value:"Legend orient",paraId:0,tocIndex:3},{value:"Sets the orientation of the legend, either horizontally or vertically.",paraId:0,tocIndex:3},{value:"Legend position (left, bottom, right, top)",paraId:0,tocIndex:3},{value:"Adjusts the position of the legend relative to the chart, offering flexibility in placement.",paraId:0,tocIndex:3},{value:"Label type",paraId:0,tocIndex:3},{value:"Controls whether labels are shown and specifies the label format.",paraId:0,tocIndex:3},{value:"Show label line",paraId:0,tocIndex:3},{value:"Determines whether the label line is displayed, applicable only when labels are positioned outside the funnel.",paraId:0,tocIndex:3},{value:"Label position",paraId:0,tocIndex:3},{value:"Sets the label position, either inside or outside of the funnel.",paraId:0,tocIndex:3},{value:"Funnel size (min, max)",paraId:0,tocIndex:3},{value:"Adjusts the size of the funnel chart. Modifying the minimum value controls whether the funnel ends in a pointed or flat base.",paraId:0,tocIndex:3},{value:"Padding",paraId:0,tocIndex:3},{value:"Adjusts the internal padding around the chart.",paraId:0,tocIndex:3}],kf={},Sf={title:"Configuration Panel",toc:"menu",filename:"docs/en-US/handbook/data-visualization/user/configure.md",lastUpdated:1732240239e3,description:"The chart configuration panel is organized into three primary sections: Data Configuration, Chart Configuration, and Chart Preview."},Uf=[{id:"configuration-panel",depth:1,title:"Configuration Panel"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"measures",depth:3,title:"Measures"},{id:"dimensions",depth:3,title:"Dimensions"},{id:"filter",depth:3,title:"Filter"},{id:"sort-and-limit",depth:3,title:"Sort and Limit"},{id:"cache",depth:3,title:"Cache"},{id:"chart-configuration",depth:2,title:"Chart Configuration"},{id:"container-configuration",depth:3,title:"Container Configuration"},{id:"chart-configuration-1",depth:3,title:"Chart Configuration"},{id:"data-transformation",depth:2,title:"Data Transformation"}],Pf=[{value:"The chart configuration panel is organized into three primary sections: Data Configuration, Chart Configuration, and Chart Preview.",paraId:0,tocIndex:0},{value:"The drop-down at the top represents the current Collection being configured, which can be switched using the drop-down menu.",paraId:1,tocIndex:1},{value:'Once the configuration is complete, clicking "Run Query" will retrieve the data according to the settings. The "Data" panel will display the resulting data.',paraId:1,tocIndex:1},{value:"Measure fields contain the key data that the chart will display. These fields can be aggregated using functions such as ",paraId:2,tocIndex:2},{value:"Sum",paraId:2,tocIndex:2},{value:", ",paraId:2,tocIndex:2},{value:"Count",paraId:2,tocIndex:2},{value:", ",paraId:2,tocIndex:2},{value:"Avg",paraId:2,tocIndex:2},{value:", ",paraId:2,tocIndex:2},{value:"Max",paraId:2,tocIndex:2},{value:", and ",paraId:2,tocIndex:2},{value:"Min",paraId:2,tocIndex:2},{value:". You can add multiple measure fields, and assign aliases to them as needed.",paraId:2,tocIndex:2},{value:"Dimension fields determine how the data is grouped within the chart. For date-type fields, various formatting options are available, as shown in the image. Formatting is handled by database functions (e.g., ",paraId:3,tocIndex:3},{value:"date_format",paraId:3,tocIndex:3},{value:" in MySQL). For other data types, refer to the ",paraId:3,tocIndex:3},{value:"Data Transformation",paraId:4,tocIndex:3},{value:" section.",paraId:3,tocIndex:3},{value:"Dimension Formatting VS Data Transformation",paraId:5},{value:"Dimension formatting occurs before the final data is fetched, grouping data according to the formatted dimension values. This is commonly needed when filtering data by time periods.",paraId:6},{value:"Data transformation further refines the data after it is retrieved, enhancing readability and presentation. This transformation is applied on the frontend.",paraId:6},{value:"Filters are applied to the data before grouping. You can use variables for dynamic filtering:",paraId:7,tocIndex:4},{value:"Current User: Information related to the currently logged-in user.",paraId:8,tocIndex:4},{value:`Date Variables: Date ranges dynamically calculated based on the current date. +`,paraId:10,tocIndex:7},{value:"After upgrading NocoBase, independent plugins installed through the interface might also need to be upgraded. Please refer to documentation ",paraId:11,tocIndex:8},{value:"Installation and Upgrade of Plugins",paraId:12,tocIndex:8}],nf={},of={title:"SchemaSettings",toc:"menu",filename:"docs/en-US/api/client/schema-designer/schema-settings.md",lastUpdated:173254844e4},rf=[{id:"schemasettings",depth:1,title:"SchemaSettings"},{id:"schemasettings-",depth:3,title:""},{id:"schemasettingsitem-",depth:3,title:""},{id:"schemasettingsitemgroup-",depth:3,title:""},{id:"schemasettingssubmenu-",depth:3,title:""},{id:"schemasettingsdivider-",depth:3,title:""},{id:"schemasettingsremove-",depth:3,title:""},{id:"schemasettingsselectitem-",depth:3,title:""},{id:"schemasettingsswitchitem-",depth:3,title:""},{id:"schemasettingsmodalitem-",depth:3,title:""},{id:"schemasettingsactionmodalitem-",depth:3,title:""},{id:"schemasettingstemplate-",depth:3,title:""},{id:"schemasettingsblocktitleitem-",depth:3,title:""}],df=[{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0}],lf={},cf={title:"Plugin Management",toc:"menu",filename:"docs/en-US/handbook/client/user/plugin-settings/index.md",lastUpdated:173254844e4,description:"The Management Center offers users a unified platform to manage and configure system information and work-related settings. It allows users to tailor the system, data table modeling, workflow configuration, and plugin settings to meet their specific business needs and personal preferences."},sf=[{id:"plugin-management",depth:1,title:"Plugin Management"},{id:"overview-of-the-plugin-management-center",depth:2,title:"Overview of the Plugin Management Center"}],uf=[{value:"The Management Center offers users a unified platform to manage and configure system information and work-related settings. It allows users to tailor the system, data table modeling, workflow configuration, and plugin settings to meet their specific business needs and personal preferences.",paraId:0,tocIndex:0},{value:"Quick Configuration Items at the Top",paraId:1,tocIndex:1},{value:"List of All Activated Plugin Configurations",paraId:1,tocIndex:1},{value:"Plugin Tabs",paraId:1,tocIndex:1},{value:"Main Content Area",paraId:1,tocIndex:1}],pf={},If={title:"Statistical Values",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd/statistic.md",lastUpdated:173254844e4},_f=[{id:"statistical-values",depth:1,title:"Statistical Values"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-metric",depth:3,title:"1 Metric"},{id:"configuration-options",depth:2,title:"Configuration Options"}],vf=[{value:"Configuration Item",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Link",paraId:0,tocIndex:3},{value:"Fixed link, clickable for redirection",paraId:0,tocIndex:3}],mf={},hf={title:"Column Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/column.md",lastUpdated:173254844e4,description:"Configure 1 measure and 2 dimensions. 1 dimension serves as the X-axis field (X field), and the other as the Series field."},ff=[{id:"column-chart",depth:1,title:"Column Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-or-more-measures-1-dimension",depth:3,title:"1 or More Measures, 1 Dimension"},{id:"1-measure-1-axis-dimension-1-category-dimension",depth:3,title:"1 Measure, 1 Axis Dimension, 1 Category Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],xf=[{value:"Configure 1 measure and 2 dimensions. 1 dimension serves as the X-axis field (X field), and the other as the Series field.",paraId:0,tocIndex:3},{value:"Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"xField",paraId:1,tocIndex:4},{value:"Dimension field for the X-axis",paraId:1,tocIndex:4},{value:"seriesField",paraId:1,tocIndex:4},{value:"Dimension field for categorization",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Set the chart size, either with a fixed aspect ratio or a fixed height",paraId:1,tocIndex:4},{value:"Light mode theme",paraId:1,tocIndex:4},{value:"Preview the chart when the system is in light mode",paraId:1,tocIndex:4},{value:"Dark mode theme",paraId:1,tocIndex:4},{value:"Preview the chart when the system is in dark mode",paraId:1,tocIndex:4},{value:"Show legend",paraId:1,tocIndex:4},{value:"Toggle the visibility of the legend",paraId:1,tocIndex:4},{value:"Legend orient Legend orient",paraId:1,tocIndex:4},{value:"Set the orientation of the legend, either horizontal or vertical",paraId:1,tocIndex:4},{value:"Legend position (left, bottom, right, top)",paraId:1,tocIndex:4},{value:"Set the position of the legend relative to the chart",paraId:1,tocIndex:4},{value:"Label type",paraId:1,tocIndex:4},{value:"Control whether to display labels and which type of labels to show",paraId:1,tocIndex:4},{value:"Label position",paraId:1,tocIndex:4},{value:"Set the position of the labels, such as top, inside, or inside top",paraId:1,tocIndex:4},{value:"Stack",paraId:1,tocIndex:4},{value:"Control whether the bars are stacked, with options for no stacking, stacking, or percentage stacking ",paraId:1,tocIndex:4},{value:" ",paraId:1,tocIndex:4},{value:"Bar width (min, max)",paraId:1,tocIndex:4},{value:"Control the width of the bars, which can be a fixed value, percentage, or even negative values",paraId:1,tocIndex:4},{value:"Bar gap",paraId:1,tocIndex:4},{value:"Set the spacing between bars, as a percentage of the bar width",paraId:1,tocIndex:4},{value:"Bar category gap",paraId:1,tocIndex:4},{value:"Set the spacing between different categories, as a percentage of the bar width",paraId:1,tocIndex:4},{value:"Color by",paraId:1,tocIndex:4},{value:"Set bar colors by category or by data",paraId:1,tocIndex:4},{value:"Colors",paraId:1,tocIndex:4},{value:"Fine-tune the color for each category",paraId:1,tocIndex:4},{value:"X-Axis title",paraId:1,tocIndex:4},{value:"Control the display position of the X-axis title",paraId:1,tocIndex:4},{value:"Y-Axis title",paraId:1,tocIndex:4},{value:"Control the display position of the Y-axis title",paraId:1,tocIndex:4},{value:"X-Axis label rotate",paraId:1,tocIndex:4},{value:"Adjust the rotation angle of the X-axis labels to display more labels when they are dense",paraId:1,tocIndex:4},{value:"Padding",paraId:1,tocIndex:4},{value:"Adjust the chart's inner padding",paraId:1,tocIndex:4},{value:"Split line",paraId:1,tocIndex:4},{value:"Control whether gridlines are displayed and their style",paraId:1,tocIndex:4},{value:"Mark line",paraId:1,tocIndex:4},{value:"Add marker lines with custom titles, values, and colors",paraId:1,tocIndex:4}],gf={},bf={title:"Funnel Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/funnel.md",lastUpdated:173254844e4},yf=[{id:"funnel-chart",depth:1,title:"Funnel Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-metric-1-dimension",depth:3,title:"1 Metric, 1 Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],wf=[{value:"Option",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Size",paraId:0,tocIndex:3},{value:"Set the chart size, choosing either a fixed aspect ratio or a fixed height.",paraId:0,tocIndex:3},{value:"Light mode theme",paraId:0,tocIndex:3},{value:"Required for previewing the chart in light mode.",paraId:0,tocIndex:3},{value:"Dark mode theme",paraId:0,tocIndex:3},{value:"Required for previewing the chart in dark mode.",paraId:0,tocIndex:3},{value:"Show legend",paraId:0,tocIndex:3},{value:"Toggles the visibility of the chart legend.",paraId:0,tocIndex:3},{value:"Legend orient",paraId:0,tocIndex:3},{value:"Sets the orientation of the legend, either horizontally or vertically.",paraId:0,tocIndex:3},{value:"Legend position (left, bottom, right, top)",paraId:0,tocIndex:3},{value:"Adjusts the position of the legend relative to the chart, offering flexibility in placement.",paraId:0,tocIndex:3},{value:"Label type",paraId:0,tocIndex:3},{value:"Controls whether labels are shown and specifies the label format.",paraId:0,tocIndex:3},{value:"Show label line",paraId:0,tocIndex:3},{value:"Determines whether the label line is displayed, applicable only when labels are positioned outside the funnel.",paraId:0,tocIndex:3},{value:"Label position",paraId:0,tocIndex:3},{value:"Sets the label position, either inside or outside of the funnel.",paraId:0,tocIndex:3},{value:"Funnel size (min, max)",paraId:0,tocIndex:3},{value:"Adjusts the size of the funnel chart. Modifying the minimum value controls whether the funnel ends in a pointed or flat base.",paraId:0,tocIndex:3},{value:"Padding",paraId:0,tocIndex:3},{value:"Adjusts the internal padding around the chart.",paraId:0,tocIndex:3}],kf={},Sf={title:"Configuration Panel",toc:"menu",filename:"docs/en-US/handbook/data-visualization/user/configure.md",lastUpdated:173254844e4,description:"The chart configuration panel is organized into three primary sections: Data Configuration, Chart Configuration, and Chart Preview."},Uf=[{id:"configuration-panel",depth:1,title:"Configuration Panel"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"measures",depth:3,title:"Measures"},{id:"dimensions",depth:3,title:"Dimensions"},{id:"filter",depth:3,title:"Filter"},{id:"sort-and-limit",depth:3,title:"Sort and Limit"},{id:"cache",depth:3,title:"Cache"},{id:"chart-configuration",depth:2,title:"Chart Configuration"},{id:"container-configuration",depth:3,title:"Container Configuration"},{id:"chart-configuration-1",depth:3,title:"Chart Configuration"},{id:"data-transformation",depth:2,title:"Data Transformation"}],Pf=[{value:"The chart configuration panel is organized into three primary sections: Data Configuration, Chart Configuration, and Chart Preview.",paraId:0,tocIndex:0},{value:"The drop-down at the top represents the current Collection being configured, which can be switched using the drop-down menu.",paraId:1,tocIndex:1},{value:'Once the configuration is complete, clicking "Run Query" will retrieve the data according to the settings. The "Data" panel will display the resulting data.',paraId:1,tocIndex:1},{value:"Measure fields contain the key data that the chart will display. These fields can be aggregated using functions such as ",paraId:2,tocIndex:2},{value:"Sum",paraId:2,tocIndex:2},{value:", ",paraId:2,tocIndex:2},{value:"Count",paraId:2,tocIndex:2},{value:", ",paraId:2,tocIndex:2},{value:"Avg",paraId:2,tocIndex:2},{value:", ",paraId:2,tocIndex:2},{value:"Max",paraId:2,tocIndex:2},{value:", and ",paraId:2,tocIndex:2},{value:"Min",paraId:2,tocIndex:2},{value:". You can add multiple measure fields, and assign aliases to them as needed.",paraId:2,tocIndex:2},{value:"Dimension fields determine how the data is grouped within the chart. For date-type fields, various formatting options are available, as shown in the image. Formatting is handled by database functions (e.g., ",paraId:3,tocIndex:3},{value:"date_format",paraId:3,tocIndex:3},{value:" in MySQL). For other data types, refer to the ",paraId:3,tocIndex:3},{value:"Data Transformation",paraId:4,tocIndex:3},{value:" section.",paraId:3,tocIndex:3},{value:"Dimension Formatting VS Data Transformation",paraId:5},{value:"Dimension formatting occurs before the final data is fetched, grouping data according to the formatted dimension values. This is commonly needed when filtering data by time periods.",paraId:6},{value:"Data transformation further refines the data after it is retrieved, enhancing readability and presentation. This transformation is applied on the frontend.",paraId:6},{value:"Filters are applied to the data before grouping. You can use variables for dynamic filtering:",paraId:7,tocIndex:4},{value:"Current User: Information related to the currently logged-in user.",paraId:8,tocIndex:4},{value:`Date Variables: Date ranges dynamically calculated based on the current date. `,paraId:8,tocIndex:4},{value:"Current Filter: Custom filter fields set within the current chart block. Refer to ",paraId:9,tocIndex:4},{value:"Filter Block",paraId:10,tocIndex:4},{value:".",paraId:9,tocIndex:4},{value:"The default DataSet is limited to a maximum of 2000 entries.",paraId:11,tocIndex:5},{value:"When enabled cache, the chart will display data from the cache. You can configure the cache duration as needed.",paraId:12,tocIndex:6},{value:"This section allows you to configure the properties of the container component that displays the chart.",paraId:13,tocIndex:8},{value:"Chart Title",paraId:14,tocIndex:8},{value:"Show Chart Border",paraId:14,tocIndex:8},{value:"The display effect of the chart title:",paraId:15,tocIndex:8},{value:"The display effect when showing the chart border:",paraId:16,tocIndex:8},{value:"Chart Type",paraId:17,tocIndex:9},{value:": This is where you select the type of chart to display. NocoBase uses ",paraId:17,tocIndex:9},{value:"Ant Design Charts",paraId:17,tocIndex:9},{value:" 2.x as the default chart library. To extend and use other chart libraries or components, see the ",paraId:17,tocIndex:9},{value:"Development Guide",paraId:18,tocIndex:9},{value:".",paraId:17,tocIndex:9},{value:"Basic Configuration",paraId:17,tocIndex:9},{value:": After selecting a chart type, basic visual configuration options appear, such as fields for the x-axis, y-axis, and classification. These field configurations are provided via dropdown menus, which list the basic fields and field aliases from the Collection.",paraId:17,tocIndex:9},{value:"JSON Configuration",paraId:17,tocIndex:9},{value:": If the basic configuration doesn\u2019t meet your requirements, you can configure additional chart component properties using JSON. Refer to the chart component documentation for details. To include JavaScript expressions in the JSON configuration, wrap them in ",paraId:17,tocIndex:9},{value:"{{}}",paraId:17,tocIndex:9},{value:". For example:",paraId:17,tocIndex:9},{value:`{ "label": { "type": "inner", "content": "{{ ({ percent }) => \`\${(percent * 100).toFixed(0)}%\` }}" } } -`,paraId:19,tocIndex:9},{value:"Data transformation enables further processing of response data. The supported data types for transformation are ",paraId:20,tocIndex:10},{value:"number",paraId:20,tocIndex:10},{value:", ",paraId:20,tocIndex:10},{value:"date",paraId:20,tocIndex:10},{value:", ",paraId:20,tocIndex:10},{value:"time",paraId:20,tocIndex:10},{value:", and ",paraId:20,tocIndex:10},{value:"datetime",paraId:20,tocIndex:10},{value:". For fields not belonging to these types, you can manually assign one of these types to apply the corresponding transformation methods.",paraId:20,tocIndex:10},{value:"Multiple transformation methods can be applied to the same field. The transformations are executed in sequence, with each step passing its result to the next. You can reorder the transformation steps by dragging them.",paraId:21,tocIndex:10},{value:"Be mindful that some transformation methods may alter the original data type. When applying multiple transformations, ensure that you choose the correct method based on the data type after each step. For instance, when formatting a number as currency by adjusting precision and adding a prefix, you should first apply the precision adjustment and then the prefix. This is because after adding the prefix, the number is converted to a string, and further precision adjustments will no longer apply.",paraId:22},{value:"Supported transformation methods:",paraId:23},{value:"Type",paraId:24},{value:"Method",paraId:24},{value:"Description",paraId:24},{value:"Converted Type",paraId:24},{value:"Number (",paraId:24},{value:"number",paraId:24},{value:")",paraId:24},{value:"Prefix",paraId:24},{value:"string",paraId:24},{value:"Suffix",paraId:24},{value:"string",paraId:24},{value:"Precision",paraId:24},{value:"1",paraId:24},{value:", ",paraId:24},{value:"1.0",paraId:24},{value:", ",paraId:24},{value:"1.00",paraId:24},{value:", ",paraId:24},{value:"1.000",paraId:24},{value:".",paraId:24},{value:"number",paraId:24},{value:"Separator",paraId:24},{value:"100,000.00",paraId:24},{value:" (English), ",paraId:24},{value:"100.000,00",paraId:24},{value:" (German), etc.",paraId:24},{value:"string",paraId:24},{value:"Percentage",paraId:24},{value:"string",paraId:24},{value:"Scientific Notation",paraId:24},{value:"number",paraId:24},{value:"Abbreviation",paraId:24},{value:"1K",paraId:24},{value:", ",paraId:24},{value:"1M",paraId:24},{value:", ",paraId:24},{value:"1T",paraId:24},{value:", ",paraId:24},{value:"1B",paraId:24},{value:", etc.",paraId:24},{value:"string",paraId:24},{value:"DateTime (",paraId:24},{value:"datetime",paraId:24},{value:", ",paraId:24},{value:"date",paraId:24},{value:", ",paraId:24},{value:"time",paraId:24},{value:")",paraId:24},{value:"Formatting",paraId:24},{value:"Uses preset or custom formats like ",paraId:24},{value:"YYYY-MM-DD",paraId:24},{value:". Refer to the ",paraId:24},{value:"dayjs",paraId:24},{value:" documentation.",paraId:24},{value:"string",paraId:24},{value:"Prefix",paraId:24},{value:"string",paraId:24},{value:"Suffix",paraId:24},{value:"string",paraId:24},{value:"String (",paraId:24},{value:"string",paraId:24},{value:")",paraId:24},{value:"Type Conversion",paraId:24},{value:"Converts the string into another type, such as date/time or number.",paraId:24},{value:"Date",paraId:24},{value:" | ",paraId:24},{value:"number",paraId:24},{value:"Prefix",paraId:24},{value:"string",paraId:24},{value:"Suffix",paraId:24},{value:"string",paraId:24}],Tf={},Cf={title:"Notification: In-App Message",toc:"menu",filename:"docs/en-US/handbook/notification-in-app-message/index.md",lastUpdated:1732240239e3,description:"Enables users to receive real-time message notifications directly within the NocoBase application."},Af=[{id:"notification-in-app-message",depth:1,title:"Notification: In-App Message"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"adding-an-in-app-message-channel",depth:2,title:"Adding an In-App Message Channel"},{id:"example-usage-scenario",depth:2,title:"Example Usage Scenario"}],qf=[{value:"Enables users to receive real-time message notifications directly within the NocoBase application.",paraId:0,tocIndex:1},{value:"This plugin is pre-installed, so no additional setup is required.",paraId:1,tocIndex:2},{value:`Go to the notification management section, click adding button and select In-app message. +`,paraId:19,tocIndex:9},{value:"Data transformation enables further processing of response data. The supported data types for transformation are ",paraId:20,tocIndex:10},{value:"number",paraId:20,tocIndex:10},{value:", ",paraId:20,tocIndex:10},{value:"date",paraId:20,tocIndex:10},{value:", ",paraId:20,tocIndex:10},{value:"time",paraId:20,tocIndex:10},{value:", and ",paraId:20,tocIndex:10},{value:"datetime",paraId:20,tocIndex:10},{value:". For fields not belonging to these types, you can manually assign one of these types to apply the corresponding transformation methods.",paraId:20,tocIndex:10},{value:"Multiple transformation methods can be applied to the same field. The transformations are executed in sequence, with each step passing its result to the next. You can reorder the transformation steps by dragging them.",paraId:21,tocIndex:10},{value:"Be mindful that some transformation methods may alter the original data type. When applying multiple transformations, ensure that you choose the correct method based on the data type after each step. For instance, when formatting a number as currency by adjusting precision and adding a prefix, you should first apply the precision adjustment and then the prefix. This is because after adding the prefix, the number is converted to a string, and further precision adjustments will no longer apply.",paraId:22},{value:"Supported transformation methods:",paraId:23},{value:"Type",paraId:24},{value:"Method",paraId:24},{value:"Description",paraId:24},{value:"Converted Type",paraId:24},{value:"Number (",paraId:24},{value:"number",paraId:24},{value:")",paraId:24},{value:"Prefix",paraId:24},{value:"string",paraId:24},{value:"Suffix",paraId:24},{value:"string",paraId:24},{value:"Precision",paraId:24},{value:"1",paraId:24},{value:", ",paraId:24},{value:"1.0",paraId:24},{value:", ",paraId:24},{value:"1.00",paraId:24},{value:", ",paraId:24},{value:"1.000",paraId:24},{value:".",paraId:24},{value:"number",paraId:24},{value:"Separator",paraId:24},{value:"100,000.00",paraId:24},{value:" (English), ",paraId:24},{value:"100.000,00",paraId:24},{value:" (German), etc.",paraId:24},{value:"string",paraId:24},{value:"Percentage",paraId:24},{value:"string",paraId:24},{value:"Scientific Notation",paraId:24},{value:"number",paraId:24},{value:"Abbreviation",paraId:24},{value:"1K",paraId:24},{value:", ",paraId:24},{value:"1M",paraId:24},{value:", ",paraId:24},{value:"1T",paraId:24},{value:", ",paraId:24},{value:"1B",paraId:24},{value:", etc.",paraId:24},{value:"string",paraId:24},{value:"DateTime (",paraId:24},{value:"datetime",paraId:24},{value:", ",paraId:24},{value:"date",paraId:24},{value:", ",paraId:24},{value:"time",paraId:24},{value:")",paraId:24},{value:"Formatting",paraId:24},{value:"Uses preset or custom formats like ",paraId:24},{value:"YYYY-MM-DD",paraId:24},{value:". Refer to the ",paraId:24},{value:"dayjs",paraId:24},{value:" documentation.",paraId:24},{value:"string",paraId:24},{value:"Prefix",paraId:24},{value:"string",paraId:24},{value:"Suffix",paraId:24},{value:"string",paraId:24},{value:"String (",paraId:24},{value:"string",paraId:24},{value:")",paraId:24},{value:"Type Conversion",paraId:24},{value:"Converts the string into another type, such as date/time or number.",paraId:24},{value:"Date",paraId:24},{value:" | ",paraId:24},{value:"number",paraId:24},{value:"Prefix",paraId:24},{value:"string",paraId:24},{value:"Suffix",paraId:24},{value:"string",paraId:24}],Tf={},Cf={title:"Notification: In-App Message",toc:"menu",filename:"docs/en-US/handbook/notification-in-app-message/index.md",lastUpdated:173254844e4,description:"Enables users to receive real-time message notifications directly within the NocoBase application."},Af=[{id:"notification-in-app-message",depth:1,title:"Notification: In-App Message"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"adding-an-in-app-message-channel",depth:2,title:"Adding an In-App Message Channel"},{id:"example-usage-scenario",depth:2,title:"Example Usage Scenario"}],qf=[{value:"Enables users to receive real-time message notifications directly within the NocoBase application.",paraId:0,tocIndex:1},{value:"This plugin is pre-installed, so no additional setup is required.",paraId:1,tocIndex:2},{value:`Go to the notification management section, click adding button and select In-app message. `,paraId:2,tocIndex:3},{value:`Fill in the channel name and description, then click submit. -`,paraId:3,tocIndex:3},{value:"The new channel will now appear in the list.",paraId:4,tocIndex:3},{value:'To clarify the use of In-app message, here\u2019s an example for "Marketing Lead Follow-Up".',paraId:5,tocIndex:4},{value:"Imagine your team is running a major marketing campaign aimed at tracking responses and needs from potential clients. Using in-app messages, you can:",paraId:6,tocIndex:4},{value:"Set Up a Notification Channel:",paraId:7,tocIndex:4},{value:' Begin by creating a channel called "Marketing Clue" in notification management, making it easy for team members to identify its purpose.',paraId:7,tocIndex:4},{value:"Configure a Workflow:",paraId:8,tocIndex:4},{value:' Create a workflow that automatically triggers notifications whenever a new lead is generated. Add a notification node to this workflow, select the "Marketing Clue" channel, and customize the message content according to campaign needs. For example:',paraId:8,tocIndex:4},{value:"Receive Notifications in Real-Time:",paraId:9,tocIndex:4},{value:" Once the workflow triggers, all relevant team members will receive notifications instantly, allowing for quick responses.",paraId:9,tocIndex:4},{value:"Message Management and Tracking:",paraId:10,tocIndex:4},{value:' In-app messages are grouped by channel name, and you can filter messages by read or unread status to prioritize important information. Clicking "View" redirects you to a configured link, allowing you to manage tasks seamlessly.',paraId:10,tocIndex:4}],Ef={},Df={title:"Language Settings",toc:"menu",filename:"docs/en-US/handbook/system-settings/language-settings.md",lastUpdated:1732240239e3,description:'In "System Settings" by setting "Enabled Languages," you can adjust the global language environment of the system, with the first language being the default.'},Of=[{id:"language-settings",depth:1,title:"Language Settings"}],Rf=[{value:'In "System Settings" by setting "Enabled Languages," you can adjust the global language environment of the system, with the first language being the default.',paraId:0},{value:"When multiple languages are enabled, users can set their language preferences in the user's personal center (top right corner).",paraId:1},{value:'If the language environment you are using is not translated, you can use the "',paraId:2},{value:"Localization Management",paraId:3},{value:'" plugin to perform translations.',paraId:2}],Mf={},Lf={title:"Trigger Workflow",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/trigger-workflow.md",lastUpdated:1732240239e3,description:'Within any data block, you have the option to add a "Trigger Workflow" button to the action bar for individual rows of data, whether in forms, tables, or detail pages:'},Nf=[{id:"trigger-workflow",depth:1,title:"Trigger Workflow"}],zf=[{value:'Within any data block, you have the option to add a "Trigger Workflow" button to the action bar for individual rows of data, whether in forms, tables, or detail pages:',paraId:0},{value:"Once the button is added, you can link it to the workflow you previously created:",paraId:1},{value:"Afterward, simply clicking this button will initiate the custom action event:",paraId:2}],Ff={},Bf={title:"Required Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/required.md",lastUpdated:1732240239e3,description:'"Required" is a fundamental rule in form validation. You can enable it directly within the field settings or dynamically configure it through form linkage rules.'},jf=[{id:"required-fields",depth:1,title:"Required Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"static-setting",depth:2,title:"Static Setting"},{id:"dynamic-setting-conditional-required",depth:2,title:"Dynamic Setting (Conditional Required)"}],Hf=[{value:'"Required" is a fundamental rule in form validation. You can enable it directly within the field settings or dynamically configure it through form linkage rules.',paraId:0,tocIndex:1},{value:"You can directly designate a field as required, which is ideal for fields that must always be completed by users, such as username and password.",paraId:1,tocIndex:2},{value:"Required fields can be set conditionally using the form block's linkage rules.",paraId:2,tocIndex:3},{value:'Example: The shipping date field becomes required when the order status is marked as "shipped."',paraId:3,tocIndex:3},{value:` - `,paraId:4}],Wf={},$f={title:"Cascading Select",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/cascade-select.md",lastUpdated:1732240239e3,description:"The cascading selector is tailored for relational fields where the target table follows a tree structure. It allows users to select data according to the hierarchical levels of the tree, with support for fuzzy search to streamline the selection process."},Gf=[{id:"cascading-select",depth:1,title:"Cascading Select"},{id:"introduction",depth:2,title:"Introduction"},{id:"instructions",depth:2,title:"Instructions"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"}],Vf=[{value:"The cascading selector is tailored for relational fields where the target table follows a tree structure. It allows users to select data according to the hierarchical levels of the tree, with support for fuzzy search to streamline the selection process.",paraId:0,tocIndex:1},{value:"For one-to-one relationships, the cascading selector is configured for single selection.",paraId:1,tocIndex:2},{value:"For one-to-many relationships, the cascading selector enables multi-selection and supports drag-and-drop sorting for more intuitive organization.",paraId:2,tocIndex:2},{value:"Title Field",paraId:3,tocIndex:3},{value:": Defines the content displayed by the cascading component (title field) for easier identification.",paraId:4,tocIndex:3},{value:"Field Component",paraId:5,tocIndex:3},{value:": Offers the flexibility to switch to other relational field components, such as dropdown selectors, data pickers, and more.",paraId:6,tocIndex:3}],Kf={},Zf={title:"Popover Nester",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/popover-nester.md",lastUpdated:1732240239e3,description:"In complex relational tables with intricate hierarchies and numerous fields, effectively presenting data relationships within a sub-form layout can be challenging. The Sub-form (Popup) solution enhances this by presenting relational field sub-forms in a convenient popup format, simplifying data interaction and visualization."},Yf=[{id:"popover-nester",depth:1,title:"Popover Nester"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"in-sub-table",depth:3,title:"In Sub-table"},{id:"in-form-blocks",depth:3,title:"In Form Blocks"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"title-field",depth:3,title:"Title Field"},{id:"allow-addingassociating-multiple-entries-default-enabled",depth:3,title:"Allow Adding/Associating Multiple Entries (Default Enabled)"},{id:"field-component",depth:3,title:"Field Component"},{id:"linkage-rules",depth:3,title:"Linkage Rules"}],Qf=[{value:"In complex relational tables with intricate hierarchies and numerous fields, effectively presenting data relationships within a sub-form layout can be challenging. The Sub-form (Popup) solution enhances this by presenting relational field sub-forms in a convenient popup format, simplifying data interaction and visualization.",paraId:0,tocIndex:1},{value:"The title field value is displayed dynamically outside the popup, providing real-time updates.",paraId:1,tocIndex:6},{value:"By default, multiple entries can be added or associated. When this option is disabled, only a single entry can be added or associated.",paraId:2,tocIndex:7},{value:"Field Component",paraId:3,tocIndex:8},{value:": Switch to other relationship field components, such as dropdown select, data selector, etc.",paraId:4,tocIndex:8},{value:"The version of NocoBase needs to be v1.3.17-beta or above.",paraId:5},{value:"For more information, refer to ",paraId:6},{value:"Linkage Rules",paraId:7}],Jf={},Xf={title:"Node Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-dynamic-calculation/node.md",lastUpdated:1732240239e3,description:"Create a dynamic calculation node:"},ex=[{id:"node-configuration",depth:1,title:"Node Configuration"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration-1",depth:2,title:"Node Configuration"},{id:"calculation-expression",depth:2,title:"Calculation Expression"},{id:"variable-data-source",depth:3,title:"Variable Data Source"}],ax=[{value:"Create a dynamic calculation node:",paraId:0,tocIndex:1},{value:"Unlike the expression options in a standard calculation node, dynamic expressions must be selected based on preloaded data rather than directly inputting the expression. Choose the preloaded product discount rule data from the trigger:",paraId:1,tocIndex:3},{value:"You also need to select the data row object from the table to be used as a variable in the expression. This can be chosen from the workflow context, where results have been preloaded or queried. The object must be a data row from the table associated with the expression data. In this case, select the product data:",paraId:2,tocIndex:4},{value:"Saving the node configuration completes the entire setup process.",paraId:3,tocIndex:4}],tx={},nx={title:"\u63D2\u4EF6\u7BA1\u7406\u5668",toc:"menu",filename:"docs/en-US/manual/plugin-manager/plugin-manager/index.md",lastUpdated:1732240239e3,description:"\u63D2\u4EF6\u7BA1\u7406\u5668\u652F\u6301\u901A\u8FC7\u754C\u9762\u6DFB\u52A0\u63D2\u4EF6\uFF0C\u4EE5\u7B80\u5355\u3001\u76F4\u89C2\uFF0C\u8F7B\u91CF\u7EA7\u7684\u4F7F\u7528\u4F53\u9A8C\u6765\u6269\u5C55 NocoBase \u7684\u529F\u80FD\u3002\u8F7B\u677E\u6269\u5C55\u548C\u5B9A\u5236\u5E94\u7528\u529F\u80FD\uFF0C\u5305\u62EC\u5B89\u88C5\u3001\u5347\u7EA7\u3001\u548C\u5378\u8F7D\u63D2\u4EF6"},ox=[{id:"\u63D2\u4EF6\u7BA1\u7406\u5668",depth:1,title:"\u63D2\u4EF6\u7BA1\u7406\u5668"},{id:"\u67E5\u770B\u63D2\u4EF6\u6587\u6863",depth:4,title:"\u67E5\u770B\u63D2\u4EF6\u6587\u6863"},{id:"\u6DFB\u52A0\u63D2\u4EF6",depth:4,title:"\u6DFB\u52A0\u63D2\u4EF6"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:4,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u7981\u7528\u63D2\u4EF6",depth:4,title:"\u7981\u7528\u63D2\u4EF6"},{id:"\u5220\u9664\u63D2\u4EF6",depth:4,title:"\u5220\u9664\u63D2\u4EF6"},{id:"\u66F4\u65B0\u63D2\u4EF6",depth:4,title:"\u66F4\u65B0\u63D2\u4EF6"}],rx=[{value:"\u63D2\u4EF6\u7BA1\u7406\u5668\u652F\u6301\u901A\u8FC7\u754C\u9762\u6DFB\u52A0\u63D2\u4EF6\uFF0C\u4EE5\u7B80\u5355\u3001\u76F4\u89C2\uFF0C\u8F7B\u91CF\u7EA7\u7684\u4F7F\u7528\u4F53\u9A8C\u6765\u6269\u5C55 NocoBase \u7684\u529F\u80FD\u3002\u8F7B\u677E\u6269\u5C55\u548C\u5B9A\u5236\u5E94\u7528\u529F\u80FD\uFF0C\u5305\u62EC\u5B89\u88C5\u3001\u5347\u7EA7\u3001\u548C\u5378\u8F7D\u63D2\u4EF6",paraId:0,tocIndex:0},{value:"\u63D2\u4EF6\u7BA1\u7406\u5668\u7684\u7EC4\u6210\u90E8\u5206",paraId:1,tocIndex:0},{value:"\u672C\u5730\u63D2\u4EF6/\u63D2\u4EF6\u5E02\u573A",paraId:2,tocIndex:0},{value:"\u63D2\u4EF6\u5206\u7C7B\uFF08\u5185\u7F6E\u3001\u542F\u7528\u3001\u672A\u542F\u7528\u3001\u6709\u95EE\u9898,\u652F\u6301\u6309\u63D2\u4EF6\u540D\u79F0\u6A21\u7CCA\u641C\u7D22\uFF09",paraId:2,tocIndex:0},{value:"\u6DFB\u52A0\u65B0\u63D2\u4EF6",paraId:2,tocIndex:0},{value:"\u63D2\u4EF6\u914D\u7F6E\u4E3B\u4F53",paraId:2,tocIndex:0},{value:"\u70B9\u51FB\u63D2\u4EF6\u53EF\u4EE5\u5FEB\u901F\u9605\u89C8\u63D2\u4EF6\u7684\u4ECB\u7ECD\u6587\u6863\uFF08\u5305\u62EC\u8BF4\u660E\u6587\u6863\u3001\u4F9D\u8D56\u517C\u5BB9\u6027\u68C0\u67E5\u3001\u66F4\u65B0\u65E5\u5FD7\uFF09",paraId:3,tocIndex:1},{value:"\u5373\u63D2\u5373\u7528\uFF0C\u53EF\u4EE5\u76F4\u63A5\u901A\u8FC7\u754C\u9762\u6DFB\u52A0\u63D2\u4EF6\uFF0C\u652F\u6301\u4ECE npm registry\uFF08\u53EF\u4EE5\u662F\u79C1\u6709\u7684\uFF09\u4E0B\u8F7D\u3001\u672C\u5730\u4E0A\u4F20\u3001URL \u4E0B\u8F7D",paraId:4,tocIndex:2},{value:"\u76EE\u524D\u4EC5 storage/plugins \u4E0B\u7684\u63D2\u4EF6\u624D\u6709\u66F4\u65B0\u64CD\u4F5C\uFF0C\u5982\u56FE",paraId:5,tocIndex:6}],dx={},ix={title:"Workflow Dynamic Calculation",toc:"menu",filename:"docs/en-US/plugins/workflow-dynamic-calculation/index.md",lastUpdated:1732240239e3},lx=[],cx=[],sx={},ux={title:"Overview",toc:"menu",filename:"docs/en-US/welcome/getting-started/installation/index.md",lastUpdated:1732240239e3,description:"NocoBase supports three installation methods."},px=[{id:"overview",depth:1,title:"Overview"},{id:"installation-methods",depth:2,title:"Installation Methods"},{id:"how-to-choose",depth:2,title:"How to choose"},{id:"docker-recommended",depth:3,title:"Docker (recommended)"},{id:"create-nocobase-app",depth:3,title:"create-nocobase-app"},{id:"git-source-code",depth:3,title:"Git source code"},{id:"which-version-to-install",depth:2,title:"Which version to install?"},{id:"latest-version",depth:3,title:"Latest version"},{id:"beta-version",depth:3,title:"Beta version"},{id:"alpha-version",depth:3,title:"Alpha version"}],Ix=[{value:"NocoBase supports three installation methods.",paraId:0,tocIndex:1},{value:"Docker (recommended)",paraId:1,tocIndex:1},{value:"create-nocobase-app",paraId:2,tocIndex:1},{value:"Git source code",paraId:3,tocIndex:1},{value:"Suitable for no-code scenarios, no code to write. When upgrading, just download the latest image and reboot.",paraId:4,tocIndex:3},{value:"The business code of the project is completely independent and supports low-code development.",paraId:5,tocIndex:4},{value:"If you want to experience the latest unreleased version, or want to participate in the contribution, you need to make changes and debug on the source code, it is recommended to choose this installation method, which requires a high level of development skills, and if the code has been updated, you can git pull the latest code.",paraId:6,tocIndex:5},{value:"This is a stable and well-tested version and only bug fixed will be made. This version is recommended.",paraId:7,tocIndex:7},{value:"This version includes new features that are about to be released and it has been preliminarily tested, but still have known or unknown issues, primarily for testing and feedback. Ideal for early testers willing to try new features and provide feedback.",paraId:8,tocIndex:8},{value:"A development version containing the latest features, which may be incomplete or unstable. Suitable for technical users interested in cutting-edge features. Not recommended for production use.",paraId:9,tocIndex:9},{value:"Version",paraId:10,tocIndex:9},{value:"Source code branch",paraId:10,tocIndex:9},{value:"Docker images version",paraId:10,tocIndex:9},{value:"create-nocobase-app version",paraId:10,tocIndex:9},{value:"Specific version",paraId:10,tocIndex:9},{value:"Latest",paraId:10,tocIndex:9},{value:"main",paraId:10,tocIndex:9},{value:"nocobase/nocobase:latest",paraId:10,tocIndex:9},{value:"create-nocobase-app@latest",paraId:10,tocIndex:9},{value:"1.3.51",paraId:10,tocIndex:9},{value:"1.3.52",paraId:10,tocIndex:9},{value:"...",paraId:10,tocIndex:9},{value:"Beta",paraId:10,tocIndex:9},{value:"next",paraId:10,tocIndex:9},{value:"nocobase/nocobase:beta",paraId:10,tocIndex:9},{value:"create-nocobase-app@beta",paraId:10,tocIndex:9},{value:"1.4.0-beta.1",paraId:10,tocIndex:9},{value:"1.4.0-beta.2",paraId:10,tocIndex:9},{value:"...",paraId:10,tocIndex:9},{value:"Alpha",paraId:10,tocIndex:9},{value:"develop",paraId:10,tocIndex:9},{value:"nocobase/nocobase:alpha",paraId:10,tocIndex:9},{value:"create-nocobase-app@alpha",paraId:10,tocIndex:9},{value:"1.5.0-alpha.1",paraId:10,tocIndex:9},{value:"1.5.0-alpha.2",paraId:10,tocIndex:9},{value:"...",paraId:10,tocIndex:9}],_x={},vx={title:"Plugin Manager",toc:"menu",filename:"docs/en-US/handbook/client/user/plugin-manager/index.md",lastUpdated:1732240239e3,description:"The Plugin Manager offers a straightforward and intuitive interface for adding plugins, enhancing NocoBase's functionality with a lightweight and user-friendly experience. It allows for seamless expansion and customization of application features, including the installation, upgrade, and uninstallation of plugins."},mx=[{id:"plugin-manager",depth:1,title:"Plugin Manager"},{id:"viewing-plugin-documentation",depth:2,title:"Viewing Plugin Documentation"},{id:"adding-a-plugin",depth:2,title:"Adding a Plugin"},{id:"activating-a-plugin",depth:2,title:"Activating a Plugin"},{id:"disabling-a-plugin",depth:2,title:"Disabling a Plugin"},{id:"deleting-a-plugin",depth:2,title:"Deleting a Plugin"},{id:"updating-a-plugin",depth:2,title:"Updating a Plugin"}],hx=[{value:"The Plugin Manager offers a straightforward and intuitive interface for adding plugins, enhancing NocoBase's functionality with a lightweight and user-friendly experience. It allows for seamless expansion and customization of application features, including the installation, upgrade, and uninstallation of plugins.",paraId:0,tocIndex:0},{value:"Key Components of the Plugin Manager:",paraId:1,tocIndex:0},{value:"Local Plugins/Plugin Marketplace",paraId:2,tocIndex:0},{value:": Access and manage plugins available locally or through the marketplace.",paraId:2,tocIndex:0},{value:"Plugin Classification",paraId:2,tocIndex:0},{value:": Organize plugins by categories such as Built-in, Enabled, Disabled, and Problematic. The system supports fuzzy search by plugin name.",paraId:2,tocIndex:0},{value:"Add New Plugin",paraId:2,tocIndex:0},{value:": Easily expand functionality by adding new plugins.",paraId:2,tocIndex:0},{value:"Plugin Configuration Main Body",paraId:2,tocIndex:0},{value:": Centralize your plugin configurations in one place.",paraId:2,tocIndex:0},{value:"A simple click on any plugin allows for a quick view of its documentation, which includes user instructions, compatibility checks for dependencies, and update logs.",paraId:3,tocIndex:1},{value:"With plug-and-play convenience, you can effortlessly add new plugins via the interface. The system supports downloading from the npm registry (private registries are also supported), local uploads, and URL downloads.",paraId:4,tocIndex:2},{value:"Currently, the option to update plugins is available only for those located under storage/plugins, as illustrated below:",paraId:5,tocIndex:6}],fx={},xx={title:"Expression Collection",toc:"menu",filename:"docs/en-US/handbook/collection-expression/collection.md",lastUpdated:1732240239e3,description:"Before utilizing dynamic expression operation nodes within a workflow, it's essential to first create an \u201CExpression\u201D template table using the data table management tool. This table serves as a repository for various expressions:"},gx=[{id:"expression-collection",depth:1,title:"Expression Collection"},{id:"creating-an-expression-collection-template",depth:2,title:"Creating an \u201CExpression collection\u201D Template"},{id:"entering-expression-data",depth:2,title:"Entering Expression Data"},{id:"loading-relevant-data-into-the-process",depth:2,title:"Loading Relevant Data into the Process"}],bx=[{value:"Before utilizing dynamic expression operation nodes within a workflow, it's essential to first create an \u201CExpression\u201D template table using the data table management tool. This table serves as a repository for various expressions:",paraId:0,tocIndex:1},{value:"Following this, you can set up a table block and input several formula entries into the template table. Each row in the \u201CExpression\u201D template table can be viewed as a calculation rule designed for a specific data model within the table. You can utilize different fields from the data models of various tables as variables, crafting unique expressions as calculation rules. Moreover, you can leverage different calculation engines as needed.",paraId:1,tocIndex:2},{value:"Once the formulas are established, they need to be linked to the business data. Directly associating each row of business data with formula data can be tedious, so a common approach is to use a metadata table, similar to a classification table, to create a many-to-one (or one-to-one) relationship with the formula table. Then, the business data is associated with the classified metadata in a many-to-one relationship. This approach allows you to simply specify the relevant classified metadata when creating business data, making it easy to locate and utilize the corresponding formula data through the established association path.",paraId:2},{value:"As an example, consider creating a workflow triggered by a data table event. When an order is created, the trigger should preload the associated product data along with the product-related expression data:",paraId:3,tocIndex:3}],yx={},wx={title:"External Data Source - MSSQL",toc:"menu",filename:"docs/en-US/handbook/data-source-external-mssql/index.md",lastUpdated:1732240239e3,description:"Use an external MSSQL database as a data source. Currently supported versions: SQL Server 2014-2019"},kx=[{id:"external-data-source---mssql",depth:1,title:"External Data Source - MSSQL"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"}],Sx=[{value:"Use an external MSSQL database as a data source. Currently supported versions: SQL Server 2014-2019",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin, which needs to be uploaded and activated through the plugin manager.",paraId:1,tocIndex:2},{value:"Refer to the ",paraId:2,tocIndex:3},{value:"Data Source / External Database",paraId:3,tocIndex:3},{value:" section.",paraId:2,tocIndex:3}],Ux={},Px={title:"External Data Source - MySQL",toc:"menu",filename:"docs/en-US/handbook/data-source-external-mysql/index.md",lastUpdated:1732240239e3,description:"Use an external MySQL database as a data source. Currently supported versions: MySQL ^5.7, ^8.0"},Tx=[{id:"external-data-source---mysql",depth:1,title:"External Data Source - MySQL"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"}],Cx=[{value:"Use an external MySQL database as a data source. Currently supported versions: MySQL ^5.7, ^8.0",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin, which needs to be uploaded and activated through the plugin manager.",paraId:1,tocIndex:2},{value:"Refer to the ",paraId:2,tocIndex:3},{value:"Data Source / External Database",paraId:3,tocIndex:3},{value:" section.",paraId:2,tocIndex:3}],Ax={},qx={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd/overview.md",lastUpdated:1732240239e3,description:"Provide tables and statistical presentations using Ant Design."},Ex=[{id:"overview",depth:1,title:"Overview"}],Dx=[{value:"Provide tables and statistical presentations using ",paraId:0,tocIndex:0},{value:"Ant Design",paraId:0,tocIndex:0},{value:".",paraId:0,tocIndex:0}],Ox={},Rx={title:"Radar Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/radar.md",lastUpdated:1732240239e3,description:"Each value of the dimension field acts as a variable, with each measure forming one radar area."},Mx=[{id:"radar-chart",depth:1,title:"Radar Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-or-more-measures-1-dimension",depth:3,title:"1 or More Measures, 1 Dimension"},{id:"using-dimensions-as-variables",depth:4,title:"Using Dimensions as Variables"},{id:"using-measures-as-variables",depth:4,title:"Using Measures as Variables"},{id:"configuration-options",depth:2,title:"Configuration Options"}],Lx=[{value:"Each value of the dimension field acts as a variable, with each measure forming one radar area.",paraId:0,tocIndex:3},{value:"Each measure acts as a variable, with each value of the dimension field forming one radar area.",paraId:1,tocIndex:4},{value:"Option",paraId:2,tocIndex:5},{value:"Description",paraId:2,tocIndex:5},{value:"Size",paraId:2,tocIndex:5},{value:"Set the size of the chart, either by fixing the aspect ratio or a fixed height",paraId:2,tocIndex:5},{value:"Light mode theme",paraId:2,tocIndex:5},{value:"Preview requires selection when the system is in light mode",paraId:2,tocIndex:5},{value:"Dark mode theme",paraId:2,tocIndex:5},{value:"Preview requires selection when the system is in dark mode",paraId:2,tocIndex:5},{value:"Show legend",paraId:2,tocIndex:5},{value:"Controls whether the legend is displayed",paraId:2,tocIndex:5},{value:"Legend orient",paraId:2,tocIndex:5},{value:"Controls the direction of the legend, either horizontal or vertical",paraId:2,tocIndex:5},{value:"Legend position (left, bottom, right, top)",paraId:2,tocIndex:5},{value:"Controls the relative position of the legend",paraId:2,tocIndex:5},{value:"Shape",paraId:2,tocIndex:5},{value:"Polygon or circle",paraId:2,tocIndex:5},{value:"Range",paraId:2,tocIndex:5},{value:"Controls the minimum and maximum values of the variables",paraId:2,tocIndex:5},{value:"Radius",paraId:2,tocIndex:5},{value:"Adjusts the radius of the chart",paraId:2,tocIndex:5},{value:"Center coordinate",paraId:2,tocIndex:5},{value:"Controls the position of the chart, can be fixed values or percentages",paraId:2,tocIndex:5}],Nx={},zx={title:"Tencent COS",toc:"menu",filename:"docs/en-US/handbook/file-manager/storage/tencent-cos.md",lastUpdated:1732240239e3,description:"The storage engine based on Tencent Cloud COS, you need to prepare relevant accounts and permissions in advance."},Fx=[{id:"tencent-cos",depth:1,title:"Tencent COS"},{id:"options",depth:2,title:"Options"},{id:"region",depth:3,title:"Region"},{id:"secretid",depth:3,title:"SecretId"},{id:"secretkey",depth:3,title:"SecretKey"},{id:"bucket",depth:3,title:"Bucket"}],Bx=[{value:"The storage engine based on Tencent Cloud COS, you need to prepare relevant accounts and permissions in advance.",paraId:0,tocIndex:0},{value:"This section only covers the specific options for the Tencent Cloud COS storage engine. For common parameters, please refer to ",paraId:1},{value:"Common Engine Parameters",paraId:2},{value:".",paraId:1},{value:"Fill in the region of the COS storage, for example: ",paraId:3,tocIndex:2},{value:"ap-chengdu",paraId:3,tocIndex:2},{value:".",paraId:3,tocIndex:2},{value:"You can view the region information of the storage bucket in the ",paraId:4},{value:"Tencent Cloud COS Console",paraId:4},{value:", and only need to take the prefix part of the region (without the complete domain name).",paraId:4},{value:"Fill in the ID of the Tencent Cloud authorized access key.",paraId:5,tocIndex:3},{value:"Fill in the secret of the Tencent Cloud authorized access key.",paraId:6,tocIndex:4},{value:"Fill in the name of the COS bucket, for example: ",paraId:7,tocIndex:5},{value:"qing-cdn-1234189398",paraId:7,tocIndex:5},{value:".",paraId:7,tocIndex:5}],jx={},Hx={title:"Collapse Filter Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/filter-blocks/collapse.md",lastUpdated:1732240239e3,description:"The Collapse filtering block needs to be used in connection with the data block to provide filtering capabilities for the data block. It supports selecting association fields and option fields as filtering fields, and displays them in a collapsible panel effect."},Wx=[{id:"collapse-filter-block",depth:1,title:"Collapse Filter Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-block",depth:2,title:"Adding Block"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"connecting-data-blocks",depth:3,title:"Connecting Data Blocks"},{id:"configuring-fields",depth:2,title:"Configuring Fields"}],$x=[{value:"The Collapse filtering block needs to be used in connection with the data block to provide filtering capabilities for the data block. It supports selecting association fields and option fields as filtering fields, and displays them in a collapsible panel effect.",paraId:0,tocIndex:1},{value:"Example: Configure the order collapse block and order table block to achieve filter linkage.",paraId:1,tocIndex:2},{value:` +`,paraId:3,tocIndex:3},{value:"The new channel will now appear in the list.",paraId:4,tocIndex:3},{value:'To clarify the use of In-app message, here\u2019s an example for "Marketing Lead Follow-Up".',paraId:5,tocIndex:4},{value:"Imagine your team is running a major marketing campaign aimed at tracking responses and needs from potential clients. Using in-app messages, you can:",paraId:6,tocIndex:4},{value:"Set Up a Notification Channel:",paraId:7,tocIndex:4},{value:' Begin by creating a channel called "Marketing Clue" in notification management, making it easy for team members to identify its purpose.',paraId:7,tocIndex:4},{value:"Configure a Workflow:",paraId:8,tocIndex:4},{value:' Create a workflow that automatically triggers notifications whenever a new lead is generated. Add a notification node to this workflow, select the "Marketing Clue" channel, and customize the message content according to campaign needs. For example:',paraId:8,tocIndex:4},{value:"Receive Notifications in Real-Time:",paraId:9,tocIndex:4},{value:" Once the workflow triggers, all relevant team members will receive notifications instantly, allowing for quick responses.",paraId:9,tocIndex:4},{value:"Message Management and Tracking:",paraId:10,tocIndex:4},{value:' In-app messages are grouped by channel name, and you can filter messages by read or unread status to prioritize important information. Clicking "View" redirects you to a configured link, allowing you to manage tasks seamlessly.',paraId:10,tocIndex:4}],Ef={},Df={title:"Language Settings",toc:"menu",filename:"docs/en-US/handbook/system-settings/language-settings.md",lastUpdated:173254844e4,description:'In "System Settings" by setting "Enabled Languages," you can adjust the global language environment of the system, with the first language being the default.'},Of=[{id:"language-settings",depth:1,title:"Language Settings"}],Rf=[{value:'In "System Settings" by setting "Enabled Languages," you can adjust the global language environment of the system, with the first language being the default.',paraId:0},{value:"When multiple languages are enabled, users can set their language preferences in the user's personal center (top right corner).",paraId:1},{value:'If the language environment you are using is not translated, you can use the "',paraId:2},{value:"Localization Management",paraId:3},{value:'" plugin to perform translations.',paraId:2}],Mf={},Lf={title:"Trigger Workflow",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/trigger-workflow.md",lastUpdated:173254844e4,description:'Within any data block, you have the option to add a "Trigger Workflow" button to the action bar for individual rows of data, whether in forms, tables, or detail pages:'},Nf=[{id:"trigger-workflow",depth:1,title:"Trigger Workflow"}],zf=[{value:'Within any data block, you have the option to add a "Trigger Workflow" button to the action bar for individual rows of data, whether in forms, tables, or detail pages:',paraId:0},{value:"Once the button is added, you can link it to the workflow you previously created:",paraId:1},{value:"Afterward, simply clicking this button will initiate the custom action event:",paraId:2}],Ff={},Bf={title:"Required Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/required.md",lastUpdated:173254844e4,description:'"Required" is a fundamental rule in form validation. You can enable it directly within the field settings or dynamically configure it through form linkage rules.'},jf=[{id:"required-fields",depth:1,title:"Required Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"static-setting",depth:2,title:"Static Setting"},{id:"dynamic-setting-conditional-required",depth:2,title:"Dynamic Setting (Conditional Required)"}],Hf=[{value:'"Required" is a fundamental rule in form validation. You can enable it directly within the field settings or dynamically configure it through form linkage rules.',paraId:0,tocIndex:1},{value:"You can directly designate a field as required, which is ideal for fields that must always be completed by users, such as username and password.",paraId:1,tocIndex:2},{value:"Required fields can be set conditionally using the form block's linkage rules.",paraId:2,tocIndex:3},{value:'Example: The shipping date field becomes required when the order status is marked as "shipped."',paraId:3,tocIndex:3},{value:` + `,paraId:4}],Wf={},$f={title:"Cascading Select",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/cascade-select.md",lastUpdated:173254844e4,description:"The cascading selector is tailored for relational fields where the target table follows a tree structure. It allows users to select data according to the hierarchical levels of the tree, with support for fuzzy search to streamline the selection process."},Gf=[{id:"cascading-select",depth:1,title:"Cascading Select"},{id:"introduction",depth:2,title:"Introduction"},{id:"instructions",depth:2,title:"Instructions"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"}],Vf=[{value:"The cascading selector is tailored for relational fields where the target table follows a tree structure. It allows users to select data according to the hierarchical levels of the tree, with support for fuzzy search to streamline the selection process.",paraId:0,tocIndex:1},{value:"For one-to-one relationships, the cascading selector is configured for single selection.",paraId:1,tocIndex:2},{value:"For one-to-many relationships, the cascading selector enables multi-selection and supports drag-and-drop sorting for more intuitive organization.",paraId:2,tocIndex:2},{value:"Title Field",paraId:3,tocIndex:3},{value:": Defines the content displayed by the cascading component (title field) for easier identification.",paraId:4,tocIndex:3},{value:"Field Component",paraId:5,tocIndex:3},{value:": Offers the flexibility to switch to other relational field components, such as dropdown selectors, data pickers, and more.",paraId:6,tocIndex:3}],Kf={},Zf={title:"Popover Nester",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/popover-nester.md",lastUpdated:173254844e4,description:"In complex relational tables with intricate hierarchies and numerous fields, effectively presenting data relationships within a sub-form layout can be challenging. The Sub-form (Popup) solution enhances this by presenting relational field sub-forms in a convenient popup format, simplifying data interaction and visualization."},Yf=[{id:"popover-nester",depth:1,title:"Popover Nester"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"in-sub-table",depth:3,title:"In Sub-table"},{id:"in-form-blocks",depth:3,title:"In Form Blocks"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"title-field",depth:3,title:"Title Field"},{id:"allow-addingassociating-multiple-entries-default-enabled",depth:3,title:"Allow Adding/Associating Multiple Entries (Default Enabled)"},{id:"field-component",depth:3,title:"Field Component"},{id:"linkage-rules",depth:3,title:"Linkage Rules"}],Qf=[{value:"In complex relational tables with intricate hierarchies and numerous fields, effectively presenting data relationships within a sub-form layout can be challenging. The Sub-form (Popup) solution enhances this by presenting relational field sub-forms in a convenient popup format, simplifying data interaction and visualization.",paraId:0,tocIndex:1},{value:"The title field value is displayed dynamically outside the popup, providing real-time updates.",paraId:1,tocIndex:6},{value:"By default, multiple entries can be added or associated. When this option is disabled, only a single entry can be added or associated.",paraId:2,tocIndex:7},{value:"Field Component",paraId:3,tocIndex:8},{value:": Switch to other relationship field components, such as dropdown select, data selector, etc.",paraId:4,tocIndex:8},{value:"The version of NocoBase needs to be v1.3.17-beta or above.",paraId:5},{value:"For more information, refer to ",paraId:6},{value:"Linkage Rules",paraId:7}],Jf={},Xf={title:"Node Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-dynamic-calculation/node.md",lastUpdated:173254844e4,description:"Create a dynamic calculation node:"},ex=[{id:"node-configuration",depth:1,title:"Node Configuration"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration-1",depth:2,title:"Node Configuration"},{id:"calculation-expression",depth:2,title:"Calculation Expression"},{id:"variable-data-source",depth:3,title:"Variable Data Source"}],ax=[{value:"Create a dynamic calculation node:",paraId:0,tocIndex:1},{value:"Unlike the expression options in a standard calculation node, dynamic expressions must be selected based on preloaded data rather than directly inputting the expression. Choose the preloaded product discount rule data from the trigger:",paraId:1,tocIndex:3},{value:"You also need to select the data row object from the table to be used as a variable in the expression. This can be chosen from the workflow context, where results have been preloaded or queried. The object must be a data row from the table associated with the expression data. In this case, select the product data:",paraId:2,tocIndex:4},{value:"Saving the node configuration completes the entire setup process.",paraId:3,tocIndex:4}],tx={},nx={title:"\u63D2\u4EF6\u7BA1\u7406\u5668",toc:"menu",filename:"docs/en-US/manual/plugin-manager/plugin-manager/index.md",lastUpdated:173254844e4,description:"\u63D2\u4EF6\u7BA1\u7406\u5668\u652F\u6301\u901A\u8FC7\u754C\u9762\u6DFB\u52A0\u63D2\u4EF6\uFF0C\u4EE5\u7B80\u5355\u3001\u76F4\u89C2\uFF0C\u8F7B\u91CF\u7EA7\u7684\u4F7F\u7528\u4F53\u9A8C\u6765\u6269\u5C55 NocoBase \u7684\u529F\u80FD\u3002\u8F7B\u677E\u6269\u5C55\u548C\u5B9A\u5236\u5E94\u7528\u529F\u80FD\uFF0C\u5305\u62EC\u5B89\u88C5\u3001\u5347\u7EA7\u3001\u548C\u5378\u8F7D\u63D2\u4EF6"},ox=[{id:"\u63D2\u4EF6\u7BA1\u7406\u5668",depth:1,title:"\u63D2\u4EF6\u7BA1\u7406\u5668"},{id:"\u67E5\u770B\u63D2\u4EF6\u6587\u6863",depth:4,title:"\u67E5\u770B\u63D2\u4EF6\u6587\u6863"},{id:"\u6DFB\u52A0\u63D2\u4EF6",depth:4,title:"\u6DFB\u52A0\u63D2\u4EF6"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:4,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u7981\u7528\u63D2\u4EF6",depth:4,title:"\u7981\u7528\u63D2\u4EF6"},{id:"\u5220\u9664\u63D2\u4EF6",depth:4,title:"\u5220\u9664\u63D2\u4EF6"},{id:"\u66F4\u65B0\u63D2\u4EF6",depth:4,title:"\u66F4\u65B0\u63D2\u4EF6"}],rx=[{value:"\u63D2\u4EF6\u7BA1\u7406\u5668\u652F\u6301\u901A\u8FC7\u754C\u9762\u6DFB\u52A0\u63D2\u4EF6\uFF0C\u4EE5\u7B80\u5355\u3001\u76F4\u89C2\uFF0C\u8F7B\u91CF\u7EA7\u7684\u4F7F\u7528\u4F53\u9A8C\u6765\u6269\u5C55 NocoBase \u7684\u529F\u80FD\u3002\u8F7B\u677E\u6269\u5C55\u548C\u5B9A\u5236\u5E94\u7528\u529F\u80FD\uFF0C\u5305\u62EC\u5B89\u88C5\u3001\u5347\u7EA7\u3001\u548C\u5378\u8F7D\u63D2\u4EF6",paraId:0,tocIndex:0},{value:"\u63D2\u4EF6\u7BA1\u7406\u5668\u7684\u7EC4\u6210\u90E8\u5206",paraId:1,tocIndex:0},{value:"\u672C\u5730\u63D2\u4EF6/\u63D2\u4EF6\u5E02\u573A",paraId:2,tocIndex:0},{value:"\u63D2\u4EF6\u5206\u7C7B\uFF08\u5185\u7F6E\u3001\u542F\u7528\u3001\u672A\u542F\u7528\u3001\u6709\u95EE\u9898,\u652F\u6301\u6309\u63D2\u4EF6\u540D\u79F0\u6A21\u7CCA\u641C\u7D22\uFF09",paraId:2,tocIndex:0},{value:"\u6DFB\u52A0\u65B0\u63D2\u4EF6",paraId:2,tocIndex:0},{value:"\u63D2\u4EF6\u914D\u7F6E\u4E3B\u4F53",paraId:2,tocIndex:0},{value:"\u70B9\u51FB\u63D2\u4EF6\u53EF\u4EE5\u5FEB\u901F\u9605\u89C8\u63D2\u4EF6\u7684\u4ECB\u7ECD\u6587\u6863\uFF08\u5305\u62EC\u8BF4\u660E\u6587\u6863\u3001\u4F9D\u8D56\u517C\u5BB9\u6027\u68C0\u67E5\u3001\u66F4\u65B0\u65E5\u5FD7\uFF09",paraId:3,tocIndex:1},{value:"\u5373\u63D2\u5373\u7528\uFF0C\u53EF\u4EE5\u76F4\u63A5\u901A\u8FC7\u754C\u9762\u6DFB\u52A0\u63D2\u4EF6\uFF0C\u652F\u6301\u4ECE npm registry\uFF08\u53EF\u4EE5\u662F\u79C1\u6709\u7684\uFF09\u4E0B\u8F7D\u3001\u672C\u5730\u4E0A\u4F20\u3001URL \u4E0B\u8F7D",paraId:4,tocIndex:2},{value:"\u76EE\u524D\u4EC5 storage/plugins \u4E0B\u7684\u63D2\u4EF6\u624D\u6709\u66F4\u65B0\u64CD\u4F5C\uFF0C\u5982\u56FE",paraId:5,tocIndex:6}],dx={},ix={title:"Workflow Dynamic Calculation",toc:"menu",filename:"docs/en-US/plugins/workflow-dynamic-calculation/index.md",lastUpdated:173254844e4},lx=[],cx=[],sx={},ux={title:"Overview",toc:"menu",filename:"docs/en-US/welcome/getting-started/installation/index.md",lastUpdated:173254844e4,description:"NocoBase supports three installation methods."},px=[{id:"overview",depth:1,title:"Overview"},{id:"installation-methods",depth:2,title:"Installation Methods"},{id:"how-to-choose-the-installation-method",depth:2,title:"How to choose the Installation method?"},{id:"docker-recommended",depth:3,title:"Docker (recommended)"},{id:"create-nocobase-app",depth:3,title:"create-nocobase-app"},{id:"git-source-code",depth:3,title:"Git source code"},{id:"which-version-to-install",depth:2,title:"Which version to install?"},{id:"latest-version",depth:3,title:"Latest version"},{id:"beta-version",depth:3,title:"Beta version"},{id:"alpha-version",depth:3,title:"Alpha version"}],Ix=[{value:"NocoBase supports three installation methods.",paraId:0,tocIndex:1},{value:"Docker (recommended)",paraId:1,tocIndex:1},{value:"create-nocobase-app",paraId:2,tocIndex:1},{value:"Git source code",paraId:3,tocIndex:1},{value:"Suitable for no-code scenarios, no code to write. When upgrading, just download the latest image and reboot.",paraId:4,tocIndex:3},{value:"The business code of the project is completely independent and supports low-code development.",paraId:5,tocIndex:4},{value:"If you want to experience the latest unreleased version, or want to participate in the contribution, you need to make changes and debug on the source code, it is recommended to choose this installation method, which requires a high level of development skills, and if the code has been updated, you can git pull the latest code.",paraId:6,tocIndex:5},{value:"This is a stable and well-tested version and only bug fixed will be made. This version is recommended.",paraId:7,tocIndex:7},{value:"This version includes new features that are about to be released and it has been preliminarily tested, but still have known or unknown issues, primarily for testing and feedback. Ideal for early testers willing to try new features and provide feedback.",paraId:8,tocIndex:8},{value:"A development version containing the latest features, which may be incomplete or unstable. Suitable for technical users interested in cutting-edge features. Not recommended for production use.",paraId:9,tocIndex:9},{value:"Version",paraId:10,tocIndex:9},{value:"Source code branch",paraId:10,tocIndex:9},{value:"Docker images version",paraId:10,tocIndex:9},{value:"create-nocobase-app version",paraId:10,tocIndex:9},{value:"Specific version",paraId:10,tocIndex:9},{value:"Latest",paraId:10,tocIndex:9},{value:"main",paraId:10,tocIndex:9},{value:"nocobase/nocobase:latest",paraId:10,tocIndex:9},{value:"create-nocobase-app@latest",paraId:10,tocIndex:9},{value:"1.3.51",paraId:10,tocIndex:9},{value:"1.3.52",paraId:10,tocIndex:9},{value:"...",paraId:10,tocIndex:9},{value:"Beta",paraId:10,tocIndex:9},{value:"next",paraId:10,tocIndex:9},{value:"nocobase/nocobase:beta",paraId:10,tocIndex:9},{value:"create-nocobase-app@beta",paraId:10,tocIndex:9},{value:"1.4.0-beta.1",paraId:10,tocIndex:9},{value:"1.4.0-beta.2",paraId:10,tocIndex:9},{value:"...",paraId:10,tocIndex:9},{value:"Alpha",paraId:10,tocIndex:9},{value:"develop",paraId:10,tocIndex:9},{value:"nocobase/nocobase:alpha",paraId:10,tocIndex:9},{value:"create-nocobase-app@alpha",paraId:10,tocIndex:9},{value:"1.5.0-alpha.1",paraId:10,tocIndex:9},{value:"1.5.0-alpha.2",paraId:10,tocIndex:9},{value:"...",paraId:10,tocIndex:9}],_x={},vx={title:"Plugin Manager",toc:"menu",filename:"docs/en-US/handbook/client/user/plugin-manager/index.md",lastUpdated:173254844e4,description:"The Plugin Manager offers a straightforward and intuitive interface for adding plugins, enhancing NocoBase's functionality with a lightweight and user-friendly experience. It allows for seamless expansion and customization of application features, including the installation, upgrade, and uninstallation of plugins."},mx=[{id:"plugin-manager",depth:1,title:"Plugin Manager"},{id:"viewing-plugin-documentation",depth:2,title:"Viewing Plugin Documentation"},{id:"adding-a-plugin",depth:2,title:"Adding a Plugin"},{id:"activating-a-plugin",depth:2,title:"Activating a Plugin"},{id:"disabling-a-plugin",depth:2,title:"Disabling a Plugin"},{id:"deleting-a-plugin",depth:2,title:"Deleting a Plugin"},{id:"updating-a-plugin",depth:2,title:"Updating a Plugin"}],hx=[{value:"The Plugin Manager offers a straightforward and intuitive interface for adding plugins, enhancing NocoBase's functionality with a lightweight and user-friendly experience. It allows for seamless expansion and customization of application features, including the installation, upgrade, and uninstallation of plugins.",paraId:0,tocIndex:0},{value:"Key Components of the Plugin Manager:",paraId:1,tocIndex:0},{value:"Local Plugins/Plugin Marketplace",paraId:2,tocIndex:0},{value:": Access and manage plugins available locally or through the marketplace.",paraId:2,tocIndex:0},{value:"Plugin Classification",paraId:2,tocIndex:0},{value:": Organize plugins by categories such as Built-in, Enabled, Disabled, and Problematic. The system supports fuzzy search by plugin name.",paraId:2,tocIndex:0},{value:"Add New Plugin",paraId:2,tocIndex:0},{value:": Easily expand functionality by adding new plugins.",paraId:2,tocIndex:0},{value:"Plugin Configuration Main Body",paraId:2,tocIndex:0},{value:": Centralize your plugin configurations in one place.",paraId:2,tocIndex:0},{value:"A simple click on any plugin allows for a quick view of its documentation, which includes user instructions, compatibility checks for dependencies, and update logs.",paraId:3,tocIndex:1},{value:"With plug-and-play convenience, you can effortlessly add new plugins via the interface. The system supports downloading from the npm registry (private registries are also supported), local uploads, and URL downloads.",paraId:4,tocIndex:2},{value:"Currently, the option to update plugins is available only for those located under storage/plugins, as illustrated below:",paraId:5,tocIndex:6}],fx={},xx={title:"Expression Collection",toc:"menu",filename:"docs/en-US/handbook/collection-expression/collection.md",lastUpdated:173254844e4,description:"Before utilizing dynamic expression operation nodes within a workflow, it's essential to first create an \u201CExpression\u201D template table using the data table management tool. This table serves as a repository for various expressions:"},gx=[{id:"expression-collection",depth:1,title:"Expression Collection"},{id:"creating-an-expression-collection-template",depth:2,title:"Creating an \u201CExpression collection\u201D Template"},{id:"entering-expression-data",depth:2,title:"Entering Expression Data"},{id:"loading-relevant-data-into-the-process",depth:2,title:"Loading Relevant Data into the Process"}],bx=[{value:"Before utilizing dynamic expression operation nodes within a workflow, it's essential to first create an \u201CExpression\u201D template table using the data table management tool. This table serves as a repository for various expressions:",paraId:0,tocIndex:1},{value:"Following this, you can set up a table block and input several formula entries into the template table. Each row in the \u201CExpression\u201D template table can be viewed as a calculation rule designed for a specific data model within the table. You can utilize different fields from the data models of various tables as variables, crafting unique expressions as calculation rules. Moreover, you can leverage different calculation engines as needed.",paraId:1,tocIndex:2},{value:"Once the formulas are established, they need to be linked to the business data. Directly associating each row of business data with formula data can be tedious, so a common approach is to use a metadata table, similar to a classification table, to create a many-to-one (or one-to-one) relationship with the formula table. Then, the business data is associated with the classified metadata in a many-to-one relationship. This approach allows you to simply specify the relevant classified metadata when creating business data, making it easy to locate and utilize the corresponding formula data through the established association path.",paraId:2},{value:"As an example, consider creating a workflow triggered by a data table event. When an order is created, the trigger should preload the associated product data along with the product-related expression data:",paraId:3,tocIndex:3}],yx={},wx={title:"External Data Source - MSSQL",toc:"menu",filename:"docs/en-US/handbook/data-source-external-mssql/index.md",lastUpdated:173254844e4,description:"Use an external MSSQL database as a data source. Currently supported versions: SQL Server 2014-2019"},kx=[{id:"external-data-source---mssql",depth:1,title:"External Data Source - MSSQL"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"}],Sx=[{value:"Use an external MSSQL database as a data source. Currently supported versions: SQL Server 2014-2019",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin, which needs to be uploaded and activated through the plugin manager.",paraId:1,tocIndex:2},{value:"Refer to the ",paraId:2,tocIndex:3},{value:"Data Source / External Database",paraId:3,tocIndex:3},{value:" section.",paraId:2,tocIndex:3}],Ux={},Px={title:"External Data Source - MySQL",toc:"menu",filename:"docs/en-US/handbook/data-source-external-mysql/index.md",lastUpdated:173254844e4,description:"Use an external MySQL database as a data source. Currently supported versions: MySQL ^5.7, ^8.0"},Tx=[{id:"external-data-source---mysql",depth:1,title:"External Data Source - MySQL"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"}],Cx=[{value:"Use an external MySQL database as a data source. Currently supported versions: MySQL ^5.7, ^8.0",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin, which needs to be uploaded and activated through the plugin manager.",paraId:1,tocIndex:2},{value:"Refer to the ",paraId:2,tocIndex:3},{value:"Data Source / External Database",paraId:3,tocIndex:3},{value:" section.",paraId:2,tocIndex:3}],Ax={},qx={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-visualization/antd/overview.md",lastUpdated:173254844e4,description:"Provide tables and statistical presentations using Ant Design."},Ex=[{id:"overview",depth:1,title:"Overview"}],Dx=[{value:"Provide tables and statistical presentations using ",paraId:0,tocIndex:0},{value:"Ant Design",paraId:0,tocIndex:0},{value:".",paraId:0,tocIndex:0}],Ox={},Rx={title:"Radar Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/radar.md",lastUpdated:173254844e4,description:"Each value of the dimension field acts as a variable, with each measure forming one radar area."},Mx=[{id:"radar-chart",depth:1,title:"Radar Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-or-more-measures-1-dimension",depth:3,title:"1 or More Measures, 1 Dimension"},{id:"using-dimensions-as-variables",depth:4,title:"Using Dimensions as Variables"},{id:"using-measures-as-variables",depth:4,title:"Using Measures as Variables"},{id:"configuration-options",depth:2,title:"Configuration Options"}],Lx=[{value:"Each value of the dimension field acts as a variable, with each measure forming one radar area.",paraId:0,tocIndex:3},{value:"Each measure acts as a variable, with each value of the dimension field forming one radar area.",paraId:1,tocIndex:4},{value:"Option",paraId:2,tocIndex:5},{value:"Description",paraId:2,tocIndex:5},{value:"Size",paraId:2,tocIndex:5},{value:"Set the size of the chart, either by fixing the aspect ratio or a fixed height",paraId:2,tocIndex:5},{value:"Light mode theme",paraId:2,tocIndex:5},{value:"Preview requires selection when the system is in light mode",paraId:2,tocIndex:5},{value:"Dark mode theme",paraId:2,tocIndex:5},{value:"Preview requires selection when the system is in dark mode",paraId:2,tocIndex:5},{value:"Show legend",paraId:2,tocIndex:5},{value:"Controls whether the legend is displayed",paraId:2,tocIndex:5},{value:"Legend orient",paraId:2,tocIndex:5},{value:"Controls the direction of the legend, either horizontal or vertical",paraId:2,tocIndex:5},{value:"Legend position (left, bottom, right, top)",paraId:2,tocIndex:5},{value:"Controls the relative position of the legend",paraId:2,tocIndex:5},{value:"Shape",paraId:2,tocIndex:5},{value:"Polygon or circle",paraId:2,tocIndex:5},{value:"Range",paraId:2,tocIndex:5},{value:"Controls the minimum and maximum values of the variables",paraId:2,tocIndex:5},{value:"Radius",paraId:2,tocIndex:5},{value:"Adjusts the radius of the chart",paraId:2,tocIndex:5},{value:"Center coordinate",paraId:2,tocIndex:5},{value:"Controls the position of the chart, can be fixed values or percentages",paraId:2,tocIndex:5}],Nx={},zx={title:"Tencent COS",toc:"menu",filename:"docs/en-US/handbook/file-manager/storage/tencent-cos.md",lastUpdated:173254844e4,description:"The storage engine based on Tencent Cloud COS, you need to prepare relevant accounts and permissions in advance."},Fx=[{id:"tencent-cos",depth:1,title:"Tencent COS"},{id:"options",depth:2,title:"Options"},{id:"region",depth:3,title:"Region"},{id:"secretid",depth:3,title:"SecretId"},{id:"secretkey",depth:3,title:"SecretKey"},{id:"bucket",depth:3,title:"Bucket"}],Bx=[{value:"The storage engine based on Tencent Cloud COS, you need to prepare relevant accounts and permissions in advance.",paraId:0,tocIndex:0},{value:"This section only covers the specific options for the Tencent Cloud COS storage engine. For common parameters, please refer to ",paraId:1},{value:"Common Engine Parameters",paraId:2},{value:".",paraId:1},{value:"Fill in the region of the COS storage, for example: ",paraId:3,tocIndex:2},{value:"ap-chengdu",paraId:3,tocIndex:2},{value:".",paraId:3,tocIndex:2},{value:"You can view the region information of the storage bucket in the ",paraId:4},{value:"Tencent Cloud COS Console",paraId:4},{value:", and only need to take the prefix part of the region (without the complete domain name).",paraId:4},{value:"Fill in the ID of the Tencent Cloud authorized access key.",paraId:5,tocIndex:3},{value:"Fill in the secret of the Tencent Cloud authorized access key.",paraId:6,tocIndex:4},{value:"Fill in the name of the COS bucket, for example: ",paraId:7,tocIndex:5},{value:"qing-cdn-1234189398",paraId:7,tocIndex:5},{value:".",paraId:7,tocIndex:5}],jx={},Hx={title:"Collapse Filter Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/filter-blocks/collapse.md",lastUpdated:173254844e4,description:"The Collapse filtering block needs to be used in connection with the data block to provide filtering capabilities for the data block. It supports selecting association fields and option fields as filtering fields, and displays them in a collapsible panel effect."},Wx=[{id:"collapse-filter-block",depth:1,title:"Collapse Filter Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-block",depth:2,title:"Adding Block"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"connecting-data-blocks",depth:3,title:"Connecting Data Blocks"},{id:"configuring-fields",depth:2,title:"Configuring Fields"}],$x=[{value:"The Collapse filtering block needs to be used in connection with the data block to provide filtering capabilities for the data block. It supports selecting association fields and option fields as filtering fields, and displays them in a collapsible panel effect.",paraId:0,tocIndex:1},{value:"Example: Configure the order collapse block and order table block to achieve filter linkage.",paraId:1,tocIndex:2},{value:` `,paraId:2},{value:` `,paraId:2},{value:` `,paraId:2},{value:"Example: Connect the same data table block in the pop-up window to achieve filter linkage.",paraId:3,tocIndex:4},{value:` `,paraId:2},{value:` `,paraId:2},{value:` - `,paraId:2},{value:"For more content, refer to ",paraId:4,tocIndex:4},{value:"Connecting Data Blocks",paraId:5,tocIndex:4},{value:"Edit Block Title",paraId:6,tocIndex:4},{value:"Save as Block Template",paraId:7,tocIndex:4},{value:"Only relational fields and option fields are supported as filter fields.",paraId:8,tocIndex:5}],Gx={},Vx={title:"Pattern",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/pattern.md",lastUpdated:1732240239e3,description:"Unlike blocks, field components offer three distinct Pattern, specifically for fields within forms. Switching between these modes adjusts the corresponding field configuration options."},Kx=[{id:"pattern",depth:1,title:"Pattern"},{id:"introduction",depth:5,title:"Introduction"}],Zx=[{value:"Unlike blocks, field components offer three distinct Pattern, specifically for fields within forms. Switching between these modes adjusts the corresponding field configuration options.",paraId:0,tocIndex:1},{value:"Editable",paraId:1,tocIndex:1},{value:"Readonly (non-editable)",paraId:1,tocIndex:1},{value:"Easy-reading (view mode)",paraId:1,tocIndex:1}],Yx={},Qx={title:"Extend Node Type",toc:"menu",filename:"docs/en-US/handbook/workflow/development/instruction.md",lastUpdated:1732240239e3,description:"The type of a node essentially represents an operation command, with different commands corresponding to different operations performed during a workflow."},Jx=[{id:"extend-node-type",depth:1,title:"Extend Node Type"},{id:"backend",depth:2,title:"Backend"},{id:"the-simplest-node-command",depth:3,title:"The Simplest Node Command"},{id:"node-result-values",depth:3,title:"Node Result Values"},{id:"command-error-handling",depth:3,title:"Command Error Handling"},{id:"asynchronous-nodes",depth:3,title:"Asynchronous Nodes"},{id:"node-result-status",depth:3,title:"Node Result Status"},{id:"early-exit",depth:3,title:"Early Exit"},{id:"learn-more",depth:3,title:"Learn More"},{id:"frontend",depth:2,title:"Frontend"},{id:"the-simplest-node-command-1",depth:3,title:"The Simplest Node Command"},{id:"providing-node-results-as-variables",depth:3,title:"Providing Node Results as Variables"},{id:"learn-more-1",depth:3,title:"Learn More"}],Xx=[{value:"The type of a node essentially represents an operation command, with different commands corresponding to different operations performed during a workflow.",paraId:0,tocIndex:0},{value:"Similar to triggers, extending the type of a node involves both backend and frontend components. The backend is responsible for implementing the logic of registered commands, while the frontend provides the configuration interface for the parameters related to the node where the command resides.",paraId:1,tocIndex:0},{value:"The core of a command is a function, meaning the ",paraId:2,tocIndex:2},{value:"run",paraId:2,tocIndex:2},{value:" method in the command class must be implemented to execute the command's logic. This function can perform any necessary operations, such as database operations, file operations, or third-party API calls.",paraId:2,tocIndex:2},{value:"All commands must be derived from the ",paraId:3,tocIndex:2},{value:"Instruction",paraId:3,tocIndex:2},{value:" base class. The simplest command only needs to implement a ",paraId:3,tocIndex:2},{value:"run",paraId:3,tocIndex:2},{value:" function:",paraId:3,tocIndex:2},{value:`import { Instruction, JOB_STATUS } from '@nocobase/plugin-workflow'; + `,paraId:2},{value:"For more content, refer to ",paraId:4,tocIndex:4},{value:"Connecting Data Blocks",paraId:5,tocIndex:4},{value:"Edit Block Title",paraId:6,tocIndex:4},{value:"Save as Block Template",paraId:7,tocIndex:4},{value:"Only relational fields and option fields are supported as filter fields.",paraId:8,tocIndex:5}],Gx={},Vx={title:"Pattern",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/pattern.md",lastUpdated:173254844e4,description:"Unlike blocks, field components offer three distinct Pattern, specifically for fields within forms. Switching between these modes adjusts the corresponding field configuration options."},Kx=[{id:"pattern",depth:1,title:"Pattern"},{id:"introduction",depth:5,title:"Introduction"}],Zx=[{value:"Unlike blocks, field components offer three distinct Pattern, specifically for fields within forms. Switching between these modes adjusts the corresponding field configuration options.",paraId:0,tocIndex:1},{value:"Editable",paraId:1,tocIndex:1},{value:"Readonly (non-editable)",paraId:1,tocIndex:1},{value:"Easy-reading (view mode)",paraId:1,tocIndex:1}],Yx={},Qx={title:"Extend Node Type",toc:"menu",filename:"docs/en-US/handbook/workflow/development/instruction.md",lastUpdated:173254844e4,description:"The type of a node essentially represents an operation command, with different commands corresponding to different operations performed during a workflow."},Jx=[{id:"extend-node-type",depth:1,title:"Extend Node Type"},{id:"backend",depth:2,title:"Backend"},{id:"the-simplest-node-command",depth:3,title:"The Simplest Node Command"},{id:"node-result-values",depth:3,title:"Node Result Values"},{id:"command-error-handling",depth:3,title:"Command Error Handling"},{id:"asynchronous-nodes",depth:3,title:"Asynchronous Nodes"},{id:"node-result-status",depth:3,title:"Node Result Status"},{id:"early-exit",depth:3,title:"Early Exit"},{id:"learn-more",depth:3,title:"Learn More"},{id:"frontend",depth:2,title:"Frontend"},{id:"the-simplest-node-command-1",depth:3,title:"The Simplest Node Command"},{id:"providing-node-results-as-variables",depth:3,title:"Providing Node Results as Variables"},{id:"learn-more-1",depth:3,title:"Learn More"}],Xx=[{value:"The type of a node essentially represents an operation command, with different commands corresponding to different operations performed during a workflow.",paraId:0,tocIndex:0},{value:"Similar to triggers, extending the type of a node involves both backend and frontend components. The backend is responsible for implementing the logic of registered commands, while the frontend provides the configuration interface for the parameters related to the node where the command resides.",paraId:1,tocIndex:0},{value:"The core of a command is a function, meaning the ",paraId:2,tocIndex:2},{value:"run",paraId:2,tocIndex:2},{value:" method in the command class must be implemented to execute the command's logic. This function can perform any necessary operations, such as database operations, file operations, or third-party API calls.",paraId:2,tocIndex:2},{value:"All commands must be derived from the ",paraId:3,tocIndex:2},{value:"Instruction",paraId:3,tocIndex:2},{value:" base class. The simplest command only needs to implement a ",paraId:3,tocIndex:2},{value:"run",paraId:3,tocIndex:2},{value:" function:",paraId:3,tocIndex:2},{value:`import { Instruction, JOB_STATUS } from '@nocobase/plugin-workflow'; export class MyInstruction extends Instruction { run(node, input, processor) { @@ -4297,7 +4349,7 @@ export default class MyPlugin extends Plugin { ], }; } -`,paraId:49,tocIndex:11},{value:"This way, the following interface can be used to select among the variables in subsequent nodes:",paraId:50,tocIndex:11},{value:"When a structure in the result is a deep object array, ",paraId:51},{value:"children",paraId:51},{value:' can also be used to describe the path, but it cannot contain array indices. This is because, in NocoBase workflow variable handling, the variable path description for object arrays is automatically flattened into an array of deep values, and array indices cannot be used to access a specific value. You can refer to the content in the "Workflow: Advanced Usage" section of [Advanced Variables](../manual/advanced#Using Variables).',paraId:51},{value:"For a detailed definition of each parameter in defining node types, refer to the ",paraId:52,tocIndex:12},{value:"Workflow API Reference",paraId:53,tocIndex:12},{value:" section.",paraId:52,tocIndex:12}],eg={},ag={title:"HTTP API",toc:"menu",filename:"docs/en-US/handbook/workflow-action-trigger/http-api.md",lastUpdated:1732240239e3,description:"Post-action events can be triggered not only through user interface interactions but also via HTTP API calls, providing a flexible way to initiate workflows programmatically."},tg=[{id:"http-api",depth:1,title:"HTTP API"}],ng=[{value:"Post-action events can be triggered not only through user interface interactions but also via HTTP API calls, providing a flexible way to initiate workflows programmatically.",paraId:0,tocIndex:0},{value:"When triggering post-operation events through HTTP API calls, it's essential to ensure that the workflow is active and the data table configuration is correctly matched. If these conditions aren't met, the call may fail or produce errors.",paraId:1},{value:"For workflows associated with specific operation buttons, you can trigger them using the following method (illustrated here with the ",paraId:2},{value:"posts",paraId:2},{value:" table creation button):",paraId:2},{value:`curl -X POST -H 'Authorization: Bearer ' -H 'X-Role: ' -d \\ +`,paraId:49,tocIndex:11},{value:"This way, the following interface can be used to select among the variables in subsequent nodes:",paraId:50,tocIndex:11},{value:"When a structure in the result is a deep object array, ",paraId:51},{value:"children",paraId:51},{value:' can also be used to describe the path, but it cannot contain array indices. This is because, in NocoBase workflow variable handling, the variable path description for object arrays is automatically flattened into an array of deep values, and array indices cannot be used to access a specific value. You can refer to the content in the "Workflow: Advanced Usage" section of [Advanced Variables](../manual/advanced#Using Variables).',paraId:51},{value:"For a detailed definition of each parameter in defining node types, refer to the ",paraId:52,tocIndex:12},{value:"Workflow API Reference",paraId:53,tocIndex:12},{value:" section.",paraId:52,tocIndex:12}],eg={},ag={title:"HTTP API",toc:"menu",filename:"docs/en-US/handbook/workflow-action-trigger/http-api.md",lastUpdated:173254844e4,description:"Post-action events can be triggered not only through user interface interactions but also via HTTP API calls, providing a flexible way to initiate workflows programmatically."},tg=[{id:"http-api",depth:1,title:"HTTP API"}],ng=[{value:"Post-action events can be triggered not only through user interface interactions but also via HTTP API calls, providing a flexible way to initiate workflows programmatically.",paraId:0,tocIndex:0},{value:"When triggering post-operation events through HTTP API calls, it's essential to ensure that the workflow is active and the data table configuration is correctly matched. If these conditions aren't met, the call may fail or produce errors.",paraId:1},{value:"For workflows associated with specific operation buttons, you can trigger them using the following method (illustrated here with the ",paraId:2},{value:"posts",paraId:2},{value:" table creation button):",paraId:2},{value:`curl -X POST -H 'Authorization: Bearer ' -H 'X-Role: ' -d \\ '{ "title": "Hello, world!", "content": "This is a test post." @@ -4312,8 +4364,8 @@ export default class MyPlugin extends Plugin { } }' "http://localhost:3000/api/posts:create?triggerWorkflows=workflowKey!category" -`,paraId:8},{value:"Upon successful execution, this will trigger the corresponding post-operation event for the ",paraId:9},{value:"categories",paraId:9},{value:" table.",paraId:9},{value:"If the event is set up in global mode, there's no need to specify the workflow using the ",paraId:10},{value:"triggerWorkflows",paraId:10},{value:" URL parameter. Simply triggering the relevant data table operation will automatically initiate the associated workflow.",paraId:10}],og={},rg={title:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/dynamic-calculation.md",lastUpdated:1732240239e3,description:"\u533A\u522B\u4E8E\u666E\u901A\u7684\u8FD0\u7B97\u8282\u70B9\u53EA\u6267\u884C\u56FA\u5B9A\u7684\u8868\u8FBE\u5F0F\u8BA1\u7B97\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u53EF\u4EE5\u57FA\u4E8E\u6570\u636E\u5173\u8054\u7684\u8868\u8FBE\u5F0F\u8FDB\u884C\u4E0D\u540C\u7684\u8BA1\u7B97\u3002\u5176\u89E3\u51B3\u7684\u6838\u5FC3\u95EE\u9898\u662F\u7531\u4E8E\u666E\u901A\u7684\u516C\u5F0F\u5B57\u6BB5\u9488\u5BF9\u6570\u636E\u8868\u6240\u6709\u6570\u636E\u884C\u90FD\u53EA\u80FD\u4F7F\u7528\u540C\u4E00\u4E2A\u56FA\u5B9A\u516C\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u800C\u52A8\u6001\u8868\u8FBE\u5F0F\u53EF\u4EE5\u9488\u5BF9\u6570\u636E\u884C\u4E0D\u540C\u8BA1\u7B97\u65B9\u5F0F\u65F6\uFF0C\u5728\u5DE5\u4F5C\u6D41\u4E2D\u8FDB\u884C\u5904\u7406\u4EE5\u8FBE\u6210\u52A8\u6001\u8BA1\u7B97\u7684\u76EE\u6807\u3002"},dg=[{id:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97",depth:1,title:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97"},{id:"\u51C6\u5907",depth:2,title:"\u51C6\u5907"},{id:"\u521B\u5EFA\u8868\u8FBE\u5F0F\u6A21\u677F\u8868",depth:3,title:"\u521B\u5EFA\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868"},{id:"\u5F55\u5165\u8868\u8FBE\u5F0F\u6570\u636E",depth:3,title:"\u5F55\u5165\u8868\u8FBE\u5F0F\u6570\u636E"},{id:"\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u8868\u8FBE\u5F0F\u6570\u636E\u5EFA\u7ACB\u5173\u8054",depth:3,title:"\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u8868\u8FBE\u5F0F\u6570\u636E\u5EFA\u7ACB\u5173\u8054"},{id:"\u6D41\u7A0B\u4E2D\u52A0\u8F7D\u76F8\u5E94\u7684\u6570\u636E",depth:3,title:"\u6D41\u7A0B\u4E2D\u52A0\u8F7D\u76F8\u5E94\u7684\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u52A8\u6001\u8868\u8FBE\u5F0F",depth:3,title:"\u52A8\u6001\u8868\u8FBE\u5F0F"},{id:"\u53D8\u91CF\u6570\u636E\u6E90",depth:3,title:"\u53D8\u91CF\u6570\u636E\u6E90"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],ig=[{value:"\u533A\u522B\u4E8E\u666E\u901A\u7684\u8FD0\u7B97\u8282\u70B9\u53EA\u6267\u884C\u56FA\u5B9A\u7684\u8868\u8FBE\u5F0F\u8BA1\u7B97\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u53EF\u4EE5\u57FA\u4E8E\u6570\u636E\u5173\u8054\u7684\u8868\u8FBE\u5F0F\u8FDB\u884C\u4E0D\u540C\u7684\u8BA1\u7B97\u3002\u5176\u89E3\u51B3\u7684\u6838\u5FC3\u95EE\u9898\u662F\u7531\u4E8E\u666E\u901A\u7684\u516C\u5F0F\u5B57\u6BB5\u9488\u5BF9\u6570\u636E\u8868\u6240\u6709\u6570\u636E\u884C\u90FD\u53EA\u80FD\u4F7F\u7528\u540C\u4E00\u4E2A\u56FA\u5B9A\u516C\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u800C\u52A8\u6001\u8868\u8FBE\u5F0F\u53EF\u4EE5\u9488\u5BF9\u6570\u636E\u884C\u4E0D\u540C\u8BA1\u7B97\u65B9\u5F0F\u65F6\uFF0C\u5728\u5DE5\u4F5C\u6D41\u4E2D\u8FDB\u884C\u5904\u7406\u4EE5\u8FBE\u6210\u52A8\u6001\u8BA1\u7B97\u7684\u76EE\u6807\u3002",paraId:0,tocIndex:0},{value:"\u4F8B\u5982\u8BA2\u5355\u6570\u636E\u5728\u6240\u5C5E\u4E0D\u540C\u4EA7\u54C1\u5206\u7C7B\u4E0B\u4F7F\u7528\u4E0D\u540C\u7684\u7EDF\u8BA1\u516C\u5F0F\u6765\u8BA1\u7B97\u7279\u5B9A\u7684\u62A5\u8868\u6570\u636E\u3002",paraId:1,tocIndex:0},{value:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u7684\u4F7F\u7528\u4E0E\u5DE5\u4F5C\u6D41\u5176\u4ED6\u8F83\u4E3A\u7B80\u5355\u7684\u8282\u70B9\u4E0D\u540C\uFF0C\u6709\u51E0\u4E2A\u9700\u8981\u524D\u7F6E\u5B8C\u6210\u7684\u6B65\u9AA4\uFF1A",paraId:2,tocIndex:1},{value:"\u521B\u5EFA\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868\u3002",paraId:3,tocIndex:1},{value:"\u5F55\u5165\u8868\u8FBE\u5F0F\u6570\u636E\u3002",paraId:3,tocIndex:1},{value:"\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u8868\u8FBE\u5F0F\u6570\u636E\u5EFA\u7ACB\u5173\u8054\u3002",paraId:3,tocIndex:1},{value:"\u901A\u8FC7\u67E5\u8BE2\u8282\u70B9\u6216\u8005\u6570\u636E\u89E6\u53D1\u65F6\u7684\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E\u52A0\u8F7D\u7279\u5B9A\u4E1A\u52A1\u6570\u636E\u5173\u8054\u7684\u8868\u8FBE\u5F0F\u6570\u636E\u3002",paraId:3,tocIndex:1},{value:"\u4EE5\u4E0A\u6B65\u9AA4\u5B8C\u6210\u540E\uFF0C\u518D\u5BF9\u5DE5\u4F5C\u6D41\u914D\u7F6E\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u3002",paraId:4,tocIndex:1},{value:"\u5728\u5DE5\u4F5C\u6D41\u5185\u4F7F\u7528\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97\u8282\u70B9\u4E4B\u524D\uFF0C\u9700\u8981\u5148\u5728\u6570\u636E\u8868\u7BA1\u7406\u5DE5\u5177\u4E2D\u521B\u5EFA\u4E00\u5F20\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868\uFF0C\u7528\u4E8E\u5B58\u653E\u4E0D\u540C\u7684\u8868\u8FBE\u5F0F\uFF1A",paraId:5,tocIndex:2},{value:"\u7136\u540E\u521B\u5EFA\u4E00\u4E2A\u8868\u683C\u533A\u5757\u5BF9\u8BE5\u6A21\u677F\u8868\u6DFB\u52A0\u51E0\u6761\u516C\u5F0F\u6570\u636E\uFF0C\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868\u4E2D\u6BCF\u884C\u6570\u636E\u90FD\u53EF\u4EE5\u88AB\u7406\u89E3\u4E3A\u9488\u5BF9\u7279\u5B9A\u8868\u6570\u636E\u6A21\u578B\u7684\u4E00\u4E2A\u8BA1\u7B97\u89C4\u5219\u3002\u6BCF\u884C\u516C\u5F0F\u6570\u636E\u53EF\u4F7F\u7528\u4E0D\u540C\u6570\u636E\u8868\u7684\u6570\u636E\u6A21\u578B\u4E2D\u7684\u5B57\u6BB5\u503C\u4F5C\u4E3A\u53D8\u91CF\uFF0C\u7F16\u5199\u4E0D\u540C\u7684\u8868\u8FBE\u5F0F\u4F5C\u4E3A\u8BA1\u7B97\u89C4\u5219\uFF0C\u5F53\u7136\uFF0C\u4E5F\u53EF\u4EE5\u4F7F\u7528\u4E0D\u540C\u7684\u8BA1\u7B97\u5F15\u64CE\u3002",paraId:6,tocIndex:3},{value:"\u521B\u5EFA\u597D\u516C\u5F0F\u4EE5\u540E\u8FD8\u9700\u8981\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u516C\u5F0F\u8FDB\u884C\u5173\u8054\uFF0C\u5C06\u6BCF\u884C\u4E1A\u52A1\u6570\u636E\u76F4\u63A5\u5173\u8054\u516C\u5F0F\u6570\u636E\u884C\u4F1A\u6BD4\u8F83\u7E41\u7410\uFF0C\u6240\u4EE5\u901A\u5E38\u6211\u4EEC\u4F1A\u4F7F\u7528\u7C7B\u4F3C\u5206\u7C7B\u7684\u5143\u6570\u636E\u8868\u4E0E\u516C\u5F0F\u8868\u8FDB\u884C\u591A\u5BF9\u4E00\uFF08\u6216\u4E00\u5BF9\u4E00\uFF09\u5173\u8054\uFF0C\u518D\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u5206\u7C7B\u5143\u6570\u636E\u8FDB\u884C\u591A\u5BF9\u4E00\u7684\u5173\u8054\uFF0C\u90A3\u4E48\u5728\u521B\u5EFA\u4E1A\u52A1\u6570\u636E\u65F6\u53EA\u9700\u6307\u5B9A\u7279\u5B9A\u7684\u5206\u7C7B\u5143\u6570\u636E\uFF0C\u5373\u53EF\u5728\u540E\u7EED\u4F7F\u7528\u4E2D\u901A\u8FC7\u8FD9\u4E2A\u5173\u8054\u8DEF\u5F84\u627E\u5230\u5BF9\u5E94\u7684\u516C\u5F0F\u6570\u636E\u8FDB\u884C\u4F7F\u7528\u3002",paraId:7,tocIndex:4},{value:"\u6700\u540E\u6211\u4EEC\u9700\u8981\u5728\u7279\u5B9A\u4E1A\u52A1\u7684\u5DE5\u4F5C\u6D41\u4E2D\u52A0\u5165\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\uFF0C\u5176\u5C06\u5728\u6D41\u7A0B\u89E6\u53D1\u65F6\u6267\u884C\u5BF9\u5E94\u7684\u8BA1\u7B97\u3002",paraId:8,tocIndex:7},{value:` - `,paraId:9},{value:"\u4E0E\u666E\u901A\u8FD0\u7B97\u8282\u70B9\u7684\u8868\u8FBE\u5F0F\u9009\u9879\u4E0D\u540C\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u9700\u8981\u6839\u636E\u5DF2\u7ECF\u67E5\u8BE2\u51FA\u6765\u7684\u6570\u636E\u8FDB\u884C\u9009\u62E9\uFF0C\u800C\u4E0D\u662F\u76F4\u63A5\u5F55\u5165\u8868\u8FBE\u5F0F\u3002",paraId:10,tocIndex:8},{value:"\u540C\u65F6\u8FD8\u9700\u8981\u9009\u62E9\u8868\u8FBE\u5F0F\u4E2D\u53D8\u91CF\u6240\u9700\u8981\u4F7F\u7528\u7684\u6570\u636E\u8868\u6570\u636E\u884C\u5BF9\u8C61\uFF0C\u53EF\u4EE5\u4ECE\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u4E2D\u9009\u62E9\u5DF2\u7ECF\u63D0\u524D\u52A0\u8F7D\uFF08\u6216\u67E5\u8BE2\uFF09\u51FA\u6765\u7684\u7ED3\u679C\u5BF9\u8C61\u3002",paraId:11,tocIndex:9},{value:"\u4EE5\u5546\u54C1\u4E0B\u5355\u8FC7\u7A0B\u4E2D\u6839\u636E\u4E0D\u540C\u5546\u54C1\u8FDB\u884C\u4E0D\u540C\u4F18\u60E0\u89C4\u5219\u7684\u6700\u7EC8\u4EF7\u683C\u8BA1\u7B97\u4E3E\u4F8B\u3002",paraId:12,tocIndex:10},{value:"\u5EFA\u7ACB\u5546\u54C1\u8868\uFF1A",paraId:13,tocIndex:10},{value:"\u5B57\u6BB5\u540D",paraId:14,tocIndex:10},{value:"\u7C7B\u578B",paraId:14,tocIndex:10},{value:"\u5546\u54C1\u540D",paraId:14,tocIndex:10},{value:"\u6587\u672C",paraId:14,tocIndex:10},{value:"\u5546\u54C1\u539F\u4EF7",paraId:14,tocIndex:10},{value:"\u6570\u5B57",paraId:14,tocIndex:10},{value:"\u4F18\u60E0\u89C4\u5219",paraId:14,tocIndex:10},{value:"belongsTo",paraId:14,tocIndex:10},{value:"\uFF08\u4F18\u60E0\u89C4\u5219\u8868\uFF09",paraId:14,tocIndex:10},{value:"\u5EFA\u7ACB\u4F18\u60E0\u89C4\u5219\u8868\uFF08\u4F7F\u7528\u8868\u8FBE\u5F0F\u8868\u6A21\u677F\u521B\u5EFA\uFF09\uFF1A",paraId:15,tocIndex:10},{value:"\u5B57\u6BB5\u540D",paraId:16,tocIndex:10},{value:"\u7C7B\u578B",paraId:16,tocIndex:10},{value:"\u89C4\u5219\u540D\u79F0",paraId:16,tocIndex:10},{value:"\u6587\u672C",paraId:16,tocIndex:10},{value:"\u6570\u636E\u8868",paraId:16,tocIndex:10},{value:"\u5355\u9009\uFF08\u6570\u636E\u8868\uFF09",paraId:16,tocIndex:10},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:16,tocIndex:10},{value:"\u5355\u9009\uFF08mathjs/formulajs\uFF09",paraId:16,tocIndex:10},{value:"\u8868\u8FBE\u5F0F",paraId:16,tocIndex:10},{value:"\u6587\u672C",paraId:16,tocIndex:10},{value:"\u5F55\u5165\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:17,tocIndex:10},{value:"ID",paraId:18,tocIndex:10},{value:"\u540D\u79F0",paraId:18,tocIndex:10},{value:"\u6570\u636E\u8868",paraId:18,tocIndex:10},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:18,tocIndex:10},{value:"\u8868\u8FBE\u5F0F",paraId:18,tocIndex:10},{value:"1",paraId:18,tocIndex:10},{value:"\u516B\u6298\u5546\u54C1",paraId:18,tocIndex:10},{value:"\u5546\u54C1",paraId:18,tocIndex:10},{value:"formula.js",paraId:18,tocIndex:10},{value:"{{\u5546\u54C1.\u4EF7\u683C}} * 0.8",paraId:18,tocIndex:10},{value:"2",paraId:18,tocIndex:10},{value:"\u4E5D\u6298\u5546\u54C1",paraId:18,tocIndex:10},{value:"\u5546\u54C1",paraId:18,tocIndex:10},{value:"formula.js",paraId:18,tocIndex:10},{value:"{{\u5546\u54C1.\u4EF7\u683C}} * 0.9",paraId:18,tocIndex:10},{value:"\u521B\u5EFA\u5546\u54C1\uFF0C\u5E76\u5173\u8054\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:19,tocIndex:10},{value:"ID",paraId:20,tocIndex:10},{value:"\u5546\u54C1\u540D\u79F0",paraId:20,tocIndex:10},{value:"\u4EF7\u683C",paraId:20,tocIndex:10},{value:"\u4F18\u60E0\u89C4\u5219",paraId:20,tocIndex:10},{value:"1",paraId:20,tocIndex:10},{value:"iPhone 14 Pro",paraId:20,tocIndex:10},{value:"7999",paraId:20,tocIndex:10},{value:"2",paraId:20,tocIndex:10},{value:"2",paraId:20,tocIndex:10},{value:"iPhone 13 Pro",paraId:20,tocIndex:10},{value:"6999",paraId:20,tocIndex:10},{value:"1",paraId:20,tocIndex:10},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\uFF0C\u8BA2\u5355\u521B\u5EFA\u65F6\u89E6\u53D1\uFF1A",paraId:21,tocIndex:10},{value:"\u521B\u5EFA\u4E00\u4E2A\u8FD0\u7B97\u8282\u70B9\uFF0C\u914D\u7F6E\u52A8\u6001\u8868\u8FBE\u5F0F\u4E3A\u89E6\u53D1\u6570\u636E/\u5546\u54C1/\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:22,tocIndex:10},{value:"\u914D\u7F6E\u53D8\u91CF\u6570\u636E\u6E90\u4E3A\u89E6\u53D1\u6570\u636E\u4E2D\u7684\u5546\u54C1\uFF1A",paraId:23,tocIndex:10},{value:"\u589E\u52A0\u4E00\u4E2A\u66F4\u65B0\u6570\u636E\u8282\u70B9\uFF0C\u914D\u7F6E\u66F4\u65B0\u8BA2\u5355\u603B\u4EF7\u4E3A\u8BA1\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF1A",paraId:24,tocIndex:10},{value:"\u521B\u5EFA\u8BA2\u5355\u89E6\u53D1\u5DE5\u4F5C\u6D41\uFF0C\u518D\u67E5\u770B\u8BA2\u5355\u5217\u8868\uFF0C\u6838\u5BF9\u4EF7\u683C\uFF1A",paraId:25,tocIndex:10},{value:"\u8BA2\u5355\u5546\u54C1",paraId:26,tocIndex:10},{value:"\u8BA2\u5355\u5546\u54C1 / \u539F\u4EF7",paraId:26,tocIndex:10},{value:"\u4F18\u60E0\u89C4\u5219",paraId:26,tocIndex:10},{value:"\u603B\u4EF7",paraId:26,tocIndex:10},{value:"iPhone 14 Pro",paraId:26,tocIndex:10},{value:"7999",paraId:26,tocIndex:10},{value:"\u4E5D\u6298",paraId:26,tocIndex:10},{value:"7999 * 0.9 = 7199.1",paraId:26,tocIndex:10},{value:"iPhone 13 Pro",paraId:26,tocIndex:10},{value:"6999",paraId:26,tocIndex:10},{value:"\u516B\u6298",paraId:26,tocIndex:10},{value:"6999 * 0.8 = 5599.2",paraId:26,tocIndex:10}],lg={},cg={title:"Global Registration of Component and Scope",toc:"menu",filename:"docs/en-US/plugin-samples/component-and-scope/global.md",lastUpdated:1732240239e3,description:"Create a new page and use the SchemaComponent to render some content. The route component and the components within the SchemaComponent are globally registered."},sg=[{id:"global-registration-of-component-and-scope",depth:1,title:"Global Registration of Component and Scope"},{id:"example-explanation",depth:2,title:"Example Explanation"},{id:"initializing-the-plugin",depth:2,title:"Initializing the Plugin"},{id:"function-implementation",depth:2,title:"Function Implementation"},{id:"1-creating-a-custom-page",depth:3,title:"1. Creating a Custom Page"},{id:"2-global-registration-of-components-and-routes",depth:3,title:"2. Global Registration of Components and Routes"},{id:"3-using-schemacomponent-to-render-a-schema",depth:3,title:"3. Using SchemaComponent to Render a Schema"},{id:"packaging-and-uploading-to-production",depth:2,title:"Packaging and Uploading to Production"}],ug=[{value:"Create a new page and use the ",paraId:0,tocIndex:1},{value:"SchemaComponent",paraId:0,tocIndex:1},{value:" to render some content. The route component and the components within the ",paraId:0,tocIndex:1},{value:"SchemaComponent",paraId:0,tocIndex:1},{value:" are globally registered.",paraId:0,tocIndex:1},{value:"You can view the complete example code for this documentation in the ",paraId:1,tocIndex:1},{value:"plugin-samples",paraId:1,tocIndex:1},{value:" repository.",paraId:1,tocIndex:1},{value:"Following the instructions from ",paraId:2,tocIndex:2},{value:"Creating Your First Plugin",paraId:3,tocIndex:2},{value:", if you don\u2019t already have a project, you can create one. If you have a project or have cloned the source code, you can skip this step.",paraId:2,tocIndex:2},{value:`yarn create nocobase-app my-nocobase-app -d sqlite +`,paraId:8},{value:"Upon successful execution, this will trigger the corresponding post-operation event for the ",paraId:9},{value:"categories",paraId:9},{value:" table.",paraId:9},{value:"If the event is set up in global mode, there's no need to specify the workflow using the ",paraId:10},{value:"triggerWorkflows",paraId:10},{value:" URL parameter. Simply triggering the relevant data table operation will automatically initiate the associated workflow.",paraId:10}],og={},rg={title:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/dynamic-calculation.md",lastUpdated:173254844e4,description:"\u533A\u522B\u4E8E\u666E\u901A\u7684\u8FD0\u7B97\u8282\u70B9\u53EA\u6267\u884C\u56FA\u5B9A\u7684\u8868\u8FBE\u5F0F\u8BA1\u7B97\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u53EF\u4EE5\u57FA\u4E8E\u6570\u636E\u5173\u8054\u7684\u8868\u8FBE\u5F0F\u8FDB\u884C\u4E0D\u540C\u7684\u8BA1\u7B97\u3002\u5176\u89E3\u51B3\u7684\u6838\u5FC3\u95EE\u9898\u662F\u7531\u4E8E\u666E\u901A\u7684\u516C\u5F0F\u5B57\u6BB5\u9488\u5BF9\u6570\u636E\u8868\u6240\u6709\u6570\u636E\u884C\u90FD\u53EA\u80FD\u4F7F\u7528\u540C\u4E00\u4E2A\u56FA\u5B9A\u516C\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u800C\u52A8\u6001\u8868\u8FBE\u5F0F\u53EF\u4EE5\u9488\u5BF9\u6570\u636E\u884C\u4E0D\u540C\u8BA1\u7B97\u65B9\u5F0F\u65F6\uFF0C\u5728\u5DE5\u4F5C\u6D41\u4E2D\u8FDB\u884C\u5904\u7406\u4EE5\u8FBE\u6210\u52A8\u6001\u8BA1\u7B97\u7684\u76EE\u6807\u3002"},dg=[{id:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97",depth:1,title:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97"},{id:"\u51C6\u5907",depth:2,title:"\u51C6\u5907"},{id:"\u521B\u5EFA\u8868\u8FBE\u5F0F\u6A21\u677F\u8868",depth:3,title:"\u521B\u5EFA\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868"},{id:"\u5F55\u5165\u8868\u8FBE\u5F0F\u6570\u636E",depth:3,title:"\u5F55\u5165\u8868\u8FBE\u5F0F\u6570\u636E"},{id:"\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u8868\u8FBE\u5F0F\u6570\u636E\u5EFA\u7ACB\u5173\u8054",depth:3,title:"\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u8868\u8FBE\u5F0F\u6570\u636E\u5EFA\u7ACB\u5173\u8054"},{id:"\u6D41\u7A0B\u4E2D\u52A0\u8F7D\u76F8\u5E94\u7684\u6570\u636E",depth:3,title:"\u6D41\u7A0B\u4E2D\u52A0\u8F7D\u76F8\u5E94\u7684\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u52A8\u6001\u8868\u8FBE\u5F0F",depth:3,title:"\u52A8\u6001\u8868\u8FBE\u5F0F"},{id:"\u53D8\u91CF\u6570\u636E\u6E90",depth:3,title:"\u53D8\u91CF\u6570\u636E\u6E90"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],ig=[{value:"\u533A\u522B\u4E8E\u666E\u901A\u7684\u8FD0\u7B97\u8282\u70B9\u53EA\u6267\u884C\u56FA\u5B9A\u7684\u8868\u8FBE\u5F0F\u8BA1\u7B97\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u53EF\u4EE5\u57FA\u4E8E\u6570\u636E\u5173\u8054\u7684\u8868\u8FBE\u5F0F\u8FDB\u884C\u4E0D\u540C\u7684\u8BA1\u7B97\u3002\u5176\u89E3\u51B3\u7684\u6838\u5FC3\u95EE\u9898\u662F\u7531\u4E8E\u666E\u901A\u7684\u516C\u5F0F\u5B57\u6BB5\u9488\u5BF9\u6570\u636E\u8868\u6240\u6709\u6570\u636E\u884C\u90FD\u53EA\u80FD\u4F7F\u7528\u540C\u4E00\u4E2A\u56FA\u5B9A\u516C\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u800C\u52A8\u6001\u8868\u8FBE\u5F0F\u53EF\u4EE5\u9488\u5BF9\u6570\u636E\u884C\u4E0D\u540C\u8BA1\u7B97\u65B9\u5F0F\u65F6\uFF0C\u5728\u5DE5\u4F5C\u6D41\u4E2D\u8FDB\u884C\u5904\u7406\u4EE5\u8FBE\u6210\u52A8\u6001\u8BA1\u7B97\u7684\u76EE\u6807\u3002",paraId:0,tocIndex:0},{value:"\u4F8B\u5982\u8BA2\u5355\u6570\u636E\u5728\u6240\u5C5E\u4E0D\u540C\u4EA7\u54C1\u5206\u7C7B\u4E0B\u4F7F\u7528\u4E0D\u540C\u7684\u7EDF\u8BA1\u516C\u5F0F\u6765\u8BA1\u7B97\u7279\u5B9A\u7684\u62A5\u8868\u6570\u636E\u3002",paraId:1,tocIndex:0},{value:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u7684\u4F7F\u7528\u4E0E\u5DE5\u4F5C\u6D41\u5176\u4ED6\u8F83\u4E3A\u7B80\u5355\u7684\u8282\u70B9\u4E0D\u540C\uFF0C\u6709\u51E0\u4E2A\u9700\u8981\u524D\u7F6E\u5B8C\u6210\u7684\u6B65\u9AA4\uFF1A",paraId:2,tocIndex:1},{value:"\u521B\u5EFA\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868\u3002",paraId:3,tocIndex:1},{value:"\u5F55\u5165\u8868\u8FBE\u5F0F\u6570\u636E\u3002",paraId:3,tocIndex:1},{value:"\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u8868\u8FBE\u5F0F\u6570\u636E\u5EFA\u7ACB\u5173\u8054\u3002",paraId:3,tocIndex:1},{value:"\u901A\u8FC7\u67E5\u8BE2\u8282\u70B9\u6216\u8005\u6570\u636E\u89E6\u53D1\u65F6\u7684\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E\u52A0\u8F7D\u7279\u5B9A\u4E1A\u52A1\u6570\u636E\u5173\u8054\u7684\u8868\u8FBE\u5F0F\u6570\u636E\u3002",paraId:3,tocIndex:1},{value:"\u4EE5\u4E0A\u6B65\u9AA4\u5B8C\u6210\u540E\uFF0C\u518D\u5BF9\u5DE5\u4F5C\u6D41\u914D\u7F6E\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\u3002",paraId:4,tocIndex:1},{value:"\u5728\u5DE5\u4F5C\u6D41\u5185\u4F7F\u7528\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97\u8282\u70B9\u4E4B\u524D\uFF0C\u9700\u8981\u5148\u5728\u6570\u636E\u8868\u7BA1\u7406\u5DE5\u5177\u4E2D\u521B\u5EFA\u4E00\u5F20\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868\uFF0C\u7528\u4E8E\u5B58\u653E\u4E0D\u540C\u7684\u8868\u8FBE\u5F0F\uFF1A",paraId:5,tocIndex:2},{value:"\u7136\u540E\u521B\u5EFA\u4E00\u4E2A\u8868\u683C\u533A\u5757\u5BF9\u8BE5\u6A21\u677F\u8868\u6DFB\u52A0\u51E0\u6761\u516C\u5F0F\u6570\u636E\uFF0C\u201C\u8868\u8FBE\u5F0F\u201D\u6A21\u677F\u8868\u4E2D\u6BCF\u884C\u6570\u636E\u90FD\u53EF\u4EE5\u88AB\u7406\u89E3\u4E3A\u9488\u5BF9\u7279\u5B9A\u8868\u6570\u636E\u6A21\u578B\u7684\u4E00\u4E2A\u8BA1\u7B97\u89C4\u5219\u3002\u6BCF\u884C\u516C\u5F0F\u6570\u636E\u53EF\u4F7F\u7528\u4E0D\u540C\u6570\u636E\u8868\u7684\u6570\u636E\u6A21\u578B\u4E2D\u7684\u5B57\u6BB5\u503C\u4F5C\u4E3A\u53D8\u91CF\uFF0C\u7F16\u5199\u4E0D\u540C\u7684\u8868\u8FBE\u5F0F\u4F5C\u4E3A\u8BA1\u7B97\u89C4\u5219\uFF0C\u5F53\u7136\uFF0C\u4E5F\u53EF\u4EE5\u4F7F\u7528\u4E0D\u540C\u7684\u8BA1\u7B97\u5F15\u64CE\u3002",paraId:6,tocIndex:3},{value:"\u521B\u5EFA\u597D\u516C\u5F0F\u4EE5\u540E\u8FD8\u9700\u8981\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u516C\u5F0F\u8FDB\u884C\u5173\u8054\uFF0C\u5C06\u6BCF\u884C\u4E1A\u52A1\u6570\u636E\u76F4\u63A5\u5173\u8054\u516C\u5F0F\u6570\u636E\u884C\u4F1A\u6BD4\u8F83\u7E41\u7410\uFF0C\u6240\u4EE5\u901A\u5E38\u6211\u4EEC\u4F1A\u4F7F\u7528\u7C7B\u4F3C\u5206\u7C7B\u7684\u5143\u6570\u636E\u8868\u4E0E\u516C\u5F0F\u8868\u8FDB\u884C\u591A\u5BF9\u4E00\uFF08\u6216\u4E00\u5BF9\u4E00\uFF09\u5173\u8054\uFF0C\u518D\u5C06\u4E1A\u52A1\u6570\u636E\u4E0E\u5206\u7C7B\u5143\u6570\u636E\u8FDB\u884C\u591A\u5BF9\u4E00\u7684\u5173\u8054\uFF0C\u90A3\u4E48\u5728\u521B\u5EFA\u4E1A\u52A1\u6570\u636E\u65F6\u53EA\u9700\u6307\u5B9A\u7279\u5B9A\u7684\u5206\u7C7B\u5143\u6570\u636E\uFF0C\u5373\u53EF\u5728\u540E\u7EED\u4F7F\u7528\u4E2D\u901A\u8FC7\u8FD9\u4E2A\u5173\u8054\u8DEF\u5F84\u627E\u5230\u5BF9\u5E94\u7684\u516C\u5F0F\u6570\u636E\u8FDB\u884C\u4F7F\u7528\u3002",paraId:7,tocIndex:4},{value:"\u6700\u540E\u6211\u4EEC\u9700\u8981\u5728\u7279\u5B9A\u4E1A\u52A1\u7684\u5DE5\u4F5C\u6D41\u4E2D\u52A0\u5165\u52A8\u6001\u8868\u8FBE\u5F0F\u8282\u70B9\uFF0C\u5176\u5C06\u5728\u6D41\u7A0B\u89E6\u53D1\u65F6\u6267\u884C\u5BF9\u5E94\u7684\u8BA1\u7B97\u3002",paraId:8,tocIndex:7},{value:` + `,paraId:9},{value:"\u4E0E\u666E\u901A\u8FD0\u7B97\u8282\u70B9\u7684\u8868\u8FBE\u5F0F\u9009\u9879\u4E0D\u540C\uFF0C\u52A8\u6001\u8868\u8FBE\u5F0F\u9700\u8981\u6839\u636E\u5DF2\u7ECF\u67E5\u8BE2\u51FA\u6765\u7684\u6570\u636E\u8FDB\u884C\u9009\u62E9\uFF0C\u800C\u4E0D\u662F\u76F4\u63A5\u5F55\u5165\u8868\u8FBE\u5F0F\u3002",paraId:10,tocIndex:8},{value:"\u540C\u65F6\u8FD8\u9700\u8981\u9009\u62E9\u8868\u8FBE\u5F0F\u4E2D\u53D8\u91CF\u6240\u9700\u8981\u4F7F\u7528\u7684\u6570\u636E\u8868\u6570\u636E\u884C\u5BF9\u8C61\uFF0C\u53EF\u4EE5\u4ECE\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u4E2D\u9009\u62E9\u5DF2\u7ECF\u63D0\u524D\u52A0\u8F7D\uFF08\u6216\u67E5\u8BE2\uFF09\u51FA\u6765\u7684\u7ED3\u679C\u5BF9\u8C61\u3002",paraId:11,tocIndex:9},{value:"\u4EE5\u5546\u54C1\u4E0B\u5355\u8FC7\u7A0B\u4E2D\u6839\u636E\u4E0D\u540C\u5546\u54C1\u8FDB\u884C\u4E0D\u540C\u4F18\u60E0\u89C4\u5219\u7684\u6700\u7EC8\u4EF7\u683C\u8BA1\u7B97\u4E3E\u4F8B\u3002",paraId:12,tocIndex:10},{value:"\u5EFA\u7ACB\u5546\u54C1\u8868\uFF1A",paraId:13,tocIndex:10},{value:"\u5B57\u6BB5\u540D",paraId:14,tocIndex:10},{value:"\u7C7B\u578B",paraId:14,tocIndex:10},{value:"\u5546\u54C1\u540D",paraId:14,tocIndex:10},{value:"\u6587\u672C",paraId:14,tocIndex:10},{value:"\u5546\u54C1\u539F\u4EF7",paraId:14,tocIndex:10},{value:"\u6570\u5B57",paraId:14,tocIndex:10},{value:"\u4F18\u60E0\u89C4\u5219",paraId:14,tocIndex:10},{value:"belongsTo",paraId:14,tocIndex:10},{value:"\uFF08\u4F18\u60E0\u89C4\u5219\u8868\uFF09",paraId:14,tocIndex:10},{value:"\u5EFA\u7ACB\u4F18\u60E0\u89C4\u5219\u8868\uFF08\u4F7F\u7528\u8868\u8FBE\u5F0F\u8868\u6A21\u677F\u521B\u5EFA\uFF09\uFF1A",paraId:15,tocIndex:10},{value:"\u5B57\u6BB5\u540D",paraId:16,tocIndex:10},{value:"\u7C7B\u578B",paraId:16,tocIndex:10},{value:"\u89C4\u5219\u540D\u79F0",paraId:16,tocIndex:10},{value:"\u6587\u672C",paraId:16,tocIndex:10},{value:"\u6570\u636E\u8868",paraId:16,tocIndex:10},{value:"\u5355\u9009\uFF08\u6570\u636E\u8868\uFF09",paraId:16,tocIndex:10},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:16,tocIndex:10},{value:"\u5355\u9009\uFF08mathjs/formulajs\uFF09",paraId:16,tocIndex:10},{value:"\u8868\u8FBE\u5F0F",paraId:16,tocIndex:10},{value:"\u6587\u672C",paraId:16,tocIndex:10},{value:"\u5F55\u5165\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:17,tocIndex:10},{value:"ID",paraId:18,tocIndex:10},{value:"\u540D\u79F0",paraId:18,tocIndex:10},{value:"\u6570\u636E\u8868",paraId:18,tocIndex:10},{value:"\u8BA1\u7B97\u5F15\u64CE",paraId:18,tocIndex:10},{value:"\u8868\u8FBE\u5F0F",paraId:18,tocIndex:10},{value:"1",paraId:18,tocIndex:10},{value:"\u516B\u6298\u5546\u54C1",paraId:18,tocIndex:10},{value:"\u5546\u54C1",paraId:18,tocIndex:10},{value:"formula.js",paraId:18,tocIndex:10},{value:"{{\u5546\u54C1.\u4EF7\u683C}} * 0.8",paraId:18,tocIndex:10},{value:"2",paraId:18,tocIndex:10},{value:"\u4E5D\u6298\u5546\u54C1",paraId:18,tocIndex:10},{value:"\u5546\u54C1",paraId:18,tocIndex:10},{value:"formula.js",paraId:18,tocIndex:10},{value:"{{\u5546\u54C1.\u4EF7\u683C}} * 0.9",paraId:18,tocIndex:10},{value:"\u521B\u5EFA\u5546\u54C1\uFF0C\u5E76\u5173\u8054\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:19,tocIndex:10},{value:"ID",paraId:20,tocIndex:10},{value:"\u5546\u54C1\u540D\u79F0",paraId:20,tocIndex:10},{value:"\u4EF7\u683C",paraId:20,tocIndex:10},{value:"\u4F18\u60E0\u89C4\u5219",paraId:20,tocIndex:10},{value:"1",paraId:20,tocIndex:10},{value:"iPhone 14 Pro",paraId:20,tocIndex:10},{value:"7999",paraId:20,tocIndex:10},{value:"2",paraId:20,tocIndex:10},{value:"2",paraId:20,tocIndex:10},{value:"iPhone 13 Pro",paraId:20,tocIndex:10},{value:"6999",paraId:20,tocIndex:10},{value:"1",paraId:20,tocIndex:10},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\uFF0C\u8BA2\u5355\u521B\u5EFA\u65F6\u89E6\u53D1\uFF1A",paraId:21,tocIndex:10},{value:"\u521B\u5EFA\u4E00\u4E2A\u8FD0\u7B97\u8282\u70B9\uFF0C\u914D\u7F6E\u52A8\u6001\u8868\u8FBE\u5F0F\u4E3A\u89E6\u53D1\u6570\u636E/\u5546\u54C1/\u4F18\u60E0\u89C4\u5219\uFF1A",paraId:22,tocIndex:10},{value:"\u914D\u7F6E\u53D8\u91CF\u6570\u636E\u6E90\u4E3A\u89E6\u53D1\u6570\u636E\u4E2D\u7684\u5546\u54C1\uFF1A",paraId:23,tocIndex:10},{value:"\u589E\u52A0\u4E00\u4E2A\u66F4\u65B0\u6570\u636E\u8282\u70B9\uFF0C\u914D\u7F6E\u66F4\u65B0\u8BA2\u5355\u603B\u4EF7\u4E3A\u8BA1\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF1A",paraId:24,tocIndex:10},{value:"\u521B\u5EFA\u8BA2\u5355\u89E6\u53D1\u5DE5\u4F5C\u6D41\uFF0C\u518D\u67E5\u770B\u8BA2\u5355\u5217\u8868\uFF0C\u6838\u5BF9\u4EF7\u683C\uFF1A",paraId:25,tocIndex:10},{value:"\u8BA2\u5355\u5546\u54C1",paraId:26,tocIndex:10},{value:"\u8BA2\u5355\u5546\u54C1 / \u539F\u4EF7",paraId:26,tocIndex:10},{value:"\u4F18\u60E0\u89C4\u5219",paraId:26,tocIndex:10},{value:"\u603B\u4EF7",paraId:26,tocIndex:10},{value:"iPhone 14 Pro",paraId:26,tocIndex:10},{value:"7999",paraId:26,tocIndex:10},{value:"\u4E5D\u6298",paraId:26,tocIndex:10},{value:"7999 * 0.9 = 7199.1",paraId:26,tocIndex:10},{value:"iPhone 13 Pro",paraId:26,tocIndex:10},{value:"6999",paraId:26,tocIndex:10},{value:"\u516B\u6298",paraId:26,tocIndex:10},{value:"6999 * 0.8 = 5599.2",paraId:26,tocIndex:10}],lg={},cg={title:"Global Registration of Component and Scope",toc:"menu",filename:"docs/en-US/plugin-samples/component-and-scope/global.md",lastUpdated:173254844e4,description:"Create a new page and use the SchemaComponent to render some content. The route component and the components within the SchemaComponent are globally registered."},sg=[{id:"global-registration-of-component-and-scope",depth:1,title:"Global Registration of Component and Scope"},{id:"example-explanation",depth:2,title:"Example Explanation"},{id:"initializing-the-plugin",depth:2,title:"Initializing the Plugin"},{id:"function-implementation",depth:2,title:"Function Implementation"},{id:"1-creating-a-custom-page",depth:3,title:"1. Creating a Custom Page"},{id:"2-global-registration-of-components-and-routes",depth:3,title:"2. Global Registration of Components and Routes"},{id:"3-using-schemacomponent-to-render-a-schema",depth:3,title:"3. Using SchemaComponent to Render a Schema"},{id:"packaging-and-uploading-to-production",depth:2,title:"Packaging and Uploading to Production"}],ug=[{value:"Create a new page and use the ",paraId:0,tocIndex:1},{value:"SchemaComponent",paraId:0,tocIndex:1},{value:" to render some content. The route component and the components within the ",paraId:0,tocIndex:1},{value:"SchemaComponent",paraId:0,tocIndex:1},{value:" are globally registered.",paraId:0,tocIndex:1},{value:"You can view the complete example code for this documentation in the ",paraId:1,tocIndex:1},{value:"plugin-samples",paraId:1,tocIndex:1},{value:" repository.",paraId:1,tocIndex:1},{value:"Following the instructions from ",paraId:2,tocIndex:2},{value:"Creating Your First Plugin",paraId:3,tocIndex:2},{value:", if you don\u2019t already have a project, you can create one. If you have a project or have cloned the source code, you can skip this step.",paraId:2,tocIndex:2},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install yarn nocobase install @@ -4396,12 +4448,12 @@ export class PluginComponentAndScopeGlobalClient extends Plugin { export default PluginComponentAndScopeGlobalClient; `,paraId:27,tocIndex:6},{value:"Afterward, visit ",paraId:28,tocIndex:6},{value:"http://localhost:13000/admin/custom-page1",paraId:28,tocIndex:6},{value:" to see the content of the ",paraId:28,tocIndex:6},{value:"CustomPage",paraId:28,tocIndex:6},{value:" component.",paraId:28,tocIndex:6},{value:"Following the instructions in ",paraId:29,tocIndex:7},{value:"Building and Packaging the Plugin",paraId:30,tocIndex:7},{value:", you can package the plugin and upload it to the production environment.",paraId:29,tocIndex:7},{value:"If you have cloned the source code, first perform a full build to include plugin dependencies.",paraId:31,tocIndex:7},{value:`yarn build `,paraId:32,tocIndex:7},{value:"If the project was created using ",paraId:33,tocIndex:7},{value:"create-nocobase-app",paraId:33,tocIndex:7},{value:", simply run:",paraId:33,tocIndex:7},{value:`yarn build @nocobase-sample/plugin-component-and-scope-global --tar -`,paraId:34,tocIndex:7},{value:"After this, you\u2019ll find the ",paraId:35,tocIndex:7},{value:"storage/tar/@nocobase-sample/plugin-component-and-scope-global.tar.gz",paraId:35,tocIndex:7},{value:" file, which can be installed using the ",paraId:35,tocIndex:7},{value:"upload method",paraId:36,tocIndex:7},{value:".",paraId:35,tocIndex:7}],pg={},Ig={title:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3",toc:"menu",filename:"docs/en-US/plugins/client/user/plugin-settings/index.md",lastUpdated:1732240239e3,description:"\u7BA1\u7406\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u4E2A\u96C6\u4E2D\u7BA1\u7406\u548C\u914D\u7F6E\u7CFB\u7EDF\u4FE1\u606F\u4EE5\u53CA\u4E0E\u5DE5\u4F5C\u76F8\u5173\u8BBE\u7F6E\u7684\u5E73\u53F0\u3002\u7528\u6237\u53EF\u4EE5\u6839\u636E\u5176\u7279\u5B9A\u7684\u4E1A\u52A1\u9700\u6C42\u548C\u4E2A\u4EBA\u504F\u597D\u6765\u81EA\u5B9A\u4E49\u7CFB\u7EDF\u3001\u6570\u636E\u8868\u5EFA\u6A21\u3001\u5DE5\u4F5C\u6D41\u914D\u7F6E\u548C\u63D2\u4EF6\u914D\u7F6E"},_g=[{id:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3",depth:1,title:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3"}],vg=[{value:"\u7BA1\u7406\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u4E2A\u96C6\u4E2D\u7BA1\u7406\u548C\u914D\u7F6E\u7CFB\u7EDF\u4FE1\u606F\u4EE5\u53CA\u4E0E\u5DE5\u4F5C\u76F8\u5173\u8BBE\u7F6E\u7684\u5E73\u53F0\u3002\u7528\u6237\u53EF\u4EE5\u6839\u636E\u5176\u7279\u5B9A\u7684\u4E1A\u52A1\u9700\u6C42\u548C\u4E2A\u4EBA\u504F\u597D\u6765\u81EA\u5B9A\u4E49\u7CFB\u7EDF\u3001\u6570\u636E\u8868\u5EFA\u6A21\u3001\u5DE5\u4F5C\u6D41\u914D\u7F6E\u548C\u63D2\u4EF6\u914D\u7F6E",paraId:0,tocIndex:0},{value:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3\u7684\u7EC4\u6210",paraId:1,tocIndex:0},{value:"\u7F6E\u9876\u7684\u5FEB\u6377\u914D\u7F6E\u9879",paraId:2,tocIndex:0},{value:"\u6240\u6709\u6FC0\u6D3B\u7684\u63D2\u4EF6\u914D\u7F6E\u5217\u8868",paraId:2,tocIndex:0},{value:"\u63D2\u4EF6\u7684\u6807\u7B7E\u9875",paraId:2,tocIndex:0},{value:"\u6B63\u6587\u5185\u5BB9",paraId:2,tocIndex:0}],mg={},hg={title:"\u914D\u7F6E\u9762\u677F",toc:"menu",filename:"docs/en-US/plugins/data-visualization/user/configure.md",lastUpdated:1732240239e3,description:"\u56FE\u8868\u7684\u914D\u7F6E\u9762\u677F\u6574\u4F53\u4E0A\u5212\u5206\u4E3A\u4E09\u4E2A\u90E8\u5206\uFF1A\u6570\u636E\u914D\u7F6E\u3001\u56FE\u8868\u914D\u7F6E\u548C\u56FE\u8868\u9884\u89C8\u3002"},fg=[{id:"\u914D\u7F6E\u9762\u677F",depth:1,title:"\u914D\u7F6E\u9762\u677F"},{id:"\u6570\u636E\u914D\u7F6E",depth:2,title:"\u6570\u636E\u914D\u7F6E"},{id:"\u5EA6\u91CF-measures",depth:3,title:"\u5EA6\u91CF (Measures)"},{id:"\u7EF4\u5EA6-dimesions",depth:3,title:"\u7EF4\u5EA6 (Dimesions)"},{id:"\u7B5B\u9009-filter",depth:3,title:"\u7B5B\u9009 (Filter)"},{id:"\u6392\u5E8F-sort-\u548C\u9650\u5236-limit",depth:3,title:"\u6392\u5E8F (Sort) \u548C\u9650\u5236 (Limit)"},{id:"\u7F13\u5B58",depth:3,title:"\u7F13\u5B58"},{id:"\u56FE\u8868\u914D\u7F6E",depth:2,title:"\u56FE\u8868\u914D\u7F6E"},{id:"\u6570\u636E\u8F6C\u6362",depth:2,title:"\u6570\u636E\u8F6C\u6362"}],xg=[{value:"\u56FE\u8868\u7684\u914D\u7F6E\u9762\u677F\u6574\u4F53\u4E0A\u5212\u5206\u4E3A\u4E09\u4E2A\u90E8\u5206\uFF1A\u6570\u636E\u914D\u7F6E\u3001\u56FE\u8868\u914D\u7F6E\u548C\u56FE\u8868\u9884\u89C8\u3002",paraId:0,tocIndex:0},{value:"\u9876\u90E8\u4E0B\u62C9\u6846\u4EE3\u8868\u5F53\u524D\u6B63\u5728\u914D\u7F6E\u7684\u6570\u636E\u8868 (Collection)\uFF0C\u901A\u8FC7\u4E0B\u62C9\u83DC\u5355\u53EF\u4EE5\u5207\u6362\u3002",paraId:1,tocIndex:1},{value:"\u914D\u7F6E\u5B8C\u6210\u540E\uFF0C\u70B9\u51FB\u201C\u6267\u884C\u67E5\u8BE2\u201D (Run query) \u53EF\u4EE5\u901A\u8FC7\u914D\u7F6E\u83B7\u53D6\u6570\u636E\uFF0C\u201C\u6570\u636E\u201D (Data) \u9762\u677F\u4F1A\u5C55\u793A\u6570\u636E\u3002",paraId:1,tocIndex:1},{value:"\u5EA6\u91CF\u5B57\u6BB5\uFF0C\u901A\u5E38\u662F\u56FE\u8868\u9700\u8981\u5C55\u793A\u7684\u6838\u5FC3\u6570\u636E\u3002\u5EA6\u91CF\u6570\u636E\u53EF\u4EE5\u901A\u8FC7\u805A\u5408\u51FD\u6570\u8FDB\u884C\u7EDF\u8BA1\uFF0C\u652F\u6301\u5E38\u7528\u7684\u6570\u636E\u5E93\u7EDF\u8BA1\u51FD\u6570 ",paraId:2,tocIndex:2},{value:"\u6C42\u548C (Sum)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u8BA1\u6570 (Count)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u5E73\u5747\u503C (Avg)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u6700\u5927\u503C (Max)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u6700\u5C0F\u503C (Min)",paraId:2,tocIndex:2},{value:". \u5EA6\u91CF\u5B57\u6BB5\u53EF\u4EE5\u6709\u591A\u4E2A\uFF0C\u53EF\u4EE5\u8BBE\u7F6E\u522B\u540D\u3002",paraId:2,tocIndex:2},{value:"\u7EF4\u5EA6\u5B57\u6BB5\uFF0C\u901A\u5E38\u662F\u56FE\u8868\u6570\u636E\u5206\u7EC4\u7684\u4F9D\u636E\u3002\u5BF9\u4E8E\u65E5\u671F\u7C7B\u578B\u5B57\u6BB5\uFF0C\u652F\u6301\u5982\u56FE\u6240\u793A\u7684\u683C\u5F0F\u5316\u65B9\u5F0F\uFF0C\u683C\u5F0F\u5316\u901A\u8FC7\u6570\u636E\u5E93\u51FD\u6570\u5B9E\u73B0\uFF08\u4F8B\u5982\uFF1AMySQL \u5BF9\u5E94 ",paraId:3,tocIndex:3},{value:"date_format",paraId:3,tocIndex:3},{value:"\uFF09\uFF0C\u5176\u4ED6\u7C7B\u578B\u6570\u636E\u683C\u5F0F\u5316\u89C1",paraId:3,tocIndex:3},{value:"\u6570\u636E\u8F6C\u6362",paraId:4,tocIndex:3},{value:"\u90E8\u5206\u3002",paraId:3,tocIndex:3},{value:"\u7EF4\u5EA6\u683C\u5F0F\u5316 (Dimensions Format) VS \u6570\u636E\u8F6C\u6362 (Transform)",paraId:5},{value:"\u7EF4\u5EA6\u683C\u5F0F\u5316\u53D1\u751F\u5728\u83B7\u53D6\u6700\u7EC8\u6570\u636E\u4E4B\u524D\uFF0C\u6570\u636E\u5206\u7EC4\u6309\u7167\u7EF4\u5EA6\u683C\u5F0F\u5316\u540E\u7684\u503C\u8FDB\u884C\uFF0C\u901A\u5E38\u5728\u6309\u65F6\u95F4\u6BB5\u7B5B\u9009\u6570\u636E\u65F6\u6709\u6B64\u9700\u6C42\u3002",paraId:6},{value:"\u6570\u636E\u8F6C\u6362\u5BF9\u54CD\u5E94\u6570\u636E\u505A\u8FDB\u4E00\u6B65\u5904\u7406\uFF0C\u8BF8\u5982\u53EF\u8BFB\u6027\u5904\u7406\uFF0C\u4EE5\u5C55\u73B0\u6070\u5F53\u7684\u6570\u636E\uFF0C\u6570\u636E\u8F6C\u6362\u5728\u524D\u7AEF\u8FDB\u884C\u3002",paraId:6},{value:"\u7B5B\u9009\u914D\u7F6E\u5C06\u5BF9\u5206\u7EC4\u524D\u7684\u6570\u636E\u8FDB\u884C\u8FC7\u6EE4\u3002\u6709\u201C\u5F53\u524D\u7528\u6237\u201D\u548C\u201C\u5F53\u524D\u65E5\u671F\u201D\u53D8\u91CF\u53EF\u4F9B\u9009\u62E9\uFF0C\u7ED9\u56FE\u8868\u914D\u7F6E\u52A8\u6001\u7684\u7B5B\u9009\u8303\u56F4\u3002",paraId:7,tocIndex:4},{value:"\u9ED8\u8BA4\u6570\u636E\u96C6\u6761\u6570\u4E0A\u9650\u4E3A 2000.",paraId:8,tocIndex:5},{value:"\u5F00\u542F\u7F13\u5B58\u540E\uFF0C\u56FE\u8868\u5C06\u5C55\u793A\u7F13\u5B58\u7684\u6570\u636E\u3002",paraId:9,tocIndex:6},{value:"\u56FE\u8868\u7C7B\u578B (Chart Type) - \u7528\u4E8E\u5C55\u793A\u7684\u56FE\u8868\u7C7B\u578B\u3002NocoBase \u4F7F\u7528 ",paraId:10,tocIndex:7},{value:"G2Plot",paraId:10,tocIndex:7},{value:" \u4F5C\u4E3A\u9ED8\u8BA4\u7684\u56FE\u8868\u5E93\uFF0C\u60F3\u6269\u5C55\u4F7F\u7528\u5176\u4ED6\u56FE\u8868\u5E93\uFF0C\u53EF\u4EE5\u53C2\u8003",paraId:10,tocIndex:7},{value:"\u5F00\u53D1\u6307\u5357",paraId:11,tocIndex:7},{value:"\u3002",paraId:10,tocIndex:7},{value:"\u57FA\u7840\u914D\u7F6E - \u9009\u62E9\u56FE\u8868\u540E\uFF0C\u4F1A\u51FA\u73B0\u76F8\u5E94\u7684\u57FA\u7840\u53EF\u89C6\u5316\u914D\u7F6E\uFF0C\u5B57\u6BB5\u914D\u7F6E\u901A\u5E38\u63D0\u4F9B\u4E86\u4E0B\u62C9\u83DC\u5355\u4F9B\u9009\u62E9\uFF0C\u9009\u9879\u4E2D\u5305\u542B\u4E86 Collection \u7684\u57FA\u7840\u5B57\u6BB5\u548C\u5B57\u6BB5\u522B\u540D\u3002",paraId:10,tocIndex:7},{value:"JSON \u914D\u7F6E - \u5F53\u57FA\u7840\u914D\u7F6E\u4E0D\u6EE1\u8DB3\u8981\u6C42\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 JSON \u914D\u7F6E\u5176\u4ED6\u56FE\u8868\u5C5E\u6027\u3002\u53C2\u8003 ",paraId:10,tocIndex:7},{value:"G2Plot \u6587\u6863",paraId:10,tocIndex:7},{value:"\u3002",paraId:10,tocIndex:7},{value:"\u4F7F\u7528\u6570\u636E\u8F6C\u6362\u53EF\u4EE5\u5BF9\u63A5\u53E3\u54CD\u5E94\u7684\u6570\u636E\u505A\u8FDB\u4E00\u6B65\u5904\u7406\uFF0C\u76EE\u524D\u652F\u6301\u8F6C\u6362\u5904\u7406\u7684\u6570\u636E\u7C7B\u578B\u4E3A ",paraId:12,tocIndex:8},{value:"number",paraId:12,tocIndex:8},{value:",",paraId:12,tocIndex:8},{value:"date",paraId:12,tocIndex:8},{value:",",paraId:12,tocIndex:8},{value:"time",paraId:12,tocIndex:8},{value:",",paraId:12,tocIndex:8},{value:"datetime",paraId:12,tocIndex:8},{value:", \u5BF9\u4E8E\u4E0D\u5C5E\u4E8E\u652F\u6301\u7684\u6570\u636E\u7C7B\u578B\u7684\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u624B\u52A8\u9009\u62E9\u4E3A\u8FD9\u51E0\u4E2A\u7C7B\u578B\uFF0C\u4EE5\u4F7F\u7528\u5BF9\u5E94\u7684\u8F6C\u6362\u65B9\u6CD5\u3002",paraId:12,tocIndex:8}],gg={},bg={title:"\u8FD0\u7B97",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/calculation.md",lastUpdated:1732240239e3,description:"\u8FD0\u7B97\u8282\u70B9\u867D\u7136\u4E0D\u5BF9\u6D41\u7A0B\u8FDB\u884C\u63A7\u5236\uFF0C\u4F46\u662F\u6D41\u7A0B\u4E2D\u4E00\u79CD\u91CD\u8981\u7684\u529F\u80FD\uFF0C\u8FD0\u7B97\u8282\u70B9\u53EF\u4EE5\u5BF9\u4E00\u4E2A\u8868\u8FBE\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u8FD0\u7B97\u7ED3\u679C\u4F1A\u4FDD\u5B58\u5728\u5BF9\u5E94\u8282\u70B9\u7684\u7ED3\u679C\u4E2D\uFF0C\u4EE5\u4F9B\u540E\u7EED\u5176\u4ED6\u8282\u70B9\u4F7F\u7528\u3002\u662F\u4E00\u79CD\u7528\u4E8E\u8BA1\u7B97\u3001\u5904\u7406\u548C\u8F6C\u6362\u6570\u636E\u7684\u5DE5\u5177\uFF0C\u4E00\u5B9A\u7A0B\u5EA6\u4E0A\uFF0C\u53EF\u4EE5\u4EE3\u66FF\u7F16\u7A0B\u8BED\u8A00\u4E2D\u5BF9\u4E00\u4E2A\u503C\u8BA1\u7B97\u51FD\u6570\u8C03\u7528\u5E76\u8D4B\u503C\u7ED9\u53D8\u91CF\u7684\u529F\u80FD\u3002"},yg=[{id:"\u8FD0\u7B97",depth:1,title:"\u8FD0\u7B97"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u8FD0\u7B97\u5F15\u64CE",depth:3,title:"\u8FD0\u7B97\u5F15\u64CE"},{id:"\u8868\u8FBE\u5F0F",depth:3,title:"\u8868\u8FBE\u5F0F"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u8BA1\u7B97\u8BA2\u5355\u603B\u4EF7",depth:3,title:"\u8BA1\u7B97\u8BA2\u5355\u603B\u4EF7"}],wg=[{value:"\u8FD0\u7B97\u8282\u70B9\u867D\u7136\u4E0D\u5BF9\u6D41\u7A0B\u8FDB\u884C\u63A7\u5236\uFF0C\u4F46\u662F\u6D41\u7A0B\u4E2D\u4E00\u79CD\u91CD\u8981\u7684\u529F\u80FD\uFF0C\u8FD0\u7B97\u8282\u70B9\u53EF\u4EE5\u5BF9\u4E00\u4E2A\u8868\u8FBE\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u8FD0\u7B97\u7ED3\u679C\u4F1A\u4FDD\u5B58\u5728\u5BF9\u5E94\u8282\u70B9\u7684\u7ED3\u679C\u4E2D\uFF0C\u4EE5\u4F9B\u540E\u7EED\u5176\u4ED6\u8282\u70B9\u4F7F\u7528\u3002\u662F\u4E00\u79CD\u7528\u4E8E\u8BA1\u7B97\u3001\u5904\u7406\u548C\u8F6C\u6362\u6570\u636E\u7684\u5DE5\u5177\uFF0C\u4E00\u5B9A\u7A0B\u5EA6\u4E0A\uFF0C\u53EF\u4EE5\u4EE3\u66FF\u7F16\u7A0B\u8BED\u8A00\u4E2D\u5BF9\u4E00\u4E2A\u503C\u8BA1\u7B97\u51FD\u6570\u8C03\u7528\u5E76\u8D4B\u503C\u7ED9\u53D8\u91CF\u7684\u529F\u80FD\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u8FD0\u7B97\u201D\u8282\u70B9\uFF1A",paraId:1,tocIndex:1},{value:"\u8FD0\u7B97\u5F15\u64CE\u89C4\u5B9A\u4E86\u8868\u8FBE\u5F0F\u652F\u6301\u7684\u8BED\u6CD5\uFF0C\u76EE\u524D\u652F\u6301\u7684\u8FD0\u7B97\u5F15\u64CE\u6709 ",paraId:2,tocIndex:3},{value:"Math.js",paraId:2,tocIndex:3},{value:" \u548C ",paraId:2,tocIndex:3},{value:"Formula.js",paraId:2,tocIndex:3},{value:"\uFF0C\u5F15\u64CE\u5404\u81EA\u90FD\u5185\u7F6E\u4E86\u5927\u91CF\u7684\u5E38\u7528\u51FD\u6570\u548C\u6570\u636E\u64CD\u4F5C\u7684\u65B9\u6CD5\uFF0C\u5177\u4F53\u7684\u7528\u6CD5\u53EF\u4EE5\u53C2\u8003\u5176\u5B98\u65B9\u6587\u6863\u3002",paraId:2,tocIndex:3},{value:"\u9700\u8981\u6CE8\u610F\u7684\u662F\uFF0C\u4E24\u8005\u5728\u6570\u7EC4\u4E0B\u6807\u8BBF\u95EE\u4E0A\u6709\u6240\u533A\u522B\uFF0CMath.js \u7684\u7D22\u5F15\u662F\u4ECE ",paraId:3},{value:"1",paraId:3},{value:" \u5F00\u59CB\uFF0C\u800C Formula.js \u662F\u4ECE ",paraId:3},{value:"0",paraId:3},{value:" \u5F00\u59CB\u3002",paraId:3},{value:"\u8868\u8FBE\u5F0F\u5373\u4E00\u4E2A\u8FD0\u7B97\u516C\u5F0F\u7684\u5B57\u7B26\u4E32\u8868\u8FBE\uFF0C\u53EF\u4EE5\u7531\u53D8\u91CF\u3001\u5E38\u91CF\u3001\u8FD0\u7B97\u7B26\u548C\u652F\u6301\u7684\u51FD\u6570\u7B49\u7EC4\u6210\u3002\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4F8B\u5982\u8FD0\u7B97\u8282\u70B9\u7684\u524D\u7F6E\u8282\u70B9\u7684\u7ED3\u679C\uFF0C\u6216\u8005\u662F\u5FAA\u73AF\u7684\u5C40\u90E8\u53D8\u91CF\u7B49\u3002",paraId:4,tocIndex:4},{value:"\u8868\u8FBE\u5F0F\u8F93\u5165\u4E0D\u7B26\u5408\u8BED\u6CD5\u65F6\u4F1A\u5728\u8282\u70B9\u914D\u7F6E\u4E2D\u63D0\u793A\u9519\u8BEF\uFF0C\u5982\u679C\u5728\u5177\u4F53\u6267\u884C\u65F6\u53D8\u91CF\u4E0D\u5B58\u5728\u6216\u8005\u7C7B\u578B\u4E0D\u5339\u914D\uFF0C\u53C8\u6216\u8005\u4F7F\u7528\u4E86\u4E0D\u5B58\u5728\u7684\u51FD\u6570\uFF0C\u8FD0\u7B97\u8282\u70B9\u4F1A\u4EE5\u51FA\u9519\u7684\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\u3002",paraId:5,tocIndex:4},{value:"\u901A\u5E38\u4E00\u4E2A\u8BA2\u5355\u5185\u53EF\u80FD\u6709\u591A\u4E2A\u5546\u54C1\uFF0C\u6BCF\u4E2A\u5546\u54C1\u7684\u4EF7\u683C\u548C\u6570\u91CF\u90FD\u4E0D\u540C\uFF0C\u8BA2\u5355\u7684\u603B\u4EF7\u9700\u8981\u8BA1\u7B97\u6240\u6709\u5546\u54C1\u7684\u4EF7\u683C\u548C\u6570\u91CF\u7684\u4E58\u79EF\u4E4B\u548C\u3002\u53EF\u4EE5\u5728\u52A0\u8F7D\u8BA2\u5355\u660E\u7EC6\u5217\u8868\uFF08\u5BF9\u591A\u5173\u7CFB\u6570\u636E\u96C6\uFF09\u4E4B\u540E\u4F7F\u7528\u8FD0\u7B97\u8282\u70B9\u6765\u8BA1\u7B97\u8BA2\u5355\u7684\u603B\u4EF7\uFF1A",paraId:6,tocIndex:6},{value:` - `,paraId:7},{value:"\u5176\u4E2D Formula.js \u7684 ",paraId:8,tocIndex:6},{value:"SUMPRODUCT",paraId:8,tocIndex:6},{value:" \u51FD\u6570\u53EF\u4EE5\u8BA1\u7B97\u4E24\u4E2A\u76F8\u540C\u957F\u5EA6\u6570\u7EC4\u6BCF\u884C\u7684\u4E58\u79EF\u4E4B\u548C\uFF0C\u52A0\u603B\u5C31\u53EF\u4EE5\u5F97\u5230\u8BA2\u5355\u7684\u603B\u4EF7\u3002",paraId:8,tocIndex:6}],kg={},Sg={title:"\u5B9A\u65F6\u4EFB\u52A1",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/triggers/schedule.md",lastUpdated:1732240239e3,description:"\u5B9A\u65F6\u4EFB\u52A1\u662F\u4EE5\u65F6\u95F4\u4E3A\u89E6\u53D1\u6761\u4EF6\u7684\u4E8B\u4EF6\uFF0C\u5206\u4E3A\u4E24\u79CD\u6A21\u5F0F\uFF1A"},Ug=[{id:"\u5B9A\u65F6\u4EFB\u52A1",depth:1,title:"\u5B9A\u65F6\u4EFB\u52A1"},{id:"\u57FA\u672C\u4F7F\u7528",depth:2,title:"\u57FA\u672C\u4F7F\u7528"},{id:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F",depth:3,title:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F"},{id:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F",depth:3,title:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F"},{id:"\u76F8\u5173\u63D0\u793A",depth:2,title:"\u76F8\u5173\u63D0\u793A"},{id:"\u672A\u542F\u52A8\u6216\u505C\u673A\u72B6\u6001\u4E0B\u7684\u5B9A\u65F6\u4EFB\u52A1",depth:3,title:"\u672A\u542F\u52A8\u6216\u505C\u673A\u72B6\u6001\u4E0B\u7684\u5B9A\u65F6\u4EFB\u52A1"},{id:"\u91CD\u590D\u6B21\u6570",depth:3,title:"\u91CD\u590D\u6B21\u6570"},{id:"\u91CD\u590D\u89C4\u5219\u4E2D\u95F4\u9694\u65F6\u95F4\u4E0E\u9AD8\u7EA7\u6A21\u5F0F\u7684\u533A\u522B",depth:3,title:"\u91CD\u590D\u89C4\u5219\u4E2D\u95F4\u9694\u65F6\u95F4\u4E0E\u9AD8\u7EA7\u6A21\u5F0F\u7684\u533A\u522B"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F-1",depth:3,title:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F"},{id:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F-1",depth:3,title:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F"}],Pg=[{value:"\u5B9A\u65F6\u4EFB\u52A1\u662F\u4EE5\u65F6\u95F4\u4E3A\u89E6\u53D1\u6761\u4EF6\u7684\u4E8B\u4EF6\uFF0C\u5206\u4E3A\u4E24\u79CD\u6A21\u5F0F\uFF1A",paraId:0,tocIndex:0},{value:"\u81EA\u5B9A\u4E49\u65F6\u95F4\uFF1A\u5E38\u89C4\u7C7B\u4F3C cron \u7684\u6309\u7CFB\u7EDF\u65F6\u95F4\u8BA1\u5212\u89E6\u53D1",paraId:1,tocIndex:0},{value:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\uFF1A\u6309\u6570\u636E\u8868\u4E2D\u65F6\u95F4\u5B57\u6BB5\u7684\u503C\u5230\u65F6\u89E6\u53D1",paraId:1,tocIndex:0},{value:"\u7CFB\u7EDF\u8FD0\u884C\u5230\u6EE1\u8DB3\u6240\u914D\u7F6E\u7684\u89E6\u53D1\u6761\u4EF6\u7684\u65F6\u95F4\u70B9\uFF08\u7CBE\u5EA6\u5230\u79D2\uFF09\u65F6\uFF0C\u4F1A\u89E6\u53D1\u76F8\u5E94\u7684\u5DE5\u4F5C\u6D41\u3002",paraId:2,tocIndex:0},{value:"\u9488\u5BF9\u5E38\u89C4\u7684\u6A21\u5F0F\uFF0C\u9996\u5148\u9700\u8981\u914D\u7F6E\u5F00\u59CB\u65F6\u95F4\u4E3A\u4EFB\u610F\u65F6\u95F4\u70B9\uFF08\u7CBE\u5EA6\u5230\u79D2\uFF09\u3002\u5F00\u59CB\u65F6\u95F4\u53EF\u4EE5\u914D\u7F6E\u4E3A\u672A\u6765\u7684\u65F6\u95F4\uFF0C\u4E5F\u53EF\u4EE5\u914D\u7F6E\u4E3A\u8FC7\u53BB\u7684\u65F6\u95F4\u3002\u5F53\u914D\u7F6E\u4E3A\u8FC7\u53BB\u7684\u65F6\u95F4\u65F6\uFF0C\u4F1A\u6839\u636E\u914D\u7F6E\u7684\u91CD\u590D\u6761\u4EF6\u68C0\u67E5\u662F\u5426\u5230\u65F6\uFF0C\u5982\u679C\u6CA1\u6709\u914D\u7F6E\u91CD\u590D\u6761\u4EF6\uFF0C\u5F00\u59CB\u65F6\u95F4\u5982\u679C\u662F\u8FC7\u53BB\u7684\u65F6\u95F4\uFF0C\u5219\u5DE5\u4F5C\u6D41\u4E0D\u518D\u4F1A\u88AB\u89E6\u53D1\u3002",paraId:3,tocIndex:2},{value:"\u91CD\u590D\u89C4\u5219\u6709\u4E24\u79CD\u914D\u7F6E\u65B9\u5F0F\uFF1A",paraId:4,tocIndex:2},{value:"\u6309\u95F4\u9694\u65F6\u95F4\uFF1A\u5F00\u59CB\u65F6\u95F4\u540E\u6BCF\u56FA\u5B9A\u95F4\u9694\u65F6\u95F4\u89E6\u53D1\uFF0C\u5982\u6BCF\u4E00\u5C0F\u65F6\uFF0C\u6BCF 30 \u5206\u949F\u7B49\u3002",paraId:5,tocIndex:2},{value:"\u9AD8\u7EA7\u6A21\u5F0F\uFF1A\u5373\u6309 cron \u89C4\u5219\uFF0C\u53EF\u914D\u7F6E\u4E3A\u5230\u8FBE\u56FA\u5B9A\u89C4\u5219\u65E5\u671F\u65F6\u95F4\u7684\u5468\u671F\u3002",paraId:5,tocIndex:2},{value:"\u914D\u7F6E\u4E86\u91CD\u590D\u89C4\u5219\u540E\uFF0C\u8FD8\u53EF\u4EE5\u914D\u7F6E\u7ED3\u675F\u6761\u4EF6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u56FA\u5B9A\u65F6\u95F4\u70B9\u7ED3\u675F\uFF0C\u4E5F\u53EF\u4EE5\u901A\u8FC7\u5DF2\u6267\u884C\u8FC7\u7684\u6B21\u6570\u9650\u5236\u3002",paraId:6,tocIndex:2},{value:"\u901A\u8FC7\u6570\u636E\u8868\u7684\u65F6\u95F4\u5B57\u6BB5\u6765\u786E\u5B9A\u5F00\u59CB\u65F6\u95F4\uFF0C\u662F\u4E00\u79CD\u5C06\u666E\u901A\u5B9A\u65F6\u4EFB\u52A1\u548C\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u7ED3\u5408\u7684\u89E6\u53D1\u6A21\u5F0F\uFF0C\u4F7F\u7528\u8FD9\u4E2A\u6A21\u5F0F\u53EF\u4EE5\u7B80\u5316\u4E00\u4E9B\u7279\u5B9A\u6D41\u7A0B\u7684\u4E2D\u7684\u8282\u70B9\uFF0C\u4ECE\u914D\u7F6E\u4E0A\u4E5F\u66F4\u52A0\u76F4\u89C2\u3002\u4F8B\u5982\uFF0C\u9700\u8981\u5C06\u8D85\u65F6\u672A\u652F\u4ED8\u7684\u8BA2\u5355\u4FEE\u6539\u4E3A\u5DF2\u53D6\u6D88\u7684\u72B6\u6001\uFF0C\u53EF\u4EE5\u4EC5\u914D\u7F6E\u4E00\u4E2A\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F\u7684\u5B9A\u65F6\u4EFB\u52A1\uFF0C\u9009\u62E9\u5F00\u59CB\u65F6\u95F4\u4E3A\u8BA2\u5355\u521B\u5EFA\u540E 30 \u5206\u949F\uFF0C",paraId:7,tocIndex:3},{value:"\u5982\u679C\u914D\u7F6E\u7684\u65F6\u95F4\u6761\u4EF6\u6EE1\u8DB3\u65F6\uFF0C\u4F46\u6574\u4E2A NocoBase \u5E94\u7528\u670D\u52A1\u5904\u5728\u672A\u542F\u52A8\u6216\u505C\u673A\u72B6\u6001\uFF0C\u5219\u5BF9\u5E94\u65F6\u95F4\u70B9\u5E94\u8BE5\u89E6\u53D1\u7684\u5B9A\u65F6\u4EFB\u52A1\u4F1A\u88AB\u9519\u8FC7\uFF0C\u4E14\u5728\u670D\u52A1\u91CD\u65B0\u542F\u52A8\u540E\uFF0C\u5DF2\u7ECF\u9519\u8FC7\u7684\u4EFB\u52A1\u4E0D\u4F1A\u518D\u88AB\u89E6\u53D1\u3002\u6240\u4EE5\u5728\u4F7F\u7528\u65F6\u53EF\u80FD\u9700\u8981\u8003\u8651\u5BF9\u5E94\u60C5\u51B5\u7684\u5904\u7406\uFF0C\u6216\u5019\u8865\u63AA\u65BD\u3002",paraId:8,tocIndex:5},{value:"\u914D\u7F6E\u4E86\u7ED3\u675F\u6761\u4EF6\u4E2D\u7684\u6309\u91CD\u590D\u6B21\u6570\u65F6\uFF0C\u8BA1\u7B97\u7684\u662F\u540C\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u6240\u6709\u7248\u672C\u6267\u884C\u8FC7\u7684\u603B\u6B21\u6570\uFF0C\u4F8B\u5982\u4E00\u4E2A\u5B9A\u65F6\u4EFB\u52A1\u5728\u7248\u672C 1 \u7684\u65F6\u5019\u6267\u884C\u8FC7 10 \u6B21\uFF0C\u5982\u679C\u91CD\u590D\u6B21\u6570\u4E5F\u8BBE\u7F6E\u4E86 10 \u6B21\uFF0C\u8BE5\u5DE5\u4F5C\u6D41\u5C06\u4E0D\u518D\u4F1A\u88AB\u89E6\u53D1\uFF0C\u5373\u4F7F\u590D\u5236\u5230\u65B0\u7248\u672C\uFF0C\u4E5F\u4E0D\u4F1A\u88AB\u89E6\u53D1\uFF0C\u9664\u975E\u5C06\u91CD\u590D\u6B21\u6570\u4FEE\u6539\u4E3A\u5927\u4E8E 10 \u7684\u6570\u5B57\u3002\u4F46\u5982\u679C\u662F\u590D\u5236\u4E3A\u65B0\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5DF2\u6267\u884C\u7684\u6B21\u6570\u5C06\u4F1A\u91CD\u65B0\u4ECE 0 \u5F00\u59CB\u8BA1\u7B97\uFF0C\u4E0D\u4FEE\u6539\u76F8\u5173\u914D\u7F6E\u7684\u60C5\u51B5\u4E0B\uFF0C\u65B0\u7684\u5DE5\u4F5C\u6D41\u5C06\u53EF\u4EE5\u518D\u88AB\u89E6\u53D1 10 \u6B21\u3002",paraId:9,tocIndex:6},{value:"\u91CD\u590D\u89C4\u5219\u4E2D\u7684\u95F4\u9694\u65F6\u95F4\u662F\u76F8\u5BF9\u4E8E\u4E0A\u4E00\u6B21\u89E6\u53D1\uFF08\u5F00\u59CB\u65F6\u95F4\uFF09\u7684\u65F6\u95F4\u70B9\uFF0C\u800C\u9AD8\u7EA7\u6A21\u5F0F\u662F\u6309\u56FA\u5B9A\u7684\u65F6\u95F4\u70B9\u89E6\u53D1\uFF0C\u4F8B\u5982\uFF0C\u914D\u7F6E\u4E86\u6BCF 30 \u5206\u949F\u89E6\u53D1\u4E00\u6B21\uFF0C\u5982\u679C\u4E0A\u4E00\u6B21\u89E6\u53D1\u662F 2021-09-01 12:01:23\uFF0C\u90A3\u4E48\u4E0B\u4E00\u6B21\u89E6\u53D1\u65F6\u95F4\u662F 2021-09-01 12:31:23\u3002\u800C\u9AD8\u7EA7\u6A21\u5F0F\u5373 cron \u6A21\u5F0F\uFF0C\u914D\u7F6E\u7684\u89C4\u5219\u5747\u4E3A\u56FA\u5B9A\u7684\u65F6\u95F4\u70B9\u89E6\u53D1\uFF0C\u4F8B\u5982\uFF0C\u53EF\u4EE5\u914D\u7F6E\u5728\u6BCF\u5C0F\u65F6\u7684 01 \u5206\u548C 31 \u5206\u89E6\u53D1\u3002",paraId:10,tocIndex:7},{value:"\u5047\u8BBE\u6BCF\u5206\u949F\u68C0\u67E5\u521B\u5EFA\u540E\u8D85\u8FC7 30 \u5206\u949F\u672A\u5B8C\u6210\u652F\u4ED8\u7684\u8BA2\u5355\uFF0C\u5E76\u81EA\u52A8\u4FEE\u6539\u4E3A\u5DF2\u53D6\u6D88\u72B6\u6001\u3002\u5206\u522B\u4F7F\u7528\u4E24\u79CD\u6A21\u5F0F\u6765\u5B9E\u73B0\u3002",paraId:11,tocIndex:8},{value:"\u521B\u5EFA\u4E00\u4E2A\u57FA\u4E8E\u5B9A\u65F6\u4EFB\u52A1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u89E6\u53D1\u5668\u914D\u7F6E\u4E2D\u9009\u62E9\u201C\u81EA\u5B9A\u4E49\u65F6\u95F4\u201D\u6A21\u5F0F\uFF0C\u5F00\u59CB\u65F6\u95F4\u9009\u62E9\u4EFB\u610F\u4E0D\u665A\u4E8E\u5F53\u524D\u65F6\u95F4\u7684\u65F6\u95F4\u70B9\uFF0C\u91CD\u590D\u89C4\u5219\u9009\u62E9\u201C\u6BCF\u5206\u949F\u201D\uFF0C\u7ED3\u675F\u6761\u4EF6\u7559\u7A7A\uFF1A",paraId:12,tocIndex:9},{value:` +`,paraId:34,tocIndex:7},{value:"After this, you\u2019ll find the ",paraId:35,tocIndex:7},{value:"storage/tar/@nocobase-sample/plugin-component-and-scope-global.tar.gz",paraId:35,tocIndex:7},{value:" file, which can be installed using the ",paraId:35,tocIndex:7},{value:"upload method",paraId:36,tocIndex:7},{value:".",paraId:35,tocIndex:7}],pg={},Ig={title:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3",toc:"menu",filename:"docs/en-US/plugins/client/user/plugin-settings/index.md",lastUpdated:173254844e4,description:"\u7BA1\u7406\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u4E2A\u96C6\u4E2D\u7BA1\u7406\u548C\u914D\u7F6E\u7CFB\u7EDF\u4FE1\u606F\u4EE5\u53CA\u4E0E\u5DE5\u4F5C\u76F8\u5173\u8BBE\u7F6E\u7684\u5E73\u53F0\u3002\u7528\u6237\u53EF\u4EE5\u6839\u636E\u5176\u7279\u5B9A\u7684\u4E1A\u52A1\u9700\u6C42\u548C\u4E2A\u4EBA\u504F\u597D\u6765\u81EA\u5B9A\u4E49\u7CFB\u7EDF\u3001\u6570\u636E\u8868\u5EFA\u6A21\u3001\u5DE5\u4F5C\u6D41\u914D\u7F6E\u548C\u63D2\u4EF6\u914D\u7F6E"},_g=[{id:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3",depth:1,title:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3"}],vg=[{value:"\u7BA1\u7406\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u4E2A\u96C6\u4E2D\u7BA1\u7406\u548C\u914D\u7F6E\u7CFB\u7EDF\u4FE1\u606F\u4EE5\u53CA\u4E0E\u5DE5\u4F5C\u76F8\u5173\u8BBE\u7F6E\u7684\u5E73\u53F0\u3002\u7528\u6237\u53EF\u4EE5\u6839\u636E\u5176\u7279\u5B9A\u7684\u4E1A\u52A1\u9700\u6C42\u548C\u4E2A\u4EBA\u504F\u597D\u6765\u81EA\u5B9A\u4E49\u7CFB\u7EDF\u3001\u6570\u636E\u8868\u5EFA\u6A21\u3001\u5DE5\u4F5C\u6D41\u914D\u7F6E\u548C\u63D2\u4EF6\u914D\u7F6E",paraId:0,tocIndex:0},{value:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3\u7684\u7EC4\u6210",paraId:1,tocIndex:0},{value:"\u7F6E\u9876\u7684\u5FEB\u6377\u914D\u7F6E\u9879",paraId:2,tocIndex:0},{value:"\u6240\u6709\u6FC0\u6D3B\u7684\u63D2\u4EF6\u914D\u7F6E\u5217\u8868",paraId:2,tocIndex:0},{value:"\u63D2\u4EF6\u7684\u6807\u7B7E\u9875",paraId:2,tocIndex:0},{value:"\u6B63\u6587\u5185\u5BB9",paraId:2,tocIndex:0}],mg={},hg={title:"\u914D\u7F6E\u9762\u677F",toc:"menu",filename:"docs/en-US/plugins/data-visualization/user/configure.md",lastUpdated:173254844e4,description:"\u56FE\u8868\u7684\u914D\u7F6E\u9762\u677F\u6574\u4F53\u4E0A\u5212\u5206\u4E3A\u4E09\u4E2A\u90E8\u5206\uFF1A\u6570\u636E\u914D\u7F6E\u3001\u56FE\u8868\u914D\u7F6E\u548C\u56FE\u8868\u9884\u89C8\u3002"},fg=[{id:"\u914D\u7F6E\u9762\u677F",depth:1,title:"\u914D\u7F6E\u9762\u677F"},{id:"\u6570\u636E\u914D\u7F6E",depth:2,title:"\u6570\u636E\u914D\u7F6E"},{id:"\u5EA6\u91CF-measures",depth:3,title:"\u5EA6\u91CF (Measures)"},{id:"\u7EF4\u5EA6-dimesions",depth:3,title:"\u7EF4\u5EA6 (Dimesions)"},{id:"\u7B5B\u9009-filter",depth:3,title:"\u7B5B\u9009 (Filter)"},{id:"\u6392\u5E8F-sort-\u548C\u9650\u5236-limit",depth:3,title:"\u6392\u5E8F (Sort) \u548C\u9650\u5236 (Limit)"},{id:"\u7F13\u5B58",depth:3,title:"\u7F13\u5B58"},{id:"\u56FE\u8868\u914D\u7F6E",depth:2,title:"\u56FE\u8868\u914D\u7F6E"},{id:"\u6570\u636E\u8F6C\u6362",depth:2,title:"\u6570\u636E\u8F6C\u6362"}],xg=[{value:"\u56FE\u8868\u7684\u914D\u7F6E\u9762\u677F\u6574\u4F53\u4E0A\u5212\u5206\u4E3A\u4E09\u4E2A\u90E8\u5206\uFF1A\u6570\u636E\u914D\u7F6E\u3001\u56FE\u8868\u914D\u7F6E\u548C\u56FE\u8868\u9884\u89C8\u3002",paraId:0,tocIndex:0},{value:"\u9876\u90E8\u4E0B\u62C9\u6846\u4EE3\u8868\u5F53\u524D\u6B63\u5728\u914D\u7F6E\u7684\u6570\u636E\u8868 (Collection)\uFF0C\u901A\u8FC7\u4E0B\u62C9\u83DC\u5355\u53EF\u4EE5\u5207\u6362\u3002",paraId:1,tocIndex:1},{value:"\u914D\u7F6E\u5B8C\u6210\u540E\uFF0C\u70B9\u51FB\u201C\u6267\u884C\u67E5\u8BE2\u201D (Run query) \u53EF\u4EE5\u901A\u8FC7\u914D\u7F6E\u83B7\u53D6\u6570\u636E\uFF0C\u201C\u6570\u636E\u201D (Data) \u9762\u677F\u4F1A\u5C55\u793A\u6570\u636E\u3002",paraId:1,tocIndex:1},{value:"\u5EA6\u91CF\u5B57\u6BB5\uFF0C\u901A\u5E38\u662F\u56FE\u8868\u9700\u8981\u5C55\u793A\u7684\u6838\u5FC3\u6570\u636E\u3002\u5EA6\u91CF\u6570\u636E\u53EF\u4EE5\u901A\u8FC7\u805A\u5408\u51FD\u6570\u8FDB\u884C\u7EDF\u8BA1\uFF0C\u652F\u6301\u5E38\u7528\u7684\u6570\u636E\u5E93\u7EDF\u8BA1\u51FD\u6570 ",paraId:2,tocIndex:2},{value:"\u6C42\u548C (Sum)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u8BA1\u6570 (Count)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u5E73\u5747\u503C (Avg)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u6700\u5927\u503C (Max)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u6700\u5C0F\u503C (Min)",paraId:2,tocIndex:2},{value:". \u5EA6\u91CF\u5B57\u6BB5\u53EF\u4EE5\u6709\u591A\u4E2A\uFF0C\u53EF\u4EE5\u8BBE\u7F6E\u522B\u540D\u3002",paraId:2,tocIndex:2},{value:"\u7EF4\u5EA6\u5B57\u6BB5\uFF0C\u901A\u5E38\u662F\u56FE\u8868\u6570\u636E\u5206\u7EC4\u7684\u4F9D\u636E\u3002\u5BF9\u4E8E\u65E5\u671F\u7C7B\u578B\u5B57\u6BB5\uFF0C\u652F\u6301\u5982\u56FE\u6240\u793A\u7684\u683C\u5F0F\u5316\u65B9\u5F0F\uFF0C\u683C\u5F0F\u5316\u901A\u8FC7\u6570\u636E\u5E93\u51FD\u6570\u5B9E\u73B0\uFF08\u4F8B\u5982\uFF1AMySQL \u5BF9\u5E94 ",paraId:3,tocIndex:3},{value:"date_format",paraId:3,tocIndex:3},{value:"\uFF09\uFF0C\u5176\u4ED6\u7C7B\u578B\u6570\u636E\u683C\u5F0F\u5316\u89C1",paraId:3,tocIndex:3},{value:"\u6570\u636E\u8F6C\u6362",paraId:4,tocIndex:3},{value:"\u90E8\u5206\u3002",paraId:3,tocIndex:3},{value:"\u7EF4\u5EA6\u683C\u5F0F\u5316 (Dimensions Format) VS \u6570\u636E\u8F6C\u6362 (Transform)",paraId:5},{value:"\u7EF4\u5EA6\u683C\u5F0F\u5316\u53D1\u751F\u5728\u83B7\u53D6\u6700\u7EC8\u6570\u636E\u4E4B\u524D\uFF0C\u6570\u636E\u5206\u7EC4\u6309\u7167\u7EF4\u5EA6\u683C\u5F0F\u5316\u540E\u7684\u503C\u8FDB\u884C\uFF0C\u901A\u5E38\u5728\u6309\u65F6\u95F4\u6BB5\u7B5B\u9009\u6570\u636E\u65F6\u6709\u6B64\u9700\u6C42\u3002",paraId:6},{value:"\u6570\u636E\u8F6C\u6362\u5BF9\u54CD\u5E94\u6570\u636E\u505A\u8FDB\u4E00\u6B65\u5904\u7406\uFF0C\u8BF8\u5982\u53EF\u8BFB\u6027\u5904\u7406\uFF0C\u4EE5\u5C55\u73B0\u6070\u5F53\u7684\u6570\u636E\uFF0C\u6570\u636E\u8F6C\u6362\u5728\u524D\u7AEF\u8FDB\u884C\u3002",paraId:6},{value:"\u7B5B\u9009\u914D\u7F6E\u5C06\u5BF9\u5206\u7EC4\u524D\u7684\u6570\u636E\u8FDB\u884C\u8FC7\u6EE4\u3002\u6709\u201C\u5F53\u524D\u7528\u6237\u201D\u548C\u201C\u5F53\u524D\u65E5\u671F\u201D\u53D8\u91CF\u53EF\u4F9B\u9009\u62E9\uFF0C\u7ED9\u56FE\u8868\u914D\u7F6E\u52A8\u6001\u7684\u7B5B\u9009\u8303\u56F4\u3002",paraId:7,tocIndex:4},{value:"\u9ED8\u8BA4\u6570\u636E\u96C6\u6761\u6570\u4E0A\u9650\u4E3A 2000.",paraId:8,tocIndex:5},{value:"\u5F00\u542F\u7F13\u5B58\u540E\uFF0C\u56FE\u8868\u5C06\u5C55\u793A\u7F13\u5B58\u7684\u6570\u636E\u3002",paraId:9,tocIndex:6},{value:"\u56FE\u8868\u7C7B\u578B (Chart Type) - \u7528\u4E8E\u5C55\u793A\u7684\u56FE\u8868\u7C7B\u578B\u3002NocoBase \u4F7F\u7528 ",paraId:10,tocIndex:7},{value:"G2Plot",paraId:10,tocIndex:7},{value:" \u4F5C\u4E3A\u9ED8\u8BA4\u7684\u56FE\u8868\u5E93\uFF0C\u60F3\u6269\u5C55\u4F7F\u7528\u5176\u4ED6\u56FE\u8868\u5E93\uFF0C\u53EF\u4EE5\u53C2\u8003",paraId:10,tocIndex:7},{value:"\u5F00\u53D1\u6307\u5357",paraId:11,tocIndex:7},{value:"\u3002",paraId:10,tocIndex:7},{value:"\u57FA\u7840\u914D\u7F6E - \u9009\u62E9\u56FE\u8868\u540E\uFF0C\u4F1A\u51FA\u73B0\u76F8\u5E94\u7684\u57FA\u7840\u53EF\u89C6\u5316\u914D\u7F6E\uFF0C\u5B57\u6BB5\u914D\u7F6E\u901A\u5E38\u63D0\u4F9B\u4E86\u4E0B\u62C9\u83DC\u5355\u4F9B\u9009\u62E9\uFF0C\u9009\u9879\u4E2D\u5305\u542B\u4E86 Collection \u7684\u57FA\u7840\u5B57\u6BB5\u548C\u5B57\u6BB5\u522B\u540D\u3002",paraId:10,tocIndex:7},{value:"JSON \u914D\u7F6E - \u5F53\u57FA\u7840\u914D\u7F6E\u4E0D\u6EE1\u8DB3\u8981\u6C42\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 JSON \u914D\u7F6E\u5176\u4ED6\u56FE\u8868\u5C5E\u6027\u3002\u53C2\u8003 ",paraId:10,tocIndex:7},{value:"G2Plot \u6587\u6863",paraId:10,tocIndex:7},{value:"\u3002",paraId:10,tocIndex:7},{value:"\u4F7F\u7528\u6570\u636E\u8F6C\u6362\u53EF\u4EE5\u5BF9\u63A5\u53E3\u54CD\u5E94\u7684\u6570\u636E\u505A\u8FDB\u4E00\u6B65\u5904\u7406\uFF0C\u76EE\u524D\u652F\u6301\u8F6C\u6362\u5904\u7406\u7684\u6570\u636E\u7C7B\u578B\u4E3A ",paraId:12,tocIndex:8},{value:"number",paraId:12,tocIndex:8},{value:",",paraId:12,tocIndex:8},{value:"date",paraId:12,tocIndex:8},{value:",",paraId:12,tocIndex:8},{value:"time",paraId:12,tocIndex:8},{value:",",paraId:12,tocIndex:8},{value:"datetime",paraId:12,tocIndex:8},{value:", \u5BF9\u4E8E\u4E0D\u5C5E\u4E8E\u652F\u6301\u7684\u6570\u636E\u7C7B\u578B\u7684\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u624B\u52A8\u9009\u62E9\u4E3A\u8FD9\u51E0\u4E2A\u7C7B\u578B\uFF0C\u4EE5\u4F7F\u7528\u5BF9\u5E94\u7684\u8F6C\u6362\u65B9\u6CD5\u3002",paraId:12,tocIndex:8}],gg={},bg={title:"\u8FD0\u7B97",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/calculation.md",lastUpdated:173254844e4,description:"\u8FD0\u7B97\u8282\u70B9\u867D\u7136\u4E0D\u5BF9\u6D41\u7A0B\u8FDB\u884C\u63A7\u5236\uFF0C\u4F46\u662F\u6D41\u7A0B\u4E2D\u4E00\u79CD\u91CD\u8981\u7684\u529F\u80FD\uFF0C\u8FD0\u7B97\u8282\u70B9\u53EF\u4EE5\u5BF9\u4E00\u4E2A\u8868\u8FBE\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u8FD0\u7B97\u7ED3\u679C\u4F1A\u4FDD\u5B58\u5728\u5BF9\u5E94\u8282\u70B9\u7684\u7ED3\u679C\u4E2D\uFF0C\u4EE5\u4F9B\u540E\u7EED\u5176\u4ED6\u8282\u70B9\u4F7F\u7528\u3002\u662F\u4E00\u79CD\u7528\u4E8E\u8BA1\u7B97\u3001\u5904\u7406\u548C\u8F6C\u6362\u6570\u636E\u7684\u5DE5\u5177\uFF0C\u4E00\u5B9A\u7A0B\u5EA6\u4E0A\uFF0C\u53EF\u4EE5\u4EE3\u66FF\u7F16\u7A0B\u8BED\u8A00\u4E2D\u5BF9\u4E00\u4E2A\u503C\u8BA1\u7B97\u51FD\u6570\u8C03\u7528\u5E76\u8D4B\u503C\u7ED9\u53D8\u91CF\u7684\u529F\u80FD\u3002"},yg=[{id:"\u8FD0\u7B97",depth:1,title:"\u8FD0\u7B97"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u8FD0\u7B97\u5F15\u64CE",depth:3,title:"\u8FD0\u7B97\u5F15\u64CE"},{id:"\u8868\u8FBE\u5F0F",depth:3,title:"\u8868\u8FBE\u5F0F"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u8BA1\u7B97\u8BA2\u5355\u603B\u4EF7",depth:3,title:"\u8BA1\u7B97\u8BA2\u5355\u603B\u4EF7"}],wg=[{value:"\u8FD0\u7B97\u8282\u70B9\u867D\u7136\u4E0D\u5BF9\u6D41\u7A0B\u8FDB\u884C\u63A7\u5236\uFF0C\u4F46\u662F\u6D41\u7A0B\u4E2D\u4E00\u79CD\u91CD\u8981\u7684\u529F\u80FD\uFF0C\u8FD0\u7B97\u8282\u70B9\u53EF\u4EE5\u5BF9\u4E00\u4E2A\u8868\u8FBE\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u8FD0\u7B97\u7ED3\u679C\u4F1A\u4FDD\u5B58\u5728\u5BF9\u5E94\u8282\u70B9\u7684\u7ED3\u679C\u4E2D\uFF0C\u4EE5\u4F9B\u540E\u7EED\u5176\u4ED6\u8282\u70B9\u4F7F\u7528\u3002\u662F\u4E00\u79CD\u7528\u4E8E\u8BA1\u7B97\u3001\u5904\u7406\u548C\u8F6C\u6362\u6570\u636E\u7684\u5DE5\u5177\uFF0C\u4E00\u5B9A\u7A0B\u5EA6\u4E0A\uFF0C\u53EF\u4EE5\u4EE3\u66FF\u7F16\u7A0B\u8BED\u8A00\u4E2D\u5BF9\u4E00\u4E2A\u503C\u8BA1\u7B97\u51FD\u6570\u8C03\u7528\u5E76\u8D4B\u503C\u7ED9\u53D8\u91CF\u7684\u529F\u80FD\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u8FD0\u7B97\u201D\u8282\u70B9\uFF1A",paraId:1,tocIndex:1},{value:"\u8FD0\u7B97\u5F15\u64CE\u89C4\u5B9A\u4E86\u8868\u8FBE\u5F0F\u652F\u6301\u7684\u8BED\u6CD5\uFF0C\u76EE\u524D\u652F\u6301\u7684\u8FD0\u7B97\u5F15\u64CE\u6709 ",paraId:2,tocIndex:3},{value:"Math.js",paraId:2,tocIndex:3},{value:" \u548C ",paraId:2,tocIndex:3},{value:"Formula.js",paraId:2,tocIndex:3},{value:"\uFF0C\u5F15\u64CE\u5404\u81EA\u90FD\u5185\u7F6E\u4E86\u5927\u91CF\u7684\u5E38\u7528\u51FD\u6570\u548C\u6570\u636E\u64CD\u4F5C\u7684\u65B9\u6CD5\uFF0C\u5177\u4F53\u7684\u7528\u6CD5\u53EF\u4EE5\u53C2\u8003\u5176\u5B98\u65B9\u6587\u6863\u3002",paraId:2,tocIndex:3},{value:"\u9700\u8981\u6CE8\u610F\u7684\u662F\uFF0C\u4E24\u8005\u5728\u6570\u7EC4\u4E0B\u6807\u8BBF\u95EE\u4E0A\u6709\u6240\u533A\u522B\uFF0CMath.js \u7684\u7D22\u5F15\u662F\u4ECE ",paraId:3},{value:"1",paraId:3},{value:" \u5F00\u59CB\uFF0C\u800C Formula.js \u662F\u4ECE ",paraId:3},{value:"0",paraId:3},{value:" \u5F00\u59CB\u3002",paraId:3},{value:"\u8868\u8FBE\u5F0F\u5373\u4E00\u4E2A\u8FD0\u7B97\u516C\u5F0F\u7684\u5B57\u7B26\u4E32\u8868\u8FBE\uFF0C\u53EF\u4EE5\u7531\u53D8\u91CF\u3001\u5E38\u91CF\u3001\u8FD0\u7B97\u7B26\u548C\u652F\u6301\u7684\u51FD\u6570\u7B49\u7EC4\u6210\u3002\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4F8B\u5982\u8FD0\u7B97\u8282\u70B9\u7684\u524D\u7F6E\u8282\u70B9\u7684\u7ED3\u679C\uFF0C\u6216\u8005\u662F\u5FAA\u73AF\u7684\u5C40\u90E8\u53D8\u91CF\u7B49\u3002",paraId:4,tocIndex:4},{value:"\u8868\u8FBE\u5F0F\u8F93\u5165\u4E0D\u7B26\u5408\u8BED\u6CD5\u65F6\u4F1A\u5728\u8282\u70B9\u914D\u7F6E\u4E2D\u63D0\u793A\u9519\u8BEF\uFF0C\u5982\u679C\u5728\u5177\u4F53\u6267\u884C\u65F6\u53D8\u91CF\u4E0D\u5B58\u5728\u6216\u8005\u7C7B\u578B\u4E0D\u5339\u914D\uFF0C\u53C8\u6216\u8005\u4F7F\u7528\u4E86\u4E0D\u5B58\u5728\u7684\u51FD\u6570\uFF0C\u8FD0\u7B97\u8282\u70B9\u4F1A\u4EE5\u51FA\u9519\u7684\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\u3002",paraId:5,tocIndex:4},{value:"\u901A\u5E38\u4E00\u4E2A\u8BA2\u5355\u5185\u53EF\u80FD\u6709\u591A\u4E2A\u5546\u54C1\uFF0C\u6BCF\u4E2A\u5546\u54C1\u7684\u4EF7\u683C\u548C\u6570\u91CF\u90FD\u4E0D\u540C\uFF0C\u8BA2\u5355\u7684\u603B\u4EF7\u9700\u8981\u8BA1\u7B97\u6240\u6709\u5546\u54C1\u7684\u4EF7\u683C\u548C\u6570\u91CF\u7684\u4E58\u79EF\u4E4B\u548C\u3002\u53EF\u4EE5\u5728\u52A0\u8F7D\u8BA2\u5355\u660E\u7EC6\u5217\u8868\uFF08\u5BF9\u591A\u5173\u7CFB\u6570\u636E\u96C6\uFF09\u4E4B\u540E\u4F7F\u7528\u8FD0\u7B97\u8282\u70B9\u6765\u8BA1\u7B97\u8BA2\u5355\u7684\u603B\u4EF7\uFF1A",paraId:6,tocIndex:6},{value:` + `,paraId:7},{value:"\u5176\u4E2D Formula.js \u7684 ",paraId:8,tocIndex:6},{value:"SUMPRODUCT",paraId:8,tocIndex:6},{value:" \u51FD\u6570\u53EF\u4EE5\u8BA1\u7B97\u4E24\u4E2A\u76F8\u540C\u957F\u5EA6\u6570\u7EC4\u6BCF\u884C\u7684\u4E58\u79EF\u4E4B\u548C\uFF0C\u52A0\u603B\u5C31\u53EF\u4EE5\u5F97\u5230\u8BA2\u5355\u7684\u603B\u4EF7\u3002",paraId:8,tocIndex:6}],kg={},Sg={title:"\u5B9A\u65F6\u4EFB\u52A1",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/triggers/schedule.md",lastUpdated:173254844e4,description:"\u5B9A\u65F6\u4EFB\u52A1\u662F\u4EE5\u65F6\u95F4\u4E3A\u89E6\u53D1\u6761\u4EF6\u7684\u4E8B\u4EF6\uFF0C\u5206\u4E3A\u4E24\u79CD\u6A21\u5F0F\uFF1A"},Ug=[{id:"\u5B9A\u65F6\u4EFB\u52A1",depth:1,title:"\u5B9A\u65F6\u4EFB\u52A1"},{id:"\u57FA\u672C\u4F7F\u7528",depth:2,title:"\u57FA\u672C\u4F7F\u7528"},{id:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F",depth:3,title:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F"},{id:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F",depth:3,title:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F"},{id:"\u76F8\u5173\u63D0\u793A",depth:2,title:"\u76F8\u5173\u63D0\u793A"},{id:"\u672A\u542F\u52A8\u6216\u505C\u673A\u72B6\u6001\u4E0B\u7684\u5B9A\u65F6\u4EFB\u52A1",depth:3,title:"\u672A\u542F\u52A8\u6216\u505C\u673A\u72B6\u6001\u4E0B\u7684\u5B9A\u65F6\u4EFB\u52A1"},{id:"\u91CD\u590D\u6B21\u6570",depth:3,title:"\u91CD\u590D\u6B21\u6570"},{id:"\u91CD\u590D\u89C4\u5219\u4E2D\u95F4\u9694\u65F6\u95F4\u4E0E\u9AD8\u7EA7\u6A21\u5F0F\u7684\u533A\u522B",depth:3,title:"\u91CD\u590D\u89C4\u5219\u4E2D\u95F4\u9694\u65F6\u95F4\u4E0E\u9AD8\u7EA7\u6A21\u5F0F\u7684\u533A\u522B"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F-1",depth:3,title:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F"},{id:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F-1",depth:3,title:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F"}],Pg=[{value:"\u5B9A\u65F6\u4EFB\u52A1\u662F\u4EE5\u65F6\u95F4\u4E3A\u89E6\u53D1\u6761\u4EF6\u7684\u4E8B\u4EF6\uFF0C\u5206\u4E3A\u4E24\u79CD\u6A21\u5F0F\uFF1A",paraId:0,tocIndex:0},{value:"\u81EA\u5B9A\u4E49\u65F6\u95F4\uFF1A\u5E38\u89C4\u7C7B\u4F3C cron \u7684\u6309\u7CFB\u7EDF\u65F6\u95F4\u8BA1\u5212\u89E6\u53D1",paraId:1,tocIndex:0},{value:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\uFF1A\u6309\u6570\u636E\u8868\u4E2D\u65F6\u95F4\u5B57\u6BB5\u7684\u503C\u5230\u65F6\u89E6\u53D1",paraId:1,tocIndex:0},{value:"\u7CFB\u7EDF\u8FD0\u884C\u5230\u6EE1\u8DB3\u6240\u914D\u7F6E\u7684\u89E6\u53D1\u6761\u4EF6\u7684\u65F6\u95F4\u70B9\uFF08\u7CBE\u5EA6\u5230\u79D2\uFF09\u65F6\uFF0C\u4F1A\u89E6\u53D1\u76F8\u5E94\u7684\u5DE5\u4F5C\u6D41\u3002",paraId:2,tocIndex:0},{value:"\u9488\u5BF9\u5E38\u89C4\u7684\u6A21\u5F0F\uFF0C\u9996\u5148\u9700\u8981\u914D\u7F6E\u5F00\u59CB\u65F6\u95F4\u4E3A\u4EFB\u610F\u65F6\u95F4\u70B9\uFF08\u7CBE\u5EA6\u5230\u79D2\uFF09\u3002\u5F00\u59CB\u65F6\u95F4\u53EF\u4EE5\u914D\u7F6E\u4E3A\u672A\u6765\u7684\u65F6\u95F4\uFF0C\u4E5F\u53EF\u4EE5\u914D\u7F6E\u4E3A\u8FC7\u53BB\u7684\u65F6\u95F4\u3002\u5F53\u914D\u7F6E\u4E3A\u8FC7\u53BB\u7684\u65F6\u95F4\u65F6\uFF0C\u4F1A\u6839\u636E\u914D\u7F6E\u7684\u91CD\u590D\u6761\u4EF6\u68C0\u67E5\u662F\u5426\u5230\u65F6\uFF0C\u5982\u679C\u6CA1\u6709\u914D\u7F6E\u91CD\u590D\u6761\u4EF6\uFF0C\u5F00\u59CB\u65F6\u95F4\u5982\u679C\u662F\u8FC7\u53BB\u7684\u65F6\u95F4\uFF0C\u5219\u5DE5\u4F5C\u6D41\u4E0D\u518D\u4F1A\u88AB\u89E6\u53D1\u3002",paraId:3,tocIndex:2},{value:"\u91CD\u590D\u89C4\u5219\u6709\u4E24\u79CD\u914D\u7F6E\u65B9\u5F0F\uFF1A",paraId:4,tocIndex:2},{value:"\u6309\u95F4\u9694\u65F6\u95F4\uFF1A\u5F00\u59CB\u65F6\u95F4\u540E\u6BCF\u56FA\u5B9A\u95F4\u9694\u65F6\u95F4\u89E6\u53D1\uFF0C\u5982\u6BCF\u4E00\u5C0F\u65F6\uFF0C\u6BCF 30 \u5206\u949F\u7B49\u3002",paraId:5,tocIndex:2},{value:"\u9AD8\u7EA7\u6A21\u5F0F\uFF1A\u5373\u6309 cron \u89C4\u5219\uFF0C\u53EF\u914D\u7F6E\u4E3A\u5230\u8FBE\u56FA\u5B9A\u89C4\u5219\u65E5\u671F\u65F6\u95F4\u7684\u5468\u671F\u3002",paraId:5,tocIndex:2},{value:"\u914D\u7F6E\u4E86\u91CD\u590D\u89C4\u5219\u540E\uFF0C\u8FD8\u53EF\u4EE5\u914D\u7F6E\u7ED3\u675F\u6761\u4EF6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u56FA\u5B9A\u65F6\u95F4\u70B9\u7ED3\u675F\uFF0C\u4E5F\u53EF\u4EE5\u901A\u8FC7\u5DF2\u6267\u884C\u8FC7\u7684\u6B21\u6570\u9650\u5236\u3002",paraId:6,tocIndex:2},{value:"\u901A\u8FC7\u6570\u636E\u8868\u7684\u65F6\u95F4\u5B57\u6BB5\u6765\u786E\u5B9A\u5F00\u59CB\u65F6\u95F4\uFF0C\u662F\u4E00\u79CD\u5C06\u666E\u901A\u5B9A\u65F6\u4EFB\u52A1\u548C\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u7ED3\u5408\u7684\u89E6\u53D1\u6A21\u5F0F\uFF0C\u4F7F\u7528\u8FD9\u4E2A\u6A21\u5F0F\u53EF\u4EE5\u7B80\u5316\u4E00\u4E9B\u7279\u5B9A\u6D41\u7A0B\u7684\u4E2D\u7684\u8282\u70B9\uFF0C\u4ECE\u914D\u7F6E\u4E0A\u4E5F\u66F4\u52A0\u76F4\u89C2\u3002\u4F8B\u5982\uFF0C\u9700\u8981\u5C06\u8D85\u65F6\u672A\u652F\u4ED8\u7684\u8BA2\u5355\u4FEE\u6539\u4E3A\u5DF2\u53D6\u6D88\u7684\u72B6\u6001\uFF0C\u53EF\u4EE5\u4EC5\u914D\u7F6E\u4E00\u4E2A\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F\u7684\u5B9A\u65F6\u4EFB\u52A1\uFF0C\u9009\u62E9\u5F00\u59CB\u65F6\u95F4\u4E3A\u8BA2\u5355\u521B\u5EFA\u540E 30 \u5206\u949F\uFF0C",paraId:7,tocIndex:3},{value:"\u5982\u679C\u914D\u7F6E\u7684\u65F6\u95F4\u6761\u4EF6\u6EE1\u8DB3\u65F6\uFF0C\u4F46\u6574\u4E2A NocoBase \u5E94\u7528\u670D\u52A1\u5904\u5728\u672A\u542F\u52A8\u6216\u505C\u673A\u72B6\u6001\uFF0C\u5219\u5BF9\u5E94\u65F6\u95F4\u70B9\u5E94\u8BE5\u89E6\u53D1\u7684\u5B9A\u65F6\u4EFB\u52A1\u4F1A\u88AB\u9519\u8FC7\uFF0C\u4E14\u5728\u670D\u52A1\u91CD\u65B0\u542F\u52A8\u540E\uFF0C\u5DF2\u7ECF\u9519\u8FC7\u7684\u4EFB\u52A1\u4E0D\u4F1A\u518D\u88AB\u89E6\u53D1\u3002\u6240\u4EE5\u5728\u4F7F\u7528\u65F6\u53EF\u80FD\u9700\u8981\u8003\u8651\u5BF9\u5E94\u60C5\u51B5\u7684\u5904\u7406\uFF0C\u6216\u5019\u8865\u63AA\u65BD\u3002",paraId:8,tocIndex:5},{value:"\u914D\u7F6E\u4E86\u7ED3\u675F\u6761\u4EF6\u4E2D\u7684\u6309\u91CD\u590D\u6B21\u6570\u65F6\uFF0C\u8BA1\u7B97\u7684\u662F\u540C\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u6240\u6709\u7248\u672C\u6267\u884C\u8FC7\u7684\u603B\u6B21\u6570\uFF0C\u4F8B\u5982\u4E00\u4E2A\u5B9A\u65F6\u4EFB\u52A1\u5728\u7248\u672C 1 \u7684\u65F6\u5019\u6267\u884C\u8FC7 10 \u6B21\uFF0C\u5982\u679C\u91CD\u590D\u6B21\u6570\u4E5F\u8BBE\u7F6E\u4E86 10 \u6B21\uFF0C\u8BE5\u5DE5\u4F5C\u6D41\u5C06\u4E0D\u518D\u4F1A\u88AB\u89E6\u53D1\uFF0C\u5373\u4F7F\u590D\u5236\u5230\u65B0\u7248\u672C\uFF0C\u4E5F\u4E0D\u4F1A\u88AB\u89E6\u53D1\uFF0C\u9664\u975E\u5C06\u91CD\u590D\u6B21\u6570\u4FEE\u6539\u4E3A\u5927\u4E8E 10 \u7684\u6570\u5B57\u3002\u4F46\u5982\u679C\u662F\u590D\u5236\u4E3A\u65B0\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5DF2\u6267\u884C\u7684\u6B21\u6570\u5C06\u4F1A\u91CD\u65B0\u4ECE 0 \u5F00\u59CB\u8BA1\u7B97\uFF0C\u4E0D\u4FEE\u6539\u76F8\u5173\u914D\u7F6E\u7684\u60C5\u51B5\u4E0B\uFF0C\u65B0\u7684\u5DE5\u4F5C\u6D41\u5C06\u53EF\u4EE5\u518D\u88AB\u89E6\u53D1 10 \u6B21\u3002",paraId:9,tocIndex:6},{value:"\u91CD\u590D\u89C4\u5219\u4E2D\u7684\u95F4\u9694\u65F6\u95F4\u662F\u76F8\u5BF9\u4E8E\u4E0A\u4E00\u6B21\u89E6\u53D1\uFF08\u5F00\u59CB\u65F6\u95F4\uFF09\u7684\u65F6\u95F4\u70B9\uFF0C\u800C\u9AD8\u7EA7\u6A21\u5F0F\u662F\u6309\u56FA\u5B9A\u7684\u65F6\u95F4\u70B9\u89E6\u53D1\uFF0C\u4F8B\u5982\uFF0C\u914D\u7F6E\u4E86\u6BCF 30 \u5206\u949F\u89E6\u53D1\u4E00\u6B21\uFF0C\u5982\u679C\u4E0A\u4E00\u6B21\u89E6\u53D1\u662F 2021-09-01 12:01:23\uFF0C\u90A3\u4E48\u4E0B\u4E00\u6B21\u89E6\u53D1\u65F6\u95F4\u662F 2021-09-01 12:31:23\u3002\u800C\u9AD8\u7EA7\u6A21\u5F0F\u5373 cron \u6A21\u5F0F\uFF0C\u914D\u7F6E\u7684\u89C4\u5219\u5747\u4E3A\u56FA\u5B9A\u7684\u65F6\u95F4\u70B9\u89E6\u53D1\uFF0C\u4F8B\u5982\uFF0C\u53EF\u4EE5\u914D\u7F6E\u5728\u6BCF\u5C0F\u65F6\u7684 01 \u5206\u548C 31 \u5206\u89E6\u53D1\u3002",paraId:10,tocIndex:7},{value:"\u5047\u8BBE\u6BCF\u5206\u949F\u68C0\u67E5\u521B\u5EFA\u540E\u8D85\u8FC7 30 \u5206\u949F\u672A\u5B8C\u6210\u652F\u4ED8\u7684\u8BA2\u5355\uFF0C\u5E76\u81EA\u52A8\u4FEE\u6539\u4E3A\u5DF2\u53D6\u6D88\u72B6\u6001\u3002\u5206\u522B\u4F7F\u7528\u4E24\u79CD\u6A21\u5F0F\u6765\u5B9E\u73B0\u3002",paraId:11,tocIndex:8},{value:"\u521B\u5EFA\u4E00\u4E2A\u57FA\u4E8E\u5B9A\u65F6\u4EFB\u52A1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u89E6\u53D1\u5668\u914D\u7F6E\u4E2D\u9009\u62E9\u201C\u81EA\u5B9A\u4E49\u65F6\u95F4\u201D\u6A21\u5F0F\uFF0C\u5F00\u59CB\u65F6\u95F4\u9009\u62E9\u4EFB\u610F\u4E0D\u665A\u4E8E\u5F53\u524D\u65F6\u95F4\u7684\u65F6\u95F4\u70B9\uFF0C\u91CD\u590D\u89C4\u5219\u9009\u62E9\u201C\u6BCF\u5206\u949F\u201D\uFF0C\u7ED3\u675F\u6761\u4EF6\u7559\u7A7A\uFF1A",paraId:12,tocIndex:9},{value:` `,paraId:13},{value:"\u4E4B\u540E\u6839\u636E\u6D41\u7A0B\u7684\u903B\u8F91\u914D\u7F6E\u5176\u4ED6\u8282\u70B9\uFF0C\u8BA1\u7B97\u51FA 30 \u5206\u949F\uFF0C\u5982\u679C\u8D85\u65F6\u672A\u652F\u4ED8\u5219\u4FEE\u6539\u4E3A\u5DF2\u53D6\u6D88\u72B6\u6001\uFF1A",paraId:14,tocIndex:9},{value:` `,paraId:13},{value:"\u5DE5\u4F5C\u6D41\u542F\u7528\u540E\uFF0C\u4ECE\u5F00\u59CB\u65F6\u95F4\u8D77\u6BCF\u5206\u949F\u4F1A\u89E6\u53D1\u4E00\u6B21\uFF0C\u8BA1\u7B97 30 \u5206\u949F\u524D\u7684\u65F6\u95F4\uFF0C\u7528\u4E8E\u66F4\u65B0\u521B\u5EFA\u65F6\u95F4\u65E9\u4E8E\u8BE5\u65F6\u95F4\u70B9\u7684\u8BA2\u5355\u72B6\u6001\u4E3A\u53D6\u6D88\u3002",paraId:15,tocIndex:9},{value:"\u521B\u5EFA\u4E00\u4E2A\u57FA\u4E8E\u5B9A\u65F6\u4EFB\u52A1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u89E6\u53D1\u5668\u914D\u7F6E\u4E2D\u9009\u62E9\u201C\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u201D\u6A21\u5F0F\uFF0C\u6570\u636E\u8868\u9009\u62E9\u201C\u8BA2\u5355\u201D\u8868\uFF0C\u5F00\u59CB\u65F6\u95F4\u9009\u62E9\u8BA2\u5355\u7684\u521B\u5EFA\u65F6\u95F4\u4E4B\u540E 30 \u5206\u949F\uFF0C\u91CD\u590D\u89C4\u5219\u9009\u62E9\u201C\u4E0D\u91CD\u590D\u201D\uFF1A",paraId:16,tocIndex:10},{value:` `,paraId:13},{value:"\u4E4B\u540E\u6839\u636E\u6D41\u7A0B\u7684\u903B\u8F91\u914D\u7F6E\u5176\u4ED6\u8282\u70B9\uFF0C\u66F4\u65B0 ID \u4E3A\u89E6\u53D1\u6570\u636E ID \u4E14\u72B6\u6001\u662F\u201C\u672A\u652F\u4ED8\u201D\u7684\u8BA2\u5355\u4E3A\u53D6\u6D88\u72B6\u6001\uFF1A",paraId:17,tocIndex:10},{value:` - `,paraId:13},{value:"\u4E0E\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F\u4E0D\u540C\u7684\u662F\uFF0C\u8FD9\u91CC\u4E0D\u9700\u8981\u8BA1\u7B97 30 \u5206\u949F\u524D\u7684\u65F6\u95F4\uFF0C\u56E0\u4E3A\u5DE5\u4F5C\u6D41\u89E6\u53D1\u6570\u636E\u4E0A\u4E0B\u6587\u4E2D\u5373\u5305\u542B\u5BF9\u5E94\u7B26\u5408\u65F6\u95F4\u6761\u4EF6\u7684\u6570\u636E\u884C\uFF0C\u6240\u4EE5\u53EF\u4EE5\u76F4\u63A5\u66F4\u65B0\u5BF9\u5E94\u8BA2\u5355\u7684\u72B6\u6001\u3002",paraId:18,tocIndex:10}],Tg={},Cg={title:"CollectionManager",toc:"menu",filename:"docs/en-US/api/client/extensions/collection-manager.md",lastUpdated:1732240239e3,description:"If there is no collection parameter passed in, get the collection from CollectionManagerProvider with the corresponding name."},Ag=[{id:"collectionmanager",depth:1,title:"CollectionManager"},{id:"components",depth:2,title:"Components"},{id:"collectionmanagerprovider",depth:3,title:"CollectionManagerProvider"},{id:"collectionprovider",depth:3,title:"CollectionProvider"},{id:"collectionfieldprovider",depth:3,title:"CollectionFieldProvider"},{id:"collectionfield",depth:3,title:"CollectionField"},{id:"hooks",depth:2,title:"Hooks"},{id:"usecollectionmanager",depth:3,title:"useCollectionManager()"},{id:"usecollection",depth:3,title:"useCollection()"},{id:"usecollectionfield",depth:3,title:"useCollectionField()"},{id:"collectionmanager-1",depth:1,title:"CollectionManager"},{id:"components-1",depth:2,title:"Components"},{id:"collectionmanagerprovider-1",depth:3,title:"CollectionManagerProvider"},{id:"collectionprovider-1",depth:3,title:"CollectionProvider"},{id:"collectionfieldprovider-1",depth:3,title:"CollectionFieldProvider"},{id:"collectionfield-1",depth:3,title:"CollectionField"},{id:"hooks-1",depth:2,title:"Hooks"},{id:"usecollectionmanager-1",depth:3,title:"useCollectionManager()"},{id:"usecollection-1",depth:3,title:"useCollection()"},{id:"usecollectionfield-1",depth:3,title:"useCollectionField()"}],qg=[{value:` @@ -4553,7 +4605,7 @@ export default PluginComponentAndScopeGlobalClient; `,paraId:24,tocIndex:15},{value:"Use with ",paraId:25,tocIndex:17},{value:"",paraId:25,tocIndex:17},{value:".",paraId:25,tocIndex:17},{value:`const { collections, get } = useCollectionManager(); `,paraId:26,tocIndex:17},{value:"Use with ",paraId:27,tocIndex:18},{value:"",paraId:27,tocIndex:18},{value:".",paraId:27,tocIndex:18},{value:`const { name, fields, getField, findField, resource } = useCollection(); `,paraId:28,tocIndex:18},{value:"Use with ",paraId:29,tocIndex:19},{value:"",paraId:29,tocIndex:19},{value:".",paraId:29,tocIndex:19},{value:`const { name, uiSchema, resource } = useCollectionField(); -`,paraId:30,tocIndex:19},{value:"The resource needs to be used with ",paraId:31,tocIndex:19},{value:"",paraId:31,tocIndex:19},{value:" to provide context of the record of the current data table row.",paraId:31,tocIndex:19}],Eg={"docs-en-us-development-client-ui-schema-initializer-demo-schema-initializer-manager-add":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,4196))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-initializer-demo-schema-initializer-manager-add",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(79864).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(46780).Z}}}},"docs-en-us-development-client-ui-schema-initializer-demo-use-schema-initializer-render":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,39979))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-initializer-demo-use-schema-initializer-render",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(39406).Z},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(56328).Z}}}}},Dg={title:"Schema initializer",toc:"menu",filename:"docs/en-US/development/client/ui-schema/initializer.md",lastUpdated:1732240239e3,description:"After activating the UI configuration, the various visible orange buttons on the interface are Schema initializers, used for adding various blocks, fields, actions, etc., to the interface."},Og=[{id:"schema-initializer",depth:1,title:"Schema initializer"},{id:"built-in-initializers",depth:2,title:"Built-in initializers"},{id:"adding-items-to-existing-initializers",depth:2,title:"Adding items to existing initializers"},{id:"adding-new-initializers",depth:2,title:"Adding new initializers"},{id:"registering-in-the-plugins-load-method",depth:3,title:"Registering in the plugin's load method"},{id:"how-to-use-the-newly-added-initializer",depth:3,title:"How to use the newly added initializer"},{id:"schema-components-that-support-x-initializer",depth:4,title:"Schema components that support x-initializer"},{id:"how-to-support-x-initializer-in-custom-components",depth:4,title:"How to support x-initializer in custom components"},{id:"api-reference",depth:2,title:"API Reference"}],Rg=[{value:"After activating the UI configuration, the various visible orange buttons on the interface are Schema initializers, used for adding various blocks, fields, actions, etc., to the interface.",paraId:0,tocIndex:0},{value:"It is recommended to use the ",paraId:1,tocIndex:2},{value:"schemaInitializerManager.addItem()",paraId:2,tocIndex:2},{value:" method to add items. For detailed item configurations, refer to ",paraId:1,tocIndex:2},{value:"SchemaInitializer Item API",paraId:3,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:`class PluginDemoAddSchemaInitializerItem extends Plugin { +`,paraId:30,tocIndex:19},{value:"The resource needs to be used with ",paraId:31,tocIndex:19},{value:"",paraId:31,tocIndex:19},{value:" to provide context of the record of the current data table row.",paraId:31,tocIndex:19}],Eg={"docs-en-us-development-client-ui-schema-initializer-demo-schema-initializer-manager-add":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,4196))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-initializer-demo-schema-initializer-manager-add",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(79864).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(46780).Z}}}},"docs-en-us-development-client-ui-schema-initializer-demo-use-schema-initializer-render":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,39979))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-initializer-demo-use-schema-initializer-render",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(39406).Z},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(56328).Z}}}}},Dg={title:"Schema initializer",toc:"menu",filename:"docs/en-US/development/client/ui-schema/initializer.md",lastUpdated:173254844e4,description:"After activating the UI configuration, the various visible orange buttons on the interface are Schema initializers, used for adding various blocks, fields, actions, etc., to the interface."},Og=[{id:"schema-initializer",depth:1,title:"Schema initializer"},{id:"built-in-initializers",depth:2,title:"Built-in initializers"},{id:"adding-items-to-existing-initializers",depth:2,title:"Adding items to existing initializers"},{id:"adding-new-initializers",depth:2,title:"Adding new initializers"},{id:"registering-in-the-plugins-load-method",depth:3,title:"Registering in the plugin's load method"},{id:"how-to-use-the-newly-added-initializer",depth:3,title:"How to use the newly added initializer"},{id:"schema-components-that-support-x-initializer",depth:4,title:"Schema components that support x-initializer"},{id:"how-to-support-x-initializer-in-custom-components",depth:4,title:"How to support x-initializer in custom components"},{id:"api-reference",depth:2,title:"API Reference"}],Rg=[{value:"After activating the UI configuration, the various visible orange buttons on the interface are Schema initializers, used for adding various blocks, fields, actions, etc., to the interface.",paraId:0,tocIndex:0},{value:"It is recommended to use the ",paraId:1,tocIndex:2},{value:"schemaInitializerManager.addItem()",paraId:2,tocIndex:2},{value:" method to add items. For detailed item configurations, refer to ",paraId:1,tocIndex:2},{value:"SchemaInitializer Item API",paraId:3,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:`class PluginDemoAddSchemaInitializerItem extends Plugin { async load() { this.schemaInitializerManager.addItem( 'myInitializer', // Example of an existing schema initializer @@ -4617,7 +4669,7 @@ export default PluginComponentAndScopeGlobalClient; 'x-component': 'Grid', 'x-initializer': 'myInitializer', } -`,paraId:12,tocIndex:6},{value:"x-initializer",paraId:10},{value:"If Grid, ActionBar, Tabs, and similar components do not meet your needs, you can use ",paraId:13,tocIndex:7},{value:"useSchemaInitializerRender()",paraId:13,tocIndex:7},{value:" to handle the rendering of ",paraId:13,tocIndex:7},{value:"x-initializer",paraId:13,tocIndex:7},{value:" in custom components.",paraId:13,tocIndex:7},{value:"SchemaInitializerManager",paraId:14,tocIndex:8},{value:"SchemaInitializer",paraId:14,tocIndex:8}],Mg={"docs-en-us-development-client-ui-schema-quick-start-demo-demo1":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,90593))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-quick-start-demo-demo1",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(47362).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"}}}},"docs-en-us-development-client-ui-schema-quick-start-demo-demo2":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,95586))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-quick-start-demo-demo2",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(31669).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"}}}},"docs-en-us-development-client-ui-schema-quick-start-demo-demo3":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,34332))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-quick-start-demo-demo3",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(59464).Z},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"}}}}},Lg={title:"Quick start",toc:"menu",filename:"docs/en-US/development/client/ui-schema/quick-start.md",lastUpdated:1732240239e3,description:"Render registered components by configuring x-component."},Ng=[{id:"quick-start",depth:1,title:"Quick start"},{id:"1-create-schema-component",depth:2,title:"1. Create Schema Component"},{id:"2-add-schema-component-to-the-page",depth:2,title:"2. Add Schema Component to the Page"},{id:"3-add-designer-toolbar-to-schema",depth:2,title:"3. Add Designer Toolbar to Schema"}],zg=[{value:"Render registered components by configuring ",paraId:0,tocIndex:1},{value:"x-component",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:"Key Concepts:",paraId:1,tocIndex:1},{value:"UI Schema Protocol",paraId:2,tocIndex:1},{value:"Schema Rendering",paraId:3,tocIndex:1},{value:"Extending Schema Components",paraId:4,tocIndex:1},{value:"Insert new components adjacent to existing Schemas by configuring ",paraId:5,tocIndex:2},{value:"x-initializer",paraId:5,tocIndex:2},{value:".",paraId:5,tocIndex:2},{value:"Key Concepts:",paraId:6,tocIndex:2},{value:"Designable Designer",paraId:7,tocIndex:2},{value:"UI Schema Protocol - x-initializer Parameter",paraId:8,tocIndex:2},{value:"SchemaInitializer",paraId:9,tocIndex:2},{value:"Provide a parameter configurator for Schema components by configuring ",paraId:10,tocIndex:3},{value:"x-settings",paraId:10,tocIndex:3},{value:". The designer toolbar has drag-and-drop functionality enabled by default.",paraId:10,tocIndex:3},{value:"Key Concepts:",paraId:11,tocIndex:3},{value:"UI Schema Protocol - x-settings Parameter",paraId:12,tocIndex:3},{value:"SchemaSettings",paraId:13,tocIndex:3},{value:"Dragging and Moving Existing Schema Nodes",paraId:14,tocIndex:3}],Fg={},Bg={title:"How to configure collections?",toc:"menu",filename:"docs/en-US/development/server/collections/configure.md",lastUpdated:1732240239e3,description:"NocoBase has three ways to configure collections."},jg=[{id:"how-to-configure-collections",depth:1,title:"How to configure collections?"},{id:"configuring-collections-through-the-interface",depth:2,title:"Configuring collections through the interface"},{id:"regular-table-interface",depth:3,title:"Regular table interface"},{id:"graphical-configuration-interface",depth:3,title:"Graphical configuration interface"},{id:"defined-in-the-plugin-code",depth:2,title:"Defined in the plugin code"},{id:"managing-data-tables-via-rest-api",depth:2,title:"Managing data tables via REST API"},{id:"collections",depth:3,title:"Collections"},{id:"collection-fields",depth:3,title:"Collection fields"}],Hg=[{value:"NocoBase has three ways to configure collections.",paraId:0,tocIndex:0},{value:"Business data is generally recommended to be configured using the interface, and the NocoBase platform provides two interfaces to configure collections.",paraId:1,tocIndex:1},{value:"In the plugin, custom collection must be placed in the ",paraId:2,tocIndex:4},{value:"src/server/collections/*.ts",paraId:2,tocIndex:4},{value:" directory of the plugin, with the following content:",paraId:2,tocIndex:4},{value:`import { defineCollection } from '@nocobase/database'; +`,paraId:12,tocIndex:6},{value:"x-initializer",paraId:10},{value:"If Grid, ActionBar, Tabs, and similar components do not meet your needs, you can use ",paraId:13,tocIndex:7},{value:"useSchemaInitializerRender()",paraId:13,tocIndex:7},{value:" to handle the rendering of ",paraId:13,tocIndex:7},{value:"x-initializer",paraId:13,tocIndex:7},{value:" in custom components.",paraId:13,tocIndex:7},{value:"SchemaInitializerManager",paraId:14,tocIndex:8},{value:"SchemaInitializer",paraId:14,tocIndex:8}],Mg={"docs-en-us-development-client-ui-schema-quick-start-demo-demo1":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,90593))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-quick-start-demo-demo1",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(47362).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"}}}},"docs-en-us-development-client-ui-schema-quick-start-demo-demo2":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,95586))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-quick-start-demo-demo2",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(31669).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"}}}},"docs-en-us-development-client-ui-schema-quick-start-demo-demo3":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,34332))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-quick-start-demo-demo3",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(59464).Z},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"}}}}},Lg={title:"Quick start",toc:"menu",filename:"docs/en-US/development/client/ui-schema/quick-start.md",lastUpdated:173254844e4,description:"Render registered components by configuring x-component."},Ng=[{id:"quick-start",depth:1,title:"Quick start"},{id:"1-create-schema-component",depth:2,title:"1. Create Schema Component"},{id:"2-add-schema-component-to-the-page",depth:2,title:"2. Add Schema Component to the Page"},{id:"3-add-designer-toolbar-to-schema",depth:2,title:"3. Add Designer Toolbar to Schema"}],zg=[{value:"Render registered components by configuring ",paraId:0,tocIndex:1},{value:"x-component",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:"Key Concepts:",paraId:1,tocIndex:1},{value:"UI Schema Protocol",paraId:2,tocIndex:1},{value:"Schema Rendering",paraId:3,tocIndex:1},{value:"Extending Schema Components",paraId:4,tocIndex:1},{value:"Insert new components adjacent to existing Schemas by configuring ",paraId:5,tocIndex:2},{value:"x-initializer",paraId:5,tocIndex:2},{value:".",paraId:5,tocIndex:2},{value:"Key Concepts:",paraId:6,tocIndex:2},{value:"Designable Designer",paraId:7,tocIndex:2},{value:"UI Schema Protocol - x-initializer Parameter",paraId:8,tocIndex:2},{value:"SchemaInitializer",paraId:9,tocIndex:2},{value:"Provide a parameter configurator for Schema components by configuring ",paraId:10,tocIndex:3},{value:"x-settings",paraId:10,tocIndex:3},{value:". The designer toolbar has drag-and-drop functionality enabled by default.",paraId:10,tocIndex:3},{value:"Key Concepts:",paraId:11,tocIndex:3},{value:"UI Schema Protocol - x-settings Parameter",paraId:12,tocIndex:3},{value:"SchemaSettings",paraId:13,tocIndex:3},{value:"Dragging and Moving Existing Schema Nodes",paraId:14,tocIndex:3}],Fg={},Bg={title:"How to configure collections?",toc:"menu",filename:"docs/en-US/development/server/collections/configure.md",lastUpdated:173254844e4,description:"NocoBase has three ways to configure collections."},jg=[{id:"how-to-configure-collections",depth:1,title:"How to configure collections?"},{id:"configuring-collections-through-the-interface",depth:2,title:"Configuring collections through the interface"},{id:"regular-table-interface",depth:3,title:"Regular table interface"},{id:"graphical-configuration-interface",depth:3,title:"Graphical configuration interface"},{id:"defined-in-the-plugin-code",depth:2,title:"Defined in the plugin code"},{id:"managing-data-tables-via-rest-api",depth:2,title:"Managing data tables via REST API"},{id:"collections",depth:3,title:"Collections"},{id:"collection-fields",depth:3,title:"Collection fields"}],Hg=[{value:"NocoBase has three ways to configure collections.",paraId:0,tocIndex:0},{value:"Business data is generally recommended to be configured using the interface, and the NocoBase platform provides two interfaces to configure collections.",paraId:1,tocIndex:1},{value:"In the plugin, custom collection must be placed in the ",paraId:2,tocIndex:4},{value:"src/server/collections/*.ts",paraId:2,tocIndex:4},{value:" directory of the plugin, with the following content:",paraId:2,tocIndex:4},{value:`import { defineCollection } from '@nocobase/database'; export default defineCollection({ name: 'examples', @@ -4637,7 +4689,7 @@ POST /api/collections//fields GET /api/collections//fields/ PUT /api/collections//fields/ DELETE /api/collections//fields/ -`,paraId:13,tocIndex:7}],Wg={},$g={title:"How to Enable the Federated Engine in MySQL",toc:"menu",filename:"docs/en-US/handbook/collection-fdw/enable-federated.md",lastUpdated:1732240239e3,description:"The MySQL database does not enable the federated module by default. You need to modify the my.cnf configuration. If you are using the Docker version, you can handle the extension situation through volumes:"},Gg=[{id:"how-to-enable-the-federated-engine-in-mysql",depth:1,title:"How to Enable the Federated Engine in MySQL"}],Vg=[{value:"The MySQL database does not enable the federated module by default. You need to modify the my.cnf configuration. If you are using the Docker version, you can handle the extension situation through volumes:",paraId:0,tocIndex:0},{value:`mysql: +`,paraId:13,tocIndex:7}],Wg={},$g={title:"How to Enable the Federated Engine in MySQL",toc:"menu",filename:"docs/en-US/handbook/collection-fdw/enable-federated.md",lastUpdated:173254844e4,description:"The MySQL database does not enable the federated module by default. You need to modify the my.cnf configuration. If you are using the Docker version, you can handle the extension situation through volumes:"},Gg=[{id:"how-to-enable-the-federated-engine-in-mysql",depth:1,title:"How to Enable the Federated Engine in MySQL"}],Vg=[{value:"The MySQL database does not enable the federated module by default. You need to modify the my.cnf configuration. If you are using the Docker version, you can handle the extension situation through volumes:",paraId:0,tocIndex:0},{value:`mysql: image: mysql:8.1.0 volumes: - ./storage/mysql-conf:/etc/mysql/conf.d @@ -4653,13 +4705,13 @@ DELETE /api/collections//fields/ federated `,paraId:3,tocIndex:0},{value:"Restart MySQL",paraId:4,tocIndex:0},{value:`docker compose up -d mysql `,paraId:5,tocIndex:0},{value:"Check if federated is activated",paraId:6,tocIndex:0},{value:`show engines -`,paraId:7,tocIndex:0}],Kg={},Zg={title:"Block Charts",toc:"menu",filename:"docs/en-US/handbook/data-visualization/block-charts.md",lastUpdated:1732240239e3},Yg=[{id:"block-charts",depth:1,title:"Block Charts"}],Qg=[],Jg={},Xg={title:"Area Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/area.md",lastUpdated:1732240239e3,description:"Configure 1 measure and 2 dimensions. One dimension will serve as the X-axis field, and the other will be used as the series (category) field."},e1=[{id:"area-chart",depth:1,title:"Area Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-or-more-measures-1-dimension",depth:3,title:"1 or more measures, 1 dimension"},{id:"1-measure-1-axis-dimension-1-category-dimension",depth:3,title:"1 measure, 1 axis dimension, 1 category dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"},{id:"refinement-stage-refinement-expert",depth:3,title:"Refinement Stage (Refinement Expert)"},{id:"area-chart-1",depth:3,title:"Area Chart"},{id:"data-configuration-1",depth:4,title:"Data Configuration"},{id:"1-or-more-measures-1-dimension-1",depth:5,title:"1 or More Measures, 1 Dimension"},{id:"1-measure-1-axis-dimension-1-category-dimension-1",depth:5,title:"1 Measure, 1 Axis Dimension, 1 Category Dimension"},{id:"configuration-options-1",depth:4,title:"Configuration Options"}],a1=[{value:"Configure 1 measure and 2 dimensions. One dimension will serve as the X-axis field, and the other will be used as the series (category) field.",paraId:0,tocIndex:3},{value:"Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"XField",paraId:1,tocIndex:4},{value:"The dimension field for the X-axis",paraId:1,tocIndex:4},{value:"seriesField",paraId:1,tocIndex:4},{value:"The dimension field used for categorization",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Define the chart size, either by fixed aspect ratio or fixed height",paraId:1,tocIndex:4},{value:"Light mode theme",paraId:1,tocIndex:4},{value:"Select this option to preview when the system is in light mode",paraId:1,tocIndex:4},{value:"Dark mode theme",paraId:1,tocIndex:4},{value:"Select this option to preview when the system is in dark mode",paraId:1,tocIndex:4},{value:"Show legend",paraId:1,tocIndex:4},{value:"Toggle the display of the legend",paraId:1,tocIndex:4},{value:"Legend orient",paraId:1,tocIndex:4},{value:"Choose the direction of the legend display, either horizontal or vertical",paraId:1,tocIndex:4},{value:"Legend position (left, bottom, right, top)",paraId:1,tocIndex:4},{value:"Define the relative position of the legend",paraId:1,tocIndex:4},{value:"Label type",paraId:1,tocIndex:4},{value:"Control the visibility and type of labels",paraId:1,tocIndex:4},{value:"Smooth curve",paraId:1,tocIndex:4},{value:"Enable or disable the smoothing of curves",paraId:1,tocIndex:4},{value:"Whether stack",paraId:1,tocIndex:4},{value:"Enable or disable data stacking",paraId:1,tocIndex:4},{value:"X-Axis title",paraId:1,tocIndex:4},{value:"Control the display position of the X-axis title",paraId:1,tocIndex:4},{value:"Y-Axis title",paraId:1,tocIndex:4},{value:"Control the display position of the Y-axis title",paraId:1,tocIndex:4},{value:"X-Axis label rotate",paraId:1,tocIndex:4},{value:"Set the rotation angle of X-axis labels, helpful for displaying more labels when they are dense",paraId:1,tocIndex:4},{value:"Padding",paraId:1,tocIndex:4},{value:"Adjust the internal padding of the chart",paraId:1,tocIndex:4},{value:"Split line",paraId:1,tocIndex:4},{value:"Configure the display and style of grid lines",paraId:1,tocIndex:4},{value:"Mark line",paraId:1,tocIndex:4},{value:"Add marker lines with custom title, value, and color",paraId:1,tocIndex:4},{value:"Now, I will move on to the final refinement stage.",paraId:2,tocIndex:4},{value:"For this final pass, I've refined the text to enhance readability and ensure clarity, while keeping it professional and technically accurate.",paraId:3,tocIndex:5},{value:"This setup includes 1 measure and 2 dimensions. One dimension acts as the X-axis field, while the other is used as the series (category) field.",paraId:4,tocIndex:9},{value:"Option",paraId:5,tocIndex:10},{value:"Description",paraId:5,tocIndex:10},{value:"X-axis Field",paraId:5,tocIndex:10},{value:"Field used to define the X-axis dimension",paraId:5,tocIndex:10},{value:"Category Field",paraId:5,tocIndex:10},{value:"Field used to categorize data",paraId:5,tocIndex:10},{value:"Size",paraId:5,tocIndex:10},{value:"Specify chart size, either by fixed aspect ratio or fixed height",paraId:5,tocIndex:10},{value:"Light Mode Theme",paraId:5,tocIndex:10},{value:"Select for preview in light mode",paraId:5,tocIndex:10},{value:"Dark Mode Theme",paraId:5,tocIndex:10},{value:"Select for preview in dark mode",paraId:5,tocIndex:10},{value:"Show Legend",paraId:5,tocIndex:10},{value:"Toggle the visibility of the legend",paraId:5,tocIndex:10},{value:"Legend Direction",paraId:5,tocIndex:10},{value:"Set legend direction (horizontal or vertical)",paraId:5,tocIndex:10},{value:"Legend Position (Left, Bottom, Right, Top)",paraId:5,tocIndex:10},{value:"Set the position of the legend relative to the chart",paraId:5,tocIndex:10},{value:"Label Type",paraId:5,tocIndex:10},{value:"Manage the visibility and format of the labels",paraId:5,tocIndex:10},{value:"Smooth Curve",paraId:5,tocIndex:10},{value:"Enable smoothing of the curve for a more polished look",paraId:5,tocIndex:10},{value:"Stack Data",paraId:5,tocIndex:10},{value:"Option to stack values for cumulative data visualization",paraId:5,tocIndex:10},{value:"X-axis Title",paraId:5,tocIndex:10},{value:"Adjust the visibility and position of the X-axis title",paraId:5,tocIndex:10},{value:"Y-axis Title",paraId:5,tocIndex:10},{value:"Adjust the visibility and position of the Y-axis title",paraId:5,tocIndex:10},{value:"X-axis Label Rotation",paraId:5,tocIndex:10},{value:"Rotate X-axis labels to optimize space, useful when labels are densely packed",paraId:5,tocIndex:10},{value:"Padding",paraId:5,tocIndex:10},{value:"Customize the inner padding of the chart",paraId:5,tocIndex:10},{value:"Grid Lines",paraId:5,tocIndex:10},{value:"Define the visibility and style of grid lines",paraId:5,tocIndex:10},{value:"Marker Line",paraId:5,tocIndex:10},{value:"Add marker lines, and set their title, value, and color",paraId:5,tocIndex:10}],t1={},n1={title:"Line Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/line.md",lastUpdated:1732240239e3,description:"Configure 1 measure and 2 dimensions. 1 dimension serves as the X-axis field, and the other as the series field."},o1=[{id:"line-chart",depth:1,title:"Line Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-or-more-measures-1-dimension",depth:3,title:"1 or More Measures, 1 Dimension"},{id:"1-measure-1-axis-dimension-one-classification-dimension",depth:3,title:"1 Measure, 1 Axis Dimension, one Classification Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],r1=[{value:"Configure 1 measure and 2 dimensions. 1 dimension serves as the X-axis field, and the other as the series field.",paraId:0,tocIndex:3},{value:"Configuration Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"xField",paraId:1,tocIndex:4},{value:"The dimension field for the X-axis",paraId:1,tocIndex:4},{value:"seriesField",paraId:1,tocIndex:4},{value:"The dimension field for classification",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Set the chart size, either with a fixed aspect ratio or a fixed height",paraId:1,tocIndex:4},{value:"Light mode theme",paraId:1,tocIndex:4},{value:"Select to preview in light mode in systems with light mode enabled",paraId:1,tocIndex:4},{value:"Dark mode theme",paraId:1,tocIndex:4},{value:"Select to preview in dark mode in systems with dark mode enabled",paraId:1,tocIndex:4},{value:"Show legend",paraId:1,tocIndex:4},{value:"Control whether to display the legend",paraId:1,tocIndex:4},{value:"Legend orient",paraId:1,tocIndex:4},{value:"Control the direction of the legend, either horizontal or vertical",paraId:1,tocIndex:4},{value:"Legend position (left, bottom, right, top)",paraId:1,tocIndex:4},{value:"Control the position of the legend relative to the chart",paraId:1,tocIndex:4},{value:"Label type",paraId:1,tocIndex:4},{value:"Control whether and how labels are displayed, only visible when marker points are displayed",paraId:1,tocIndex:4},{value:"Smooth curve",paraId:1,tocIndex:4},{value:"Enable or disable smooth curves in the line chart",paraId:1,tocIndex:4},{value:"Whether stack",paraId:1,tocIndex:4},{value:"Enable or disable stacked data values",paraId:1,tocIndex:4},{value:"Symbol",paraId:1,tocIndex:4},{value:"Control whether to display marker points and their styles",paraId:1,tocIndex:4},{value:"X-Axis title",paraId:1,tocIndex:4},{value:"Control the position of the X-axis title",paraId:1,tocIndex:4},{value:"Y-Axis title",paraId:1,tocIndex:4},{value:"Control the position of the Y-axis title",paraId:1,tocIndex:4},{value:"X-Axis label rotate",paraId:1,tocIndex:4},{value:"Control the rotation angle of X-axis labels, useful for displaying more labels in dense data",paraId:1,tocIndex:4},{value:"Padding",paraId:1,tocIndex:4},{value:"Adjust the chart\u2019s internal padding",paraId:1,tocIndex:4},{value:"Split line",paraId:1,tocIndex:4},{value:"Control the visibility and style of grid lines",paraId:1,tocIndex:4},{value:"Mark line",paraId:1,tocIndex:4},{value:"Add marker lines and set title, value, and color",paraId:1,tocIndex:4}],d1={},i1={title:"Aliyun OSS",toc:"menu",filename:"docs/en-US/handbook/file-manager/storage/aliyun-oss.md",lastUpdated:1732240239e3,description:"Storage engine based on Aliyun OSS, you need to prepare relevant accounts and permissions in advance."},l1=[{id:"aliyun-oss",depth:1,title:"Aliyun OSS"},{id:"options",depth:2,title:"Options"},{id:"region",depth:3,title:"Region"},{id:"accesskey-id",depth:3,title:"AccessKey ID"},{id:"accesskey-secret",depth:3,title:"AccessKey Secret"},{id:"bucket",depth:3,title:"Bucket"}],c1=[{value:"Storage engine based on Aliyun OSS, you need to prepare relevant accounts and permissions in advance.",paraId:0,tocIndex:0},{value:"Only the special parameters of the Aliyun OSS storage engine are introduced here. For common parameters, please refer to the ",paraId:1},{value:"Common Engine Parameters",paraId:2},{value:".",paraId:1},{value:"Specify the region of the OSS storage, for example: ",paraId:3,tocIndex:2},{value:"oss-cn-hangzhou",paraId:3,tocIndex:2},{value:".",paraId:3,tocIndex:2},{value:"You can view the region information of the storage bucket in the ",paraId:4},{value:"Aliyun OSS console",paraId:4},{value:", and only need to take the prefix part of the region (without the complete domain name).",paraId:4},{value:"Fill in the ID of the Alibaba Cloud authorized access key.",paraId:5,tocIndex:3},{value:"Fill in the secret of the Alibaba Cloud authorized access key.",paraId:6,tocIndex:4},{value:"Fill in the name of the OSS bucket.",paraId:7,tocIndex:5}],s1={},u1={title:"Grid Cards",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/data-blocks/grid-card.md",lastUpdated:1732240239e3,description:"The Grid Card block offers a concise and visually appealing way to display summary information of data records. Designed for flexibility, it allows you to configure the number of columns based on screen size, ensuring a seamless user experience across all devices."},p1=[{id:"grid-cards",depth:1,title:"Grid Cards"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"data-scope",depth:3,title:"Data Scope"},{id:"configuring-the-number-of-columns-per-row",depth:3,title:"Configuring the Number of Columns per Row"},{id:"configuring-the-data-loading-method",depth:3,title:"Configuring the Data Loading Method"},{id:"setting-block-height",depth:3,title:"Setting Block Height"},{id:"configuring-fields",depth:2,title:"Configuring Fields"},{id:"fields-of-the-current-table",depth:3,title:"Fields of the Current Table"},{id:"fields-of-related-tables",depth:3,title:"Fields of Related Tables"},{id:"configuring-actions",depth:2,title:"Configuring Actions"},{id:"global-actions",depth:3,title:"Global Actions"},{id:"row-actions",depth:3,title:"Row Actions"}],I1=[{value:"The Grid Card block offers a concise and visually appealing way to display summary information of data records. Designed for flexibility, it allows you to configure the number of columns based on screen size, ensuring a seamless user experience across all devices.",paraId:0,tocIndex:1},{value:` +`,paraId:7,tocIndex:0}],Kg={},Zg={title:"Block Charts",toc:"menu",filename:"docs/en-US/handbook/data-visualization/block-charts.md",lastUpdated:173254844e4},Yg=[{id:"block-charts",depth:1,title:"Block Charts"}],Qg=[],Jg={},Xg={title:"Area Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/area.md",lastUpdated:173254844e4,description:"Configure 1 measure and 2 dimensions. One dimension will serve as the X-axis field, and the other will be used as the series (category) field."},e1=[{id:"area-chart",depth:1,title:"Area Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-or-more-measures-1-dimension",depth:3,title:"1 or more measures, 1 dimension"},{id:"1-measure-1-axis-dimension-1-category-dimension",depth:3,title:"1 measure, 1 axis dimension, 1 category dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"},{id:"refinement-stage-refinement-expert",depth:3,title:"Refinement Stage (Refinement Expert)"},{id:"area-chart-1",depth:3,title:"Area Chart"},{id:"data-configuration-1",depth:4,title:"Data Configuration"},{id:"1-or-more-measures-1-dimension-1",depth:5,title:"1 or More Measures, 1 Dimension"},{id:"1-measure-1-axis-dimension-1-category-dimension-1",depth:5,title:"1 Measure, 1 Axis Dimension, 1 Category Dimension"},{id:"configuration-options-1",depth:4,title:"Configuration Options"}],a1=[{value:"Configure 1 measure and 2 dimensions. One dimension will serve as the X-axis field, and the other will be used as the series (category) field.",paraId:0,tocIndex:3},{value:"Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"XField",paraId:1,tocIndex:4},{value:"The dimension field for the X-axis",paraId:1,tocIndex:4},{value:"seriesField",paraId:1,tocIndex:4},{value:"The dimension field used for categorization",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Define the chart size, either by fixed aspect ratio or fixed height",paraId:1,tocIndex:4},{value:"Light mode theme",paraId:1,tocIndex:4},{value:"Select this option to preview when the system is in light mode",paraId:1,tocIndex:4},{value:"Dark mode theme",paraId:1,tocIndex:4},{value:"Select this option to preview when the system is in dark mode",paraId:1,tocIndex:4},{value:"Show legend",paraId:1,tocIndex:4},{value:"Toggle the display of the legend",paraId:1,tocIndex:4},{value:"Legend orient",paraId:1,tocIndex:4},{value:"Choose the direction of the legend display, either horizontal or vertical",paraId:1,tocIndex:4},{value:"Legend position (left, bottom, right, top)",paraId:1,tocIndex:4},{value:"Define the relative position of the legend",paraId:1,tocIndex:4},{value:"Label type",paraId:1,tocIndex:4},{value:"Control the visibility and type of labels",paraId:1,tocIndex:4},{value:"Smooth curve",paraId:1,tocIndex:4},{value:"Enable or disable the smoothing of curves",paraId:1,tocIndex:4},{value:"Whether stack",paraId:1,tocIndex:4},{value:"Enable or disable data stacking",paraId:1,tocIndex:4},{value:"X-Axis title",paraId:1,tocIndex:4},{value:"Control the display position of the X-axis title",paraId:1,tocIndex:4},{value:"Y-Axis title",paraId:1,tocIndex:4},{value:"Control the display position of the Y-axis title",paraId:1,tocIndex:4},{value:"X-Axis label rotate",paraId:1,tocIndex:4},{value:"Set the rotation angle of X-axis labels, helpful for displaying more labels when they are dense",paraId:1,tocIndex:4},{value:"Padding",paraId:1,tocIndex:4},{value:"Adjust the internal padding of the chart",paraId:1,tocIndex:4},{value:"Split line",paraId:1,tocIndex:4},{value:"Configure the display and style of grid lines",paraId:1,tocIndex:4},{value:"Mark line",paraId:1,tocIndex:4},{value:"Add marker lines with custom title, value, and color",paraId:1,tocIndex:4},{value:"Now, I will move on to the final refinement stage.",paraId:2,tocIndex:4},{value:"For this final pass, I've refined the text to enhance readability and ensure clarity, while keeping it professional and technically accurate.",paraId:3,tocIndex:5},{value:"This setup includes 1 measure and 2 dimensions. One dimension acts as the X-axis field, while the other is used as the series (category) field.",paraId:4,tocIndex:9},{value:"Option",paraId:5,tocIndex:10},{value:"Description",paraId:5,tocIndex:10},{value:"X-axis Field",paraId:5,tocIndex:10},{value:"Field used to define the X-axis dimension",paraId:5,tocIndex:10},{value:"Category Field",paraId:5,tocIndex:10},{value:"Field used to categorize data",paraId:5,tocIndex:10},{value:"Size",paraId:5,tocIndex:10},{value:"Specify chart size, either by fixed aspect ratio or fixed height",paraId:5,tocIndex:10},{value:"Light Mode Theme",paraId:5,tocIndex:10},{value:"Select for preview in light mode",paraId:5,tocIndex:10},{value:"Dark Mode Theme",paraId:5,tocIndex:10},{value:"Select for preview in dark mode",paraId:5,tocIndex:10},{value:"Show Legend",paraId:5,tocIndex:10},{value:"Toggle the visibility of the legend",paraId:5,tocIndex:10},{value:"Legend Direction",paraId:5,tocIndex:10},{value:"Set legend direction (horizontal or vertical)",paraId:5,tocIndex:10},{value:"Legend Position (Left, Bottom, Right, Top)",paraId:5,tocIndex:10},{value:"Set the position of the legend relative to the chart",paraId:5,tocIndex:10},{value:"Label Type",paraId:5,tocIndex:10},{value:"Manage the visibility and format of the labels",paraId:5,tocIndex:10},{value:"Smooth Curve",paraId:5,tocIndex:10},{value:"Enable smoothing of the curve for a more polished look",paraId:5,tocIndex:10},{value:"Stack Data",paraId:5,tocIndex:10},{value:"Option to stack values for cumulative data visualization",paraId:5,tocIndex:10},{value:"X-axis Title",paraId:5,tocIndex:10},{value:"Adjust the visibility and position of the X-axis title",paraId:5,tocIndex:10},{value:"Y-axis Title",paraId:5,tocIndex:10},{value:"Adjust the visibility and position of the Y-axis title",paraId:5,tocIndex:10},{value:"X-axis Label Rotation",paraId:5,tocIndex:10},{value:"Rotate X-axis labels to optimize space, useful when labels are densely packed",paraId:5,tocIndex:10},{value:"Padding",paraId:5,tocIndex:10},{value:"Customize the inner padding of the chart",paraId:5,tocIndex:10},{value:"Grid Lines",paraId:5,tocIndex:10},{value:"Define the visibility and style of grid lines",paraId:5,tocIndex:10},{value:"Marker Line",paraId:5,tocIndex:10},{value:"Add marker lines, and set their title, value, and color",paraId:5,tocIndex:10}],t1={},n1={title:"Line Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/line.md",lastUpdated:173254844e4,description:"Configure 1 measure and 2 dimensions. 1 dimension serves as the X-axis field, and the other as the series field."},o1=[{id:"line-chart",depth:1,title:"Line Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-or-more-measures-1-dimension",depth:3,title:"1 or More Measures, 1 Dimension"},{id:"1-measure-1-axis-dimension-one-classification-dimension",depth:3,title:"1 Measure, 1 Axis Dimension, one Classification Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],r1=[{value:"Configure 1 measure and 2 dimensions. 1 dimension serves as the X-axis field, and the other as the series field.",paraId:0,tocIndex:3},{value:"Configuration Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"xField",paraId:1,tocIndex:4},{value:"The dimension field for the X-axis",paraId:1,tocIndex:4},{value:"seriesField",paraId:1,tocIndex:4},{value:"The dimension field for classification",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Set the chart size, either with a fixed aspect ratio or a fixed height",paraId:1,tocIndex:4},{value:"Light mode theme",paraId:1,tocIndex:4},{value:"Select to preview in light mode in systems with light mode enabled",paraId:1,tocIndex:4},{value:"Dark mode theme",paraId:1,tocIndex:4},{value:"Select to preview in dark mode in systems with dark mode enabled",paraId:1,tocIndex:4},{value:"Show legend",paraId:1,tocIndex:4},{value:"Control whether to display the legend",paraId:1,tocIndex:4},{value:"Legend orient",paraId:1,tocIndex:4},{value:"Control the direction of the legend, either horizontal or vertical",paraId:1,tocIndex:4},{value:"Legend position (left, bottom, right, top)",paraId:1,tocIndex:4},{value:"Control the position of the legend relative to the chart",paraId:1,tocIndex:4},{value:"Label type",paraId:1,tocIndex:4},{value:"Control whether and how labels are displayed, only visible when marker points are displayed",paraId:1,tocIndex:4},{value:"Smooth curve",paraId:1,tocIndex:4},{value:"Enable or disable smooth curves in the line chart",paraId:1,tocIndex:4},{value:"Whether stack",paraId:1,tocIndex:4},{value:"Enable or disable stacked data values",paraId:1,tocIndex:4},{value:"Symbol",paraId:1,tocIndex:4},{value:"Control whether to display marker points and their styles",paraId:1,tocIndex:4},{value:"X-Axis title",paraId:1,tocIndex:4},{value:"Control the position of the X-axis title",paraId:1,tocIndex:4},{value:"Y-Axis title",paraId:1,tocIndex:4},{value:"Control the position of the Y-axis title",paraId:1,tocIndex:4},{value:"X-Axis label rotate",paraId:1,tocIndex:4},{value:"Control the rotation angle of X-axis labels, useful for displaying more labels in dense data",paraId:1,tocIndex:4},{value:"Padding",paraId:1,tocIndex:4},{value:"Adjust the chart\u2019s internal padding",paraId:1,tocIndex:4},{value:"Split line",paraId:1,tocIndex:4},{value:"Control the visibility and style of grid lines",paraId:1,tocIndex:4},{value:"Mark line",paraId:1,tocIndex:4},{value:"Add marker lines and set title, value, and color",paraId:1,tocIndex:4}],d1={},i1={title:"Aliyun OSS",toc:"menu",filename:"docs/en-US/handbook/file-manager/storage/aliyun-oss.md",lastUpdated:173254844e4,description:"Storage engine based on Aliyun OSS, you need to prepare relevant accounts and permissions in advance."},l1=[{id:"aliyun-oss",depth:1,title:"Aliyun OSS"},{id:"options",depth:2,title:"Options"},{id:"region",depth:3,title:"Region"},{id:"accesskey-id",depth:3,title:"AccessKey ID"},{id:"accesskey-secret",depth:3,title:"AccessKey Secret"},{id:"bucket",depth:3,title:"Bucket"}],c1=[{value:"Storage engine based on Aliyun OSS, you need to prepare relevant accounts and permissions in advance.",paraId:0,tocIndex:0},{value:"Only the special parameters of the Aliyun OSS storage engine are introduced here. For common parameters, please refer to the ",paraId:1},{value:"Common Engine Parameters",paraId:2},{value:".",paraId:1},{value:"Specify the region of the OSS storage, for example: ",paraId:3,tocIndex:2},{value:"oss-cn-hangzhou",paraId:3,tocIndex:2},{value:".",paraId:3,tocIndex:2},{value:"You can view the region information of the storage bucket in the ",paraId:4},{value:"Aliyun OSS console",paraId:4},{value:", and only need to take the prefix part of the region (without the complete domain name).",paraId:4},{value:"Fill in the ID of the Alibaba Cloud authorized access key.",paraId:5,tocIndex:3},{value:"Fill in the secret of the Alibaba Cloud authorized access key.",paraId:6,tocIndex:4},{value:"Fill in the name of the OSS bucket.",paraId:7,tocIndex:5}],s1={},u1={title:"Grid Cards",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/data-blocks/grid-card.md",lastUpdated:173254844e4,description:"The Grid Card block offers a concise and visually appealing way to display summary information of data records. Designed for flexibility, it allows you to configure the number of columns based on screen size, ensuring a seamless user experience across all devices."},p1=[{id:"grid-cards",depth:1,title:"Grid Cards"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"data-scope",depth:3,title:"Data Scope"},{id:"configuring-the-number-of-columns-per-row",depth:3,title:"Configuring the Number of Columns per Row"},{id:"configuring-the-data-loading-method",depth:3,title:"Configuring the Data Loading Method"},{id:"setting-block-height",depth:3,title:"Setting Block Height"},{id:"configuring-fields",depth:2,title:"Configuring Fields"},{id:"fields-of-the-current-table",depth:3,title:"Fields of the Current Table"},{id:"fields-of-related-tables",depth:3,title:"Fields of Related Tables"},{id:"configuring-actions",depth:2,title:"Configuring Actions"},{id:"global-actions",depth:3,title:"Global Actions"},{id:"row-actions",depth:3,title:"Row Actions"}],I1=[{value:"The Grid Card block offers a concise and visually appealing way to display summary information of data records. Designed for flexibility, it allows you to configure the number of columns based on screen size, ensuring a seamless user experience across all devices.",paraId:0,tocIndex:1},{value:` `,paraId:1},{value:` - `,paraId:1},{value:"For a detailed guide, see ",paraId:2,tocIndex:4},{value:"Setting the Data Scope",paraId:3,tocIndex:4},{value:".",paraId:2,tocIndex:4},{value:"You can adjust the number of columns to fit different screen sizes, ensuring optimal display.",paraId:4,tocIndex:5},{value:"Example: Connecting data blocks and setting the appropriate data loading method.",paraId:5,tocIndex:6},{value:'The Orders table and Products table have a many-to-many relationship. The Orders Table block and Products Grid Card block can be linked to enable data filtering. In this setup, the grid block\u2019s data loading method is configured to load "After Filtering Data."',paraId:6,tocIndex:6},{value:'Example: Configure the Orders Grid Card block to display in "Full Height" mode for an expansive view.',paraId:7,tocIndex:7},{value:"For more details, refer to ",paraId:8,tocIndex:7},{value:"Block Height",paraId:9,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"Setting Sorting Rules",paraId:10,tocIndex:7},{value:"Saving as a Block Template",paraId:11,tocIndex:7},{value:"For a comprehensive guide to field configuration options for the Grid Card block, see ",paraId:12,tocIndex:10},{value:"Detail Fields",paraId:13,tocIndex:10},{value:".",paraId:12,tocIndex:10},{value:"Filter",paraId:14,tocIndex:12},{value:"Add",paraId:15,tocIndex:12},{value:"Delete",paraId:16,tocIndex:12},{value:"Refresh",paraId:17,tocIndex:12},{value:"Import",paraId:18,tocIndex:12},{value:"Export",paraId:19,tocIndex:12},{value:"Edit",paraId:20,tocIndex:13},{value:"Delete",paraId:21,tocIndex:13},{value:"Pop-up",paraId:22,tocIndex:13},{value:"Update Record",paraId:23,tocIndex:13},{value:"Custom Request",paraId:24,tocIndex:13},{value:"Trigger Workflow",paraId:25,tocIndex:13}],_1={},v1={title:"Markdown Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/other-blocks/markdown.md",lastUpdated:1732240239e3,description:"Markdown blocks can be used without binding to a data source. They are defined using Markdown syntax and are suitable for displaying formatted text content."},m1=[{id:"markdown-block",depth:1,title:"Markdown Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"template-engine",depth:2,title:"Template engine"},{id:"string-template",depth:3,title:"string template"},{id:"handlebars",depth:3,title:"Handlebars"},{id:"using-variables",depth:2,title:"Using Variables"},{id:"qr-codes",depth:2,title:"QR Codes"}],h1=[{value:"Markdown blocks can be used without binding to a data source. They are defined using Markdown syntax and are suitable for displaying formatted text content.",paraId:0,tocIndex:1},{value:"Markdown blocks can be added within pages or pop-ups.",paraId:1,tocIndex:2},{value:"Inline Markdown blocks can also be added within form blocks and details blocks.",paraId:2,tocIndex:2},{value:"For more information, refer to ",paraId:3,tocIndex:5},{value:"Handlebars template",paraId:4,tocIndex:5},{value:"Markdown also supports variables.",paraId:5,tocIndex:6},{value:"Inline Markdown within blocks also supports variables.",paraId:6,tocIndex:6},{value:`When using association data in variables, particularly for to-many relationships, different template engines support different syntaxes. Therefore, when working with array-type data variables, it's necessary to distinguish between the various syntaxes. + `,paraId:1},{value:"For a detailed guide, see ",paraId:2,tocIndex:4},{value:"Setting the Data Scope",paraId:3,tocIndex:4},{value:".",paraId:2,tocIndex:4},{value:"You can adjust the number of columns to fit different screen sizes, ensuring optimal display.",paraId:4,tocIndex:5},{value:"Example: Connecting data blocks and setting the appropriate data loading method.",paraId:5,tocIndex:6},{value:'The Orders table and Products table have a many-to-many relationship. The Orders Table block and Products Grid Card block can be linked to enable data filtering. In this setup, the grid block\u2019s data loading method is configured to load "After Filtering Data."',paraId:6,tocIndex:6},{value:'Example: Configure the Orders Grid Card block to display in "Full Height" mode for an expansive view.',paraId:7,tocIndex:7},{value:"For more details, refer to ",paraId:8,tocIndex:7},{value:"Block Height",paraId:9,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"Setting Sorting Rules",paraId:10,tocIndex:7},{value:"Saving as a Block Template",paraId:11,tocIndex:7},{value:"For a comprehensive guide to field configuration options for the Grid Card block, see ",paraId:12,tocIndex:10},{value:"Detail Fields",paraId:13,tocIndex:10},{value:".",paraId:12,tocIndex:10},{value:"Filter",paraId:14,tocIndex:12},{value:"Add",paraId:15,tocIndex:12},{value:"Delete",paraId:16,tocIndex:12},{value:"Refresh",paraId:17,tocIndex:12},{value:"Import",paraId:18,tocIndex:12},{value:"Export",paraId:19,tocIndex:12},{value:"Edit",paraId:20,tocIndex:13},{value:"Delete",paraId:21,tocIndex:13},{value:"Pop-up",paraId:22,tocIndex:13},{value:"Update Record",paraId:23,tocIndex:13},{value:"Custom Request",paraId:24,tocIndex:13},{value:"Trigger Workflow",paraId:25,tocIndex:13}],_1={},v1={title:"Markdown Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/other-blocks/markdown.md",lastUpdated:173254844e4,description:"Markdown blocks can be used without binding to a data source. They are defined using Markdown syntax and are suitable for displaying formatted text content."},m1=[{id:"markdown-block",depth:1,title:"Markdown Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"template-engine",depth:2,title:"Template engine"},{id:"string-template",depth:3,title:"string template"},{id:"handlebars",depth:3,title:"Handlebars"},{id:"using-variables",depth:2,title:"Using Variables"},{id:"qr-codes",depth:2,title:"QR Codes"}],h1=[{value:"Markdown blocks can be used without binding to a data source. They are defined using Markdown syntax and are suitable for displaying formatted text content.",paraId:0,tocIndex:1},{value:"Markdown blocks can be added within pages or pop-ups.",paraId:1,tocIndex:2},{value:"Inline Markdown blocks can also be added within form blocks and details blocks.",paraId:2,tocIndex:2},{value:"For more information, refer to ",paraId:3,tocIndex:5},{value:"Handlebars template",paraId:4,tocIndex:5},{value:"Markdown also supports variables.",paraId:5,tocIndex:6},{value:"Inline Markdown within blocks also supports variables.",paraId:6,tocIndex:6},{value:`When using association data in variables, particularly for to-many relationships, different template engines support different syntaxes. Therefore, when working with array-type data variables, it's necessary to distinguish between the various syntaxes. The following example uses the User/Role (one-to-many) variable`,paraId:7,tocIndex:6},{value:"The use of string template:",paraId:8,tocIndex:6},{value:"Automatically display an array in a string template with elements separated by commas.",paraId:9,tocIndex:6},{value:"The use of Handlebars\uFF1A",paraId:10,tocIndex:6},{value:"Iterate over an array using ",paraId:11,tocIndex:6},{value:"#each",paraId:11,tocIndex:6},{value:":",paraId:11,tocIndex:6},{value:"For more introductions to variables, check out the ",paraId:12,tocIndex:6},{value:"Edit UI / Variables",paraId:13,tocIndex:6},{value:" section.",paraId:12,tocIndex:6},{value:"Markdown also supports the configuration of QR codes, which can be used in combination with variables.",paraId:14,tocIndex:7},{value:` -`,paraId:15,tocIndex:7}],f1={},x1={title:"File Manager",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/file-manager.md",lastUpdated:1732240239e3,description:"The File Manager is a sophisticated relational field component designed to manage relationships where the target table is a file table. This powerful tool streamlines file handling within your database structure."},g1=[{id:"file-manager",depth:1,title:"File Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"}],b1=[{value:"The File Manager is a sophisticated relational field component designed to manage relationships where the target table is a file table. This powerful tool streamlines file handling within your database structure.",paraId:0,tocIndex:1},{value:"Field Component",paraId:1,tocIndex:2},{value:": Seamlessly switch between various relational field components, including dropdown selections, data selectors, and more, to suit your specific needs.",paraId:2,tocIndex:2},{value:"Quick Upload: Enabled by default, this feature allows for effortless file association immediately upon upload, enhancing workflow efficiency.",paraId:2,tocIndex:2},{value:"Select File: Also enabled by default, this option provides the flexibility to associate previously uploaded files, leveraging existing resources within your system.",paraId:2,tocIndex:2}],y1={},w1={title:"Date Calculation",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/date-calculation.md",lastUpdated:1732240239e3,description:"The Date Calculation node offers a set of nine powerful functions, enabling operations such as adding or subtracting time periods, formatting time strings, and converting duration units. Each function is designed with specific input and output value types, and can seamlessly integrate the results from other nodes as parameter variables. By chaining these functions through a calculation pipeline, you can achieve the desired output with precision."},k1=[{id:"date-calculation",depth:1,title:"Date Calculation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"input-value",depth:4,title:"Input Value"},{id:"input-value-type",depth:4,title:"Input Value Type"},{id:"calculation-steps",depth:4,title:"Calculation Steps"},{id:"calculation-functions",depth:3,title:"Calculation Functions"},{id:"add-a-range",depth:4,title:"Add a range"},{id:"subtract-a-range",depth:4,title:"Subtract a range"},{id:"get-difference-with-another-data-value",depth:4,title:"Get difference with another data value"},{id:"get-value-on-specific-unit-of-input-date",depth:4,title:"Get value on specific unit of input date"},{id:"set-to-time-of-unit-start",depth:4,title:"Set to time of unit start"},{id:"set-to-time-of-unit-end",depth:4,title:"Set to time of unit end"},{id:"is-leap-year",depth:4,title:"Is leap year"},{id:"format-to-string",depth:4,title:"Format to String"},{id:"convert-unit",depth:4,title:"Convert unit"},{id:"example",depth:3,title:"Example"}],S1=[{value:"The Date Calculation node offers a set of nine powerful functions, enabling operations such as adding or subtracting time periods, formatting time strings, and converting duration units. Each function is designed with specific input and output value types, and can seamlessly integrate the results from other nodes as parameter variables. By chaining these functions through a calculation pipeline, you can achieve the desired output with precision.",paraId:0},{value:'To add a "Date Calculation" node in the workflow configuration interface, simply click the plus (\u201C+\u201D) button within the process:',paraId:1,tocIndex:2},{value:"Input values can be either variables or date constants. Variables might include data that triggers the workflow or results from upstream nodes. Constants can be any selected date.",paraId:2,tocIndex:4},{value:"The input value type determines how the input will be processed and is categorized into two types:",paraId:3,tocIndex:5},{value:"Date Type:",paraId:4,tocIndex:5},{value:" This includes any input that can be converted into a date-time format, such as numeric timestamps or strings representing time.",paraId:4,tocIndex:5},{value:"Number Type:",paraId:4,tocIndex:5},{value:" The input value type influences the selection of time calculation steps, so it\u2019s crucial to choose the correct type.",paraId:4,tocIndex:5},{value:"Each calculation step consists of a specific function and its parameter configuration. The pipeline design allows the output of one function to feed directly into the next, enabling a sequence of time calculations and conversions.",paraId:5,tocIndex:6},{value:"The output type after each step is fixed, which in turn determines the functions available for the next step. If the types are compatible, the calculation continues; if not, the result of the current step becomes the final output of the node.",paraId:6,tocIndex:6},{value:"Accepted Input Value Type:",paraId:7,tocIndex:8},{value:" Date",paraId:7,tocIndex:8},{value:"Parameters:",paraId:7,tocIndex:8},{value:"The amount to add, which can be a numeric value or a variable from within the node.",paraId:8,tocIndex:8},{value:"The time unit (e.g., days, hours).",paraId:8,tocIndex:8},{value:"Output Value Type:",paraId:7,tocIndex:8},{value:" Date",paraId:7,tocIndex:8},{value:"Example:",paraId:7,tocIndex:8},{value:" If the input value is ",paraId:7,tocIndex:8},{value:"2024-7-15 00:00:00",paraId:7,tocIndex:8},{value:", the amount is ",paraId:7,tocIndex:8},{value:"1",paraId:7,tocIndex:8},{value:', and the unit is "days," the output will be ',paraId:7,tocIndex:8},{value:"2024-7-16 00:00:00",paraId:7,tocIndex:8},{value:".",paraId:7,tocIndex:8},{value:"Accepted Input Value Type:",paraId:9,tocIndex:9},{value:" Date",paraId:9,tocIndex:9},{value:"Parameters:",paraId:9,tocIndex:9},{value:"The amount to subtract, which can be a numeric value or a variable from within the node.",paraId:10,tocIndex:9},{value:"The time unit (e.g., days, hours).",paraId:10,tocIndex:9},{value:"Output Value Type:",paraId:9,tocIndex:9},{value:" Date",paraId:9,tocIndex:9},{value:"Example:",paraId:9,tocIndex:9},{value:" If the input value is ",paraId:9,tocIndex:9},{value:"2024-7-15 00:00:00",paraId:9,tocIndex:9},{value:", the amount is ",paraId:9,tocIndex:9},{value:"1",paraId:9,tocIndex:9},{value:', and the unit is "days," the output will be ',paraId:9,tocIndex:9},{value:"2024-7-14 00:00:00",paraId:9,tocIndex:9},{value:".",paraId:9,tocIndex:9},{value:"Accepted Input Value Type:",paraId:11,tocIndex:10},{value:" Date",paraId:11,tocIndex:10},{value:"Parameters:",paraId:11,tocIndex:10},{value:"The date for comparison, which can be a constant or a variable in the workflow context.",paraId:12,tocIndex:10},{value:"The time unit (e.g., days, hours).",paraId:12,tocIndex:10},{value:"Whether to take the absolute value.",paraId:12,tocIndex:10},{value:"Rounding options: retain decimals, round off, round up, or round down.",paraId:12,tocIndex:10},{value:"Output Value Type:",paraId:11,tocIndex:10},{value:" Numeric",paraId:11,tocIndex:10},{value:"Example:",paraId:11,tocIndex:10},{value:" If the input value is ",paraId:11,tocIndex:10},{value:"2024-7-15 00:00:00",paraId:11,tocIndex:10},{value:", and you compare it with ",paraId:11,tocIndex:10},{value:"2024-7-16 06:00:00",paraId:11,tocIndex:10},{value:', using "days" as the unit, without taking the absolute value and retaining decimals, the output will be ',paraId:11,tocIndex:10},{value:"-1.25",paraId:11,tocIndex:10},{value:".",paraId:11,tocIndex:10},{value:"If both absolute value and rounding are selected, the absolute value is applied first, followed by rounding.",paraId:13},{value:"Accepted Input Value Type:",paraId:14,tocIndex:11},{value:" Date",paraId:14,tocIndex:11},{value:"Parameters:",paraId:14,tocIndex:11},{value:"The time unit (e.g., days, hours).",paraId:15,tocIndex:11},{value:"Output Value Type:",paraId:14,tocIndex:11},{value:" Numeric",paraId:14,tocIndex:11},{value:"Example:",paraId:14,tocIndex:11},{value:" If the input value is ",paraId:14,tocIndex:11},{value:"2024-7-15 00:00:00",paraId:14,tocIndex:11},{value:' and the unit is "days," the output will be ',paraId:14,tocIndex:11},{value:"15",paraId:14,tocIndex:11},{value:".",paraId:14,tocIndex:11},{value:"Accepted Input Value Type:",paraId:16,tocIndex:12},{value:" Date",paraId:16,tocIndex:12},{value:"Parameters:",paraId:16,tocIndex:12},{value:"The time unit (e.g., days, hours).",paraId:17,tocIndex:12},{value:"Output Value Type:",paraId:16,tocIndex:12},{value:" Date",paraId:16,tocIndex:12},{value:"Example:",paraId:16,tocIndex:12},{value:" If the input value is ",paraId:16,tocIndex:12},{value:"2024-7-15 14:26:30",paraId:16,tocIndex:12},{value:' and the unit is "days," the output will be ',paraId:16,tocIndex:12},{value:"2024-7-15 00:00:00",paraId:16,tocIndex:12},{value:".",paraId:16,tocIndex:12},{value:"Accepted Input Value Type:",paraId:18,tocIndex:13},{value:" Date",paraId:18,tocIndex:13},{value:"Parameters:",paraId:18,tocIndex:13},{value:"The time unit (e.g., days, hours).",paraId:19,tocIndex:13},{value:"Output Value Type:",paraId:18,tocIndex:13},{value:" Date",paraId:18,tocIndex:13},{value:"Example:",paraId:18,tocIndex:13},{value:" If the input value is ",paraId:18,tocIndex:13},{value:"2024-7-15 14:26:30",paraId:18,tocIndex:13},{value:' and the unit is "days," the output will be ',paraId:18,tocIndex:13},{value:"2024-7-15 23:59:59",paraId:18,tocIndex:13},{value:".",paraId:18,tocIndex:13},{value:"Accepted Input Value Type:",paraId:20,tocIndex:14},{value:" Date",paraId:20,tocIndex:14},{value:"Parameters:",paraId:20,tocIndex:14},{value:" None",paraId:20,tocIndex:14},{value:"Output Value Type:",paraId:20,tocIndex:14},{value:" Boolean",paraId:20,tocIndex:14},{value:"Example:",paraId:20,tocIndex:14},{value:" If the input value is ",paraId:20,tocIndex:14},{value:"2024-7-15 14:26:30",paraId:20,tocIndex:14},{value:", the output will be ",paraId:20,tocIndex:14},{value:"true",paraId:20,tocIndex:14},{value:".",paraId:20,tocIndex:14},{value:"Accepted Input Value Type:",paraId:21,tocIndex:15},{value:" Date",paraId:21,tocIndex:15},{value:"Parameters:",paraId:21,tocIndex:15},{value:"The format, as specified in ",paraId:22,tocIndex:15},{value:"Day.js: Format",paraId:22,tocIndex:15},{value:".",paraId:22,tocIndex:15},{value:"Output Value Type:",paraId:21,tocIndex:15},{value:" String",paraId:21,tocIndex:15},{value:"Example:",paraId:21,tocIndex:15},{value:" If the input value is ",paraId:21,tocIndex:15},{value:"2024-7-15 14:26:30",paraId:21,tocIndex:15},{value:" and the format is ",paraId:21,tocIndex:15},{value:"the time is YYYY/MM/DD HH:mm:ss",paraId:21,tocIndex:15},{value:", the output will be ",paraId:21,tocIndex:15},{value:"the time is 2024/07/15 14:26:30",paraId:21,tocIndex:15},{value:".",paraId:21,tocIndex:15},{value:"Accepted Input Value Type:",paraId:23,tocIndex:16},{value:" Numeric",paraId:23,tocIndex:16},{value:"Parameters:",paraId:23,tocIndex:16},{value:"The original time unit.",paraId:24,tocIndex:16},{value:"The target time unit.",paraId:24,tocIndex:16},{value:"Rounding options: retain decimals, round off, round up, or round down.",paraId:24,tocIndex:16},{value:"Output Value Type:",paraId:23,tocIndex:16},{value:" Numeric",paraId:23,tocIndex:16},{value:"Example:",paraId:23,tocIndex:16},{value:" If the input value is ",paraId:23,tocIndex:16},{value:"2",paraId:23,tocIndex:16},{value:', the original unit is "weeks," the target unit is "days," and no decimals are retained, the output will be ',paraId:23,tocIndex:16},{value:"14",paraId:23,tocIndex:16},{value:".",paraId:23,tocIndex:16},{value:"Imagine a promotional activity where you want to automatically set an end time for the promotion when a product is created. This end time would be the last day of the following week at 23:59:59. To achieve this, you can create two time functions and link them in a pipeline:",paraId:25,tocIndex:17},{value:"Calculate the date for the following week.",paraId:26,tocIndex:17},{value:"Adjust the date to the last day of that week at 23:59:59.",paraId:26,tocIndex:17},{value:"By doing this, you'll generate the desired time value, which can then be passed to the next node, such as a data table modification node, to set the promotion end time in the database.",paraId:27,tocIndex:17}],U1={},P1={title:"Response Message",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/response-message.md",lastUpdated:1732240239e3,description:"The Response Message node is designed to deliver custom messages to the client who initiates an operation within certain types of workflows."},T1=[{id:"response-message",depth:1,title:"Response Message"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"process-configuration",depth:3,title:"Process Configuration"},{id:"use-cases",depth:3,title:"Use Cases"},{id:"pre-action-event-workflow",depth:4,title:'"Pre-Action Event" Workflow'},{id:"post-action-event-workflow",depth:4,title:'"Post-Action Event" Workflow'}],C1=[{value:"The Response Message node is designed to deliver custom messages to the client who initiates an operation within certain types of workflows.",paraId:0},{value:'This node currently can be used in the workflow types "Pre-Action Event" and "Custom Action Event (synchronous mode)".',paraId:1},{value:'Within the supported workflow types, you can insert a "Response Message" node at any point in the workflow. To do this, click the plus ("+") button within the workflow to add the "Response Message" node:',paraId:2,tocIndex:2},{value:"Throughout the entire request process, response messages are accumulated in an array. When the process reaches a Response Message node, the new message content is appended to this array. Upon the server sending the response content, all messages within the array are delivered together to the client.",paraId:3,tocIndex:2},{value:"The message content is structured as a template string, allowing the insertion of variables. You can customize the template's content in the node configuration as needed:",paraId:4,tocIndex:3},{value:'As the process executes and reaches this node, the template is parsed to generate the final message content. In the example configuration above, the variable "Scope variables / Loop all products / Loop target / Product / Title" will be replaced with specific values during the actual workflow, such as:',paraId:5,tocIndex:3},{value:`Insufficient stock for product "iPhone 14 Pro" -`,paraId:6,tocIndex:3},{value:"The status prompt of the response message is determined by the success or failure of the process execution. If any node in the process fails to execute, the entire process is considered a failure. In this case, the message content will be returned to the client with a failure status as a notification.",paraId:7,tocIndex:4},{value:'If you need to actively define a failure status within the process, you can use the "End Node" and configure it as a failure. When the process reaches this node, it will exit with a failure status, and the message will be returned to the client with a failure status.',paraId:8,tocIndex:4},{value:"If the entire process completes without any failure and reaches the end successfully, the message content will be returned to the client with a success status.",paraId:9,tocIndex:4},{value:"If multiple response message nodes are defined in the process, the content of the executed nodes will be appended to an array. When the process is completed, all message content will be returned to the client together as a notification.",paraId:10},{value:'In a "Pre-Action Event" workflow, a response message can be used to provide feedback to the client upon completion of the process. For further details, refer to ',paraId:11,tocIndex:6},{value:"Request Interception",paraId:12,tocIndex:6},{value:".",paraId:11,tocIndex:6},{value:`In synchronous mode within a "Post-Action Event" workflow, the response message is sent to the client after the process is completed. Unlike the "Pre-Action Event" workflow, where the result might vary, the message displayed here is always a "success" notification. This consistency occurs because the triggering operation has already been successfully executed, and the success of the linked workflow does not impact the original operation's result.`,paraId:13,tocIndex:7}],A1={},q1={title:"Custom action event",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/custom-action.md",lastUpdated:1732240239e3,description:'When setting up a workflow, begin by selecting "Custom action event":'},E1=[{id:"custom-action-event",depth:1,title:"Custom action event"},{id:"creating-a-workflow",depth:2,title:"Creating a Workflow"},{id:"trigger-configuration",depth:2,title:"Trigger Configuration"},{id:"data-table",depth:3,title:"Data Table"},{id:"related-data-to-utilize",depth:3,title:"Related Data to Utilize"},{id:"related-content",depth:2,title:"Related content"}],D1=[{value:'When setting up a workflow, begin by selecting "Custom action event":',paraId:0,tocIndex:1},{value:"Since custom operation events are tied to specific data rows, you'll need to first choose the data table that will be associated with your data model:",paraId:1,tocIndex:3},{value:"If your workflow requires the use of related data from the triggered data row, you can select the necessary deep relationship fields here:",paraId:2,tocIndex:4},{value:"These fields will be automatically preloaded into the workflow's context once the event is triggered, making them available for use within the workflow.",paraId:3,tocIndex:4},{value:"Except for trigger configuration, there are also some related contents about custom action trigger that can be further understood through the ",paraId:4,tocIndex:5},{value:"plugin documentation",paraId:5,tocIndex:5},{value:".",paraId:4,tocIndex:5}],O1={},R1={title:"Example",toc:"menu",filename:"docs/en-US/handbook/workflow-action-trigger/example.md",lastUpdated:1732240239e3,description:"Output: Final Polished Translation"},M1=[{id:"example",depth:1,title:"Example"}],L1=[{value:"Output:",paraId:0,tocIndex:0},{value:" Final Polished Translation",paraId:0,tocIndex:0},{value:"Here, we will walk through the process by adding a new operation.",paraId:1,tocIndex:0},{value:'Imagine a scenario involving a "Expenses applications." After an employee submits an expense reimbursement, the system needs to perform an automatic review of the amount and, if necessary, trigger a manual review for amounts exceeding a set limit. Only requests that pass these reviews will be approved and subsequently forwarded to the finance department for processing.',paraId:2,tocIndex:0},{value:'To start, we can create a "Expenses" collection with the following fields:',paraId:3,tocIndex:0},{value:"Project Name:",paraId:4,tocIndex:0},{value:" Single-line Text",paraId:4,tocIndex:0},{value:"Applicant:",paraId:4,tocIndex:0},{value:" Many-to-One (User)",paraId:4,tocIndex:0},{value:"Amount:",paraId:4,tocIndex:0},{value:" Numeric",paraId:4,tocIndex:0},{value:"Status:",paraId:4,tocIndex:0},{value:' Single Choice (Options: "Approved", "Processed")',paraId:4,tocIndex:0},{value:`Next, we'll create a workflow categorized as a "Post-action Event" and configure the trigger's data table model to point to the "Expenses" collection:`,paraId:5,tocIndex:0},{value:"Once the workflow is enabled, we can proceed with configuring the specific processing nodes.",paraId:6,tocIndex:0},{value:`Then, on the user interface, create a table block for the "Expenses" data table and add an "Add" button to the toolbar, ensuring the corresponding form fields are properly configured. In the settings for the form's "Submit" button, open the "Bind Workflow" configuration dialog, select the entire form's data as the context, and link it to the workflow we previously created:`,paraId:7,tocIndex:0},{value:"Once the form configuration is complete, return to the workflow to arrange the logic. For instance, if the reimbursement amount exceeds 500, the system will require an administrator's manual review; otherwise, it will automatically approve the request. Upon approval, a expenses record is generated and forwarded to finance for further processing (details omitted).",paraId:8,tocIndex:0},{value:"Setting aside the subsequent financial processing, this completes the configuration of the expenses application process. When an employee fills out and submits a expenses request, the system triggers the corresponding workflow. If the amount is under 500, a record is automatically created and awaits further action by finance. If the amount exceeds this threshold, the request undergoes a supervisor's review. Upon approval, the record is created and handed over to finance for processing.",paraId:9,tocIndex:0},{value:'This example workflow can also be applied to a standard "Submit" button, depending on whether the business scenario requires a record to be created before moving on to subsequent steps.',paraId:10,tocIndex:0}],N1={},z1={title:"Trigger Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-action-trigger/trigger.md",lastUpdated:1732240239e3,description:'To create a workflow, begin by selecting "Post-action Event" as the type:'},F1=[{id:"trigger-configuration",depth:1,title:"Trigger Configuration"},{id:"creating-a-workflow",depth:4,title:"Creating a Workflow"},{id:"execution-mode",depth:4,title:"Execution Mode"},{id:"configuring-the-data-table",depth:4,title:"Configuring the Data Table"},{id:"selecting-trigger-mode",depth:4,title:"Selecting Trigger Mode"},{id:"choosing-action-type",depth:4,title:"Choosing Action Type"},{id:"preloading-related-data",depth:4,title:"Preloading Related Data"}],B1=[{value:'To create a workflow, begin by selecting "Post-action Event" as the type:',paraId:0,tocIndex:1},{value:'When setting up post-action events, you have the option to choose between "Synchronous" and "Asynchronous" execution modes:',paraId:1,tocIndex:2},{value:"Use the synchronous mode if the process needs to execute and provide feedback immediately after a user operation. For other scenarios, the default asynchronous mode is generally suitable. In asynchronous mode, the user operation completes instantly, and the workflow continues to execute in the background as part of a queued process.",paraId:2,tocIndex:2},{value:"To begin configuration, navigate to the workflow canvas and click on the trigger to open the settings window. The first step is to select the data table that you wish to bind:",paraId:3,tocIndex:3},{value:"Next, determine the trigger mode by choosing between Local Mode and Global Mode:",paraId:4,tocIndex:4},{value:"Local Mode",paraId:5,tocIndex:4},{value:": This mode triggers the workflow only on the action buttons that have been explicitly bound to it. If the workflow is not bound, clicking the button will not initiate the workflow. This mode is ideal when you want to tailor the workflow to specific forms or actions.",paraId:5,tocIndex:4},{value:"Global Mode",paraId:5,tocIndex:4},{value:": In this mode, the workflow is triggered by any action button configured within the data table, regardless of the form's origin, and does not require specific workflow binding.",paraId:5,tocIndex:4},{value:"In Local Mode, you can currently bind the following action buttons:",paraId:6,tocIndex:4},{value:'The "Submit" and "Save" buttons in new forms.',paraId:7,tocIndex:4},{value:'The "Submit" and "Save" buttons in update forms.',paraId:7,tocIndex:4},{value:'The "Update Data" button within data rows (such as in tables, lists, or kanban views).',paraId:7,tocIndex:4},{value:'When using Global Mode, you also need to specify the action type. The available options are "Create record action" and "Update record action." The workflow is triggered upon the successful completion of either operation.',paraId:8,tocIndex:5},{value:"If subsequent workflow steps require the use of related data from the trigger, you can select the relationship fields to preload:",paraId:9,tocIndex:6},{value:"These preloaded related data will then be readily accessible throughout the workflow after it is triggered.",paraId:10,tocIndex:6}],j1={},H1={title:"Date Calculation",toc:"menu",filename:"docs/en-US/handbook/workflow-date-calculation/index.md",lastUpdated:1732240239e3,description:"The Date Calculation node offers a set of nine powerful functions, enabling operations such as adding or subtracting time periods, formatting time strings, and converting duration units. Each function is designed with specific input and output value types, and can seamlessly integrate the results from other nodes as parameter variables. By chaining these functions through a calculation pipeline, you can achieve the desired output with precision."},W1=[{id:"date-calculation",depth:1,title:"Date Calculation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"input-value",depth:4,title:"Input Value"},{id:"input-value-type",depth:4,title:"Input Value Type"},{id:"calculation-steps",depth:4,title:"Calculation Steps"},{id:"calculation-functions",depth:3,title:"Calculation Functions"},{id:"add-a-range",depth:4,title:"Add a range"},{id:"subtract-a-range",depth:4,title:"Subtract a range"},{id:"get-difference-with-another-data-value",depth:4,title:"Get difference with another data value"},{id:"get-value-on-specific-unit-of-input-date",depth:4,title:"Get value on specific unit of input date"},{id:"set-to-time-of-unit-start",depth:4,title:"Set to time of unit start"},{id:"set-to-time-of-unit-end",depth:4,title:"Set to time of unit end"},{id:"is-leap-year",depth:4,title:"Is leap year"},{id:"format-to-string",depth:4,title:"Format to String"},{id:"convert-unit",depth:4,title:"Convert unit"},{id:"example",depth:3,title:"Example"}],$1=[{value:"The Date Calculation node offers a set of nine powerful functions, enabling operations such as adding or subtracting time periods, formatting time strings, and converting duration units. Each function is designed with specific input and output value types, and can seamlessly integrate the results from other nodes as parameter variables. By chaining these functions through a calculation pipeline, you can achieve the desired output with precision.",paraId:0},{value:'To add a "Date Calculation" node in the workflow configuration interface, simply click the plus (\u201C+\u201D) button within the process:',paraId:1,tocIndex:2},{value:"Input values can be either variables or date constants. Variables might include data that triggers the workflow or results from upstream nodes. Constants can be any selected date.",paraId:2,tocIndex:4},{value:"The input value type determines how the input will be processed and is categorized into two types:",paraId:3,tocIndex:5},{value:"Date Type:",paraId:4,tocIndex:5},{value:" This includes any input that can be converted into a date-time format, such as numeric timestamps or strings representing time.",paraId:4,tocIndex:5},{value:"Number Type:",paraId:4,tocIndex:5},{value:" The input value type influences the selection of time calculation steps, so it\u2019s crucial to choose the correct type.",paraId:4,tocIndex:5},{value:"Each calculation step consists of a specific function and its parameter configuration. The pipeline design allows the output of one function to feed directly into the next, enabling a sequence of time calculations and conversions.",paraId:5,tocIndex:6},{value:"The output type after each step is fixed, which in turn determines the functions available for the next step. If the types are compatible, the calculation continues; if not, the result of the current step becomes the final output of the node.",paraId:6,tocIndex:6},{value:"Accepted Input Value Type:",paraId:7,tocIndex:8},{value:" Date",paraId:7,tocIndex:8},{value:"Parameters:",paraId:7,tocIndex:8},{value:"The amount to add, which can be a numeric value or a variable from within the node.",paraId:8,tocIndex:8},{value:"The time unit (e.g., days, hours).",paraId:8,tocIndex:8},{value:"Output Value Type:",paraId:7,tocIndex:8},{value:" Date",paraId:7,tocIndex:8},{value:"Example:",paraId:7,tocIndex:8},{value:" If the input value is ",paraId:7,tocIndex:8},{value:"2024-7-15 00:00:00",paraId:7,tocIndex:8},{value:", the amount is ",paraId:7,tocIndex:8},{value:"1",paraId:7,tocIndex:8},{value:', and the unit is "days," the output will be ',paraId:7,tocIndex:8},{value:"2024-7-16 00:00:00",paraId:7,tocIndex:8},{value:".",paraId:7,tocIndex:8},{value:"Accepted Input Value Type:",paraId:9,tocIndex:9},{value:" Date",paraId:9,tocIndex:9},{value:"Parameters:",paraId:9,tocIndex:9},{value:"The amount to subtract, which can be a numeric value or a variable from within the node.",paraId:10,tocIndex:9},{value:"The time unit (e.g., days, hours).",paraId:10,tocIndex:9},{value:"Output Value Type:",paraId:9,tocIndex:9},{value:" Date",paraId:9,tocIndex:9},{value:"Example:",paraId:9,tocIndex:9},{value:" If the input value is ",paraId:9,tocIndex:9},{value:"2024-7-15 00:00:00",paraId:9,tocIndex:9},{value:", the amount is ",paraId:9,tocIndex:9},{value:"1",paraId:9,tocIndex:9},{value:', and the unit is "days," the output will be ',paraId:9,tocIndex:9},{value:"2024-7-14 00:00:00",paraId:9,tocIndex:9},{value:".",paraId:9,tocIndex:9},{value:"Accepted Input Value Type:",paraId:11,tocIndex:10},{value:" Date",paraId:11,tocIndex:10},{value:"Parameters:",paraId:11,tocIndex:10},{value:"The date for comparison, which can be a constant or a variable in the workflow context.",paraId:12,tocIndex:10},{value:"The time unit (e.g., days, hours).",paraId:12,tocIndex:10},{value:"Whether to take the absolute value.",paraId:12,tocIndex:10},{value:"Rounding options: retain decimals, round off, round up, or round down.",paraId:12,tocIndex:10},{value:"Output Value Type:",paraId:11,tocIndex:10},{value:" Numeric",paraId:11,tocIndex:10},{value:"Example:",paraId:11,tocIndex:10},{value:" If the input value is ",paraId:11,tocIndex:10},{value:"2024-7-15 00:00:00",paraId:11,tocIndex:10},{value:", and you compare it with ",paraId:11,tocIndex:10},{value:"2024-7-16 06:00:00",paraId:11,tocIndex:10},{value:', using "days" as the unit, without taking the absolute value and retaining decimals, the output will be ',paraId:11,tocIndex:10},{value:"-1.25",paraId:11,tocIndex:10},{value:".",paraId:11,tocIndex:10},{value:"If both absolute value and rounding are selected, the absolute value is applied first, followed by rounding.",paraId:13},{value:"Accepted Input Value Type:",paraId:14,tocIndex:11},{value:" Date",paraId:14,tocIndex:11},{value:"Parameters:",paraId:14,tocIndex:11},{value:"The time unit (e.g., days, hours).",paraId:15,tocIndex:11},{value:"Output Value Type:",paraId:14,tocIndex:11},{value:" Numeric",paraId:14,tocIndex:11},{value:"Example:",paraId:14,tocIndex:11},{value:" If the input value is ",paraId:14,tocIndex:11},{value:"2024-7-15 00:00:00",paraId:14,tocIndex:11},{value:' and the unit is "days," the output will be ',paraId:14,tocIndex:11},{value:"15",paraId:14,tocIndex:11},{value:".",paraId:14,tocIndex:11},{value:"Accepted Input Value Type:",paraId:16,tocIndex:12},{value:" Date",paraId:16,tocIndex:12},{value:"Parameters:",paraId:16,tocIndex:12},{value:"The time unit (e.g., days, hours).",paraId:17,tocIndex:12},{value:"Output Value Type:",paraId:16,tocIndex:12},{value:" Date",paraId:16,tocIndex:12},{value:"Example:",paraId:16,tocIndex:12},{value:" If the input value is ",paraId:16,tocIndex:12},{value:"2024-7-15 14:26:30",paraId:16,tocIndex:12},{value:' and the unit is "days," the output will be ',paraId:16,tocIndex:12},{value:"2024-7-15 00:00:00",paraId:16,tocIndex:12},{value:".",paraId:16,tocIndex:12},{value:"Accepted Input Value Type:",paraId:18,tocIndex:13},{value:" Date",paraId:18,tocIndex:13},{value:"Parameters:",paraId:18,tocIndex:13},{value:"The time unit (e.g., days, hours).",paraId:19,tocIndex:13},{value:"Output Value Type:",paraId:18,tocIndex:13},{value:" Date",paraId:18,tocIndex:13},{value:"Example:",paraId:18,tocIndex:13},{value:" If the input value is ",paraId:18,tocIndex:13},{value:"2024-7-15 14:26:30",paraId:18,tocIndex:13},{value:' and the unit is "days," the output will be ',paraId:18,tocIndex:13},{value:"2024-7-15 23:59:59",paraId:18,tocIndex:13},{value:".",paraId:18,tocIndex:13},{value:"Accepted Input Value Type:",paraId:20,tocIndex:14},{value:" Date",paraId:20,tocIndex:14},{value:"Parameters:",paraId:20,tocIndex:14},{value:" None",paraId:20,tocIndex:14},{value:"Output Value Type:",paraId:20,tocIndex:14},{value:" Boolean",paraId:20,tocIndex:14},{value:"Example:",paraId:20,tocIndex:14},{value:" If the input value is ",paraId:20,tocIndex:14},{value:"2024-7-15 14:26:30",paraId:20,tocIndex:14},{value:", the output will be ",paraId:20,tocIndex:14},{value:"true",paraId:20,tocIndex:14},{value:".",paraId:20,tocIndex:14},{value:"Accepted Input Value Type:",paraId:21,tocIndex:15},{value:" Date",paraId:21,tocIndex:15},{value:"Parameters:",paraId:21,tocIndex:15},{value:"The format, as specified in ",paraId:22,tocIndex:15},{value:"Day.js: Format",paraId:22,tocIndex:15},{value:".",paraId:22,tocIndex:15},{value:"Output Value Type:",paraId:21,tocIndex:15},{value:" String",paraId:21,tocIndex:15},{value:"Example:",paraId:21,tocIndex:15},{value:" If the input value is ",paraId:21,tocIndex:15},{value:"2024-7-15 14:26:30",paraId:21,tocIndex:15},{value:" and the format is ",paraId:21,tocIndex:15},{value:"the time is YYYY/MM/DD HH:mm:ss",paraId:21,tocIndex:15},{value:", the output will be ",paraId:21,tocIndex:15},{value:"the time is 2024/07/15 14:26:30",paraId:21,tocIndex:15},{value:".",paraId:21,tocIndex:15},{value:"Accepted Input Value Type:",paraId:23,tocIndex:16},{value:" Numeric",paraId:23,tocIndex:16},{value:"Parameters:",paraId:23,tocIndex:16},{value:"The original time unit.",paraId:24,tocIndex:16},{value:"The target time unit.",paraId:24,tocIndex:16},{value:"Rounding options: retain decimals, round off, round up, or round down.",paraId:24,tocIndex:16},{value:"Output Value Type:",paraId:23,tocIndex:16},{value:" Numeric",paraId:23,tocIndex:16},{value:"Example:",paraId:23,tocIndex:16},{value:" If the input value is ",paraId:23,tocIndex:16},{value:"2",paraId:23,tocIndex:16},{value:', the original unit is "weeks," the target unit is "days," and no decimals are retained, the output will be ',paraId:23,tocIndex:16},{value:"14",paraId:23,tocIndex:16},{value:".",paraId:23,tocIndex:16},{value:"Imagine a promotional activity where you want to automatically set an end time for the promotion when a product is created. This end time would be the last day of the following week at 23:59:59. To achieve this, you can create two time functions and link them in a pipeline:",paraId:25,tocIndex:17},{value:"Calculate the date for the following week.",paraId:26,tocIndex:17},{value:"Adjust the date to the last day of that week at 23:59:59.",paraId:26,tocIndex:17},{value:"By doing this, you'll generate the desired time value, which can then be passed to the next node, such as a data table modification node, to set the promotion end time in the database.",paraId:27,tocIndex:17}],G1={},V1={title:"Response Message",toc:"menu",filename:"docs/en-US/handbook/workflow-response-message/index.md",lastUpdated:1732240239e3,description:"The Response Message node is designed to deliver custom messages to the client who initiates an operation within certain types of workflows."},K1=[{id:"response-message",depth:1,title:"Response Message"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"process-configuration",depth:3,title:"Process Configuration"},{id:"use-cases",depth:3,title:"Use Cases"},{id:"pre-action-event-workflow",depth:4,title:'"Pre-Action Event" Workflow'},{id:"post-action-event-workflow",depth:4,title:'"Post-Action Event" Workflow'}],Z1=[{value:"The Response Message node is designed to deliver custom messages to the client who initiates an operation within certain types of workflows.",paraId:0},{value:'This node currently can be used in the workflow types "Pre-Action Event" and "Custom Action Event (synchronous mode)".',paraId:1},{value:'Within the supported workflow types, you can insert a "Response Message" node at any point in the workflow. To do this, click the plus ("+") button within the workflow to add the "Response Message" node:',paraId:2,tocIndex:2},{value:"Throughout the entire request process, response messages are accumulated in an array. When the process reaches a Response Message node, the new message content is appended to this array. Upon the server sending the response content, all messages within the array are delivered together to the client.",paraId:3,tocIndex:2},{value:"The message content is structured as a template string, allowing the insertion of variables. You can customize the template's content in the node configuration as needed:",paraId:4,tocIndex:3},{value:'As the process executes and reaches this node, the template is parsed to generate the final message content. In the example configuration above, the variable "Scope variables / Loop all products / Loop target / Product / Title" will be replaced with specific values during the actual workflow, such as:',paraId:5,tocIndex:3},{value:`Insufficient stock for product "iPhone 14 Pro" -`,paraId:6,tocIndex:3},{value:"The status prompt of the response message is determined by the success or failure of the process execution. If any node in the process fails to execute, the entire process is considered a failure. In this case, the message content will be returned to the client with a failure status as a notification.",paraId:7,tocIndex:4},{value:'If you need to actively define a failure status within the process, you can use the "End Node" and configure it as a failure. When the process reaches this node, it will exit with a failure status, and the message will be returned to the client with a failure status.',paraId:8,tocIndex:4},{value:"If the entire process completes without any failure and reaches the end successfully, the message content will be returned to the client with a success status.",paraId:9,tocIndex:4},{value:"If multiple response message nodes are defined in the process, the content of the executed nodes will be appended to an array. When the process is completed, all message content will be returned to the client together as a notification.",paraId:10},{value:'In a "Pre-Action Event" workflow, a response message can be used to provide feedback to the client upon completion of the process. For further details, refer to ',paraId:11,tocIndex:6},{value:"Request Interception",paraId:12,tocIndex:6},{value:".",paraId:11,tocIndex:6},{value:`In synchronous mode within a "Post-Action Event" workflow, the response message is sent to the client after the process is completed. Unlike the "Pre-Action Event" workflow, where the result might vary, the message displayed here is always a "success" notification. This consistency occurs because the triggering operation has already been successfully executed, and the success of the linked workflow does not impact the original operation's result.`,paraId:13,tocIndex:7}],Y1={},Q1={title:"Registration and Usage of Component and Scope",toc:"menu",filename:"docs/en-US/plugin-samples/component-and-scope/index.md",lastUpdated:1732240239e3,description:"There are two main reasons why Components and Scopes need to be registered:"},J1=[{id:"registration-and-usage-of-component-and-scope",depth:1,title:"Registration and Usage of Component and Scope"},{id:"scenario-explanation",depth:2,title:"Scenario Explanation"},{id:"reason-1-ui-schema-needs-to-be-stored-on-the-server",depth:3,title:"Reason 1: UI Schema Needs to Be Stored on the Server"},{id:"reason-2-extensibility-needs",depth:3,title:"Reason 2: Extensibility Needs"},{id:"option-1-replace-the-route",depth:4,title:"Option 1: Replace the Route"},{id:"option-2-directly-replace-the-component",depth:4,title:"Option 2: Directly Replace the Component"},{id:"global-registration-and-local-registration",depth:2,title:"Global Registration and Local Registration"},{id:"global-registration",depth:3,title:"Global Registration"},{id:"local-registration",depth:3,title:"Local Registration"}],X1=[{value:"There are two main reasons why Components and Scopes need to be registered:",paraId:0,tocIndex:1},{value:"NocoBase\u2019s front-end pages are rendered based on the ",paraId:1,tocIndex:2},{value:"UI Schema",paraId:2,tocIndex:2},{value:", which must be stored in the database. Since the UI Schema cannot have reference-type properties, we can only store the values of properties like ",paraId:1,tocIndex:2},{value:"x-component",paraId:1,tocIndex:2},{value:", ",paraId:1,tocIndex:2},{value:"x-decorator",paraId:1,tocIndex:2},{value:", ",paraId:1,tocIndex:2},{value:"x-use-component-props",paraId:1,tocIndex:2},{value:", and ",paraId:1,tocIndex:2},{value:"x-use-decorator-props",paraId:1,tocIndex:2},{value:" as strings. Then, we register the corresponding Component and Scope in NocoBase so that during page rendering, the system can match the stored strings to the appropriate Component and Scope.",paraId:1,tocIndex:2},{value:"In contrast, for UI Schemas that do not need to be stored in the database, we can directly use reference-type properties. For example, in the locally developed ",paraId:3,tocIndex:2},{value:"plugin configuration page",paraId:4,tocIndex:2},{value:", properties like ",paraId:3,tocIndex:2},{value:"x-component",paraId:3,tocIndex:2},{value:" and ",paraId:3,tocIndex:2},{value:"x-use-component-props",paraId:3,tocIndex:2},{value:" can use reference-type values directly.",paraId:3,tocIndex:2},{value:`const schema: ISchema = { +`,paraId:15,tocIndex:7}],f1={},x1={title:"File Manager",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/file-manager.md",lastUpdated:173254844e4,description:"The File Manager is a sophisticated relational field component designed to manage relationships where the target table is a file table. This powerful tool streamlines file handling within your database structure."},g1=[{id:"file-manager",depth:1,title:"File Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"}],b1=[{value:"The File Manager is a sophisticated relational field component designed to manage relationships where the target table is a file table. This powerful tool streamlines file handling within your database structure.",paraId:0,tocIndex:1},{value:"Field Component",paraId:1,tocIndex:2},{value:": Seamlessly switch between various relational field components, including dropdown selections, data selectors, and more, to suit your specific needs.",paraId:2,tocIndex:2},{value:"Quick Upload: Enabled by default, this feature allows for effortless file association immediately upon upload, enhancing workflow efficiency.",paraId:2,tocIndex:2},{value:"Select File: Also enabled by default, this option provides the flexibility to associate previously uploaded files, leveraging existing resources within your system.",paraId:2,tocIndex:2}],y1={},w1={title:"Date Calculation",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/date-calculation.md",lastUpdated:173254844e4,description:"The Date Calculation node offers a set of nine powerful functions, enabling operations such as adding or subtracting time periods, formatting time strings, and converting duration units. Each function is designed with specific input and output value types, and can seamlessly integrate the results from other nodes as parameter variables. By chaining these functions through a calculation pipeline, you can achieve the desired output with precision."},k1=[{id:"date-calculation",depth:1,title:"Date Calculation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"input-value",depth:4,title:"Input Value"},{id:"input-value-type",depth:4,title:"Input Value Type"},{id:"calculation-steps",depth:4,title:"Calculation Steps"},{id:"calculation-functions",depth:3,title:"Calculation Functions"},{id:"add-a-range",depth:4,title:"Add a range"},{id:"subtract-a-range",depth:4,title:"Subtract a range"},{id:"get-difference-with-another-data-value",depth:4,title:"Get difference with another data value"},{id:"get-value-on-specific-unit-of-input-date",depth:4,title:"Get value on specific unit of input date"},{id:"set-to-time-of-unit-start",depth:4,title:"Set to time of unit start"},{id:"set-to-time-of-unit-end",depth:4,title:"Set to time of unit end"},{id:"is-leap-year",depth:4,title:"Is leap year"},{id:"format-to-string",depth:4,title:"Format to String"},{id:"convert-unit",depth:4,title:"Convert unit"},{id:"example",depth:3,title:"Example"}],S1=[{value:"The Date Calculation node offers a set of nine powerful functions, enabling operations such as adding or subtracting time periods, formatting time strings, and converting duration units. Each function is designed with specific input and output value types, and can seamlessly integrate the results from other nodes as parameter variables. By chaining these functions through a calculation pipeline, you can achieve the desired output with precision.",paraId:0},{value:'To add a "Date Calculation" node in the workflow configuration interface, simply click the plus (\u201C+\u201D) button within the process:',paraId:1,tocIndex:2},{value:"Input values can be either variables or date constants. Variables might include data that triggers the workflow or results from upstream nodes. Constants can be any selected date.",paraId:2,tocIndex:4},{value:"The input value type determines how the input will be processed and is categorized into two types:",paraId:3,tocIndex:5},{value:"Date Type:",paraId:4,tocIndex:5},{value:" This includes any input that can be converted into a date-time format, such as numeric timestamps or strings representing time.",paraId:4,tocIndex:5},{value:"Number Type:",paraId:4,tocIndex:5},{value:" The input value type influences the selection of time calculation steps, so it\u2019s crucial to choose the correct type.",paraId:4,tocIndex:5},{value:"Each calculation step consists of a specific function and its parameter configuration. The pipeline design allows the output of one function to feed directly into the next, enabling a sequence of time calculations and conversions.",paraId:5,tocIndex:6},{value:"The output type after each step is fixed, which in turn determines the functions available for the next step. If the types are compatible, the calculation continues; if not, the result of the current step becomes the final output of the node.",paraId:6,tocIndex:6},{value:"Accepted Input Value Type:",paraId:7,tocIndex:8},{value:" Date",paraId:7,tocIndex:8},{value:"Parameters:",paraId:7,tocIndex:8},{value:"The amount to add, which can be a numeric value or a variable from within the node.",paraId:8,tocIndex:8},{value:"The time unit (e.g., days, hours).",paraId:8,tocIndex:8},{value:"Output Value Type:",paraId:7,tocIndex:8},{value:" Date",paraId:7,tocIndex:8},{value:"Example:",paraId:7,tocIndex:8},{value:" If the input value is ",paraId:7,tocIndex:8},{value:"2024-7-15 00:00:00",paraId:7,tocIndex:8},{value:", the amount is ",paraId:7,tocIndex:8},{value:"1",paraId:7,tocIndex:8},{value:', and the unit is "days," the output will be ',paraId:7,tocIndex:8},{value:"2024-7-16 00:00:00",paraId:7,tocIndex:8},{value:".",paraId:7,tocIndex:8},{value:"Accepted Input Value Type:",paraId:9,tocIndex:9},{value:" Date",paraId:9,tocIndex:9},{value:"Parameters:",paraId:9,tocIndex:9},{value:"The amount to subtract, which can be a numeric value or a variable from within the node.",paraId:10,tocIndex:9},{value:"The time unit (e.g., days, hours).",paraId:10,tocIndex:9},{value:"Output Value Type:",paraId:9,tocIndex:9},{value:" Date",paraId:9,tocIndex:9},{value:"Example:",paraId:9,tocIndex:9},{value:" If the input value is ",paraId:9,tocIndex:9},{value:"2024-7-15 00:00:00",paraId:9,tocIndex:9},{value:", the amount is ",paraId:9,tocIndex:9},{value:"1",paraId:9,tocIndex:9},{value:', and the unit is "days," the output will be ',paraId:9,tocIndex:9},{value:"2024-7-14 00:00:00",paraId:9,tocIndex:9},{value:".",paraId:9,tocIndex:9},{value:"Accepted Input Value Type:",paraId:11,tocIndex:10},{value:" Date",paraId:11,tocIndex:10},{value:"Parameters:",paraId:11,tocIndex:10},{value:"The date for comparison, which can be a constant or a variable in the workflow context.",paraId:12,tocIndex:10},{value:"The time unit (e.g., days, hours).",paraId:12,tocIndex:10},{value:"Whether to take the absolute value.",paraId:12,tocIndex:10},{value:"Rounding options: retain decimals, round off, round up, or round down.",paraId:12,tocIndex:10},{value:"Output Value Type:",paraId:11,tocIndex:10},{value:" Numeric",paraId:11,tocIndex:10},{value:"Example:",paraId:11,tocIndex:10},{value:" If the input value is ",paraId:11,tocIndex:10},{value:"2024-7-15 00:00:00",paraId:11,tocIndex:10},{value:", and you compare it with ",paraId:11,tocIndex:10},{value:"2024-7-16 06:00:00",paraId:11,tocIndex:10},{value:', using "days" as the unit, without taking the absolute value and retaining decimals, the output will be ',paraId:11,tocIndex:10},{value:"-1.25",paraId:11,tocIndex:10},{value:".",paraId:11,tocIndex:10},{value:"If both absolute value and rounding are selected, the absolute value is applied first, followed by rounding.",paraId:13},{value:"Accepted Input Value Type:",paraId:14,tocIndex:11},{value:" Date",paraId:14,tocIndex:11},{value:"Parameters:",paraId:14,tocIndex:11},{value:"The time unit (e.g., days, hours).",paraId:15,tocIndex:11},{value:"Output Value Type:",paraId:14,tocIndex:11},{value:" Numeric",paraId:14,tocIndex:11},{value:"Example:",paraId:14,tocIndex:11},{value:" If the input value is ",paraId:14,tocIndex:11},{value:"2024-7-15 00:00:00",paraId:14,tocIndex:11},{value:' and the unit is "days," the output will be ',paraId:14,tocIndex:11},{value:"15",paraId:14,tocIndex:11},{value:".",paraId:14,tocIndex:11},{value:"Accepted Input Value Type:",paraId:16,tocIndex:12},{value:" Date",paraId:16,tocIndex:12},{value:"Parameters:",paraId:16,tocIndex:12},{value:"The time unit (e.g., days, hours).",paraId:17,tocIndex:12},{value:"Output Value Type:",paraId:16,tocIndex:12},{value:" Date",paraId:16,tocIndex:12},{value:"Example:",paraId:16,tocIndex:12},{value:" If the input value is ",paraId:16,tocIndex:12},{value:"2024-7-15 14:26:30",paraId:16,tocIndex:12},{value:' and the unit is "days," the output will be ',paraId:16,tocIndex:12},{value:"2024-7-15 00:00:00",paraId:16,tocIndex:12},{value:".",paraId:16,tocIndex:12},{value:"Accepted Input Value Type:",paraId:18,tocIndex:13},{value:" Date",paraId:18,tocIndex:13},{value:"Parameters:",paraId:18,tocIndex:13},{value:"The time unit (e.g., days, hours).",paraId:19,tocIndex:13},{value:"Output Value Type:",paraId:18,tocIndex:13},{value:" Date",paraId:18,tocIndex:13},{value:"Example:",paraId:18,tocIndex:13},{value:" If the input value is ",paraId:18,tocIndex:13},{value:"2024-7-15 14:26:30",paraId:18,tocIndex:13},{value:' and the unit is "days," the output will be ',paraId:18,tocIndex:13},{value:"2024-7-15 23:59:59",paraId:18,tocIndex:13},{value:".",paraId:18,tocIndex:13},{value:"Accepted Input Value Type:",paraId:20,tocIndex:14},{value:" Date",paraId:20,tocIndex:14},{value:"Parameters:",paraId:20,tocIndex:14},{value:" None",paraId:20,tocIndex:14},{value:"Output Value Type:",paraId:20,tocIndex:14},{value:" Boolean",paraId:20,tocIndex:14},{value:"Example:",paraId:20,tocIndex:14},{value:" If the input value is ",paraId:20,tocIndex:14},{value:"2024-7-15 14:26:30",paraId:20,tocIndex:14},{value:", the output will be ",paraId:20,tocIndex:14},{value:"true",paraId:20,tocIndex:14},{value:".",paraId:20,tocIndex:14},{value:"Accepted Input Value Type:",paraId:21,tocIndex:15},{value:" Date",paraId:21,tocIndex:15},{value:"Parameters:",paraId:21,tocIndex:15},{value:"The format, as specified in ",paraId:22,tocIndex:15},{value:"Day.js: Format",paraId:22,tocIndex:15},{value:".",paraId:22,tocIndex:15},{value:"Output Value Type:",paraId:21,tocIndex:15},{value:" String",paraId:21,tocIndex:15},{value:"Example:",paraId:21,tocIndex:15},{value:" If the input value is ",paraId:21,tocIndex:15},{value:"2024-7-15 14:26:30",paraId:21,tocIndex:15},{value:" and the format is ",paraId:21,tocIndex:15},{value:"the time is YYYY/MM/DD HH:mm:ss",paraId:21,tocIndex:15},{value:", the output will be ",paraId:21,tocIndex:15},{value:"the time is 2024/07/15 14:26:30",paraId:21,tocIndex:15},{value:".",paraId:21,tocIndex:15},{value:"Accepted Input Value Type:",paraId:23,tocIndex:16},{value:" Numeric",paraId:23,tocIndex:16},{value:"Parameters:",paraId:23,tocIndex:16},{value:"The original time unit.",paraId:24,tocIndex:16},{value:"The target time unit.",paraId:24,tocIndex:16},{value:"Rounding options: retain decimals, round off, round up, or round down.",paraId:24,tocIndex:16},{value:"Output Value Type:",paraId:23,tocIndex:16},{value:" Numeric",paraId:23,tocIndex:16},{value:"Example:",paraId:23,tocIndex:16},{value:" If the input value is ",paraId:23,tocIndex:16},{value:"2",paraId:23,tocIndex:16},{value:', the original unit is "weeks," the target unit is "days," and no decimals are retained, the output will be ',paraId:23,tocIndex:16},{value:"14",paraId:23,tocIndex:16},{value:".",paraId:23,tocIndex:16},{value:"Imagine a promotional activity where you want to automatically set an end time for the promotion when a product is created. This end time would be the last day of the following week at 23:59:59. To achieve this, you can create two time functions and link them in a pipeline:",paraId:25,tocIndex:17},{value:"Calculate the date for the following week.",paraId:26,tocIndex:17},{value:"Adjust the date to the last day of that week at 23:59:59.",paraId:26,tocIndex:17},{value:"By doing this, you'll generate the desired time value, which can then be passed to the next node, such as a data table modification node, to set the promotion end time in the database.",paraId:27,tocIndex:17}],U1={},P1={title:"Response Message",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/response-message.md",lastUpdated:173254844e4,description:"The Response Message node is designed to deliver custom messages to the client who initiates an operation within certain types of workflows."},T1=[{id:"response-message",depth:1,title:"Response Message"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"process-configuration",depth:3,title:"Process Configuration"},{id:"use-cases",depth:3,title:"Use Cases"},{id:"pre-action-event-workflow",depth:4,title:'"Pre-Action Event" Workflow'},{id:"post-action-event-workflow",depth:4,title:'"Post-Action Event" Workflow'}],C1=[{value:"The Response Message node is designed to deliver custom messages to the client who initiates an operation within certain types of workflows.",paraId:0},{value:'This node currently can be used in the workflow types "Pre-Action Event" and "Custom Action Event (synchronous mode)".',paraId:1},{value:'Within the supported workflow types, you can insert a "Response Message" node at any point in the workflow. To do this, click the plus ("+") button within the workflow to add the "Response Message" node:',paraId:2,tocIndex:2},{value:"Throughout the entire request process, response messages are accumulated in an array. When the process reaches a Response Message node, the new message content is appended to this array. Upon the server sending the response content, all messages within the array are delivered together to the client.",paraId:3,tocIndex:2},{value:"The message content is structured as a template string, allowing the insertion of variables. You can customize the template's content in the node configuration as needed:",paraId:4,tocIndex:3},{value:'As the process executes and reaches this node, the template is parsed to generate the final message content. In the example configuration above, the variable "Scope variables / Loop all products / Loop target / Product / Title" will be replaced with specific values during the actual workflow, such as:',paraId:5,tocIndex:3},{value:`Insufficient stock for product "iPhone 14 Pro" +`,paraId:6,tocIndex:3},{value:"The status prompt of the response message is determined by the success or failure of the process execution. If any node in the process fails to execute, the entire process is considered a failure. In this case, the message content will be returned to the client with a failure status as a notification.",paraId:7,tocIndex:4},{value:'If you need to actively define a failure status within the process, you can use the "End Node" and configure it as a failure. When the process reaches this node, it will exit with a failure status, and the message will be returned to the client with a failure status.',paraId:8,tocIndex:4},{value:"If the entire process completes without any failure and reaches the end successfully, the message content will be returned to the client with a success status.",paraId:9,tocIndex:4},{value:"If multiple response message nodes are defined in the process, the content of the executed nodes will be appended to an array. When the process is completed, all message content will be returned to the client together as a notification.",paraId:10},{value:'In a "Pre-Action Event" workflow, a response message can be used to provide feedback to the client upon completion of the process. For further details, refer to ',paraId:11,tocIndex:6},{value:"Request Interception",paraId:12,tocIndex:6},{value:".",paraId:11,tocIndex:6},{value:`In synchronous mode within a "Post-Action Event" workflow, the response message is sent to the client after the process is completed. Unlike the "Pre-Action Event" workflow, where the result might vary, the message displayed here is always a "success" notification. This consistency occurs because the triggering operation has already been successfully executed, and the success of the linked workflow does not impact the original operation's result.`,paraId:13,tocIndex:7}],A1={},q1={title:"Custom action event",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/custom-action.md",lastUpdated:173254844e4,description:'When setting up a workflow, begin by selecting "Custom action event":'},E1=[{id:"custom-action-event",depth:1,title:"Custom action event"},{id:"creating-a-workflow",depth:2,title:"Creating a Workflow"},{id:"trigger-configuration",depth:2,title:"Trigger Configuration"},{id:"data-table",depth:3,title:"Data Table"},{id:"related-data-to-utilize",depth:3,title:"Related Data to Utilize"},{id:"related-content",depth:2,title:"Related content"}],D1=[{value:'When setting up a workflow, begin by selecting "Custom action event":',paraId:0,tocIndex:1},{value:"Since custom operation events are tied to specific data rows, you'll need to first choose the data table that will be associated with your data model:",paraId:1,tocIndex:3},{value:"If your workflow requires the use of related data from the triggered data row, you can select the necessary deep relationship fields here:",paraId:2,tocIndex:4},{value:"These fields will be automatically preloaded into the workflow's context once the event is triggered, making them available for use within the workflow.",paraId:3,tocIndex:4},{value:"Except for trigger configuration, there are also some related contents about custom action trigger that can be further understood through the ",paraId:4,tocIndex:5},{value:"plugin documentation",paraId:5,tocIndex:5},{value:".",paraId:4,tocIndex:5}],O1={},R1={title:"Example",toc:"menu",filename:"docs/en-US/handbook/workflow-action-trigger/example.md",lastUpdated:173254844e4,description:"Output: Final Polished Translation"},M1=[{id:"example",depth:1,title:"Example"}],L1=[{value:"Output:",paraId:0,tocIndex:0},{value:" Final Polished Translation",paraId:0,tocIndex:0},{value:"Here, we will walk through the process by adding a new operation.",paraId:1,tocIndex:0},{value:'Imagine a scenario involving a "Expenses applications." After an employee submits an expense reimbursement, the system needs to perform an automatic review of the amount and, if necessary, trigger a manual review for amounts exceeding a set limit. Only requests that pass these reviews will be approved and subsequently forwarded to the finance department for processing.',paraId:2,tocIndex:0},{value:'To start, we can create a "Expenses" collection with the following fields:',paraId:3,tocIndex:0},{value:"Project Name:",paraId:4,tocIndex:0},{value:" Single-line Text",paraId:4,tocIndex:0},{value:"Applicant:",paraId:4,tocIndex:0},{value:" Many-to-One (User)",paraId:4,tocIndex:0},{value:"Amount:",paraId:4,tocIndex:0},{value:" Numeric",paraId:4,tocIndex:0},{value:"Status:",paraId:4,tocIndex:0},{value:' Single Choice (Options: "Approved", "Processed")',paraId:4,tocIndex:0},{value:`Next, we'll create a workflow categorized as a "Post-action Event" and configure the trigger's data table model to point to the "Expenses" collection:`,paraId:5,tocIndex:0},{value:"Once the workflow is enabled, we can proceed with configuring the specific processing nodes.",paraId:6,tocIndex:0},{value:`Then, on the user interface, create a table block for the "Expenses" data table and add an "Add" button to the toolbar, ensuring the corresponding form fields are properly configured. In the settings for the form's "Submit" button, open the "Bind Workflow" configuration dialog, select the entire form's data as the context, and link it to the workflow we previously created:`,paraId:7,tocIndex:0},{value:"Once the form configuration is complete, return to the workflow to arrange the logic. For instance, if the reimbursement amount exceeds 500, the system will require an administrator's manual review; otherwise, it will automatically approve the request. Upon approval, a expenses record is generated and forwarded to finance for further processing (details omitted).",paraId:8,tocIndex:0},{value:"Setting aside the subsequent financial processing, this completes the configuration of the expenses application process. When an employee fills out and submits a expenses request, the system triggers the corresponding workflow. If the amount is under 500, a record is automatically created and awaits further action by finance. If the amount exceeds this threshold, the request undergoes a supervisor's review. Upon approval, the record is created and handed over to finance for processing.",paraId:9,tocIndex:0},{value:'This example workflow can also be applied to a standard "Submit" button, depending on whether the business scenario requires a record to be created before moving on to subsequent steps.',paraId:10,tocIndex:0}],N1={},z1={title:"Trigger Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-action-trigger/trigger.md",lastUpdated:173254844e4,description:'To create a workflow, begin by selecting "Post-action Event" as the type:'},F1=[{id:"trigger-configuration",depth:1,title:"Trigger Configuration"},{id:"creating-a-workflow",depth:4,title:"Creating a Workflow"},{id:"execution-mode",depth:4,title:"Execution Mode"},{id:"configuring-the-data-table",depth:4,title:"Configuring the Data Table"},{id:"selecting-trigger-mode",depth:4,title:"Selecting Trigger Mode"},{id:"choosing-action-type",depth:4,title:"Choosing Action Type"},{id:"preloading-related-data",depth:4,title:"Preloading Related Data"}],B1=[{value:'To create a workflow, begin by selecting "Post-action Event" as the type:',paraId:0,tocIndex:1},{value:'When setting up post-action events, you have the option to choose between "Synchronous" and "Asynchronous" execution modes:',paraId:1,tocIndex:2},{value:"Use the synchronous mode if the process needs to execute and provide feedback immediately after a user operation. For other scenarios, the default asynchronous mode is generally suitable. In asynchronous mode, the user operation completes instantly, and the workflow continues to execute in the background as part of a queued process.",paraId:2,tocIndex:2},{value:"To begin configuration, navigate to the workflow canvas and click on the trigger to open the settings window. The first step is to select the data table that you wish to bind:",paraId:3,tocIndex:3},{value:"Next, determine the trigger mode by choosing between Local Mode and Global Mode:",paraId:4,tocIndex:4},{value:"Local Mode",paraId:5,tocIndex:4},{value:": This mode triggers the workflow only on the action buttons that have been explicitly bound to it. If the workflow is not bound, clicking the button will not initiate the workflow. This mode is ideal when you want to tailor the workflow to specific forms or actions.",paraId:5,tocIndex:4},{value:"Global Mode",paraId:5,tocIndex:4},{value:": In this mode, the workflow is triggered by any action button configured within the data table, regardless of the form's origin, and does not require specific workflow binding.",paraId:5,tocIndex:4},{value:"In Local Mode, you can currently bind the following action buttons:",paraId:6,tocIndex:4},{value:'The "Submit" and "Save" buttons in new forms.',paraId:7,tocIndex:4},{value:'The "Submit" and "Save" buttons in update forms.',paraId:7,tocIndex:4},{value:'The "Update Data" button within data rows (such as in tables, lists, or kanban views).',paraId:7,tocIndex:4},{value:'When using Global Mode, you also need to specify the action type. The available options are "Create record action" and "Update record action." The workflow is triggered upon the successful completion of either operation.',paraId:8,tocIndex:5},{value:"If subsequent workflow steps require the use of related data from the trigger, you can select the relationship fields to preload:",paraId:9,tocIndex:6},{value:"These preloaded related data will then be readily accessible throughout the workflow after it is triggered.",paraId:10,tocIndex:6}],j1={},H1={title:"Date Calculation",toc:"menu",filename:"docs/en-US/handbook/workflow-date-calculation/index.md",lastUpdated:173254844e4,description:"The Date Calculation node offers a set of nine powerful functions, enabling operations such as adding or subtracting time periods, formatting time strings, and converting duration units. Each function is designed with specific input and output value types, and can seamlessly integrate the results from other nodes as parameter variables. By chaining these functions through a calculation pipeline, you can achieve the desired output with precision."},W1=[{id:"date-calculation",depth:1,title:"Date Calculation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"input-value",depth:4,title:"Input Value"},{id:"input-value-type",depth:4,title:"Input Value Type"},{id:"calculation-steps",depth:4,title:"Calculation Steps"},{id:"calculation-functions",depth:3,title:"Calculation Functions"},{id:"add-a-range",depth:4,title:"Add a range"},{id:"subtract-a-range",depth:4,title:"Subtract a range"},{id:"get-difference-with-another-data-value",depth:4,title:"Get difference with another data value"},{id:"get-value-on-specific-unit-of-input-date",depth:4,title:"Get value on specific unit of input date"},{id:"set-to-time-of-unit-start",depth:4,title:"Set to time of unit start"},{id:"set-to-time-of-unit-end",depth:4,title:"Set to time of unit end"},{id:"is-leap-year",depth:4,title:"Is leap year"},{id:"format-to-string",depth:4,title:"Format to String"},{id:"convert-unit",depth:4,title:"Convert unit"},{id:"example",depth:3,title:"Example"}],$1=[{value:"The Date Calculation node offers a set of nine powerful functions, enabling operations such as adding or subtracting time periods, formatting time strings, and converting duration units. Each function is designed with specific input and output value types, and can seamlessly integrate the results from other nodes as parameter variables. By chaining these functions through a calculation pipeline, you can achieve the desired output with precision.",paraId:0},{value:'To add a "Date Calculation" node in the workflow configuration interface, simply click the plus (\u201C+\u201D) button within the process:',paraId:1,tocIndex:2},{value:"Input values can be either variables or date constants. Variables might include data that triggers the workflow or results from upstream nodes. Constants can be any selected date.",paraId:2,tocIndex:4},{value:"The input value type determines how the input will be processed and is categorized into two types:",paraId:3,tocIndex:5},{value:"Date Type:",paraId:4,tocIndex:5},{value:" This includes any input that can be converted into a date-time format, such as numeric timestamps or strings representing time.",paraId:4,tocIndex:5},{value:"Number Type:",paraId:4,tocIndex:5},{value:" The input value type influences the selection of time calculation steps, so it\u2019s crucial to choose the correct type.",paraId:4,tocIndex:5},{value:"Each calculation step consists of a specific function and its parameter configuration. The pipeline design allows the output of one function to feed directly into the next, enabling a sequence of time calculations and conversions.",paraId:5,tocIndex:6},{value:"The output type after each step is fixed, which in turn determines the functions available for the next step. If the types are compatible, the calculation continues; if not, the result of the current step becomes the final output of the node.",paraId:6,tocIndex:6},{value:"Accepted Input Value Type:",paraId:7,tocIndex:8},{value:" Date",paraId:7,tocIndex:8},{value:"Parameters:",paraId:7,tocIndex:8},{value:"The amount to add, which can be a numeric value or a variable from within the node.",paraId:8,tocIndex:8},{value:"The time unit (e.g., days, hours).",paraId:8,tocIndex:8},{value:"Output Value Type:",paraId:7,tocIndex:8},{value:" Date",paraId:7,tocIndex:8},{value:"Example:",paraId:7,tocIndex:8},{value:" If the input value is ",paraId:7,tocIndex:8},{value:"2024-7-15 00:00:00",paraId:7,tocIndex:8},{value:", the amount is ",paraId:7,tocIndex:8},{value:"1",paraId:7,tocIndex:8},{value:', and the unit is "days," the output will be ',paraId:7,tocIndex:8},{value:"2024-7-16 00:00:00",paraId:7,tocIndex:8},{value:".",paraId:7,tocIndex:8},{value:"Accepted Input Value Type:",paraId:9,tocIndex:9},{value:" Date",paraId:9,tocIndex:9},{value:"Parameters:",paraId:9,tocIndex:9},{value:"The amount to subtract, which can be a numeric value or a variable from within the node.",paraId:10,tocIndex:9},{value:"The time unit (e.g., days, hours).",paraId:10,tocIndex:9},{value:"Output Value Type:",paraId:9,tocIndex:9},{value:" Date",paraId:9,tocIndex:9},{value:"Example:",paraId:9,tocIndex:9},{value:" If the input value is ",paraId:9,tocIndex:9},{value:"2024-7-15 00:00:00",paraId:9,tocIndex:9},{value:", the amount is ",paraId:9,tocIndex:9},{value:"1",paraId:9,tocIndex:9},{value:', and the unit is "days," the output will be ',paraId:9,tocIndex:9},{value:"2024-7-14 00:00:00",paraId:9,tocIndex:9},{value:".",paraId:9,tocIndex:9},{value:"Accepted Input Value Type:",paraId:11,tocIndex:10},{value:" Date",paraId:11,tocIndex:10},{value:"Parameters:",paraId:11,tocIndex:10},{value:"The date for comparison, which can be a constant or a variable in the workflow context.",paraId:12,tocIndex:10},{value:"The time unit (e.g., days, hours).",paraId:12,tocIndex:10},{value:"Whether to take the absolute value.",paraId:12,tocIndex:10},{value:"Rounding options: retain decimals, round off, round up, or round down.",paraId:12,tocIndex:10},{value:"Output Value Type:",paraId:11,tocIndex:10},{value:" Numeric",paraId:11,tocIndex:10},{value:"Example:",paraId:11,tocIndex:10},{value:" If the input value is ",paraId:11,tocIndex:10},{value:"2024-7-15 00:00:00",paraId:11,tocIndex:10},{value:", and you compare it with ",paraId:11,tocIndex:10},{value:"2024-7-16 06:00:00",paraId:11,tocIndex:10},{value:', using "days" as the unit, without taking the absolute value and retaining decimals, the output will be ',paraId:11,tocIndex:10},{value:"-1.25",paraId:11,tocIndex:10},{value:".",paraId:11,tocIndex:10},{value:"If both absolute value and rounding are selected, the absolute value is applied first, followed by rounding.",paraId:13},{value:"Accepted Input Value Type:",paraId:14,tocIndex:11},{value:" Date",paraId:14,tocIndex:11},{value:"Parameters:",paraId:14,tocIndex:11},{value:"The time unit (e.g., days, hours).",paraId:15,tocIndex:11},{value:"Output Value Type:",paraId:14,tocIndex:11},{value:" Numeric",paraId:14,tocIndex:11},{value:"Example:",paraId:14,tocIndex:11},{value:" If the input value is ",paraId:14,tocIndex:11},{value:"2024-7-15 00:00:00",paraId:14,tocIndex:11},{value:' and the unit is "days," the output will be ',paraId:14,tocIndex:11},{value:"15",paraId:14,tocIndex:11},{value:".",paraId:14,tocIndex:11},{value:"Accepted Input Value Type:",paraId:16,tocIndex:12},{value:" Date",paraId:16,tocIndex:12},{value:"Parameters:",paraId:16,tocIndex:12},{value:"The time unit (e.g., days, hours).",paraId:17,tocIndex:12},{value:"Output Value Type:",paraId:16,tocIndex:12},{value:" Date",paraId:16,tocIndex:12},{value:"Example:",paraId:16,tocIndex:12},{value:" If the input value is ",paraId:16,tocIndex:12},{value:"2024-7-15 14:26:30",paraId:16,tocIndex:12},{value:' and the unit is "days," the output will be ',paraId:16,tocIndex:12},{value:"2024-7-15 00:00:00",paraId:16,tocIndex:12},{value:".",paraId:16,tocIndex:12},{value:"Accepted Input Value Type:",paraId:18,tocIndex:13},{value:" Date",paraId:18,tocIndex:13},{value:"Parameters:",paraId:18,tocIndex:13},{value:"The time unit (e.g., days, hours).",paraId:19,tocIndex:13},{value:"Output Value Type:",paraId:18,tocIndex:13},{value:" Date",paraId:18,tocIndex:13},{value:"Example:",paraId:18,tocIndex:13},{value:" If the input value is ",paraId:18,tocIndex:13},{value:"2024-7-15 14:26:30",paraId:18,tocIndex:13},{value:' and the unit is "days," the output will be ',paraId:18,tocIndex:13},{value:"2024-7-15 23:59:59",paraId:18,tocIndex:13},{value:".",paraId:18,tocIndex:13},{value:"Accepted Input Value Type:",paraId:20,tocIndex:14},{value:" Date",paraId:20,tocIndex:14},{value:"Parameters:",paraId:20,tocIndex:14},{value:" None",paraId:20,tocIndex:14},{value:"Output Value Type:",paraId:20,tocIndex:14},{value:" Boolean",paraId:20,tocIndex:14},{value:"Example:",paraId:20,tocIndex:14},{value:" If the input value is ",paraId:20,tocIndex:14},{value:"2024-7-15 14:26:30",paraId:20,tocIndex:14},{value:", the output will be ",paraId:20,tocIndex:14},{value:"true",paraId:20,tocIndex:14},{value:".",paraId:20,tocIndex:14},{value:"Accepted Input Value Type:",paraId:21,tocIndex:15},{value:" Date",paraId:21,tocIndex:15},{value:"Parameters:",paraId:21,tocIndex:15},{value:"The format, as specified in ",paraId:22,tocIndex:15},{value:"Day.js: Format",paraId:22,tocIndex:15},{value:".",paraId:22,tocIndex:15},{value:"Output Value Type:",paraId:21,tocIndex:15},{value:" String",paraId:21,tocIndex:15},{value:"Example:",paraId:21,tocIndex:15},{value:" If the input value is ",paraId:21,tocIndex:15},{value:"2024-7-15 14:26:30",paraId:21,tocIndex:15},{value:" and the format is ",paraId:21,tocIndex:15},{value:"the time is YYYY/MM/DD HH:mm:ss",paraId:21,tocIndex:15},{value:", the output will be ",paraId:21,tocIndex:15},{value:"the time is 2024/07/15 14:26:30",paraId:21,tocIndex:15},{value:".",paraId:21,tocIndex:15},{value:"Accepted Input Value Type:",paraId:23,tocIndex:16},{value:" Numeric",paraId:23,tocIndex:16},{value:"Parameters:",paraId:23,tocIndex:16},{value:"The original time unit.",paraId:24,tocIndex:16},{value:"The target time unit.",paraId:24,tocIndex:16},{value:"Rounding options: retain decimals, round off, round up, or round down.",paraId:24,tocIndex:16},{value:"Output Value Type:",paraId:23,tocIndex:16},{value:" Numeric",paraId:23,tocIndex:16},{value:"Example:",paraId:23,tocIndex:16},{value:" If the input value is ",paraId:23,tocIndex:16},{value:"2",paraId:23,tocIndex:16},{value:', the original unit is "weeks," the target unit is "days," and no decimals are retained, the output will be ',paraId:23,tocIndex:16},{value:"14",paraId:23,tocIndex:16},{value:".",paraId:23,tocIndex:16},{value:"Imagine a promotional activity where you want to automatically set an end time for the promotion when a product is created. This end time would be the last day of the following week at 23:59:59. To achieve this, you can create two time functions and link them in a pipeline:",paraId:25,tocIndex:17},{value:"Calculate the date for the following week.",paraId:26,tocIndex:17},{value:"Adjust the date to the last day of that week at 23:59:59.",paraId:26,tocIndex:17},{value:"By doing this, you'll generate the desired time value, which can then be passed to the next node, such as a data table modification node, to set the promotion end time in the database.",paraId:27,tocIndex:17}],G1={},V1={title:"Response Message",toc:"menu",filename:"docs/en-US/handbook/workflow-response-message/index.md",lastUpdated:173254844e4,description:"The Response Message node is designed to deliver custom messages to the client who initiates an operation within certain types of workflows."},K1=[{id:"response-message",depth:1,title:"Response Message"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"process-configuration",depth:3,title:"Process Configuration"},{id:"use-cases",depth:3,title:"Use Cases"},{id:"pre-action-event-workflow",depth:4,title:'"Pre-Action Event" Workflow'},{id:"post-action-event-workflow",depth:4,title:'"Post-Action Event" Workflow'}],Z1=[{value:"The Response Message node is designed to deliver custom messages to the client who initiates an operation within certain types of workflows.",paraId:0},{value:'This node currently can be used in the workflow types "Pre-Action Event" and "Custom Action Event (synchronous mode)".',paraId:1},{value:'Within the supported workflow types, you can insert a "Response Message" node at any point in the workflow. To do this, click the plus ("+") button within the workflow to add the "Response Message" node:',paraId:2,tocIndex:2},{value:"Throughout the entire request process, response messages are accumulated in an array. When the process reaches a Response Message node, the new message content is appended to this array. Upon the server sending the response content, all messages within the array are delivered together to the client.",paraId:3,tocIndex:2},{value:"The message content is structured as a template string, allowing the insertion of variables. You can customize the template's content in the node configuration as needed:",paraId:4,tocIndex:3},{value:'As the process executes and reaches this node, the template is parsed to generate the final message content. In the example configuration above, the variable "Scope variables / Loop all products / Loop target / Product / Title" will be replaced with specific values during the actual workflow, such as:',paraId:5,tocIndex:3},{value:`Insufficient stock for product "iPhone 14 Pro" +`,paraId:6,tocIndex:3},{value:"The status prompt of the response message is determined by the success or failure of the process execution. If any node in the process fails to execute, the entire process is considered a failure. In this case, the message content will be returned to the client with a failure status as a notification.",paraId:7,tocIndex:4},{value:'If you need to actively define a failure status within the process, you can use the "End Node" and configure it as a failure. When the process reaches this node, it will exit with a failure status, and the message will be returned to the client with a failure status.',paraId:8,tocIndex:4},{value:"If the entire process completes without any failure and reaches the end successfully, the message content will be returned to the client with a success status.",paraId:9,tocIndex:4},{value:"If multiple response message nodes are defined in the process, the content of the executed nodes will be appended to an array. When the process is completed, all message content will be returned to the client together as a notification.",paraId:10},{value:'In a "Pre-Action Event" workflow, a response message can be used to provide feedback to the client upon completion of the process. For further details, refer to ',paraId:11,tocIndex:6},{value:"Request Interception",paraId:12,tocIndex:6},{value:".",paraId:11,tocIndex:6},{value:`In synchronous mode within a "Post-Action Event" workflow, the response message is sent to the client after the process is completed. Unlike the "Pre-Action Event" workflow, where the result might vary, the message displayed here is always a "success" notification. This consistency occurs because the triggering operation has already been successfully executed, and the success of the linked workflow does not impact the original operation's result.`,paraId:13,tocIndex:7}],Y1={},Q1={title:"Registration and Usage of Component and Scope",toc:"menu",filename:"docs/en-US/plugin-samples/component-and-scope/index.md",lastUpdated:173254844e4,description:"There are two main reasons why Components and Scopes need to be registered:"},J1=[{id:"registration-and-usage-of-component-and-scope",depth:1,title:"Registration and Usage of Component and Scope"},{id:"scenario-explanation",depth:2,title:"Scenario Explanation"},{id:"reason-1-ui-schema-needs-to-be-stored-on-the-server",depth:3,title:"Reason 1: UI Schema Needs to Be Stored on the Server"},{id:"reason-2-extensibility-needs",depth:3,title:"Reason 2: Extensibility Needs"},{id:"option-1-replace-the-route",depth:4,title:"Option 1: Replace the Route"},{id:"option-2-directly-replace-the-component",depth:4,title:"Option 2: Directly Replace the Component"},{id:"global-registration-and-local-registration",depth:2,title:"Global Registration and Local Registration"},{id:"global-registration",depth:3,title:"Global Registration"},{id:"local-registration",depth:3,title:"Local Registration"}],X1=[{value:"There are two main reasons why Components and Scopes need to be registered:",paraId:0,tocIndex:1},{value:"NocoBase\u2019s front-end pages are rendered based on the ",paraId:1,tocIndex:2},{value:"UI Schema",paraId:2,tocIndex:2},{value:", which must be stored in the database. Since the UI Schema cannot have reference-type properties, we can only store the values of properties like ",paraId:1,tocIndex:2},{value:"x-component",paraId:1,tocIndex:2},{value:", ",paraId:1,tocIndex:2},{value:"x-decorator",paraId:1,tocIndex:2},{value:", ",paraId:1,tocIndex:2},{value:"x-use-component-props",paraId:1,tocIndex:2},{value:", and ",paraId:1,tocIndex:2},{value:"x-use-decorator-props",paraId:1,tocIndex:2},{value:" as strings. Then, we register the corresponding Component and Scope in NocoBase so that during page rendering, the system can match the stored strings to the appropriate Component and Scope.",paraId:1,tocIndex:2},{value:"In contrast, for UI Schemas that do not need to be stored in the database, we can directly use reference-type properties. For example, in the locally developed ",paraId:3,tocIndex:2},{value:"plugin configuration page",paraId:4,tocIndex:2},{value:", properties like ",paraId:3,tocIndex:2},{value:"x-component",paraId:3,tocIndex:2},{value:" and ",paraId:3,tocIndex:2},{value:"x-use-component-props",paraId:3,tocIndex:2},{value:" can use reference-type values directly.",paraId:3,tocIndex:2},{value:`const schema: ISchema = { type: 'void', name: uid(), 'x-component': MyComponent, @@ -4696,7 +4748,7 @@ The following example uses the User/Role (one-to-many) variable`,paraId:7,tocInd `,paraId:14,tocIndex:7},{value:"For local registration, use the ",paraId:15,tocIndex:8},{value:"components",paraId:15,tocIndex:8},{value:" and ",paraId:15,tocIndex:8},{value:"scope",paraId:15,tocIndex:8},{value:" properties of the ",paraId:15,tocIndex:8},{value:"SchemaComponent",paraId:15,tocIndex:8},{value:" and ",paraId:15,tocIndex:8},{value:"SchemaComponentOptions",paraId:15,tocIndex:8},{value:" components. For example:",paraId:15,tocIndex:8},{value:` -`,paraId:16,tocIndex:8},{value:"SchemaComponentProvider",paraId:17,tocIndex:8},{value:" can be nested multiple layers deep, and inner ",paraId:17,tocIndex:8},{value:"SchemaComponent",paraId:17,tocIndex:8},{value:" elements will inherit the ",paraId:17,tocIndex:8},{value:"components",paraId:17,tocIndex:8},{value:" and ",paraId:17,tocIndex:8},{value:"scope",paraId:17,tocIndex:8},{value:" from outer layers.",paraId:17,tocIndex:8},{value:"For the scenarios mentioned, we provide the following examples:",paraId:18,tocIndex:8},{value:"Global Registration of Component and Scope",paraId:19,tocIndex:8},{value:"Local Registration of Component and Scope",paraId:20,tocIndex:8},{value:"For the customization scenario, refer to the routing example ",paraId:21,tocIndex:8},{value:"Replace Page",paraId:22,tocIndex:8},{value:".",paraId:21,tocIndex:8}],eb={},ab={title:"\u5C40\u90E8\u6CE8\u518C Component \u548C Scope",toc:"menu",filename:"docs/en-US/plugin-samples/component-and-scope/local.md",lastUpdated:1732240239e3,description:"\u9700\u8981\u5B9E\u73B0\u7684\u529F\u80FD\u548C \u5168\u5C40\u6CE8\u518C Component \u548C Scope \u793A\u4F8B\u4E00\u6837\uFF0C\u53EA\u662F\u8FD9\u6B21\u6211\u4EEC\u5C06\u7EC4\u4EF6\u548C scope \u6CE8\u518C\u5230\u63D2\u4EF6\u5185\u90E8\uFF0C\u800C\u4E0D\u662F\u5168\u5C40\u6CE8\u518C\u3002"},tb=[{id:"\u5C40\u90E8\u6CE8\u518C-component-\u548C-scope",depth:1,title:"\u5C40\u90E8\u6CE8\u518C Component \u548C Scope"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u521B\u5EFA\u81EA\u5B9A\u4E49\u9875\u9762",depth:3,title:"1. \u521B\u5EFA\u81EA\u5B9A\u4E49\u9875\u9762"},{id:"2-\u76F4\u63A5\u4F7F\u7528-component-\u6E32\u67D3\u5185\u5BB9",depth:3,title:"2. \u76F4\u63A5\u4F7F\u7528 Component \u6E32\u67D3\u5185\u5BB9"},{id:"3-\u4F7F\u7528-schemacomponent-\u6E32\u67D3\u5185\u5BB9",depth:3,title:"3. \u4F7F\u7528 SchemaComponent \u6E32\u67D3\u5185\u5BB9"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],nb=[{value:"\u9700\u8981\u5B9E\u73B0\u7684\u529F\u80FD\u548C ",paraId:0,tocIndex:1},{value:"\u5168\u5C40\u6CE8\u518C Component \u548C Scope",paraId:1,tocIndex:1},{value:" \u793A\u4F8B\u4E00\u6837\uFF0C\u53EA\u662F\u8FD9\u6B21\u6211\u4EEC\u5C06\u7EC4\u4EF6\u548C scope \u6CE8\u518C\u5230\u63D2\u4EF6\u5185\u90E8\uFF0C\u800C\u4E0D\u662F\u5168\u5C40\u6CE8\u518C\u3002",paraId:0,tocIndex:1},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:2,tocIndex:1},{value:"plugin-samples",paraId:2,tocIndex:1},{value:" \u4E2D\u67E5\u770B\u3002",paraId:2,tocIndex:1},{value:"\u6211\u4EEC\u6309\u7167 ",paraId:3,tocIndex:2},{value:"\u7F16\u5199\u7B2C\u4E00\u4E2A\u63D2\u4EF6",paraId:4,tocIndex:2},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u5982\u679C\u6CA1\u6709\u4E00\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u5148\u521B\u5EFA\u4E00\u4E2A\u9879\u76EE\uFF0C\u5982\u679C\u5DF2\u7ECF\u6709\u4E86\u6216\u8005\u662F clone \u7684\u6E90\u7801\uFF0C\u5219\u8DF3\u8FC7\u8FD9\u4E00\u6B65\u3002",paraId:3,tocIndex:2},{value:`yarn create nocobase-app my-nocobase-app -d sqlite +`,paraId:16,tocIndex:8},{value:"SchemaComponentProvider",paraId:17,tocIndex:8},{value:" can be nested multiple layers deep, and inner ",paraId:17,tocIndex:8},{value:"SchemaComponent",paraId:17,tocIndex:8},{value:" elements will inherit the ",paraId:17,tocIndex:8},{value:"components",paraId:17,tocIndex:8},{value:" and ",paraId:17,tocIndex:8},{value:"scope",paraId:17,tocIndex:8},{value:" from outer layers.",paraId:17,tocIndex:8},{value:"For the scenarios mentioned, we provide the following examples:",paraId:18,tocIndex:8},{value:"Global Registration of Component and Scope",paraId:19,tocIndex:8},{value:"Local Registration of Component and Scope",paraId:20,tocIndex:8},{value:"For the customization scenario, refer to the routing example ",paraId:21,tocIndex:8},{value:"Replace Page",paraId:22,tocIndex:8},{value:".",paraId:21,tocIndex:8}],eb={},ab={title:"\u5C40\u90E8\u6CE8\u518C Component \u548C Scope",toc:"menu",filename:"docs/en-US/plugin-samples/component-and-scope/local.md",lastUpdated:173254844e4,description:"\u9700\u8981\u5B9E\u73B0\u7684\u529F\u80FD\u548C \u5168\u5C40\u6CE8\u518C Component \u548C Scope \u793A\u4F8B\u4E00\u6837\uFF0C\u53EA\u662F\u8FD9\u6B21\u6211\u4EEC\u5C06\u7EC4\u4EF6\u548C scope \u6CE8\u518C\u5230\u63D2\u4EF6\u5185\u90E8\uFF0C\u800C\u4E0D\u662F\u5168\u5C40\u6CE8\u518C\u3002"},tb=[{id:"\u5C40\u90E8\u6CE8\u518C-component-\u548C-scope",depth:1,title:"\u5C40\u90E8\u6CE8\u518C Component \u548C Scope"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u521B\u5EFA\u81EA\u5B9A\u4E49\u9875\u9762",depth:3,title:"1. \u521B\u5EFA\u81EA\u5B9A\u4E49\u9875\u9762"},{id:"2-\u76F4\u63A5\u4F7F\u7528-component-\u6E32\u67D3\u5185\u5BB9",depth:3,title:"2. \u76F4\u63A5\u4F7F\u7528 Component \u6E32\u67D3\u5185\u5BB9"},{id:"3-\u4F7F\u7528-schemacomponent-\u6E32\u67D3\u5185\u5BB9",depth:3,title:"3. \u4F7F\u7528 SchemaComponent \u6E32\u67D3\u5185\u5BB9"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],nb=[{value:"\u9700\u8981\u5B9E\u73B0\u7684\u529F\u80FD\u548C ",paraId:0,tocIndex:1},{value:"\u5168\u5C40\u6CE8\u518C Component \u548C Scope",paraId:1,tocIndex:1},{value:" \u793A\u4F8B\u4E00\u6837\uFF0C\u53EA\u662F\u8FD9\u6B21\u6211\u4EEC\u5C06\u7EC4\u4EF6\u548C scope \u6CE8\u518C\u5230\u63D2\u4EF6\u5185\u90E8\uFF0C\u800C\u4E0D\u662F\u5168\u5C40\u6CE8\u518C\u3002",paraId:0,tocIndex:1},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:2,tocIndex:1},{value:"plugin-samples",paraId:2,tocIndex:1},{value:" \u4E2D\u67E5\u770B\u3002",paraId:2,tocIndex:1},{value:"\u6211\u4EEC\u6309\u7167 ",paraId:3,tocIndex:2},{value:"\u7F16\u5199\u7B2C\u4E00\u4E2A\u63D2\u4EF6",paraId:4,tocIndex:2},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u5982\u679C\u6CA1\u6709\u4E00\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u5148\u521B\u5EFA\u4E00\u4E2A\u9879\u76EE\uFF0C\u5982\u679C\u5DF2\u7ECF\u6709\u4E86\u6216\u8005\u662F clone \u7684\u6E90\u7801\uFF0C\u5219\u8DF3\u8FC7\u8FD9\u4E00\u6B65\u3002",paraId:3,tocIndex:2},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install yarn nocobase install @@ -4771,7 +4823,7 @@ export const SamplesCustomPage = () => { } `,paraId:25,tocIndex:6},{value:"\u6211\u4EEC\u5B9A\u4E49\u4E86 ",paraId:26,tocIndex:6},{value:"SamplesHello",paraId:26,tocIndex:6},{value:" \u548C ",paraId:26,tocIndex:6},{value:"useSamplesHelloProps",paraId:26,tocIndex:6},{value:" \u7EC4\u4EF6",paraId:26,tocIndex:6},{value:"\u7136\u540E\u5B9A\u4E49\u4E86\u4E00\u4E2A ",paraId:26,tocIndex:6},{value:"schema",paraId:26,tocIndex:6},{value:" \u5BF9\u8C61\uFF0C",paraId:26,tocIndex:6},{value:"demo1",paraId:26,tocIndex:6},{value:" \u548C ",paraId:26,tocIndex:6},{value:"demo2",paraId:26,tocIndex:6},{value:" \u5B57\u6BB5\u4F7F\u7528\u5BF9\u5E94\u7684\u7EC4\u4EF6\u548C scope\uFF0C\u800C ",paraId:26,tocIndex:6},{value:"demo3",paraId:26,tocIndex:6},{value:" \u548C ",paraId:26,tocIndex:6},{value:"demo4",paraId:26,tocIndex:6},{value:" \u5B57\u6BB5\u4F7F\u7528\u5B57\u7B26\u4E32\u7C7B\u578B\u7684\u7EC4\u4EF6\u548C scope",paraId:26,tocIndex:6},{value:"\u6700\u540E\u6211\u4EEC\u4F7F\u7528 ",paraId:26,tocIndex:6},{value:"SchemaComponent",paraId:26,tocIndex:6},{value:" \u7684 ",paraId:26,tocIndex:6},{value:"components",paraId:26,tocIndex:6},{value:" \u548C ",paraId:26,tocIndex:6},{value:"scope",paraId:26,tocIndex:6},{value:" \u5C5E\u6027\u5C40\u90E8\u6CE8\u518C ",paraId:26,tocIndex:6},{value:"SamplesHello",paraId:26,tocIndex:6},{value:" \u548C ",paraId:26,tocIndex:6},{value:"useSamplesHelloProps",paraId:26,tocIndex:6},{value:"\u7136\u540E\u6211\u4EEC\u8BBF\u95EE ",paraId:27,tocIndex:6},{value:"http://localhost:13000/admin/custom-page2",paraId:27,tocIndex:6},{value:" \u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:27,tocIndex:6},{value:"CustomPage",paraId:27,tocIndex:6},{value:" \u7EC4\u4EF6\u7684\u5185\u5BB9\u4E86\u3002",paraId:27,tocIndex:6},{value:"\u6309\u7167 ",paraId:28,tocIndex:7},{value:"\u6784\u5EFA\u5E76\u6253\u5305\u63D2\u4EF6",paraId:29,tocIndex:7},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6253\u5305\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883\u3002",paraId:28,tocIndex:7},{value:"\u5982\u679C\u662F clone \u7684\u6E90\u7801\uFF0C\u9700\u8981\u5148\u6267\u884C\u4E00\u6B21\u5168\u91CF build\uFF0C\u5C06\u63D2\u4EF6\u7684\u4F9D\u8D56\u4E5F\u6784\u5EFA\u597D\u3002",paraId:30,tocIndex:7},{value:`yarn build `,paraId:31,tocIndex:7},{value:"\u5982\u679C\u662F\u4F7F\u7528\u7684 ",paraId:32,tocIndex:7},{value:"create-nocobase-app",paraId:32,tocIndex:7},{value:" \u521B\u5EFA\u7684\u9879\u76EE\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A",paraId:32,tocIndex:7},{value:`yarn build @nocobase-sample/plugin-component-and-scope-local --tar -`,paraId:33,tocIndex:7},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:34,tocIndex:7},{value:"storage/tar/@nocobase-sample/plugin-component-and-scope-local.tar.gz",paraId:34,tocIndex:7},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:34,tocIndex:7},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:35,tocIndex:7},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:34,tocIndex:7}],ob={},rb={title:"Replace Page",toc:"menu",filename:"docs/en-US/plugin-samples/router/replace-page/index.md",lastUpdated:1732240239e3,description:"Scene where the layout of an existing page needs to be changed or the entire content of the page needs to be replaced."},db=[{id:"replace-page",depth:1,title:"Replace Page"},{id:"description",depth:2,title:"Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"function-implementation",depth:2,title:"Function Implementation"},{id:"1-analyzing-requirements-and-source-code",depth:3,title:"1. Analyzing Requirements and Source Code"},{id:"2-implementing-custom-authlayout-component",depth:3,title:"2. Implementing Custom AuthLayout Component"},{id:"3-replacing-authlayout-with-customauthlayout",depth:3,title:"3. Replacing AuthLayout with CustomAuthLayout"},{id:"route-override",depth:4,title:"Route Override"},{id:"component-override-method",depth:4,title:"Component Override Method"},{id:"packaging-and-uploading-to-production-environment",depth:2,title:"Packaging and Uploading to Production Environment"}],ib=[{value:"Scene where the layout of an existing page needs to be changed or the entire content of the page needs to be replaced.",paraId:0,tocIndex:1},{value:"We need to customize the layout of the login and registration pages. Currently, there is only a form, but we want to change it to a left-right layout, with an image on the left and the form on the right.",paraId:1,tocIndex:2},{value:"You can find the complete example code for this documentation in the ",paraId:2,tocIndex:2},{value:"plugin-samples",paraId:2,tocIndex:2},{value:" repository.",paraId:2,tocIndex:2},{value:"Following the instructions in the ",paraId:3,tocIndex:3},{value:"Writing Your First Plugin",paraId:4,tocIndex:3},{value:" documentation, if you don't have a project yet, you can create one. If you already have one or have cloned the source code, you can skip this step.",paraId:3,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite +`,paraId:33,tocIndex:7},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:34,tocIndex:7},{value:"storage/tar/@nocobase-sample/plugin-component-and-scope-local.tar.gz",paraId:34,tocIndex:7},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:34,tocIndex:7},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:35,tocIndex:7},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:34,tocIndex:7}],ob={},rb={title:"Replace Page",toc:"menu",filename:"docs/en-US/plugin-samples/router/replace-page/index.md",lastUpdated:173254844e4,description:"Scene where the layout of an existing page needs to be changed or the entire content of the page needs to be replaced."},db=[{id:"replace-page",depth:1,title:"Replace Page"},{id:"description",depth:2,title:"Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"function-implementation",depth:2,title:"Function Implementation"},{id:"1-analyzing-requirements-and-source-code",depth:3,title:"1. Analyzing Requirements and Source Code"},{id:"2-implementing-custom-authlayout-component",depth:3,title:"2. Implementing Custom AuthLayout Component"},{id:"3-replacing-authlayout-with-customauthlayout",depth:3,title:"3. Replacing AuthLayout with CustomAuthLayout"},{id:"route-override",depth:4,title:"Route Override"},{id:"component-override-method",depth:4,title:"Component Override Method"},{id:"packaging-and-uploading-to-production-environment",depth:2,title:"Packaging and Uploading to Production Environment"}],ib=[{value:"Scene where the layout of an existing page needs to be changed or the entire content of the page needs to be replaced.",paraId:0,tocIndex:1},{value:"We need to customize the layout of the login and registration pages. Currently, there is only a form, but we want to change it to a left-right layout, with an image on the left and the form on the right.",paraId:1,tocIndex:2},{value:"You can find the complete example code for this documentation in the ",paraId:2,tocIndex:2},{value:"plugin-samples",paraId:2,tocIndex:2},{value:" repository.",paraId:2,tocIndex:2},{value:"Following the instructions in the ",paraId:3,tocIndex:3},{value:"Writing Your First Plugin",paraId:4,tocIndex:3},{value:" documentation, if you don't have a project yet, you can create one. If you already have one or have cloned the source code, you can skip this step.",paraId:3,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install yarn nocobase install @@ -4887,7 +4939,7 @@ this.app.addComponents({ AuthLayout }) }) `,paraId:37,tocIndex:9},{value:"Then we log out and visit ",paraId:38,tocIndex:9},{value:"http://localhost:13000/signin",paraId:38,tocIndex:9},{value:" to see that the layout of the login page has been changed.",paraId:38,tocIndex:9},{value:"According to the documentation on ",paraId:39,tocIndex:10},{value:"Building and Packaging Plugins",paraId:40,tocIndex:10},{value:", we can package the plugin and upload it to the production environment.",paraId:39,tocIndex:10},{value:"If you have cloned the source code, you need to perform a full build first to build the dependencies of the plugin as well.",paraId:41,tocIndex:10},{value:`yarn build `,paraId:42,tocIndex:10},{value:"If you are using ",paraId:43,tocIndex:10},{value:"create-nocobase-app",paraId:43,tocIndex:10},{value:" to create your project, you can directly execute:",paraId:43,tocIndex:10},{value:`yarn build @nocobase-sample/plugin-replace-page --tar -`,paraId:44,tocIndex:10},{value:"This way, you can see the ",paraId:45,tocIndex:10},{value:"storage/tar/@nocobase-sample/plugin-replace-page.tar.gz",paraId:45,tocIndex:10},{value:" file, and then install it using the ",paraId:45,tocIndex:10},{value:"upload method",paraId:46,tocIndex:10},{value:".",paraId:45,tocIndex:10}],lb={},cb={title:"\u63D2\u4EF6\u7BA1\u7406\u5668",toc:"menu",filename:"docs/en-US/plugins/client/user/plugin-manager/index.md",lastUpdated:1732240239e3,description:"\u63D2\u4EF6\u7BA1\u7406\u5668\u652F\u6301\u901A\u8FC7\u754C\u9762\u6DFB\u52A0\u63D2\u4EF6\uFF0C\u4EE5\u7B80\u5355\u3001\u76F4\u89C2\uFF0C\u8F7B\u91CF\u7EA7\u7684\u4F7F\u7528\u4F53\u9A8C\u6765\u6269\u5C55 NocoBase \u7684\u529F\u80FD\u3002\u8F7B\u677E\u6269\u5C55\u548C\u5B9A\u5236\u5E94\u7528\u529F\u80FD\uFF0C\u5305\u62EC\u5B89\u88C5\u3001\u5347\u7EA7\u3001\u548C\u5378\u8F7D\u63D2\u4EF6"},sb=[{id:"\u63D2\u4EF6\u7BA1\u7406\u5668",depth:1,title:"\u63D2\u4EF6\u7BA1\u7406\u5668"},{id:"\u67E5\u770B\u63D2\u4EF6\u6587\u6863",depth:4,title:"\u67E5\u770B\u63D2\u4EF6\u6587\u6863"},{id:"\u6DFB\u52A0\u63D2\u4EF6",depth:4,title:"\u6DFB\u52A0\u63D2\u4EF6"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:4,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u7981\u7528\u63D2\u4EF6",depth:4,title:"\u7981\u7528\u63D2\u4EF6"},{id:"\u5220\u9664\u63D2\u4EF6",depth:4,title:"\u5220\u9664\u63D2\u4EF6"},{id:"\u66F4\u65B0\u63D2\u4EF6",depth:4,title:"\u66F4\u65B0\u63D2\u4EF6"}],ub=[{value:"\u63D2\u4EF6\u7BA1\u7406\u5668\u652F\u6301\u901A\u8FC7\u754C\u9762\u6DFB\u52A0\u63D2\u4EF6\uFF0C\u4EE5\u7B80\u5355\u3001\u76F4\u89C2\uFF0C\u8F7B\u91CF\u7EA7\u7684\u4F7F\u7528\u4F53\u9A8C\u6765\u6269\u5C55 NocoBase \u7684\u529F\u80FD\u3002\u8F7B\u677E\u6269\u5C55\u548C\u5B9A\u5236\u5E94\u7528\u529F\u80FD\uFF0C\u5305\u62EC\u5B89\u88C5\u3001\u5347\u7EA7\u3001\u548C\u5378\u8F7D\u63D2\u4EF6",paraId:0,tocIndex:0},{value:"\u63D2\u4EF6\u7BA1\u7406\u5668\u7684\u7EC4\u6210\u90E8\u5206",paraId:1,tocIndex:0},{value:"\u672C\u5730\u63D2\u4EF6/\u63D2\u4EF6\u5E02\u573A",paraId:2,tocIndex:0},{value:"\u63D2\u4EF6\u5206\u7C7B\uFF08\u5185\u7F6E\u3001\u542F\u7528\u3001\u672A\u542F\u7528\u3001\u6709\u95EE\u9898,\u652F\u6301\u6309\u63D2\u4EF6\u540D\u79F0\u6A21\u7CCA\u641C\u7D22\uFF09",paraId:2,tocIndex:0},{value:"\u6DFB\u52A0\u65B0\u63D2\u4EF6",paraId:2,tocIndex:0},{value:"\u63D2\u4EF6\u914D\u7F6E\u4E3B\u4F53",paraId:2,tocIndex:0},{value:"\u70B9\u51FB\u63D2\u4EF6\u53EF\u4EE5\u5FEB\u901F\u9605\u89C8\u63D2\u4EF6\u7684\u4ECB\u7ECD\u6587\u6863\uFF08\u5305\u62EC\u8BF4\u660E\u6587\u6863\u3001\u4F9D\u8D56\u517C\u5BB9\u6027\u68C0\u67E5\u3001\u66F4\u65B0\u65E5\u5FD7\uFF09",paraId:3,tocIndex:1},{value:"\u5373\u63D2\u5373\u7528\uFF0C\u53EF\u4EE5\u76F4\u63A5\u901A\u8FC7\u754C\u9762\u6DFB\u52A0\u63D2\u4EF6\uFF0C\u652F\u6301\u4ECE npm registry\uFF08\u53EF\u4EE5\u662F\u79C1\u6709\u7684\uFF09\u4E0B\u8F7D\u3001\u672C\u5730\u4E0A\u4F20\u3001URL \u4E0B\u8F7D",paraId:4,tocIndex:2},{value:"\u76EE\u524D\u4EC5 storage/plugins \u4E0B\u7684\u63D2\u4EF6\u624D\u6709\u66F4\u65B0\u64CD\u4F5C\uFF0C\u5982\u56FE",paraId:5,tocIndex:6}],pb={},Ib={title:"\u6269\u5C55\u8282\u70B9\u7C7B\u578B",toc:"menu",filename:"docs/en-US/plugins/workflow/development/instruction.md",lastUpdated:1732240239e3,description:"\u8282\u70B9\u7684\u7C7B\u578B\u672C\u8D28\u4E0A\u5C31\u662F\u64CD\u4F5C\u6307\u4EE4\uFF0C\u4E0D\u540C\u7684\u6307\u4EE4\u4EE3\u8868\u6D41\u7A0B\u4E2D\u6267\u884C\u7684\u4E0D\u540C\u7684\u64CD\u4F5C\u3002"},_b=[{id:"\u6269\u5C55\u8282\u70B9\u7C7B\u578B",depth:1,title:"\u6269\u5C55\u8282\u70B9\u7C7B\u578B"},{id:"\u670D\u52A1\u7AEF",depth:2,title:"\u670D\u52A1\u7AEF"},{id:"\u5BA2\u6237\u7AEF",depth:2,title:"\u5BA2\u6237\u7AEF"}],vb=[{value:"\u8282\u70B9\u7684\u7C7B\u578B\u672C\u8D28\u4E0A\u5C31\u662F\u64CD\u4F5C\u6307\u4EE4\uFF0C\u4E0D\u540C\u7684\u6307\u4EE4\u4EE3\u8868\u6D41\u7A0B\u4E2D\u6267\u884C\u7684\u4E0D\u540C\u7684\u64CD\u4F5C\u3002",paraId:0,tocIndex:0},{value:"\u4E0E\u89E6\u53D1\u5668\u7C7B\u4F3C\uFF0C\u6269\u5C55\u8282\u70B9\u7684\u7C7B\u578B\u4E5F\u5206\u4E3A\u524D\u540E\u7AEF\u4E24\u90E8\u5206\u3002\u670D\u52A1\u7AEF\u9700\u8981\u5BF9\u6CE8\u518C\u7684\u6307\u4EE4\u8FDB\u884C\u903B\u8F91\u5B9E\u73B0\uFF0C\u5BA2\u6237\u7AEF\u9700\u8981\u63D0\u4F9B\u6307\u4EE4\u5185\u5BB9\u7684\u754C\u9762\u914D\u7F6E\u3002",paraId:1,tocIndex:0},{value:"\u6307\u4EE4\u7684\u57FA\u7840\u5185\u5BB9\u662F\u4E00\u4E2A\u51FD\u6570\uFF0C\u51FD\u6570\u4E2D\u53EF\u4EE5\u6267\u884C\u4EFB\u610F\u9700\u8981\u7684\u64CD\u4F5C\uFF0C\u4F8B\u5982\u6570\u636E\u5E93\u64CD\u4F5C\u3001\u6587\u4EF6\u64CD\u4F5C\u3001\u8C03\u7528\u7B2C\u4E09\u65B9 API \u7B49\u7B49\u3002\u53E6\u5916\uFF0C\u6307\u4EE4\u7684\u8FD4\u56DE\u5BF9\u8C61\u4E2D\u7684\u72B6\u6001\u503C\uFF0C\u5C06\u51B3\u5B9A\u8BE5\u8282\u70B9\u5728\u6D41\u7A0B\u4E2D\u7684\u540E\u7EED\u5904\u7406\u7684\u6D41\u5411\u3002",paraId:2,tocIndex:1},{value:"\u6700\u7B80\u5355\u7684\u6307\u4EE4\u53EA\u9700\u8981\u5B9A\u4E49\u4E00\u4E2A ",paraId:3,tocIndex:1},{value:"run",paraId:3,tocIndex:1},{value:" \u51FD\u6570\u5373\u53EF\uFF1A",paraId:3,tocIndex:1},{value:`import { JOB_STATUS } from '@nocobase/plugin-workflow'; +`,paraId:44,tocIndex:10},{value:"This way, you can see the ",paraId:45,tocIndex:10},{value:"storage/tar/@nocobase-sample/plugin-replace-page.tar.gz",paraId:45,tocIndex:10},{value:" file, and then install it using the ",paraId:45,tocIndex:10},{value:"upload method",paraId:46,tocIndex:10},{value:".",paraId:45,tocIndex:10}],lb={},cb={title:"\u63D2\u4EF6\u7BA1\u7406\u5668",toc:"menu",filename:"docs/en-US/plugins/client/user/plugin-manager/index.md",lastUpdated:173254844e4,description:"\u63D2\u4EF6\u7BA1\u7406\u5668\u652F\u6301\u901A\u8FC7\u754C\u9762\u6DFB\u52A0\u63D2\u4EF6\uFF0C\u4EE5\u7B80\u5355\u3001\u76F4\u89C2\uFF0C\u8F7B\u91CF\u7EA7\u7684\u4F7F\u7528\u4F53\u9A8C\u6765\u6269\u5C55 NocoBase \u7684\u529F\u80FD\u3002\u8F7B\u677E\u6269\u5C55\u548C\u5B9A\u5236\u5E94\u7528\u529F\u80FD\uFF0C\u5305\u62EC\u5B89\u88C5\u3001\u5347\u7EA7\u3001\u548C\u5378\u8F7D\u63D2\u4EF6"},sb=[{id:"\u63D2\u4EF6\u7BA1\u7406\u5668",depth:1,title:"\u63D2\u4EF6\u7BA1\u7406\u5668"},{id:"\u67E5\u770B\u63D2\u4EF6\u6587\u6863",depth:4,title:"\u67E5\u770B\u63D2\u4EF6\u6587\u6863"},{id:"\u6DFB\u52A0\u63D2\u4EF6",depth:4,title:"\u6DFB\u52A0\u63D2\u4EF6"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:4,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u7981\u7528\u63D2\u4EF6",depth:4,title:"\u7981\u7528\u63D2\u4EF6"},{id:"\u5220\u9664\u63D2\u4EF6",depth:4,title:"\u5220\u9664\u63D2\u4EF6"},{id:"\u66F4\u65B0\u63D2\u4EF6",depth:4,title:"\u66F4\u65B0\u63D2\u4EF6"}],ub=[{value:"\u63D2\u4EF6\u7BA1\u7406\u5668\u652F\u6301\u901A\u8FC7\u754C\u9762\u6DFB\u52A0\u63D2\u4EF6\uFF0C\u4EE5\u7B80\u5355\u3001\u76F4\u89C2\uFF0C\u8F7B\u91CF\u7EA7\u7684\u4F7F\u7528\u4F53\u9A8C\u6765\u6269\u5C55 NocoBase \u7684\u529F\u80FD\u3002\u8F7B\u677E\u6269\u5C55\u548C\u5B9A\u5236\u5E94\u7528\u529F\u80FD\uFF0C\u5305\u62EC\u5B89\u88C5\u3001\u5347\u7EA7\u3001\u548C\u5378\u8F7D\u63D2\u4EF6",paraId:0,tocIndex:0},{value:"\u63D2\u4EF6\u7BA1\u7406\u5668\u7684\u7EC4\u6210\u90E8\u5206",paraId:1,tocIndex:0},{value:"\u672C\u5730\u63D2\u4EF6/\u63D2\u4EF6\u5E02\u573A",paraId:2,tocIndex:0},{value:"\u63D2\u4EF6\u5206\u7C7B\uFF08\u5185\u7F6E\u3001\u542F\u7528\u3001\u672A\u542F\u7528\u3001\u6709\u95EE\u9898,\u652F\u6301\u6309\u63D2\u4EF6\u540D\u79F0\u6A21\u7CCA\u641C\u7D22\uFF09",paraId:2,tocIndex:0},{value:"\u6DFB\u52A0\u65B0\u63D2\u4EF6",paraId:2,tocIndex:0},{value:"\u63D2\u4EF6\u914D\u7F6E\u4E3B\u4F53",paraId:2,tocIndex:0},{value:"\u70B9\u51FB\u63D2\u4EF6\u53EF\u4EE5\u5FEB\u901F\u9605\u89C8\u63D2\u4EF6\u7684\u4ECB\u7ECD\u6587\u6863\uFF08\u5305\u62EC\u8BF4\u660E\u6587\u6863\u3001\u4F9D\u8D56\u517C\u5BB9\u6027\u68C0\u67E5\u3001\u66F4\u65B0\u65E5\u5FD7\uFF09",paraId:3,tocIndex:1},{value:"\u5373\u63D2\u5373\u7528\uFF0C\u53EF\u4EE5\u76F4\u63A5\u901A\u8FC7\u754C\u9762\u6DFB\u52A0\u63D2\u4EF6\uFF0C\u652F\u6301\u4ECE npm registry\uFF08\u53EF\u4EE5\u662F\u79C1\u6709\u7684\uFF09\u4E0B\u8F7D\u3001\u672C\u5730\u4E0A\u4F20\u3001URL \u4E0B\u8F7D",paraId:4,tocIndex:2},{value:"\u76EE\u524D\u4EC5 storage/plugins \u4E0B\u7684\u63D2\u4EF6\u624D\u6709\u66F4\u65B0\u64CD\u4F5C\uFF0C\u5982\u56FE",paraId:5,tocIndex:6}],pb={},Ib={title:"\u6269\u5C55\u8282\u70B9\u7C7B\u578B",toc:"menu",filename:"docs/en-US/plugins/workflow/development/instruction.md",lastUpdated:173254844e4,description:"\u8282\u70B9\u7684\u7C7B\u578B\u672C\u8D28\u4E0A\u5C31\u662F\u64CD\u4F5C\u6307\u4EE4\uFF0C\u4E0D\u540C\u7684\u6307\u4EE4\u4EE3\u8868\u6D41\u7A0B\u4E2D\u6267\u884C\u7684\u4E0D\u540C\u7684\u64CD\u4F5C\u3002"},_b=[{id:"\u6269\u5C55\u8282\u70B9\u7C7B\u578B",depth:1,title:"\u6269\u5C55\u8282\u70B9\u7C7B\u578B"},{id:"\u670D\u52A1\u7AEF",depth:2,title:"\u670D\u52A1\u7AEF"},{id:"\u5BA2\u6237\u7AEF",depth:2,title:"\u5BA2\u6237\u7AEF"}],vb=[{value:"\u8282\u70B9\u7684\u7C7B\u578B\u672C\u8D28\u4E0A\u5C31\u662F\u64CD\u4F5C\u6307\u4EE4\uFF0C\u4E0D\u540C\u7684\u6307\u4EE4\u4EE3\u8868\u6D41\u7A0B\u4E2D\u6267\u884C\u7684\u4E0D\u540C\u7684\u64CD\u4F5C\u3002",paraId:0,tocIndex:0},{value:"\u4E0E\u89E6\u53D1\u5668\u7C7B\u4F3C\uFF0C\u6269\u5C55\u8282\u70B9\u7684\u7C7B\u578B\u4E5F\u5206\u4E3A\u524D\u540E\u7AEF\u4E24\u90E8\u5206\u3002\u670D\u52A1\u7AEF\u9700\u8981\u5BF9\u6CE8\u518C\u7684\u6307\u4EE4\u8FDB\u884C\u903B\u8F91\u5B9E\u73B0\uFF0C\u5BA2\u6237\u7AEF\u9700\u8981\u63D0\u4F9B\u6307\u4EE4\u5185\u5BB9\u7684\u754C\u9762\u914D\u7F6E\u3002",paraId:1,tocIndex:0},{value:"\u6307\u4EE4\u7684\u57FA\u7840\u5185\u5BB9\u662F\u4E00\u4E2A\u51FD\u6570\uFF0C\u51FD\u6570\u4E2D\u53EF\u4EE5\u6267\u884C\u4EFB\u610F\u9700\u8981\u7684\u64CD\u4F5C\uFF0C\u4F8B\u5982\u6570\u636E\u5E93\u64CD\u4F5C\u3001\u6587\u4EF6\u64CD\u4F5C\u3001\u8C03\u7528\u7B2C\u4E09\u65B9 API \u7B49\u7B49\u3002\u53E6\u5916\uFF0C\u6307\u4EE4\u7684\u8FD4\u56DE\u5BF9\u8C61\u4E2D\u7684\u72B6\u6001\u503C\uFF0C\u5C06\u51B3\u5B9A\u8BE5\u8282\u70B9\u5728\u6D41\u7A0B\u4E2D\u7684\u540E\u7EED\u5904\u7406\u7684\u6D41\u5411\u3002",paraId:2,tocIndex:1},{value:"\u6700\u7B80\u5355\u7684\u6307\u4EE4\u53EA\u9700\u8981\u5B9A\u4E49\u4E00\u4E2A ",paraId:3,tocIndex:1},{value:"run",paraId:3,tocIndex:1},{value:" \u51FD\u6570\u5373\u53EF\uFF1A",paraId:3,tocIndex:1},{value:`import { JOB_STATUS } from '@nocobase/plugin-workflow'; export const myInstruction = { run(node, input, processor) { @@ -4978,7 +5030,7 @@ instructions.register('randomString', { return Random number string; }, }); -`,paraId:18,tocIndex:2},{value:"\u6CE8\uFF1A\u5BA2\u6237\u7AEF\u6CE8\u518C\u7684\u8282\u70B9\u7C7B\u578B\u6807\u8BC6\u5FC5\u987B\u4E0E\u670D\u52A1\u7AEF\u7684\u4FDD\u6301\u4E00\u81F4\uFF0C\u5426\u5219\u4F1A\u5BFC\u81F4\u9519\u8BEF\u3002",paraId:19,tocIndex:2},{value:"\u5B9A\u4E49\u8282\u70B9\u7C7B\u578B\u7684\u5176\u4ED6\u5185\u5BB9\u8BE6\u89C1 ",paraId:20,tocIndex:2},{value:"\u5DE5\u4F5C\u6D41 API \u53C2\u8003",paraId:21,tocIndex:2},{value:" \u90E8\u5206\u3002",paraId:20,tocIndex:2}],mb={},hb={title:"Overview",toc:"menu",filename:"docs/en-US/welcome/getting-started/deployment/index.md",lastUpdated:1732240239e3,description:"NocoBase supports three different installation methods, each with slightly different deployment procedures."},fb=[{id:"overview",depth:1,title:"Overview"}],xb=[{value:"NocoBase supports three different installation methods, each with slightly different deployment procedures.",paraId:0,tocIndex:0},{value:"Docker",paraId:1,tocIndex:0},{value:"create-nocobase-app",paraId:2,tocIndex:0},{value:"Git source code",paraId:3,tocIndex:0}],gb={},bb={title:"Schema components",toc:"menu",filename:"docs/en-US/development/client/ui-schema/components.md",lastUpdated:1732240239e3,description:"Field components are generally not used alone but are utilized within data display components."},yb=[{id:"schema-components",depth:1,title:"Schema components"},{id:"wrapper-components",depth:2,title:"Wrapper Components"},{id:"layout",depth:2,title:"Layout"},{id:"field-components",depth:2,title:"Field Components"},{id:"data-display-components",depth:2,title:"Data Display Components"},{id:"actions-onclick-event-components",depth:2,title:"Actions (onClick Event Components)"},{id:"others",depth:2,title:"Others"},{id:"use-cases-of-x-designer-and-x-initializer",depth:2,title:"Use Cases of x-designer and x-initializer"}],wb=[{value:"BlockItem",paraId:0,tocIndex:1},{value:"FormItem",paraId:0,tocIndex:1},{value:"CardItem",paraId:0,tocIndex:1},{value:"Page",paraId:1,tocIndex:2},{value:"Grid",paraId:1,tocIndex:2},{value:"Tabs",paraId:1,tocIndex:2},{value:"Space",paraId:1,tocIndex:2},{value:"Field components are generally not used alone but are utilized within data display components.",paraId:2,tocIndex:3},{value:"CollectionField: Universal component",paraId:3,tocIndex:3},{value:"Cascader",paraId:3,tocIndex:3},{value:"Checkbox",paraId:3,tocIndex:3},{value:"ColorSelect",paraId:3,tocIndex:3},{value:"DatePicker",paraId:3,tocIndex:3},{value:"Filter",paraId:3,tocIndex:3},{value:"Formula",paraId:3,tocIndex:3},{value:"IconPicker",paraId:3,tocIndex:3},{value:"Input",paraId:3,tocIndex:3},{value:"InputNumber",paraId:3,tocIndex:3},{value:"Markdown",paraId:3,tocIndex:3},{value:"Password",paraId:3,tocIndex:3},{value:"Percent",paraId:3,tocIndex:3},{value:"Radio",paraId:3,tocIndex:3},{value:"RecordPicker",paraId:3,tocIndex:3},{value:"RichText",paraId:3,tocIndex:3},{value:"Select",paraId:3,tocIndex:3},{value:"TimePicker",paraId:3,tocIndex:3},{value:"TreeSelect",paraId:3,tocIndex:3},{value:"Upload",paraId:3,tocIndex:3},{value:"These need to be used in conjunction with field components.",paraId:4,tocIndex:4},{value:"Calendar",paraId:5,tocIndex:4},{value:"Form",paraId:5,tocIndex:4},{value:"Kanban",paraId:5,tocIndex:4},{value:"Table",paraId:5,tocIndex:4},{value:"TableV2",paraId:5,tocIndex:4},{value:"Action",paraId:6,tocIndex:5},{value:"Action.Drawer",paraId:6,tocIndex:5},{value:"Action.Modal",paraId:6,tocIndex:5},{value:"ActionBar: Used for action layout",paraId:6,tocIndex:5},{value:"Menu",paraId:6,tocIndex:5},{value:"G2plot",paraId:7,tocIndex:6},{value:"Markdown.Void",paraId:7,tocIndex:6},{value:"x-designer",paraId:8},{value:"x-initializer",paraId:8},{value:"x-designer",paraId:9,tocIndex:7},{value:" is effective when ",paraId:9,tocIndex:7},{value:"x-decorator",paraId:9,tocIndex:7},{value:" or ",paraId:9,tocIndex:7},{value:"x-component",paraId:9,tocIndex:7},{value:" is one of the following components:",paraId:9,tocIndex:7},{value:"BlockItem",paraId:10,tocIndex:7},{value:"CardItem",paraId:10,tocIndex:7},{value:"FormItem",paraId:10,tocIndex:7},{value:"Table.Column",paraId:10,tocIndex:7},{value:"Tabs.TabPane",paraId:10,tocIndex:7},{value:"x-initializer",paraId:11,tocIndex:7},{value:" is effective when ",paraId:11,tocIndex:7},{value:"x-decorator",paraId:11,tocIndex:7},{value:" or ",paraId:11,tocIndex:7},{value:"x-component",paraId:11,tocIndex:7},{value:" is one of the following components:",paraId:11,tocIndex:7},{value:"ActionBar",paraId:12,tocIndex:7},{value:"BlockItem",paraId:12,tocIndex:7},{value:"CardItem",paraId:12,tocIndex:7},{value:"FormItem",paraId:12,tocIndex:7},{value:"Grid",paraId:12,tocIndex:7},{value:"Table",paraId:12,tocIndex:7},{value:"Tabs",paraId:12,tocIndex:7}],kb=e(17061),Ct=e.n(kb),Sb=e(17156),io=e.n(Sb),Ub={"docs-en-us-development-client-ui-schema-designable-demo-0":{component:n.memo(n.lazy(io()(Ct()().mark(function Vt(){var Ga,va,Fa,lt,Ka,ft,Ba,vt,ct,Za,xt,qt,st;return Ct()().wrap(function(At){for(;;)switch(At.prev=At.next){case 0:return At.next=2,Promise.resolve().then(e.t.bind(e,67294,19));case 2:return Ga=At.sent,va=Ga.default,At.next=6,Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(40071)]).then(e.bind(e,73377));case 6:return Fa=At.sent,lt=Fa.SchemaComponentProvider,Ka=Fa.SchemaComponent,ft=Fa.useDesignable,At.next=12,e.e(94350).then(e.bind(e,94350));case 12:return Ba=At.sent,vt=Ba.useFieldSchema,At.next=16,Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(25715),e.e(67050),e.e(93969)]).then(e.bind(e,93969));case 16:return ct=At.sent,Za=ct.Button,xt=ct.Space,qt=function(fn){var Xt=ft(),po=Xt.insertAdjacent,Uo=vt();return va.createElement("div",null,va.createElement("h1",null,Uo.title," - ",Uo.name),va.createElement(xt,null,va.createElement(Za,{onClick:function(){po("beforeBegin",{title:"beforeBegin","x-component":"Hello"})}},"before begin"),va.createElement(Za,{onClick:function(){po("afterBegin",{title:"afterBegin","x-component":"Hello"})}},"after begin"),va.createElement(Za,{onClick:function(){po("beforeEnd",{title:"beforeEnd","x-component":"Hello"})}},"before end"),va.createElement(Za,{onClick:function(){po("afterEnd",{title:"afterEnd","x-component":"Hello"})}},"after end")),va.createElement("div",{style:{margin:50}},fn.children))},st=function(fn){return va.createElement("div",null,fn.children)},At.abrupt("return",{default:function(){return va.createElement(lt,{components:{Page:st,Hello:qt}},va.createElement(Ka,{schema:{type:"void",name:"page","x-component":"Page",properties:{hello1:{type:"void",title:"Main","x-component":"Hello"}}}}))}});case 22:case"end":return At.stop()}},Vt)})))),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-designable-demo-0",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:`import React from 'react'; +`,paraId:18,tocIndex:2},{value:"\u6CE8\uFF1A\u5BA2\u6237\u7AEF\u6CE8\u518C\u7684\u8282\u70B9\u7C7B\u578B\u6807\u8BC6\u5FC5\u987B\u4E0E\u670D\u52A1\u7AEF\u7684\u4FDD\u6301\u4E00\u81F4\uFF0C\u5426\u5219\u4F1A\u5BFC\u81F4\u9519\u8BEF\u3002",paraId:19,tocIndex:2},{value:"\u5B9A\u4E49\u8282\u70B9\u7C7B\u578B\u7684\u5176\u4ED6\u5185\u5BB9\u8BE6\u89C1 ",paraId:20,tocIndex:2},{value:"\u5DE5\u4F5C\u6D41 API \u53C2\u8003",paraId:21,tocIndex:2},{value:" \u90E8\u5206\u3002",paraId:20,tocIndex:2}],mb={},hb={title:"Overview",toc:"menu",filename:"docs/en-US/welcome/getting-started/deployment/index.md",lastUpdated:173254844e4,description:"NocoBase supports three different installation methods, each with slightly different deployment procedures."},fb=[{id:"overview",depth:1,title:"Overview"}],xb=[{value:"NocoBase supports three different installation methods, each with slightly different deployment procedures.",paraId:0,tocIndex:0},{value:"Docker",paraId:1,tocIndex:0},{value:"create-nocobase-app",paraId:2,tocIndex:0},{value:"Git source code",paraId:3,tocIndex:0}],gb={},bb={title:"Schema components",toc:"menu",filename:"docs/en-US/development/client/ui-schema/components.md",lastUpdated:173254844e4,description:"Field components are generally not used alone but are utilized within data display components."},yb=[{id:"schema-components",depth:1,title:"Schema components"},{id:"wrapper-components",depth:2,title:"Wrapper Components"},{id:"layout",depth:2,title:"Layout"},{id:"field-components",depth:2,title:"Field Components"},{id:"data-display-components",depth:2,title:"Data Display Components"},{id:"actions-onclick-event-components",depth:2,title:"Actions (onClick Event Components)"},{id:"others",depth:2,title:"Others"},{id:"use-cases-of-x-designer-and-x-initializer",depth:2,title:"Use Cases of x-designer and x-initializer"}],wb=[{value:"BlockItem",paraId:0,tocIndex:1},{value:"FormItem",paraId:0,tocIndex:1},{value:"CardItem",paraId:0,tocIndex:1},{value:"Page",paraId:1,tocIndex:2},{value:"Grid",paraId:1,tocIndex:2},{value:"Tabs",paraId:1,tocIndex:2},{value:"Space",paraId:1,tocIndex:2},{value:"Field components are generally not used alone but are utilized within data display components.",paraId:2,tocIndex:3},{value:"CollectionField: Universal component",paraId:3,tocIndex:3},{value:"Cascader",paraId:3,tocIndex:3},{value:"Checkbox",paraId:3,tocIndex:3},{value:"ColorSelect",paraId:3,tocIndex:3},{value:"DatePicker",paraId:3,tocIndex:3},{value:"Filter",paraId:3,tocIndex:3},{value:"Formula",paraId:3,tocIndex:3},{value:"IconPicker",paraId:3,tocIndex:3},{value:"Input",paraId:3,tocIndex:3},{value:"InputNumber",paraId:3,tocIndex:3},{value:"Markdown",paraId:3,tocIndex:3},{value:"Password",paraId:3,tocIndex:3},{value:"Percent",paraId:3,tocIndex:3},{value:"Radio",paraId:3,tocIndex:3},{value:"RecordPicker",paraId:3,tocIndex:3},{value:"RichText",paraId:3,tocIndex:3},{value:"Select",paraId:3,tocIndex:3},{value:"TimePicker",paraId:3,tocIndex:3},{value:"TreeSelect",paraId:3,tocIndex:3},{value:"Upload",paraId:3,tocIndex:3},{value:"These need to be used in conjunction with field components.",paraId:4,tocIndex:4},{value:"Calendar",paraId:5,tocIndex:4},{value:"Form",paraId:5,tocIndex:4},{value:"Kanban",paraId:5,tocIndex:4},{value:"Table",paraId:5,tocIndex:4},{value:"TableV2",paraId:5,tocIndex:4},{value:"Action",paraId:6,tocIndex:5},{value:"Action.Drawer",paraId:6,tocIndex:5},{value:"Action.Modal",paraId:6,tocIndex:5},{value:"ActionBar: Used for action layout",paraId:6,tocIndex:5},{value:"Menu",paraId:6,tocIndex:5},{value:"G2plot",paraId:7,tocIndex:6},{value:"Markdown.Void",paraId:7,tocIndex:6},{value:"x-designer",paraId:8},{value:"x-initializer",paraId:8},{value:"x-designer",paraId:9,tocIndex:7},{value:" is effective when ",paraId:9,tocIndex:7},{value:"x-decorator",paraId:9,tocIndex:7},{value:" or ",paraId:9,tocIndex:7},{value:"x-component",paraId:9,tocIndex:7},{value:" is one of the following components:",paraId:9,tocIndex:7},{value:"BlockItem",paraId:10,tocIndex:7},{value:"CardItem",paraId:10,tocIndex:7},{value:"FormItem",paraId:10,tocIndex:7},{value:"Table.Column",paraId:10,tocIndex:7},{value:"Tabs.TabPane",paraId:10,tocIndex:7},{value:"x-initializer",paraId:11,tocIndex:7},{value:" is effective when ",paraId:11,tocIndex:7},{value:"x-decorator",paraId:11,tocIndex:7},{value:" or ",paraId:11,tocIndex:7},{value:"x-component",paraId:11,tocIndex:7},{value:" is one of the following components:",paraId:11,tocIndex:7},{value:"ActionBar",paraId:12,tocIndex:7},{value:"BlockItem",paraId:12,tocIndex:7},{value:"CardItem",paraId:12,tocIndex:7},{value:"FormItem",paraId:12,tocIndex:7},{value:"Grid",paraId:12,tocIndex:7},{value:"Table",paraId:12,tocIndex:7},{value:"Tabs",paraId:12,tocIndex:7}],kb=e(17061),Ct=e.n(kb),Sb=e(17156),io=e.n(Sb),Ub={"docs-en-us-development-client-ui-schema-designable-demo-0":{component:n.memo(n.lazy(io()(Ct()().mark(function Vt(){var Ga,va,Fa,lt,Ka,ft,Ba,vt,ct,Za,xt,qt,st;return Ct()().wrap(function(At){for(;;)switch(At.prev=At.next){case 0:return At.next=2,Promise.resolve().then(e.t.bind(e,67294,19));case 2:return Ga=At.sent,va=Ga.default,At.next=6,Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(40071)]).then(e.bind(e,73377));case 6:return Fa=At.sent,lt=Fa.SchemaComponentProvider,Ka=Fa.SchemaComponent,ft=Fa.useDesignable,At.next=12,e.e(94350).then(e.bind(e,94350));case 12:return Ba=At.sent,vt=Ba.useFieldSchema,At.next=16,Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(25715),e.e(67050),e.e(93969)]).then(e.bind(e,93969));case 16:return ct=At.sent,Za=ct.Button,xt=ct.Space,qt=function(fn){var Xt=ft(),po=Xt.insertAdjacent,Uo=vt();return va.createElement("div",null,va.createElement("h1",null,Uo.title," - ",Uo.name),va.createElement(xt,null,va.createElement(Za,{onClick:function(){po("beforeBegin",{title:"beforeBegin","x-component":"Hello"})}},"before begin"),va.createElement(Za,{onClick:function(){po("afterBegin",{title:"afterBegin","x-component":"Hello"})}},"after begin"),va.createElement(Za,{onClick:function(){po("beforeEnd",{title:"beforeEnd","x-component":"Hello"})}},"before end"),va.createElement(Za,{onClick:function(){po("afterEnd",{title:"afterEnd","x-component":"Hello"})}},"after end")),va.createElement("div",{style:{margin:50}},fn.children))},st=function(fn){return va.createElement("div",null,fn.children)},At.abrupt("return",{default:function(){return va.createElement(lt,{components:{Page:st,Hello:qt}},va.createElement(Ka,{schema:{type:"void",name:"page","x-component":"Page",properties:{hello1:{type:"void",title:"Main","x-component":"Hello"}}}}))}});case 22:case"end":return At.stop()}},Vt)})))),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-designable-demo-0",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:`import React from 'react'; import { SchemaComponentProvider, SchemaComponent, @@ -5141,7 +5193,7 @@ export default () => { /> ); -};`},react:{type:"NPM",value:"18.1.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},"@formily/react":{type:"NPM",value:"2.3.0"},antd:{type:"NPM",value:"5.16.1"}}}}},Pb={title:"Designable",toc:"menu",filename:"docs/en-US/development/client/ui-schema/designable.md",lastUpdated:1732240239e3,description:"NocoBase provides design capabilities for Schema through the createDesignable() method."},Tb=[{id:"designable",depth:1,title:"Designable"},{id:"createdesignable-vs-usedesignable",depth:2,title:"createDesignable vs useDesignable"},{id:"design-capabilities-of-designable",depth:2,title:"Design capabilities of designable"},{id:"add-insert-at-an-adjacent-position-of-the-current-node",depth:3,title:"Add: Insert at an adjacent position of the current node"},{id:"query-find-child-nodes",depth:3,title:"Query: Find child nodes"},{id:"findproperties",depth:4,title:"findProperties"},{id:"findproperty",depth:4,title:"findProperty"},{id:"modify-change-schema-parameters",depth:3,title:"Modify: Change schema parameters"},{id:"delete-delete-the-current-node-or-a-specific-child-node",depth:3,title:"Delete: Delete the current node or a specific child node"},{id:"move-move-between-nodes",depth:3,title:"Move: Move between nodes"}],Cb=[{value:"NocoBase provides design capabilities for Schema through the ",paraId:0,tocIndex:0},{value:"createDesignable()",paraId:0,tocIndex:0},{value:" method.",paraId:0,tocIndex:0},{value:`import React from 'react'; +};`},react:{type:"NPM",value:"18.1.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},"@formily/react":{type:"NPM",value:"2.3.0"},antd:{type:"NPM",value:"5.16.1"}}}}},Pb={title:"Designable",toc:"menu",filename:"docs/en-US/development/client/ui-schema/designable.md",lastUpdated:173254844e4,description:"NocoBase provides design capabilities for Schema through the createDesignable() method."},Tb=[{id:"designable",depth:1,title:"Designable"},{id:"createdesignable-vs-usedesignable",depth:2,title:"createDesignable vs useDesignable"},{id:"design-capabilities-of-designable",depth:2,title:"Design capabilities of designable"},{id:"add-insert-at-an-adjacent-position-of-the-current-node",depth:3,title:"Add: Insert at an adjacent position of the current node"},{id:"query-find-child-nodes",depth:3,title:"Query: Find child nodes"},{id:"findproperties",depth:4,title:"findProperties"},{id:"findproperty",depth:4,title:"findProperty"},{id:"modify-change-schema-parameters",depth:3,title:"Modify: Change schema parameters"},{id:"delete-delete-the-current-node-or-a-specific-child-node",depth:3,title:"Delete: Delete the current node or a specific child node"},{id:"move-move-between-nodes",depth:3,title:"Move: Move between nodes"}],Cb=[{value:"NocoBase provides design capabilities for Schema through the ",paraId:0,tocIndex:0},{value:"createDesignable()",paraId:0,tocIndex:0},{value:" method.",paraId:0,tocIndex:0},{value:`import React from 'react'; import { Schema } from '@formily/json-schema'; import { createDesignable } from '@nocobase/client'; @@ -5477,8 +5529,8 @@ export default function App() { ); } -`,paraId:29,tocIndex:9}],Ab={},qb={title:"Bar Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/bar.md",lastUpdated:1732240239e3,description:"Configure 1 measure and 2 dimensions. 1 dimension is used as the Y-axis field, and the other as the series field."},Eb=[{id:"bar-chart",depth:1,title:"Bar Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-or-more-measures-1-dimension",depth:3,title:"1 or more measures, 1 dimension"},{id:"1-measure-1-axis-dimension-one-category-dimension",depth:3,title:"1 measure, 1 axis dimension, one category dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],Db=[{value:"Configure 1 measure and 2 dimensions. 1 dimension is used as the Y-axis field, and the other as the series field.",paraId:0,tocIndex:3},{value:"Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"yField",paraId:1,tocIndex:4},{value:"The dimension field for the Y-axis",paraId:1,tocIndex:4},{value:"seriesField",paraId:1,tocIndex:4},{value:"The dimension field for categorization",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Set the size of the chart, either with a fixed aspect ratio or a fixed height",paraId:1,tocIndex:4},{value:"Light mode theme",paraId:1,tocIndex:4},{value:"Choose this option to preview the chart when the system is in light mode",paraId:1,tocIndex:4},{value:"Dark mode theme",paraId:1,tocIndex:4},{value:"Choose this option to preview the chart when the system is in dark mode",paraId:1,tocIndex:4},{value:"Show legend",paraId:1,tocIndex:4},{value:"Control whether the legend is displayed",paraId:1,tocIndex:4},{value:"Legend orient",paraId:1,tocIndex:4},{value:"Control the direction of the legend, either horizontal or vertical",paraId:1,tocIndex:4},{value:"Legend position (left, bottom, right, top)",paraId:1,tocIndex:4},{value:"Control the relative position of the legend",paraId:1,tocIndex:4},{value:"Label type",paraId:1,tocIndex:4},{value:"Control whether the labels are displayed and the type of labels shown",paraId:1,tocIndex:4},{value:"Label position",paraId:1,tocIndex:4},{value:"Control the position of the labels, such as top, inside, or inside top",paraId:1,tocIndex:4},{value:"Stack",paraId:1,tocIndex:4},{value:"Control whether the bars are stacked: not stacked, stacked, or percentage stacked",paraId:1,tocIndex:4},{value:"Bar width (min, max)",paraId:1,tocIndex:4},{value:"Control the width of the bars, which can be a fixed value or percentage, and can even be negative",paraId:1,tocIndex:4},{value:"Bar gap",paraId:1,tocIndex:4},{value:"Spacing between bars, as a percentage of the bar width",paraId:1,tocIndex:4},{value:"Bar category gap",paraId:1,tocIndex:4},{value:"Spacing between different categories, as a percentage of the bar width",paraId:1,tocIndex:4},{value:"Color by",paraId:1,tocIndex:4},{value:"Control whether the bar colors are distinguished by category or data",paraId:1,tocIndex:4},{value:"Colors",paraId:1,tocIndex:4},{value:"Precisely control the color for each category",paraId:1,tocIndex:4},{value:"X-Axis title",paraId:1,tocIndex:4},{value:"Control the position of the X-axis title",paraId:1,tocIndex:4},{value:"Y-Axis title",paraId:1,tocIndex:4},{value:"Control the position of the Y-axis title",paraId:1,tocIndex:4},{value:"Y-Axis label rotate",paraId:1,tocIndex:4},{value:"Control the rotation angle of the Y-axis labels, useful for displaying more labels when space is tight",paraId:1,tocIndex:4},{value:"Padding",paraId:1,tocIndex:4},{value:"Adjust the padding inside the chart",paraId:1,tocIndex:4},{value:"Split line",paraId:1,tocIndex:4},{value:"Control whether the grid lines are displayed and their style",paraId:1,tocIndex:4}],Ob={},Rb={title:"Pie Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/pie.md",lastUpdated:1732240239e3},Mb=[{id:"pie-chart",depth:1,title:"Pie Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-metric-1-dimension",depth:3,title:"1 Metric, 1 Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],Lb=[{value:"Option",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Size",paraId:0,tocIndex:3},{value:"Sets the chart's size, with a fixed aspect ratio or fixed height",paraId:0,tocIndex:3},{value:"Light mode theme",paraId:0,tocIndex:3},{value:"Must be selected to preview when the system is in light mode",paraId:0,tocIndex:3},{value:"Dark mode theme",paraId:0,tocIndex:3},{value:"Must be selected to preview when the system is in dark mode",paraId:0,tocIndex:3},{value:"Show legend",paraId:0,tocIndex:3},{value:"Controls whether the legend is displayed",paraId:0,tocIndex:3},{value:"Legend orient",paraId:0,tocIndex:3},{value:"Controls the orientation of the legend, either horizontal or vertical",paraId:0,tocIndex:3},{value:"Legend position (left, bottom, right, top)",paraId:0,tocIndex:3},{value:"Controls the relative position of the legend",paraId:0,tocIndex:3},{value:"Label type",paraId:0,tocIndex:3},{value:"Controls whether labels are displayed and their type",paraId:0,tocIndex:3},{value:"Show label line",paraId:0,tocIndex:3},{value:"Controls whether label lines are displayed, effective only when the labels are outside the pie",paraId:0,tocIndex:3},{value:"Label position",paraId:0,tocIndex:3},{value:"Controls the position of the labels: inside, outside, or middle. When in the middle, the label only appears when hovering over the corresponding part of the chart",paraId:0,tocIndex:3},{value:"Outter radius",paraId:0,tocIndex:3},{value:"Adjusts the outer radius of the chart",paraId:0,tocIndex:3},{value:"Inner radius",paraId:0,tocIndex:3},{value:"Adjusts the inner radius of the chart. Can be used to create a donut chart",paraId:0,tocIndex:3},{value:"Center coordinates",paraId:0,tocIndex:3},{value:"Controls the position of the chart, which can be set with fixed values or percentages",paraId:0,tocIndex:3},{value:"Colors",paraId:0,tocIndex:3},{value:"Fine-tunes the color for each category",paraId:0,tocIndex:3}],Nb={},zb={title:"Filter Blocks",toc:"menu",filename:"docs/en-US/handbook/data-visualization/user/filter.md",lastUpdated:1732240239e3,description:"The filter block within a chart block allows for dynamic filtering across multiple charts within the same block."},Fb=[{id:"filter-blocks",depth:1,title:"Filter Blocks"},{id:"enablingdisabling",depth:2,title:"Enabling/Disabling"},{id:"configuring-fields",depth:2,title:"Configuring Fields"},{id:"collection-fields",depth:3,title:"Collection Fields"},{id:"custom-fields",depth:3,title:"Custom Fields"},{id:"configuring-block-actions",depth:2,title:"Configuring Block Actions"}],Bb=[{value:"The filter block within a chart block allows for dynamic filtering across multiple charts within the same block.",paraId:0,tocIndex:0},{value:'To enable or disable a filter block, navigate within the chart block and select "Add Block" - "Filter."',paraId:1,tocIndex:1},{value:"For charts within the current chart block, you can create a filter form field by selecting the relevant fields directly from the associated Collection.",paraId:2,tocIndex:3},{value:"The form fields can be configured as follows:",paraId:3,tocIndex:3},{value:"Edit field title.",paraId:4,tocIndex:3},{value:"Edit description.",paraId:5,tocIndex:3},{value:"Define the operator to be used when applying the filter.",paraId:6,tocIndex:3},{value:`Assign a default value to the field, utilizing variables if needed. The variable\u2019s data type must align with the data type of the current field. -`,paraId:7,tocIndex:3},{value:"For instance:",paraId:8,tocIndex:3},{value:"Set the default value to the current user ID to automatically filter data for the current user when the page loads.",paraId:9,tocIndex:3},{value:"Set the default value to the current date to automatically filter data for the current date when the page loads.",paraId:9,tocIndex:3},{value:"In certain scenarios, you may need to use a single filter field to filter different fields across various tables. For example, a single date field might be used to filter different date fields in different tables. In such cases, you can opt to create a custom field.",paraId:10,tocIndex:4},{value:"When adding a custom field, you'll need to specify the field title, choose the appropriate field component, and configure it accordingly. Additionally, you can select a field from the data tables used in the current block to apply that field's metadata configuration directly, avoiding redundancy.",paraId:11,tocIndex:4},{value:'To implement a custom filter field, open the configuration of the relevant chart, then in the data query filter settings, add filter conditions using variables from the "Current filter." Ensure that the type of the field being filtered matches the type of the custom filter field.',paraId:12,tocIndex:4},{value:"For custom fields, you can also set the title, description, and default value.",paraId:13,tocIndex:4},{value:"Filter:",paraId:14,tocIndex:5},{value:" Apply the filter conditions.",paraId:14,tocIndex:5},{value:"Reset:",paraId:14,tocIndex:5},{value:" Reset the filter form.",paraId:14,tocIndex:5},{value:"Collapse / Expand:",paraId:14,tocIndex:5},{value:" Collapse into a single row or expand into multiple rows.",paraId:14,tocIndex:5}],jb={},Hb={title:"Development",toc:"menu",filename:"docs/en-US/handbook/file-manager/development/index.md",lastUpdated:1732240239e3,description:"For uploaded files, the client UI can display different previews based on file types. The attachment field of file-manager uses a built-in browser-based (iframe) file preview capacity, supporting most file types (such as images, videos, audio, and PDFs) for direct preview in the browser. When a file type is not supported for browser preview or requires special interaction, additional preview components can be extended based on the file type."},Wb=[{id:"development",depth:1,title:"Development"},{id:"extend-client-file-type",depth:2,title:"Extend client file type"},{id:"example",depth:3,title:"Example"},{id:"api",depth:3,title:"API"},{id:"attachmentfiletypes",depth:4,title:"attachmentFileTypes"},{id:"attachmentfiletypesadd",depth:4,title:"attachmentFileTypes.add()"},{id:"attachmentfiletype",depth:4,title:"AttachmentFileType"},{id:"match",depth:5,title:"match()"},{id:"previewer",depth:5,title:"Previewer"}],$b=[{value:"For uploaded files, the client UI can display different previews based on file types. The attachment field of file-manager uses a built-in browser-based (iframe) file preview capacity, supporting most file types (such as images, videos, audio, and PDFs) for direct preview in the browser. When a file type is not supported for browser preview or requires special interaction, additional preview components can be extended based on the file type.",paraId:0,tocIndex:1},{value:"For example, if you want to extend a carousel component for image files, you can use the following code:",paraId:1,tocIndex:2},{value:`import match from 'mime-match'; +`,paraId:29,tocIndex:9}],Ab={},qb={title:"Bar Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/bar.md",lastUpdated:173254844e4,description:"Configure 1 measure and 2 dimensions. 1 dimension is used as the Y-axis field, and the other as the series field."},Eb=[{id:"bar-chart",depth:1,title:"Bar Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-or-more-measures-1-dimension",depth:3,title:"1 or more measures, 1 dimension"},{id:"1-measure-1-axis-dimension-one-category-dimension",depth:3,title:"1 measure, 1 axis dimension, one category dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],Db=[{value:"Configure 1 measure and 2 dimensions. 1 dimension is used as the Y-axis field, and the other as the series field.",paraId:0,tocIndex:3},{value:"Option",paraId:1,tocIndex:4},{value:"Description",paraId:1,tocIndex:4},{value:"yField",paraId:1,tocIndex:4},{value:"The dimension field for the Y-axis",paraId:1,tocIndex:4},{value:"seriesField",paraId:1,tocIndex:4},{value:"The dimension field for categorization",paraId:1,tocIndex:4},{value:"Size",paraId:1,tocIndex:4},{value:"Set the size of the chart, either with a fixed aspect ratio or a fixed height",paraId:1,tocIndex:4},{value:"Light mode theme",paraId:1,tocIndex:4},{value:"Choose this option to preview the chart when the system is in light mode",paraId:1,tocIndex:4},{value:"Dark mode theme",paraId:1,tocIndex:4},{value:"Choose this option to preview the chart when the system is in dark mode",paraId:1,tocIndex:4},{value:"Show legend",paraId:1,tocIndex:4},{value:"Control whether the legend is displayed",paraId:1,tocIndex:4},{value:"Legend orient",paraId:1,tocIndex:4},{value:"Control the direction of the legend, either horizontal or vertical",paraId:1,tocIndex:4},{value:"Legend position (left, bottom, right, top)",paraId:1,tocIndex:4},{value:"Control the relative position of the legend",paraId:1,tocIndex:4},{value:"Label type",paraId:1,tocIndex:4},{value:"Control whether the labels are displayed and the type of labels shown",paraId:1,tocIndex:4},{value:"Label position",paraId:1,tocIndex:4},{value:"Control the position of the labels, such as top, inside, or inside top",paraId:1,tocIndex:4},{value:"Stack",paraId:1,tocIndex:4},{value:"Control whether the bars are stacked: not stacked, stacked, or percentage stacked",paraId:1,tocIndex:4},{value:"Bar width (min, max)",paraId:1,tocIndex:4},{value:"Control the width of the bars, which can be a fixed value or percentage, and can even be negative",paraId:1,tocIndex:4},{value:"Bar gap",paraId:1,tocIndex:4},{value:"Spacing between bars, as a percentage of the bar width",paraId:1,tocIndex:4},{value:"Bar category gap",paraId:1,tocIndex:4},{value:"Spacing between different categories, as a percentage of the bar width",paraId:1,tocIndex:4},{value:"Color by",paraId:1,tocIndex:4},{value:"Control whether the bar colors are distinguished by category or data",paraId:1,tocIndex:4},{value:"Colors",paraId:1,tocIndex:4},{value:"Precisely control the color for each category",paraId:1,tocIndex:4},{value:"X-Axis title",paraId:1,tocIndex:4},{value:"Control the position of the X-axis title",paraId:1,tocIndex:4},{value:"Y-Axis title",paraId:1,tocIndex:4},{value:"Control the position of the Y-axis title",paraId:1,tocIndex:4},{value:"Y-Axis label rotate",paraId:1,tocIndex:4},{value:"Control the rotation angle of the Y-axis labels, useful for displaying more labels when space is tight",paraId:1,tocIndex:4},{value:"Padding",paraId:1,tocIndex:4},{value:"Adjust the padding inside the chart",paraId:1,tocIndex:4},{value:"Split line",paraId:1,tocIndex:4},{value:"Control whether the grid lines are displayed and their style",paraId:1,tocIndex:4}],Ob={},Rb={title:"Pie Chart",toc:"menu",filename:"docs/en-US/handbook/data-visualization/echarts/pie.md",lastUpdated:173254844e4},Mb=[{id:"pie-chart",depth:1,title:"Pie Chart"},{id:"data-configuration",depth:2,title:"Data Configuration"},{id:"1-metric-1-dimension",depth:3,title:"1 Metric, 1 Dimension"},{id:"configuration-options",depth:2,title:"Configuration Options"}],Lb=[{value:"Option",paraId:0,tocIndex:3},{value:"Description",paraId:0,tocIndex:3},{value:"Size",paraId:0,tocIndex:3},{value:"Sets the chart's size, with a fixed aspect ratio or fixed height",paraId:0,tocIndex:3},{value:"Light mode theme",paraId:0,tocIndex:3},{value:"Must be selected to preview when the system is in light mode",paraId:0,tocIndex:3},{value:"Dark mode theme",paraId:0,tocIndex:3},{value:"Must be selected to preview when the system is in dark mode",paraId:0,tocIndex:3},{value:"Show legend",paraId:0,tocIndex:3},{value:"Controls whether the legend is displayed",paraId:0,tocIndex:3},{value:"Legend orient",paraId:0,tocIndex:3},{value:"Controls the orientation of the legend, either horizontal or vertical",paraId:0,tocIndex:3},{value:"Legend position (left, bottom, right, top)",paraId:0,tocIndex:3},{value:"Controls the relative position of the legend",paraId:0,tocIndex:3},{value:"Label type",paraId:0,tocIndex:3},{value:"Controls whether labels are displayed and their type",paraId:0,tocIndex:3},{value:"Show label line",paraId:0,tocIndex:3},{value:"Controls whether label lines are displayed, effective only when the labels are outside the pie",paraId:0,tocIndex:3},{value:"Label position",paraId:0,tocIndex:3},{value:"Controls the position of the labels: inside, outside, or middle. When in the middle, the label only appears when hovering over the corresponding part of the chart",paraId:0,tocIndex:3},{value:"Outter radius",paraId:0,tocIndex:3},{value:"Adjusts the outer radius of the chart",paraId:0,tocIndex:3},{value:"Inner radius",paraId:0,tocIndex:3},{value:"Adjusts the inner radius of the chart. Can be used to create a donut chart",paraId:0,tocIndex:3},{value:"Center coordinates",paraId:0,tocIndex:3},{value:"Controls the position of the chart, which can be set with fixed values or percentages",paraId:0,tocIndex:3},{value:"Colors",paraId:0,tocIndex:3},{value:"Fine-tunes the color for each category",paraId:0,tocIndex:3}],Nb={},zb={title:"Filter Blocks",toc:"menu",filename:"docs/en-US/handbook/data-visualization/user/filter.md",lastUpdated:173254844e4,description:"The filter block within a chart block allows for dynamic filtering across multiple charts within the same block."},Fb=[{id:"filter-blocks",depth:1,title:"Filter Blocks"},{id:"enablingdisabling",depth:2,title:"Enabling/Disabling"},{id:"configuring-fields",depth:2,title:"Configuring Fields"},{id:"collection-fields",depth:3,title:"Collection Fields"},{id:"custom-fields",depth:3,title:"Custom Fields"},{id:"configuring-block-actions",depth:2,title:"Configuring Block Actions"}],Bb=[{value:"The filter block within a chart block allows for dynamic filtering across multiple charts within the same block.",paraId:0,tocIndex:0},{value:'To enable or disable a filter block, navigate within the chart block and select "Add Block" - "Filter."',paraId:1,tocIndex:1},{value:"For charts within the current chart block, you can create a filter form field by selecting the relevant fields directly from the associated Collection.",paraId:2,tocIndex:3},{value:"The form fields can be configured as follows:",paraId:3,tocIndex:3},{value:"Edit field title.",paraId:4,tocIndex:3},{value:"Edit description.",paraId:5,tocIndex:3},{value:"Define the operator to be used when applying the filter.",paraId:6,tocIndex:3},{value:`Assign a default value to the field, utilizing variables if needed. The variable\u2019s data type must align with the data type of the current field. +`,paraId:7,tocIndex:3},{value:"For instance:",paraId:8,tocIndex:3},{value:"Set the default value to the current user ID to automatically filter data for the current user when the page loads.",paraId:9,tocIndex:3},{value:"Set the default value to the current date to automatically filter data for the current date when the page loads.",paraId:9,tocIndex:3},{value:"In certain scenarios, you may need to use a single filter field to filter different fields across various tables. For example, a single date field might be used to filter different date fields in different tables. In such cases, you can opt to create a custom field.",paraId:10,tocIndex:4},{value:"When adding a custom field, you'll need to specify the field title, choose the appropriate field component, and configure it accordingly. Additionally, you can select a field from the data tables used in the current block to apply that field's metadata configuration directly, avoiding redundancy.",paraId:11,tocIndex:4},{value:'To implement a custom filter field, open the configuration of the relevant chart, then in the data query filter settings, add filter conditions using variables from the "Current filter." Ensure that the type of the field being filtered matches the type of the custom filter field.',paraId:12,tocIndex:4},{value:"For custom fields, you can also set the title, description, and default value.",paraId:13,tocIndex:4},{value:"Filter:",paraId:14,tocIndex:5},{value:" Apply the filter conditions.",paraId:14,tocIndex:5},{value:"Reset:",paraId:14,tocIndex:5},{value:" Reset the filter form.",paraId:14,tocIndex:5},{value:"Collapse / Expand:",paraId:14,tocIndex:5},{value:" Collapse into a single row or expand into multiple rows.",paraId:14,tocIndex:5}],jb={},Hb={title:"Development",toc:"menu",filename:"docs/en-US/handbook/file-manager/development/index.md",lastUpdated:173254844e4,description:"For uploaded files, the client UI can display different previews based on file types. The attachment field of file-manager uses a built-in browser-based (iframe) file preview capacity, supporting most file types (such as images, videos, audio, and PDFs) for direct preview in the browser. When a file type is not supported for browser preview or requires special interaction, additional preview components can be extended based on the file type."},Wb=[{id:"development",depth:1,title:"Development"},{id:"extend-client-file-type",depth:2,title:"Extend client file type"},{id:"example",depth:3,title:"Example"},{id:"api",depth:3,title:"API"},{id:"attachmentfiletypes",depth:4,title:"attachmentFileTypes"},{id:"attachmentfiletypesadd",depth:4,title:"attachmentFileTypes.add()"},{id:"attachmentfiletype",depth:4,title:"AttachmentFileType"},{id:"match",depth:5,title:"match()"},{id:"previewer",depth:5,title:"Previewer"}],$b=[{value:"For uploaded files, the client UI can display different previews based on file types. The attachment field of file-manager uses a built-in browser-based (iframe) file preview capacity, supporting most file types (such as images, videos, audio, and PDFs) for direct preview in the browser. When a file type is not supported for browser preview or requires special interaction, additional preview components can be extended based on the file type.",paraId:0,tocIndex:1},{value:"For example, if you want to extend a carousel component for image files, you can use the following code:",paraId:1,tocIndex:2},{value:`import match from 'mime-match'; import { Plugin, attachmentFileTypes } from '@nocobase/client'; class MyPlugin extends Plugin { @@ -5552,14 +5604,14 @@ export class AttachmentFileTypes { } `,paraId:6,tocIndex:3},{value:"attachmentFileTypes",paraId:7},{value:"attachmentFileTypes",paraId:8,tocIndex:4},{value:" is a global instance which could be imported from ",paraId:8,tocIndex:4},{value:"@nocobase/client",paraId:8,tocIndex:4},{value:" package:",paraId:8,tocIndex:4},{value:`import { attachmentFileTypes } from '@nocobase/client'; `,paraId:9,tocIndex:4},{value:"attachmentFileTypes.add()",paraId:7},{value:"Register file type descriptor to the file type registry. The type of the descriptor is ",paraId:10,tocIndex:5},{value:"AttachmentFileType",paraId:10,tocIndex:5},{value:".",paraId:10,tocIndex:5},{value:"AttachmentFileType",paraId:7},{value:"match()",paraId:7},{value:"The match method of file type.",paraId:11,tocIndex:7},{value:"The argument ",paraId:12,tocIndex:7},{value:"file",paraId:12,tocIndex:7},{value:" is the uploaded file data object, including some properties could be used to check types.",paraId:12,tocIndex:7},{value:"mimetype",paraId:13,tocIndex:7},{value:": Mimetype",paraId:13,tocIndex:7},{value:"extname",paraId:13,tocIndex:7},{value:': Extension name of file, including "."',paraId:13,tocIndex:7},{value:"path",paraId:13,tocIndex:7},{value:": Relative path of the file storing",paraId:13,tocIndex:7},{value:"url",paraId:13,tocIndex:7},{value:": File URL",paraId:13,tocIndex:7},{value:"The return value type is ",paraId:14,tocIndex:7},{value:"boolean",paraId:14,tocIndex:7},{value:", means matched or not.",paraId:14,tocIndex:7},{value:"Previewer",paraId:7},{value:"Component used to preview file.",paraId:15,tocIndex:8},{value:"Props:",paraId:16,tocIndex:8},{value:"index",paraId:17,tocIndex:8},{value:": Index value in attachemnts list",paraId:17,tocIndex:8},{value:"list",paraId:17,tocIndex:8},{value:": Attachemnt list",paraId:17,tocIndex:8},{value:"onSwitchIndex",paraId:17,tocIndex:8},{value:": Method to switch preview index",paraId:17,tocIndex:8},{value:"For ",paraId:18,tocIndex:8},{value:"onSwitchIndex",paraId:18,tocIndex:8},{value:", any index value in the list could be used, to switch to other file. If ",paraId:18,tocIndex:8},{value:"null",paraId:18,tocIndex:8},{value:" is used as argument, the preview component will be closed.",paraId:18,tocIndex:8},{value:`onSwitchIndex(null); -`,paraId:19,tocIndex:8}],Gb={},Vb={title:"Amazon S3",toc:"menu",filename:"docs/en-US/handbook/file-manager/storage/amazon-s3.md",lastUpdated:1732240239e3,description:"Documentation Pending"},Kb=[{id:"amazon-s3",depth:1,title:"Amazon S3"}],Zb=[{value:"Documentation Pending",paraId:0}],Yb={},Qb={title:"Graph Collection Manager",toc:"menu",filename:"docs/en-US/handbook/graph-collection-manager/index.md",lastUpdated:1732240239e3,description:"This is a tool similar to ER diagrams, which currently only supports the main database."},Jb=[{id:"graph-collection-manager",depth:1,title:"Graph Collection Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"}],Xb=[{value:"This is a tool similar to ER diagrams, which currently only supports the main database.",paraId:0,tocIndex:1},{value:"This preset plugin needs to be activated before it can be used.",paraId:1,tocIndex:2}],e2={},a2={title:"Update Record",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/update-record.md",lastUpdated:1732240239e3,description:"Custom row operations enable data updates by configuring field assignments and setting precise update logic for each field."},t2=[{id:"update-record",depth:1,title:"Update Record"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"},{id:"linkage-rules",depth:3,title:"Linkage Rules"},{id:"assign-field-values",depth:3,title:"Assign Field Values"}],n2=[{value:"Custom row operations enable data updates by configuring field assignments and setting precise update logic for each field.",paraId:0,tocIndex:1},{value:"Example: The button is hidden when the bill status is cancelled.",paraId:1,tocIndex:3},{value:"For more details, see ",paraId:2,tocIndex:3},{value:"Linkage Rule",paraId:3,tocIndex:3},{value:".",paraId:2,tocIndex:3},{value:"Example: Update the receipt time in the current record to reflect the current time.",paraId:4,tocIndex:4},{value:"For more information, refer to ",paraId:5,tocIndex:4},{value:"Assign Field Values",paraId:6,tocIndex:4},{value:".",paraId:5,tocIndex:4},{value:"Edit Button",paraId:7,tocIndex:4},{value:"Secondary Confirmation",paraId:8,tocIndex:4},{value:"After Successful Submission",paraId:9,tocIndex:4},{value:"Bind Workflows",paraId:10,tocIndex:4},{value:"Refresh the data after the execution",paraId:11,tocIndex:4}],o2={},r2={title:"Style Configuration",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/style.md",lastUpdated:1732240239e3,description:"Users can adjust the style of fields in the style menu (currently supporting color and background color settings). Additionally, styles can be dynamically adjusted based on field values or system variables."},d2=[{id:"style-configuration",depth:1,title:"Style Configuration"},{id:"introduction",depth:2,title:"Introduction"},{id:"how-to-use",depth:2,title:"How to Use"}],i2=[{value:"Users can adjust the style of fields in the style menu (currently supporting color and background color settings). Additionally, styles can be dynamically adjusted based on field values or system variables.",paraId:0,tocIndex:1},{value:"Suppose we have a bank transaction detail table with a column for transaction amounts. We want to set positive amounts (income) to green and negative amounts (expenses) to red. Here are the specific steps:",paraId:1,tocIndex:2},{value:`First, open the settings menu for the transaction amount field and click on the style option. +`,paraId:19,tocIndex:8}],Gb={},Vb={title:"Amazon S3",toc:"menu",filename:"docs/en-US/handbook/file-manager/storage/amazon-s3.md",lastUpdated:173254844e4,description:"Documentation Pending"},Kb=[{id:"amazon-s3",depth:1,title:"Amazon S3"}],Zb=[{value:"Documentation Pending",paraId:0}],Yb={},Qb={title:"Graph Collection Manager",toc:"menu",filename:"docs/en-US/handbook/graph-collection-manager/index.md",lastUpdated:173254844e4,description:"This is a tool similar to ER diagrams, which currently only supports the main database."},Jb=[{id:"graph-collection-manager",depth:1,title:"Graph Collection Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"}],Xb=[{value:"This is a tool similar to ER diagrams, which currently only supports the main database.",paraId:0,tocIndex:1},{value:"This preset plugin needs to be activated before it can be used.",paraId:1,tocIndex:2}],e0={},a0={title:"Update Record",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/update-record.md",lastUpdated:173254844e4,description:"Custom row operations enable data updates by configuring field assignments and setting precise update logic for each field."},t0=[{id:"update-record",depth:1,title:"Update Record"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"},{id:"linkage-rules",depth:3,title:"Linkage Rules"},{id:"assign-field-values",depth:3,title:"Assign Field Values"}],n0=[{value:"Custom row operations enable data updates by configuring field assignments and setting precise update logic for each field.",paraId:0,tocIndex:1},{value:"Example: The button is hidden when the bill status is cancelled.",paraId:1,tocIndex:3},{value:"For more details, see ",paraId:2,tocIndex:3},{value:"Linkage Rule",paraId:3,tocIndex:3},{value:".",paraId:2,tocIndex:3},{value:"Example: Update the receipt time in the current record to reflect the current time.",paraId:4,tocIndex:4},{value:"For more information, refer to ",paraId:5,tocIndex:4},{value:"Assign Field Values",paraId:6,tocIndex:4},{value:".",paraId:5,tocIndex:4},{value:"Edit Button",paraId:7,tocIndex:4},{value:"Secondary Confirmation",paraId:8,tocIndex:4},{value:"After Successful Submission",paraId:9,tocIndex:4},{value:"Bind Workflows",paraId:10,tocIndex:4},{value:"Refresh the data after the execution",paraId:11,tocIndex:4}],o0={},r0={title:"Style Configuration",toc:"menu",filename:"docs/en-US/handbook/ui/fields/field-settings/style.md",lastUpdated:173254844e4,description:"Users can adjust the style of fields in the style menu (currently supporting color and background color settings). Additionally, styles can be dynamically adjusted based on field values or system variables."},d0=[{id:"style-configuration",depth:1,title:"Style Configuration"},{id:"introduction",depth:2,title:"Introduction"},{id:"how-to-use",depth:2,title:"How to Use"}],i0=[{value:"Users can adjust the style of fields in the style menu (currently supporting color and background color settings). Additionally, styles can be dynamically adjusted based on field values or system variables.",paraId:0,tocIndex:1},{value:"Suppose we have a bank transaction detail table with a column for transaction amounts. We want to set positive amounts (income) to green and negative amounts (expenses) to red. Here are the specific steps:",paraId:1,tocIndex:2},{value:`First, open the settings menu for the transaction amount field and click on the style option. `,paraId:2,tocIndex:2},{value:`Click "Add Dynamic Rule" and set the first rule: when the transaction amount is greater than 0, set the field color to green. `,paraId:3,tocIndex:2},{value:'Click "Add Dynamic Rule" again to set the second rule: when the transaction amount is less than 0, set the field color to red.',paraId:4,tocIndex:2},{value:`The final result will look like this: -`,paraId:5,tocIndex:2}],l2={},c2={title:"Table Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/generic/table-column.md",lastUpdated:1732240239e3,description:"Table fields offer a robust set of features beyond basic column width adjustment, field titles, and sorting. They provide enhanced display configurations for specialized fields such as date fields, relationship fields, and numerical fields, allowing for a more tailored and informative data presentation."},s2=[{id:"table-fields",depth:1,title:"Table Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"date-field-formatting",depth:3,title:"Date Field Formatting"},{id:"numerical-field-formatting",depth:3,title:"Numerical Field Formatting"},{id:"sorting",depth:3,title:"Sorting"},{id:"fixed-columns",depth:3,title:"Fixed Columns"},{id:"field-components",depth:3,title:"Field Components"},{id:"styles",depth:3,title:"Styles"}],u2=[{value:"Table fields offer a robust set of features beyond basic column width adjustment, field titles, and sorting. They provide enhanced display configurations for specialized fields such as date fields, relationship fields, and numerical fields, allowing for a more tailored and informative data presentation.",paraId:0,tocIndex:1},{value:"For comprehensive information on date formatting options, consult the ",paraId:1,tocIndex:3},{value:"Date Formatting",paraId:2,tocIndex:3},{value:" guide.",paraId:1,tocIndex:3},{value:"The numerical field formatting feature offers versatile options including:",paraId:3,tocIndex:4},{value:"Simple unit conversion",paraId:4,tocIndex:4},{value:"Thousands separators",paraId:4,tocIndex:4},{value:"Prefixes and suffixes",paraId:4,tocIndex:4},{value:"Precision control",paraId:4,tocIndex:4},{value:"Scientific notation",paraId:4,tocIndex:4},{value:"For an in-depth exploration of numerical formatting capabilities, refer to the ",paraId:5,tocIndex:4},{value:"Number Formatting",paraId:6,tocIndex:4},{value:" documentation.",paraId:5,tocIndex:4},{value:"The current sorting functionality allows for single-column sorting within the current page data. Note that sorting by relationship fields is not supported in this version.",paraId:7,tocIndex:5},{value:"Certain fields offer the flexibility to switch between different component types. For instance, the ",paraId:8,tocIndex:7},{value:"URL",paraId:8,tocIndex:7},{value:" component can be toggled to function as a ",paraId:8,tocIndex:7},{value:"Preview",paraId:8,tocIndex:7},{value:" component.",paraId:8,tocIndex:7},{value:"For developers looking to expand the range of available components, the ",paraId:9,tocIndex:7},{value:"Extending Value Field Components",paraId:10,tocIndex:7},{value:" guide provides valuable insights.",paraId:9,tocIndex:7},{value:"The styling feature enables dynamic configuration of column colors and background colors based on specified conditions. To illustrate this powerful functionality, let's walk through an example using a bank transaction details table:",paraId:11,tocIndex:8},{value:"Scenario: We want to visually differentiate between income (positive amounts) and expenses (negative amounts) in the transaction amount column.",paraId:12,tocIndex:8},{value:"Step-by-step guide:",paraId:13,tocIndex:8},{value:`Access the field settings for the transaction amount column and navigate to the Style option. +`,paraId:5,tocIndex:2}],l0={},c0={title:"Table Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/generic/table-column.md",lastUpdated:173254844e4,description:"Table fields offer a robust set of features beyond basic column width adjustment, field titles, and sorting. They provide enhanced display configurations for specialized fields such as date fields, relationship fields, and numerical fields, allowing for a more tailored and informative data presentation."},s0=[{id:"table-fields",depth:1,title:"Table Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"date-field-formatting",depth:3,title:"Date Field Formatting"},{id:"numerical-field-formatting",depth:3,title:"Numerical Field Formatting"},{id:"sorting",depth:3,title:"Sorting"},{id:"fixed-columns",depth:3,title:"Fixed Columns"},{id:"field-components",depth:3,title:"Field Components"},{id:"styles",depth:3,title:"Styles"}],u0=[{value:"Table fields offer a robust set of features beyond basic column width adjustment, field titles, and sorting. They provide enhanced display configurations for specialized fields such as date fields, relationship fields, and numerical fields, allowing for a more tailored and informative data presentation.",paraId:0,tocIndex:1},{value:"For comprehensive information on date formatting options, consult the ",paraId:1,tocIndex:3},{value:"Date Formatting",paraId:2,tocIndex:3},{value:" guide.",paraId:1,tocIndex:3},{value:"The numerical field formatting feature offers versatile options including:",paraId:3,tocIndex:4},{value:"Simple unit conversion",paraId:4,tocIndex:4},{value:"Thousands separators",paraId:4,tocIndex:4},{value:"Prefixes and suffixes",paraId:4,tocIndex:4},{value:"Precision control",paraId:4,tocIndex:4},{value:"Scientific notation",paraId:4,tocIndex:4},{value:"For an in-depth exploration of numerical formatting capabilities, refer to the ",paraId:5,tocIndex:4},{value:"Number Formatting",paraId:6,tocIndex:4},{value:" documentation.",paraId:5,tocIndex:4},{value:"The current sorting functionality allows for single-column sorting within the current page data. Note that sorting by relationship fields is not supported in this version.",paraId:7,tocIndex:5},{value:"Certain fields offer the flexibility to switch between different component types. For instance, the ",paraId:8,tocIndex:7},{value:"URL",paraId:8,tocIndex:7},{value:" component can be toggled to function as a ",paraId:8,tocIndex:7},{value:"Preview",paraId:8,tocIndex:7},{value:" component.",paraId:8,tocIndex:7},{value:"For developers looking to expand the range of available components, the ",paraId:9,tocIndex:7},{value:"Extending Value Field Components",paraId:10,tocIndex:7},{value:" guide provides valuable insights.",paraId:9,tocIndex:7},{value:"The styling feature enables dynamic configuration of column colors and background colors based on specified conditions. To illustrate this powerful functionality, let's walk through an example using a bank transaction details table:",paraId:11,tocIndex:8},{value:"Scenario: We want to visually differentiate between income (positive amounts) and expenses (negative amounts) in the transaction amount column.",paraId:12,tocIndex:8},{value:"Step-by-step guide:",paraId:13,tocIndex:8},{value:`Access the field settings for the transaction amount column and navigate to the Style option. `,paraId:14,tocIndex:8},{value:"Create the first conditional rule: For positive transactions (income), set the field color to green.",paraId:15,tocIndex:8},{value:'Click "Add Linkage Rule"',paraId:16,tocIndex:8},{value:`Configure: When transaction amount > 0, apply green color `,paraId:16,tocIndex:8},{value:"Establish the second conditional rule: For negative transactions (expenses), set the field color to red.",paraId:17,tocIndex:8},{value:'Click "Add Linkage Rule" again',paraId:18,tocIndex:8},{value:`Configure: When transaction amount < 0, apply red color `,paraId:18,tocIndex:8},{value:`The result is a visually intuitive representation of financial data: -`,paraId:19,tocIndex:8}],p2={},I2={title:"Date picker",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/date-picker.md",lastUpdated:1732240239e3,description:"The date field offers flexibility with customizable date and time formats to suit your needs."},_2=[{id:"date-picker",depth:1,title:"Date picker"},{id:"introduction",depth:2,title:"Introduction"},{id:"configuring-date-formats",depth:2,title:"Configuring Date Formats"},{id:"data-table-fields",depth:3,title:"Data Table Fields"},{id:"field-settings",depth:3,title:"Field Settings"}],v2=[{value:"The date field offers flexibility with customizable date and time formats to suit your needs.",paraId:0,tocIndex:1},{value:"Beyond the array of preset date and time formats, the system accommodates custom formats, allowing you to tailor the display to your specific preferences.",paraId:1,tocIndex:4}],m2={},h2={title:"Action Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-action-trigger/action.md",lastUpdated:1732240239e3,description:"When configuring actions in local trigger mode, once the workflow setup is complete, you'll need to return to the user interface and link the workflow to the relevant form operation button in the corresponding data block."},f2=[{id:"action-configuration",depth:1,title:"Action Configuration"}],x2=[{value:"When configuring actions in local trigger mode, once the workflow setup is complete, you'll need to return to the user interface and link the workflow to the relevant form operation button in the corresponding data block.",paraId:0,tocIndex:0},{value:'The workflow associated with the "Submit" button (including the "Save record" button) will be triggered after the user submits the form and the data operation is completed.',paraId:1,tocIndex:0},{value:`To bind a workflow, simply select "Bind Workflows" from the button configuration menu to open the binding configuration dialog. Here, you can set up multiple workflows to be triggered. If none are configured, it indicates that no workflows will be triggered. For each workflow, you'll need to determine whether the trigger involves data from the entire form or data from a specific relational field within the form. Then, based on the selected data model, choose the form workflow that corresponds to the data model of the associated table.`,paraId:2,tocIndex:0},{value:"Ensure that the workflow is enabled before attempting to select it in the above interface.",paraId:3}],g2={},b2={title:"SchemaInitializer",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initailizer/index.md",lastUpdated:1732240239e3,description:"SchemaInitializer \u7528\u4E8E\u5411\u754C\u9762\u5185\u6DFB\u52A0\u5404\u79CD\u533A\u5757\u3001\u5B57\u6BB5\u3001\u64CD\u4F5C\u7B49\u3002"},y2=[{id:"schemainitializer",depth:1,title:"SchemaInitializer"}],w2=[{value:"SchemaInitializer",paraId:0,tocIndex:0},{value:" \u7528\u4E8E\u5411\u754C\u9762\u5185\u6DFB\u52A0\u5404\u79CD\u533A\u5757\u3001\u5B57\u6BB5\u3001\u64CD\u4F5C\u7B49\u3002",paraId:1,tocIndex:0},{value:"\u6839\u636E\u9700\u6C42\u4E0D\u540C\u53EF\u80FD\u6709\u4EE5\u4E0B\u6269\u5C55\u573A\u666F\uFF1A",paraId:2,tocIndex:0},{value:"\u5411\u5DF2\u6709\u7684 Initializer \u4E2D\u6DFB\u52A0\u5B50\u9879",paraId:3,tocIndex:0},{value:"\u521B\u5EFA\u65B0\u7684 Initializer",paraId:3,tocIndex:0},{value:"\u6839\u636E\u4EE5\u4E0A\u573A\u666F\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E86\u5982\u4E0B\u793A\u4F8B\uFF1A",paraId:4,tocIndex:0},{value:"\u5411\u5DF2\u6709\u7684 Add block \u91CC\u6DFB\u52A0\u65B0\u5B50\u9879",paraId:5,tocIndex:0},{value:"\u5411\u5DF2\u6709\u7684 Configure actions \u91CC\u6DFB\u52A0\u65B0\u5B50\u9879",paraId:6,tocIndex:0},{value:"\u590D\u7528\u5DF2\u6709\u7684 Initializer \u5B50\u9879",paraId:7,tocIndex:0},{value:"\u521B\u5EFA\u5E76\u4F7F\u7528\u65B0\u7684 Initializer",paraId:8,tocIndex:0}],k2={},S2={title:"SchemaInitializer",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/index.md",lastUpdated:1732240239e3,description:"SchemaInitializer \u7528\u4E8E\u5411\u754C\u9762\u5185\u6DFB\u52A0\u5404\u79CD\u533A\u5757\u3001\u5B57\u6BB5\u3001\u64CD\u4F5C\u7B49\u3002"},U2=[{id:"schemainitializer",depth:1,title:"SchemaInitializer"}],P2=[{value:"SchemaInitializer",paraId:0,tocIndex:0},{value:" \u7528\u4E8E\u5411\u754C\u9762\u5185\u6DFB\u52A0\u5404\u79CD\u533A\u5757\u3001\u5B57\u6BB5\u3001\u64CD\u4F5C\u7B49\u3002",paraId:1,tocIndex:0},{value:"\u6839\u636E\u9700\u6C42\u4E0D\u540C\u53EF\u80FD\u6709\u4EE5\u4E0B\u6269\u5C55\u573A\u666F\uFF1A",paraId:2,tocIndex:0},{value:"\u5411\u5DF2\u6709\u7684 Initializer \u4E2D\u6DFB\u52A0\u5B50\u9879",paraId:3,tocIndex:0},{value:"\u521B\u5EFA\u65B0\u7684 Initializer",paraId:3,tocIndex:0},{value:"\u6839\u636E\u4EE5\u4E0A\u573A\u666F\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E86\u5982\u4E0B\u793A\u4F8B\uFF1A",paraId:4,tocIndex:0},{value:"\u5411\u5DF2\u6709\u7684 Initializer \u4E2D\u6DFB\u52A0\u5B50\u9879",paraId:5,tocIndex:0},{value:"\u6DFB\u52A0\u7B80\u5355\u533A\u5757 Simple Block",paraId:6,tocIndex:0},{value:"\u6DFB\u52A0\u6570\u636E\u533A\u5757 Data Block",paraId:7,tocIndex:0},{value:"\u6DFB\u52A0\u5E26\u5F39\u7A97\u7684\u6570\u636E\u533A\u5757 Data Block Modal",paraId:8,tocIndex:0},{value:"\u6DFB\u52A0\u7B80\u5355 Action",paraId:9,tocIndex:0},{value:"\u6DFB\u52A0\u5F39\u7A97 Action",paraId:10,tocIndex:0},{value:"\u521B\u5EFA\u65B0\u7684 Initializer",paraId:11,tocIndex:0},{value:"\u533A\u5757\u5185\u5D4C\u7684 Initializer - \u914D\u7F6E\u5B57\u6BB5",paraId:12,tocIndex:0},{value:"\u533A\u5757\u5185\u5D4C\u7684 Initializer - \u914D\u7F6E\u64CD\u4F5C",paraId:13,tocIndex:0}],T2={},C2={title:"\u6DFB\u52A0\u5B50\u9879\u5230\u5DF2\u6709\u7684 SchemaSettings",toc:"menu",filename:"docs/en-US/plugin-samples/schema-settings/add-item.md",lastUpdated:1732240239e3,description:"\u5728\u5B9E\u9645\u5F00\u53D1\u4E2D\uFF0C\u6211\u4EEC\u533A\u5757\u3001\u64CD\u4F5C\u3001\u5B57\u6BB5\u90FD\u9700\u8981\u914D\u7F6E\u4E00\u4E9B\u5C5E\u6027\uFF0C\u4F46\u662F\u5DF2\u6709\u7684\u914D\u7F6E\u4E0D\u4E00\u5B9A\u6EE1\u8DB3\u6211\u4EEC\u7684\u9700\u6C42\uFF0C\u6211\u4EEC\u5C31\u9700\u8981\u6839\u636E\u9700\u6C42\u6DFB\u52A0\u4E00\u4E9B\u65B0\u7684\u914D\u7F6E\u9879\u3002"},A2=[{id:"\u6DFB\u52A0\u5B50\u9879\u5230\u5DF2\u6709\u7684-schemasettings",depth:1,title:"\u6DFB\u52A0\u5B50\u9879\u5230\u5DF2\u6709\u7684 SchemaSettings"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u5B9A\u4E49-schemasettingsitem",depth:3,title:"1. \u5B9A\u4E49 SchemaSettingsItem"},{id:"2-\u4FEE\u6539-schema",depth:3,title:"2. \u4FEE\u6539 Schema"},{id:"3-\u6CE8\u518C-schemasettingsitem",depth:3,title:"3. \u6CE8\u518C SchemaSettingsItem"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],q2=[{value:"\u5728\u5B9E\u9645\u5F00\u53D1\u4E2D\uFF0C\u6211\u4EEC\u533A\u5757\u3001\u64CD\u4F5C\u3001\u5B57\u6BB5\u90FD\u9700\u8981\u914D\u7F6E\u4E00\u4E9B\u5C5E\u6027\uFF0C\u4F46\u662F\u5DF2\u6709\u7684\u914D\u7F6E\u4E0D\u4E00\u5B9A\u6EE1\u8DB3\u6211\u4EEC\u7684\u9700\u6C42\uFF0C\u6211\u4EEC\u5C31\u9700\u8981\u6839\u636E\u9700\u6C42\u6DFB\u52A0\u4E00\u4E9B\u65B0\u7684\u914D\u7F6E\u9879\u3002",paraId:0,tocIndex:1},{value:"\u76EE\u524D Table \u533A\u5757\u7684\u914D\u7F6E\u9879\u4E2D\u6CA1\u6709 ",paraId:1,tocIndex:2},{value:"showIndex",paraId:1,tocIndex:2},{value:" \u5C5E\u6027\uFF0C\u6211\u4EEC\u9700\u8981\u6DFB\u52A0\u4E00\u4E2A ",paraId:1,tocIndex:2},{value:"showIndex",paraId:1,tocIndex:2},{value:" \u5C5E\u6027\uFF0C\u7528\u4E8E\u63A7\u5236\u662F\u5426\u663E\u793A\u5E8F\u53F7\u3002",paraId:1,tocIndex:2},{value:"\u672C\u5B9E\u4F8B\u4E3B\u8981\u4E3A\u4E86\u6F14\u793A SchemaSettings \u7684\u4F7F\u7528\uFF0C\u66F4\u591A\u5173\u4E8E\u533A\u5757\u6269\u5C55\u53EF\u4EE5\u67E5\u770B ",paraId:2,tocIndex:2},{value:"\u533A\u5757\u6269\u5C55",paraId:3,tocIndex:2},{value:" \u6587\u6863\u3002",paraId:2,tocIndex:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:4,tocIndex:2},{value:"plugin-samples",paraId:4,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:4,tocIndex:2},{value:` +`,paraId:19,tocIndex:8}],p0={},I0={title:"Date picker",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/date-picker.md",lastUpdated:173254844e4,description:"The date field offers flexibility with customizable date and time formats to suit your needs."},_0=[{id:"date-picker",depth:1,title:"Date picker"},{id:"introduction",depth:2,title:"Introduction"},{id:"configuring-date-formats",depth:2,title:"Configuring Date Formats"},{id:"data-table-fields",depth:3,title:"Data Table Fields"},{id:"field-settings",depth:3,title:"Field Settings"}],v0=[{value:"The date field offers flexibility with customizable date and time formats to suit your needs.",paraId:0,tocIndex:1},{value:"Beyond the array of preset date and time formats, the system accommodates custom formats, allowing you to tailor the display to your specific preferences.",paraId:1,tocIndex:4}],m0={},h0={title:"Action Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-action-trigger/action.md",lastUpdated:173254844e4,description:"When configuring actions in local trigger mode, once the workflow setup is complete, you'll need to return to the user interface and link the workflow to the relevant form operation button in the corresponding data block."},f0=[{id:"action-configuration",depth:1,title:"Action Configuration"}],x0=[{value:"When configuring actions in local trigger mode, once the workflow setup is complete, you'll need to return to the user interface and link the workflow to the relevant form operation button in the corresponding data block.",paraId:0,tocIndex:0},{value:'The workflow associated with the "Submit" button (including the "Save record" button) will be triggered after the user submits the form and the data operation is completed.',paraId:1,tocIndex:0},{value:`To bind a workflow, simply select "Bind Workflows" from the button configuration menu to open the binding configuration dialog. Here, you can set up multiple workflows to be triggered. If none are configured, it indicates that no workflows will be triggered. For each workflow, you'll need to determine whether the trigger involves data from the entire form or data from a specific relational field within the form. Then, based on the selected data model, choose the form workflow that corresponds to the data model of the associated table.`,paraId:2,tocIndex:0},{value:"Ensure that the workflow is enabled before attempting to select it in the above interface.",paraId:3}],g0={},b0={title:"SchemaInitializer",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initailizer/index.md",lastUpdated:173254844e4,description:"SchemaInitializer \u7528\u4E8E\u5411\u754C\u9762\u5185\u6DFB\u52A0\u5404\u79CD\u533A\u5757\u3001\u5B57\u6BB5\u3001\u64CD\u4F5C\u7B49\u3002"},y0=[{id:"schemainitializer",depth:1,title:"SchemaInitializer"}],w0=[{value:"SchemaInitializer",paraId:0,tocIndex:0},{value:" \u7528\u4E8E\u5411\u754C\u9762\u5185\u6DFB\u52A0\u5404\u79CD\u533A\u5757\u3001\u5B57\u6BB5\u3001\u64CD\u4F5C\u7B49\u3002",paraId:1,tocIndex:0},{value:"\u6839\u636E\u9700\u6C42\u4E0D\u540C\u53EF\u80FD\u6709\u4EE5\u4E0B\u6269\u5C55\u573A\u666F\uFF1A",paraId:2,tocIndex:0},{value:"\u5411\u5DF2\u6709\u7684 Initializer \u4E2D\u6DFB\u52A0\u5B50\u9879",paraId:3,tocIndex:0},{value:"\u521B\u5EFA\u65B0\u7684 Initializer",paraId:3,tocIndex:0},{value:"\u6839\u636E\u4EE5\u4E0A\u573A\u666F\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E86\u5982\u4E0B\u793A\u4F8B\uFF1A",paraId:4,tocIndex:0},{value:"\u5411\u5DF2\u6709\u7684 Add block \u91CC\u6DFB\u52A0\u65B0\u5B50\u9879",paraId:5,tocIndex:0},{value:"\u5411\u5DF2\u6709\u7684 Configure actions \u91CC\u6DFB\u52A0\u65B0\u5B50\u9879",paraId:6,tocIndex:0},{value:"\u590D\u7528\u5DF2\u6709\u7684 Initializer \u5B50\u9879",paraId:7,tocIndex:0},{value:"\u521B\u5EFA\u5E76\u4F7F\u7528\u65B0\u7684 Initializer",paraId:8,tocIndex:0}],k0={},S0={title:"SchemaInitializer",toc:"menu",filename:"docs/en-US/plugin-samples/schema-initializer/index.md",lastUpdated:173254844e4,description:"SchemaInitializer \u7528\u4E8E\u5411\u754C\u9762\u5185\u6DFB\u52A0\u5404\u79CD\u533A\u5757\u3001\u5B57\u6BB5\u3001\u64CD\u4F5C\u7B49\u3002"},U0=[{id:"schemainitializer",depth:1,title:"SchemaInitializer"}],P0=[{value:"SchemaInitializer",paraId:0,tocIndex:0},{value:" \u7528\u4E8E\u5411\u754C\u9762\u5185\u6DFB\u52A0\u5404\u79CD\u533A\u5757\u3001\u5B57\u6BB5\u3001\u64CD\u4F5C\u7B49\u3002",paraId:1,tocIndex:0},{value:"\u6839\u636E\u9700\u6C42\u4E0D\u540C\u53EF\u80FD\u6709\u4EE5\u4E0B\u6269\u5C55\u573A\u666F\uFF1A",paraId:2,tocIndex:0},{value:"\u5411\u5DF2\u6709\u7684 Initializer \u4E2D\u6DFB\u52A0\u5B50\u9879",paraId:3,tocIndex:0},{value:"\u521B\u5EFA\u65B0\u7684 Initializer",paraId:3,tocIndex:0},{value:"\u6839\u636E\u4EE5\u4E0A\u573A\u666F\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E86\u5982\u4E0B\u793A\u4F8B\uFF1A",paraId:4,tocIndex:0},{value:"\u5411\u5DF2\u6709\u7684 Initializer \u4E2D\u6DFB\u52A0\u5B50\u9879",paraId:5,tocIndex:0},{value:"\u6DFB\u52A0\u7B80\u5355\u533A\u5757 Simple Block",paraId:6,tocIndex:0},{value:"\u6DFB\u52A0\u6570\u636E\u533A\u5757 Data Block",paraId:7,tocIndex:0},{value:"\u6DFB\u52A0\u5E26\u5F39\u7A97\u7684\u6570\u636E\u533A\u5757 Data Block Modal",paraId:8,tocIndex:0},{value:"\u6DFB\u52A0\u7B80\u5355 Action",paraId:9,tocIndex:0},{value:"\u6DFB\u52A0\u5F39\u7A97 Action",paraId:10,tocIndex:0},{value:"\u521B\u5EFA\u65B0\u7684 Initializer",paraId:11,tocIndex:0},{value:"\u533A\u5757\u5185\u5D4C\u7684 Initializer - \u914D\u7F6E\u5B57\u6BB5",paraId:12,tocIndex:0},{value:"\u533A\u5757\u5185\u5D4C\u7684 Initializer - \u914D\u7F6E\u64CD\u4F5C",paraId:13,tocIndex:0}],T0={},C0={title:"\u6DFB\u52A0\u5B50\u9879\u5230\u5DF2\u6709\u7684 SchemaSettings",toc:"menu",filename:"docs/en-US/plugin-samples/schema-settings/add-item.md",lastUpdated:173254844e4,description:"\u5728\u5B9E\u9645\u5F00\u53D1\u4E2D\uFF0C\u6211\u4EEC\u533A\u5757\u3001\u64CD\u4F5C\u3001\u5B57\u6BB5\u90FD\u9700\u8981\u914D\u7F6E\u4E00\u4E9B\u5C5E\u6027\uFF0C\u4F46\u662F\u5DF2\u6709\u7684\u914D\u7F6E\u4E0D\u4E00\u5B9A\u6EE1\u8DB3\u6211\u4EEC\u7684\u9700\u6C42\uFF0C\u6211\u4EEC\u5C31\u9700\u8981\u6839\u636E\u9700\u6C42\u6DFB\u52A0\u4E00\u4E9B\u65B0\u7684\u914D\u7F6E\u9879\u3002"},A0=[{id:"\u6DFB\u52A0\u5B50\u9879\u5230\u5DF2\u6709\u7684-schemasettings",depth:1,title:"\u6DFB\u52A0\u5B50\u9879\u5230\u5DF2\u6709\u7684 SchemaSettings"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u5B9A\u4E49-schemasettingsitem",depth:3,title:"1. \u5B9A\u4E49 SchemaSettingsItem"},{id:"2-\u4FEE\u6539-schema",depth:3,title:"2. \u4FEE\u6539 Schema"},{id:"3-\u6CE8\u518C-schemasettingsitem",depth:3,title:"3. \u6CE8\u518C SchemaSettingsItem"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],q0=[{value:"\u5728\u5B9E\u9645\u5F00\u53D1\u4E2D\uFF0C\u6211\u4EEC\u533A\u5757\u3001\u64CD\u4F5C\u3001\u5B57\u6BB5\u90FD\u9700\u8981\u914D\u7F6E\u4E00\u4E9B\u5C5E\u6027\uFF0C\u4F46\u662F\u5DF2\u6709\u7684\u914D\u7F6E\u4E0D\u4E00\u5B9A\u6EE1\u8DB3\u6211\u4EEC\u7684\u9700\u6C42\uFF0C\u6211\u4EEC\u5C31\u9700\u8981\u6839\u636E\u9700\u6C42\u6DFB\u52A0\u4E00\u4E9B\u65B0\u7684\u914D\u7F6E\u9879\u3002",paraId:0,tocIndex:1},{value:"\u76EE\u524D Table \u533A\u5757\u7684\u914D\u7F6E\u9879\u4E2D\u6CA1\u6709 ",paraId:1,tocIndex:2},{value:"showIndex",paraId:1,tocIndex:2},{value:" \u5C5E\u6027\uFF0C\u6211\u4EEC\u9700\u8981\u6DFB\u52A0\u4E00\u4E2A ",paraId:1,tocIndex:2},{value:"showIndex",paraId:1,tocIndex:2},{value:" \u5C5E\u6027\uFF0C\u7528\u4E8E\u63A7\u5236\u662F\u5426\u663E\u793A\u5E8F\u53F7\u3002",paraId:1,tocIndex:2},{value:"\u672C\u5B9E\u4F8B\u4E3B\u8981\u4E3A\u4E86\u6F14\u793A SchemaSettings \u7684\u4F7F\u7528\uFF0C\u66F4\u591A\u5173\u4E8E\u533A\u5757\u6269\u5C55\u53EF\u4EE5\u67E5\u770B ",paraId:2,tocIndex:2},{value:"\u533A\u5757\u6269\u5C55",paraId:3,tocIndex:2},{value:" \u6587\u6863\u3002",paraId:2,tocIndex:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:4,tocIndex:2},{value:"plugin-samples",paraId:4,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:4,tocIndex:2},{value:` `,paraId:5},{value:"\u6211\u4EEC\u6309\u7167 ",paraId:6,tocIndex:3},{value:"\u7F16\u5199\u7B2C\u4E00\u4E2A\u63D2\u4EF6",paraId:7,tocIndex:3},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u5982\u679C\u6CA1\u6709\u4E00\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u5148\u521B\u5EFA\u4E00\u4E2A\u9879\u76EE\uFF0C\u5982\u679C\u5DF2\u7ECF\u6709\u4E86\u6216\u8005\u662F clone \u7684\u6E90\u7801\uFF0C\u5219\u8DF3\u8FC7\u8FD9\u4E00\u6B65\u3002",paraId:6,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -5614,7 +5666,7 @@ export default PluginSchemaSettingsAddItemClient; `,paraId:35,tocIndex:7},{value:"\u7136\u540E\u6211\u4EEC\u5C31\u53EF\u4EE5\u770B\u5230 Table \u533A\u5757\u7684\u914D\u7F6E\u9879\u4E2D\u591A\u4E86\u4E00\u4E2A ",paraId:36,tocIndex:7},{value:"Show Index",paraId:36,tocIndex:7},{value:" \u7684\u914D\u7F6E\u9879\u3002",paraId:36,tocIndex:7},{value:` `,paraId:5},{value:"\u6309\u7167 ",paraId:37,tocIndex:8},{value:"\u6784\u5EFA\u5E76\u6253\u5305\u63D2\u4EF6",paraId:38,tocIndex:8},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6253\u5305\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883\u3002",paraId:37,tocIndex:8},{value:"\u5982\u679C\u662F clone \u7684\u6E90\u7801\uFF0C\u9700\u8981\u5148\u6267\u884C\u4E00\u6B21\u5168\u91CF build\uFF0C\u5C06\u63D2\u4EF6\u7684\u4F9D\u8D56\u4E5F\u6784\u5EFA\u597D\u3002",paraId:39,tocIndex:8},{value:`yarn build `,paraId:40,tocIndex:8},{value:"\u5982\u679C\u662F\u4F7F\u7528\u7684 ",paraId:41,tocIndex:8},{value:"create-nocobase-app",paraId:41,tocIndex:8},{value:" \u521B\u5EFA\u7684\u9879\u76EE\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A",paraId:41,tocIndex:8},{value:`yarn build nocobase-sample/plugin-schema-settings-add-item --tar -`,paraId:42,tocIndex:8},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:43,tocIndex:8},{value:"storage/tar/nocobase-sample/plugin-schema-settings-add-item.tar.gz",paraId:43,tocIndex:8},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:43,tocIndex:8},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:44,tocIndex:8},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:43,tocIndex:8}],E2={},D2={title:"MySQL \u5982\u4F55\u542F\u7528 federated \u5F15\u64CE",toc:"menu",filename:"docs/en-US/plugins/collection-fdw/enable-federated.md",lastUpdated:1732240239e3,description:"MySQL \u6570\u636E\u5E93\u9ED8\u8BA4\u6CA1\u6709\u5F00\u542F federated \u6A21\u5757\uFF0C\u9700\u8981\u4FEE\u6539 my.cnf \u914D\u7F6E\uFF0C\u5982\u679C\u662F docker \u7248\u672C\uFF0C\u53EF\u4EE5\u901A\u8FC7 volumes \u6765\u5904\u7406\u6269\u5C55\u7684\u60C5\u51B5\uFF1A"},O2=[{id:"mysql-\u5982\u4F55\u542F\u7528-federated-\u5F15\u64CE",depth:1,title:"MySQL \u5982\u4F55\u542F\u7528 federated \u5F15\u64CE"}],R2=[{value:"MySQL \u6570\u636E\u5E93\u9ED8\u8BA4\u6CA1\u6709\u5F00\u542F federated \u6A21\u5757\uFF0C\u9700\u8981\u4FEE\u6539 my.cnf \u914D\u7F6E\uFF0C\u5982\u679C\u662F docker \u7248\u672C\uFF0C\u53EF\u4EE5\u901A\u8FC7 volumes \u6765\u5904\u7406\u6269\u5C55\u7684\u60C5\u51B5\uFF1A",paraId:0,tocIndex:0},{value:`mysql: +`,paraId:42,tocIndex:8},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:43,tocIndex:8},{value:"storage/tar/nocobase-sample/plugin-schema-settings-add-item.tar.gz",paraId:43,tocIndex:8},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:43,tocIndex:8},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:44,tocIndex:8},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:43,tocIndex:8}],E0={},D0={title:"MySQL \u5982\u4F55\u542F\u7528 federated \u5F15\u64CE",toc:"menu",filename:"docs/en-US/plugins/collection-fdw/enable-federated.md",lastUpdated:173254844e4,description:"MySQL \u6570\u636E\u5E93\u9ED8\u8BA4\u6CA1\u6709\u5F00\u542F federated \u6A21\u5757\uFF0C\u9700\u8981\u4FEE\u6539 my.cnf \u914D\u7F6E\uFF0C\u5982\u679C\u662F docker \u7248\u672C\uFF0C\u53EF\u4EE5\u901A\u8FC7 volumes \u6765\u5904\u7406\u6269\u5C55\u7684\u60C5\u51B5\uFF1A"},O0=[{id:"mysql-\u5982\u4F55\u542F\u7528-federated-\u5F15\u64CE",depth:1,title:"MySQL \u5982\u4F55\u542F\u7528 federated \u5F15\u64CE"}],R0=[{value:"MySQL \u6570\u636E\u5E93\u9ED8\u8BA4\u6CA1\u6709\u5F00\u542F federated \u6A21\u5757\uFF0C\u9700\u8981\u4FEE\u6539 my.cnf \u914D\u7F6E\uFF0C\u5982\u679C\u662F docker \u7248\u672C\uFF0C\u53EF\u4EE5\u901A\u8FC7 volumes \u6765\u5904\u7406\u6269\u5C55\u7684\u60C5\u51B5\uFF1A",paraId:0,tocIndex:0},{value:`mysql: image: mysql:8.1.0 volumes: - ./storage/mysql-conf:/etc/mysql/conf.d @@ -5630,7 +5682,7 @@ export default PluginSchemaSettingsAddItemClient; federated `,paraId:3,tocIndex:0},{value:"\u91CD\u542F mysql",paraId:4,tocIndex:0},{value:`docker compose up -d mysql `,paraId:5,tocIndex:0},{value:"\u67E5\u770B federated \u662F\u5426\u5DF2\u7ECF\u6FC0\u6D3B",paraId:6,tocIndex:0},{value:`show engines -`,paraId:7,tocIndex:0}],M2={},L2={title:"\u805A\u5408\u67E5\u8BE2",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/aggregate.md",lastUpdated:1732240239e3,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u805A\u5408\u51FD\u6570\u67E5\u8BE2\uFF0C\u5E76\u8FD4\u56DE\u5BF9\u5E94\u7684\u7EDF\u8BA1\u7ED3\u679C\u3002\u5E38\u7528\u4E8E\u5904\u7406\u62A5\u8868\u76F8\u5173\u7684\u7EDF\u8BA1\u6570\u636E\u3002"},N2=[{id:"\u805A\u5408\u67E5\u8BE2",depth:1,title:"\u805A\u5408\u67E5\u8BE2"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u805A\u5408\u51FD\u6570",depth:3,title:"\u805A\u5408\u51FD\u6570"},{id:"\u76EE\u6807\u7C7B\u578B",depth:3,title:"\u76EE\u6807\u7C7B\u578B"},{id:"\u53BB\u91CD",depth:3,title:"\u53BB\u91CD"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],z2=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u805A\u5408\u51FD\u6570\u67E5\u8BE2\uFF0C\u5E76\u8FD4\u56DE\u5BF9\u5E94\u7684\u7EDF\u8BA1\u7ED3\u679C\u3002\u5E38\u7528\u4E8E\u5904\u7406\u62A5\u8868\u76F8\u5173\u7684\u7EDF\u8BA1\u6570\u636E\u3002",paraId:0,tocIndex:0},{value:"\u8282\u70B9\u7684\u5B9E\u73B0\u4E0A\u57FA\u4E8E\u6570\u636E\u5E93\u7684\u805A\u5408\u51FD\u6570\uFF0C\u76EE\u524D\u4EC5\u652F\u6301\u5BF9\u4E00\u4E2A\u6570\u636E\u8868\u7684\u5355\u5B57\u6BB5\u8FDB\u884C\u7EDF\u8BA1\uFF0C\u7EDF\u8BA1\u7ED3\u679C\u7684\u6570\u503C\u4F1A\u4FDD\u5B58\u5728\u8282\u70B9\u7684\u7ED3\u679C\u4E2D\u4F9B\u540E\u7EED\u5176\u4ED6\u8282\u70B9\u4F7F\u7528\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u805A\u5408\u67E5\u8BE2\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u652F\u6301 SQL \u4E2D\u7684 ",paraId:3,tocIndex:3},{value:"COUNT",paraId:3,tocIndex:3},{value:"\u3001",paraId:3,tocIndex:3},{value:"SUM",paraId:3,tocIndex:3},{value:"\u3001",paraId:3,tocIndex:3},{value:"AVG",paraId:3,tocIndex:3},{value:"\u3001",paraId:3,tocIndex:3},{value:"MIN",paraId:3,tocIndex:3},{value:" \u548C ",paraId:3,tocIndex:3},{value:"MAX",paraId:3,tocIndex:3},{value:" \u5171 5 \u79CD\u805A\u5408\u51FD\u6570\uFF0C\u9009\u62E9\u5176\u4E2D\u4E00\u79CD\u5BF9\u6570\u636E\u8FDB\u884C\u805A\u5408\u67E5\u8BE2\u3002",paraId:3,tocIndex:3},{value:"\u805A\u5408\u67E5\u8BE2\u7684\u76EE\u6807\u53EF\u4EE5\u901A\u8FC7\u4E24\u79CD\u6A21\u5F0F\u9009\u62E9\uFF0C\u4E00\u79CD\u662F\u76F4\u63A5\u9009\u62E9\u76EE\u6807\u6570\u636E\u8868\u548C\u5176\u4E2D\u7684\u4E00\u4E2A\u5B57\u6BB5\uFF0C\u53E6\u4E00\u79CD\u662F\u901A\u8FC7\u6D41\u7A0B\u4E0A\u4E0B\u6587\u5DF2\u6709\u7684\u6570\u636E\u5BF9\u8C61\uFF0C\u9009\u62E9\u5176\u5BF9\u591A\u7684\u5173\u7CFB\u6570\u636E\u8868\u53CA\u5B57\u6BB5\uFF0C\u8FDB\u884C\u805A\u5408\u67E5\u8BE2\u3002",paraId:4,tocIndex:4},{value:"\u5373 SQL \u4E2D\u7684 ",paraId:5,tocIndex:5},{value:"DISTINCT",paraId:5,tocIndex:5},{value:"\uFF0C\u53BB\u91CD\u7684\u5B57\u6BB5\u4E0E\u9009\u62E9\u7684\u6570\u636E\u8868\u5B57\u6BB5\u76F8\u540C\uFF0C\u6682\u65F6\u4E0D\u652F\u6301\u4E24\u8005\u9009\u4E0D\u540C\u7684\u5B57\u6BB5\u3002",paraId:5,tocIndex:5},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:6,tocIndex:6},{value:"\u805A\u5408\u76EE\u6807\u4E3A\u201C\u6570\u636E\u8868\u6570\u636E\u201D\u6BD4\u8F83\u5BB9\u6613\u7406\u89E3\uFF0C\u8FD9\u91CC\u4EE5\u201C\u7EDF\u8BA1\u65B0\u589E\u6587\u7AE0\u540E\u8BE5\u6587\u7AE0\u5206\u7C7B\u7684\u603B\u6587\u7AE0\u6570\u201D\u4E3A\u4F8B\uFF0C\u4ECB\u7ECD\u805A\u5408\u76EE\u6807\u4E3A\u201C\u5173\u8054\u6570\u636E\u8868\u6570\u636E\u201D\u7684\u7528\u6CD5\u3002",paraId:7,tocIndex:7},{value:"\u9996\u5148\uFF0C\u521B\u5EFA\u4E24\u5F20\u6570\u636E\u8868\uFF1A\u201C\u6587\u7AE0\u201D\u548C\u201C\u5206\u7C7B\u201D\uFF0C\u5176\u4E2D\u6587\u7AE0\u6709\u4E00\u4E2A\u591A\u5BF9\u4E00\u5173\u7CFB\u5B57\u6BB5\u6307\u5411\u5206\u7C7B\u8868\uFF0C\u540C\u65F6\u521B\u5EFA\u53CD\u5411\u5173\u7CFB\u5B57\u6BB5\u5206\u7C7B\u4E00\u5BF9\u591A\u6587\u7AE0\uFF1A",paraId:8,tocIndex:7},{value:"\u5B57\u6BB5\u540D",paraId:9,tocIndex:7},{value:"\u7C7B\u578B",paraId:9,tocIndex:7},{value:"\u6807\u9898",paraId:9,tocIndex:7},{value:"\u5355\u884C\u6587\u672C",paraId:9,tocIndex:7},{value:"\u6240\u5C5E\u5206\u7C7B",paraId:9,tocIndex:7},{value:"\u591A\u5BF9\u4E00\uFF08\u5206\u7C7B\uFF09",paraId:9,tocIndex:7},{value:"\u5B57\u6BB5\u540D",paraId:10,tocIndex:7},{value:"\u7C7B\u578B",paraId:10,tocIndex:7},{value:"\u5206\u7C7B\u540D\u79F0",paraId:10,tocIndex:7},{value:"\u5355\u884C\u6587\u672C",paraId:10,tocIndex:7},{value:"\u5305\u542B\u6587\u7AE0",paraId:10,tocIndex:7},{value:"\u4E00\u5BF9\u591A\uFF08\u6587\u7AE0\uFF09",paraId:10,tocIndex:7},{value:"\u63A5\u4E0B\u6765\u521B\u5EFA\u4E00\u4E2A\u6570\u636E\u8868\u4E8B\u4EF6\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u9009\u62E9\u6587\u7AE0\u8868\u65B0\u589E\u6570\u636E\u540E\u89E6\u53D1\u3002",paraId:11,tocIndex:7},{value:"\u4E4B\u540E\u589E\u52A0\u4E00\u4E2A\u805A\u5408\u67E5\u8BE2\u8282\u70B9\uFF0C\u914D\u7F6E\u5982\u4E0B\uFF1A",paraId:12,tocIndex:7},{value:"\u8FD9\u6837\u5728\u5DE5\u4F5C\u6D41\u88AB\u89E6\u53D1\u540E\uFF0C\u805A\u5408\u67E5\u8BE2\u8282\u70B9\u4E2D\u5C06\u4F1A\u7EDF\u8BA1\u65B0\u589E\u6587\u7AE0\u7684\u5206\u7C7B\u4E0B\u6240\u6709\u6587\u7AE0\u7684\u6570\u91CF\uFF0C\u5E76\u4FDD\u5B58\u4E3A\u8282\u70B9\u7684\u7ED3\u679C\u3002",paraId:13,tocIndex:7}],F2={},B2={title:"\u6761\u4EF6\u5224\u65AD",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/condition.md",lastUpdated:1732240239e3,description:"\u7C7B\u578B\u4E8E\u7F16\u7A0B\u8BED\u8A00\u4E2D\u7684 if \u8BED\u53E5\uFF0C\u6839\u636E\u914D\u7F6E\u6761\u4EF6\u5224\u65AD\u7684\u7ED3\u679C\uFF0C\u51B3\u5B9A\u540E\u7EED\u6D41\u7A0B\u7684\u8D70\u5411\u3002"},j2=[{id:"\u6761\u4EF6\u5224\u65AD",depth:1,title:"\u6761\u4EF6\u5224\u65AD"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u8FD0\u7B97\u5F15\u64CE",depth:3,title:"\u8FD0\u7B97\u5F15\u64CE"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u662F\u5219\u7EE7\u7EED\u6A21\u5F0F",depth:3,title:"\u201C\u2018\u662F\u2019\u5219\u7EE7\u7EED\u201D\u6A21\u5F0F"},{id:"\u662F\u548C\u5426\u5206\u522B\u7EE7\u7EED\u6A21\u5F0F",depth:3,title:"\u201C\u2018\u662F\u2019\u548C\u2018\u5426\u2019\u5206\u522B\u7EE7\u7EED\u201D\u6A21\u5F0F"}],H2=[{value:"\u7C7B\u578B\u4E8E\u7F16\u7A0B\u8BED\u8A00\u4E2D\u7684 ",paraId:0,tocIndex:0},{value:"if",paraId:0,tocIndex:0},{value:" \u8BED\u53E5\uFF0C\u6839\u636E\u914D\u7F6E\u6761\u4EF6\u5224\u65AD\u7684\u7ED3\u679C\uFF0C\u51B3\u5B9A\u540E\u7EED\u6D41\u7A0B\u7684\u8D70\u5411\u3002",paraId:0,tocIndex:0},{value:"\u6761\u4EF6\u5224\u65AD\u6709\u4E24\u79CD\u6A21\u5F0F\uFF0C\u5206\u522B\u662F\u201C\u2018\u662F\u2019\u5219\u7EE7\u7EED\u201D\u548C\u201C\u2018\u662F\u2019\u548C\u2018\u5426\u2019\u5206\u522B\u7EE7\u7EED\u201D\uFF0C\u5728\u521B\u5EFA\u8282\u70B9\u65F6\u9700\u8981\u9009\u62E9\u5176\u4E2D\u4E00\u79CD\u6A21\u5F0F\uFF0C\u4E4B\u540E\u5728\u8282\u70B9\u7684\u914D\u7F6E\u4E2D\u4E0D\u80FD\u4FEE\u6539\u3002",paraId:1,tocIndex:1},{value:"\u201C\u2018\u662F\u2019\u5219\u7EE7\u7EED\u201D\u7684\u6A21\u5F0F\u4E0B\uFF0C\u5F53\u6761\u4EF6\u5224\u65AD\u7684\u7ED3\u679C\u4E3A\u201C\u662F\u201D\u65F6\uFF0C\u6D41\u7A0B\u5C06\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u8282\u70B9\uFF0C\u5426\u5219\u6D41\u7A0B\u5C06\u7EC8\u6B62\uFF0C\u5E76\u4EE5\u5931\u8D25\u7684\u72B6\u6001\u63D0\u524D\u9000\u51FA\u3002",paraId:2,tocIndex:1},{value:"\u8FD9\u79CD\u6A21\u5F0F\u9002\u5408\u4E8E\u4E0D\u6EE1\u8DB3\u6761\u4EF6\u7684\u60C5\u51B5\u4E0B\uFF0C\u6D41\u7A0B\u4E0D\u518D\u7EE7\u7EED\u7684\u573A\u666F\uFF0C\u4F8B\u5982\u4F7F\u7528\u201C\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u201D\u8868\u5355\u6309\u94AE\u914D\u7F6E\u4E86\u63D0\u4EA4\u8BA2\u5355\u7684\u8868\u5355\uFF0C\u4F46\u5728\u8BA2\u5355\u5BF9\u5E94\u5546\u54C1\u5E93\u5B58\u4E0D\u8DB3\u7684\u60C5\u51B5\u4E0B\uFF0C\u4E0D\u7EE7\u7EED\u751F\u6210\u8BA2\u5355\uFF0C\u800C\u662F\u5931\u8D25\u9000\u51FA\u3002",paraId:3,tocIndex:1},{value:"\u201C\u2018\u662F\u2019\u548C\u2018\u5426\u2019\u5206\u522B\u7EE7\u7EED\u201D\u7684\u6A21\u5F0F\u4E0B\uFF0C\u6761\u4EF6\u8282\u70B9\u540E\u7EED\u4F1A\u4EA7\u751F\u4E24\u6761\u5206\u652F\u6D41\u7A0B\uFF0C\u5206\u522B\u5BF9\u5E94\u6761\u4EF6\u5224\u65AD\u7684\u7ED3\u679C\u4E3A\u201C\u662F\u201D\u548C\u201C\u5426\u201D\u65F6\u7684\u6D41\u7A0B\uFF0C\u4E24\u6761\u5206\u652F\u6D41\u7A0B\u53EF\u4EE5\u5206\u522B\u914D\u7F6E\u540E\u7EED\u8282\u70B9\uFF0C\u5728\u4EFB\u610F\u5206\u652F\u6267\u884C\u5B8C\u6BD5\u540E\uFF0C\u518D\u81EA\u52A8\u6C47\u5408\u5230\u6761\u4EF6\u8282\u70B9\u6240\u5728\u7684\u4E0A\u7EA7\u5206\u652F\uFF0C\u7EE7\u7EED\u6267\u884C\u4E4B\u540E\u7684\u8282\u70B9\u3002",paraId:4,tocIndex:1},{value:"\u8FD9\u79CD\u6A21\u5F0F\u9002\u5408\u4E8E\u6EE1\u8DB3\u6761\u4EF6\u548C\u4E0D\u6EE1\u8DB3\u6761\u4EF6\u7684\u60C5\u51B5\u4E0B\uFF0C\u6D41\u7A0B\u9700\u8981\u5206\u522B\u6267\u884C\u4E0D\u540C\u7684\u64CD\u4F5C\u7684\u573A\u666F\uFF0C\u4F8B\u5982\u67E5\u8BE2\u67D0\u6761\u6570\u636E\u662F\u5426\u5B58\u5728\uFF0C\u4E0D\u5B58\u5728\u7684\u65F6\u5019\u65B0\u589E\uFF0C\u5B58\u5728\u7684\u65F6\u5019\u66F4\u65B0\u3002",paraId:5,tocIndex:1},{value:"\u76EE\u524D\u652F\u6301\u4E09\u79CD\u5F15\u64CE\uFF1A",paraId:6,tocIndex:3},{value:"\u57FA\u7840",paraId:7,tocIndex:3},{value:"\uFF1A\u901A\u8FC7\u7B80\u5355\u7684\u53CC\u76EE\u8BA1\u7B97\u548C\u201C\u4E0E\u201D\u3001\u201C\u6216\u201D\u5206\u7EC4\uFF0C\u5F97\u5230\u903B\u8F91\u7ED3\u679C\u3002",paraId:7,tocIndex:3},{value:"Math.js",paraId:7,tocIndex:3},{value:"\uFF1A\u8BA1\u7B97 ",paraId:7,tocIndex:3},{value:"Math.js",paraId:7,tocIndex:3},{value:" \u5F15\u64CE\u652F\u6301\u7684\u8868\u8FBE\u5F0F\u5F97\u5230\u903B\u8F91\u7ED3\u679C\u3002",paraId:7,tocIndex:3},{value:"Formula.js",paraId:7,tocIndex:3},{value:"\uFF1A\u8BA1\u7B97 ",paraId:7,tocIndex:3},{value:"Formula.js",paraId:7,tocIndex:3},{value:" \u5F15\u64CE\u652F\u6301\u7684\u8868\u8FBE\u5F0F\u5F97\u5230\u903B\u8F91\u7ED3\u679C\u3002",paraId:7,tocIndex:3},{value:"\u4E09\u79CD\u8BA1\u7B97\u4E2D\u5747\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u7528\u4F5C\u8BA1\u7B97\u7684\u64CD\u4F5C\u6570\u3002",paraId:8,tocIndex:3}],W2={},$2={title:"Overview",toc:"menu",filename:"docs/en-US/welcome/getting-started/upgrading/index.md",lastUpdated:1732240239e3,description:"NocoBase supports three types of installation, with slight differences in upgrades."},G2=[{id:"overview",depth:1,title:"Overview"}],V2=[{value:"NocoBase supports three types of installation, with slight differences in upgrades.",paraId:0,tocIndex:0},{value:"Upgrading for Docker compose",paraId:1,tocIndex:0},{value:"Upgrading for create-nocobase-app",paraId:2,tocIndex:0},{value:"Upgrading for Git source code",paraId:3,tocIndex:0}],K2={},Z2={title:"\u9002\u914D\u7684 Schema \u7EC4\u4EF6",toc:"menu",filename:"docs/en-US/api/client/extensions/schema-component.md",lastUpdated:1732240239e3},Y2=[{id:"\u9002\u914D\u7684-schema-\u7EC4\u4EF6",depth:1,title:"\u9002\u914D\u7684 Schema \u7EC4\u4EF6"},{id:"common",depth:2,title:"Common"},{id:"and-design",depth:2,title:"And Design"}],Q2=[{value:"DndContext",paraId:0,tocIndex:1},{value:"SortableItem",paraId:0,tocIndex:1},{value:"Action",paraId:1,tocIndex:2},{value:"BlockItem",paraId:1,tocIndex:2},{value:"Calendar",paraId:1,tocIndex:2},{value:"CardItem",paraId:1,tocIndex:2},{value:"Cascader",paraId:1,tocIndex:2}],J2={},X2={title:"BaseInterface",toc:"menu",filename:"docs/en-US/api/database/interfaces/base-interface.md",lastUpdated:1732240239e3,description:"BaseInterface \u662F\u6240\u6709 Interface \u7C7B\u578B\u7684\u57FA\u7840\u7C7B\uFF0C\u7528\u6237\u53EF\u4EE5\u81EA\u884C\u7EE7\u627F\u6B64\u7C7B\u5B9E\u73B0\u81EA\u5B9A\u4E49\u7684 Interface \u903B\u8F91\u3002"},e0=[{id:"baseinterface",depth:1,title:"BaseInterface"},{id:"\u6982\u89C8",depth:2,title:"\u6982\u89C8"},{id:"\u63A5\u53E3",depth:2,title:"\u63A5\u53E3"},{id:"tovaluevalue-string-ctx-any-promise",depth:3,title:"toValue(value: string, ctx?: any): Promise"},{id:"tostringvalue-any-ctx-any",depth:3,title:"toString(value: any, ctx?: any)"}],a0=[{value:"BaseInterface \u662F\u6240\u6709 Interface \u7C7B\u578B\u7684\u57FA\u7840\u7C7B\uFF0C\u7528\u6237\u53EF\u4EE5\u81EA\u884C\u7EE7\u627F\u6B64\u7C7B\u5B9E\u73B0\u81EA\u5B9A\u4E49\u7684 Interface \u903B\u8F91\u3002",paraId:0,tocIndex:1},{value:`class CustomInterface extends BaseInterface { +`,paraId:7,tocIndex:0}],M0={},L0={title:"\u805A\u5408\u67E5\u8BE2",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/aggregate.md",lastUpdated:173254844e4,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u805A\u5408\u51FD\u6570\u67E5\u8BE2\uFF0C\u5E76\u8FD4\u56DE\u5BF9\u5E94\u7684\u7EDF\u8BA1\u7ED3\u679C\u3002\u5E38\u7528\u4E8E\u5904\u7406\u62A5\u8868\u76F8\u5173\u7684\u7EDF\u8BA1\u6570\u636E\u3002"},N0=[{id:"\u805A\u5408\u67E5\u8BE2",depth:1,title:"\u805A\u5408\u67E5\u8BE2"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u805A\u5408\u51FD\u6570",depth:3,title:"\u805A\u5408\u51FD\u6570"},{id:"\u76EE\u6807\u7C7B\u578B",depth:3,title:"\u76EE\u6807\u7C7B\u578B"},{id:"\u53BB\u91CD",depth:3,title:"\u53BB\u91CD"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],z0=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u805A\u5408\u51FD\u6570\u67E5\u8BE2\uFF0C\u5E76\u8FD4\u56DE\u5BF9\u5E94\u7684\u7EDF\u8BA1\u7ED3\u679C\u3002\u5E38\u7528\u4E8E\u5904\u7406\u62A5\u8868\u76F8\u5173\u7684\u7EDF\u8BA1\u6570\u636E\u3002",paraId:0,tocIndex:0},{value:"\u8282\u70B9\u7684\u5B9E\u73B0\u4E0A\u57FA\u4E8E\u6570\u636E\u5E93\u7684\u805A\u5408\u51FD\u6570\uFF0C\u76EE\u524D\u4EC5\u652F\u6301\u5BF9\u4E00\u4E2A\u6570\u636E\u8868\u7684\u5355\u5B57\u6BB5\u8FDB\u884C\u7EDF\u8BA1\uFF0C\u7EDF\u8BA1\u7ED3\u679C\u7684\u6570\u503C\u4F1A\u4FDD\u5B58\u5728\u8282\u70B9\u7684\u7ED3\u679C\u4E2D\u4F9B\u540E\u7EED\u5176\u4ED6\u8282\u70B9\u4F7F\u7528\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u805A\u5408\u67E5\u8BE2\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u652F\u6301 SQL \u4E2D\u7684 ",paraId:3,tocIndex:3},{value:"COUNT",paraId:3,tocIndex:3},{value:"\u3001",paraId:3,tocIndex:3},{value:"SUM",paraId:3,tocIndex:3},{value:"\u3001",paraId:3,tocIndex:3},{value:"AVG",paraId:3,tocIndex:3},{value:"\u3001",paraId:3,tocIndex:3},{value:"MIN",paraId:3,tocIndex:3},{value:" \u548C ",paraId:3,tocIndex:3},{value:"MAX",paraId:3,tocIndex:3},{value:" \u5171 5 \u79CD\u805A\u5408\u51FD\u6570\uFF0C\u9009\u62E9\u5176\u4E2D\u4E00\u79CD\u5BF9\u6570\u636E\u8FDB\u884C\u805A\u5408\u67E5\u8BE2\u3002",paraId:3,tocIndex:3},{value:"\u805A\u5408\u67E5\u8BE2\u7684\u76EE\u6807\u53EF\u4EE5\u901A\u8FC7\u4E24\u79CD\u6A21\u5F0F\u9009\u62E9\uFF0C\u4E00\u79CD\u662F\u76F4\u63A5\u9009\u62E9\u76EE\u6807\u6570\u636E\u8868\u548C\u5176\u4E2D\u7684\u4E00\u4E2A\u5B57\u6BB5\uFF0C\u53E6\u4E00\u79CD\u662F\u901A\u8FC7\u6D41\u7A0B\u4E0A\u4E0B\u6587\u5DF2\u6709\u7684\u6570\u636E\u5BF9\u8C61\uFF0C\u9009\u62E9\u5176\u5BF9\u591A\u7684\u5173\u7CFB\u6570\u636E\u8868\u53CA\u5B57\u6BB5\uFF0C\u8FDB\u884C\u805A\u5408\u67E5\u8BE2\u3002",paraId:4,tocIndex:4},{value:"\u5373 SQL \u4E2D\u7684 ",paraId:5,tocIndex:5},{value:"DISTINCT",paraId:5,tocIndex:5},{value:"\uFF0C\u53BB\u91CD\u7684\u5B57\u6BB5\u4E0E\u9009\u62E9\u7684\u6570\u636E\u8868\u5B57\u6BB5\u76F8\u540C\uFF0C\u6682\u65F6\u4E0D\u652F\u6301\u4E24\u8005\u9009\u4E0D\u540C\u7684\u5B57\u6BB5\u3002",paraId:5,tocIndex:5},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:6,tocIndex:6},{value:"\u805A\u5408\u76EE\u6807\u4E3A\u201C\u6570\u636E\u8868\u6570\u636E\u201D\u6BD4\u8F83\u5BB9\u6613\u7406\u89E3\uFF0C\u8FD9\u91CC\u4EE5\u201C\u7EDF\u8BA1\u65B0\u589E\u6587\u7AE0\u540E\u8BE5\u6587\u7AE0\u5206\u7C7B\u7684\u603B\u6587\u7AE0\u6570\u201D\u4E3A\u4F8B\uFF0C\u4ECB\u7ECD\u805A\u5408\u76EE\u6807\u4E3A\u201C\u5173\u8054\u6570\u636E\u8868\u6570\u636E\u201D\u7684\u7528\u6CD5\u3002",paraId:7,tocIndex:7},{value:"\u9996\u5148\uFF0C\u521B\u5EFA\u4E24\u5F20\u6570\u636E\u8868\uFF1A\u201C\u6587\u7AE0\u201D\u548C\u201C\u5206\u7C7B\u201D\uFF0C\u5176\u4E2D\u6587\u7AE0\u6709\u4E00\u4E2A\u591A\u5BF9\u4E00\u5173\u7CFB\u5B57\u6BB5\u6307\u5411\u5206\u7C7B\u8868\uFF0C\u540C\u65F6\u521B\u5EFA\u53CD\u5411\u5173\u7CFB\u5B57\u6BB5\u5206\u7C7B\u4E00\u5BF9\u591A\u6587\u7AE0\uFF1A",paraId:8,tocIndex:7},{value:"\u5B57\u6BB5\u540D",paraId:9,tocIndex:7},{value:"\u7C7B\u578B",paraId:9,tocIndex:7},{value:"\u6807\u9898",paraId:9,tocIndex:7},{value:"\u5355\u884C\u6587\u672C",paraId:9,tocIndex:7},{value:"\u6240\u5C5E\u5206\u7C7B",paraId:9,tocIndex:7},{value:"\u591A\u5BF9\u4E00\uFF08\u5206\u7C7B\uFF09",paraId:9,tocIndex:7},{value:"\u5B57\u6BB5\u540D",paraId:10,tocIndex:7},{value:"\u7C7B\u578B",paraId:10,tocIndex:7},{value:"\u5206\u7C7B\u540D\u79F0",paraId:10,tocIndex:7},{value:"\u5355\u884C\u6587\u672C",paraId:10,tocIndex:7},{value:"\u5305\u542B\u6587\u7AE0",paraId:10,tocIndex:7},{value:"\u4E00\u5BF9\u591A\uFF08\u6587\u7AE0\uFF09",paraId:10,tocIndex:7},{value:"\u63A5\u4E0B\u6765\u521B\u5EFA\u4E00\u4E2A\u6570\u636E\u8868\u4E8B\u4EF6\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u9009\u62E9\u6587\u7AE0\u8868\u65B0\u589E\u6570\u636E\u540E\u89E6\u53D1\u3002",paraId:11,tocIndex:7},{value:"\u4E4B\u540E\u589E\u52A0\u4E00\u4E2A\u805A\u5408\u67E5\u8BE2\u8282\u70B9\uFF0C\u914D\u7F6E\u5982\u4E0B\uFF1A",paraId:12,tocIndex:7},{value:"\u8FD9\u6837\u5728\u5DE5\u4F5C\u6D41\u88AB\u89E6\u53D1\u540E\uFF0C\u805A\u5408\u67E5\u8BE2\u8282\u70B9\u4E2D\u5C06\u4F1A\u7EDF\u8BA1\u65B0\u589E\u6587\u7AE0\u7684\u5206\u7C7B\u4E0B\u6240\u6709\u6587\u7AE0\u7684\u6570\u91CF\uFF0C\u5E76\u4FDD\u5B58\u4E3A\u8282\u70B9\u7684\u7ED3\u679C\u3002",paraId:13,tocIndex:7}],F0={},B0={title:"\u6761\u4EF6\u5224\u65AD",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/condition.md",lastUpdated:173254844e4,description:"\u7C7B\u578B\u4E8E\u7F16\u7A0B\u8BED\u8A00\u4E2D\u7684 if \u8BED\u53E5\uFF0C\u6839\u636E\u914D\u7F6E\u6761\u4EF6\u5224\u65AD\u7684\u7ED3\u679C\uFF0C\u51B3\u5B9A\u540E\u7EED\u6D41\u7A0B\u7684\u8D70\u5411\u3002"},j0=[{id:"\u6761\u4EF6\u5224\u65AD",depth:1,title:"\u6761\u4EF6\u5224\u65AD"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u8FD0\u7B97\u5F15\u64CE",depth:3,title:"\u8FD0\u7B97\u5F15\u64CE"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u662F\u5219\u7EE7\u7EED\u6A21\u5F0F",depth:3,title:"\u201C\u2018\u662F\u2019\u5219\u7EE7\u7EED\u201D\u6A21\u5F0F"},{id:"\u662F\u548C\u5426\u5206\u522B\u7EE7\u7EED\u6A21\u5F0F",depth:3,title:"\u201C\u2018\u662F\u2019\u548C\u2018\u5426\u2019\u5206\u522B\u7EE7\u7EED\u201D\u6A21\u5F0F"}],H0=[{value:"\u7C7B\u578B\u4E8E\u7F16\u7A0B\u8BED\u8A00\u4E2D\u7684 ",paraId:0,tocIndex:0},{value:"if",paraId:0,tocIndex:0},{value:" \u8BED\u53E5\uFF0C\u6839\u636E\u914D\u7F6E\u6761\u4EF6\u5224\u65AD\u7684\u7ED3\u679C\uFF0C\u51B3\u5B9A\u540E\u7EED\u6D41\u7A0B\u7684\u8D70\u5411\u3002",paraId:0,tocIndex:0},{value:"\u6761\u4EF6\u5224\u65AD\u6709\u4E24\u79CD\u6A21\u5F0F\uFF0C\u5206\u522B\u662F\u201C\u2018\u662F\u2019\u5219\u7EE7\u7EED\u201D\u548C\u201C\u2018\u662F\u2019\u548C\u2018\u5426\u2019\u5206\u522B\u7EE7\u7EED\u201D\uFF0C\u5728\u521B\u5EFA\u8282\u70B9\u65F6\u9700\u8981\u9009\u62E9\u5176\u4E2D\u4E00\u79CD\u6A21\u5F0F\uFF0C\u4E4B\u540E\u5728\u8282\u70B9\u7684\u914D\u7F6E\u4E2D\u4E0D\u80FD\u4FEE\u6539\u3002",paraId:1,tocIndex:1},{value:"\u201C\u2018\u662F\u2019\u5219\u7EE7\u7EED\u201D\u7684\u6A21\u5F0F\u4E0B\uFF0C\u5F53\u6761\u4EF6\u5224\u65AD\u7684\u7ED3\u679C\u4E3A\u201C\u662F\u201D\u65F6\uFF0C\u6D41\u7A0B\u5C06\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u8282\u70B9\uFF0C\u5426\u5219\u6D41\u7A0B\u5C06\u7EC8\u6B62\uFF0C\u5E76\u4EE5\u5931\u8D25\u7684\u72B6\u6001\u63D0\u524D\u9000\u51FA\u3002",paraId:2,tocIndex:1},{value:"\u8FD9\u79CD\u6A21\u5F0F\u9002\u5408\u4E8E\u4E0D\u6EE1\u8DB3\u6761\u4EF6\u7684\u60C5\u51B5\u4E0B\uFF0C\u6D41\u7A0B\u4E0D\u518D\u7EE7\u7EED\u7684\u573A\u666F\uFF0C\u4F8B\u5982\u4F7F\u7528\u201C\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u201D\u8868\u5355\u6309\u94AE\u914D\u7F6E\u4E86\u63D0\u4EA4\u8BA2\u5355\u7684\u8868\u5355\uFF0C\u4F46\u5728\u8BA2\u5355\u5BF9\u5E94\u5546\u54C1\u5E93\u5B58\u4E0D\u8DB3\u7684\u60C5\u51B5\u4E0B\uFF0C\u4E0D\u7EE7\u7EED\u751F\u6210\u8BA2\u5355\uFF0C\u800C\u662F\u5931\u8D25\u9000\u51FA\u3002",paraId:3,tocIndex:1},{value:"\u201C\u2018\u662F\u2019\u548C\u2018\u5426\u2019\u5206\u522B\u7EE7\u7EED\u201D\u7684\u6A21\u5F0F\u4E0B\uFF0C\u6761\u4EF6\u8282\u70B9\u540E\u7EED\u4F1A\u4EA7\u751F\u4E24\u6761\u5206\u652F\u6D41\u7A0B\uFF0C\u5206\u522B\u5BF9\u5E94\u6761\u4EF6\u5224\u65AD\u7684\u7ED3\u679C\u4E3A\u201C\u662F\u201D\u548C\u201C\u5426\u201D\u65F6\u7684\u6D41\u7A0B\uFF0C\u4E24\u6761\u5206\u652F\u6D41\u7A0B\u53EF\u4EE5\u5206\u522B\u914D\u7F6E\u540E\u7EED\u8282\u70B9\uFF0C\u5728\u4EFB\u610F\u5206\u652F\u6267\u884C\u5B8C\u6BD5\u540E\uFF0C\u518D\u81EA\u52A8\u6C47\u5408\u5230\u6761\u4EF6\u8282\u70B9\u6240\u5728\u7684\u4E0A\u7EA7\u5206\u652F\uFF0C\u7EE7\u7EED\u6267\u884C\u4E4B\u540E\u7684\u8282\u70B9\u3002",paraId:4,tocIndex:1},{value:"\u8FD9\u79CD\u6A21\u5F0F\u9002\u5408\u4E8E\u6EE1\u8DB3\u6761\u4EF6\u548C\u4E0D\u6EE1\u8DB3\u6761\u4EF6\u7684\u60C5\u51B5\u4E0B\uFF0C\u6D41\u7A0B\u9700\u8981\u5206\u522B\u6267\u884C\u4E0D\u540C\u7684\u64CD\u4F5C\u7684\u573A\u666F\uFF0C\u4F8B\u5982\u67E5\u8BE2\u67D0\u6761\u6570\u636E\u662F\u5426\u5B58\u5728\uFF0C\u4E0D\u5B58\u5728\u7684\u65F6\u5019\u65B0\u589E\uFF0C\u5B58\u5728\u7684\u65F6\u5019\u66F4\u65B0\u3002",paraId:5,tocIndex:1},{value:"\u76EE\u524D\u652F\u6301\u4E09\u79CD\u5F15\u64CE\uFF1A",paraId:6,tocIndex:3},{value:"\u57FA\u7840",paraId:7,tocIndex:3},{value:"\uFF1A\u901A\u8FC7\u7B80\u5355\u7684\u53CC\u76EE\u8BA1\u7B97\u548C\u201C\u4E0E\u201D\u3001\u201C\u6216\u201D\u5206\u7EC4\uFF0C\u5F97\u5230\u903B\u8F91\u7ED3\u679C\u3002",paraId:7,tocIndex:3},{value:"Math.js",paraId:7,tocIndex:3},{value:"\uFF1A\u8BA1\u7B97 ",paraId:7,tocIndex:3},{value:"Math.js",paraId:7,tocIndex:3},{value:" \u5F15\u64CE\u652F\u6301\u7684\u8868\u8FBE\u5F0F\u5F97\u5230\u903B\u8F91\u7ED3\u679C\u3002",paraId:7,tocIndex:3},{value:"Formula.js",paraId:7,tocIndex:3},{value:"\uFF1A\u8BA1\u7B97 ",paraId:7,tocIndex:3},{value:"Formula.js",paraId:7,tocIndex:3},{value:" \u5F15\u64CE\u652F\u6301\u7684\u8868\u8FBE\u5F0F\u5F97\u5230\u903B\u8F91\u7ED3\u679C\u3002",paraId:7,tocIndex:3},{value:"\u4E09\u79CD\u8BA1\u7B97\u4E2D\u5747\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u7528\u4F5C\u8BA1\u7B97\u7684\u64CD\u4F5C\u6570\u3002",paraId:8,tocIndex:3}],W0={},$0={title:"Overview",toc:"menu",filename:"docs/en-US/welcome/getting-started/upgrading/index.md",lastUpdated:173254844e4,description:"NocoBase supports three types of installation, with slight differences in upgrades."},G0=[{id:"overview",depth:1,title:"Overview"}],V0=[{value:"NocoBase supports three types of installation, with slight differences in upgrades.",paraId:0,tocIndex:0},{value:"Upgrading for Docker compose",paraId:1,tocIndex:0},{value:"Upgrading for create-nocobase-app",paraId:2,tocIndex:0},{value:"Upgrading for Git source code",paraId:3,tocIndex:0}],K0={},Z0={title:"\u9002\u914D\u7684 Schema \u7EC4\u4EF6",toc:"menu",filename:"docs/en-US/api/client/extensions/schema-component.md",lastUpdated:173254844e4},Y0=[{id:"\u9002\u914D\u7684-schema-\u7EC4\u4EF6",depth:1,title:"\u9002\u914D\u7684 Schema \u7EC4\u4EF6"},{id:"common",depth:2,title:"Common"},{id:"and-design",depth:2,title:"And Design"}],Q0=[{value:"DndContext",paraId:0,tocIndex:1},{value:"SortableItem",paraId:0,tocIndex:1},{value:"Action",paraId:1,tocIndex:2},{value:"BlockItem",paraId:1,tocIndex:2},{value:"Calendar",paraId:1,tocIndex:2},{value:"CardItem",paraId:1,tocIndex:2},{value:"Cascader",paraId:1,tocIndex:2}],J0={},X0={title:"BaseInterface",toc:"menu",filename:"docs/en-US/api/database/interfaces/base-interface.md",lastUpdated:173254844e4,description:"BaseInterface \u662F\u6240\u6709 Interface \u7C7B\u578B\u7684\u57FA\u7840\u7C7B\uFF0C\u7528\u6237\u53EF\u4EE5\u81EA\u884C\u7EE7\u627F\u6B64\u7C7B\u5B9E\u73B0\u81EA\u5B9A\u4E49\u7684 Interface \u903B\u8F91\u3002"},ey=[{id:"baseinterface",depth:1,title:"BaseInterface"},{id:"\u6982\u89C8",depth:2,title:"\u6982\u89C8"},{id:"\u63A5\u53E3",depth:2,title:"\u63A5\u53E3"},{id:"tovaluevalue-string-ctx-any-promise",depth:3,title:"toValue(value: string, ctx?: any): Promise"},{id:"tostringvalue-any-ctx-any",depth:3,title:"toString(value: any, ctx?: any)"}],ay=[{value:"BaseInterface \u662F\u6240\u6709 Interface \u7C7B\u578B\u7684\u57FA\u7840\u7C7B\uFF0C\u7528\u6237\u53EF\u4EE5\u81EA\u884C\u7EE7\u627F\u6B64\u7C7B\u5B9E\u73B0\u81EA\u5B9A\u4E49\u7684 Interface \u903B\u8F91\u3002",paraId:0,tocIndex:1},{value:`class CustomInterface extends BaseInterface { async toValue(value: string, ctx?: any): Promise { // \u81EA\u5B9A\u4E49\u7684 toValue \u903B\u8F91 } @@ -5641,7 +5693,7 @@ federated } // \u6CE8\u518C Interface db.interfaceManager.registerInterfaceType('customInterface', CustomInterface) -`,paraId:1,tocIndex:1},{value:"\u5C06\u5916\u90E8\u7684\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A interface \u7684\u5B9E\u9645\u503C\uFF0C\u503C\u53EF\u76F4\u63A5\u4F20\u9012\u7ED9 Repository \u8FDB\u884C\u5199\u5165\u64CD\u4F5C\u3002",paraId:2,tocIndex:3},{value:"\u5C06 interface \u7684\u5B9E\u9645\u503C\u8F6C\u6362\u4E3A string \u7C7B\u578B\uFF0Cstring \u7C7B\u578B\u53EF\u7528\u4F5C\u5BFC\u51FA\u3001\u5C55\u793A\u65F6\u4F7F\u7528\u3002",paraId:3,tocIndex:4}],t0={},n0={title:"RelationRepository",toc:"menu",filename:"docs/en-US/api/database/relation-repository/index.md",lastUpdated:1732240239e3,description:"RelationRepository \u662F\u5173\u7CFB\u7C7B\u578B\u7684 Repository \u5BF9\u8C61\uFF0CRelationRepository \u53EF\u4EE5\u5B9E\u73B0\u5728\u4E0D\u52A0\u8F7D\u5173\u8054\u7684\u60C5\u51B5\u4E0B\u5BF9\u5173\u8054\u6570\u636E\u8FDB\u884C\u64CD\u4F5C\u3002\u57FA\u4E8E RelationRepository\uFF0C\u6BCF\u79CD\u5173\u8054\u90FD\u6D3E\u751F\u51FA\u5BF9\u5E94\u7684\u5B9E\u73B0\uFF0C\u5206\u522B\u4E3A"},o0=[{id:"relationrepository",depth:1,title:"RelationRepository"},{id:"\u6784\u9020\u51FD\u6570",depth:2,title:"\u6784\u9020\u51FD\u6570"},{id:"\u57FA\u7C7B\u5C5E\u6027",depth:2,title:"\u57FA\u7C7B\u5C5E\u6027"},{id:"db-database",depth:3,title:"db: Database"},{id:"sourcecollection",depth:3,title:"sourceCollection"},{id:"targetcollection",depth:3,title:"targetCollection"},{id:"association",depth:3,title:"association"},{id:"associationfield",depth:3,title:"associationField"},{id:"sourcekeyvalue",depth:3,title:"sourceKeyValue"}],r0=[{value:"RelationRepository",paraId:0,tocIndex:0},{value:" \u662F\u5173\u7CFB\u7C7B\u578B\u7684 ",paraId:0,tocIndex:0},{value:"Repository",paraId:0,tocIndex:0},{value:" \u5BF9\u8C61\uFF0C",paraId:0,tocIndex:0},{value:"RelationRepository",paraId:0,tocIndex:0},{value:" \u53EF\u4EE5\u5B9E\u73B0\u5728\u4E0D\u52A0\u8F7D\u5173\u8054\u7684\u60C5\u51B5\u4E0B\u5BF9\u5173\u8054\u6570\u636E\u8FDB\u884C\u64CD\u4F5C\u3002\u57FA\u4E8E ",paraId:0,tocIndex:0},{value:"RelationRepository",paraId:0,tocIndex:0},{value:"\uFF0C\u6BCF\u79CD\u5173\u8054\u90FD\u6D3E\u751F\u51FA\u5BF9\u5E94\u7684\u5B9E\u73B0\uFF0C\u5206\u522B\u4E3A",paraId:0,tocIndex:0},{value:"HasOneRepository",paraId:1,tocIndex:0},{value:"HasManyRepository",paraId:2,tocIndex:0},{value:"BelongsToRepository",paraId:2,tocIndex:0},{value:"BelongsToManyRepository",paraId:2,tocIndex:0},{value:"\u7B7E\u540D",paraId:3,tocIndex:1},{value:"constructor(sourceCollection: Collection, association: string, sourceKeyValue: string | number)",paraId:4,tocIndex:1},{value:"\u53C2\u6570",paraId:5,tocIndex:1},{value:"\u53C2\u6570\u540D",paraId:6,tocIndex:1},{value:"\u7C7B\u578B",paraId:6,tocIndex:1},{value:"\u9ED8\u8BA4\u503C",paraId:6,tocIndex:1},{value:"\u63CF\u8FF0",paraId:6,tocIndex:1},{value:"sourceCollection",paraId:6,tocIndex:1},{value:"Collection",paraId:6,tocIndex:1},{value:"-",paraId:6,tocIndex:1},{value:"\u5173\u8054\u4E2D\u7684\u53C2\u7167\u5173\u7CFB\uFF08referencing relation\uFF09\u5BF9\u5E94\u7684 Collection",paraId:6,tocIndex:1},{value:"association",paraId:6,tocIndex:1},{value:"string",paraId:6,tocIndex:1},{value:"-",paraId:6,tocIndex:1},{value:"\u5173\u8054\u540D\u79F0",paraId:6,tocIndex:1},{value:"sourceKeyValue",paraId:6,tocIndex:1},{value:"string | number",paraId:6,tocIndex:1},{value:"-",paraId:6,tocIndex:1},{value:"\u53C2\u7167\u5173\u7CFB\u4E2D\u5BF9\u5E94\u7684 key \u503C",paraId:6,tocIndex:1},{value:"db: Database",paraId:7},{value:"\u6570\u636E\u5E93\u5BF9\u8C61",paraId:8,tocIndex:3},{value:"sourceCollection",paraId:7},{value:"\u5173\u8054\u4E2D\u7684\u53C2\u7167\u5173\u7CFB\uFF08referencing relation\uFF09\u5BF9\u5E94\u7684 Collection",paraId:9,tocIndex:4},{value:"targetCollection",paraId:7},{value:"\u5173\u8054\u4E2D\u88AB\u53C2\u7167\u5173\u7CFB\uFF08referenced relation\uFF09\u5BF9\u5E94\u7684 Collection",paraId:10,tocIndex:5},{value:"association",paraId:7},{value:"sequelize \u4E2D\u7684\u4E0E\u5F53\u524D\u5173\u8054\u5BF9\u5E94\u7684 association \u5BF9\u8C61",paraId:11,tocIndex:6},{value:"associationField",paraId:7},{value:"collection \u4E2D\u7684\u4E0E\u5F53\u524D\u5173\u8054\u5BF9\u5E94\u7684\u5B57\u6BB5",paraId:12,tocIndex:7},{value:"sourceKeyValue",paraId:7},{value:"\u53C2\u7167\u5173\u7CFB\u4E2D\u5BF9\u5E94\u7684 key \u503C",paraId:13,tocIndex:8}],d0=e(42122),Wu=e.n(d0),i0={"docs-en-us-development-client-ui-schema-extending-demo-0":{component:n.memo(n.lazy(io()(Ct()().mark(function Vt(){var Ga,va,Fa,lt,Ka,ft,Ba;return Ct()().wrap(function(ct){for(;;)switch(ct.prev=ct.next){case 0:return ct.next=2,Promise.resolve().then(e.t.bind(e,67294,19));case 2:return Ga=ct.sent,va=Ga.default,ct.next=6,Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(40071)]).then(e.bind(e,73377));case 6:return Fa=ct.sent,lt=Fa.SchemaComponent,Ka=Fa.SchemaComponentProvider,ft=function(){return va.createElement("h1",null,"Hello, world!")},Ba={type:"void",name:"hello","x-component":"Hello"},ct.abrupt("return",{default:function(){return va.createElement(Ka,{components:{Hello:ft}},va.createElement(lt,{schema:Ba}))}});case 12:case"end":return ct.stop()}},Vt)})))),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-extending-demo-0",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:`import React from 'react'; +`,paraId:1,tocIndex:1},{value:"\u5C06\u5916\u90E8\u7684\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A interface \u7684\u5B9E\u9645\u503C\uFF0C\u503C\u53EF\u76F4\u63A5\u4F20\u9012\u7ED9 Repository \u8FDB\u884C\u5199\u5165\u64CD\u4F5C\u3002",paraId:2,tocIndex:3},{value:"\u5C06 interface \u7684\u5B9E\u9645\u503C\u8F6C\u6362\u4E3A string \u7C7B\u578B\uFF0Cstring \u7C7B\u578B\u53EF\u7528\u4F5C\u5BFC\u51FA\u3001\u5C55\u793A\u65F6\u4F7F\u7528\u3002",paraId:3,tocIndex:4}],ty={},ny={title:"RelationRepository",toc:"menu",filename:"docs/en-US/api/database/relation-repository/index.md",lastUpdated:173254844e4,description:"RelationRepository \u662F\u5173\u7CFB\u7C7B\u578B\u7684 Repository \u5BF9\u8C61\uFF0CRelationRepository \u53EF\u4EE5\u5B9E\u73B0\u5728\u4E0D\u52A0\u8F7D\u5173\u8054\u7684\u60C5\u51B5\u4E0B\u5BF9\u5173\u8054\u6570\u636E\u8FDB\u884C\u64CD\u4F5C\u3002\u57FA\u4E8E RelationRepository\uFF0C\u6BCF\u79CD\u5173\u8054\u90FD\u6D3E\u751F\u51FA\u5BF9\u5E94\u7684\u5B9E\u73B0\uFF0C\u5206\u522B\u4E3A"},oy=[{id:"relationrepository",depth:1,title:"RelationRepository"},{id:"\u6784\u9020\u51FD\u6570",depth:2,title:"\u6784\u9020\u51FD\u6570"},{id:"\u57FA\u7C7B\u5C5E\u6027",depth:2,title:"\u57FA\u7C7B\u5C5E\u6027"},{id:"db-database",depth:3,title:"db: Database"},{id:"sourcecollection",depth:3,title:"sourceCollection"},{id:"targetcollection",depth:3,title:"targetCollection"},{id:"association",depth:3,title:"association"},{id:"associationfield",depth:3,title:"associationField"},{id:"sourcekeyvalue",depth:3,title:"sourceKeyValue"}],ry=[{value:"RelationRepository",paraId:0,tocIndex:0},{value:" \u662F\u5173\u7CFB\u7C7B\u578B\u7684 ",paraId:0,tocIndex:0},{value:"Repository",paraId:0,tocIndex:0},{value:" \u5BF9\u8C61\uFF0C",paraId:0,tocIndex:0},{value:"RelationRepository",paraId:0,tocIndex:0},{value:" \u53EF\u4EE5\u5B9E\u73B0\u5728\u4E0D\u52A0\u8F7D\u5173\u8054\u7684\u60C5\u51B5\u4E0B\u5BF9\u5173\u8054\u6570\u636E\u8FDB\u884C\u64CD\u4F5C\u3002\u57FA\u4E8E ",paraId:0,tocIndex:0},{value:"RelationRepository",paraId:0,tocIndex:0},{value:"\uFF0C\u6BCF\u79CD\u5173\u8054\u90FD\u6D3E\u751F\u51FA\u5BF9\u5E94\u7684\u5B9E\u73B0\uFF0C\u5206\u522B\u4E3A",paraId:0,tocIndex:0},{value:"HasOneRepository",paraId:1,tocIndex:0},{value:"HasManyRepository",paraId:2,tocIndex:0},{value:"BelongsToRepository",paraId:2,tocIndex:0},{value:"BelongsToManyRepository",paraId:2,tocIndex:0},{value:"\u7B7E\u540D",paraId:3,tocIndex:1},{value:"constructor(sourceCollection: Collection, association: string, sourceKeyValue: string | number)",paraId:4,tocIndex:1},{value:"\u53C2\u6570",paraId:5,tocIndex:1},{value:"\u53C2\u6570\u540D",paraId:6,tocIndex:1},{value:"\u7C7B\u578B",paraId:6,tocIndex:1},{value:"\u9ED8\u8BA4\u503C",paraId:6,tocIndex:1},{value:"\u63CF\u8FF0",paraId:6,tocIndex:1},{value:"sourceCollection",paraId:6,tocIndex:1},{value:"Collection",paraId:6,tocIndex:1},{value:"-",paraId:6,tocIndex:1},{value:"\u5173\u8054\u4E2D\u7684\u53C2\u7167\u5173\u7CFB\uFF08referencing relation\uFF09\u5BF9\u5E94\u7684 Collection",paraId:6,tocIndex:1},{value:"association",paraId:6,tocIndex:1},{value:"string",paraId:6,tocIndex:1},{value:"-",paraId:6,tocIndex:1},{value:"\u5173\u8054\u540D\u79F0",paraId:6,tocIndex:1},{value:"sourceKeyValue",paraId:6,tocIndex:1},{value:"string | number",paraId:6,tocIndex:1},{value:"-",paraId:6,tocIndex:1},{value:"\u53C2\u7167\u5173\u7CFB\u4E2D\u5BF9\u5E94\u7684 key \u503C",paraId:6,tocIndex:1},{value:"db: Database",paraId:7},{value:"\u6570\u636E\u5E93\u5BF9\u8C61",paraId:8,tocIndex:3},{value:"sourceCollection",paraId:7},{value:"\u5173\u8054\u4E2D\u7684\u53C2\u7167\u5173\u7CFB\uFF08referencing relation\uFF09\u5BF9\u5E94\u7684 Collection",paraId:9,tocIndex:4},{value:"targetCollection",paraId:7},{value:"\u5173\u8054\u4E2D\u88AB\u53C2\u7167\u5173\u7CFB\uFF08referenced relation\uFF09\u5BF9\u5E94\u7684 Collection",paraId:10,tocIndex:5},{value:"association",paraId:7},{value:"sequelize \u4E2D\u7684\u4E0E\u5F53\u524D\u5173\u8054\u5BF9\u5E94\u7684 association \u5BF9\u8C61",paraId:11,tocIndex:6},{value:"associationField",paraId:7},{value:"collection \u4E2D\u7684\u4E0E\u5F53\u524D\u5173\u8054\u5BF9\u5E94\u7684\u5B57\u6BB5",paraId:12,tocIndex:7},{value:"sourceKeyValue",paraId:7},{value:"\u53C2\u7167\u5173\u7CFB\u4E2D\u5BF9\u5E94\u7684 key \u503C",paraId:13,tocIndex:8}],dy=e(42122),Wu=e.n(dy),iy={"docs-en-us-development-client-ui-schema-extending-demo-0":{component:n.memo(n.lazy(io()(Ct()().mark(function Vt(){var Ga,va,Fa,lt,Ka,ft,Ba;return Ct()().wrap(function(ct){for(;;)switch(ct.prev=ct.next){case 0:return ct.next=2,Promise.resolve().then(e.t.bind(e,67294,19));case 2:return Ga=ct.sent,va=Ga.default,ct.next=6,Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(40071)]).then(e.bind(e,73377));case 6:return Fa=ct.sent,lt=Fa.SchemaComponent,Ka=Fa.SchemaComponentProvider,ft=function(){return va.createElement("h1",null,"Hello, world!")},Ba={type:"void",name:"hello","x-component":"Hello"},ct.abrupt("return",{default:function(){return va.createElement(Ka,{components:{Hello:ft}},va.createElement(lt,{schema:Ba}))}});case 12:case"end":return ct.stop()}},Vt)})))),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-extending-demo-0",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:`import React from 'react'; import { SchemaComponent, SchemaComponentProvider } from '@nocobase/client'; const Hello = () =>

Hello, world!

; @@ -6108,8 +6160,8 @@ export default () => {
); -};`},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},antd:{type:"NPM",value:"5.16.1"},react:{type:"NPM",value:"18.1.0"}}}}},l0={title:"Extending Schema Components",toc:"menu",filename:"docs/en-US/development/client/ui-schema/extending.md",lastUpdated:1732240239e3,description:"In addition to native HTML tags, developers can adapt more custom components to enrich the Schema component library."},c0=[{id:"extending-schema-components",depth:1,title:"Extending Schema Components"},{id:"simple-extension",depth:2,title:"Simple Extension"},{id:"integrating-third-party-components-with-connect",depth:2,title:"Integrating Third-Party Components with Connect"},{id:"using-observer-to-respond-to-data-changes",depth:2,title:"Using Observer to Respond to Data Changes"},{id:"nested-schema",depth:2,title:"Nested Schema"},{id:"nesting-void-and-object-type-schema",depth:3,title:"Nesting void and object type schema"},{id:"nesting-array-type-schema",depth:3,title:"Nesting array type schema"},{id:"when-array-elements-are-string-or-number",depth:4,title:"When array elements are string or number"},{id:"when-array-elements-are-objects",depth:4,title:"When array elements are objects"},{id:"tree-structure-data",depth:4,title:"Tree Structure Data"}],s0=[{value:"In addition to native HTML tags, developers can adapt more custom components to enrich the Schema component library.",paraId:0,tocIndex:0},{value:"Common methods for extending components include:",paraId:1,tocIndex:0},{value:"connect",paraId:2,tocIndex:0},{value:": Non-intrusive integration with third-party components, generally used for adapting field components, often used in conjunction with ",paraId:2,tocIndex:0},{value:"mapProps",paraId:2,tocIndex:0},{value:" and ",paraId:2,tocIndex:0},{value:"mapReadPretty",paraId:2,tocIndex:0},{value:".",paraId:2,tocIndex:0},{value:"observer",paraId:2,tocIndex:0},{value:": Used when the component uses observable objects internally, and you want the component to respond to changes in the observable objects.",paraId:2,tocIndex:0},{value:"Register an existing React component directly.",paraId:3,tocIndex:1},{value:"props.children",paraId:4,tocIndex:4},{value:" nesting is suitable for ",paraId:4,tocIndex:4},{value:"void",paraId:4,tocIndex:4},{value:" and ",paraId:4,tocIndex:4},{value:"object",paraId:4,tocIndex:4},{value:" type properties. For examples, see ",paraId:4,tocIndex:4},{value:"Nesting void and object type schema",paraId:5,tocIndex:4},{value:"",paraId:4,tocIndex:4},{value:" for custom nesting, suitable for all types. For examples, see ",paraId:4,tocIndex:4},{value:"Nesting array type schema",paraId:6,tocIndex:4},{value:".",paraId:4,tocIndex:4},{value:"Note:",paraId:7,tocIndex:4},{value:"Properties other than ",paraId:8,tocIndex:4},{value:"void",paraId:8,tocIndex:4},{value:" and ",paraId:8,tocIndex:4},{value:"object",paraId:8,tocIndex:4},{value:" types cannot be directly rendered through ",paraId:8,tocIndex:4},{value:"props.children",paraId:8,tocIndex:4},{value:", but you can use ",paraId:8,tocIndex:4},{value:"",paraId:8,tocIndex:4},{value:" to solve the nesting problem.",paraId:8,tocIndex:4},{value:"Only ",paraId:8,tocIndex:4},{value:"void",paraId:8,tocIndex:4},{value:" and ",paraId:8,tocIndex:4},{value:"object",paraId:8,tocIndex:4},{value:" type schemas can be used with ",paraId:8,tocIndex:4},{value:"onlyRenderProperties",paraId:8,tocIndex:4},{value:".",paraId:8,tocIndex:4},{value:` -`,paraId:9,tocIndex:4},{value:"Properties nodes can be adapted directly through ",paraId:10,tocIndex:5},{value:"props.children",paraId:10,tocIndex:5},{value:".",paraId:10,tocIndex:5},{value:"Rendering results comparison of various property types:",paraId:11},{value:"You can use ",paraId:12,tocIndex:6},{value:"",paraId:12,tocIndex:6},{value:" to solve custom nesting issues.",paraId:12,tocIndex:6}],u0=e(56690),cc=e.n(u0),p0=e(89728),sc=e.n(p0),I0=e(61655),uc=e.n(I0),_0=e(26389),pc=e.n(_0),v0={"docs-en-us-development-client-ui-schema-rendering-demo-0":{component:n.memo(n.lazy(io()(Ct()().mark(function Vt(){var Ga,va,Fa,lt,Ka,ft,Ba;return Ct()().wrap(function(ct){for(;;)switch(ct.prev=ct.next){case 0:return ct.next=2,Promise.resolve().then(e.t.bind(e,67294,19));case 2:return Ga=ct.sent,va=Ga.default,ct.next=6,Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(40071)]).then(e.bind(e,73377));case 6:return Fa=ct.sent,lt=Fa.SchemaComponent,Ka=Fa.SchemaComponentProvider,ft=function(){return va.createElement("h1",null,"Hello, world!")},Ba={type:"void",name:"hello","x-component":"Hello"},ct.abrupt("return",{default:function(){return va.createElement(Ka,{components:{Hello:ft}},va.createElement(lt,{schema:Ba}))}});case 12:case"end":return ct.stop()}},Vt)})))),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-rendering-demo-0",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:`import React from 'react'; +};`},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},antd:{type:"NPM",value:"5.16.1"},react:{type:"NPM",value:"18.1.0"}}}}},ly={title:"Extending Schema Components",toc:"menu",filename:"docs/en-US/development/client/ui-schema/extending.md",lastUpdated:173254844e4,description:"In addition to native HTML tags, developers can adapt more custom components to enrich the Schema component library."},cy=[{id:"extending-schema-components",depth:1,title:"Extending Schema Components"},{id:"simple-extension",depth:2,title:"Simple Extension"},{id:"integrating-third-party-components-with-connect",depth:2,title:"Integrating Third-Party Components with Connect"},{id:"using-observer-to-respond-to-data-changes",depth:2,title:"Using Observer to Respond to Data Changes"},{id:"nested-schema",depth:2,title:"Nested Schema"},{id:"nesting-void-and-object-type-schema",depth:3,title:"Nesting void and object type schema"},{id:"nesting-array-type-schema",depth:3,title:"Nesting array type schema"},{id:"when-array-elements-are-string-or-number",depth:4,title:"When array elements are string or number"},{id:"when-array-elements-are-objects",depth:4,title:"When array elements are objects"},{id:"tree-structure-data",depth:4,title:"Tree Structure Data"}],sy=[{value:"In addition to native HTML tags, developers can adapt more custom components to enrich the Schema component library.",paraId:0,tocIndex:0},{value:"Common methods for extending components include:",paraId:1,tocIndex:0},{value:"connect",paraId:2,tocIndex:0},{value:": Non-intrusive integration with third-party components, generally used for adapting field components, often used in conjunction with ",paraId:2,tocIndex:0},{value:"mapProps",paraId:2,tocIndex:0},{value:" and ",paraId:2,tocIndex:0},{value:"mapReadPretty",paraId:2,tocIndex:0},{value:".",paraId:2,tocIndex:0},{value:"observer",paraId:2,tocIndex:0},{value:": Used when the component uses observable objects internally, and you want the component to respond to changes in the observable objects.",paraId:2,tocIndex:0},{value:"Register an existing React component directly.",paraId:3,tocIndex:1},{value:"props.children",paraId:4,tocIndex:4},{value:" nesting is suitable for ",paraId:4,tocIndex:4},{value:"void",paraId:4,tocIndex:4},{value:" and ",paraId:4,tocIndex:4},{value:"object",paraId:4,tocIndex:4},{value:" type properties. For examples, see ",paraId:4,tocIndex:4},{value:"Nesting void and object type schema",paraId:5,tocIndex:4},{value:"",paraId:4,tocIndex:4},{value:" for custom nesting, suitable for all types. For examples, see ",paraId:4,tocIndex:4},{value:"Nesting array type schema",paraId:6,tocIndex:4},{value:".",paraId:4,tocIndex:4},{value:"Note:",paraId:7,tocIndex:4},{value:"Properties other than ",paraId:8,tocIndex:4},{value:"void",paraId:8,tocIndex:4},{value:" and ",paraId:8,tocIndex:4},{value:"object",paraId:8,tocIndex:4},{value:" types cannot be directly rendered through ",paraId:8,tocIndex:4},{value:"props.children",paraId:8,tocIndex:4},{value:", but you can use ",paraId:8,tocIndex:4},{value:"",paraId:8,tocIndex:4},{value:" to solve the nesting problem.",paraId:8,tocIndex:4},{value:"Only ",paraId:8,tocIndex:4},{value:"void",paraId:8,tocIndex:4},{value:" and ",paraId:8,tocIndex:4},{value:"object",paraId:8,tocIndex:4},{value:" type schemas can be used with ",paraId:8,tocIndex:4},{value:"onlyRenderProperties",paraId:8,tocIndex:4},{value:".",paraId:8,tocIndex:4},{value:` +`,paraId:9,tocIndex:4},{value:"Properties nodes can be adapted directly through ",paraId:10,tocIndex:5},{value:"props.children",paraId:10,tocIndex:5},{value:".",paraId:10,tocIndex:5},{value:"Rendering results comparison of various property types:",paraId:11},{value:"You can use ",paraId:12,tocIndex:6},{value:"",paraId:12,tocIndex:6},{value:" to solve custom nesting issues.",paraId:12,tocIndex:6}],uy=e(56690),cc=e.n(uy),py=e(89728),sc=e.n(py),Iy=e(61655),uc=e.n(Iy),_y=e(26389),pc=e.n(_y),vy={"docs-en-us-development-client-ui-schema-rendering-demo-0":{component:n.memo(n.lazy(io()(Ct()().mark(function Vt(){var Ga,va,Fa,lt,Ka,ft,Ba;return Ct()().wrap(function(ct){for(;;)switch(ct.prev=ct.next){case 0:return ct.next=2,Promise.resolve().then(e.t.bind(e,67294,19));case 2:return Ga=ct.sent,va=Ga.default,ct.next=6,Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(40071)]).then(e.bind(e,73377));case 6:return Fa=ct.sent,lt=Fa.SchemaComponent,Ka=Fa.SchemaComponentProvider,ft=function(){return va.createElement("h1",null,"Hello, world!")},Ba={type:"void",name:"hello","x-component":"Hello"},ct.abrupt("return",{default:function(){return va.createElement(Ka,{components:{Hello:ft}},va.createElement(lt,{schema:Ba}))}});case 12:case"end":return ct.stop()}},Vt)})))),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-rendering-demo-0",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:`import React from 'react'; import { SchemaComponent, SchemaComponentProvider } from '@nocobase/client'; const Hello = () =>

Hello, world!

; @@ -6169,7 +6221,7 @@ const app = new Application({ plugins: [PluginHello], }); -export default app.getRootComponent();`},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"}}}}},m0={title:"Schema Rendering",toc:"menu",filename:"docs/en-US/development/client/ui-schema/rendering.md",lastUpdated:1732240239e3,description:"Schema rendering involves several core components:"},h0=[{id:"schema-rendering",depth:1,title:"Schema Rendering"},{id:"core-components",depth:2,title:"Core Components"},{id:"what-is-scope",depth:2,title:"What is Scope?"},{id:"registering-components-and-scopes",depth:2,title:"Registering Components and Scopes"},{id:"using-in-application",depth:2,title:"Using in Application"}],f0=[{value:"Schema rendering involves several core components:",paraId:0,tocIndex:1},{value:"",paraId:1,tocIndex:1},{value:" provides the context needed for schema rendering.",paraId:1,tocIndex:1},{value:"",paraId:1,tocIndex:1},{value:" extends components and scopes, optional.",paraId:1,tocIndex:1},{value:"",paraId:1,tocIndex:1},{value:" renders the schema, must be used within ",paraId:1,tocIndex:1},{value:"",paraId:1,tocIndex:1},{value:".",paraId:1,tocIndex:1},{value:"Basic usage is as follows:",paraId:2,tocIndex:1},{value:"For specific API details, refer to ",paraId:3},{value:"SchemaComponent",paraId:3},{value:".",paraId:3},{value:"Scope refers to variables or functions available within the schema. For example, the function ",paraId:4,tocIndex:2},{value:"t()",paraId:4,tocIndex:2},{value:" in the following example needs to be registered in the scope to render the title correctly.",paraId:4,tocIndex:2},{value:`",paraId:1,tocIndex:1},{value:" provides the context needed for schema rendering.",paraId:1,tocIndex:1},{value:"",paraId:1,tocIndex:1},{value:" extends components and scopes, optional.",paraId:1,tocIndex:1},{value:"",paraId:1,tocIndex:1},{value:" renders the schema, must be used within ",paraId:1,tocIndex:1},{value:"",paraId:1,tocIndex:1},{value:".",paraId:1,tocIndex:1},{value:"Basic usage is as follows:",paraId:2,tocIndex:1},{value:"For specific API details, refer to ",paraId:3},{value:"SchemaComponent",paraId:3},{value:".",paraId:3},{value:"Scope refers to variables or functions available within the schema. For example, the function ",paraId:4,tocIndex:2},{value:"t()",paraId:4,tocIndex:2},{value:" in the following example needs to be registered in the scope to render the title correctly.",paraId:4,tocIndex:2},{value:` \u521B\u5EFA\u6570\u636E\u8868\u300D \u4E0B\u62C9\u4E2D\uFF0C\u9009\u62E9\u300C\u8FDE\u63A5\u5916\u90E8\u6570\u636E\u300D",paraId:8,tocIndex:5},{value:"\u5728\u300C\u6570\u636E\u5E93\u670D\u52A1\u300D\u4E0B\u62C9\u9009\u9879\u4E2D\uFF0C\u9009\u62E9\u5DF2\u5B58\u5728\u7684\u6570\u636E\u5E93\u670D\u52A1\uFF0C\u6216\u8005\u300C\u521B\u5EFA\u6570\u636E\u5E93\u670D\u52A1\u300D",paraId:9,tocIndex:5},{value:"\u521B\u5EFA\u6570\u636E\u5E93\u670D\u52A1",paraId:10,tocIndex:5},{value:"\u9009\u62E9\u6570\u636E\u5E93\u670D\u52A1\u4E4B\u540E\uFF0C \u5728\u300C\u8FDC\u7A0B\u8868\u300D\u7684\u4E0B\u62C9\u9009\u9879\u4E2D\uFF0C\u9009\u62E9\u9700\u8981\u8FDE\u63A5\u7684\u6570\u636E\u8868\u3002",paraId:11,tocIndex:5},{value:"\u914D\u7F6E\u5B57\u6BB5\u4FE1\u606F",paraId:12,tocIndex:5},{value:"\u5982\u679C\u8FDC\u7A0B\u8868\u6709\u7ED3\u6784\u53D8\u5316\uFF0C\u4E5F\u53EF\u4EE5\u300C\u4ECE\u8FDC\u7A0B\u8868\u540C\u6B65\u300D",paraId:13,tocIndex:5},{value:"\u8FDC\u7A0B\u8868\u540C\u6B65",paraId:14,tocIndex:5},{value:"\u6700\u540E\uFF0C\u5728\u754C\u9762\u91CC\u663E\u793A",paraId:15,tocIndex:5}],cy={},sy={title:"\u7B5B\u9009\u533A\u5757",toc:"menu",filename:"docs/en-US/plugins/data-visualization/user/filter.md",lastUpdated:1732240239e3,description:"\u56FE\u8868\u533A\u5757\u4E2D\u7684\u7B5B\u9009\u533A\u5757\uFF0C\u7528\u4E8E\u5BF9\u5F53\u524D\u56FE\u8868\u533A\u5757\u5167\u7684\u591A\u4E2A\u56FE\u8868\u8FDB\u884C\u52A8\u6001\u7B5B\u9009\u3002"},uy=[{id:"\u7B5B\u9009\u533A\u5757",depth:1,title:"\u7B5B\u9009\u533A\u5757"},{id:"\u542F\u7528\u7981\u7528",depth:2,title:"\u542F\u7528/\u7981\u7528"},{id:"\u914D\u7F6E\u7B5B\u9009\u5B57\u6BB5",depth:2,title:"\u914D\u7F6E\u7B5B\u9009\u5B57\u6BB5"},{id:"\u6570\u636E\u8868\u5B57\u6BB5",depth:3,title:"\u6570\u636E\u8868\u5B57\u6BB5"},{id:"\u81EA\u5B9A\u4E49\u5B57\u6BB5",depth:3,title:"\u81EA\u5B9A\u4E49\u5B57\u6BB5"},{id:"\u914D\u7F6E\u533A\u5757\u52A8\u4F5C",depth:2,title:"\u914D\u7F6E\u533A\u5757\u52A8\u4F5C"}],py=[{value:"\u56FE\u8868\u533A\u5757\u4E2D\u7684\u7B5B\u9009\u533A\u5757\uFF0C\u7528\u4E8E\u5BF9\u5F53\u524D\u56FE\u8868\u533A\u5757\u5167\u7684\u591A\u4E2A\u56FE\u8868\u8FDB\u884C\u52A8\u6001\u7B5B\u9009\u3002",paraId:0,tocIndex:0},{value:"\u5728\u56FE\u8868\u533A\u5757\u4E2D\u70B9\u51FB\u201C\u6DFB\u52A0\u533A\u5757\u201D (Add block) - \u201C\u7B5B\u9009\u201D (Filter), \u53EF\u4EE5\u542F\u7528/\u7981\u7528\u7B5B\u9009\u533A\u5757\u3002",paraId:1,tocIndex:1},{value:"\u5BF9\u4E8E\u5F53\u524D\u56FE\u8868\u533A\u5757\u4E2D\u7684\u56FE\u8868\u6240\u7528\u5230\u7684\u6570\u636E\u8868\uFF0C\u76F4\u63A5\u9009\u62E9\u6570\u636E\u8868\u5BF9\u5E94\u7684\u5B57\u6BB5\uFF0C\u5373\u53EF\u521B\u5EFA\u4E00\u4E2A\u7B5B\u9009\u8868\u5355\u5B57\u6BB5\u3002",paraId:2,tocIndex:3},{value:"\u53EF\u4EE5\u5BF9\u8868\u5355\u5B57\u6BB5\u8FDB\u884C\u914D\u7F6E\uFF1A",paraId:3,tocIndex:3},{value:"\u914D\u7F6E\u5B57\u6BB5\u663E\u793A\u6807\u9898",paraId:4,tocIndex:3},{value:"\u914D\u7F6E\u5B57\u6BB5\u63CF\u8FF0",paraId:5,tocIndex:3},{value:"\u914D\u7F6E\u8BE5\u5B57\u6BB5\u5728\u7B5B\u9009\u65F6\u5E94\u7528\u7684\u64CD\u4F5C\u7B26",paraId:6,tocIndex:3},{value:`\u914D\u7F6E\u5B57\u6BB5\u9ED8\u8BA4\u503C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u53D8\u91CF\u3002\u53D8\u91CF\u7684\u6570\u636E\u7C7B\u578B\u9700\u4E0E\u5F53\u524D\u5B57\u6BB5\u6570\u636E\u7C7B\u578B\u76F8\u7B26\u3002 -`,paraId:7,tocIndex:3},{value:"\u4F8B\u5982\uFF1A",paraId:8,tocIndex:3},{value:"\u914D\u7F6E\u9ED8\u8BA4\u503C\u4E3A\u5F53\u524D\u7528\u6237ID\uFF0C\u9875\u9762\u52A0\u8F7D\u540E\u81EA\u52A8\u7B5B\u9009\u51FA\u5F53\u524D\u7528\u6237\u6570\u636E\u3002",paraId:9,tocIndex:3},{value:"\u914D\u7F6E\u9ED8\u8BA4\u503C\u4E3A\u5F53\u524D\u65E5\u671F\uFF0C\u9875\u9762\u52A0\u8F7D\u540E\u81EA\u52A8\u7B5B\u9009\u51FA\u5F53\u524D\u65E5\u671F\u6570\u636E\u3002",paraId:9,tocIndex:3},{value:"\u67D0\u4E9B\u60C5\u51B5\u4E0B\uFF0C\u53EF\u80FD\u9700\u8981\u7528\u540C\u4E00\u4E2A\u7B5B\u9009\u5B57\u6BB5\u6765\u7B5B\u9009\u4E0D\u540C\u8868\u7684\u4E0D\u540C\u5B57\u6BB5\u3002\u4F8B\u5982\uFF1A\u7528\u4E00\u4E2A\u65E5\u671F\u5B57\u6BB5\u6765\u7B5B\u9009\u4E0D\u540C\u8868\u7684\u4E0D\u540C\u65E5\u671F\u5B57\u6BB5\u3002\u8FD9\u65F6\u5019\u53EF\u4EE5\u9009\u62E9\u521B\u5EFA\u81EA\u5B9A\u4E49\u5B57\u6BB5\u3002",paraId:10,tocIndex:4},{value:"\u6DFB\u52A0\u81EA\u5B9A\u4E49\u5B57\u6BB5\u7684\u65F6\u5019\uFF0C\u9700\u8981\u8BBE\u7F6E\u5B57\u6BB5\u6807\u9898\uFF0C\u9009\u62E9\u5B57\u6BB5\u7EC4\u4EF6\u53CA\u8FDB\u884C\u76F8\u5E94\u914D\u7F6E\uFF0C\u8FD8\u53EF\u4EE5\u4ECE\u5F53\u524D\u533A\u5757\u4F7F\u7528\u7684\u6570\u636E\u8868\u4E2D\u9009\u62E9\u4E00\u4E2A\u5B57\u6BB5\uFF0C\u76F4\u63A5\u5E94\u7528\u8BE5\u5B57\u6BB5\u7684\u5143\u6570\u636E\u914D\u7F6E\uFF0C\u907F\u514D\u91CD\u590D\u914D\u7F6E\u3002",paraId:11,tocIndex:4},{value:"\u8981\u4F7F\u7528\u81EA\u5B9A\u4E49\u7B5B\u9009\u5B57\u6BB5\uFF0C\u9700\u8981\u6253\u5F00\u5BF9\u5E94\u56FE\u8868\u7684\u914D\u7F6E\uFF0C\u7136\u540E\u5728\u6570\u636E\u67E5\u8BE2\u7684\u7B5B\u9009\u914D\u7F6E\u4E2D\uFF0C\u6DFB\u52A0\u7B5B\u9009\u6761\u4EF6\u5E76\u4F7F\u7528\u201C\u5F53\u524D\u7B5B\u9009\u201D (Current filter) \u4E2D\u7684\u53D8\u91CF\u3002\u88AB\u7B5B\u9009\u5B57\u6BB5\u7684\u7C7B\u578B\u9700\u8981\u548C\u7B5B\u9009\u8868\u5355\u81EA\u5B9A\u4E49\u5B57\u6BB5\u7684\u7C7B\u578B\u76F8\u7B26\u3002",paraId:12,tocIndex:4},{value:"\u5BF9\u4E8E\u81EA\u5B9A\u4E49\u5B57\u6BB5\uFF0C\u540C\u6837\u53EF\u4EE5\u914D\u7F6E\u6807\u9898\u3001\u63CF\u8FF0\u548C\u9ED8\u8BA4\u503C\u3002",paraId:13,tocIndex:4},{value:"\u7B5B\u9009 (Filter) - \u5E94\u7528\u7B5B\u9009\u6761\u4EF6",paraId:14,tocIndex:5},{value:"\u91CD\u7F6E (Reset) - \u91CD\u7F6E\u7B5B\u9009\u8868\u5355",paraId:14,tocIndex:5},{value:"\u6298\u53E0/\u5C55\u5F00 (Collapse / Expand) - \u5C06\u6298\u53E0\u4E3A\u4E00\u884C\u6216\u5C55\u5F00\u591A\u884C",paraId:14,tocIndex:5}],Iy={},_y={title:"\u53EF\u89C6\u5316\u6570\u636E\u8868\u7BA1\u7406",toc:"menu",filename:"docs/en-US/plugins/graph-collection-manager/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},vy=[{id:"\u53EF\u89C6\u5316\u6570\u636E\u8868\u7BA1\u7406",depth:1,title:"\u53EF\u89C6\u5316\u6570\u636E\u8868\u7BA1\u7406"}],my=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],hy={},fy={title:"\u5E76\u884C\u5206\u652F",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/parallel.md",lastUpdated:1732240239e3,description:"\u5E76\u884C\u5206\u652F\u8282\u70B9\u53EF\u4EE5\u5C06\u6D41\u7A0B\u5206\u4E3A\u591A\u4E2A\u5206\u652F\uFF0C\u6BCF\u4E2A\u5206\u652F\u53EF\u4EE5\u914D\u7F6E\u4E0D\u540C\u7684\u8282\u70B9\uFF0C\u6839\u636E\u5206\u652F\u7684\u6A21\u5F0F\u4E0D\u540C\uFF0C\u5206\u652F\u7684\u6267\u884C\u65B9\u5F0F\u4E5F\u4E0D\u540C\u3002\u5728\u9700\u8981\u5728\u540C\u65F6\u6267\u884C\u591A\u4E2A\u64CD\u4F5C\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5E76\u884C\u5206\u652F\u8282\u70B9\u3002"},xy=[{id:"\u5E76\u884C\u5206\u652F",depth:1,title:"\u5E76\u884C\u5206\u652F"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u5206\u652F\u6A21\u5F0F",depth:3,title:"\u5206\u652F\u6A21\u5F0F"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],gy=[{value:"\u5E76\u884C\u5206\u652F\u8282\u70B9\u53EF\u4EE5\u5C06\u6D41\u7A0B\u5206\u4E3A\u591A\u4E2A\u5206\u652F\uFF0C\u6BCF\u4E2A\u5206\u652F\u53EF\u4EE5\u914D\u7F6E\u4E0D\u540C\u7684\u8282\u70B9\uFF0C\u6839\u636E\u5206\u652F\u7684\u6A21\u5F0F\u4E0D\u540C\uFF0C\u5206\u652F\u7684\u6267\u884C\u65B9\u5F0F\u4E5F\u4E0D\u540C\u3002\u5728\u9700\u8981\u5728\u540C\u65F6\u6267\u884C\u591A\u4E2A\u64CD\u4F5C\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5E76\u884C\u5206\u652F\u8282\u70B9\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5E76\u884C\u5206\u652F\u201D\u8282\u70B9\uFF1A",paraId:1,tocIndex:1},{value:"\u5728\u6D41\u7A0B\u4E2D\u589E\u52A0\u5E76\u884C\u5206\u652F\u8282\u70B9\u540E\uFF0C\u4F1A\u9ED8\u8BA4\u589E\u52A0\u4E24\u4E2A\u5B50\u5206\u652F\uFF0C\u540C\u65F6\u4E5F\u53EF\u4EE5\u70B9\u51FB\u589E\u52A0\u5206\u652F\u7684\u6309\u94AE\u589E\u52A0\u4EFB\u610F\u591A\u4E2A\u5206\u652F\uFF0C\u6BCF\u4E2A\u5206\u652F\u90FD\u53EF\u4EE5\u589E\u52A0\u4EFB\u610F\u7684\u8282\u70B9\uFF0C\u4E0D\u9700\u8981\u7684\u5206\u652F\u53EF\u4EE5\u70B9\u51FB\u5206\u652F\u5F00\u59CB\u5904\u7684\u5220\u9664\u6309\u94AE\u5220\u9664\u3002",paraId:2,tocIndex:1},{value:"\u5E76\u884C\u5206\u652F\u8282\u70B9\u6709\u4EE5\u4E0B\u4E09\u79CD\u6A21\u5F0F\uFF1A",paraId:3,tocIndex:3},{value:"\u5168\u90E8\u6210\u529F",paraId:4,tocIndex:3},{value:"\uFF1A\u6240\u6709\u5206\u652F\u90FD\u6267\u884C\u6210\u529F\uFF0C\u6D41\u7A0B\u624D\u4F1A\u7EE7\u7EED\u6267\u884C\u5206\u652F\u7ED3\u675F\u540E\u7684\u8282\u70B9\u3002\u5426\u5219\u4EFB\u610F\u5206\u652F\u63D0\u524D\u7EC8\u6B62\uFF0C\u65E0\u8BBA\u662F\u5931\u8D25\u3001\u51FA\u9519\u8FD8\u662F\u5176\u4ED6\u975E\u6210\u529F\u72B6\u6001\uFF0C\u90FD\u5BFC\u81F4\u6574\u4E2A\u5E76\u884C\u5206\u652F\u8282\u70B9\u4EE5\u8BE5\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\uFF0C\u4E5F\u79F0\u4F5C\u201CAll \u6A21\u5F0F\u201D\u3002",paraId:4,tocIndex:3},{value:"\u4EFB\u610F\u6210\u529F",paraId:4,tocIndex:3},{value:"\uFF1A\u4EFB\u610F\u5206\u652F\u6267\u884C\u6210\u529F\uFF0C\u6D41\u7A0B\u5C31\u4F1A\u7EE7\u7EED\u6267\u884C\u5206\u652F\u7ED3\u675F\u540E\u7684\u8282\u70B9\u3002\u9664\u975E\u6240\u6709\u5206\u652F\u90FD\u63D0\u524D\u7EC8\u6B62\uFF0C\u65E0\u8BBA\u662F\u5931\u8D25\u3001\u51FA\u9519\u8FD8\u662F\u5176\u4ED6\u975E\u6210\u529F\u72B6\u6001\uFF0C\u624D\u4F1A\u5BFC\u81F4\u6574\u4E2A\u5E76\u884C\u5206\u652F\u8282\u70B9\u4EE5\u8BE5\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\uFF0C\u4E5F\u79F0\u4F5C\u201CAny \u6A21\u5F0F\u201D\u3002",paraId:4,tocIndex:3},{value:"\u4EFB\u610F\u6210\u529F\u548C\u5931\u8D25",paraId:4,tocIndex:3},{value:"\uFF1A\u4EFB\u610F\u5206\u652F\u6267\u884C\u6210\u529F\u540E\u6D41\u7A0B\u5C31\u4F1A\u7EE7\u7EED\u6267\u884C\u5206\u652F\u7ED3\u675F\u540E\u7684\u8282\u70B9\uFF0C\u4F46\u4EFB\u610F\u8282\u70B9\u5931\u8D25\u540E\uFF0C\u4F1A\u5BFC\u81F4\u6574\u4E2A\u5E76\u884C\u4EE5\u8BE5\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\uFF0C\u4E5F\u79F0\u4F5C\u201CRace \u6A21\u5F0F\u201D\u3002",paraId:4,tocIndex:3},{value:"\u4E0D\u8BBA\u54EA\u79CD\u6A21\u5F0F\uFF0C\u90FD\u4F1A\u4ECE\u5DE6\u5230\u53F3\u4F9D\u6B21\u5C1D\u8BD5\u6267\u884C\u6BCF\u4E2A\u5206\u652F\uFF0C\u76F4\u5230\u6EE1\u8DB3\u5206\u652F\u9884\u8BBE\u6A21\u5F0F\u7684\u76F8\u5173\u6761\u4EF6\u540E\uFF0C\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u8282\u70B9\u6216\u63D0\u524D\u9000\u51FA\u3002",paraId:5,tocIndex:3},{value:"\u53C2\u8003 ",paraId:6,tocIndex:4},{value:"\u5EF6\u65F6\u8282\u70B9",paraId:7,tocIndex:4},{value:" \u4E2D\u7684\u4F8B\u5B50\u3002",paraId:6,tocIndex:4}],by={},yy={title:"\u6982\u8FF0",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/triggers/index.md",lastUpdated:1732240239e3,description:"\u89E6\u53D1\u5668\u662F\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5165\u53E3\uFF0C\u5F53\u5E94\u7528\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u6EE1\u8DB3\u89E6\u53D1\u5668\u6761\u4EF6\u7684\u4E8B\u4EF6\u4EA7\u751F\u65F6\uFF0C\u5DE5\u4F5C\u6D41\u5C06\u4F1A\u88AB\u89E6\u53D1\u6267\u884C\u3002\u89E6\u53D1\u5668\u7684\u7C7B\u578B\u4E5F\u5C31\u662F\u5DE5\u4F5C\u6D41\u7684\u7C7B\u578B\uFF0C\u5728\u521B\u5EFA\u5DE5\u4F5C\u6D41\u65F6\u9009\u62E9\uFF0C\u521B\u5EFA\u540E\u4E0D\u53EF\u4FEE\u6539\u3002\u76EE\u524D\u5185\u7F6E\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u5982\u4E0B\uFF1A"},wy=[{id:"\u6982\u8FF0",depth:1,title:"\u6982\u8FF0"}],ky=[{value:"\u89E6\u53D1\u5668\u662F\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5165\u53E3\uFF0C\u5F53\u5E94\u7528\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u6EE1\u8DB3\u89E6\u53D1\u5668\u6761\u4EF6\u7684\u4E8B\u4EF6\u4EA7\u751F\u65F6\uFF0C\u5DE5\u4F5C\u6D41\u5C06\u4F1A\u88AB\u89E6\u53D1\u6267\u884C\u3002\u89E6\u53D1\u5668\u7684\u7C7B\u578B\u4E5F\u5C31\u662F\u5DE5\u4F5C\u6D41\u7684\u7C7B\u578B\uFF0C\u5728\u521B\u5EFA\u5DE5\u4F5C\u6D41\u65F6\u9009\u62E9\uFF0C\u521B\u5EFA\u540E\u4E0D\u53EF\u4FEE\u6539\u3002\u76EE\u524D\u5185\u7F6E\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u5982\u4E0B\uFF1A",paraId:0,tocIndex:0},{value:"\u8868\u5355\u4E8B\u4EF6",paraId:1,tocIndex:0},{value:"\u6570\u636E\u8868\u4E8B\u4EF6",paraId:1,tocIndex:0},{value:"\u5B9A\u65F6\u4EFB\u52A1",paraId:1,tocIndex:0},{value:"\u6BD4\u5982\u7528\u6237\u63D0\u4EA4\u4E00\u4E2A\u8868\u5355\uFF0C\u6216\u8005\u6570\u636E\u8868\u4E2D\u7684\u6570\u636E\u7531\u4E8E\u7528\u6237\u64CD\u4F5C\u6216\u7A0B\u5E8F\u8C03\u7528\u53D1\u751F\u53D8\u5316\uFF0C\u6216\u8005\u5B9A\u65F6\u4EFB\u52A1\u5230\u8FBE\u6267\u884C\u65F6\u95F4\uFF0C\u90FD\u4F1A\u89E6\u53D1\u5BF9\u5E94\u7684\u5DE5\u4F5C\u6D41\u6267\u884C\u3002",paraId:2,tocIndex:0},{value:"\u4E0E\u6570\u636E\u6709\u5173\u7684\u89E6\u53D1\u5668\uFF08\u5982\u8868\u5355\u3001\u6570\u636E\u8868\u4E8B\u4EF6\uFF09\u901A\u5E38\u4F1A\u643A\u5E26\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u8FD9\u4E9B\u6570\u636E\u53EF\u4EE5\u5728\u5DE5\u4F5C\u6D41\u7684\u8282\u70B9\u4E2D\u88AB\u5F15\u7528\uFF0C\u7528\u4EE5\u5B9E\u73B0\u6570\u636E\u7684\u81EA\u52A8\u5316\u5904\u7406\u3002\u4F8B\u5982\u5F53\u7528\u6237\u63D0\u4EA4\u4E00\u4E2A\u7ED1\u5B9A\u4E86\u5DE5\u4F5C\u6D41\u7684\u8868\u5355\u65F6\uFF0C\u8868\u5355\u63D0\u4EA4\u7684\u6570\u636E\u4F1A\u88AB\u6CE8\u5165\u5230\u6267\u884C\u8BA1\u5212\u7684\u4E0A\u4E0B\u6587\u73AF\u5883\u4E2D\uFF0C\u4EE5\u4F9B\u540E\u7EED\u8282\u70B9\u4F5C\u4E3A\u53D8\u91CF\u4F7F\u7528\u3002",paraId:3,tocIndex:0},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\u4EE5\u540E\uFF0C\u5728\u5DE5\u4F5C\u6D41\u67E5\u770B\u9875\u9762\u4E2D\uFF0C\u89E6\u53D1\u5668\u4F1A\u4EE5\u5165\u53E3\u8282\u70B9\u7684\u6837\u5F0F\u663E\u793A\u5728\u6D41\u7A0B\u7684\u5F00\u59CB\u4F4D\u7F6E\uFF0C\u70B9\u51FB\u8BE5\u5361\u7247\u5373\u53EF\u6253\u5F00\u914D\u7F6E\u5F39\u7A97\u3002\u6839\u636E\u89E6\u53D1\u5668\u7684\u7C7B\u578B\u4E0D\u540C\uFF0C\u53EF\u4EE5\u914D\u7F6E\u89E6\u53D1\u5668\u7684\u76F8\u5173\u6761\u4EF6\u3002",paraId:4,tocIndex:0},{value:` - `,paraId:5}],Sy={"docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add-item":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,3063))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add-item",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(79937).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},"app.tsx":{type:"FILE",value:e(58387).Z},react:{type:"NPM",value:"18.1.0"}}}},"docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,67988))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(96469).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(56202).Z}}}},"docs-en-us-development-client-ui-schema-settings-demo-use-schema-settings-render":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,49934))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-settings-demo-use-schema-settings-render",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(62913).Z},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},antd:{type:"NPM",value:"5.16.1"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(95858).Z}}}},"docs-en-us-development-client-ui-schema-settings-demo-button":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,50885))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-settings-demo-button",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(54922).Z},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},antd:{type:"NPM",value:"5.16.1"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(78534).Z}}}},"docs-en-us-development-client-ui-schema-settings-demo-schema-settings-basic":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,3243))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-settings-demo-schema-settings-basic",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(87325).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(62932).Z}}}}},Uy={title:"Schema settings",toc:"menu",filename:"docs/en-US/development/client/ui-schema/settings.md",lastUpdated:1732240239e3,description:"After activating the UI configuration, when the mouse moves over a specific block, field, or action, the corresponding Schema toolbar will be displayed. The settings button in the toolbar is the settings component for the current Schema."},Py=[{id:"schema-settings",depth:1,title:"Schema settings"},{id:"built-in-settings",depth:2,title:"Built-in settings"},{id:"adding-settings-items-to-existing-settings",depth:2,title:"Adding settings items to existing settings"},{id:"adding-new-settings",depth:2,title:"Adding new settings"},{id:"adding-in-the-plugins-load-method",depth:3,title:"Adding in the plugin's load method"},{id:"how-to-use-the-newly-added-settings",depth:3,title:"How to use the newly added settings"},{id:"schema-components-that-currently-support-x-settings",depth:4,title:"Schema components that currently support x-settings"},{id:"how-to-support-x-settings-in-custom-components",depth:4,title:"How to support x-settings in custom components"},{id:"how-to-implement-schema-settings",depth:2,title:"How to implement Schema settings?"},{id:"api-reference",depth:2,title:"API Reference"}],Ty=[{value:"After activating the UI configuration, when the mouse moves over a specific block, field, or action, the corresponding Schema toolbar will be displayed. The settings button in the toolbar is the settings component for the current Schema.",paraId:0,tocIndex:0},{value:"It is recommended to use the ",paraId:1,tocIndex:2},{value:"schemaSettingsManager.addItem()",paraId:1,tocIndex:2},{value:" method to add settings items. For detailed item configurations, refer to ",paraId:1,tocIndex:2},{value:"SchemaSettings Item API",paraId:2,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:`class PluginDemoAddSchemaSettingsItem extends Plugin { +`,paraId:0,tocIndex:4}],Ry={},My={title:"Attachment Field",toc:"menu",filename:"docs/en-US/handbook/file-manager/field-attachment.md",lastUpdated:173254844e4,description:"The attachment field is a specialized relational field that connects directly to the file collection."},Ly=[{id:"attachment-field",depth:1,title:"Attachment Field"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"example",depth:2,title:"Example"}],Ny=[{value:"The attachment field is a specialized relational field that connects directly to the file collection.",paraId:0,tocIndex:1},{value:"(Example to be added)",paraId:1,tocIndex:3}],zy={},Fy={title:"Localization Management",toc:"menu",filename:"docs/en-US/handbook/localization-management/index.md",lastUpdated:173254844e4,description:"The Localization Management plugin is designed to assist in managing and implementing the localization process for NocoBase. It translates NocoBase's menus, data tables, fields, and all plugins to adapt to the language and culture of a specific region."},By=[{id:"localization-management",depth:1,title:"Localization Management"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"activating-the-plugin",depth:3,title:"Activating the Plugin"},{id:"localization-management-1",depth:3,title:"Localization Management"},{id:"synchronizing-translation-entries",depth:3,title:"Synchronizing Translation Entries"},{id:"publishing",depth:3,title:"Publishing"},{id:"translating-other-languages",depth:3,title:"Translating Other Languages"}],jy=[{value:"The Localization Management plugin is designed to assist in managing and implementing the localization process for NocoBase. It translates NocoBase's menus, data tables, fields, and all plugins to adapt to the language and culture of a specific region.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, so no additional installation is required.",paraId:1,tocIndex:2},{value:"After synchronization, it will list all the translatable entries for the current language.",paraId:2,tocIndex:6},{value:'After completing the translation, you need to click the "Publish" button to make the changes take effect.',paraId:3,tocIndex:7},{value:'Enable other languages in "System Settings," such as Simplified Chinese.',paraId:4,tocIndex:8},{value:"Switch to that language.",paraId:5,tocIndex:8},{value:"Synchronize the entries.",paraId:6,tocIndex:8},{value:"Translate and publish.",paraId:7,tocIndex:8}],Hy={},Wy={title:"Details Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/data-blocks/details.md",lastUpdated:173254844e4,description:"The details block is used to display the values of each field for each data item in detail. It supports flexible field layout and has built-in various actions."},$y=[{id:"details-block",depth:1,title:"Details Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"set-data-scope",depth:3,title:"Set Data Scope"},{id:"set-default-sorting-rule",depth:3,title:"Set Default Sorting Rule"},{id:"configure-fields",depth:2,title:"Configure Fields"},{id:"the-current-collecton-fields",depth:3,title:"The Current Collecton Fields"},{id:"the-association-fields",depth:3,title:"The Association Fields"},{id:"configure-actions",depth:2,title:"Configure Actions"}],Gy=[{value:"The details block is used to display the values of each field for each data item in detail. It supports flexible field layout and has built-in various actions.",paraId:0,tocIndex:1},{value:` + `,paraId:1},{value:"Example: Default filtering of delivered orders",paraId:2,tocIndex:4},{value:"For more details, please refer to ",paraId:3,tocIndex:4},{value:"Setting Data Scope",paraId:4,tocIndex:4},{value:"For more details, please refer to ",paraId:5,tocIndex:5},{value:"Sorting Rules",paraId:6,tocIndex:5},{value:"Set Data Loading Method",paraId:7,tocIndex:5},{value:"Save as Block Template",paraId:8,tocIndex:5},{value:"For more details on detail field configuration, please refer to ",paraId:9,tocIndex:8},{value:"Detail Fields",paraId:10,tocIndex:8},{value:"Edit",paraId:11,tocIndex:9},{value:"Delete",paraId:12,tocIndex:9},{value:"Pop-up",paraId:13,tocIndex:9},{value:"Update Record",paraId:14,tocIndex:9},{value:"Custom Request",paraId:15,tocIndex:9},{value:"Trigger workflow",paraId:16,tocIndex:9}],Vy={},Ky={title:"Sub detail",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/sub-detail.md",lastUpdated:173254844e4,description:"Sub-details serve as the dedicated components for sub-forms in reading mode. Unlike label and title components, sub-details provide the ability to display more extensive data from the current table and enable the configuration of related table data. This allows multi-level relational data to be presented clearly in a nested format."},Zy=[{id:"sub-detail",depth:1,title:"Sub detail"},{id:"introduction",depth:2,title:"Introduction"},{id:"instructions",depth:2,title:"Instructions"},{id:"sub-details-for-many-to-many-relationship-fields",depth:3,title:"Sub-details for Many-to-Many Relationship Fields"},{id:"sub-details-for-one-to-one-relationship-fields",depth:3,title:"Sub-details for One-to-One Relationship Fields"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"setting-sorting-rules",depth:4,title:"Setting Sorting Rules"},{id:"field-component",depth:3,title:"Field Component"},{id:"linkage-rules",depth:3,title:"Linkage Rules"}],Yy=[{value:"Sub-details serve as the dedicated components for sub-forms in reading mode. Unlike label and title components, sub-details provide the ability to display more extensive data from the current table and enable the configuration of related table data. This allows multi-level relational data to be presented clearly in a nested format.",paraId:0,tocIndex:1},{value:"This feature supports the nested display of multi-level relationship fields, such as Orders/Products/Inventory or Orders/Products/Suppliers.",paraId:1,tocIndex:3},{value:"You can adjust the display order for many-to-many relational data.",paraId:2,tocIndex:6},{value:"Field Component",paraId:3,tocIndex:7},{value:": Switch to other relationship field components, such as dropdown select, data selector, etc.",paraId:4,tocIndex:7},{value:"The version of NocoBase needs to be v1.3.17-beta or above.",paraId:5},{value:"For more information, refer to ",paraId:6},{value:"Linkage Rules",paraId:7}],Qy={},Jy={title:"Post-action event",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/post-action.md",lastUpdated:173254844e4,description:'To create a workflow, begin by selecting "Post-action Event" as the type:'},Xy=[{id:"post-action-event",depth:1,title:"Post-action event"},{id:"creating-a-workflow",depth:4,title:"Creating a Workflow"},{id:"execution-mode",depth:4,title:"Execution Mode"},{id:"configuring-the-data-table",depth:4,title:"Configuring the Data Table"},{id:"selecting-trigger-mode",depth:4,title:"Selecting Trigger Mode"},{id:"choosing-action-type",depth:4,title:"Choosing Action Type"},{id:"preloading-related-data",depth:4,title:"Preloading Related Data"},{id:"related-content",depth:2,title:"Related content"}],e2=[{value:'To create a workflow, begin by selecting "Post-action Event" as the type:',paraId:0,tocIndex:1},{value:'When setting up post-action events, you have the option to choose between "Synchronous" and "Asynchronous" execution modes:',paraId:1,tocIndex:2},{value:"Use the synchronous mode if the process needs to execute and provide feedback immediately after a user operation. For other scenarios, the default asynchronous mode is generally suitable. In asynchronous mode, the user operation completes instantly, and the workflow continues to execute in the background as part of a queued process.",paraId:2,tocIndex:2},{value:"To begin configuration, navigate to the workflow canvas and click on the trigger to open the settings window. The first step is to select the data table that you wish to bind:",paraId:3,tocIndex:3},{value:"Next, determine the trigger mode by choosing between Local Mode and Global Mode:",paraId:4,tocIndex:4},{value:"Local Mode",paraId:5,tocIndex:4},{value:": This mode triggers the workflow only on the action buttons that have been explicitly bound to it. If the workflow is not bound, clicking the button will not initiate the workflow. This mode is ideal when you want to tailor the workflow to specific forms or actions.",paraId:5,tocIndex:4},{value:"Global Mode",paraId:5,tocIndex:4},{value:": In this mode, the workflow is triggered by any action button configured within the data table, regardless of the form's origin, and does not require specific workflow binding.",paraId:5,tocIndex:4},{value:"In Local Mode, you can currently bind the following action buttons:",paraId:6,tocIndex:4},{value:'The "Submit" and "Save" buttons in new forms.',paraId:7,tocIndex:4},{value:'The "Submit" and "Save" buttons in update forms.',paraId:7,tocIndex:4},{value:'The "Update Data" button within data rows (such as in tables, lists, or kanban views).',paraId:7,tocIndex:4},{value:'When using Global Mode, you also need to specify the action type. The available options are "Create record action" and "Update record action." The workflow is triggered upon the successful completion of either operation.',paraId:8,tocIndex:5},{value:"If subsequent workflow steps require the use of related data from the trigger, you can select the relationship fields to preload:",paraId:9,tocIndex:6},{value:"These preloaded related data will then be readily accessible throughout the workflow after it is triggered.",paraId:10,tocIndex:6},{value:"Except for trigger configuration, there are also some related contents about post-action trigger that can be further understood through the ",paraId:11,tocIndex:7},{value:"plugin documentation",paraId:12,tocIndex:7},{value:".",paraId:11,tocIndex:7}],a2={},t2={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow-action-trigger/index.md",lastUpdated:173254844e4,description:"In the system, all user-generated data changes are typically carried out through some form of operation, usually by clicking a button. This button could be a submit button on a form or an action button within a data block. Post-action events are designed to bind specific workflows to these button actions, ensuring that a particular process is triggered upon successful user interaction."},n2=[{id:"overview",depth:1,title:"Overview"},{id:"faq",depth:2,title:"FAQ"},{id:"difference-between-post-action-and-pre-action-events",depth:3,title:"Difference Between Post-action and Pre-action Events"},{id:"difference-between-post-action-and-table-events",depth:3,title:"Difference Between Post-action and Table Events"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"}],o2=[{value:"In the system, all user-generated data changes are typically carried out through some form of operation, usually by clicking a button. This button could be a submit button on a form or an action button within a data block. Post-action events are designed to bind specific workflows to these button actions, ensuring that a particular process is triggered upon successful user interaction.",paraId:0},{value:'For instance, when adding or updating data, users can configure the "Bind Workflows" option on a button. Once the action is completed, the bound workflow will be triggered automatically.',paraId:1},{value:"From an implementation standpoint, since Post-action event processing occurs at the middleware level (using Koa middleware), even making an HTTP API call to NocoBase can trigger defined Post-action events.",paraId:2},{value:'The Post-action event was initially called "Form Event." In earlier versions, this feature was limited to form buttons. However, starting from version ',paraId:3},{value:"v0.20",paraId:3},{value:', it has also become available for operation buttons within more data blocks, leading to its renaming as "Post-action event."',paraId:3},{value:"The distinction between Post-action and Pre-action events lies in the timing of their triggers during the operation request and response cycle. One is triggered before the operation is processed, while the other is triggered afterward, as illustrated below:",paraId:4,tocIndex:2},{value:"Pre-action events are triggered before the operation is executed, meaning they occur before the request is processed. These events can be utilized to validate or manipulate the request data, and if the request is blocked, the operation will not proceed.",paraId:5,tocIndex:2},{value:"Conversely, Post-action events are triggered after the user's action has been successfully completed. At this stage, the data has already been submitted successfully, and the related processes can proceed based on the successful outcome.",paraId:6,tocIndex:2},{value:"Post-action events and table events have similarities in that both are triggered after data changes occur. However, their implementations differ. Post-action events are focused on the API level, whereas table events are concerned with changes in data within tables.",paraId:7,tocIndex:3},{value:"Table events are closer to the system's core. In some instances, a single event may trigger data changes that lead to another event, creating a chain reaction. This is particularly true when related table data is altered during operations on the current table, which can trigger events in associated tables.",paraId:8,tocIndex:3},{value:"Table events do not contain user-related information. In contrast, Post-action events are more closely linked to the user end, reflecting the results of user actions. The context of these processes will include user-related information, making them suitable for handling workflows resulting from user actions. In NocoBase's future design, more Post-action events may be added to expand the triggers available, so it is ",paraId:9,tocIndex:3},{value:"recommended to use Post-action events",paraId:9,tocIndex:3},{value:" for managing workflows stemming from data changes caused by user actions.",paraId:9,tocIndex:3},{value:"Another key difference is that Post-action events can be selectively bound to specific forms. If there are multiple forms, some can trigger the event upon submission, while others do not. On the other hand, table events are tied to data changes across the entire table and cannot be selectively bound.",paraId:10,tocIndex:3},{value:"This plugin is built-in and does not require installation.",paraId:11,tocIndex:4},{value:"The use of Post-action events is divided into several parts:",paraId:12,tocIndex:5},{value:"Trigger Configuration",paraId:13,tocIndex:5},{value:"Action Configuration",paraId:14,tocIndex:5},{value:"You can also refer to ",paraId:15,tocIndex:5},{value:"Examples",paraId:16,tocIndex:5},{value:" to understand their application in real-world scenarios.",paraId:15,tocIndex:5},{value:"If external system calls are necessary, please refer to ",paraId:17,tocIndex:5},{value:"External Calls",paraId:18,tocIndex:5},{value:".",paraId:17,tocIndex:5}],r2={},d2={title:"\u8FDE\u63A5\u5916\u90E8\u6570\u636E\u8868",toc:"menu",filename:"docs/en-US/manual/collection/collection-fdw/index.md",lastUpdated:173254844e4,description:"\u57FA\u4E8E\u6570\u636E\u5E93\u7684 foreign data wrapper \u5B9E\u73B0\u7684\u8FDE\u63A5\u8FDC\u7A0B\u6570\u636E\u8868\u7684\u529F\u80FD\u63D2\u4EF6\u3002\u76EE\u524D\u652F\u6301 MySQL \u548C PostgreSQL \u6570\u636E\u5E93\u3002"},i2=[{id:"\u8FDE\u63A5\u5916\u90E8\u6570\u636E\u8868",depth:1,title:"\u8FDE\u63A5\u5916\u90E8\u6570\u636E\u8868"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"mysql",depth:3,title:"MySQL"},{id:"postgresql",depth:3,title:"PostgreSQL"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"}],l2=[{value:"\u57FA\u4E8E\u6570\u636E\u5E93\u7684 foreign data wrapper \u5B9E\u73B0\u7684\u8FDE\u63A5\u8FDC\u7A0B\u6570\u636E\u8868\u7684\u529F\u80FD\u63D2\u4EF6\u3002\u76EE\u524D\u652F\u6301 MySQL \u548C PostgreSQL \u6570\u636E\u5E93\u3002",paraId:0,tocIndex:1},{value:"MySQL \u901A\u8FC7 ",paraId:1,tocIndex:2},{value:"federated",paraId:1,tocIndex:2},{value:" \u5F15\u64CE\uFF0C\u9700\u8981\u6FC0\u6D3B\uFF0C\u652F\u6301\u8FDE\u63A5\u8FDC\u7A0B MySQL \u53CA\u5176\u534F\u8BAE\u517C\u5BB9\u6570\u636E\u5E93\uFF0C\u5982 MariaDB\u3002\u8BE6\u60C5\u6587\u6863\u53C2\u8003 ",paraId:1,tocIndex:2},{value:"Federated Storage Engine",paraId:1,tocIndex:2},{value:"\u3002",paraId:1,tocIndex:2},{value:"\u5728 PostgreSQL \u4E2D\uFF0C\u53EF\u901A\u8FC7\u4E0D\u540C\u7C7B\u578B\u7684 ",paraId:2,tocIndex:3},{value:"fdw",paraId:2,tocIndex:3},{value:" \u6269\u5C55\u6765\u652F\u6301\u4E0D\u540C\u7684\u8FDC\u7A0B\u6570\u636E\u7C7B\u578B\uFF0C\u76EE\u524D\u652F\u6301\u7684\u6269\u5C55\u6709\uFF1A",paraId:2,tocIndex:3},{value:"postgres_fdw",paraId:3,tocIndex:3},{value:"\uFF1A\u5728 PostgreSQL \u4E2D\u8FDE\u63A5\u8FDC\u7A0B PostgreSQL \u6570\u636E\u5E93\u3002",paraId:3,tocIndex:3},{value:"mysql_fdw(\u5F00\u53D1\u4E2D)",paraId:3,tocIndex:3},{value:"\uFF1A\u5728 PostgreSQL \u4E2D\u8FDE\u63A5\u8FDC\u7A0B MySQL \u6570\u636E\u5E93\u3002",paraId:3,tocIndex:3},{value:"\u5176\u4F59\u7C7B\u578B\u7684 fdw \u6269\u5C55\uFF0C\u53EF\u53C2\u8003 ",paraId:3,tocIndex:3},{value:"PostgreSQL Foreign Data Wrappers",paraId:3,tocIndex:3},{value:"\uFF0C\u63A5\u5165 NocoBase \u9700\u8981\u5728\u4EE3\u7801\u4E2D\u5B9E\u73B0\u76F8\u5E94\u7684\u9002\u914D\u63A5\u53E3\u3002",paraId:3,tocIndex:3},{value:"\u524D\u63D0\u6761\u4EF6",paraId:4,tocIndex:4},{value:"\u672C\u5730 MySQL\uFF08NocoBase \u4F7F\u7528\u7684\u6570\u636E\u5E93\uFF09\u9700\u8981\u6FC0\u6D3B ",paraId:5,tocIndex:4},{value:"federated",paraId:5,tocIndex:4},{value:"\uFF0C\u53C2\u8003 ",paraId:5,tocIndex:4},{value:"MySQL \u5982\u4F55\u542F\u7528 federated \u5F15\u64CE",paraId:6,tocIndex:4},{value:"\u7136\u540E\u901A\u8FC7\u63D2\u4EF6\u7BA1\u7406\u5668\u5B89\u88C5\u5E76\u6FC0\u6D3B\u63D2\u4EF6",paraId:7,tocIndex:4},{value:"\u5728\u300C\u6570\u636E\u8868\u7BA1\u7406 > \u521B\u5EFA\u6570\u636E\u8868\u300D \u4E0B\u62C9\u4E2D\uFF0C\u9009\u62E9\u300C\u8FDE\u63A5\u5916\u90E8\u6570\u636E\u300D",paraId:8,tocIndex:5},{value:"\u5728\u300C\u6570\u636E\u5E93\u670D\u52A1\u300D\u4E0B\u62C9\u9009\u9879\u4E2D\uFF0C\u9009\u62E9\u5DF2\u5B58\u5728\u7684\u6570\u636E\u5E93\u670D\u52A1\uFF0C\u6216\u8005\u300C\u521B\u5EFA\u6570\u636E\u5E93\u670D\u52A1\u300D",paraId:9,tocIndex:5},{value:"\u521B\u5EFA\u6570\u636E\u5E93\u670D\u52A1",paraId:10,tocIndex:5},{value:"\u9009\u62E9\u6570\u636E\u5E93\u670D\u52A1\u4E4B\u540E\uFF0C \u5728\u300C\u8FDC\u7A0B\u8868\u300D\u7684\u4E0B\u62C9\u9009\u9879\u4E2D\uFF0C\u9009\u62E9\u9700\u8981\u8FDE\u63A5\u7684\u6570\u636E\u8868\u3002",paraId:11,tocIndex:5},{value:"\u914D\u7F6E\u5B57\u6BB5\u4FE1\u606F",paraId:12,tocIndex:5},{value:"\u5982\u679C\u8FDC\u7A0B\u8868\u6709\u7ED3\u6784\u53D8\u5316\uFF0C\u4E5F\u53EF\u4EE5\u300C\u4ECE\u8FDC\u7A0B\u8868\u540C\u6B65\u300D",paraId:13,tocIndex:5},{value:"\u8FDC\u7A0B\u8868\u540C\u6B65",paraId:14,tocIndex:5},{value:"\u6700\u540E\uFF0C\u5728\u754C\u9762\u91CC\u663E\u793A",paraId:15,tocIndex:5}],c2={},s2={title:"\u7B5B\u9009\u533A\u5757",toc:"menu",filename:"docs/en-US/plugins/data-visualization/user/filter.md",lastUpdated:173254844e4,description:"\u56FE\u8868\u533A\u5757\u4E2D\u7684\u7B5B\u9009\u533A\u5757\uFF0C\u7528\u4E8E\u5BF9\u5F53\u524D\u56FE\u8868\u533A\u5757\u5167\u7684\u591A\u4E2A\u56FE\u8868\u8FDB\u884C\u52A8\u6001\u7B5B\u9009\u3002"},u2=[{id:"\u7B5B\u9009\u533A\u5757",depth:1,title:"\u7B5B\u9009\u533A\u5757"},{id:"\u542F\u7528\u7981\u7528",depth:2,title:"\u542F\u7528/\u7981\u7528"},{id:"\u914D\u7F6E\u7B5B\u9009\u5B57\u6BB5",depth:2,title:"\u914D\u7F6E\u7B5B\u9009\u5B57\u6BB5"},{id:"\u6570\u636E\u8868\u5B57\u6BB5",depth:3,title:"\u6570\u636E\u8868\u5B57\u6BB5"},{id:"\u81EA\u5B9A\u4E49\u5B57\u6BB5",depth:3,title:"\u81EA\u5B9A\u4E49\u5B57\u6BB5"},{id:"\u914D\u7F6E\u533A\u5757\u52A8\u4F5C",depth:2,title:"\u914D\u7F6E\u533A\u5757\u52A8\u4F5C"}],p2=[{value:"\u56FE\u8868\u533A\u5757\u4E2D\u7684\u7B5B\u9009\u533A\u5757\uFF0C\u7528\u4E8E\u5BF9\u5F53\u524D\u56FE\u8868\u533A\u5757\u5167\u7684\u591A\u4E2A\u56FE\u8868\u8FDB\u884C\u52A8\u6001\u7B5B\u9009\u3002",paraId:0,tocIndex:0},{value:"\u5728\u56FE\u8868\u533A\u5757\u4E2D\u70B9\u51FB\u201C\u6DFB\u52A0\u533A\u5757\u201D (Add block) - \u201C\u7B5B\u9009\u201D (Filter), \u53EF\u4EE5\u542F\u7528/\u7981\u7528\u7B5B\u9009\u533A\u5757\u3002",paraId:1,tocIndex:1},{value:"\u5BF9\u4E8E\u5F53\u524D\u56FE\u8868\u533A\u5757\u4E2D\u7684\u56FE\u8868\u6240\u7528\u5230\u7684\u6570\u636E\u8868\uFF0C\u76F4\u63A5\u9009\u62E9\u6570\u636E\u8868\u5BF9\u5E94\u7684\u5B57\u6BB5\uFF0C\u5373\u53EF\u521B\u5EFA\u4E00\u4E2A\u7B5B\u9009\u8868\u5355\u5B57\u6BB5\u3002",paraId:2,tocIndex:3},{value:"\u53EF\u4EE5\u5BF9\u8868\u5355\u5B57\u6BB5\u8FDB\u884C\u914D\u7F6E\uFF1A",paraId:3,tocIndex:3},{value:"\u914D\u7F6E\u5B57\u6BB5\u663E\u793A\u6807\u9898",paraId:4,tocIndex:3},{value:"\u914D\u7F6E\u5B57\u6BB5\u63CF\u8FF0",paraId:5,tocIndex:3},{value:"\u914D\u7F6E\u8BE5\u5B57\u6BB5\u5728\u7B5B\u9009\u65F6\u5E94\u7528\u7684\u64CD\u4F5C\u7B26",paraId:6,tocIndex:3},{value:`\u914D\u7F6E\u5B57\u6BB5\u9ED8\u8BA4\u503C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u53D8\u91CF\u3002\u53D8\u91CF\u7684\u6570\u636E\u7C7B\u578B\u9700\u4E0E\u5F53\u524D\u5B57\u6BB5\u6570\u636E\u7C7B\u578B\u76F8\u7B26\u3002 +`,paraId:7,tocIndex:3},{value:"\u4F8B\u5982\uFF1A",paraId:8,tocIndex:3},{value:"\u914D\u7F6E\u9ED8\u8BA4\u503C\u4E3A\u5F53\u524D\u7528\u6237ID\uFF0C\u9875\u9762\u52A0\u8F7D\u540E\u81EA\u52A8\u7B5B\u9009\u51FA\u5F53\u524D\u7528\u6237\u6570\u636E\u3002",paraId:9,tocIndex:3},{value:"\u914D\u7F6E\u9ED8\u8BA4\u503C\u4E3A\u5F53\u524D\u65E5\u671F\uFF0C\u9875\u9762\u52A0\u8F7D\u540E\u81EA\u52A8\u7B5B\u9009\u51FA\u5F53\u524D\u65E5\u671F\u6570\u636E\u3002",paraId:9,tocIndex:3},{value:"\u67D0\u4E9B\u60C5\u51B5\u4E0B\uFF0C\u53EF\u80FD\u9700\u8981\u7528\u540C\u4E00\u4E2A\u7B5B\u9009\u5B57\u6BB5\u6765\u7B5B\u9009\u4E0D\u540C\u8868\u7684\u4E0D\u540C\u5B57\u6BB5\u3002\u4F8B\u5982\uFF1A\u7528\u4E00\u4E2A\u65E5\u671F\u5B57\u6BB5\u6765\u7B5B\u9009\u4E0D\u540C\u8868\u7684\u4E0D\u540C\u65E5\u671F\u5B57\u6BB5\u3002\u8FD9\u65F6\u5019\u53EF\u4EE5\u9009\u62E9\u521B\u5EFA\u81EA\u5B9A\u4E49\u5B57\u6BB5\u3002",paraId:10,tocIndex:4},{value:"\u6DFB\u52A0\u81EA\u5B9A\u4E49\u5B57\u6BB5\u7684\u65F6\u5019\uFF0C\u9700\u8981\u8BBE\u7F6E\u5B57\u6BB5\u6807\u9898\uFF0C\u9009\u62E9\u5B57\u6BB5\u7EC4\u4EF6\u53CA\u8FDB\u884C\u76F8\u5E94\u914D\u7F6E\uFF0C\u8FD8\u53EF\u4EE5\u4ECE\u5F53\u524D\u533A\u5757\u4F7F\u7528\u7684\u6570\u636E\u8868\u4E2D\u9009\u62E9\u4E00\u4E2A\u5B57\u6BB5\uFF0C\u76F4\u63A5\u5E94\u7528\u8BE5\u5B57\u6BB5\u7684\u5143\u6570\u636E\u914D\u7F6E\uFF0C\u907F\u514D\u91CD\u590D\u914D\u7F6E\u3002",paraId:11,tocIndex:4},{value:"\u8981\u4F7F\u7528\u81EA\u5B9A\u4E49\u7B5B\u9009\u5B57\u6BB5\uFF0C\u9700\u8981\u6253\u5F00\u5BF9\u5E94\u56FE\u8868\u7684\u914D\u7F6E\uFF0C\u7136\u540E\u5728\u6570\u636E\u67E5\u8BE2\u7684\u7B5B\u9009\u914D\u7F6E\u4E2D\uFF0C\u6DFB\u52A0\u7B5B\u9009\u6761\u4EF6\u5E76\u4F7F\u7528\u201C\u5F53\u524D\u7B5B\u9009\u201D (Current filter) \u4E2D\u7684\u53D8\u91CF\u3002\u88AB\u7B5B\u9009\u5B57\u6BB5\u7684\u7C7B\u578B\u9700\u8981\u548C\u7B5B\u9009\u8868\u5355\u81EA\u5B9A\u4E49\u5B57\u6BB5\u7684\u7C7B\u578B\u76F8\u7B26\u3002",paraId:12,tocIndex:4},{value:"\u5BF9\u4E8E\u81EA\u5B9A\u4E49\u5B57\u6BB5\uFF0C\u540C\u6837\u53EF\u4EE5\u914D\u7F6E\u6807\u9898\u3001\u63CF\u8FF0\u548C\u9ED8\u8BA4\u503C\u3002",paraId:13,tocIndex:4},{value:"\u7B5B\u9009 (Filter) - \u5E94\u7528\u7B5B\u9009\u6761\u4EF6",paraId:14,tocIndex:5},{value:"\u91CD\u7F6E (Reset) - \u91CD\u7F6E\u7B5B\u9009\u8868\u5355",paraId:14,tocIndex:5},{value:"\u6298\u53E0/\u5C55\u5F00 (Collapse / Expand) - \u5C06\u6298\u53E0\u4E3A\u4E00\u884C\u6216\u5C55\u5F00\u591A\u884C",paraId:14,tocIndex:5}],I2={},_2={title:"\u53EF\u89C6\u5316\u6570\u636E\u8868\u7BA1\u7406",toc:"menu",filename:"docs/en-US/plugins/graph-collection-manager/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},v2=[{id:"\u53EF\u89C6\u5316\u6570\u636E\u8868\u7BA1\u7406",depth:1,title:"\u53EF\u89C6\u5316\u6570\u636E\u8868\u7BA1\u7406"}],m2=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],h2={},f2={title:"\u5E76\u884C\u5206\u652F",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/parallel.md",lastUpdated:173254844e4,description:"\u5E76\u884C\u5206\u652F\u8282\u70B9\u53EF\u4EE5\u5C06\u6D41\u7A0B\u5206\u4E3A\u591A\u4E2A\u5206\u652F\uFF0C\u6BCF\u4E2A\u5206\u652F\u53EF\u4EE5\u914D\u7F6E\u4E0D\u540C\u7684\u8282\u70B9\uFF0C\u6839\u636E\u5206\u652F\u7684\u6A21\u5F0F\u4E0D\u540C\uFF0C\u5206\u652F\u7684\u6267\u884C\u65B9\u5F0F\u4E5F\u4E0D\u540C\u3002\u5728\u9700\u8981\u5728\u540C\u65F6\u6267\u884C\u591A\u4E2A\u64CD\u4F5C\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5E76\u884C\u5206\u652F\u8282\u70B9\u3002"},x2=[{id:"\u5E76\u884C\u5206\u652F",depth:1,title:"\u5E76\u884C\u5206\u652F"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u5206\u652F\u6A21\u5F0F",depth:3,title:"\u5206\u652F\u6A21\u5F0F"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],g2=[{value:"\u5E76\u884C\u5206\u652F\u8282\u70B9\u53EF\u4EE5\u5C06\u6D41\u7A0B\u5206\u4E3A\u591A\u4E2A\u5206\u652F\uFF0C\u6BCF\u4E2A\u5206\u652F\u53EF\u4EE5\u914D\u7F6E\u4E0D\u540C\u7684\u8282\u70B9\uFF0C\u6839\u636E\u5206\u652F\u7684\u6A21\u5F0F\u4E0D\u540C\uFF0C\u5206\u652F\u7684\u6267\u884C\u65B9\u5F0F\u4E5F\u4E0D\u540C\u3002\u5728\u9700\u8981\u5728\u540C\u65F6\u6267\u884C\u591A\u4E2A\u64CD\u4F5C\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5E76\u884C\u5206\u652F\u8282\u70B9\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5E76\u884C\u5206\u652F\u201D\u8282\u70B9\uFF1A",paraId:1,tocIndex:1},{value:"\u5728\u6D41\u7A0B\u4E2D\u589E\u52A0\u5E76\u884C\u5206\u652F\u8282\u70B9\u540E\uFF0C\u4F1A\u9ED8\u8BA4\u589E\u52A0\u4E24\u4E2A\u5B50\u5206\u652F\uFF0C\u540C\u65F6\u4E5F\u53EF\u4EE5\u70B9\u51FB\u589E\u52A0\u5206\u652F\u7684\u6309\u94AE\u589E\u52A0\u4EFB\u610F\u591A\u4E2A\u5206\u652F\uFF0C\u6BCF\u4E2A\u5206\u652F\u90FD\u53EF\u4EE5\u589E\u52A0\u4EFB\u610F\u7684\u8282\u70B9\uFF0C\u4E0D\u9700\u8981\u7684\u5206\u652F\u53EF\u4EE5\u70B9\u51FB\u5206\u652F\u5F00\u59CB\u5904\u7684\u5220\u9664\u6309\u94AE\u5220\u9664\u3002",paraId:2,tocIndex:1},{value:"\u5E76\u884C\u5206\u652F\u8282\u70B9\u6709\u4EE5\u4E0B\u4E09\u79CD\u6A21\u5F0F\uFF1A",paraId:3,tocIndex:3},{value:"\u5168\u90E8\u6210\u529F",paraId:4,tocIndex:3},{value:"\uFF1A\u6240\u6709\u5206\u652F\u90FD\u6267\u884C\u6210\u529F\uFF0C\u6D41\u7A0B\u624D\u4F1A\u7EE7\u7EED\u6267\u884C\u5206\u652F\u7ED3\u675F\u540E\u7684\u8282\u70B9\u3002\u5426\u5219\u4EFB\u610F\u5206\u652F\u63D0\u524D\u7EC8\u6B62\uFF0C\u65E0\u8BBA\u662F\u5931\u8D25\u3001\u51FA\u9519\u8FD8\u662F\u5176\u4ED6\u975E\u6210\u529F\u72B6\u6001\uFF0C\u90FD\u5BFC\u81F4\u6574\u4E2A\u5E76\u884C\u5206\u652F\u8282\u70B9\u4EE5\u8BE5\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\uFF0C\u4E5F\u79F0\u4F5C\u201CAll \u6A21\u5F0F\u201D\u3002",paraId:4,tocIndex:3},{value:"\u4EFB\u610F\u6210\u529F",paraId:4,tocIndex:3},{value:"\uFF1A\u4EFB\u610F\u5206\u652F\u6267\u884C\u6210\u529F\uFF0C\u6D41\u7A0B\u5C31\u4F1A\u7EE7\u7EED\u6267\u884C\u5206\u652F\u7ED3\u675F\u540E\u7684\u8282\u70B9\u3002\u9664\u975E\u6240\u6709\u5206\u652F\u90FD\u63D0\u524D\u7EC8\u6B62\uFF0C\u65E0\u8BBA\u662F\u5931\u8D25\u3001\u51FA\u9519\u8FD8\u662F\u5176\u4ED6\u975E\u6210\u529F\u72B6\u6001\uFF0C\u624D\u4F1A\u5BFC\u81F4\u6574\u4E2A\u5E76\u884C\u5206\u652F\u8282\u70B9\u4EE5\u8BE5\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\uFF0C\u4E5F\u79F0\u4F5C\u201CAny \u6A21\u5F0F\u201D\u3002",paraId:4,tocIndex:3},{value:"\u4EFB\u610F\u6210\u529F\u548C\u5931\u8D25",paraId:4,tocIndex:3},{value:"\uFF1A\u4EFB\u610F\u5206\u652F\u6267\u884C\u6210\u529F\u540E\u6D41\u7A0B\u5C31\u4F1A\u7EE7\u7EED\u6267\u884C\u5206\u652F\u7ED3\u675F\u540E\u7684\u8282\u70B9\uFF0C\u4F46\u4EFB\u610F\u8282\u70B9\u5931\u8D25\u540E\uFF0C\u4F1A\u5BFC\u81F4\u6574\u4E2A\u5E76\u884C\u4EE5\u8BE5\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\uFF0C\u4E5F\u79F0\u4F5C\u201CRace \u6A21\u5F0F\u201D\u3002",paraId:4,tocIndex:3},{value:"\u4E0D\u8BBA\u54EA\u79CD\u6A21\u5F0F\uFF0C\u90FD\u4F1A\u4ECE\u5DE6\u5230\u53F3\u4F9D\u6B21\u5C1D\u8BD5\u6267\u884C\u6BCF\u4E2A\u5206\u652F\uFF0C\u76F4\u5230\u6EE1\u8DB3\u5206\u652F\u9884\u8BBE\u6A21\u5F0F\u7684\u76F8\u5173\u6761\u4EF6\u540E\uFF0C\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u8282\u70B9\u6216\u63D0\u524D\u9000\u51FA\u3002",paraId:5,tocIndex:3},{value:"\u53C2\u8003 ",paraId:6,tocIndex:4},{value:"\u5EF6\u65F6\u8282\u70B9",paraId:7,tocIndex:4},{value:" \u4E2D\u7684\u4F8B\u5B50\u3002",paraId:6,tocIndex:4}],b2={},y2={title:"\u6982\u8FF0",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/triggers/index.md",lastUpdated:173254844e4,description:"\u89E6\u53D1\u5668\u662F\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5165\u53E3\uFF0C\u5F53\u5E94\u7528\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u6EE1\u8DB3\u89E6\u53D1\u5668\u6761\u4EF6\u7684\u4E8B\u4EF6\u4EA7\u751F\u65F6\uFF0C\u5DE5\u4F5C\u6D41\u5C06\u4F1A\u88AB\u89E6\u53D1\u6267\u884C\u3002\u89E6\u53D1\u5668\u7684\u7C7B\u578B\u4E5F\u5C31\u662F\u5DE5\u4F5C\u6D41\u7684\u7C7B\u578B\uFF0C\u5728\u521B\u5EFA\u5DE5\u4F5C\u6D41\u65F6\u9009\u62E9\uFF0C\u521B\u5EFA\u540E\u4E0D\u53EF\u4FEE\u6539\u3002\u76EE\u524D\u5185\u7F6E\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u5982\u4E0B\uFF1A"},w2=[{id:"\u6982\u8FF0",depth:1,title:"\u6982\u8FF0"}],k2=[{value:"\u89E6\u53D1\u5668\u662F\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5165\u53E3\uFF0C\u5F53\u5E94\u7528\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u6EE1\u8DB3\u89E6\u53D1\u5668\u6761\u4EF6\u7684\u4E8B\u4EF6\u4EA7\u751F\u65F6\uFF0C\u5DE5\u4F5C\u6D41\u5C06\u4F1A\u88AB\u89E6\u53D1\u6267\u884C\u3002\u89E6\u53D1\u5668\u7684\u7C7B\u578B\u4E5F\u5C31\u662F\u5DE5\u4F5C\u6D41\u7684\u7C7B\u578B\uFF0C\u5728\u521B\u5EFA\u5DE5\u4F5C\u6D41\u65F6\u9009\u62E9\uFF0C\u521B\u5EFA\u540E\u4E0D\u53EF\u4FEE\u6539\u3002\u76EE\u524D\u5185\u7F6E\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u5982\u4E0B\uFF1A",paraId:0,tocIndex:0},{value:"\u8868\u5355\u4E8B\u4EF6",paraId:1,tocIndex:0},{value:"\u6570\u636E\u8868\u4E8B\u4EF6",paraId:1,tocIndex:0},{value:"\u5B9A\u65F6\u4EFB\u52A1",paraId:1,tocIndex:0},{value:"\u6BD4\u5982\u7528\u6237\u63D0\u4EA4\u4E00\u4E2A\u8868\u5355\uFF0C\u6216\u8005\u6570\u636E\u8868\u4E2D\u7684\u6570\u636E\u7531\u4E8E\u7528\u6237\u64CD\u4F5C\u6216\u7A0B\u5E8F\u8C03\u7528\u53D1\u751F\u53D8\u5316\uFF0C\u6216\u8005\u5B9A\u65F6\u4EFB\u52A1\u5230\u8FBE\u6267\u884C\u65F6\u95F4\uFF0C\u90FD\u4F1A\u89E6\u53D1\u5BF9\u5E94\u7684\u5DE5\u4F5C\u6D41\u6267\u884C\u3002",paraId:2,tocIndex:0},{value:"\u4E0E\u6570\u636E\u6709\u5173\u7684\u89E6\u53D1\u5668\uFF08\u5982\u8868\u5355\u3001\u6570\u636E\u8868\u4E8B\u4EF6\uFF09\u901A\u5E38\u4F1A\u643A\u5E26\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u8FD9\u4E9B\u6570\u636E\u53EF\u4EE5\u5728\u5DE5\u4F5C\u6D41\u7684\u8282\u70B9\u4E2D\u88AB\u5F15\u7528\uFF0C\u7528\u4EE5\u5B9E\u73B0\u6570\u636E\u7684\u81EA\u52A8\u5316\u5904\u7406\u3002\u4F8B\u5982\u5F53\u7528\u6237\u63D0\u4EA4\u4E00\u4E2A\u7ED1\u5B9A\u4E86\u5DE5\u4F5C\u6D41\u7684\u8868\u5355\u65F6\uFF0C\u8868\u5355\u63D0\u4EA4\u7684\u6570\u636E\u4F1A\u88AB\u6CE8\u5165\u5230\u6267\u884C\u8BA1\u5212\u7684\u4E0A\u4E0B\u6587\u73AF\u5883\u4E2D\uFF0C\u4EE5\u4F9B\u540E\u7EED\u8282\u70B9\u4F5C\u4E3A\u53D8\u91CF\u4F7F\u7528\u3002",paraId:3,tocIndex:0},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\u4EE5\u540E\uFF0C\u5728\u5DE5\u4F5C\u6D41\u67E5\u770B\u9875\u9762\u4E2D\uFF0C\u89E6\u53D1\u5668\u4F1A\u4EE5\u5165\u53E3\u8282\u70B9\u7684\u6837\u5F0F\u663E\u793A\u5728\u6D41\u7A0B\u7684\u5F00\u59CB\u4F4D\u7F6E\uFF0C\u70B9\u51FB\u8BE5\u5361\u7247\u5373\u53EF\u6253\u5F00\u914D\u7F6E\u5F39\u7A97\u3002\u6839\u636E\u89E6\u53D1\u5668\u7684\u7C7B\u578B\u4E0D\u540C\uFF0C\u53EF\u4EE5\u914D\u7F6E\u89E6\u53D1\u5668\u7684\u76F8\u5173\u6761\u4EF6\u3002",paraId:4,tocIndex:0},{value:` + `,paraId:5}],S2={"docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add-item":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,3063))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add-item",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(79937).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},"app.tsx":{type:"FILE",value:e(58387).Z},react:{type:"NPM",value:"18.1.0"}}}},"docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,67988))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(96469).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(56202).Z}}}},"docs-en-us-development-client-ui-schema-settings-demo-use-schema-settings-render":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,49934))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-settings-demo-use-schema-settings-render",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(62913).Z},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},antd:{type:"NPM",value:"5.16.1"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(95858).Z}}}},"docs-en-us-development-client-ui-schema-settings-demo-button":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,50885))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-settings-demo-button",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(54922).Z},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},antd:{type:"NPM",value:"5.16.1"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(78534).Z}}}},"docs-en-us-development-client-ui-schema-settings-demo-schema-settings-basic":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,3243))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-settings-demo-schema-settings-basic",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(87325).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(62932).Z}}}}},U2={title:"Schema settings",toc:"menu",filename:"docs/en-US/development/client/ui-schema/settings.md",lastUpdated:173254844e4,description:"After activating the UI configuration, when the mouse moves over a specific block, field, or action, the corresponding Schema toolbar will be displayed. The settings button in the toolbar is the settings component for the current Schema."},P2=[{id:"schema-settings",depth:1,title:"Schema settings"},{id:"built-in-settings",depth:2,title:"Built-in settings"},{id:"adding-settings-items-to-existing-settings",depth:2,title:"Adding settings items to existing settings"},{id:"adding-new-settings",depth:2,title:"Adding new settings"},{id:"adding-in-the-plugins-load-method",depth:3,title:"Adding in the plugin's load method"},{id:"how-to-use-the-newly-added-settings",depth:3,title:"How to use the newly added settings"},{id:"schema-components-that-currently-support-x-settings",depth:4,title:"Schema components that currently support x-settings"},{id:"how-to-support-x-settings-in-custom-components",depth:4,title:"How to support x-settings in custom components"},{id:"how-to-implement-schema-settings",depth:2,title:"How to implement Schema settings?"},{id:"api-reference",depth:2,title:"API Reference"}],T2=[{value:"After activating the UI configuration, when the mouse moves over a specific block, field, or action, the corresponding Schema toolbar will be displayed. The settings button in the toolbar is the settings component for the current Schema.",paraId:0,tocIndex:0},{value:"It is recommended to use the ",paraId:1,tocIndex:2},{value:"schemaSettingsManager.addItem()",paraId:1,tocIndex:2},{value:" method to add settings items. For detailed item configurations, refer to ",paraId:1,tocIndex:2},{value:"SchemaSettings Item API",paraId:2,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:`class PluginDemoAddSchemaSettingsItem extends Plugin { async load() { this.schemaSettingsManager.addItem( 'mySettings', // Example of existing schema settings @@ -6374,7 +6426,7 @@ docker-compose logs app 'x-decorator': 'CardItem', 'x-component': 'Hello', } -`,paraId:11,tocIndex:6},{value:"x-settings",paraId:9},{value:"If the wrapper components like BlockItem, FormItem, CardItem do not meet your needs, you can use ",paraId:12,tocIndex:7},{value:"useSchemaSettingsRender()",paraId:12,tocIndex:7},{value:" to handle the rendering of ",paraId:12,tocIndex:7},{value:"x-settings",paraId:12,tocIndex:7},{value:".",paraId:12,tocIndex:7},{value:"In most scenarios, settings are placed on the SchemaToolbar, so supporting ",paraId:13},{value:"x-toolbar",paraId:13},{value:" for custom components can also indirectly support ",paraId:13},{value:"x-settings",paraId:13},{value:". For more usage details, refer to ",paraId:13},{value:"Schema toolbar",paraId:14},{value:".",paraId:13},{value:"Use ",paraId:15,tocIndex:8},{value:"useSchemaSettings()",paraId:15,tocIndex:8},{value:" to get the current Schema's ",paraId:15,tocIndex:8},{value:"Designable",paraId:15,tocIndex:8},{value:", and operate the Schema through ",paraId:15,tocIndex:8},{value:"Designable",paraId:15,tocIndex:8},{value:". Common APIs include:",paraId:15,tocIndex:8},{value:"dn.insertAdjacent()",paraId:16,tocIndex:8},{value:"dn.getSchemaAttribute()",paraId:16,tocIndex:8},{value:"dn.shallowMerge()",paraId:16,tocIndex:8},{value:"dn.deepMerge()",paraId:16,tocIndex:8},{value:"dn.findOne()",paraId:16,tocIndex:8},{value:"dn.find()",paraId:16,tocIndex:8},{value:"dn.remove()",paraId:16,tocIndex:8},{value:"dn.remove()",paraId:16,tocIndex:8},{value:"For more details, refer to:",paraId:17,tocIndex:8},{value:"Designable Designer",paraId:18,tocIndex:8},{value:"Designable API",paraId:19,tocIndex:8},{value:"SchemaSettingsManager",paraId:20,tocIndex:9},{value:"SchemaSettings",paraId:20,tocIndex:9},{value:"Designable",paraId:20,tocIndex:9}],Cy={},Ay={title:"Filter operators",toc:"menu",filename:"docs/en-US/development/http-api/filter-operators.md",lastUpdated:1732240239e3},qy=[{id:"filter-operators",depth:1,title:"Filter operators"},{id:"\u901A\u7528",depth:2,title:"\u901A\u7528"},{id:"array",depth:2,title:"array"},{id:"association",depth:2,title:"association"},{id:"boolean",depth:2,title:"boolean"},{id:"date",depth:2,title:"date"},{id:"string",depth:2,title:"string"}],Ey=[{value:"$eq",paraId:0,tocIndex:1},{value:"$ne",paraId:0,tocIndex:1},{value:"$gte",paraId:0,tocIndex:1},{value:"$gt",paraId:0,tocIndex:1},{value:"$lte",paraId:0,tocIndex:1},{value:"$lt",paraId:0,tocIndex:1},{value:"$not",paraId:0,tocIndex:1},{value:"$is",paraId:0,tocIndex:1},{value:"$in",paraId:0,tocIndex:1},{value:"$notIn",paraId:0,tocIndex:1},{value:"$like",paraId:0,tocIndex:1},{value:"$notLike",paraId:0,tocIndex:1},{value:"$iLike",paraId:0,tocIndex:1},{value:"$notILike",paraId:0,tocIndex:1},{value:"$and",paraId:0,tocIndex:1},{value:"$or",paraId:0,tocIndex:1},{value:"$empty",paraId:0,tocIndex:1},{value:"$notEmpty",paraId:0,tocIndex:1},{value:"$match",paraId:1,tocIndex:2},{value:"$notMatch",paraId:1,tocIndex:2},{value:"$anyOf",paraId:1,tocIndex:2},{value:"$noneOf",paraId:1,tocIndex:2},{value:"$arrayEmpty",paraId:1,tocIndex:2},{value:"$arrayNotEmpty",paraId:1,tocIndex:2},{value:"$exists",paraId:2,tocIndex:3},{value:"$notExists",paraId:2,tocIndex:3},{value:"$isTruly",paraId:3,tocIndex:4},{value:"$isFalsy",paraId:3,tocIndex:4},{value:"$dateOn",paraId:4,tocIndex:5},{value:"$dateNotOn",paraId:4,tocIndex:5},{value:"$dateBefore",paraId:4,tocIndex:5},{value:"$dateNotBefore",paraId:4,tocIndex:5},{value:"$dateAfter",paraId:4,tocIndex:5},{value:"$dateNotAfter",paraId:4,tocIndex:5},{value:"$includes",paraId:5,tocIndex:6},{value:"$notIncludes",paraId:5,tocIndex:6},{value:"$startsWith",paraId:5,tocIndex:6},{value:"$notStartsWith",paraId:5,tocIndex:6},{value:"$endWith",paraId:5,tocIndex:6},{value:"$notEndWith",paraId:5,tocIndex:6}],Dy={},Oy={title:"Collections Fields",toc:"menu",filename:"docs/en-US/development/server/collections-fields.md",lastUpdated:1732240239e3,description:"Data modeling is the lowest level foundation of an application. In NocoBase applications we model data through data tables (Collection) and fields (Field), and the modeling is also mapped to database tables for persistence."},Ry=[{id:"collections-and-fields",depth:2,title:"Collections and Fields"},{id:"basic-concepts",depth:2,title:"Basic Concepts"},{id:"collection",depth:3,title:"Collection"},{id:"field",depth:3,title:"Field"},{id:"example",depth:2,title:"Example"},{id:"define-and-create-collections-in-the-plugin",depth:3,title:"Define and create collections in the plugin"},{id:"defining-associated-collections-and-fields",depth:3,title:"Defining associated collections and fields"},{id:"extend-an-existing-collection",depth:3,title:"Extend an existing collection"},{id:"extend-field-types",depth:3,title:"Extend field types"},{id:"summary",depth:2,title:"Summary"}],My=[{value:"Data modeling is the lowest level foundation of an application. In NocoBase applications we model data through data tables (Collection) and fields (Field), and the modeling is also mapped to database tables for persistence.",paraId:0,tocIndex:1},{value:"Collection is a collection of all similar data, which corresponds to the concept of database tables in NocoBase. Such as orders, products, users, comments, etc. can form a collection definition. Different collections are distinguished by name and contain fields defined by ",paraId:1,tocIndex:2},{value:"fields",paraId:1,tocIndex:2},{value:", such as",paraId:1,tocIndex:2},{value:`db.collection({ +`,paraId:11,tocIndex:6},{value:"x-settings",paraId:9},{value:"If the wrapper components like BlockItem, FormItem, CardItem do not meet your needs, you can use ",paraId:12,tocIndex:7},{value:"useSchemaSettingsRender()",paraId:12,tocIndex:7},{value:" to handle the rendering of ",paraId:12,tocIndex:7},{value:"x-settings",paraId:12,tocIndex:7},{value:".",paraId:12,tocIndex:7},{value:"In most scenarios, settings are placed on the SchemaToolbar, so supporting ",paraId:13},{value:"x-toolbar",paraId:13},{value:" for custom components can also indirectly support ",paraId:13},{value:"x-settings",paraId:13},{value:". For more usage details, refer to ",paraId:13},{value:"Schema toolbar",paraId:14},{value:".",paraId:13},{value:"Use ",paraId:15,tocIndex:8},{value:"useSchemaSettings()",paraId:15,tocIndex:8},{value:" to get the current Schema's ",paraId:15,tocIndex:8},{value:"Designable",paraId:15,tocIndex:8},{value:", and operate the Schema through ",paraId:15,tocIndex:8},{value:"Designable",paraId:15,tocIndex:8},{value:". Common APIs include:",paraId:15,tocIndex:8},{value:"dn.insertAdjacent()",paraId:16,tocIndex:8},{value:"dn.getSchemaAttribute()",paraId:16,tocIndex:8},{value:"dn.shallowMerge()",paraId:16,tocIndex:8},{value:"dn.deepMerge()",paraId:16,tocIndex:8},{value:"dn.findOne()",paraId:16,tocIndex:8},{value:"dn.find()",paraId:16,tocIndex:8},{value:"dn.remove()",paraId:16,tocIndex:8},{value:"dn.remove()",paraId:16,tocIndex:8},{value:"For more details, refer to:",paraId:17,tocIndex:8},{value:"Designable Designer",paraId:18,tocIndex:8},{value:"Designable API",paraId:19,tocIndex:8},{value:"SchemaSettingsManager",paraId:20,tocIndex:9},{value:"SchemaSettings",paraId:20,tocIndex:9},{value:"Designable",paraId:20,tocIndex:9}],C2={},A2={title:"Filter operators",toc:"menu",filename:"docs/en-US/development/http-api/filter-operators.md",lastUpdated:173254844e4},q2=[{id:"filter-operators",depth:1,title:"Filter operators"},{id:"\u901A\u7528",depth:2,title:"\u901A\u7528"},{id:"array",depth:2,title:"array"},{id:"association",depth:2,title:"association"},{id:"boolean",depth:2,title:"boolean"},{id:"date",depth:2,title:"date"},{id:"string",depth:2,title:"string"}],E2=[{value:"$eq",paraId:0,tocIndex:1},{value:"$ne",paraId:0,tocIndex:1},{value:"$gte",paraId:0,tocIndex:1},{value:"$gt",paraId:0,tocIndex:1},{value:"$lte",paraId:0,tocIndex:1},{value:"$lt",paraId:0,tocIndex:1},{value:"$not",paraId:0,tocIndex:1},{value:"$is",paraId:0,tocIndex:1},{value:"$in",paraId:0,tocIndex:1},{value:"$notIn",paraId:0,tocIndex:1},{value:"$like",paraId:0,tocIndex:1},{value:"$notLike",paraId:0,tocIndex:1},{value:"$iLike",paraId:0,tocIndex:1},{value:"$notILike",paraId:0,tocIndex:1},{value:"$and",paraId:0,tocIndex:1},{value:"$or",paraId:0,tocIndex:1},{value:"$empty",paraId:0,tocIndex:1},{value:"$notEmpty",paraId:0,tocIndex:1},{value:"$match",paraId:1,tocIndex:2},{value:"$notMatch",paraId:1,tocIndex:2},{value:"$anyOf",paraId:1,tocIndex:2},{value:"$noneOf",paraId:1,tocIndex:2},{value:"$arrayEmpty",paraId:1,tocIndex:2},{value:"$arrayNotEmpty",paraId:1,tocIndex:2},{value:"$exists",paraId:2,tocIndex:3},{value:"$notExists",paraId:2,tocIndex:3},{value:"$isTruly",paraId:3,tocIndex:4},{value:"$isFalsy",paraId:3,tocIndex:4},{value:"$dateOn",paraId:4,tocIndex:5},{value:"$dateNotOn",paraId:4,tocIndex:5},{value:"$dateBefore",paraId:4,tocIndex:5},{value:"$dateNotBefore",paraId:4,tocIndex:5},{value:"$dateAfter",paraId:4,tocIndex:5},{value:"$dateNotAfter",paraId:4,tocIndex:5},{value:"$includes",paraId:5,tocIndex:6},{value:"$notIncludes",paraId:5,tocIndex:6},{value:"$startsWith",paraId:5,tocIndex:6},{value:"$notStartsWith",paraId:5,tocIndex:6},{value:"$endWith",paraId:5,tocIndex:6},{value:"$notEndWith",paraId:5,tocIndex:6}],D2={},O2={title:"Collections Fields",toc:"menu",filename:"docs/en-US/development/server/collections-fields.md",lastUpdated:173254844e4,description:"Data modeling is the lowest level foundation of an application. In NocoBase applications we model data through data tables (Collection) and fields (Field), and the modeling is also mapped to database tables for persistence."},R2=[{id:"collections-and-fields",depth:2,title:"Collections and Fields"},{id:"basic-concepts",depth:2,title:"Basic Concepts"},{id:"collection",depth:3,title:"Collection"},{id:"field",depth:3,title:"Field"},{id:"example",depth:2,title:"Example"},{id:"define-and-create-collections-in-the-plugin",depth:3,title:"Define and create collections in the plugin"},{id:"defining-associated-collections-and-fields",depth:3,title:"Defining associated collections and fields"},{id:"extend-an-existing-collection",depth:3,title:"Extend an existing collection"},{id:"extend-field-types",depth:3,title:"Extend field types"},{id:"summary",depth:2,title:"Summary"}],M2=[{value:"Data modeling is the lowest level foundation of an application. In NocoBase applications we model data through data tables (Collection) and fields (Field), and the modeling is also mapped to database tables for persistence.",paraId:0,tocIndex:1},{value:"Collection is a collection of all similar data, which corresponds to the concept of database tables in NocoBase. Such as orders, products, users, comments, etc. can form a collection definition. Different collections are distinguished by name and contain fields defined by ",paraId:1,tocIndex:2},{value:"fields",paraId:1,tocIndex:2},{value:", such as",paraId:1,tocIndex:2},{value:`db.collection({ name: 'posts', fields: [ { name: 'title', type: 'string' } @@ -6561,7 +6613,7 @@ export default class ShopPlugin extends Plugin { // ... . other fields ] } -`,paraId:47,tocIndex:8},{value:"With the above example, we basically understand how to model data in a plugin, including.",paraId:48,tocIndex:9},{value:"Defining collections and common fields",paraId:49,tocIndex:9},{value:"Defining association collections and fields relationships",paraId:49,tocIndex:9},{value:"Extending fields of an existing collections",paraId:49,tocIndex:9},{value:"Extending new field types",paraId:49,tocIndex:9},{value:"We have put the code covered in this chapter into a complete sample package ",paraId:50,tocIndex:9},{value:"packages/samples/shop-modeling",paraId:50,tocIndex:9},{value:", which can be run directly locally to see the results.",paraId:50,tocIndex:9}],Ly={},Ny={title:"MariaDB Client Installation",toc:"menu",filename:"docs/en-US/handbook/backups/installation/mariadb.md",lastUpdated:1732240239e3,description:"Previously, you would pull a new image for each update. Now, you need to build a new image for each update."},zy=[{id:"mariadb-client-installation",depth:1,title:"MariaDB Client Installation"},{id:"docker-installation",depth:2,title:"Docker Installation"},{id:"enter-the-directory-where-the-nocobase-dockerfile-is-located-and-create-a-dockerfile-file",depth:3,title:"Enter the directory where the NocoBase Dockerfile is located and create a Dockerfile file"},{id:"modify-the-docker-composeyml-file-of-nocobase",depth:3,title:"Modify the docker-compose.yml file of NocoBase"},{id:"upgrade",depth:3,title:"Upgrade"},{id:"other-installation-methods",depth:2,title:"Other Installation Methods"}],Fy=[{value:`# Based on the next version +`,paraId:47,tocIndex:8},{value:"With the above example, we basically understand how to model data in a plugin, including.",paraId:48,tocIndex:9},{value:"Defining collections and common fields",paraId:49,tocIndex:9},{value:"Defining association collections and fields relationships",paraId:49,tocIndex:9},{value:"Extending fields of an existing collections",paraId:49,tocIndex:9},{value:"Extending new field types",paraId:49,tocIndex:9},{value:"We have put the code covered in this chapter into a complete sample package ",paraId:50,tocIndex:9},{value:"packages/samples/shop-modeling",paraId:50,tocIndex:9},{value:", which can be run directly locally to see the results.",paraId:50,tocIndex:9}],L2={},N2={title:"MariaDB Client Installation",toc:"menu",filename:"docs/en-US/handbook/backups/installation/mariadb.md",lastUpdated:173254844e4,description:"Previously, you would pull a new image for each update. Now, you need to build a new image for each update."},z2=[{id:"mariadb-client-installation",depth:1,title:"MariaDB Client Installation"},{id:"docker-installation",depth:2,title:"Docker Installation"},{id:"enter-the-directory-where-the-nocobase-dockerfile-is-located-and-create-a-dockerfile-file",depth:3,title:"Enter the directory where the NocoBase Dockerfile is located and create a Dockerfile file"},{id:"modify-the-docker-composeyml-file-of-nocobase",depth:3,title:"Modify the docker-compose.yml file of NocoBase"},{id:"upgrade",depth:3,title:"Upgrade"},{id:"other-installation-methods",depth:2,title:"Other Installation Methods"}],F2=[{value:`# Based on the next version FROM registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:next # run installation script, choose the latest version of mysql @@ -6631,7 +6683,7 @@ services: docker-compose up -d app # Check app logs docker-compose logs app -`,paraId:3,tocIndex:4},{value:"If your NocoBase was installed with ",paraId:4,tocIndex:5},{value:"create-nocobase-app",paraId:5,tocIndex:5},{value:" or ",paraId:4,tocIndex:5},{value:"Git source code",paraId:6,tocIndex:5},{value:", please check the below MySQL official release page, and follow the official installation guide.",paraId:4,tocIndex:5},{value:"Last versions: ",paraId:7,tocIndex:5},{value:"https://dev.mysql.com/downloads/mysql/",paraId:7,tocIndex:5}],By={},jy={title:"Calendar collection",toc:"menu",filename:"docs/en-US/handbook/calendar/calendar-collection.md",lastUpdated:1732240239e3,description:"A calendar Collection is a specialized data table designed to store dates and date-related information. It is commonly used to manage and track time within applications or systems. The primary goal of the calendar table is to offer flexible and efficient access to date information, allowing for the swift retrieval of relevant data as needed."},Hy=[{id:"calendar-collection",depth:1,title:"Calendar collection"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"}],Wy=[{value:"A calendar Collection is a specialized data table designed to store dates and date-related information. It is commonly used to manage and track time within applications or systems. The primary goal of the calendar table is to offer flexible and efficient access to date information, allowing for the swift retrieval of relevant data as needed.",paraId:0,tocIndex:1}],$y={},Gy={title:"Extend Chart Types",toc:"menu",filename:"docs/en-US/handbook/data-visualization/dev/index.md",lastUpdated:1732240239e3,description:"NocoBase uses Ant Design Charts as the default chart library, which includes commonly used chart types. Besides the built-in chart types, NocoBase also supports integrating other chart types or libraries, such as ECharts. This section primarily explains how to extend a new chart type."},Vy=[{id:"extend-chart-types",depth:1,title:"Extend Chart Types"},{id:"overview",depth:2,title:"Overview"},{id:"defining-a-chart",depth:2,title:"Defining a Chart"},{id:"chart-information",depth:3,title:"Chart Information"},{id:"initializing-chart-configuration",depth:3,title:"Initializing Chart Configuration"},{id:"retrieving-chart-component-properties",depth:3,title:"Retrieving Chart Component Properties"},{id:"retrieving-chart-component-references",depth:3,title:"Retrieving Chart Component References"},{id:"adding-a-chart",depth:2,title:"Adding a Chart"},{id:"examples",depth:2,title:"Examples"},{id:"api",depth:2,title:"API"},{id:"chartgroup",depth:3,title:"ChartGroup"},{id:"addgroup",depth:4,title:"addGroup()"},{id:"add",depth:4,title:"add()"},{id:"chart",depth:3,title:"Chart"},{id:"constructor",depth:4,title:"constructor()"},{id:"config",depth:5,title:"Config"},{id:"addconfigtypes",depth:4,title:"addConfigTypes()"},{id:"init",depth:4,title:"init()"},{id:"infer",depth:4,title:"infer()"},{id:"getprops",depth:4,title:"getProps()"},{id:"fieldprops",depth:5,title:"FieldProps"},{id:"getreference",depth:4,title:"getReference()"},{id:"charttype",depth:3,title:"ChartType"},{id:"name",depth:4,title:"name"},{id:"title",depth:4,title:"title"},{id:"component",depth:4,title:"Component"},{id:"schema",depth:4,title:"schema"},{id:"init-1",depth:4,title:"init()"},{id:"getprops-1",depth:4,title:"getProps()"},{id:"getreference-1",depth:4,title:"getReference()"}],Ky=[{value:"NocoBase uses ",paraId:0,tocIndex:1},{value:"Ant Design Charts",paraId:0,tocIndex:1},{value:" as the default chart library, which includes commonly used chart types. Besides the built-in chart types, NocoBase also supports integrating other chart types or libraries, such as ECharts. This section primarily explains how to extend a new chart type.",paraId:0,tocIndex:1},{value:"In the visualization plugin, each chart type is defined using a class that must implement the ",paraId:1,tocIndex:2},{value:"ChartType",paraId:2,tocIndex:2},{value:" interface. To simplify development, we provide a ",paraId:1,tocIndex:2},{value:"Chart",paraId:3,tocIndex:2},{value:" base class, which partially implements the ",paraId:1,tocIndex:2},{value:"ChartType",paraId:1,tocIndex:2},{value:" interface. In most cases, to extend a chart type, you only need to inherit from the ",paraId:1,tocIndex:2},{value:"Chart",paraId:1,tocIndex:2},{value:" class and implement the required methods.",paraId:1,tocIndex:2},{value:`class CustomChart extends Chart { +`,paraId:3,tocIndex:4},{value:"If your NocoBase was installed with ",paraId:4,tocIndex:5},{value:"create-nocobase-app",paraId:5,tocIndex:5},{value:" or ",paraId:4,tocIndex:5},{value:"Git source code",paraId:6,tocIndex:5},{value:", please check the below MySQL official release page, and follow the official installation guide.",paraId:4,tocIndex:5},{value:"Last versions: ",paraId:7,tocIndex:5},{value:"https://dev.mysql.com/downloads/mysql/",paraId:7,tocIndex:5}],B2={},j2={title:"Calendar collection",toc:"menu",filename:"docs/en-US/handbook/calendar/calendar-collection.md",lastUpdated:173254844e4,description:"A calendar Collection is a specialized data table designed to store dates and date-related information. It is commonly used to manage and track time within applications or systems. The primary goal of the calendar table is to offer flexible and efficient access to date information, allowing for the swift retrieval of relevant data as needed."},H2=[{id:"calendar-collection",depth:1,title:"Calendar collection"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"}],W2=[{value:"A calendar Collection is a specialized data table designed to store dates and date-related information. It is commonly used to manage and track time within applications or systems. The primary goal of the calendar table is to offer flexible and efficient access to date information, allowing for the swift retrieval of relevant data as needed.",paraId:0,tocIndex:1}],$2={},G2={title:"Extend Chart Types",toc:"menu",filename:"docs/en-US/handbook/data-visualization/dev/index.md",lastUpdated:173254844e4,description:"NocoBase uses Ant Design Charts as the default chart library, which includes commonly used chart types. Besides the built-in chart types, NocoBase also supports integrating other chart types or libraries, such as ECharts. This section primarily explains how to extend a new chart type."},V2=[{id:"extend-chart-types",depth:1,title:"Extend Chart Types"},{id:"overview",depth:2,title:"Overview"},{id:"defining-a-chart",depth:2,title:"Defining a Chart"},{id:"chart-information",depth:3,title:"Chart Information"},{id:"initializing-chart-configuration",depth:3,title:"Initializing Chart Configuration"},{id:"retrieving-chart-component-properties",depth:3,title:"Retrieving Chart Component Properties"},{id:"retrieving-chart-component-references",depth:3,title:"Retrieving Chart Component References"},{id:"adding-a-chart",depth:2,title:"Adding a Chart"},{id:"examples",depth:2,title:"Examples"},{id:"api",depth:2,title:"API"},{id:"chartgroup",depth:3,title:"ChartGroup"},{id:"addgroup",depth:4,title:"addGroup()"},{id:"add",depth:4,title:"add()"},{id:"chart",depth:3,title:"Chart"},{id:"constructor",depth:4,title:"constructor()"},{id:"config",depth:5,title:"Config"},{id:"addconfigtypes",depth:4,title:"addConfigTypes()"},{id:"init",depth:4,title:"init()"},{id:"infer",depth:4,title:"infer()"},{id:"getprops",depth:4,title:"getProps()"},{id:"fieldprops",depth:5,title:"FieldProps"},{id:"getreference",depth:4,title:"getReference()"},{id:"charttype",depth:3,title:"ChartType"},{id:"name",depth:4,title:"name"},{id:"title",depth:4,title:"title"},{id:"component",depth:4,title:"Component"},{id:"schema",depth:4,title:"schema"},{id:"init-1",depth:4,title:"init()"},{id:"getprops-1",depth:4,title:"getProps()"},{id:"getreference-1",depth:4,title:"getReference()"}],K2=[{value:"NocoBase uses ",paraId:0,tocIndex:1},{value:"Ant Design Charts",paraId:0,tocIndex:1},{value:" as the default chart library, which includes commonly used chart types. Besides the built-in chart types, NocoBase also supports integrating other chart types or libraries, such as ECharts. This section primarily explains how to extend a new chart type.",paraId:0,tocIndex:1},{value:"In the visualization plugin, each chart type is defined using a class that must implement the ",paraId:1,tocIndex:2},{value:"ChartType",paraId:2,tocIndex:2},{value:" interface. To simplify development, we provide a ",paraId:1,tocIndex:2},{value:"Chart",paraId:3,tocIndex:2},{value:" base class, which partially implements the ",paraId:1,tocIndex:2},{value:"ChartType",paraId:1,tocIndex:2},{value:" interface. In most cases, to extend a chart type, you only need to inherit from the ",paraId:1,tocIndex:2},{value:"Chart",paraId:1,tocIndex:2},{value:" class and implement the required methods.",paraId:1,tocIndex:2},{value:`class CustomChart extends Chart { constructor({ name, title, Component, config }: ChartProps) { // ... } @@ -6930,13 +6982,13 @@ init(fields, { measures, dimensions }) { title: string; link: string; }; -`,paraId:105,tocIndex:29}],Zy={},Yy={title:"File Collecton",toc:"menu",filename:"docs/en-US/handbook/file-manager/file-collection.md",lastUpdated:1732240239e3,description:"Files are collection records with a specific structure, the collection is known as file collection, which store the metadata of files and can be managed through the File Manager."},Qy=[{id:"file-collecton",depth:1,title:"File Collecton"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"}],Jy=[{value:"Files are collection records with a specific structure, the collection is known as file collection, which store the metadata of files and can be managed through the File Manager.",paraId:0,tocIndex:1},{value:"Creating File Collection",paraId:1,tocIndex:2},{value:"Preset Fields in File Collection",paraId:2,tocIndex:2},{value:"Using in Blocks",paraId:3,tocIndex:2},{value:"Association Field",paraId:4,tocIndex:2},{value:"Association Blocks",paraId:5,tocIndex:2}],Xy={},ew={title:"Save Record",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/save-record.md",lastUpdated:1732240239e3,description:"The save data operation enables assigning values to fields through field assignment, which takes precedence over any values entered in the form. This operation can be paired with workflows to automate data processes seamlessly."},aw=[{id:"save-record",depth:1,title:"Save Record"},{id:"introduction",depth:3,title:"Introduction"},{id:"operation-configuration-items",depth:3,title:"Operation Configuration Items"},{id:"assign-field-values",depth:4,title:"Assign Field Values"}],tw=[{value:"The save data operation enables assigning values to fields through field assignment, which takes precedence over any values entered in the form. This operation can be paired with workflows to automate data processes seamlessly.",paraId:0,tocIndex:1},{value:"When field assignment is configured, the assigned value will override any input provided in the form for the same field, ensuring consistency and priority for the predefined value.",paraId:1,tocIndex:3},{value:"For more details, refer to ",paraId:2,tocIndex:3},{value:"Assign Field Values",paraId:3,tocIndex:3},{value:"Edit Button",paraId:4,tocIndex:3},{value:"Secondary Confirmation",paraId:5,tocIndex:3},{value:"After Successful Submission",paraId:6,tocIndex:3},{value:"Bind Workflow",paraId:7,tocIndex:3},{value:"Skip Required Validation",paraId:8,tocIndex:3},{value:"Refresh After Execution",paraId:8,tocIndex:3}],nw={},ow={title:"Form Filter Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/filter-blocks/form.md",lastUpdated:1732240239e3,description:"The Form filter block can be connected with the data block. Once connected, it can provide filtering capabilities."},rw=[{id:"form-filter-block",depth:1,title:"Form Filter Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-block",depth:2,title:"Adding Block"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"connect-to-data-block",depth:3,title:"Connect to Data Block"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"fields-in-this-collection",depth:3,title:"Fields in This Collection"},{id:"fields-in-related-collections",depth:3,title:"Fields in Related Collections"},{id:"setting-default-values-for-fields",depth:3,title:"Setting Default Values for Fields"},{id:"configuration-operations",depth:2,title:"Configuration Operations"},{id:"reset-button",depth:3,title:"Reset button"}],dw=[{value:"The Form filter block can be connected with the data block. Once connected, it can provide filtering capabilities.",paraId:0,tocIndex:1},{value:` +`,paraId:105,tocIndex:29}],Z2={},Y2={title:"File Collecton",toc:"menu",filename:"docs/en-US/handbook/file-manager/file-collection.md",lastUpdated:173254844e4,description:"Files are collection records with a specific structure, the collection is known as file collection, which store the metadata of files and can be managed through the File Manager."},Q2=[{id:"file-collecton",depth:1,title:"File Collecton"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"}],J2=[{value:"Files are collection records with a specific structure, the collection is known as file collection, which store the metadata of files and can be managed through the File Manager.",paraId:0,tocIndex:1},{value:"Creating File Collection",paraId:1,tocIndex:2},{value:"Preset Fields in File Collection",paraId:2,tocIndex:2},{value:"Using in Blocks",paraId:3,tocIndex:2},{value:"Association Field",paraId:4,tocIndex:2},{value:"Association Blocks",paraId:5,tocIndex:2}],X2={},ew={title:"Save Record",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/save-record.md",lastUpdated:173254844e4,description:"The save data operation enables assigning values to fields through field assignment, which takes precedence over any values entered in the form. This operation can be paired with workflows to automate data processes seamlessly."},aw=[{id:"save-record",depth:1,title:"Save Record"},{id:"introduction",depth:3,title:"Introduction"},{id:"operation-configuration-items",depth:3,title:"Operation Configuration Items"},{id:"assign-field-values",depth:4,title:"Assign Field Values"}],tw=[{value:"The save data operation enables assigning values to fields through field assignment, which takes precedence over any values entered in the form. This operation can be paired with workflows to automate data processes seamlessly.",paraId:0,tocIndex:1},{value:"When field assignment is configured, the assigned value will override any input provided in the form for the same field, ensuring consistency and priority for the predefined value.",paraId:1,tocIndex:3},{value:"For more details, refer to ",paraId:2,tocIndex:3},{value:"Assign Field Values",paraId:3,tocIndex:3},{value:"Edit Button",paraId:4,tocIndex:3},{value:"Secondary Confirmation",paraId:5,tocIndex:3},{value:"After Successful Submission",paraId:6,tocIndex:3},{value:"Bind Workflow",paraId:7,tocIndex:3},{value:"Skip Required Validation",paraId:8,tocIndex:3},{value:"Refresh After Execution",paraId:8,tocIndex:3}],nw={},ow={title:"Form Filter Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/filter-blocks/form.md",lastUpdated:173254844e4,description:"The Form filter block can be connected with the data block. Once connected, it can provide filtering capabilities."},rw=[{id:"form-filter-block",depth:1,title:"Form Filter Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-block",depth:2,title:"Adding Block"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"connect-to-data-block",depth:3,title:"Connect to Data Block"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"fields-in-this-collection",depth:3,title:"Fields in This Collection"},{id:"fields-in-related-collections",depth:3,title:"Fields in Related Collections"},{id:"setting-default-values-for-fields",depth:3,title:"Setting Default Values for Fields"},{id:"configuration-operations",depth:2,title:"Configuration Operations"},{id:"reset-button",depth:3,title:"Reset button"}],dw=[{value:"The Form filter block can be connected with the data block. Once connected, it can provide filtering capabilities.",paraId:0,tocIndex:1},{value:` `,paraId:1},{value:` `,paraId:1},{value:` `,paraId:1},{value:"Example: The Form filter block connects to the details data block to implement linkage.",paraId:2,tocIndex:4},{value:` `,paraId:1},{value:` `,paraId:1},{value:` - `,paraId:1},{value:"For more content, refer to ",paraId:3,tocIndex:4},{value:"Connect to Data Block",paraId:4,tocIndex:4},{value:"Edit Block Title",paraId:5,tocIndex:4},{value:"Linkage Rules",paraId:6,tocIndex:4},{value:"Save as Block Template",paraId:7,tocIndex:4},{value:'In version v1.3.14-beta and above, it supports configuring "many-to-many" and "one-to-many" relationship fields.',paraId:8,tocIndex:7},{value:"Supports using the fields of the related collections as filtering conditions",paraId:9,tocIndex:7},{value:'Example: The order collection has a many-to-one relationship field "Customer", filter the orders by customer name and phone number as filtering conditions',paraId:10,tocIndex:7},{value:"Like a normal ",paraId:11,tocIndex:8},{value:"Form Block",paraId:12,tocIndex:8},{value:", you can set default values for normal fields and relationship fields. ",paraId:11,tocIndex:8},{value:"When a field has a default value, a filtering operation will be automatically triggered at the first rendering of the page, so that the data block connected with it can display the matching data.",paraId:11,tocIndex:8},{value:'By default, clicking the "Reset" button will preserve the default values of the fields. If you want to clear the default values of the fields, you can open the configuration options and enable the "Clear Default Values" option.',paraId:13,tocIndex:10}],iw={},lw={title:"Sub table",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/sub-table.md",lastUpdated:1732240239e3,description:"Sub table are ideal for managing many-to-many relationship fields. They support bulk creation of target table data with associations, or selecting from existing data for association."},cw=[{id:"sub-table",depth:1,title:"Sub table"},{id:"introduction",depth:2,title:"Introduction"},{id:"instructions-for-use",depth:2,title:"Instructions for Use"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"allow-selecting-existing-data-disabled-by-default",depth:3,title:"Allow Selecting Existing Data (disabled by default)"},{id:"field-component",depth:3,title:"Field Component"},{id:"linkage-rules",depth:3,title:"Linkage Rules"},{id:"allow-disassociation",depth:3,title:"Allow disassociation"}],sw=[{value:"Sub table are ideal for managing many-to-many relationship fields. They support bulk creation of target table data with associations, or selecting from existing data for association.",paraId:0,tocIndex:1},{value:"Different field types in the sub table display distinct field components. Larger fields (such as rich text, JSON, and multi-line text) are edited via a floating pop-up window.",paraId:1,tocIndex:2},{value:"Relationship fields in the sub table:",paraId:2,tocIndex:2},{value:"Order (one-to-many) > Product (one-to-many) > Inventory.",paraId:3,tocIndex:2},{value:"By default, relationship field components are dropdown selectors (supporting data selectors or subforms via pop-up windows).",paraId:4,tocIndex:2},{value:"Supports drag-and-drop sorting.",paraId:5,tocIndex:2},{value:"Supports associating data from existing records.",paraId:6,tocIndex:4},{value:"Field Component",paraId:7,tocIndex:5},{value:": Switch to other relationship field components, such as dropdown select, data selector, etc.",paraId:8,tocIndex:5},{value:"The version of NocoBase needs to be v1.3.17-beta or above.",paraId:9},{value:"For more information, refer to ",paraId:10},{value:"Linkage Rules",paraId:11},{value:"The version of NocoBase needs to be v1.3.34-beta or above.",paraId:12}],uw={},pw={title:"Execution Plan (History)",toc:"menu",filename:"docs/en-US/handbook/workflow/advanced/executions.md",lastUpdated:1732240239e3,description:"After each workflow is triggered, a corresponding execution plan will be created to track the process of this task. Each execution plan has a status value to indicate the current execution status, which can be viewed in the list and details of the execution history:"},Iw=[{id:"execution-plan-history",depth:1,title:"Execution Plan (History)"},{id:"node-execution-status",depth:2,title:"Node Execution Status"}],_w=[{value:"After each workflow is triggered, a corresponding execution plan will be created to track the process of this task. Each execution plan has a status value to indicate the current execution status, which can be viewed in the list and details of the execution history:",paraId:0,tocIndex:0},{value:'When all nodes in the main branch of the process are executed to the end of the process with a "Resolved" status, the entire execution plan will end with a "Resolved" status. When nodes in the main branch of the process appear in final status such as "failed", "error", "canceled" or "rejected", etc., the entire execution plan will be terminated early with the corresponding status. When nodes in the main branch of the process are in a "pending" status, the entire execution plan will be paused, but still display an "On going" status, until the waiting node is resumed and continues execution. Different node types have different ways of handling the "pending" status. For example, "Manual" nodes need to wait for manual processing, while "Delay" nodes need to wait until the time arrives to continue execution.',paraId:1,tocIndex:0},{value:"The status of the execution plan is as follows:",paraId:2,tocIndex:0},{value:"Status",paraId:3,tocIndex:0},{value:"Corresponds to the State of ",paraId:3,tocIndex:0},{value:" Last Executed Node of the Main Process",paraId:3,tocIndex:0},{value:"Explanation",paraId:3,tocIndex:0},{value:"Queueing",paraId:3,tocIndex:0},{value:"-",paraId:3,tocIndex:0},{value:"The process has been triggered and an execution plan has been generated, waiting in the queue for scheduling by the scheduler.",paraId:3,tocIndex:0},{value:"On going",paraId:3,tocIndex:0},{value:"Pending",paraId:3,tocIndex:0},{value:"The node requests a pause, waiting for further input or callback to continue.",paraId:3,tocIndex:0},{value:"Resolved",paraId:3,tocIndex:0},{value:"Resolved",paraId:3,tocIndex:0},{value:"No problems encountered, all nodes executed as expected one by one and completed.",paraId:3,tocIndex:0},{value:"Failed",paraId:3,tocIndex:0},{value:"Failed",paraId:3,tocIndex:0},{value:"Failed due to unmet the logic of node configurations.",paraId:3,tocIndex:0},{value:"Error",paraId:3,tocIndex:0},{value:"Error",paraId:3,tocIndex:0},{value:"The node encountered an uncaught program error and terminated early.",paraId:3,tocIndex:0},{value:"Canceled",paraId:3,tocIndex:0},{value:"Canceled",paraId:3,tocIndex:0},{value:"The waiting node was externally canceled from execution by the administrator, and terminated early.",paraId:3,tocIndex:0},{value:"Rejected",paraId:3,tocIndex:0},{value:"Rejected",paraId:3,tocIndex:0},{value:"In nodes requiring manual processing, it was rejected by user and no longer continued with subsequent processes.",paraId:3,tocIndex:0},{value:"In the examples of ",paraId:4,tocIndex:0},{value:"Quick S tart",paraId:5,tocIndex:0},{value:', we already know that checking the details of the execution history of a workflow can check whether all nodes in the execution are executed normally, and the status and result data of each executed node. In some advanced workflows and nodes, the executed results of the nodes may be multiple, such as the results of "Loop" nodes:',paraId:4,tocIndex:0},{value:'Workflow can be triggered concurrently, but executed one by one in queue, even if multiple workflows are triggered simultaneously, they will be executed sequentially, not in parallelly. So when the status shows "Queueing" it means that one of the workflows is executing and need to wait.',paraId:6},{value:'The "On going" status only indicates that the execution plan has started and is usually paused due to the pending status of some node, and does not mean that the execution plan preemptively occupies the execution resources at the head of the queue. Therefore, when there are "On going" execution plans, other "Queueing" execution plans can still be scheduled and executed.',paraId:7},{value:`The status of the execution plan is determined by each node. In an execution plan after a trigger, each executed node will produce a node status, and the status will determine whether the subsequent process continues to process. Usually, after a node is executed successfully, the next node will continue to execute until all nodes are executed in sequence, or interrupted. When encountering process control nodes, such as "Branch", "Loop", "Parallel" and "Delay", etc., the next node's execution flow will be determined according to the control node's configured conditions and the runtime context data.`,paraId:8,tocIndex:1},{value:"The possible status that may be produced after each node is executed are following:",paraId:9,tocIndex:1},{value:"Status",paraId:10,tocIndex:1},{value:"Is a Final status?",paraId:10,tocIndex:1},{value:"Will it Terminates Early?",paraId:10,tocIndex:1},{value:"Explanation",paraId:10,tocIndex:1},{value:"Pending",paraId:10,tocIndex:1},{value:"No",paraId:10,tocIndex:1},{value:"No",paraId:10,tocIndex:1},{value:"The node requests a pause, waiting for further input or callback to continue.",paraId:10,tocIndex:1},{value:"Resolved",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"No",paraId:10,tocIndex:1},{value:"No problems encountered, executed successfully, and continue to execute the next node until the end.",paraId:10,tocIndex:1},{value:"Failed",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"Failed due to unmet node configurations.",paraId:10,tocIndex:1},{value:"Error",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"The node encountered an uncaught program error and terminated early.",paraId:10,tocIndex:1},{value:"Canceled",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"The pending node was canceled externally by the administrator, and terminated early.",paraId:10,tocIndex:1},{value:"Rejected",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"In nodes requiring manual processing, it was rejected by user and no longer continued with subsequent processes.",paraId:10,tocIndex:1},{value:'Except for the "Pending" status, all other status are final status of node execution. Only when the final status is "Resolved" the process will continue to execute, otherwise the execution of the entire process will be terminated early. When a node is in a branch process ("Parallel branchs", "Condition", "Loop", etc.), the final status generated by the node will be taken over and processed by the node that opens the branch, and so on, determining the entire process flow.',paraId:11,tocIndex:1},{value:`For example, when we use a "Condition" node with the "continue when 'Yes'" mode, if the result is "false" during execution, the entire process execution will be terminated early and exited with a failed status, as shown in the figure below:`,paraId:12,tocIndex:1},{value:'All final status other than "Resolved" can be regarded as failures, but the reasons for failure will be different, by checking the results of the nodes to know more about the failure.',paraId:13}],vw={},mw={title:"Extend Trigger Types",toc:"menu",filename:"docs/en-US/handbook/workflow/development/trigger.md",lastUpdated:1732240239e3,description:"Every workflow must be configured with a specific trigger that serves as the entry point for executing the process."},hw=[{id:"extend-trigger-types",depth:1,title:"Extend Trigger Types"},{id:"server-side-implementation",depth:2,title:"Server-Side Implementation"},{id:"client-side-configuration",depth:2,title:"Client-Side Configuration"}],fw=[{value:"Extend Trigger Types",paraId:0},{value:"Every workflow must be configured with a specific trigger that serves as the entry point for executing the process.",paraId:1,tocIndex:0},{value:"Trigger types typically correspond to specific system events. Throughout an application's lifecycle, any event that offers a subscription option can be defined as a trigger type. Examples include receiving requests, data table operations, or scheduled tasks.",paraId:2,tocIndex:0},{value:"Trigger types are registered in the plugin's trigger registry using unique string identifiers. The workflow plugin comes with several built-in triggers:",paraId:3,tocIndex:0},{value:"'collection'",paraId:4,tocIndex:0},{value:": Triggered by data table operations.",paraId:4,tocIndex:0},{value:"'schedule'",paraId:4,tocIndex:0},{value:": Triggered by scheduled tasks.",paraId:4,tocIndex:0},{value:"'action'",paraId:4,tocIndex:0},{value:": Triggered by post-operation events.",paraId:4,tocIndex:0},{value:"When extending trigger types, it's essential to ensure that each identifier is unique. The server side should handle the registration for subscribing and unsubscribing to triggers, while the client side should provide the corresponding configuration interface.",paraId:5,tocIndex:0},{value:"Server-Side Implementation",paraId:0},{value:"Any custom trigger should extend the ",paraId:6,tocIndex:1},{value:"Trigger",paraId:6,tocIndex:1},{value:" base class and implement the ",paraId:6,tocIndex:1},{value:"on",paraId:6,tocIndex:1},{value:" and ",paraId:6,tocIndex:1},{value:"off",paraId:6,tocIndex:1},{value:" methods, which manage the subscription and unsubscription to specific system events. The ",paraId:6,tocIndex:1},{value:"on",paraId:6,tocIndex:1},{value:" method must invoke ",paraId:6,tocIndex:1},{value:"this.workflow.trigger()",paraId:6,tocIndex:1},{value:" within the event callback to trigger the workflow. The ",paraId:6,tocIndex:1},{value:"off",paraId:6,tocIndex:1},{value:" method should ensure proper cleanup during unsubscription.",paraId:6,tocIndex:1},{value:"The ",paraId:7,tocIndex:1},{value:"this.workflow",paraId:7,tocIndex:1},{value:" property refers to the workflow plugin instance, passed into the ",paraId:7,tocIndex:1},{value:"Trigger",paraId:7,tocIndex:1},{value:" base class during construction.",paraId:7,tocIndex:1},{value:`import { Trigger } from '@nocobase/plugin-workflow'; + `,paraId:1},{value:"For more content, refer to ",paraId:3,tocIndex:4},{value:"Connect to Data Block",paraId:4,tocIndex:4},{value:"Edit Block Title",paraId:5,tocIndex:4},{value:"Linkage Rules",paraId:6,tocIndex:4},{value:"Save as Block Template",paraId:7,tocIndex:4},{value:'In version v1.3.14-beta and above, it supports configuring "many-to-many" and "one-to-many" relationship fields.',paraId:8,tocIndex:7},{value:"Supports using the fields of the related collections as filtering conditions",paraId:9,tocIndex:7},{value:'Example: The order collection has a many-to-one relationship field "Customer", filter the orders by customer name and phone number as filtering conditions',paraId:10,tocIndex:7},{value:"Like a normal ",paraId:11,tocIndex:8},{value:"Form Block",paraId:12,tocIndex:8},{value:", you can set default values for normal fields and relationship fields. ",paraId:11,tocIndex:8},{value:"When a field has a default value, a filtering operation will be automatically triggered at the first rendering of the page, so that the data block connected with it can display the matching data.",paraId:11,tocIndex:8},{value:'By default, clicking the "Reset" button will preserve the default values of the fields. If you want to clear the default values of the fields, you can open the configuration options and enable the "Clear Default Values" option.',paraId:13,tocIndex:10}],iw={},lw={title:"Sub table",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/sub-table.md",lastUpdated:173254844e4,description:"Sub table are ideal for managing many-to-many relationship fields. They support bulk creation of target table data with associations, or selecting from existing data for association."},cw=[{id:"sub-table",depth:1,title:"Sub table"},{id:"introduction",depth:2,title:"Introduction"},{id:"instructions-for-use",depth:2,title:"Instructions for Use"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"allow-selecting-existing-data-disabled-by-default",depth:3,title:"Allow Selecting Existing Data (disabled by default)"},{id:"field-component",depth:3,title:"Field Component"},{id:"linkage-rules",depth:3,title:"Linkage Rules"},{id:"allow-disassociation",depth:3,title:"Allow disassociation"}],sw=[{value:"Sub table are ideal for managing many-to-many relationship fields. They support bulk creation of target table data with associations, or selecting from existing data for association.",paraId:0,tocIndex:1},{value:"Different field types in the sub table display distinct field components. Larger fields (such as rich text, JSON, and multi-line text) are edited via a floating pop-up window.",paraId:1,tocIndex:2},{value:"Relationship fields in the sub table:",paraId:2,tocIndex:2},{value:"Order (one-to-many) > Product (one-to-many) > Inventory.",paraId:3,tocIndex:2},{value:"By default, relationship field components are dropdown selectors (supporting data selectors or subforms via pop-up windows).",paraId:4,tocIndex:2},{value:"Supports drag-and-drop sorting.",paraId:5,tocIndex:2},{value:"Supports associating data from existing records.",paraId:6,tocIndex:4},{value:"Field Component",paraId:7,tocIndex:5},{value:": Switch to other relationship field components, such as dropdown select, data selector, etc.",paraId:8,tocIndex:5},{value:"The version of NocoBase needs to be v1.3.17-beta or above.",paraId:9},{value:"For more information, refer to ",paraId:10},{value:"Linkage Rules",paraId:11},{value:"The version of NocoBase needs to be v1.3.34-beta or above.",paraId:12}],uw={},pw={title:"Execution Plan (History)",toc:"menu",filename:"docs/en-US/handbook/workflow/advanced/executions.md",lastUpdated:173254844e4,description:"After each workflow is triggered, a corresponding execution plan will be created to track the process of this task. Each execution plan has a status value to indicate the current execution status, which can be viewed in the list and details of the execution history:"},Iw=[{id:"execution-plan-history",depth:1,title:"Execution Plan (History)"},{id:"node-execution-status",depth:2,title:"Node Execution Status"}],_w=[{value:"After each workflow is triggered, a corresponding execution plan will be created to track the process of this task. Each execution plan has a status value to indicate the current execution status, which can be viewed in the list and details of the execution history:",paraId:0,tocIndex:0},{value:'When all nodes in the main branch of the process are executed to the end of the process with a "Resolved" status, the entire execution plan will end with a "Resolved" status. When nodes in the main branch of the process appear in final status such as "failed", "error", "canceled" or "rejected", etc., the entire execution plan will be terminated early with the corresponding status. When nodes in the main branch of the process are in a "pending" status, the entire execution plan will be paused, but still display an "On going" status, until the waiting node is resumed and continues execution. Different node types have different ways of handling the "pending" status. For example, "Manual" nodes need to wait for manual processing, while "Delay" nodes need to wait until the time arrives to continue execution.',paraId:1,tocIndex:0},{value:"The status of the execution plan is as follows:",paraId:2,tocIndex:0},{value:"Status",paraId:3,tocIndex:0},{value:"Corresponds to the State of ",paraId:3,tocIndex:0},{value:" Last Executed Node of the Main Process",paraId:3,tocIndex:0},{value:"Explanation",paraId:3,tocIndex:0},{value:"Queueing",paraId:3,tocIndex:0},{value:"-",paraId:3,tocIndex:0},{value:"The process has been triggered and an execution plan has been generated, waiting in the queue for scheduling by the scheduler.",paraId:3,tocIndex:0},{value:"On going",paraId:3,tocIndex:0},{value:"Pending",paraId:3,tocIndex:0},{value:"The node requests a pause, waiting for further input or callback to continue.",paraId:3,tocIndex:0},{value:"Resolved",paraId:3,tocIndex:0},{value:"Resolved",paraId:3,tocIndex:0},{value:"No problems encountered, all nodes executed as expected one by one and completed.",paraId:3,tocIndex:0},{value:"Failed",paraId:3,tocIndex:0},{value:"Failed",paraId:3,tocIndex:0},{value:"Failed due to unmet the logic of node configurations.",paraId:3,tocIndex:0},{value:"Error",paraId:3,tocIndex:0},{value:"Error",paraId:3,tocIndex:0},{value:"The node encountered an uncaught program error and terminated early.",paraId:3,tocIndex:0},{value:"Canceled",paraId:3,tocIndex:0},{value:"Canceled",paraId:3,tocIndex:0},{value:"The waiting node was externally canceled from execution by the administrator, and terminated early.",paraId:3,tocIndex:0},{value:"Rejected",paraId:3,tocIndex:0},{value:"Rejected",paraId:3,tocIndex:0},{value:"In nodes requiring manual processing, it was rejected by user and no longer continued with subsequent processes.",paraId:3,tocIndex:0},{value:"In the examples of ",paraId:4,tocIndex:0},{value:"Quick S tart",paraId:5,tocIndex:0},{value:', we already know that checking the details of the execution history of a workflow can check whether all nodes in the execution are executed normally, and the status and result data of each executed node. In some advanced workflows and nodes, the executed results of the nodes may be multiple, such as the results of "Loop" nodes:',paraId:4,tocIndex:0},{value:'Workflow can be triggered concurrently, but executed one by one in queue, even if multiple workflows are triggered simultaneously, they will be executed sequentially, not in parallelly. So when the status shows "Queueing" it means that one of the workflows is executing and need to wait.',paraId:6},{value:'The "On going" status only indicates that the execution plan has started and is usually paused due to the pending status of some node, and does not mean that the execution plan preemptively occupies the execution resources at the head of the queue. Therefore, when there are "On going" execution plans, other "Queueing" execution plans can still be scheduled and executed.',paraId:7},{value:`The status of the execution plan is determined by each node. In an execution plan after a trigger, each executed node will produce a node status, and the status will determine whether the subsequent process continues to process. Usually, after a node is executed successfully, the next node will continue to execute until all nodes are executed in sequence, or interrupted. When encountering process control nodes, such as "Branch", "Loop", "Parallel" and "Delay", etc., the next node's execution flow will be determined according to the control node's configured conditions and the runtime context data.`,paraId:8,tocIndex:1},{value:"The possible status that may be produced after each node is executed are following:",paraId:9,tocIndex:1},{value:"Status",paraId:10,tocIndex:1},{value:"Is a Final status?",paraId:10,tocIndex:1},{value:"Will it Terminates Early?",paraId:10,tocIndex:1},{value:"Explanation",paraId:10,tocIndex:1},{value:"Pending",paraId:10,tocIndex:1},{value:"No",paraId:10,tocIndex:1},{value:"No",paraId:10,tocIndex:1},{value:"The node requests a pause, waiting for further input or callback to continue.",paraId:10,tocIndex:1},{value:"Resolved",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"No",paraId:10,tocIndex:1},{value:"No problems encountered, executed successfully, and continue to execute the next node until the end.",paraId:10,tocIndex:1},{value:"Failed",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"Failed due to unmet node configurations.",paraId:10,tocIndex:1},{value:"Error",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"The node encountered an uncaught program error and terminated early.",paraId:10,tocIndex:1},{value:"Canceled",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"The pending node was canceled externally by the administrator, and terminated early.",paraId:10,tocIndex:1},{value:"Rejected",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"Yes",paraId:10,tocIndex:1},{value:"In nodes requiring manual processing, it was rejected by user and no longer continued with subsequent processes.",paraId:10,tocIndex:1},{value:'Except for the "Pending" status, all other status are final status of node execution. Only when the final status is "Resolved" the process will continue to execute, otherwise the execution of the entire process will be terminated early. When a node is in a branch process ("Parallel branchs", "Condition", "Loop", etc.), the final status generated by the node will be taken over and processed by the node that opens the branch, and so on, determining the entire process flow.',paraId:11,tocIndex:1},{value:`For example, when we use a "Condition" node with the "continue when 'Yes'" mode, if the result is "false" during execution, the entire process execution will be terminated early and exited with a failed status, as shown in the figure below:`,paraId:12,tocIndex:1},{value:'All final status other than "Resolved" can be regarded as failures, but the reasons for failure will be different, by checking the results of the nodes to know more about the failure.',paraId:13}],vw={},mw={title:"Extend Trigger Types",toc:"menu",filename:"docs/en-US/handbook/workflow/development/trigger.md",lastUpdated:173254844e4,description:"Every workflow must be configured with a specific trigger that serves as the entry point for executing the process."},hw=[{id:"extend-trigger-types",depth:1,title:"Extend Trigger Types"},{id:"server-side-implementation",depth:2,title:"Server-Side Implementation"},{id:"client-side-configuration",depth:2,title:"Client-Side Configuration"}],fw=[{value:"Extend Trigger Types",paraId:0},{value:"Every workflow must be configured with a specific trigger that serves as the entry point for executing the process.",paraId:1,tocIndex:0},{value:"Trigger types typically correspond to specific system events. Throughout an application's lifecycle, any event that offers a subscription option can be defined as a trigger type. Examples include receiving requests, data table operations, or scheduled tasks.",paraId:2,tocIndex:0},{value:"Trigger types are registered in the plugin's trigger registry using unique string identifiers. The workflow plugin comes with several built-in triggers:",paraId:3,tocIndex:0},{value:"'collection'",paraId:4,tocIndex:0},{value:": Triggered by data table operations.",paraId:4,tocIndex:0},{value:"'schedule'",paraId:4,tocIndex:0},{value:": Triggered by scheduled tasks.",paraId:4,tocIndex:0},{value:"'action'",paraId:4,tocIndex:0},{value:": Triggered by post-operation events.",paraId:4,tocIndex:0},{value:"When extending trigger types, it's essential to ensure that each identifier is unique. The server side should handle the registration for subscribing and unsubscribing to triggers, while the client side should provide the corresponding configuration interface.",paraId:5,tocIndex:0},{value:"Server-Side Implementation",paraId:0},{value:"Any custom trigger should extend the ",paraId:6,tocIndex:1},{value:"Trigger",paraId:6,tocIndex:1},{value:" base class and implement the ",paraId:6,tocIndex:1},{value:"on",paraId:6,tocIndex:1},{value:" and ",paraId:6,tocIndex:1},{value:"off",paraId:6,tocIndex:1},{value:" methods, which manage the subscription and unsubscription to specific system events. The ",paraId:6,tocIndex:1},{value:"on",paraId:6,tocIndex:1},{value:" method must invoke ",paraId:6,tocIndex:1},{value:"this.workflow.trigger()",paraId:6,tocIndex:1},{value:" within the event callback to trigger the workflow. The ",paraId:6,tocIndex:1},{value:"off",paraId:6,tocIndex:1},{value:" method should ensure proper cleanup during unsubscription.",paraId:6,tocIndex:1},{value:"The ",paraId:7,tocIndex:1},{value:"this.workflow",paraId:7,tocIndex:1},{value:" property refers to the workflow plugin instance, passed into the ",paraId:7,tocIndex:1},{value:"Trigger",paraId:7,tocIndex:1},{value:" base class during construction.",paraId:7,tocIndex:1},{value:`import { Trigger } from '@nocobase/plugin-workflow'; class MyTrigger extends Trigger { timer: NodeJS.Timeout; @@ -6993,8 +7045,8 @@ export default class extends Plugin { workflow.registerTrigger('interval', MyTrigger); } } -`,paraId:16,tocIndex:2},{value:"Once registered, the new trigger type will appear in the workflow configuration interface.",paraId:17,tocIndex:2},{value:"Ensure that the trigger type identifier registered on the client side matches the one on the server side to avoid errors.",paraId:18},{value:"For further details on defining trigger types, refer to the ",paraId:19},{value:"Workflow API Reference",paraId:20},{value:" section.",paraId:19}],xw={},gw={title:"Collection event",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/collection.md",lastUpdated:1732240239e3,description:"Trigger types of collection events will listen for adding, deleting and updating events of the collection. When an action on the record of collection occurs and meets the configured conditions, the corresponding workflow will be triggered. For example, reducing the inventory of goods after adding a new order, waiting for manual review after adding a comment, etc."},bw=[{id:"collection-event",depth:1,title:"Collection event"},{id:"basic-usage",depth:2,title:"Basic Usage"},{id:"related-tips",depth:2,title:"Related Tips"},{id:"batch-data-action-triggering-is-not-supported",depth:3,title:"Batch data action triggering is not supported"},{id:"data-operations-out-of-nocobase-application-will-not-trigger",depth:3,title:"Data operations out of NocoBase application will not trigger"},{id:"external-data-sources",depth:3,title:"External Data Sources"},{id:"example",depth:2,title:"Example"}],yw=[{value:"Trigger types of collection events will listen for adding, deleting and updating events of the collection. When an action on the record of collection occurs and meets the configured conditions, the corresponding workflow will be triggered. For example, reducing the inventory of goods after adding a new order, waiting for manual review after adding a comment, etc.",paraId:0,tocIndex:0},{value:"There are several types of changes to the collection:",paraId:1,tocIndex:1},{value:"After a record added.",paraId:2,tocIndex:1},{value:"After a record updated.",paraId:2,tocIndex:1},{value:"After a record added or updated.",paraId:2,tocIndex:1},{value:"After a record deleted.",paraId:2,tocIndex:1},{value:"You can choose the timing of the trigger according to the needs of the business. When change type selected that includes updating a record, you can also limit the fields that have changed. Only when the selected fields change will the trigger condition be satisfied. If none are selected, it means that all fields changing will trigger.",paraId:3,tocIndex:1},{value:"In more detail, conditions can be configured for each field of the triggered record. It only triggers when the conditions of the fields are met.",paraId:4,tocIndex:1},{value:"After the collection event is triggered, the source record of the event will be injected into the execution plan as trigger context data for subsequent nodes to use as variables. However, when subsequent nodes need to use the association fields of this record, preloading of the association fields needs to be configured first. The selected association fields will be injected into the context after triggering and can be selected and used by path.",paraId:5,tocIndex:1},{value:"Collection events do not support triggering on batch data action for now. For example, when adding article record and simultaneously adding multiple tag records of the article (many-to-many relationship data), only the workflow for adding the article will be triggered, and the workflows for adding multiple tags simultaneously will not be triggered. For associating or adding of many-to-many association records, the workflow of the intermediate collection will not be triggered either.",paraId:6,tocIndex:3},{value:"Data actions on collections through HTTP API calls to the application interface can also trigger corresponding events. However, if the data changes are not made through the NodoBase application but directly through database operations, the corresponding events will not be triggered. For example, the triggers in the database itself will not be associated with workflows in the application.",paraId:7,tocIndex:4},{value:"Also, using the SQL node to operate on the database is equivalent to directly operating on the database and will not trigger collection events.",paraId:8,tocIndex:4},{value:"from ",paraId:9,tocIndex:5},{value:"0.20",paraId:9,tocIndex:5},{value:", workflow started to support external data sources. If an external data source plugin is used and the collection event is configured for an external data source, as long as the data operation on this data source is completed within the application (user addition, update, and workflow data operations, etc.), the corresponding collection event can be triggered. However, if the data change is made through other systems or directly within the external database, the collection event will not be triggered.",paraId:9,tocIndex:5},{value:"Take an example scenario of calculating the total price and deducting inventory after adding an order.",paraId:10,tocIndex:6},{value:"First, we create the product collection and the order collection, and the data model is as follows:",paraId:11,tocIndex:6},{value:"Field Name",paraId:12,tocIndex:6},{value:"Field Type",paraId:12,tocIndex:6},{value:"Product Name",paraId:12,tocIndex:6},{value:"Single Line Text",paraId:12,tocIndex:6},{value:"Price",paraId:12,tocIndex:6},{value:"Number",paraId:12,tocIndex:6},{value:"Inventory",paraId:12,tocIndex:6},{value:"Integer",paraId:12,tocIndex:6},{value:"Field Name",paraId:13,tocIndex:6},{value:"Field Type",paraId:13,tocIndex:6},{value:"Order Number",paraId:13,tocIndex:6},{value:"Auto Number",paraId:13,tocIndex:6},{value:"Order Product",paraId:13,tocIndex:6},{value:"Many-to-One (Product)",paraId:13,tocIndex:6},{value:"Order Total Price",paraId:13,tocIndex:6},{value:"Number",paraId:13,tocIndex:6},{value:"And add basic product data:",paraId:14,tocIndex:6},{value:"Product Name",paraId:15,tocIndex:6},{value:"Price",paraId:15,tocIndex:6},{value:"Inventory",paraId:15,tocIndex:6},{value:"iPhone 14 Pro",paraId:15,tocIndex:6},{value:"7999",paraId:15,tocIndex:6},{value:"10",paraId:15,tocIndex:6},{value:"iPhone 13 Pro",paraId:15,tocIndex:6},{value:"5999",paraId:15,tocIndex:6},{value:"0",paraId:15,tocIndex:6},{value:"Then create a workflow based on the collection event of the order:",paraId:16,tocIndex:6},{value:"Several configuration items:",paraId:17,tocIndex:6},{value:'Data collection: Select the "Order" table.',paraId:18,tocIndex:6},{value:'Trigger on: Select "After Adding Data" trigger.',paraId:18,tocIndex:6},{value:"Condition: Leave it blank.",paraId:18,tocIndex:6},{value:'Preload associations: Check "Product".',paraId:18,tocIndex:6},{value:"Then configure other nodes based on the logic of the workflow, check if the product inventory is greater than 0, and deduct inventory if it is, otherwise delete the order as it is invalid:",paraId:19,tocIndex:6},{value:"The configuration of the nodes will be detailed in the documentation of the specific types.",paraId:20,tocIndex:6},{value:'Enable the workflow and test by adding an order through the UI. After placing an order for "iPhone 14 Pro", the inventory of the corresponding product will be reduced to 9. However, if an order is placed for "iPhone 13 Pro", the order will be deleted due to insufficient inventory.',paraId:21,tocIndex:6}],ww={},kw={title:"Pre-action trigger",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/pre-action.md",lastUpdated:1732240239e3,description:'When setting up a workflow, select "Pre-action event" as the event type:'},Sw=[{id:"pre-action-trigger",depth:1,title:"Pre-action trigger"},{id:"creating-a-trigger",depth:2,title:"Creating a Trigger"},{id:"selecting-the-data-table",depth:2,title:"Selecting the Data Table"},{id:"intercept-mode",depth:2,title:"Intercept Mode"},{id:"related-content",depth:2,title:"Related content"}],Uw=[{value:'When setting up a workflow, select "Pre-action event" as the event type:',paraId:0,tocIndex:1},{value:"The first step in configuring a trigger for intercepting workflows is to select the data table associated with the action:",paraId:1,tocIndex:2},{value:"Next, choose the intercept mode. You can either intercept only the action buttons linked to this workflow or intercept all selected actions for the data table (regardless of the form the action originates from and without needing to bind the corresponding workflow):",paraId:2,tocIndex:2},{value:'Currently, the supported action types include "Create," "Update," and "Delete." You can select multiple action types simultaneously.',paraId:3,tocIndex:3},{value:"Except for trigger configuration, there are also some related contents about pre-action trigger that can be further understood through the ",paraId:4,tocIndex:4},{value:"plugin documentation",paraId:5,tocIndex:4},{value:".",paraId:4,tocIndex:4}],Pw={},Tw={title:"\u56FE\u8868\u533A\u5757",toc:"menu",filename:"docs/en-US/manual/data-visualization/chart-block.md",lastUpdated:1732240239e3,description:"\u56FE\u8868\u533A\u5757\u662F\u4E00\u4E2A\u7528\u4E8E\u7EC4\u7EC7\u591A\u4E2A\u56FE\u8868\u7684\u9762\u677F\u3002"},Cw=[{id:"\u56FE\u8868\u533A\u5757",depth:1,title:"\u56FE\u8868\u533A\u5757"},{id:"\u6DFB\u52A0",depth:2,title:"\u6DFB\u52A0"},{id:"\u914D\u7F6E",depth:2,title:"\u914D\u7F6E"}],Aw=[{value:"\u56FE\u8868\u533A\u5757\u662F\u4E00\u4E2A\u7528\u4E8E\u7EC4\u7EC7\u591A\u4E2A\u56FE\u8868\u7684\u9762\u677F\u3002",paraId:0,tocIndex:0},{value:"\u70B9\u51FB\u201C\u6DFB\u52A0\u533A\u5757\u201D (Add block) - \u201C\u56FE\u8868\u201D (Charts)\uFF0C\u53EF\u4EE5\u521B\u5EFA\u53EF\u4EE5\u7A7A\u767D\u7684\u56FE\u8868\u533A\u5757\u3002",paraId:1,tocIndex:1},{value:"\u5728\u56FE\u8868\u533A\u5757\u4E2D\u70B9\u51FB\u201C\u6DFB\u52A0\u533A\u5757\u201D (Add block) - \u201C\u56FE\u8868\u201D (Chart)\uFF0C\u9009\u62E9\u5BF9\u5E94\u7684\u6570\u636E\u8868 (Collection), \u53EF\u4EE5\u521B\u5EFA\u548C\u914D\u7F6E\u56FE\u8868\u3002\u6709\u67E5\u770B\u6743\u9650\u7684\u6570\u636E\u8868\u624D\u53EF\u4EE5\u7528\u4E8E\u914D\u7F6E\u56FE\u8868\uFF0C\u5426\u5219\u5C06\u4F1A\u5728\u9009\u9879\u4E2D\u88AB\u9690\u85CF\u3002",paraId:2,tocIndex:1},{value:"\u56FE\u8868\u533A\u5757\u4E2D\u7684\u56FE\u8868\u53EF\u4EE5\u50CF\u666E\u901A\u533A\u5757\u4E00\u6837\uFF0C\u5728\u56FE\u8868\u533A\u5757\u4E2D\uFF0C\u81EA\u7531\u62D6\u62FD\u548C\u7EC4\u7EC7\u3002",paraId:3,tocIndex:2},{value:"\u70B9\u51FB\u201C\u914D\u7F6E\u201D (Configure) \u6309\u94AE\uFF0C\u53EF\u4EE5\u5BF9\u5F53\u524D\u56FE\u8868\u8FDB\u884C\u4FEE\u6539\u3002",paraId:3,tocIndex:2},{value:"\u70B9\u51FB\u201C\u590D\u5236\u201D (Duplicate) \u6309\u94AE\uFF0C\u53EF\u4EE5\u5FEB\u901F\u590D\u5236\u5F53\u524D\u56FE\u8868\u3002",paraId:3,tocIndex:2},{value:"\u53EF\u4EE5\u201C\u7F16\u8F91\u533A\u5757\u6807\u9898\u201D (Edit block title)\uFF0C\u7ED9\u5F53\u524D\u56FE\u8868\u6DFB\u52A0\u6807\u9898\u8BF4\u660E\u3002",paraId:3,tocIndex:2}],qw={},Ew={title:"\u754C\u9762\u8BBE\u8BA1\u5668",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/index.md",lastUpdated:1732240239e3,description:"\u5F53\u6FC0\u6D3B\u754C\u9762\u914D\u7F6E\u6309\u94AE\uFF0C\u8FDB\u5165 UI \u914D\u7F6E\u72B6\u6001"},Dw=[{id:"\u754C\u9762\u8BBE\u8BA1\u5668",depth:1,title:"\u754C\u9762\u8BBE\u8BA1\u5668"}],Ow=[{value:"\u5F53\u6FC0\u6D3B\u754C\u9762\u914D\u7F6E\u6309\u94AE\uFF0C\u8FDB\u5165 UI \u914D\u7F6E\u72B6\u6001",paraId:0,tocIndex:0},{value:"\u754C\u9762\u8BBE\u8BA1\u5668\u7684\u7EC4\u6210\u90E8\u5206",paraId:1,tocIndex:0},{value:"\u83DC\u5355",paraId:2,tocIndex:0},{value:"\u9875\u9762",paraId:3,tocIndex:0},{value:"\u533A\u5757",paraId:4,tocIndex:0},{value:"\u65E0\u5B57\u6BB5\u548C\u64CD\u4F5C\u7684\u533A\u5757",paraId:5,tocIndex:0},{value:"\u5E26\u5B57\u6BB5\u548C\u64CD\u4F5C\u7684\u533A\u5757",paraId:5,tocIndex:0},{value:"\u5B57\u6BB5\uFF08\u9644\u5C5E\u4E8E\u533A\u5757\uFF09",paraId:6,tocIndex:0},{value:"\u64CD\u4F5C\uFF08\u9644\u5C5E\u4E8E\u533A\u5757\uFF09",paraId:7,tocIndex:0}],Rw={},Mw={title:"\u4E2A\u4EBA\u4E2D\u5FC3",toc:"menu",filename:"docs/en-US/plugins/client/user/user-center/index.md",lastUpdated:1732240239e3,description:"\u4E2A\u4EBA\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u7CFB\u5217\u7BA1\u7406\u548C\u7CFB\u7EDF\u7EF4\u62A4\u529F\u80FD\uFF0C\u5305\u62EC\u67E5\u770B\u7CFB\u7EDF\u7248\u672C\u53F7\u3001\u67E5\u770B\u548C\u7F16\u8F91\u4E2A\u4EBA\u8D44\u6599\u7B49\u5FEB\u6377\u64CD\u4F5C\u3002\u5F53\u7CFB\u7EDF\u6743\u9650\u5F00\u542F\u4E86\u76F8\u5E94\u6743\u9650\u65F6\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u8FD8\u4F1A\u63D0\u4F9B\u6E05\u9664\u7F13\u5B58\u548C\u91CD\u542F\u5E94\u7528\u7684\u6309\u94AE\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u5FEB\u6377\u64CD\u4F5C\u53EF\u7531\u63D2\u4EF6\u6269\u5C55\u63D0\u4F9B\u3002"},Lw=[{id:"\u4E2A\u4EBA\u4E2D\u5FC3",depth:1,title:"\u4E2A\u4EBA\u4E2D\u5FC3"}],Nw=[{value:"\u4E2A\u4EBA\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u7CFB\u5217\u7BA1\u7406\u548C\u7CFB\u7EDF\u7EF4\u62A4\u529F\u80FD\uFF0C\u5305\u62EC\u67E5\u770B\u7CFB\u7EDF\u7248\u672C\u53F7\u3001\u67E5\u770B\u548C\u7F16\u8F91\u4E2A\u4EBA\u8D44\u6599\u7B49\u5FEB\u6377\u64CD\u4F5C\u3002\u5F53\u7CFB\u7EDF\u6743\u9650\u5F00\u542F\u4E86\u76F8\u5E94\u6743\u9650\u65F6\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u8FD8\u4F1A\u63D0\u4F9B\u6E05\u9664\u7F13\u5B58\u548C\u91CD\u542F\u5E94\u7528\u7684\u6309\u94AE\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u5FEB\u6377\u64CD\u4F5C\u53EF\u7531\u63D2\u4EF6\u6269\u5C55\u63D0\u4F9B\u3002",paraId:0,tocIndex:0},{value:"\u76EE\u524D\u63D0\u4F9B\u7684\u4E2A\u4EBA\u4E2D\u5FC3\u5FEB\u6377\u64CD\u4F5C\uFF1A",paraId:1,tocIndex:0},{value:"Edit profile\uFF1A\u7F16\u8F91\u7528\u6237\u4E2A\u4EBA\u4FE1\u606F\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Change password\uFF1A\u4FEE\u6539\u5BC6\u7801\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Switch role\uFF1A\u5207\u6362\u89D2\u8272\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Sign out\uFF1A\u767B\u51FA\u7CFB\u7EDF\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Theme \uFF1A\u7528\u4E8E\u5207\u6362\u4E3B\u9898\uFF0C\u7531\u4E3B\u9898\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Clear cache: \u6E05\u9664\u7F13\u5B58\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B\uFF08\u6709\u6743\u9650\u63A7\u5236\uFF09",paraId:2,tocIndex:0},{value:"Restart application\uFF1A\u91CD\u542F\u5E94\u7528\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B\uFF08\u6709\u6743\u9650\u63A7\u5236\uFF09",paraId:2,tocIndex:0}],zw={},Fw={title:"\u6570\u636E\u8868\u7BA1\u7406",toc:"menu",filename:"docs/en-US/plugins/collection-manager/user/index.md",lastUpdated:1732240239e3,description:"\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u53CA\u62D6\u62FD\u6392\u5E8F"},Bw=[{id:"\u6570\u636E\u8868\u7BA1\u7406",depth:1,title:"\u6570\u636E\u8868\u7BA1\u7406"},{id:"\u7BA1\u7406\u4E2D\u5FC3",depth:2,title:"\u7BA1\u7406\u4E2D\u5FC3"},{id:"\u6570\u636E\u8868\u7BA1\u7406-1",depth:3,title:"\u6570\u636E\u8868\u7BA1\u7406"},{id:"\u6570\u636E\u8868\u5B57\u6BB5\u7BA1\u7406",depth:3,title:"\u6570\u636E\u8868\u5B57\u6BB5\u7BA1\u7406"},{id:"\u6570\u636E\u8868\u5206\u7C7B\u7BA1\u7406",depth:3,title:"\u6570\u636E\u8868\u5206\u7C7B\u7BA1\u7406"},{id:"\u6570\u636E\u8868\u7EE7\u627F",depth:3,title:"\u6570\u636E\u8868\u7EE7\u627F"},{id:"\u5355\u7EE7\u627F",depth:4,title:"\u5355\u7EE7\u627F"},{id:"\u591A\u7EE7\u627F",depth:4,title:"\u591A\u7EE7\u627F"},{id:"\u5B57\u6BB5\u91CD\u5199",depth:4,title:"\u5B57\u6BB5\u91CD\u5199"},{id:"\u5173\u7CFB\u5B57\u6BB5\u91CD\u5199",depth:5,title:"\u5173\u7CFB\u5B57\u6BB5\u91CD\u5199"},{id:"\u53EF\u9009\u9879\u7C7B\u578B\u5B57\u6BB5\u7684\u91CD\u5199",depth:5,title:"\u53EF\u9009\u9879\u7C7B\u578B\u5B57\u6BB5\u7684\u91CD\u5199"},{id:"\u5173\u7CFB\u5916\u952E\u5171\u4EAB",depth:4,title:"\u5173\u7CFB\u5916\u952E\u5171\u4EAB"},{id:"\u5728-ui-\u4E2D\u5E94\u7528",depth:2,title:"\u5728 UI \u4E2D\u5E94\u7528"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u5B57\u6BB5",depth:3,title:"\u5B57\u6BB5"},{id:"\u5173\u7CFB",depth:3,title:"\u5173\u7CFB"},{id:"\u7EE7\u627F",depth:3,title:"\u7EE7\u627F"},{id:"\u914D\u7F6E\u5B57\u6BB5\u5305\u62EC\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5",depth:4,title:"\u914D\u7F6E\u5B57\u6BB5\u5305\u62EC\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5"},{id:"\u6DFB\u52A0\u64CD\u4F5C\u53EF\u4EE5\u542F\u7528\u5B50\u8868",depth:4,title:"\u6DFB\u52A0\u64CD\u4F5C\u53EF\u4EE5\u542F\u7528\u5B50\u8868"},{id:"\u7EE7\u627F\u8868\u6570\u636E\u7684\u67E5\u770B\u4E0E\u7F16\u8F91\u6309-__collection-\u663E\u793A",depth:4,title:"\u7EE7\u627F\u8868\u6570\u636E\u7684\u67E5\u770B\u4E0E\u7F16\u8F91\uFF08\u6309 __collection \u663E\u793A\uFF09"},{id:"\u5173\u7CFB\u6570\u636E\u7684\u5F39\u7A97\u6309-__collection-\u663E\u793A",depth:4,title:"\u5173\u7CFB\u6570\u636E\u7684\u5F39\u7A97\uFF08\u6309 __collection \u663E\u793A\uFF09"},{id:"\u7EE7\u627F\u4E0B\u7684\u7B5B\u9009\u8054\u52A8",depth:4,title:"\u7EE7\u627F\u4E0B\u7684\u7B5B\u9009\u8054\u52A8"}],jw=[{value:"\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u53CA\u62D6\u62FD\u6392\u5E8F",paraId:0,tocIndex:2},{value:"\u6570\u636E\u8868\u5B57\u6BB5\u7684\u589E\u5220\u6539",paraId:1,tocIndex:3},{value:"\u53EF\u4EE5\u5C06\u6570\u636E\u8868\u6309\u7167\u4E0D\u540C\u7684\u6807\u51C6\u8FDB\u884C\u7EC4\u7EC7\uFF0C\u4F7F\u6570\u636E\u7684\u7ED3\u6784\u66F4\u52A0\u6E05\u6670\u964D\u4F4E\u6570\u636E\u7BA1\u7406\u7684\u590D\u6742\u6027",paraId:2,tocIndex:4},{value:"\u6570\u636E\u8868\u5206\u7C7B\u7684\u589E\u5220\u6539\u53CA\u6392\u5E8F",paraId:3,tocIndex:4},{value:"\u6570\u636E\u8868\u7EE7\u627F\u662F PostgreSQL \u6570\u636E\u5E93\u72EC\u6709\u7684\u529F\u80FD\uFF08\u9700\u8981\u8FDE\u63A5 PostgreSQL \uFF09\uFF0C\u5B83\u5141\u8BB8\u5728\u4E3B\u8868\u7684\u57FA\u7840\u4E0A\u521B\u5EFA\u5B50\u8868\uFF0C\u5B50\u8868\u7EE7\u627F\u4E86\u4E3B\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u5B9A\u4E49\u548C\u7D22\u5F15\u3002\u8FD9\u4E2A\u7279\u6027\u4E3B\u8981\u7528\u4E8E\u7BA1\u7406\u5927\u91CF\u6570\u636E\uFF0C\u5B9E\u73B0\u6570\u636E\u5206\u533A\u548C\u6027\u80FD\u4F18\u5316\u3002\u6BCF\u4E2A\u5B50\u8868\u53EF\u4EE5\u5B58\u50A8\u7279\u5B9A\u6761\u4EF6\u4E0B\u7684\u6570\u636E\uFF0C\u4F8B\u5982\u6309\u65F6\u95F4\u5206\u5272\u6570\u636E\uFF0C\u4ECE\u800C\u51CF\u5C11\u67E5\u8BE2\u65F6\u7684\u6570\u636E\u626B\u63CF\u91CF\uFF0C\u63D0\u9AD8\u67E5\u8BE2\u6027\u80FD\u3002\u6B64\u5916\uFF0C\u4E3B\u8868\u548C\u5B50\u8868\u7684\u67E5\u8BE2\u900F\u660E\u5316\uFF0C\u7528\u6237\u53EF\u4EE5\u50CF\u64CD\u4F5C\u5355\u4E2A\u8868\u4E00\u6837\u67E5\u8BE2\u6574\u4E2A\u7EE7\u627F\u8868\u96C6\u5408\uFF0C\u7B80\u5316\u4E86\u6570\u636E\u64CD\u4F5C\u548C\u67E5\u8BE2\u7684\u590D\u6742\u6027\uFF0C\u4F7F\u6570\u636E\u5E93\u66F4\u9AD8\u6548\u5730\u5904\u7406\u5927\u89C4\u6A21\u6570\u636E\u3002",paraId:4,tocIndex:5},{value:"\u5728\u5355\u7EE7\u627F\u6A21\u5F0F\u4E2D\uFF0C\u4E00\u4E2A\u8868\u53EF\u4EE5\u7EE7\u627F\u53E6\u4E00\u4E2A\u8868\uFF0C\u5B50\u8868\u7EE7\u627F\u4E86\u7236\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u548C\u7EA6\u675F\u3002\u8FD9\u79CD\u6A21\u5F0F\u7528\u4E8E\u8868\u793A\u5B9E\u4F53\u7684\u5C42\u6B21\u7ED3\u6784\uFF0C\u5141\u8BB8\u5B50\u8868\u5728\u4FDD\u7559\u901A\u7528\u5C5E\u6027\u7684\u540C\u65F6\u6DFB\u52A0\u7279\u5B9A\u5C5E\u6027\u3002",paraId:5,tocIndex:6},{value:'\u5728\u8BA2\u5355\u7CFB\u7EDF\u4E2D\uFF0C\u914D\u7F6E"\u6279\u53D1\u8BA2\u5355\u8868"\u7EE7\u627F\u81EA\u4E3B\u8868 "\u8BA2\u5355"\uFF0C\u7528\u4E8E\u5904\u7406\u6279\u53D1\u8BA2\u5355\uFF0C\u914D\u7F6E\u4E86\u6279\u53D1\u5BA2\u6237\u7279\u6709\u7684\u5B57\u6BB5\uFF0C\u5982\u6279\u53D1\u4EF7\u683C\u3001\u6279\u6B21\u53F7\u7B49\u3002',paraId:6,tocIndex:6},{value:"\u5546\u54C1\u8868\u7684\u7EE7\u627F\u5173\u7CFB\u4E5F\u53EF\u4EE5\u505A\u5982\u4E0B\u68B3\u7406",paraId:7,tocIndex:6},{value:'\u4E3B\u8868 "\u5546\u54C1"\uFF08Products\uFF09\uFF1A\u5305\u542B\u901A\u7528\u5546\u54C1\u4FE1\u606F\uFF0C\u5982\u5546\u54C1 ID\u3001\u540D\u79F0\u3001\u4EF7\u683C\u3001\u5E93\u5B58\u7B49\u3002',paraId:8,tocIndex:6},{value:'\u5B50\u8868 "\u7535\u5B50\u4EA7\u54C1"\uFF08ElectronicsProduct\uFF09\uFF1A\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u5E76\u6DFB\u52A0\u4E86\u7279\u5B9A\u4E8E\u7535\u5B50\u4EA7\u54C1\u7684\u5B57\u6BB5\uFF0C\u5982\u5C4F\u5E55\u5C3A\u5BF8\u3001\u64CD\u4F5C\u7CFB\u7EDF\u7B49\u5B57\u6BB5\u3002',paraId:8,tocIndex:6},{value:'\u5B50\u8868 "\u670D\u88C5\u4EA7\u54C1"\uFF08ApparelProduct\uFF09\uFF1A\u540C\u6837\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u4F46\u5305\u542B\u670D\u88C5\u4EA7\u54C1\u7279\u6709\u7684\u5C5E\u6027\uFF0C\u5982\u5C3A\u5BF8\u3001\u989C\u8272\u3001\u6750\u8D28\u7B49\u5B57\u6BB5\u3002',paraId:8,tocIndex:6},{value:'\u5B50\u8868 "\u98DF\u54C1\u4EA7\u54C1"\uFF08FoodProduct\uFF09\uFF1A\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u7528\u4E8E\u5904\u7406\u98DF\u54C1\u4EA7\u54C1\uFF0C\u5305\u62EC\u4FDD\u8D28\u671F\u3001\u98DF\u54C1\u7C7B\u578B\u7B49\u5B57\u6BB5\u3002',paraId:8,tocIndex:6},{value:'\u5B50\u8868 "\u5BB6\u5177\u4EA7\u54C1"\uFF08FurnitureProduct\uFF09\uFF1A\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u5305\u542B\u5BB6\u5177\u4EA7\u54C1\u7684\u7279\u5B9A\u5C5E\u6027\uFF0C\u5982\u5C3A\u5BF8\u3001\u6750\u6599\u7B49\u5B57\u6BB5\u3002',paraId:8,tocIndex:6},{value:"\u591A\u7EE7\u627F\u5141\u8BB8\u4E00\u4E2A\u8868\u540C\u65F6\u7EE7\u627F\u591A\u4E2A\u7236\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u548C\u7EA6\u675F\u3002\u8FD9\u79CD\u6A21\u5F0F\u7528\u4E8E\u5177\u6709\u591A\u4E2A\u5173\u8054\u7684\u5B9E\u4F53\u5EFA\u6A21\u3002",paraId:9,tocIndex:7},{value:"\u4EE5\u8BA2\u5355\u3001\u8FD0\u5355\u548C\u5546\u54C1\u8FDB\u884C\u6570\u636E\u5EFA\u6A21\u4E3A\u4F8B\uFF0C\u5728\u8FD9\u4E2A\u7CFB\u7EDF\u4E2D\uFF0C\u6709\u4E09\u4E2A\u6838\u5FC3\u5B9E\u4F53\uFF1A\u8BA2\u5355\u3001\u8FD0\u5355\u548C\u5546\u54C1\u3002\u4E00\u4E2A\u8BA2\u5355\u53EF\u4EE5\u5305\u542B\u591A\u4E2A\u5546\u54C1\uFF0C\u4E00\u4E2A\u8BA2\u5355\u53EF\u4EE5\u5BF9\u5E94\u591A\u4E2A\u8FD0\u5355\uFF08\u4F8B\u5982\uFF0C\u90E8\u5206\u5546\u54C1\u8FD0\u9001\u5230\u4E0D\u540C\u5730\u70B9\uFF09\uFF0C\u540C\u65F6\u4E00\u4E2A\u8FD0\u5355\u53EF\u80FD\u6D89\u53CA\u591A\u4E2A\u8BA2\u5355\u3002\u8FD9\u79CD\u591A\u91CD\u5173\u7CFB\u53EF\u4EE5\u4F7F\u7528\u4E00\u4E2A\u5B50\u8868\uFF08\u8054\u63A5\u8868\uFF09\u6765\u5B9E\u73B0\uFF0C\u4E00\u4E2A\u8868\u5177\u6709\u591A\u4E2A\u7236\u8868\uFF08\u591A\u7EE7\u627F\uFF09\u3002",paraId:10,tocIndex:7},{value:'\u7236\u8868 "\u8BA2\u5355"\uFF08Orders\uFF09\uFF1A\u5305\u542B\u8BA2\u5355\u7684\u57FA\u672C\u4FE1\u606F\uFF0C\u5982\u8BA2\u5355 ID\u3002',paraId:11,tocIndex:7},{value:'\u7236\u8868 "\u8FD0\u5355"\uFF08Shipments\uFF09\uFF1A\u5305\u542B\u8FD0\u5355\u53F7\u3001\u8FD0\u8F93\u65B9\u5F0F\u4FE1\u606F\u7B49\u3002',paraId:11,tocIndex:7},{value:'\u7236\u8868 "\u5546\u54C1"\uFF08Products\uFF09\uFF1A\u5305\u542B\u5546\u54C1\u7684\u5C5E\u6027\uFF0C\u5982\u5546\u54C1 ID\u3001\u540D\u79F0\u3001\u4EF7\u683C\u7B49\u3002',paraId:11,tocIndex:7},{value:'\u5B50\u8868"\u8BA2\u5355\u5546\u54C1"\uFF08OrderProduct\uFF09\uFF1A\u7528\u4E8E\u7EE7\u627F\u8BA2\u5355\u548C\u5546\u54C1\u3002\u6BCF\u4E2A\u8BB0\u5F55\u8868\u793A\u4E00\u4E2A\u8BA2\u5355\u4E2D\u7684\u4E00\u4E2A\u5546\u54C1\uFF0C\u540C\u65F6\u8BB0\u5F55\u4E86\u6570\u91CF\u7B49\u4FE1\u606F\u3002',paraId:11,tocIndex:7},{value:'\u5B50\u8868 "\u8BA2\u5355\u8FD0\u5355\u5173\u8054"\uFF08OrderShipment\uFF09\uFF1A\u7528\u4E8E\u7EE7\u627F\u8BA2\u5355\u548C\u8FD0\u5355\u3002\u6BCF\u4E2A\u8BB0\u5F55\u8868\u793A\u4E00\u4E2A\u8BA2\u5355\u4E0E\u4E00\u4E2A\u8FD0\u5355\u7684\u5173\u7CFB\uFF0C\u540C\u65F6\u8BB0\u5F55\u4E86\u76F8\u5173\u4FE1\u606F',paraId:11,tocIndex:7},{value:"\u7EE7\u627F\u5173\u7CFB\u4E2D\u5B50\u8868\u53EF\u91CD\u65B0\u5B9A\u4E49\u6216\u8986\u76D6\u4ECE\u7236\u8868\u7EE7\u627F\u7684\u5B57\u6BB5\uFF0C\u81EA\u5B9A\u4E49\u5B57\u6BB5\u5C5E\u6027\u4EE5\u9002\u5E94\u7279\u5B9A\u9700\u6C42",paraId:12,tocIndex:8},{value:`\u5982 A \u591A\u5BF9\u591A B\uFF0CA1 \u7EE7\u627F A\uFF0CB1 \u7EE7\u627F B -\u5219 A1 \u4E5F\u5173\u8054 B\uFF0C\u8FD9\u65F6\u5019 B \u6709\u6240\u6709\uFF08\u672C\u8EAB\u53CA\u6240\u6709\u5B50\u8868\uFF09\u7684\u6570\u636E\uFF0C\u4F46\u662F A1 \u53EA\u9700\u8981\u770B B1 \u7684\u6570\u636E\uFF0C\u5219\u53EF\u4EE5 \u5728 A1 \u4E2D\u91CD\u5199 \u628A B target \u6539\u6210 B1\u3002\u5373\u5728\u5173\u7CFB A1.B \u4E2D\uFF0C\u53EF\u4EE5\u4FEE\u6539\u5173\u8054\u7684\u76EE\u6807\u8868 B\uFF08\u53EF\u9009\u8303\u56F4\u4E3A B \u548C B \u7684\u5B50\u8868\uFF09\u4E3A B1`,paraId:13,tocIndex:9},{value:"\u5982\u56FE\uFF1A\u6279\u53D1\u8BA2\u5355\u8868\u4E2D\u91CD\u5199\u5546\u54C1\u5173\u7CFB\u5B57\u6BB5\uFF08\u5C06\u76EE\u6807\u8868\u91CD\u5199\u4E3A\u7535\u5B50\u5546\u54C1\u8868\uFF09",paraId:14,tocIndex:9},{value:"\u5546\u54C1\u8868\uFF08\u4E3B\u8868\uFF09\u4E2D\u6709\u53EF\u9009\u9879\u5B57\u6BB5\u300C\u5C3A\u5BF8\u300D\uFF1A\u670D\u88C5\u5546\u54C1\u53EF\u4EE5\u5B9A\u4E49\u91CD\u5199\u4E3A\u8863\u670D\u5C3A\u5BF8\uFF08S\u3001M\u3001L\uFF09\uFF0C\u7535\u5B50\u5546\u54C1\u8868\u5219\u53EF\u4EE5\u91CD\u5199\u5B57\u6BB5\u4E3A\u300C\u5B58\u50A8\u5BB9\u91CF\u300D\uFF0832GB\u300164GB\u3001128GB\uFF09",paraId:15,tocIndex:10},{value:"\u5173\u7CFB\u5916\u952E\u5171\u4EAB\u662F\u4E00\u79CD\u7B56\u7565\uFF0C\u5141\u8BB8\u591A\u4E2A\u8868\u5171\u4EAB\u76F8\u540C\u7684\u5916\u952E\u5B57\u6BB5\uFF0C\u4EE5\u5EFA\u7ACB\u8868\u4E4B\u95F4\u7684\u5173\u7CFB\u3002\u8FD9\u5728\u591A\u4E2A\u8868\u9700\u8981\u5F15\u7528\u76F8\u540C\u5B9E\u4F53\u65F6\u975E\u5E38\u6709\u7528\u3002\u5728\u6570\u636E\u8868\u7EE7\u627F\u7684\u60C5\u51B5\u4E0B\uFF0C\u8FD9\u4E2A\u5171\u4EAB\u7684\u5916\u952E\u53EF\u4EE5\u7528\u4E8E\u786E\u4FDD\u6BCF\u4E2A\u5B50\u8868\u4E0E\u5176\u4ED6\u8868\u4E4B\u95F4\u7684\u5173\u7CFB\u6216\u5F15\u7528\uFF0C\u4ECE\u800C\u6784\u5EFA\u66F4\u590D\u6742\u7684\u6570\u636E\u6A21\u578B",paraId:16,tocIndex:11},{value:"\u4F5C\u4E3A\u533A\u5757\u7684\u6570\u636E\u6E90\u4F7F\u7528",paraId:17,tocIndex:13},{value:"\u6570\u636E\u533A\u5757\u7684\u5B57\u6BB5\u6765\u6E90\uFF0C\u4E0D\u540C\u7684\u5B57\u6BB5\u7C7B\u578B\u5BF9\u5E94\u4E0D\u540C\u7684\u5B57\u6BB5\u7EC4\u4EF6",paraId:18,tocIndex:14},{value:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6",paraId:19,tocIndex:15},{value:"\u5173\u7CFB\u533A\u5757",paraId:19,tocIndex:15},{value:"\u5B50\u8868\u5728\u533A\u5757\u4E2D\u4F7F\u7528\u65F6\u9664\u4E86\u672C\u8868\u5B57\u6BB5\u8FD8\u6709\u6240\u6709\u7236\u8868\u7684\u5B57\u6BB5\u4F9B\u914D\u7F6E",paraId:20,tocIndex:17},{value:"\u7236\u8868\u914D\u7F6E TableOID(\u8BB0\u5F55\u662F\u7531\u54EA\u4E2A\u8868\u521B\u5EFA\u7684\u6570\u636E)",paraId:21,tocIndex:18},{value:"\u5B50\u8868\u7684\u6570\u636E\u6C47\u805A\u5728\u7236\u8868\u4E2D",paraId:22,tocIndex:18},{value:"\u5728\u7236\u8868\u4E2D\u4E3A\u5B50\u8868\u914D\u7F6E\u6DFB\u52A0\u64CD\u4F5C",paraId:23,tocIndex:18},{value:"\u53EF\u9009\u9879\u4E3A\u5F53\u524D\u8868\u7684\u6240\u6709\u5B50\u8868",paraId:24,tocIndex:18},{value:"UI \u914D\u7F6E\u72B6\u6001\u4E0B\u53EF\u4EE5\u4E3A\u5B50\u8868\u914D\u7F6E\u533A\u5757\uFF08\u8868\u5355/\u8BE6\u60C5\u533A\u5757\uFF09",paraId:25,tocIndex:19},{value:"\u975E UI \u914D\u7F6E\u72B6\u6001\u4E0B,\u6309 __collection \u53EA\u663E\u793A\u5BF9\u5E94\u6570\u636E\u8868\u8BB0\u5F55\u7684\u533A\u5757",paraId:26,tocIndex:19},{value:"\u5173\u7CFB\u6570\u636E\u7684\u8BE6\u60C5\u5728\u975E UI \u914D\u7F6E\u72B6\u6001\u4E0B\u6309 __collection \u4EC5\u663E\u793A\u5BF9\u5E94\u6570\u636E\u7684\u533A\u5757",paraId:27,tocIndex:20},{value:"B \u53EF\u4EE5\u8FDE\u63A5 A\uFF0CB \u7684\u5B50\u8868 B1 \u4E5F\u53EF\u4EE5\u8FDE\u63A5 A",paraId:28,tocIndex:21}],Hw={},Ww={title:"\u672C\u5730\u5316\u7BA1\u7406",toc:"menu",filename:"docs/en-US/plugins/localization-management/index.md",lastUpdated:1732240239e3,description:"\u540C\u6B65\u4E4B\u540E\uFF0C\u4F1A\u5217\u51FA\u6240\u6709\u53EF\u7FFB\u8BD1\u8BCD\u6761"},$w=[{id:"\u672C\u5730\u5316\u7BA1\u7406",depth:1,title:"\u672C\u5730\u5316\u7BA1\u7406"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:3,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u672C\u5730\u5316\u7BA1\u7406-1",depth:3,title:"\u672C\u5730\u5316\u7BA1\u7406"},{id:"\u540C\u6B65\u7FFB\u8BD1\u8BCD\u6761",depth:3,title:"\u540C\u6B65\u7FFB\u8BD1\u8BCD\u6761"},{id:"\u53D1\u5E03",depth:3,title:"\u53D1\u5E03"},{id:"\u7FFB\u8BD1\u5176\u4ED6\u8BED\u8A00",depth:3,title:"\u7FFB\u8BD1\u5176\u4ED6\u8BED\u8A00"}],Gw=[{value:"\u540C\u6B65\u4E4B\u540E\uFF0C\u4F1A\u5217\u51FA\u6240\u6709\u53EF\u7FFB\u8BD1\u8BCD\u6761",paraId:0,tocIndex:6},{value:"\u7FFB\u8BD1\u5B8C\u6210\u4E4B\u540E\uFF0C\u9700\u8981\u70B9\u51FB\u201C\u53D1\u5E03\u201D\u6309\u94AE\uFF0C\u624D\u80FD\u4F7F\u4FEE\u6539\u7ED3\u679C\u751F\u6548",paraId:1,tocIndex:7},{value:"\u542F\u7528\u5176\u4ED6\u8BED\u8A00\uFF0C\u5982\u7B80\u4F53\u4E2D\u6587",paraId:2,tocIndex:8},{value:"\u5207\u6362\u8BED\u8A00",paraId:3,tocIndex:8},{value:"\u8BCD\u6761\u540C\u6B65",paraId:4,tocIndex:8},{value:"\u7FFB\u8BD1\u5E76\u53D1\u5E03",paraId:5,tocIndex:8}],Vw={},Kw={title:"\u5220\u9664\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/destroy.md",lastUpdated:1732240239e3,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u5220\u9664\u3002"},Zw=[{id:"\u5220\u9664\u6570\u636E",depth:1,title:"\u5220\u9664\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],Yw=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u5220\u9664\u3002",paraId:0,tocIndex:0},{value:"\u5220\u9664\u8282\u70B9\u7684\u57FA\u672C\u4F7F\u7528\u4E0E\u66F4\u65B0\u8282\u70B9\u7C7B\u4F3C\uFF0C\u53EA\u662F\u5220\u9664\u8282\u70B9\u4E0D\u9700\u8981\u5B57\u6BB5\u8D4B\u503C\uFF0C\u53EA\u9700\u8981\u9009\u62E9\u6570\u636E\u8868\u548C\u7B5B\u9009\u6761\u4EF6\u5373\u53EF\u3002\u5220\u9664\u8282\u70B9\u7684\u7ED3\u679C\u4F1A\u8FD4\u56DE\u5220\u9664\u6210\u529F\u6570\u636E\u7684\u884C\u6570\uFF0C\u53EA\u5728\u6267\u884C\u5386\u53F2\u91CC\u53EF\u67E5\u770B\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u53D8\u91CF\u5728\u540E\u7EED\u8282\u70B9\u4F7F\u7528\u3002",paraId:1,tocIndex:0},{value:"\u76EE\u524D\u5220\u9664\u8282\u70B9\u4E0D\u652F\u6301\u9010\u6761\u5220\u9664\uFF0C\u5747\u4E3A\u6279\u91CF\u5220\u9664\uFF0C\u56E0\u6B64\u4E0D\u4F1A\u89E6\u53D1\u6BCF\u6761\u6570\u636E\u5220\u9664\u7684\u5176\u4ED6\u4E8B\u4EF6\u3002",paraId:2},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5220\u9664\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:3,tocIndex:1},{value:"\u9009\u62E9\u8981\u5220\u9664\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:4,tocIndex:3},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:5,tocIndex:4},{value:"\u4F8B\u5982\u5B9A\u65F6\u6E05\u7406\u5DF2\u53D6\u6D88\u7684\u65E0\u6548\u5386\u53F2\u8BA2\u5355\u6570\u636E\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5220\u9664\u8282\u70B9\u6765\u5B9E\u73B0\uFF1A",paraId:6,tocIndex:5},{value:"\u5DE5\u4F5C\u6D41\u5C06\u5B9A\u65F6\u89E6\u53D1\uFF0C\u5E76\u6267\u884C\u5220\u9664\u6240\u6709\u5DF2\u53D6\u6D88\u7684\u65E0\u6548\u5386\u53F2\u8BA2\u5355\u6570\u636E\u3002",paraId:7,tocIndex:5}],Qw={},Jw={title:"HTTP \u8BF7\u6C42",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/request.md",lastUpdated:1732240239e3,description:"\u5F53\u9700\u8981\u4E0E\u53E6\u4E00\u4E2A web \u7CFB\u7EDF\u8FDB\u884C\u4EA4\u4E92\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 HTTP \u8BF7\u6C42\u8282\u70B9\u3002\u8BE5\u8282\u70B9\u5728\u6267\u884C\u65F6\u4F1A\u6839\u636E\u914D\u7F6E\u5411\u5BF9\u5E94\u7684\u5730\u5740\u53D1\u51FA\u4E00\u4E2A HTTP \u8BF7\u6C42\uFF0C\u53EF\u4EE5\u643A\u5E26 JSON \u683C\u5F0F\u7684\u6570\u636E\uFF0C\u5B8C\u6210\u4E0E\u5916\u90E8\u7CFB\u7EDF\u7684\u6570\u636E\u4EA4\u4E92\u3002"},Xw=[{id:"http-\u8BF7\u6C42",depth:1,title:"HTTP \u8BF7\u6C42"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u8BF7\u6C42\u65B9\u6CD5",depth:3,title:"\u8BF7\u6C42\u65B9\u6CD5"},{id:"\u8BF7\u6C42\u5730\u5740",depth:3,title:"\u8BF7\u6C42\u5730\u5740"},{id:"\u8BF7\u6C42\u5934\u914D\u7F6E",depth:3,title:"\u8BF7\u6C42\u5934\u914D\u7F6E"},{id:"\u8BF7\u6C42\u53C2\u6570",depth:3,title:"\u8BF7\u6C42\u53C2\u6570"},{id:"\u8BF7\u6C42\u4F53",depth:3,title:"\u8BF7\u6C42\u4F53"},{id:"\u8D85\u65F6\u8BBE\u7F6E",depth:3,title:"\u8D85\u65F6\u8BBE\u7F6E"},{id:"\u5FFD\u7565\u5931\u8D25",depth:3,title:"\u5FFD\u7565\u5931\u8D25"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],e3=[{value:"\u5F53\u9700\u8981\u4E0E\u53E6\u4E00\u4E2A web \u7CFB\u7EDF\u8FDB\u884C\u4EA4\u4E92\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 HTTP \u8BF7\u6C42\u8282\u70B9\u3002\u8BE5\u8282\u70B9\u5728\u6267\u884C\u65F6\u4F1A\u6839\u636E\u914D\u7F6E\u5411\u5BF9\u5E94\u7684\u5730\u5740\u53D1\u51FA\u4E00\u4E2A HTTP \u8BF7\u6C42\uFF0C\u53EF\u4EE5\u643A\u5E26 JSON \u683C\u5F0F\u7684\u6570\u636E\uFF0C\u5B8C\u6210\u4E0E\u5916\u90E8\u7CFB\u7EDF\u7684\u6570\u636E\u4EA4\u4E92\u3002",paraId:0,tocIndex:0},{value:"\u5982\u679C\u5BF9 Postman \u8FD9\u7C7B\u8BF7\u6C42\u53D1\u9001\u5DE5\u5177\u6BD4\u8F83\u719F\u6089\uFF0C\u90A3\u4E48\u53EF\u4EE5\u5F88\u5FEB\u638C\u63E1 HTTP \u8BF7\u6C42\u8282\u70B9\u7684\u7528\u6CD5\u3002\u4E0E\u8FD9\u4E9B\u5DE5\u5177\u4E0D\u540C\u7684\u662F\uFF0CHTTP \u8BF7\u6C42\u8282\u70B9\u4E2D\u5404\u9879\u53C2\u6570\u5747\u53EF\u4F7F\u7528\u5F53\u524D\u6D41\u7A0B\u4E2D\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\uFF0C\u53EF\u4EE5\u4E0E\u5F53\u524D\u7CFB\u7EDF\u7684\u4E1A\u52A1\u5904\u7406\u6709\u673A\u7ED3\u5408\u8D77\u6765\u3002",paraId:1,tocIndex:0},{value:"HTTP \u8BF7\u6C42\u8282\u70B9\u6682\u4E0D\u652F\u6301\u8BF7\u6C42\u54CD\u5E94\u7684\u7ED3\u679C\u8FDB\u884C\u4F7F\u7528\uFF0C\u53EF\u80FD\u4F1A\u5728\u672A\u6765\u652F\u6301\u3002",paraId:2},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201CHTTP \u8BF7\u6C42\u201D\u8282\u70B9\uFF1A",paraId:3,tocIndex:1},{value:"\u53EF\u9009\u7684 HTTP \u8BF7\u6C42\u65B9\u6CD5\uFF1A",paraId:4,tocIndex:3},{value:"GET",paraId:4,tocIndex:3},{value:"\u3001",paraId:4,tocIndex:3},{value:"POST",paraId:4,tocIndex:3},{value:"\u3001",paraId:4,tocIndex:3},{value:"PUT",paraId:4,tocIndex:3},{value:"\u3001",paraId:4,tocIndex:3},{value:"PATCH",paraId:4,tocIndex:3},{value:" \u548C ",paraId:4,tocIndex:3},{value:"DELETE",paraId:4,tocIndex:3},{value:"\u3002",paraId:4,tocIndex:3},{value:"HTTP \u670D\u52A1\u7684 URL\uFF0C\u9700\u8981\u5305\u542B\u534F\u8BAE\u90E8\u5206\uFF08",paraId:5,tocIndex:4},{value:"http://",paraId:5,tocIndex:4},{value:" \u6216 ",paraId:5,tocIndex:4},{value:"https://",paraId:5,tocIndex:4},{value:"\uFF09\uFF0C\u63A8\u8350\u4F7F\u7528 ",paraId:5,tocIndex:4},{value:"https://",paraId:5,tocIndex:4},{value:"\u3002",paraId:5,tocIndex:4},{value:"\u8BF7\u6C42 Header \u90E8\u5206\u7684\u952E\u503C\u5BF9\uFF0C\u76F8\u5173\u503C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\u3002",paraId:6,tocIndex:5},{value:"\u5BF9 ",paraId:7},{value:"Content-Type",paraId:7},{value:" \u8BF7\u6C42\u5934\uFF0C\u76EE\u524D\u4EC5\u652F\u6301 ",paraId:7},{value:"application/json",paraId:7},{value:" \u7684\u683C\u5F0F\uFF0C\u4E14\u5DF2\u9ED8\u8BA4\u5185\u7F6E\uFF0C\u65E0\u9700\u586B\u5199\uFF0C\u8986\u76D6\u65E0\u6548\u3002",paraId:7},{value:"\u8BF7\u6C42 query \u90E8\u5206\u7684\u952E\u503C\u5BF9\uFF0C\u76F8\u5173\u503C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\u3002",paraId:8,tocIndex:6},{value:"\u8BF7\u6C42\u7684 Body \u90E8\u5206\uFF0C\u76EE\u524D\u4EC5\u652F\u6301\u6807\u51C6\u7684 JSON \u683C\u5F0F\uFF0C\u53EF\u4EE5\u901A\u8FC7\u6587\u672C\u7F16\u8F91\u6846\u53F3\u4E0A\u89D2\u7684\u53D8\u91CF\u6309\u94AE\u63D2\u5165\u6D41\u7A0B\u4E0A\u4E0B\u6587\u4E2D\u7684\u53D8\u91CF\u3002",paraId:9,tocIndex:7},{value:"\u6CE8\uFF1A\u53D8\u91CF\u5FC5\u987B\u5728 JSON \u7684\u5B57\u7B26\u4E32\u4E2D\u4F7F\u7528\uFF0C\u4F8B\u5982\uFF1A",paraId:10},{value:'"a": "{{$context.data.a}}"',paraId:10},{value:"\u3002",paraId:10},{value:"\u5F53\u8BF7\u6C42\u957F\u65F6\u95F4\u672A\u54CD\u5E94\u65F6\uFF0C\u901A\u8FC7\u8D85\u65F6\u8BBE\u7F6E\u53D6\u6D88\u8BE5\u8BF7\u6C42\u7684\u6267\u884C\u3002\u8BF7\u6C42\u8D85\u65F6\u540E\u4F1A\u4EE5\u5931\u8D25\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\u5F53\u524D\u6D41\u7A0B\u3002",paraId:11,tocIndex:8},{value:"\u8BF7\u6C42\u8282\u70B9\u4F1A\u4EE5\u6807\u51C6 HTTP \u72B6\u6001\u7801\u7684 ",paraId:12,tocIndex:9},{value:"200",paraId:12,tocIndex:9},{value:"~",paraId:12,tocIndex:9},{value:"299",paraId:12,tocIndex:9},{value:" \u4E4B\u95F4\uFF08\u542B\uFF09\u7684\u72B6\u6001\u8BA4\u4E3A\u662F\u6210\u529F\u72B6\u6001\uFF0C\u5176\u4ED6\u7684\u5747\u8BA4\u4E3A\u662F\u5931\u8D25\u3002\u5982\u52FE\u9009\u4E86\u201C\u5FFD\u7565\u5931\u8D25\u7684\u8BF7\u6C42\u5E76\u7EE7\u7EED\u5DE5\u4F5C\u6D41\u201D\u9009\u9879\uFF0C\u5219\u5F53\u8BF7\u6C42\u5931\u8D25\u540E\u4ECD\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u7684\u5176\u4ED6\u6D41\u7A0B\u8282\u70B9\u3002",paraId:12,tocIndex:9},{value:"\u4F8B\u5982\u6211\u4EEC\u53EF\u4EE5\u4F7F\u7528\u8BF7\u6C42\u8282\u70B9\u6765\u5BF9\u63A5\u4E91\u5E73\u53F0\u53D1\u9001\u901A\u77E5\u77ED\u4FE1\uFF0C\u4EE5\u963F\u91CC\u4E91\u53D1\u9001\u77ED\u4FE1\u63A5\u53E3\u4E3A\u4F8B\u914D\u7F6E\u5982\u4E0B\uFF08\u76F8\u5173\u53C2\u6570\u9700\u81EA\u884C\u67E5\u9605\u6587\u6863\u9002\u914D\uFF09\uFF1A",paraId:13,tocIndex:10},{value:"\u5DE5\u4F5C\u6D41\u89E6\u53D1\u8BE5\u8282\u70B9\u6267\u884C\u65F6\u4F1A\u4EE5\u914D\u7F6E\u7684\u5185\u5BB9\u8C03\u7528\u963F\u91CC\u4E91\u7684\u77ED\u4FE1\u63A5\u53E3\uFF0C\u8BF7\u6C42\u6210\u529F\u7684\u8BDD\u5C06\u901A\u8FC7\u77ED\u4FE1\u4E91\u670D\u52A1\u53D1\u9001\u4E00\u6761\u77ED\u4FE1\u3002",paraId:14,tocIndex:10}],a3={},t3={title:"\u8868\u5355\u4E8B\u4EF6",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/triggers/form.md",lastUpdated:1732240239e3,description:"\u8868\u5355\u63D0\u4EA4\u4E8B\u4EF6\u9488\u5BF9 UI \u754C\u9762\u4E2D\u65B0\u589E\u548C\u66F4\u65B0\u6570\u636E\u7684\u8868\u5355\u64CD\u4F5C\u6309\u94AE\uFF0C\u5728\u8868\u5355\u4E2D\u70B9\u51FB\u5BF9\u5E94\u5DF2\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\u7684\u6309\u94AE\u540E\uFF0C\u5C06\u89E6\u53D1\u5BF9\u5E94\u7ED1\u5B9A\u7684\u5DE5\u4F5C\u6D41\u6267\u884C\u3002\u4F8B\u5982\u5BF9\u67D0\u4E2A\u6D3B\u52A8\u53D1\u8D77\u62A5\u540D\u7684\u8868\u5355\uFF0C\u62A5\u540D\uFF08\u8868\u5355\u63D0\u4EA4\uFF09\u6210\u529F\u540E\u89E6\u53D1\u76F8\u5E94\u7684\u6D41\u7A0B\u5904\u7406\u3002"},n3=[{id:"\u8868\u5355\u4E8B\u4EF6",depth:1,title:"\u8868\u5355\u4E8B\u4EF6"},{id:"\u57FA\u672C\u4F7F\u7528",depth:2,title:"\u57FA\u672C\u4F7F\u7528"},{id:"\u76F8\u5173\u63D0\u793A",depth:2,title:"\u76F8\u5173\u63D0\u793A"},{id:"\u4E0E\u6570\u636E\u8868\u4E8B\u4EF6\u7684\u533A\u522B",depth:3,title:"\u4E0E\u6570\u636E\u8868\u4E8B\u4EF6\u7684\u533A\u522B"},{id:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u6309\u94AE\u7684\u533A\u522B",depth:3,title:"\u201C\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u201D\u6309\u94AE\u7684\u533A\u522B"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],o3=[{value:"\u8868\u5355\u63D0\u4EA4\u4E8B\u4EF6\u9488\u5BF9 UI \u754C\u9762\u4E2D\u65B0\u589E\u548C\u66F4\u65B0\u6570\u636E\u7684\u8868\u5355\u64CD\u4F5C\u6309\u94AE\uFF0C\u5728\u8868\u5355\u4E2D\u70B9\u51FB\u5BF9\u5E94\u5DF2\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\u7684\u6309\u94AE\u540E\uFF0C\u5C06\u89E6\u53D1\u5BF9\u5E94\u7ED1\u5B9A\u7684\u5DE5\u4F5C\u6D41\u6267\u884C\u3002\u4F8B\u5982\u5BF9\u67D0\u4E2A\u6D3B\u52A8\u53D1\u8D77\u62A5\u540D\u7684\u8868\u5355\uFF0C\u62A5\u540D\uFF08\u8868\u5355\u63D0\u4EA4\uFF09\u6210\u529F\u540E\u89E6\u53D1\u76F8\u5E94\u7684\u6D41\u7A0B\u5904\u7406\u3002",paraId:0,tocIndex:0},{value:"\u9488\u5BF9\u201C\u63D0\u4EA4\u201D\u6309\u94AE\uFF08\u542B\u201C\u4FDD\u5B58\u6570\u636E\u201D\u6309\u94AE\uFF09\u914D\u7F6E\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5C06\u5728\u7528\u6237\u63D0\u4EA4\u5BF9\u5E94\u8868\u5355\u4E14\u6570\u636E\u64CD\u4F5C\u5B8C\u6210\u540E\u88AB\u89E6\u53D1\u3002",paraId:1,tocIndex:1},{value:` +`,paraId:16,tocIndex:2},{value:"Once registered, the new trigger type will appear in the workflow configuration interface.",paraId:17,tocIndex:2},{value:"Ensure that the trigger type identifier registered on the client side matches the one on the server side to avoid errors.",paraId:18},{value:"For further details on defining trigger types, refer to the ",paraId:19},{value:"Workflow API Reference",paraId:20},{value:" section.",paraId:19}],xw={},gw={title:"Collection event",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/collection.md",lastUpdated:173254844e4,description:"Trigger types of collection events will listen for adding, deleting and updating events of the collection. When an action on the record of collection occurs and meets the configured conditions, the corresponding workflow will be triggered. For example, reducing the inventory of goods after adding a new order, waiting for manual review after adding a comment, etc."},bw=[{id:"collection-event",depth:1,title:"Collection event"},{id:"basic-usage",depth:2,title:"Basic Usage"},{id:"related-tips",depth:2,title:"Related Tips"},{id:"batch-data-action-triggering-is-not-supported",depth:3,title:"Batch data action triggering is not supported"},{id:"data-operations-out-of-nocobase-application-will-not-trigger",depth:3,title:"Data operations out of NocoBase application will not trigger"},{id:"external-data-sources",depth:3,title:"External Data Sources"},{id:"example",depth:2,title:"Example"}],yw=[{value:"Trigger types of collection events will listen for adding, deleting and updating events of the collection. When an action on the record of collection occurs and meets the configured conditions, the corresponding workflow will be triggered. For example, reducing the inventory of goods after adding a new order, waiting for manual review after adding a comment, etc.",paraId:0,tocIndex:0},{value:"There are several types of changes to the collection:",paraId:1,tocIndex:1},{value:"After a record added.",paraId:2,tocIndex:1},{value:"After a record updated.",paraId:2,tocIndex:1},{value:"After a record added or updated.",paraId:2,tocIndex:1},{value:"After a record deleted.",paraId:2,tocIndex:1},{value:"You can choose the timing of the trigger according to the needs of the business. When change type selected that includes updating a record, you can also limit the fields that have changed. Only when the selected fields change will the trigger condition be satisfied. If none are selected, it means that all fields changing will trigger.",paraId:3,tocIndex:1},{value:"In more detail, conditions can be configured for each field of the triggered record. It only triggers when the conditions of the fields are met.",paraId:4,tocIndex:1},{value:"After the collection event is triggered, the source record of the event will be injected into the execution plan as trigger context data for subsequent nodes to use as variables. However, when subsequent nodes need to use the association fields of this record, preloading of the association fields needs to be configured first. The selected association fields will be injected into the context after triggering and can be selected and used by path.",paraId:5,tocIndex:1},{value:"Collection events do not support triggering on batch data action for now. For example, when adding article record and simultaneously adding multiple tag records of the article (many-to-many relationship data), only the workflow for adding the article will be triggered, and the workflows for adding multiple tags simultaneously will not be triggered. For associating or adding of many-to-many association records, the workflow of the intermediate collection will not be triggered either.",paraId:6,tocIndex:3},{value:"Data actions on collections through HTTP API calls to the application interface can also trigger corresponding events. However, if the data changes are not made through the NodoBase application but directly through database operations, the corresponding events will not be triggered. For example, the triggers in the database itself will not be associated with workflows in the application.",paraId:7,tocIndex:4},{value:"Also, using the SQL node to operate on the database is equivalent to directly operating on the database and will not trigger collection events.",paraId:8,tocIndex:4},{value:"from ",paraId:9,tocIndex:5},{value:"0.20",paraId:9,tocIndex:5},{value:", workflow started to support external data sources. If an external data source plugin is used and the collection event is configured for an external data source, as long as the data operation on this data source is completed within the application (user addition, update, and workflow data operations, etc.), the corresponding collection event can be triggered. However, if the data change is made through other systems or directly within the external database, the collection event will not be triggered.",paraId:9,tocIndex:5},{value:"Take an example scenario of calculating the total price and deducting inventory after adding an order.",paraId:10,tocIndex:6},{value:"First, we create the product collection and the order collection, and the data model is as follows:",paraId:11,tocIndex:6},{value:"Field Name",paraId:12,tocIndex:6},{value:"Field Type",paraId:12,tocIndex:6},{value:"Product Name",paraId:12,tocIndex:6},{value:"Single Line Text",paraId:12,tocIndex:6},{value:"Price",paraId:12,tocIndex:6},{value:"Number",paraId:12,tocIndex:6},{value:"Inventory",paraId:12,tocIndex:6},{value:"Integer",paraId:12,tocIndex:6},{value:"Field Name",paraId:13,tocIndex:6},{value:"Field Type",paraId:13,tocIndex:6},{value:"Order Number",paraId:13,tocIndex:6},{value:"Auto Number",paraId:13,tocIndex:6},{value:"Order Product",paraId:13,tocIndex:6},{value:"Many-to-One (Product)",paraId:13,tocIndex:6},{value:"Order Total Price",paraId:13,tocIndex:6},{value:"Number",paraId:13,tocIndex:6},{value:"And add basic product data:",paraId:14,tocIndex:6},{value:"Product Name",paraId:15,tocIndex:6},{value:"Price",paraId:15,tocIndex:6},{value:"Inventory",paraId:15,tocIndex:6},{value:"iPhone 14 Pro",paraId:15,tocIndex:6},{value:"7999",paraId:15,tocIndex:6},{value:"10",paraId:15,tocIndex:6},{value:"iPhone 13 Pro",paraId:15,tocIndex:6},{value:"5999",paraId:15,tocIndex:6},{value:"0",paraId:15,tocIndex:6},{value:"Then create a workflow based on the collection event of the order:",paraId:16,tocIndex:6},{value:"Several configuration items:",paraId:17,tocIndex:6},{value:'Data collection: Select the "Order" table.',paraId:18,tocIndex:6},{value:'Trigger on: Select "After Adding Data" trigger.',paraId:18,tocIndex:6},{value:"Condition: Leave it blank.",paraId:18,tocIndex:6},{value:'Preload associations: Check "Product".',paraId:18,tocIndex:6},{value:"Then configure other nodes based on the logic of the workflow, check if the product inventory is greater than 0, and deduct inventory if it is, otherwise delete the order as it is invalid:",paraId:19,tocIndex:6},{value:"The configuration of the nodes will be detailed in the documentation of the specific types.",paraId:20,tocIndex:6},{value:'Enable the workflow and test by adding an order through the UI. After placing an order for "iPhone 14 Pro", the inventory of the corresponding product will be reduced to 9. However, if an order is placed for "iPhone 13 Pro", the order will be deleted due to insufficient inventory.',paraId:21,tocIndex:6}],ww={},kw={title:"Pre-action trigger",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/pre-action.md",lastUpdated:173254844e4,description:'When setting up a workflow, select "Pre-action event" as the event type:'},Sw=[{id:"pre-action-trigger",depth:1,title:"Pre-action trigger"},{id:"creating-a-trigger",depth:2,title:"Creating a Trigger"},{id:"selecting-the-data-table",depth:2,title:"Selecting the Data Table"},{id:"intercept-mode",depth:2,title:"Intercept Mode"},{id:"related-content",depth:2,title:"Related content"}],Uw=[{value:'When setting up a workflow, select "Pre-action event" as the event type:',paraId:0,tocIndex:1},{value:"The first step in configuring a trigger for intercepting workflows is to select the data table associated with the action:",paraId:1,tocIndex:2},{value:"Next, choose the intercept mode. You can either intercept only the action buttons linked to this workflow or intercept all selected actions for the data table (regardless of the form the action originates from and without needing to bind the corresponding workflow):",paraId:2,tocIndex:2},{value:'Currently, the supported action types include "Create," "Update," and "Delete." You can select multiple action types simultaneously.',paraId:3,tocIndex:3},{value:"Except for trigger configuration, there are also some related contents about pre-action trigger that can be further understood through the ",paraId:4,tocIndex:4},{value:"plugin documentation",paraId:5,tocIndex:4},{value:".",paraId:4,tocIndex:4}],Pw={},Tw={title:"\u56FE\u8868\u533A\u5757",toc:"menu",filename:"docs/en-US/manual/data-visualization/chart-block.md",lastUpdated:173254844e4,description:"\u56FE\u8868\u533A\u5757\u662F\u4E00\u4E2A\u7528\u4E8E\u7EC4\u7EC7\u591A\u4E2A\u56FE\u8868\u7684\u9762\u677F\u3002"},Cw=[{id:"\u56FE\u8868\u533A\u5757",depth:1,title:"\u56FE\u8868\u533A\u5757"},{id:"\u6DFB\u52A0",depth:2,title:"\u6DFB\u52A0"},{id:"\u914D\u7F6E",depth:2,title:"\u914D\u7F6E"}],Aw=[{value:"\u56FE\u8868\u533A\u5757\u662F\u4E00\u4E2A\u7528\u4E8E\u7EC4\u7EC7\u591A\u4E2A\u56FE\u8868\u7684\u9762\u677F\u3002",paraId:0,tocIndex:0},{value:"\u70B9\u51FB\u201C\u6DFB\u52A0\u533A\u5757\u201D (Add block) - \u201C\u56FE\u8868\u201D (Charts)\uFF0C\u53EF\u4EE5\u521B\u5EFA\u53EF\u4EE5\u7A7A\u767D\u7684\u56FE\u8868\u533A\u5757\u3002",paraId:1,tocIndex:1},{value:"\u5728\u56FE\u8868\u533A\u5757\u4E2D\u70B9\u51FB\u201C\u6DFB\u52A0\u533A\u5757\u201D (Add block) - \u201C\u56FE\u8868\u201D (Chart)\uFF0C\u9009\u62E9\u5BF9\u5E94\u7684\u6570\u636E\u8868 (Collection), \u53EF\u4EE5\u521B\u5EFA\u548C\u914D\u7F6E\u56FE\u8868\u3002\u6709\u67E5\u770B\u6743\u9650\u7684\u6570\u636E\u8868\u624D\u53EF\u4EE5\u7528\u4E8E\u914D\u7F6E\u56FE\u8868\uFF0C\u5426\u5219\u5C06\u4F1A\u5728\u9009\u9879\u4E2D\u88AB\u9690\u85CF\u3002",paraId:2,tocIndex:1},{value:"\u56FE\u8868\u533A\u5757\u4E2D\u7684\u56FE\u8868\u53EF\u4EE5\u50CF\u666E\u901A\u533A\u5757\u4E00\u6837\uFF0C\u5728\u56FE\u8868\u533A\u5757\u4E2D\uFF0C\u81EA\u7531\u62D6\u62FD\u548C\u7EC4\u7EC7\u3002",paraId:3,tocIndex:2},{value:"\u70B9\u51FB\u201C\u914D\u7F6E\u201D (Configure) \u6309\u94AE\uFF0C\u53EF\u4EE5\u5BF9\u5F53\u524D\u56FE\u8868\u8FDB\u884C\u4FEE\u6539\u3002",paraId:3,tocIndex:2},{value:"\u70B9\u51FB\u201C\u590D\u5236\u201D (Duplicate) \u6309\u94AE\uFF0C\u53EF\u4EE5\u5FEB\u901F\u590D\u5236\u5F53\u524D\u56FE\u8868\u3002",paraId:3,tocIndex:2},{value:"\u53EF\u4EE5\u201C\u7F16\u8F91\u533A\u5757\u6807\u9898\u201D (Edit block title)\uFF0C\u7ED9\u5F53\u524D\u56FE\u8868\u6DFB\u52A0\u6807\u9898\u8BF4\u660E\u3002",paraId:3,tocIndex:2}],qw={},Ew={title:"\u754C\u9762\u8BBE\u8BA1\u5668",toc:"menu",filename:"docs/en-US/plugins/client/user/ui-designer/index.md",lastUpdated:173254844e4,description:"\u5F53\u6FC0\u6D3B\u754C\u9762\u914D\u7F6E\u6309\u94AE\uFF0C\u8FDB\u5165 UI \u914D\u7F6E\u72B6\u6001"},Dw=[{id:"\u754C\u9762\u8BBE\u8BA1\u5668",depth:1,title:"\u754C\u9762\u8BBE\u8BA1\u5668"}],Ow=[{value:"\u5F53\u6FC0\u6D3B\u754C\u9762\u914D\u7F6E\u6309\u94AE\uFF0C\u8FDB\u5165 UI \u914D\u7F6E\u72B6\u6001",paraId:0,tocIndex:0},{value:"\u754C\u9762\u8BBE\u8BA1\u5668\u7684\u7EC4\u6210\u90E8\u5206",paraId:1,tocIndex:0},{value:"\u83DC\u5355",paraId:2,tocIndex:0},{value:"\u9875\u9762",paraId:3,tocIndex:0},{value:"\u533A\u5757",paraId:4,tocIndex:0},{value:"\u65E0\u5B57\u6BB5\u548C\u64CD\u4F5C\u7684\u533A\u5757",paraId:5,tocIndex:0},{value:"\u5E26\u5B57\u6BB5\u548C\u64CD\u4F5C\u7684\u533A\u5757",paraId:5,tocIndex:0},{value:"\u5B57\u6BB5\uFF08\u9644\u5C5E\u4E8E\u533A\u5757\uFF09",paraId:6,tocIndex:0},{value:"\u64CD\u4F5C\uFF08\u9644\u5C5E\u4E8E\u533A\u5757\uFF09",paraId:7,tocIndex:0}],Rw={},Mw={title:"\u4E2A\u4EBA\u4E2D\u5FC3",toc:"menu",filename:"docs/en-US/plugins/client/user/user-center/index.md",lastUpdated:173254844e4,description:"\u4E2A\u4EBA\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u7CFB\u5217\u7BA1\u7406\u548C\u7CFB\u7EDF\u7EF4\u62A4\u529F\u80FD\uFF0C\u5305\u62EC\u67E5\u770B\u7CFB\u7EDF\u7248\u672C\u53F7\u3001\u67E5\u770B\u548C\u7F16\u8F91\u4E2A\u4EBA\u8D44\u6599\u7B49\u5FEB\u6377\u64CD\u4F5C\u3002\u5F53\u7CFB\u7EDF\u6743\u9650\u5F00\u542F\u4E86\u76F8\u5E94\u6743\u9650\u65F6\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u8FD8\u4F1A\u63D0\u4F9B\u6E05\u9664\u7F13\u5B58\u548C\u91CD\u542F\u5E94\u7528\u7684\u6309\u94AE\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u5FEB\u6377\u64CD\u4F5C\u53EF\u7531\u63D2\u4EF6\u6269\u5C55\u63D0\u4F9B\u3002"},Lw=[{id:"\u4E2A\u4EBA\u4E2D\u5FC3",depth:1,title:"\u4E2A\u4EBA\u4E2D\u5FC3"}],Nw=[{value:"\u4E2A\u4EBA\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u7CFB\u5217\u7BA1\u7406\u548C\u7CFB\u7EDF\u7EF4\u62A4\u529F\u80FD\uFF0C\u5305\u62EC\u67E5\u770B\u7CFB\u7EDF\u7248\u672C\u53F7\u3001\u67E5\u770B\u548C\u7F16\u8F91\u4E2A\u4EBA\u8D44\u6599\u7B49\u5FEB\u6377\u64CD\u4F5C\u3002\u5F53\u7CFB\u7EDF\u6743\u9650\u5F00\u542F\u4E86\u76F8\u5E94\u6743\u9650\u65F6\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u8FD8\u4F1A\u63D0\u4F9B\u6E05\u9664\u7F13\u5B58\u548C\u91CD\u542F\u5E94\u7528\u7684\u6309\u94AE\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u5FEB\u6377\u64CD\u4F5C\u53EF\u7531\u63D2\u4EF6\u6269\u5C55\u63D0\u4F9B\u3002",paraId:0,tocIndex:0},{value:"\u76EE\u524D\u63D0\u4F9B\u7684\u4E2A\u4EBA\u4E2D\u5FC3\u5FEB\u6377\u64CD\u4F5C\uFF1A",paraId:1,tocIndex:0},{value:"Edit profile\uFF1A\u7F16\u8F91\u7528\u6237\u4E2A\u4EBA\u4FE1\u606F\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Change password\uFF1A\u4FEE\u6539\u5BC6\u7801\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Switch role\uFF1A\u5207\u6362\u89D2\u8272\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Sign out\uFF1A\u767B\u51FA\u7CFB\u7EDF\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Theme \uFF1A\u7528\u4E8E\u5207\u6362\u4E3B\u9898\uFF0C\u7531\u4E3B\u9898\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Clear cache: \u6E05\u9664\u7F13\u5B58\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B\uFF08\u6709\u6743\u9650\u63A7\u5236\uFF09",paraId:2,tocIndex:0},{value:"Restart application\uFF1A\u91CD\u542F\u5E94\u7528\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B\uFF08\u6709\u6743\u9650\u63A7\u5236\uFF09",paraId:2,tocIndex:0}],zw={},Fw={title:"\u6570\u636E\u8868\u7BA1\u7406",toc:"menu",filename:"docs/en-US/plugins/collection-manager/user/index.md",lastUpdated:173254844e4,description:"\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u53CA\u62D6\u62FD\u6392\u5E8F"},Bw=[{id:"\u6570\u636E\u8868\u7BA1\u7406",depth:1,title:"\u6570\u636E\u8868\u7BA1\u7406"},{id:"\u7BA1\u7406\u4E2D\u5FC3",depth:2,title:"\u7BA1\u7406\u4E2D\u5FC3"},{id:"\u6570\u636E\u8868\u7BA1\u7406-1",depth:3,title:"\u6570\u636E\u8868\u7BA1\u7406"},{id:"\u6570\u636E\u8868\u5B57\u6BB5\u7BA1\u7406",depth:3,title:"\u6570\u636E\u8868\u5B57\u6BB5\u7BA1\u7406"},{id:"\u6570\u636E\u8868\u5206\u7C7B\u7BA1\u7406",depth:3,title:"\u6570\u636E\u8868\u5206\u7C7B\u7BA1\u7406"},{id:"\u6570\u636E\u8868\u7EE7\u627F",depth:3,title:"\u6570\u636E\u8868\u7EE7\u627F"},{id:"\u5355\u7EE7\u627F",depth:4,title:"\u5355\u7EE7\u627F"},{id:"\u591A\u7EE7\u627F",depth:4,title:"\u591A\u7EE7\u627F"},{id:"\u5B57\u6BB5\u91CD\u5199",depth:4,title:"\u5B57\u6BB5\u91CD\u5199"},{id:"\u5173\u7CFB\u5B57\u6BB5\u91CD\u5199",depth:5,title:"\u5173\u7CFB\u5B57\u6BB5\u91CD\u5199"},{id:"\u53EF\u9009\u9879\u7C7B\u578B\u5B57\u6BB5\u7684\u91CD\u5199",depth:5,title:"\u53EF\u9009\u9879\u7C7B\u578B\u5B57\u6BB5\u7684\u91CD\u5199"},{id:"\u5173\u7CFB\u5916\u952E\u5171\u4EAB",depth:4,title:"\u5173\u7CFB\u5916\u952E\u5171\u4EAB"},{id:"\u5728-ui-\u4E2D\u5E94\u7528",depth:2,title:"\u5728 UI \u4E2D\u5E94\u7528"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u5B57\u6BB5",depth:3,title:"\u5B57\u6BB5"},{id:"\u5173\u7CFB",depth:3,title:"\u5173\u7CFB"},{id:"\u7EE7\u627F",depth:3,title:"\u7EE7\u627F"},{id:"\u914D\u7F6E\u5B57\u6BB5\u5305\u62EC\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5",depth:4,title:"\u914D\u7F6E\u5B57\u6BB5\u5305\u62EC\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5"},{id:"\u6DFB\u52A0\u64CD\u4F5C\u53EF\u4EE5\u542F\u7528\u5B50\u8868",depth:4,title:"\u6DFB\u52A0\u64CD\u4F5C\u53EF\u4EE5\u542F\u7528\u5B50\u8868"},{id:"\u7EE7\u627F\u8868\u6570\u636E\u7684\u67E5\u770B\u4E0E\u7F16\u8F91\u6309-__collection-\u663E\u793A",depth:4,title:"\u7EE7\u627F\u8868\u6570\u636E\u7684\u67E5\u770B\u4E0E\u7F16\u8F91\uFF08\u6309 __collection \u663E\u793A\uFF09"},{id:"\u5173\u7CFB\u6570\u636E\u7684\u5F39\u7A97\u6309-__collection-\u663E\u793A",depth:4,title:"\u5173\u7CFB\u6570\u636E\u7684\u5F39\u7A97\uFF08\u6309 __collection \u663E\u793A\uFF09"},{id:"\u7EE7\u627F\u4E0B\u7684\u7B5B\u9009\u8054\u52A8",depth:4,title:"\u7EE7\u627F\u4E0B\u7684\u7B5B\u9009\u8054\u52A8"}],jw=[{value:"\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u53CA\u62D6\u62FD\u6392\u5E8F",paraId:0,tocIndex:2},{value:"\u6570\u636E\u8868\u5B57\u6BB5\u7684\u589E\u5220\u6539",paraId:1,tocIndex:3},{value:"\u53EF\u4EE5\u5C06\u6570\u636E\u8868\u6309\u7167\u4E0D\u540C\u7684\u6807\u51C6\u8FDB\u884C\u7EC4\u7EC7\uFF0C\u4F7F\u6570\u636E\u7684\u7ED3\u6784\u66F4\u52A0\u6E05\u6670\u964D\u4F4E\u6570\u636E\u7BA1\u7406\u7684\u590D\u6742\u6027",paraId:2,tocIndex:4},{value:"\u6570\u636E\u8868\u5206\u7C7B\u7684\u589E\u5220\u6539\u53CA\u6392\u5E8F",paraId:3,tocIndex:4},{value:"\u6570\u636E\u8868\u7EE7\u627F\u662F PostgreSQL \u6570\u636E\u5E93\u72EC\u6709\u7684\u529F\u80FD\uFF08\u9700\u8981\u8FDE\u63A5 PostgreSQL \uFF09\uFF0C\u5B83\u5141\u8BB8\u5728\u4E3B\u8868\u7684\u57FA\u7840\u4E0A\u521B\u5EFA\u5B50\u8868\uFF0C\u5B50\u8868\u7EE7\u627F\u4E86\u4E3B\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u5B9A\u4E49\u548C\u7D22\u5F15\u3002\u8FD9\u4E2A\u7279\u6027\u4E3B\u8981\u7528\u4E8E\u7BA1\u7406\u5927\u91CF\u6570\u636E\uFF0C\u5B9E\u73B0\u6570\u636E\u5206\u533A\u548C\u6027\u80FD\u4F18\u5316\u3002\u6BCF\u4E2A\u5B50\u8868\u53EF\u4EE5\u5B58\u50A8\u7279\u5B9A\u6761\u4EF6\u4E0B\u7684\u6570\u636E\uFF0C\u4F8B\u5982\u6309\u65F6\u95F4\u5206\u5272\u6570\u636E\uFF0C\u4ECE\u800C\u51CF\u5C11\u67E5\u8BE2\u65F6\u7684\u6570\u636E\u626B\u63CF\u91CF\uFF0C\u63D0\u9AD8\u67E5\u8BE2\u6027\u80FD\u3002\u6B64\u5916\uFF0C\u4E3B\u8868\u548C\u5B50\u8868\u7684\u67E5\u8BE2\u900F\u660E\u5316\uFF0C\u7528\u6237\u53EF\u4EE5\u50CF\u64CD\u4F5C\u5355\u4E2A\u8868\u4E00\u6837\u67E5\u8BE2\u6574\u4E2A\u7EE7\u627F\u8868\u96C6\u5408\uFF0C\u7B80\u5316\u4E86\u6570\u636E\u64CD\u4F5C\u548C\u67E5\u8BE2\u7684\u590D\u6742\u6027\uFF0C\u4F7F\u6570\u636E\u5E93\u66F4\u9AD8\u6548\u5730\u5904\u7406\u5927\u89C4\u6A21\u6570\u636E\u3002",paraId:4,tocIndex:5},{value:"\u5728\u5355\u7EE7\u627F\u6A21\u5F0F\u4E2D\uFF0C\u4E00\u4E2A\u8868\u53EF\u4EE5\u7EE7\u627F\u53E6\u4E00\u4E2A\u8868\uFF0C\u5B50\u8868\u7EE7\u627F\u4E86\u7236\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u548C\u7EA6\u675F\u3002\u8FD9\u79CD\u6A21\u5F0F\u7528\u4E8E\u8868\u793A\u5B9E\u4F53\u7684\u5C42\u6B21\u7ED3\u6784\uFF0C\u5141\u8BB8\u5B50\u8868\u5728\u4FDD\u7559\u901A\u7528\u5C5E\u6027\u7684\u540C\u65F6\u6DFB\u52A0\u7279\u5B9A\u5C5E\u6027\u3002",paraId:5,tocIndex:6},{value:'\u5728\u8BA2\u5355\u7CFB\u7EDF\u4E2D\uFF0C\u914D\u7F6E"\u6279\u53D1\u8BA2\u5355\u8868"\u7EE7\u627F\u81EA\u4E3B\u8868 "\u8BA2\u5355"\uFF0C\u7528\u4E8E\u5904\u7406\u6279\u53D1\u8BA2\u5355\uFF0C\u914D\u7F6E\u4E86\u6279\u53D1\u5BA2\u6237\u7279\u6709\u7684\u5B57\u6BB5\uFF0C\u5982\u6279\u53D1\u4EF7\u683C\u3001\u6279\u6B21\u53F7\u7B49\u3002',paraId:6,tocIndex:6},{value:"\u5546\u54C1\u8868\u7684\u7EE7\u627F\u5173\u7CFB\u4E5F\u53EF\u4EE5\u505A\u5982\u4E0B\u68B3\u7406",paraId:7,tocIndex:6},{value:'\u4E3B\u8868 "\u5546\u54C1"\uFF08Products\uFF09\uFF1A\u5305\u542B\u901A\u7528\u5546\u54C1\u4FE1\u606F\uFF0C\u5982\u5546\u54C1 ID\u3001\u540D\u79F0\u3001\u4EF7\u683C\u3001\u5E93\u5B58\u7B49\u3002',paraId:8,tocIndex:6},{value:'\u5B50\u8868 "\u7535\u5B50\u4EA7\u54C1"\uFF08ElectronicsProduct\uFF09\uFF1A\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u5E76\u6DFB\u52A0\u4E86\u7279\u5B9A\u4E8E\u7535\u5B50\u4EA7\u54C1\u7684\u5B57\u6BB5\uFF0C\u5982\u5C4F\u5E55\u5C3A\u5BF8\u3001\u64CD\u4F5C\u7CFB\u7EDF\u7B49\u5B57\u6BB5\u3002',paraId:8,tocIndex:6},{value:'\u5B50\u8868 "\u670D\u88C5\u4EA7\u54C1"\uFF08ApparelProduct\uFF09\uFF1A\u540C\u6837\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u4F46\u5305\u542B\u670D\u88C5\u4EA7\u54C1\u7279\u6709\u7684\u5C5E\u6027\uFF0C\u5982\u5C3A\u5BF8\u3001\u989C\u8272\u3001\u6750\u8D28\u7B49\u5B57\u6BB5\u3002',paraId:8,tocIndex:6},{value:'\u5B50\u8868 "\u98DF\u54C1\u4EA7\u54C1"\uFF08FoodProduct\uFF09\uFF1A\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u7528\u4E8E\u5904\u7406\u98DF\u54C1\u4EA7\u54C1\uFF0C\u5305\u62EC\u4FDD\u8D28\u671F\u3001\u98DF\u54C1\u7C7B\u578B\u7B49\u5B57\u6BB5\u3002',paraId:8,tocIndex:6},{value:'\u5B50\u8868 "\u5BB6\u5177\u4EA7\u54C1"\uFF08FurnitureProduct\uFF09\uFF1A\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u5305\u542B\u5BB6\u5177\u4EA7\u54C1\u7684\u7279\u5B9A\u5C5E\u6027\uFF0C\u5982\u5C3A\u5BF8\u3001\u6750\u6599\u7B49\u5B57\u6BB5\u3002',paraId:8,tocIndex:6},{value:"\u591A\u7EE7\u627F\u5141\u8BB8\u4E00\u4E2A\u8868\u540C\u65F6\u7EE7\u627F\u591A\u4E2A\u7236\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u548C\u7EA6\u675F\u3002\u8FD9\u79CD\u6A21\u5F0F\u7528\u4E8E\u5177\u6709\u591A\u4E2A\u5173\u8054\u7684\u5B9E\u4F53\u5EFA\u6A21\u3002",paraId:9,tocIndex:7},{value:"\u4EE5\u8BA2\u5355\u3001\u8FD0\u5355\u548C\u5546\u54C1\u8FDB\u884C\u6570\u636E\u5EFA\u6A21\u4E3A\u4F8B\uFF0C\u5728\u8FD9\u4E2A\u7CFB\u7EDF\u4E2D\uFF0C\u6709\u4E09\u4E2A\u6838\u5FC3\u5B9E\u4F53\uFF1A\u8BA2\u5355\u3001\u8FD0\u5355\u548C\u5546\u54C1\u3002\u4E00\u4E2A\u8BA2\u5355\u53EF\u4EE5\u5305\u542B\u591A\u4E2A\u5546\u54C1\uFF0C\u4E00\u4E2A\u8BA2\u5355\u53EF\u4EE5\u5BF9\u5E94\u591A\u4E2A\u8FD0\u5355\uFF08\u4F8B\u5982\uFF0C\u90E8\u5206\u5546\u54C1\u8FD0\u9001\u5230\u4E0D\u540C\u5730\u70B9\uFF09\uFF0C\u540C\u65F6\u4E00\u4E2A\u8FD0\u5355\u53EF\u80FD\u6D89\u53CA\u591A\u4E2A\u8BA2\u5355\u3002\u8FD9\u79CD\u591A\u91CD\u5173\u7CFB\u53EF\u4EE5\u4F7F\u7528\u4E00\u4E2A\u5B50\u8868\uFF08\u8054\u63A5\u8868\uFF09\u6765\u5B9E\u73B0\uFF0C\u4E00\u4E2A\u8868\u5177\u6709\u591A\u4E2A\u7236\u8868\uFF08\u591A\u7EE7\u627F\uFF09\u3002",paraId:10,tocIndex:7},{value:'\u7236\u8868 "\u8BA2\u5355"\uFF08Orders\uFF09\uFF1A\u5305\u542B\u8BA2\u5355\u7684\u57FA\u672C\u4FE1\u606F\uFF0C\u5982\u8BA2\u5355 ID\u3002',paraId:11,tocIndex:7},{value:'\u7236\u8868 "\u8FD0\u5355"\uFF08Shipments\uFF09\uFF1A\u5305\u542B\u8FD0\u5355\u53F7\u3001\u8FD0\u8F93\u65B9\u5F0F\u4FE1\u606F\u7B49\u3002',paraId:11,tocIndex:7},{value:'\u7236\u8868 "\u5546\u54C1"\uFF08Products\uFF09\uFF1A\u5305\u542B\u5546\u54C1\u7684\u5C5E\u6027\uFF0C\u5982\u5546\u54C1 ID\u3001\u540D\u79F0\u3001\u4EF7\u683C\u7B49\u3002',paraId:11,tocIndex:7},{value:'\u5B50\u8868"\u8BA2\u5355\u5546\u54C1"\uFF08OrderProduct\uFF09\uFF1A\u7528\u4E8E\u7EE7\u627F\u8BA2\u5355\u548C\u5546\u54C1\u3002\u6BCF\u4E2A\u8BB0\u5F55\u8868\u793A\u4E00\u4E2A\u8BA2\u5355\u4E2D\u7684\u4E00\u4E2A\u5546\u54C1\uFF0C\u540C\u65F6\u8BB0\u5F55\u4E86\u6570\u91CF\u7B49\u4FE1\u606F\u3002',paraId:11,tocIndex:7},{value:'\u5B50\u8868 "\u8BA2\u5355\u8FD0\u5355\u5173\u8054"\uFF08OrderShipment\uFF09\uFF1A\u7528\u4E8E\u7EE7\u627F\u8BA2\u5355\u548C\u8FD0\u5355\u3002\u6BCF\u4E2A\u8BB0\u5F55\u8868\u793A\u4E00\u4E2A\u8BA2\u5355\u4E0E\u4E00\u4E2A\u8FD0\u5355\u7684\u5173\u7CFB\uFF0C\u540C\u65F6\u8BB0\u5F55\u4E86\u76F8\u5173\u4FE1\u606F',paraId:11,tocIndex:7},{value:"\u7EE7\u627F\u5173\u7CFB\u4E2D\u5B50\u8868\u53EF\u91CD\u65B0\u5B9A\u4E49\u6216\u8986\u76D6\u4ECE\u7236\u8868\u7EE7\u627F\u7684\u5B57\u6BB5\uFF0C\u81EA\u5B9A\u4E49\u5B57\u6BB5\u5C5E\u6027\u4EE5\u9002\u5E94\u7279\u5B9A\u9700\u6C42",paraId:12,tocIndex:8},{value:`\u5982 A \u591A\u5BF9\u591A B\uFF0CA1 \u7EE7\u627F A\uFF0CB1 \u7EE7\u627F B +\u5219 A1 \u4E5F\u5173\u8054 B\uFF0C\u8FD9\u65F6\u5019 B \u6709\u6240\u6709\uFF08\u672C\u8EAB\u53CA\u6240\u6709\u5B50\u8868\uFF09\u7684\u6570\u636E\uFF0C\u4F46\u662F A1 \u53EA\u9700\u8981\u770B B1 \u7684\u6570\u636E\uFF0C\u5219\u53EF\u4EE5 \u5728 A1 \u4E2D\u91CD\u5199 \u628A B target \u6539\u6210 B1\u3002\u5373\u5728\u5173\u7CFB A1.B \u4E2D\uFF0C\u53EF\u4EE5\u4FEE\u6539\u5173\u8054\u7684\u76EE\u6807\u8868 B\uFF08\u53EF\u9009\u8303\u56F4\u4E3A B \u548C B \u7684\u5B50\u8868\uFF09\u4E3A B1`,paraId:13,tocIndex:9},{value:"\u5982\u56FE\uFF1A\u6279\u53D1\u8BA2\u5355\u8868\u4E2D\u91CD\u5199\u5546\u54C1\u5173\u7CFB\u5B57\u6BB5\uFF08\u5C06\u76EE\u6807\u8868\u91CD\u5199\u4E3A\u7535\u5B50\u5546\u54C1\u8868\uFF09",paraId:14,tocIndex:9},{value:"\u5546\u54C1\u8868\uFF08\u4E3B\u8868\uFF09\u4E2D\u6709\u53EF\u9009\u9879\u5B57\u6BB5\u300C\u5C3A\u5BF8\u300D\uFF1A\u670D\u88C5\u5546\u54C1\u53EF\u4EE5\u5B9A\u4E49\u91CD\u5199\u4E3A\u8863\u670D\u5C3A\u5BF8\uFF08S\u3001M\u3001L\uFF09\uFF0C\u7535\u5B50\u5546\u54C1\u8868\u5219\u53EF\u4EE5\u91CD\u5199\u5B57\u6BB5\u4E3A\u300C\u5B58\u50A8\u5BB9\u91CF\u300D\uFF0832GB\u300164GB\u3001128GB\uFF09",paraId:15,tocIndex:10},{value:"\u5173\u7CFB\u5916\u952E\u5171\u4EAB\u662F\u4E00\u79CD\u7B56\u7565\uFF0C\u5141\u8BB8\u591A\u4E2A\u8868\u5171\u4EAB\u76F8\u540C\u7684\u5916\u952E\u5B57\u6BB5\uFF0C\u4EE5\u5EFA\u7ACB\u8868\u4E4B\u95F4\u7684\u5173\u7CFB\u3002\u8FD9\u5728\u591A\u4E2A\u8868\u9700\u8981\u5F15\u7528\u76F8\u540C\u5B9E\u4F53\u65F6\u975E\u5E38\u6709\u7528\u3002\u5728\u6570\u636E\u8868\u7EE7\u627F\u7684\u60C5\u51B5\u4E0B\uFF0C\u8FD9\u4E2A\u5171\u4EAB\u7684\u5916\u952E\u53EF\u4EE5\u7528\u4E8E\u786E\u4FDD\u6BCF\u4E2A\u5B50\u8868\u4E0E\u5176\u4ED6\u8868\u4E4B\u95F4\u7684\u5173\u7CFB\u6216\u5F15\u7528\uFF0C\u4ECE\u800C\u6784\u5EFA\u66F4\u590D\u6742\u7684\u6570\u636E\u6A21\u578B",paraId:16,tocIndex:11},{value:"\u4F5C\u4E3A\u533A\u5757\u7684\u6570\u636E\u6E90\u4F7F\u7528",paraId:17,tocIndex:13},{value:"\u6570\u636E\u533A\u5757\u7684\u5B57\u6BB5\u6765\u6E90\uFF0C\u4E0D\u540C\u7684\u5B57\u6BB5\u7C7B\u578B\u5BF9\u5E94\u4E0D\u540C\u7684\u5B57\u6BB5\u7EC4\u4EF6",paraId:18,tocIndex:14},{value:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6",paraId:19,tocIndex:15},{value:"\u5173\u7CFB\u533A\u5757",paraId:19,tocIndex:15},{value:"\u5B50\u8868\u5728\u533A\u5757\u4E2D\u4F7F\u7528\u65F6\u9664\u4E86\u672C\u8868\u5B57\u6BB5\u8FD8\u6709\u6240\u6709\u7236\u8868\u7684\u5B57\u6BB5\u4F9B\u914D\u7F6E",paraId:20,tocIndex:17},{value:"\u7236\u8868\u914D\u7F6E TableOID(\u8BB0\u5F55\u662F\u7531\u54EA\u4E2A\u8868\u521B\u5EFA\u7684\u6570\u636E)",paraId:21,tocIndex:18},{value:"\u5B50\u8868\u7684\u6570\u636E\u6C47\u805A\u5728\u7236\u8868\u4E2D",paraId:22,tocIndex:18},{value:"\u5728\u7236\u8868\u4E2D\u4E3A\u5B50\u8868\u914D\u7F6E\u6DFB\u52A0\u64CD\u4F5C",paraId:23,tocIndex:18},{value:"\u53EF\u9009\u9879\u4E3A\u5F53\u524D\u8868\u7684\u6240\u6709\u5B50\u8868",paraId:24,tocIndex:18},{value:"UI \u914D\u7F6E\u72B6\u6001\u4E0B\u53EF\u4EE5\u4E3A\u5B50\u8868\u914D\u7F6E\u533A\u5757\uFF08\u8868\u5355/\u8BE6\u60C5\u533A\u5757\uFF09",paraId:25,tocIndex:19},{value:"\u975E UI \u914D\u7F6E\u72B6\u6001\u4E0B,\u6309 __collection \u53EA\u663E\u793A\u5BF9\u5E94\u6570\u636E\u8868\u8BB0\u5F55\u7684\u533A\u5757",paraId:26,tocIndex:19},{value:"\u5173\u7CFB\u6570\u636E\u7684\u8BE6\u60C5\u5728\u975E UI \u914D\u7F6E\u72B6\u6001\u4E0B\u6309 __collection \u4EC5\u663E\u793A\u5BF9\u5E94\u6570\u636E\u7684\u533A\u5757",paraId:27,tocIndex:20},{value:"B \u53EF\u4EE5\u8FDE\u63A5 A\uFF0CB \u7684\u5B50\u8868 B1 \u4E5F\u53EF\u4EE5\u8FDE\u63A5 A",paraId:28,tocIndex:21}],Hw={},Ww={title:"\u672C\u5730\u5316\u7BA1\u7406",toc:"menu",filename:"docs/en-US/plugins/localization-management/index.md",lastUpdated:173254844e4,description:"\u540C\u6B65\u4E4B\u540E\uFF0C\u4F1A\u5217\u51FA\u6240\u6709\u53EF\u7FFB\u8BD1\u8BCD\u6761"},$w=[{id:"\u672C\u5730\u5316\u7BA1\u7406",depth:1,title:"\u672C\u5730\u5316\u7BA1\u7406"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:3,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u672C\u5730\u5316\u7BA1\u7406-1",depth:3,title:"\u672C\u5730\u5316\u7BA1\u7406"},{id:"\u540C\u6B65\u7FFB\u8BD1\u8BCD\u6761",depth:3,title:"\u540C\u6B65\u7FFB\u8BD1\u8BCD\u6761"},{id:"\u53D1\u5E03",depth:3,title:"\u53D1\u5E03"},{id:"\u7FFB\u8BD1\u5176\u4ED6\u8BED\u8A00",depth:3,title:"\u7FFB\u8BD1\u5176\u4ED6\u8BED\u8A00"}],Gw=[{value:"\u540C\u6B65\u4E4B\u540E\uFF0C\u4F1A\u5217\u51FA\u6240\u6709\u53EF\u7FFB\u8BD1\u8BCD\u6761",paraId:0,tocIndex:6},{value:"\u7FFB\u8BD1\u5B8C\u6210\u4E4B\u540E\uFF0C\u9700\u8981\u70B9\u51FB\u201C\u53D1\u5E03\u201D\u6309\u94AE\uFF0C\u624D\u80FD\u4F7F\u4FEE\u6539\u7ED3\u679C\u751F\u6548",paraId:1,tocIndex:7},{value:"\u542F\u7528\u5176\u4ED6\u8BED\u8A00\uFF0C\u5982\u7B80\u4F53\u4E2D\u6587",paraId:2,tocIndex:8},{value:"\u5207\u6362\u8BED\u8A00",paraId:3,tocIndex:8},{value:"\u8BCD\u6761\u540C\u6B65",paraId:4,tocIndex:8},{value:"\u7FFB\u8BD1\u5E76\u53D1\u5E03",paraId:5,tocIndex:8}],Vw={},Kw={title:"\u5220\u9664\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/destroy.md",lastUpdated:173254844e4,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u5220\u9664\u3002"},Zw=[{id:"\u5220\u9664\u6570\u636E",depth:1,title:"\u5220\u9664\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],Yw=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u5220\u9664\u3002",paraId:0,tocIndex:0},{value:"\u5220\u9664\u8282\u70B9\u7684\u57FA\u672C\u4F7F\u7528\u4E0E\u66F4\u65B0\u8282\u70B9\u7C7B\u4F3C\uFF0C\u53EA\u662F\u5220\u9664\u8282\u70B9\u4E0D\u9700\u8981\u5B57\u6BB5\u8D4B\u503C\uFF0C\u53EA\u9700\u8981\u9009\u62E9\u6570\u636E\u8868\u548C\u7B5B\u9009\u6761\u4EF6\u5373\u53EF\u3002\u5220\u9664\u8282\u70B9\u7684\u7ED3\u679C\u4F1A\u8FD4\u56DE\u5220\u9664\u6210\u529F\u6570\u636E\u7684\u884C\u6570\uFF0C\u53EA\u5728\u6267\u884C\u5386\u53F2\u91CC\u53EF\u67E5\u770B\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u53D8\u91CF\u5728\u540E\u7EED\u8282\u70B9\u4F7F\u7528\u3002",paraId:1,tocIndex:0},{value:"\u76EE\u524D\u5220\u9664\u8282\u70B9\u4E0D\u652F\u6301\u9010\u6761\u5220\u9664\uFF0C\u5747\u4E3A\u6279\u91CF\u5220\u9664\uFF0C\u56E0\u6B64\u4E0D\u4F1A\u89E6\u53D1\u6BCF\u6761\u6570\u636E\u5220\u9664\u7684\u5176\u4ED6\u4E8B\u4EF6\u3002",paraId:2},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5220\u9664\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:3,tocIndex:1},{value:"\u9009\u62E9\u8981\u5220\u9664\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:4,tocIndex:3},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:5,tocIndex:4},{value:"\u4F8B\u5982\u5B9A\u65F6\u6E05\u7406\u5DF2\u53D6\u6D88\u7684\u65E0\u6548\u5386\u53F2\u8BA2\u5355\u6570\u636E\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5220\u9664\u8282\u70B9\u6765\u5B9E\u73B0\uFF1A",paraId:6,tocIndex:5},{value:"\u5DE5\u4F5C\u6D41\u5C06\u5B9A\u65F6\u89E6\u53D1\uFF0C\u5E76\u6267\u884C\u5220\u9664\u6240\u6709\u5DF2\u53D6\u6D88\u7684\u65E0\u6548\u5386\u53F2\u8BA2\u5355\u6570\u636E\u3002",paraId:7,tocIndex:5}],Qw={},Jw={title:"HTTP \u8BF7\u6C42",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/request.md",lastUpdated:173254844e4,description:"\u5F53\u9700\u8981\u4E0E\u53E6\u4E00\u4E2A web \u7CFB\u7EDF\u8FDB\u884C\u4EA4\u4E92\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 HTTP \u8BF7\u6C42\u8282\u70B9\u3002\u8BE5\u8282\u70B9\u5728\u6267\u884C\u65F6\u4F1A\u6839\u636E\u914D\u7F6E\u5411\u5BF9\u5E94\u7684\u5730\u5740\u53D1\u51FA\u4E00\u4E2A HTTP \u8BF7\u6C42\uFF0C\u53EF\u4EE5\u643A\u5E26 JSON \u683C\u5F0F\u7684\u6570\u636E\uFF0C\u5B8C\u6210\u4E0E\u5916\u90E8\u7CFB\u7EDF\u7684\u6570\u636E\u4EA4\u4E92\u3002"},Xw=[{id:"http-\u8BF7\u6C42",depth:1,title:"HTTP \u8BF7\u6C42"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u8BF7\u6C42\u65B9\u6CD5",depth:3,title:"\u8BF7\u6C42\u65B9\u6CD5"},{id:"\u8BF7\u6C42\u5730\u5740",depth:3,title:"\u8BF7\u6C42\u5730\u5740"},{id:"\u8BF7\u6C42\u5934\u914D\u7F6E",depth:3,title:"\u8BF7\u6C42\u5934\u914D\u7F6E"},{id:"\u8BF7\u6C42\u53C2\u6570",depth:3,title:"\u8BF7\u6C42\u53C2\u6570"},{id:"\u8BF7\u6C42\u4F53",depth:3,title:"\u8BF7\u6C42\u4F53"},{id:"\u8D85\u65F6\u8BBE\u7F6E",depth:3,title:"\u8D85\u65F6\u8BBE\u7F6E"},{id:"\u5FFD\u7565\u5931\u8D25",depth:3,title:"\u5FFD\u7565\u5931\u8D25"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],e3=[{value:"\u5F53\u9700\u8981\u4E0E\u53E6\u4E00\u4E2A web \u7CFB\u7EDF\u8FDB\u884C\u4EA4\u4E92\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 HTTP \u8BF7\u6C42\u8282\u70B9\u3002\u8BE5\u8282\u70B9\u5728\u6267\u884C\u65F6\u4F1A\u6839\u636E\u914D\u7F6E\u5411\u5BF9\u5E94\u7684\u5730\u5740\u53D1\u51FA\u4E00\u4E2A HTTP \u8BF7\u6C42\uFF0C\u53EF\u4EE5\u643A\u5E26 JSON \u683C\u5F0F\u7684\u6570\u636E\uFF0C\u5B8C\u6210\u4E0E\u5916\u90E8\u7CFB\u7EDF\u7684\u6570\u636E\u4EA4\u4E92\u3002",paraId:0,tocIndex:0},{value:"\u5982\u679C\u5BF9 Postman \u8FD9\u7C7B\u8BF7\u6C42\u53D1\u9001\u5DE5\u5177\u6BD4\u8F83\u719F\u6089\uFF0C\u90A3\u4E48\u53EF\u4EE5\u5F88\u5FEB\u638C\u63E1 HTTP \u8BF7\u6C42\u8282\u70B9\u7684\u7528\u6CD5\u3002\u4E0E\u8FD9\u4E9B\u5DE5\u5177\u4E0D\u540C\u7684\u662F\uFF0CHTTP \u8BF7\u6C42\u8282\u70B9\u4E2D\u5404\u9879\u53C2\u6570\u5747\u53EF\u4F7F\u7528\u5F53\u524D\u6D41\u7A0B\u4E2D\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\uFF0C\u53EF\u4EE5\u4E0E\u5F53\u524D\u7CFB\u7EDF\u7684\u4E1A\u52A1\u5904\u7406\u6709\u673A\u7ED3\u5408\u8D77\u6765\u3002",paraId:1,tocIndex:0},{value:"HTTP \u8BF7\u6C42\u8282\u70B9\u6682\u4E0D\u652F\u6301\u8BF7\u6C42\u54CD\u5E94\u7684\u7ED3\u679C\u8FDB\u884C\u4F7F\u7528\uFF0C\u53EF\u80FD\u4F1A\u5728\u672A\u6765\u652F\u6301\u3002",paraId:2},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201CHTTP \u8BF7\u6C42\u201D\u8282\u70B9\uFF1A",paraId:3,tocIndex:1},{value:"\u53EF\u9009\u7684 HTTP \u8BF7\u6C42\u65B9\u6CD5\uFF1A",paraId:4,tocIndex:3},{value:"GET",paraId:4,tocIndex:3},{value:"\u3001",paraId:4,tocIndex:3},{value:"POST",paraId:4,tocIndex:3},{value:"\u3001",paraId:4,tocIndex:3},{value:"PUT",paraId:4,tocIndex:3},{value:"\u3001",paraId:4,tocIndex:3},{value:"PATCH",paraId:4,tocIndex:3},{value:" \u548C ",paraId:4,tocIndex:3},{value:"DELETE",paraId:4,tocIndex:3},{value:"\u3002",paraId:4,tocIndex:3},{value:"HTTP \u670D\u52A1\u7684 URL\uFF0C\u9700\u8981\u5305\u542B\u534F\u8BAE\u90E8\u5206\uFF08",paraId:5,tocIndex:4},{value:"http://",paraId:5,tocIndex:4},{value:" \u6216 ",paraId:5,tocIndex:4},{value:"https://",paraId:5,tocIndex:4},{value:"\uFF09\uFF0C\u63A8\u8350\u4F7F\u7528 ",paraId:5,tocIndex:4},{value:"https://",paraId:5,tocIndex:4},{value:"\u3002",paraId:5,tocIndex:4},{value:"\u8BF7\u6C42 Header \u90E8\u5206\u7684\u952E\u503C\u5BF9\uFF0C\u76F8\u5173\u503C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\u3002",paraId:6,tocIndex:5},{value:"\u5BF9 ",paraId:7},{value:"Content-Type",paraId:7},{value:" \u8BF7\u6C42\u5934\uFF0C\u76EE\u524D\u4EC5\u652F\u6301 ",paraId:7},{value:"application/json",paraId:7},{value:" \u7684\u683C\u5F0F\uFF0C\u4E14\u5DF2\u9ED8\u8BA4\u5185\u7F6E\uFF0C\u65E0\u9700\u586B\u5199\uFF0C\u8986\u76D6\u65E0\u6548\u3002",paraId:7},{value:"\u8BF7\u6C42 query \u90E8\u5206\u7684\u952E\u503C\u5BF9\uFF0C\u76F8\u5173\u503C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\u3002",paraId:8,tocIndex:6},{value:"\u8BF7\u6C42\u7684 Body \u90E8\u5206\uFF0C\u76EE\u524D\u4EC5\u652F\u6301\u6807\u51C6\u7684 JSON \u683C\u5F0F\uFF0C\u53EF\u4EE5\u901A\u8FC7\u6587\u672C\u7F16\u8F91\u6846\u53F3\u4E0A\u89D2\u7684\u53D8\u91CF\u6309\u94AE\u63D2\u5165\u6D41\u7A0B\u4E0A\u4E0B\u6587\u4E2D\u7684\u53D8\u91CF\u3002",paraId:9,tocIndex:7},{value:"\u6CE8\uFF1A\u53D8\u91CF\u5FC5\u987B\u5728 JSON \u7684\u5B57\u7B26\u4E32\u4E2D\u4F7F\u7528\uFF0C\u4F8B\u5982\uFF1A",paraId:10},{value:'"a": "{{$context.data.a}}"',paraId:10},{value:"\u3002",paraId:10},{value:"\u5F53\u8BF7\u6C42\u957F\u65F6\u95F4\u672A\u54CD\u5E94\u65F6\uFF0C\u901A\u8FC7\u8D85\u65F6\u8BBE\u7F6E\u53D6\u6D88\u8BE5\u8BF7\u6C42\u7684\u6267\u884C\u3002\u8BF7\u6C42\u8D85\u65F6\u540E\u4F1A\u4EE5\u5931\u8D25\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\u5F53\u524D\u6D41\u7A0B\u3002",paraId:11,tocIndex:8},{value:"\u8BF7\u6C42\u8282\u70B9\u4F1A\u4EE5\u6807\u51C6 HTTP \u72B6\u6001\u7801\u7684 ",paraId:12,tocIndex:9},{value:"200",paraId:12,tocIndex:9},{value:"~",paraId:12,tocIndex:9},{value:"299",paraId:12,tocIndex:9},{value:" \u4E4B\u95F4\uFF08\u542B\uFF09\u7684\u72B6\u6001\u8BA4\u4E3A\u662F\u6210\u529F\u72B6\u6001\uFF0C\u5176\u4ED6\u7684\u5747\u8BA4\u4E3A\u662F\u5931\u8D25\u3002\u5982\u52FE\u9009\u4E86\u201C\u5FFD\u7565\u5931\u8D25\u7684\u8BF7\u6C42\u5E76\u7EE7\u7EED\u5DE5\u4F5C\u6D41\u201D\u9009\u9879\uFF0C\u5219\u5F53\u8BF7\u6C42\u5931\u8D25\u540E\u4ECD\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u7684\u5176\u4ED6\u6D41\u7A0B\u8282\u70B9\u3002",paraId:12,tocIndex:9},{value:"\u4F8B\u5982\u6211\u4EEC\u53EF\u4EE5\u4F7F\u7528\u8BF7\u6C42\u8282\u70B9\u6765\u5BF9\u63A5\u4E91\u5E73\u53F0\u53D1\u9001\u901A\u77E5\u77ED\u4FE1\uFF0C\u4EE5\u963F\u91CC\u4E91\u53D1\u9001\u77ED\u4FE1\u63A5\u53E3\u4E3A\u4F8B\u914D\u7F6E\u5982\u4E0B\uFF08\u76F8\u5173\u53C2\u6570\u9700\u81EA\u884C\u67E5\u9605\u6587\u6863\u9002\u914D\uFF09\uFF1A",paraId:13,tocIndex:10},{value:"\u5DE5\u4F5C\u6D41\u89E6\u53D1\u8BE5\u8282\u70B9\u6267\u884C\u65F6\u4F1A\u4EE5\u914D\u7F6E\u7684\u5185\u5BB9\u8C03\u7528\u963F\u91CC\u4E91\u7684\u77ED\u4FE1\u63A5\u53E3\uFF0C\u8BF7\u6C42\u6210\u529F\u7684\u8BDD\u5C06\u901A\u8FC7\u77ED\u4FE1\u4E91\u670D\u52A1\u53D1\u9001\u4E00\u6761\u77ED\u4FE1\u3002",paraId:14,tocIndex:10}],a3={},t3={title:"\u8868\u5355\u4E8B\u4EF6",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/triggers/form.md",lastUpdated:173254844e4,description:"\u8868\u5355\u63D0\u4EA4\u4E8B\u4EF6\u9488\u5BF9 UI \u754C\u9762\u4E2D\u65B0\u589E\u548C\u66F4\u65B0\u6570\u636E\u7684\u8868\u5355\u64CD\u4F5C\u6309\u94AE\uFF0C\u5728\u8868\u5355\u4E2D\u70B9\u51FB\u5BF9\u5E94\u5DF2\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\u7684\u6309\u94AE\u540E\uFF0C\u5C06\u89E6\u53D1\u5BF9\u5E94\u7ED1\u5B9A\u7684\u5DE5\u4F5C\u6D41\u6267\u884C\u3002\u4F8B\u5982\u5BF9\u67D0\u4E2A\u6D3B\u52A8\u53D1\u8D77\u62A5\u540D\u7684\u8868\u5355\uFF0C\u62A5\u540D\uFF08\u8868\u5355\u63D0\u4EA4\uFF09\u6210\u529F\u540E\u89E6\u53D1\u76F8\u5E94\u7684\u6D41\u7A0B\u5904\u7406\u3002"},n3=[{id:"\u8868\u5355\u4E8B\u4EF6",depth:1,title:"\u8868\u5355\u4E8B\u4EF6"},{id:"\u57FA\u672C\u4F7F\u7528",depth:2,title:"\u57FA\u672C\u4F7F\u7528"},{id:"\u76F8\u5173\u63D0\u793A",depth:2,title:"\u76F8\u5173\u63D0\u793A"},{id:"\u4E0E\u6570\u636E\u8868\u4E8B\u4EF6\u7684\u533A\u522B",depth:3,title:"\u4E0E\u6570\u636E\u8868\u4E8B\u4EF6\u7684\u533A\u522B"},{id:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u6309\u94AE\u7684\u533A\u522B",depth:3,title:"\u201C\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u201D\u6309\u94AE\u7684\u533A\u522B"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],o3=[{value:"\u8868\u5355\u63D0\u4EA4\u4E8B\u4EF6\u9488\u5BF9 UI \u754C\u9762\u4E2D\u65B0\u589E\u548C\u66F4\u65B0\u6570\u636E\u7684\u8868\u5355\u64CD\u4F5C\u6309\u94AE\uFF0C\u5728\u8868\u5355\u4E2D\u70B9\u51FB\u5BF9\u5E94\u5DF2\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\u7684\u6309\u94AE\u540E\uFF0C\u5C06\u89E6\u53D1\u5BF9\u5E94\u7ED1\u5B9A\u7684\u5DE5\u4F5C\u6D41\u6267\u884C\u3002\u4F8B\u5982\u5BF9\u67D0\u4E2A\u6D3B\u52A8\u53D1\u8D77\u62A5\u540D\u7684\u8868\u5355\uFF0C\u62A5\u540D\uFF08\u8868\u5355\u63D0\u4EA4\uFF09\u6210\u529F\u540E\u89E6\u53D1\u76F8\u5E94\u7684\u6D41\u7A0B\u5904\u7406\u3002",paraId:0,tocIndex:0},{value:"\u9488\u5BF9\u201C\u63D0\u4EA4\u201D\u6309\u94AE\uFF08\u542B\u201C\u4FDD\u5B58\u6570\u636E\u201D\u6309\u94AE\uFF09\u914D\u7F6E\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5C06\u5728\u7528\u6237\u63D0\u4EA4\u5BF9\u5E94\u8868\u5355\u4E14\u6570\u636E\u64CD\u4F5C\u5B8C\u6210\u540E\u88AB\u89E6\u53D1\u3002",paraId:1,tocIndex:1},{value:` `,paraId:2},{value:"\u9488\u5BF9\u81EA\u5B9A\u4E49\u7684\u201C\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u201D\u6309\u94AE\u914D\u7F6E\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5C06\u5728\u7528\u6237\u70B9\u51FB\u5BF9\u5E94\u6309\u94AE\u65F6\uFF0C\u76F4\u63A5\u5C06\u5DF2\u914D\u7F6E\u7684\u8868\u5355\u6570\u636E\u63D0\u4EA4\u5230\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u8FDB\u884C\u5904\u7406\u3002",paraId:3,tocIndex:1},{value:` `,paraId:2},{value:"\u4ECE\u6309\u94AE\u914D\u7F6E\u7684\u83DC\u5355\u4E2D\u9009\u62E9\u201C\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\u201D\uFF0C\u5373\u53EF\u6253\u5F00\u7ED1\u5B9A\u914D\u7F6E\u5F39\u7A97\u3002\u5F39\u7A97\u4E2D\u53EF\u4EE5\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u8981\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5982\u679C\u4E00\u4E2A\u90FD\u4E0D\u914D\u7F6E\uFF0C\u5219\u4EE3\u8868\u65E0\u9700\u89E6\u53D1\u3002\u9488\u5BF9\u6BCF\u4E00\u4E2A\u5DE5\u4F5C\u6D41\uFF0C\u9700\u8981\u5148\u9650\u5B9A\u89E6\u53D1\u7684\u6570\u636E\u662F\u6574\u4E2A\u8868\u5355\u7684\u6570\u636E\u8FD8\u662F\u8868\u5355\u4E2D\u7684\u67D0\u4E2A\u5173\u7CFB\u5B57\u6BB5\u7684\u6570\u636E\uFF0C\u4E4B\u540E\u518D\u6839\u636E\u6240\u9009\u7684\u6570\u636E\u6A21\u578B\u5BF9\u5E94\u7684\u6570\u636E\u8868\uFF0C\u9009\u62E9\u5DF2\u914D\u7F6E\u4E86\u5339\u914D\u8BE5\u8868\u6A21\u578B\u7684\u8868\u5355\u5DE5\u4F5C\u6D41\u3002",paraId:4,tocIndex:1},{value:` `,paraId:2},{value:` @@ -7002,7 +7054,7 @@ export default class extends Plugin { `,paraId:2},{value:"\u5C06\u5DE5\u4F5C\u6D41\u8BBE\u7F6E\u4E3A\u542F\u7528\u72B6\u6001\u540E\uFF0C\u6D41\u7A0B\u7684\u5177\u4F53\u5904\u7406\u8282\u70B9\u7A0D\u540E\u518D\u56DE\u6765\u914D\u7F6E\u3002",paraId:12,tocIndex:5},{value:"\u7136\u540E\u6211\u4EEC\u5728\u754C\u9762\u4E0A\u521B\u5EFA\u201C\u8D39\u7528\u62A5\u9500\u201D\u6570\u636E\u8868\u7684\u8868\u683C\u533A\u5757\uFF0C\u5E76\u4E14\u5728\u5DE5\u5177\u680F\u589E\u52A0\u4E00\u4E2A\u201C\u6DFB\u52A0\u201D\u6309\u94AE\uFF0C\u914D\u7F6E\u5BF9\u5E94\u7684\u8868\u5355\u5B57\u6BB5\u3002\u8FD9\u91CC\u6211\u4EEC\u4E0D\u4F7F\u7528\u9ED8\u8BA4\u7684\u201C\u63D0\u4EA4\u201D\u6309\u94AE\uFF0C\u800C\u662F\u79FB\u9664\u540E\u91CD\u65B0\u6DFB\u52A0\u4E00\u4E2A\u201C\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u201D\u7684\u6309\u94AE\uFF1A",paraId:13,tocIndex:5},{value:` `,paraId:2},{value:"\u5E76\u6253\u5F00\u6309\u94AE\u7684\u201C\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\u201D\u914D\u7F6E\u5BF9\u8BDD\u6846\uFF0C\u9009\u62E9\u6574\u4E2A\u8868\u5355\u6570\u636E\u4F5C\u4E3A\u4E0A\u4E0B\u6587\uFF0C\u4EE5\u53CA\u5DE5\u4F5C\u6D41\u4E3A\u6211\u4EEC\u4E4B\u524D\u521B\u5EFA\u7684\u5DE5\u4F5C\u6D41\uFF1A",paraId:14,tocIndex:5},{value:` `,paraId:2},{value:"\u8868\u5355\u914D\u7F6E\u5B8C\u6210\u540E\uFF0C\u518D\u56DE\u5230\u5DE5\u4F5C\u6D41\u7684\u903B\u8F91\u7F16\u6392\u3002\u6BD4\u5982\u6211\u4EEC\u9700\u8981\u91D1\u989D\u5927\u4E8E 500 \u5143\u65F6\u8981\u6C42\u7BA1\u7406\u5458\u8FDB\u884C\u4EBA\u5DE5\u5BA1\u6838\uFF0C\u5426\u5219\u76F4\u63A5\u901A\u8FC7\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u521B\u5EFA\u62A5\u9500\u8BB0\u5F55\uFF0C\u5E76\u7531\u8D22\u52A1\u8FDB\u4E00\u6B65\u5904\u7406\uFF08\u7565\uFF09\u3002",paraId:15,tocIndex:5},{value:` - `,paraId:2},{value:"\u5FFD\u7565\u540E\u7EED\u8D22\u52A1\u7684\u5904\u7406\u7684\u8BDD\uFF0C\u8FD9\u6837\u5C31\u5B8C\u6210\u4E86\u7533\u8BF7\u62A5\u9500\u6D41\u7A0B\u7684\u914D\u7F6E\uFF0C\u5F53\u5458\u5DE5\u586B\u5199\u62A5\u9500\u7533\u8BF7\u5E76\u63D0\u4EA4\u540E\uFF0C\u4F1A\u89E6\u53D1\u5BF9\u5E94\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5982\u679C\u8D39\u7528\u91D1\u989D\u5C0F\u4E8E 500\uFF0C\u4F1A\u81EA\u52A8\u521B\u5EFA\u8BB0\u5F55\u5E76\u7B49\u5F85\u8D22\u52A1\u8FDB\u4E00\u6B65\u5904\u7406\uFF0C\u5426\u5219\u4F1A\u7531\u4E3B\u7BA1\u5BA1\u6838\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u4E5F\u662F\u4E00\u6837\u521B\u5EFA\u8BB0\u5F55\u5E76\u4EA4\u7ED9\u8D22\u52A1\u5904\u7406\u3002",paraId:16,tocIndex:5},{value:"\u8BE5\u793A\u4F8B\u7684\u6D41\u7A0B\u4E5F\u53EF\u4EE5\u914D\u7F6E\u5728\u666E\u901A\u201C\u63D0\u4EA4\u201D\u6309\u94AE\u4E0A\uFF0C\u53EF\u4EE5\u6839\u636E\u5177\u4F53\u7684\u4E1A\u52A1\u573A\u666F\u51B3\u5B9A\u662F\u5426\u9700\u8981\u5148\u521B\u5EFA\u8BB0\u5F55\u518D\u6267\u884C\u540E\u7EED\u7684\u6D41\u7A0B\u3002",paraId:17,tocIndex:5}],r3={},d3={title:"v0.20: 2024-03-03",toc:"menu",filename:"docs/en-US/welcome/release/v0200-changelog/index.md",lastUpdated:1732240239e3,description:'Added the "Data Source Manager" plugin, used to manage all collections and fields for data sources. The Data Source Manager plugin provides a centralized interface for managing data sources and does not provide the capability to access data sources. It needs to be used in conjunction with various data source plugins. Currently supported data sources include:'},i3=[{id:"v020-2024-03-03",depth:1,title:"v0.20: 2024-03-03"},{id:"new-features",depth:2,title:"New Features"},{id:"support-for-multiple-data-sources",depth:3,title:"Support for Multiple Data Sources"},{id:"adjustment-to-collections-management",depth:3,title:"Adjustment to Collections Management"},{id:"support-for-non-id-fields-as-primary-and-relationship-constraints",depth:3,title:"Support for Non-ID Fields as Primary and Relationship Constraints"},{id:"adjustment-to-drag-and-drop-sorting",depth:3,title:"Adjustment to Drag-and-Drop Sorting"},{id:"adjustment-to-user-and-permission-interfaces",depth:3,title:"Adjustment to User and Permission Interfaces"},{id:"department-plugin",depth:3,title:"Department Plugin"},{id:"workflow-approval",depth:3,title:"Workflow: Approval"},{id:"workflow-end-process-node",depth:3,title:"Workflow: End Process Node"},{id:"workflow-custom-variable-node",depth:3,title:"Workflow: Custom Variable Node"},{id:"workflow-request-interceptor",depth:3,title:"Workflow: Request Interceptor"},{id:"workflow-response-message-node",depth:3,title:"Workflow: Response Message Node"},{id:"incompatible-changes",depth:2,title:"Incompatible Changes"},{id:"conflictingly-named-apis",depth:3,title:"Conflictingly Named APIs"},{id:"other-apis-requiring-adjustment",depth:3,title:"Other APIs Requiring Adjustment"},{id:"change-examples",depth:2,title:"Change Examples"},{id:"collection-template-extension",depth:3,title:"Collection Template Extension"},{id:"definition",depth:4,title:"Definition"},{id:"registration",depth:4,title:"Registration"},{id:"field-interface-extension",depth:3,title:"Field Interface Extension"},{id:"definition-1",depth:4,title:"Definition"},{id:"registration-1",depth:4,title:"Registration"},{id:"field-interface-group-extension",depth:3,title:"Field Interface Group Extension"},{id:"usecontextcollectionmanagercontext-changed-to-usecollectionmanager_deprecated",depth:3,title:"useContext(CollectionManagerContext) Changed to useCollectionManager_deprecated()"},{id:"extend-collections-use-extendcollectionsprovider-instead-of-collectionmanagerprovider",depth:3,title:"Extend Collections, Use ExtendCollectionsProvider Instead of CollectionManagerProvider"},{id:"changes-to-recordprovider",depth:3,title:"Changes to RecordProvider"}],l3=[{value:'Added the "',paraId:0,tocIndex:2},{value:"Data Source Manager",paraId:1,tocIndex:2},{value:'" plugin, used to manage all collections and fields for data sources. The Data Source Manager plugin provides a centralized interface for managing data sources and does not provide the capability to access data sources. It needs to be used in conjunction with various data source plugins. Currently supported data sources include:',paraId:0,tocIndex:2},{value:"Main Database",paraId:2,tocIndex:2},{value:": NocoBase main database, supporting relational databases such as MySQL, PostgreSQL, SQLite, etc.",paraId:3,tocIndex:2},{value:"External MySQL Data Source",paraId:4,tocIndex:2},{value:": Access an existing MySQL database as a data source.",paraId:3,tocIndex:2},{value:"External MariaDB Data Source",paraId:5,tocIndex:2},{value:": Access an existing MariaDB database as a data source.",paraId:3,tocIndex:2},{value:"External PostgreSQL Data Source",paraId:6,tocIndex:2},{value:": Access an existing PostgreSQL database as a data source.",paraId:3,tocIndex:2},{value:"In addition, more data sources can be extended, which can be common types of databases or platforms that provide APIs (SDKs).",paraId:7,tocIndex:2},{value:'Moved the original "Collection Manager" to "Data Source > Main Database > Configuration".',paraId:8,tocIndex:3},{value:"When creating a collection, you can choose not to create an ID field.",paraId:9,tocIndex:4},{value:"Integer fields can be used as primary keys.",paraId:10,tocIndex:4},{value:"Single-line text fields can also be used as primary keys.",paraId:11,tocIndex:4},{value:"Relationship constraints support selecting other fields with Unique indexes set as non-primary key fields.",paraId:12,tocIndex:4},{value:'Added a "Sort" type field. Sorting fields are no longer automatically generated when creating collections and need to be manually created.',paraId:13,tocIndex:5},{value:"When selecting a field as a group, grouping will be done before sorting.",paraId:14,tocIndex:5},{value:"When enabling drag-and-drop sorting in table block, you need to select the sorting field.",paraId:15,tocIndex:5},{value:"When creating a Kanban block, you need to select the sorting field.",paraId:16,tocIndex:5},{value:"Added user management interface and unified user and role management under one menu.",paraId:17,tocIndex:6},{value:"Adjusted the role management interface to facilitate the management of user-associated roles, permissions, departments, etc.",paraId:18,tocIndex:6},{value:'Moved the original "Action Permissions" to the "Data Source" tab.',paraId:19,tocIndex:6},{value:"Organize users by departments, set hierarchical relationships, link roles to control permissions, and use departments as variables in workflows and expressions.",paraId:20,tocIndex:7},{value:`The approval plugin provides dedicated workflow types (triggers) "Initiate Approval" and "Approval" nodes for this process. Combined with NocoBase's unique custom data tables and custom blocks, various approval scenarios can be quickly and flexibly created and managed.`,paraId:21,tocIndex:8},{value:"Approval configuration",paraId:22,tocIndex:8},{value:"Approval process",paraId:23,tocIndex:8},{value:"Further details can be found in the documentation: ",paraId:24,tocIndex:8},{value:"Workflow Approval",paraId:25,tocIndex:8},{value:"This node immediately ends the current execution of the workflow when executed and ends with the status configured in the node. It is typically used for specific logic flow control, to exit the current workflow after meeting certain logical conditions, without continuing with subsequent processing. It can be likened to the return command in programming languages, used to exit the currently executing function.",paraId:26,tocIndex:9},{value:"Further details can be found in the documentation: ",paraId:27,tocIndex:9},{value:"End Process Node",paraId:28,tocIndex:9},{value:"Variables can be declared in the workflow or assigned values to previously declared variables, typically used to store temporary data in the workflow. It is suitable for scenarios where calculation results need to be stored for later use outside the branch (such as loops, parallelism, etc.).",paraId:29,tocIndex:10},{value:"Further details can be found in the documentation: ",paraId:30,tocIndex:10},{value:"Custom Variable Node",paraId:31,tocIndex:10},{value:'The request interceptor plugin provides a mechanism to intercept operations on forms, where the interception event is triggered after the corresponding form operation is submitted and before it is processed. If a "End Process" node is executed in the subsequent process flow after triggering, or if other nodes fail to execute (errors or other incomplete executions), the form operation will be intercepted, otherwise the scheduled operation will be executed normally. It can be used for business validation or logic checks to approve or intercept client-submitted create, update, and delete operations.',paraId:32,tocIndex:11},{value:"Further details can be found in the documentation: ",paraId:33,tocIndex:11},{value:"Request Interceptor",paraId:34,tocIndex:11},{value:"The response message node is used to provide feedback to the client with custom messages in specific types of workflows (such as request interception and form events).",paraId:35,tocIndex:12},{value:"Node configuration",paraId:36,tocIndex:12},{value:"Prompt message",paraId:37,tocIndex:12},{value:"Further details can be found in the documentation: ",paraId:38,tocIndex:12},{value:"Response Message Node",paraId:39,tocIndex:12},{value:"In this kernel change, some new version APIs conflict with the old version names. These conflicting old version APIs will be retained in this version but will be uniformly suffixed with ",paraId:40,tocIndex:14},{value:"_deprecated",paraId:40,tocIndex:14},{value:".",paraId:40,tocIndex:14},{value:"Original API",paraId:41,tocIndex:14},{value:"Deprecated API",paraId:41,tocIndex:14},{value:"New API",paraId:41,tocIndex:14},{value:"CollectionProvider",paraId:41,tocIndex:14},{value:"CollectionProvider_deprecated",paraId:41,tocIndex:14},{value:"CollectionProvider",paraId:41,tocIndex:14},{value:"useCollection",paraId:41,tocIndex:14},{value:"useCollection_deprecated",paraId:41,tocIndex:14},{value:"useCollection",paraId:41,tocIndex:14},{value:"useCollectionField",paraId:41,tocIndex:14},{value:"useCollectionField_deprecated",paraId:41,tocIndex:14},{value:"useCollectionField",paraId:41,tocIndex:14},{value:"useCollectionManager",paraId:41,tocIndex:14},{value:"useCollectionManager_deprecated",paraId:41,tocIndex:14},{value:"useCollectionManager",paraId:41,tocIndex:14},{value:"useContext(CollectionManagerContext)",paraId:41,tocIndex:14},{value:"useCollectionManager_deprecated",paraId:41,tocIndex:14},{value:"useCollectionManager",paraId:41,tocIndex:14},{value:"If you are using the above related APIs, you have two ways to change:",paraId:42,tocIndex:14},{value:"Simple replacement: Replace the original API with the one suffixed with ",paraId:43,tocIndex:14},{value:"_deprecated",paraId:43,tocIndex:14},{value:", for example, replace ",paraId:43,tocIndex:14},{value:"useCollection()",paraId:43,tocIndex:14},{value:" with ",paraId:43,tocIndex:14},{value:"useRecord_deprecated()",paraId:43,tocIndex:14},{value:".",paraId:43,tocIndex:14},{value:"Use the new API according to the new documentation: Although the names of the new APIs are the same as the old APIs, there are differences in parameters and return values. You need to refer to the new documentation",paraId:43,tocIndex:14},{value:"to adjust the corresponding code.",paraId:44,tocIndex:14},{value:"registerTemplate()",paraId:45,tocIndex:15},{value:" changed to ",paraId:45,tocIndex:15},{value:"app.dataSourceManager.addCollectionTemplates()",paraId:45,tocIndex:15},{value:"registerField()",paraId:45,tocIndex:15},{value:" changed to ",paraId:45,tocIndex:15},{value:"app.dataSourceManager.addFieldInterfaces()",paraId:45,tocIndex:15},{value:"registerGroup()",paraId:45,tocIndex:15},{value:" changed to ",paraId:45,tocIndex:15},{value:"app.dataSourceManager.addFieldInterfaceGroups()",paraId:45,tocIndex:15},{value:"useContext(CollectionManagerContext)",paraId:45,tocIndex:15},{value:" changed to ",paraId:45,tocIndex:15},{value:"useCollectionManager_deprecated()",paraId:45,tocIndex:15},{value:"Extend collections using ",paraId:45,tocIndex:15},{value:"ExtendCollectionsProvider",paraId:45,tocIndex:15},{value:"RecordProvider",paraId:45,tocIndex:15},{value:" requires explicit passing of the parent parameter when needed",paraId:45,tocIndex:15},{value:"Previously defined as an object, it now needs to be changed to a class. For example:",paraId:46,tocIndex:18},{value:"Before:",paraId:47,tocIndex:18},{value:`import { ICollectionTemplate } from '@nocobase/client'; + `,paraId:2},{value:"\u5FFD\u7565\u540E\u7EED\u8D22\u52A1\u7684\u5904\u7406\u7684\u8BDD\uFF0C\u8FD9\u6837\u5C31\u5B8C\u6210\u4E86\u7533\u8BF7\u62A5\u9500\u6D41\u7A0B\u7684\u914D\u7F6E\uFF0C\u5F53\u5458\u5DE5\u586B\u5199\u62A5\u9500\u7533\u8BF7\u5E76\u63D0\u4EA4\u540E\uFF0C\u4F1A\u89E6\u53D1\u5BF9\u5E94\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5982\u679C\u8D39\u7528\u91D1\u989D\u5C0F\u4E8E 500\uFF0C\u4F1A\u81EA\u52A8\u521B\u5EFA\u8BB0\u5F55\u5E76\u7B49\u5F85\u8D22\u52A1\u8FDB\u4E00\u6B65\u5904\u7406\uFF0C\u5426\u5219\u4F1A\u7531\u4E3B\u7BA1\u5BA1\u6838\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u4E5F\u662F\u4E00\u6837\u521B\u5EFA\u8BB0\u5F55\u5E76\u4EA4\u7ED9\u8D22\u52A1\u5904\u7406\u3002",paraId:16,tocIndex:5},{value:"\u8BE5\u793A\u4F8B\u7684\u6D41\u7A0B\u4E5F\u53EF\u4EE5\u914D\u7F6E\u5728\u666E\u901A\u201C\u63D0\u4EA4\u201D\u6309\u94AE\u4E0A\uFF0C\u53EF\u4EE5\u6839\u636E\u5177\u4F53\u7684\u4E1A\u52A1\u573A\u666F\u51B3\u5B9A\u662F\u5426\u9700\u8981\u5148\u521B\u5EFA\u8BB0\u5F55\u518D\u6267\u884C\u540E\u7EED\u7684\u6D41\u7A0B\u3002",paraId:17,tocIndex:5}],r3={},d3={title:"v0.20: 2024-03-03",toc:"menu",filename:"docs/en-US/welcome/release/v0200-changelog/index.md",lastUpdated:173254844e4,description:'Added the "Data Source Manager" plugin, used to manage all collections and fields for data sources. The Data Source Manager plugin provides a centralized interface for managing data sources and does not provide the capability to access data sources. It needs to be used in conjunction with various data source plugins. Currently supported data sources include:'},i3=[{id:"v020-2024-03-03",depth:1,title:"v0.20: 2024-03-03"},{id:"new-features",depth:2,title:"New Features"},{id:"support-for-multiple-data-sources",depth:3,title:"Support for Multiple Data Sources"},{id:"adjustment-to-collections-management",depth:3,title:"Adjustment to Collections Management"},{id:"support-for-non-id-fields-as-primary-and-relationship-constraints",depth:3,title:"Support for Non-ID Fields as Primary and Relationship Constraints"},{id:"adjustment-to-drag-and-drop-sorting",depth:3,title:"Adjustment to Drag-and-Drop Sorting"},{id:"adjustment-to-user-and-permission-interfaces",depth:3,title:"Adjustment to User and Permission Interfaces"},{id:"department-plugin",depth:3,title:"Department Plugin"},{id:"workflow-approval",depth:3,title:"Workflow: Approval"},{id:"workflow-end-process-node",depth:3,title:"Workflow: End Process Node"},{id:"workflow-custom-variable-node",depth:3,title:"Workflow: Custom Variable Node"},{id:"workflow-request-interceptor",depth:3,title:"Workflow: Request Interceptor"},{id:"workflow-response-message-node",depth:3,title:"Workflow: Response Message Node"},{id:"incompatible-changes",depth:2,title:"Incompatible Changes"},{id:"conflictingly-named-apis",depth:3,title:"Conflictingly Named APIs"},{id:"other-apis-requiring-adjustment",depth:3,title:"Other APIs Requiring Adjustment"},{id:"change-examples",depth:2,title:"Change Examples"},{id:"collection-template-extension",depth:3,title:"Collection Template Extension"},{id:"definition",depth:4,title:"Definition"},{id:"registration",depth:4,title:"Registration"},{id:"field-interface-extension",depth:3,title:"Field Interface Extension"},{id:"definition-1",depth:4,title:"Definition"},{id:"registration-1",depth:4,title:"Registration"},{id:"field-interface-group-extension",depth:3,title:"Field Interface Group Extension"},{id:"usecontextcollectionmanagercontext-changed-to-usecollectionmanager_deprecated",depth:3,title:"useContext(CollectionManagerContext) Changed to useCollectionManager_deprecated()"},{id:"extend-collections-use-extendcollectionsprovider-instead-of-collectionmanagerprovider",depth:3,title:"Extend Collections, Use ExtendCollectionsProvider Instead of CollectionManagerProvider"},{id:"changes-to-recordprovider",depth:3,title:"Changes to RecordProvider"}],l3=[{value:'Added the "',paraId:0,tocIndex:2},{value:"Data Source Manager",paraId:1,tocIndex:2},{value:'" plugin, used to manage all collections and fields for data sources. The Data Source Manager plugin provides a centralized interface for managing data sources and does not provide the capability to access data sources. It needs to be used in conjunction with various data source plugins. Currently supported data sources include:',paraId:0,tocIndex:2},{value:"Main Database",paraId:2,tocIndex:2},{value:": NocoBase main database, supporting relational databases such as MySQL, PostgreSQL, SQLite, etc.",paraId:3,tocIndex:2},{value:"External MySQL Data Source",paraId:4,tocIndex:2},{value:": Access an existing MySQL database as a data source.",paraId:3,tocIndex:2},{value:"External MariaDB Data Source",paraId:5,tocIndex:2},{value:": Access an existing MariaDB database as a data source.",paraId:3,tocIndex:2},{value:"External PostgreSQL Data Source",paraId:6,tocIndex:2},{value:": Access an existing PostgreSQL database as a data source.",paraId:3,tocIndex:2},{value:"In addition, more data sources can be extended, which can be common types of databases or platforms that provide APIs (SDKs).",paraId:7,tocIndex:2},{value:'Moved the original "Collection Manager" to "Data Source > Main Database > Configuration".',paraId:8,tocIndex:3},{value:"When creating a collection, you can choose not to create an ID field.",paraId:9,tocIndex:4},{value:"Integer fields can be used as primary keys.",paraId:10,tocIndex:4},{value:"Single-line text fields can also be used as primary keys.",paraId:11,tocIndex:4},{value:"Relationship constraints support selecting other fields with Unique indexes set as non-primary key fields.",paraId:12,tocIndex:4},{value:'Added a "Sort" type field. Sorting fields are no longer automatically generated when creating collections and need to be manually created.',paraId:13,tocIndex:5},{value:"When selecting a field as a group, grouping will be done before sorting.",paraId:14,tocIndex:5},{value:"When enabling drag-and-drop sorting in table block, you need to select the sorting field.",paraId:15,tocIndex:5},{value:"When creating a Kanban block, you need to select the sorting field.",paraId:16,tocIndex:5},{value:"Added user management interface and unified user and role management under one menu.",paraId:17,tocIndex:6},{value:"Adjusted the role management interface to facilitate the management of user-associated roles, permissions, departments, etc.",paraId:18,tocIndex:6},{value:'Moved the original "Action Permissions" to the "Data Source" tab.',paraId:19,tocIndex:6},{value:"Organize users by departments, set hierarchical relationships, link roles to control permissions, and use departments as variables in workflows and expressions.",paraId:20,tocIndex:7},{value:`The approval plugin provides dedicated workflow types (triggers) "Initiate Approval" and "Approval" nodes for this process. Combined with NocoBase's unique custom data tables and custom blocks, various approval scenarios can be quickly and flexibly created and managed.`,paraId:21,tocIndex:8},{value:"Approval configuration",paraId:22,tocIndex:8},{value:"Approval process",paraId:23,tocIndex:8},{value:"Further details can be found in the documentation: ",paraId:24,tocIndex:8},{value:"Workflow Approval",paraId:25,tocIndex:8},{value:"This node immediately ends the current execution of the workflow when executed and ends with the status configured in the node. It is typically used for specific logic flow control, to exit the current workflow after meeting certain logical conditions, without continuing with subsequent processing. It can be likened to the return command in programming languages, used to exit the currently executing function.",paraId:26,tocIndex:9},{value:"Further details can be found in the documentation: ",paraId:27,tocIndex:9},{value:"End Process Node",paraId:28,tocIndex:9},{value:"Variables can be declared in the workflow or assigned values to previously declared variables, typically used to store temporary data in the workflow. It is suitable for scenarios where calculation results need to be stored for later use outside the branch (such as loops, parallelism, etc.).",paraId:29,tocIndex:10},{value:"Further details can be found in the documentation: ",paraId:30,tocIndex:10},{value:"Custom Variable Node",paraId:31,tocIndex:10},{value:'The request interceptor plugin provides a mechanism to intercept operations on forms, where the interception event is triggered after the corresponding form operation is submitted and before it is processed. If a "End Process" node is executed in the subsequent process flow after triggering, or if other nodes fail to execute (errors or other incomplete executions), the form operation will be intercepted, otherwise the scheduled operation will be executed normally. It can be used for business validation or logic checks to approve or intercept client-submitted create, update, and delete operations.',paraId:32,tocIndex:11},{value:"Further details can be found in the documentation: ",paraId:33,tocIndex:11},{value:"Request Interceptor",paraId:34,tocIndex:11},{value:"The response message node is used to provide feedback to the client with custom messages in specific types of workflows (such as request interception and form events).",paraId:35,tocIndex:12},{value:"Node configuration",paraId:36,tocIndex:12},{value:"Prompt message",paraId:37,tocIndex:12},{value:"Further details can be found in the documentation: ",paraId:38,tocIndex:12},{value:"Response Message Node",paraId:39,tocIndex:12},{value:"In this kernel change, some new version APIs conflict with the old version names. These conflicting old version APIs will be retained in this version but will be uniformly suffixed with ",paraId:40,tocIndex:14},{value:"_deprecated",paraId:40,tocIndex:14},{value:".",paraId:40,tocIndex:14},{value:"Original API",paraId:41,tocIndex:14},{value:"Deprecated API",paraId:41,tocIndex:14},{value:"New API",paraId:41,tocIndex:14},{value:"CollectionProvider",paraId:41,tocIndex:14},{value:"CollectionProvider_deprecated",paraId:41,tocIndex:14},{value:"CollectionProvider",paraId:41,tocIndex:14},{value:"useCollection",paraId:41,tocIndex:14},{value:"useCollection_deprecated",paraId:41,tocIndex:14},{value:"useCollection",paraId:41,tocIndex:14},{value:"useCollectionField",paraId:41,tocIndex:14},{value:"useCollectionField_deprecated",paraId:41,tocIndex:14},{value:"useCollectionField",paraId:41,tocIndex:14},{value:"useCollectionManager",paraId:41,tocIndex:14},{value:"useCollectionManager_deprecated",paraId:41,tocIndex:14},{value:"useCollectionManager",paraId:41,tocIndex:14},{value:"useContext(CollectionManagerContext)",paraId:41,tocIndex:14},{value:"useCollectionManager_deprecated",paraId:41,tocIndex:14},{value:"useCollectionManager",paraId:41,tocIndex:14},{value:"If you are using the above related APIs, you have two ways to change:",paraId:42,tocIndex:14},{value:"Simple replacement: Replace the original API with the one suffixed with ",paraId:43,tocIndex:14},{value:"_deprecated",paraId:43,tocIndex:14},{value:", for example, replace ",paraId:43,tocIndex:14},{value:"useCollection()",paraId:43,tocIndex:14},{value:" with ",paraId:43,tocIndex:14},{value:"useRecord_deprecated()",paraId:43,tocIndex:14},{value:".",paraId:43,tocIndex:14},{value:"Use the new API according to the new documentation: Although the names of the new APIs are the same as the old APIs, there are differences in parameters and return values. You need to refer to the new documentation",paraId:43,tocIndex:14},{value:"to adjust the corresponding code.",paraId:44,tocIndex:14},{value:"registerTemplate()",paraId:45,tocIndex:15},{value:" changed to ",paraId:45,tocIndex:15},{value:"app.dataSourceManager.addCollectionTemplates()",paraId:45,tocIndex:15},{value:"registerField()",paraId:45,tocIndex:15},{value:" changed to ",paraId:45,tocIndex:15},{value:"app.dataSourceManager.addFieldInterfaces()",paraId:45,tocIndex:15},{value:"registerGroup()",paraId:45,tocIndex:15},{value:" changed to ",paraId:45,tocIndex:15},{value:"app.dataSourceManager.addFieldInterfaceGroups()",paraId:45,tocIndex:15},{value:"useContext(CollectionManagerContext)",paraId:45,tocIndex:15},{value:" changed to ",paraId:45,tocIndex:15},{value:"useCollectionManager_deprecated()",paraId:45,tocIndex:15},{value:"Extend collections using ",paraId:45,tocIndex:15},{value:"ExtendCollectionsProvider",paraId:45,tocIndex:15},{value:"RecordProvider",paraId:45,tocIndex:15},{value:" requires explicit passing of the parent parameter when needed",paraId:45,tocIndex:15},{value:"Previously defined as an object, it now needs to be changed to a class. For example:",paraId:46,tocIndex:18},{value:"Before:",paraId:47,tocIndex:18},{value:`import { ICollectionTemplate } from '@nocobase/client'; const calendar: ICollectionTemplate = { name: 'calendar', @@ -7107,7 +7159,7 @@ export class MapPlugin extends Plugin { ... - + -`,paraId:76,tocIndex:26},{value:"RecordProvider is deprecated and will be removed in the future.",paraId:77},{value:"RecordProvider carries the old RecordContext, while CollectionRecordProvider does not.",paraId:77}],c3={},s3={title:"v0.21: 2024-03-29",toc:"menu",filename:"docs/en-US/welcome/release/v0210-changelog/index.md",lastUpdated:1732240239e3,description:"Changes to trigger names:"},u3=[{id:"v021-2024-03-29",depth:1,title:"v0.21: 2024-03-29"},{id:"announcement",depth:2,title:"Announcement"},{id:"new-features",depth:2,title:"New features"},{id:"multi-datasource-support-for-charts",depth:3,title:"Multi-DataSource support for Charts"},{id:"multi-datasource-support-for-workflow",depth:3,title:"Multi-DataSource support for workflow"},{id:"optimization-of-workflow-trigger-events",depth:3,title:"Optimization of workflow Trigger Events"},{id:"post-action-events",depth:4,title:"Post-action events"},{id:"pre-action-events",depth:4,title:"Pre-action events"},{id:"custom-brand-plugin",depth:3,title:"Custom brand Plugin"},{id:"support-for-nanoid-field",depth:3,title:"Support for nanoid field"},{id:"support-for-uuid-field",depth:3,title:"Support for uuid field"},{id:"support-for-unix-timestamp-field",depth:3,title:"Support for unix timestamp field"},{id:"number-type-field-supports-formatting-configuration",depth:3,title:"Number type field supports formatting configuration"},{id:"support-for-subpath-deployment",depth:3,title:"Support for subpath deployment"},{id:"block-performance-optimization",depth:3,title:"Block performance optimization"},{id:"support-for-skeleton-screen-effect",depth:4,title:"Support for skeleton screen effect"},{id:"distributed-processing-of-block-configuration",depth:4,title:"Distributed processing of block configuration"},{id:"incompatible-changes",depth:2,title:"Incompatible changes"},{id:"various-useprops-of-ui-schema-replaced-with-x-use-decorator-props-and-x-use-component-props",depth:3,title:"Various useProps of UI Schema replaced with x-use-decorator-props and x-use-component-props"}],p3=[{value:"For more information, see the [Data Visualization] documentation",paraId:0},{value:"For more information, see the [Workflow] documentation",paraId:1},{value:"Changes to trigger names:",paraId:2,tocIndex:5},{value:"Original Name",paraId:3,tocIndex:5},{value:"Changed to",paraId:3,tocIndex:5},{value:"Form Events, Operation Events",paraId:3,tocIndex:5},{value:"Post-operation Events",paraId:3,tocIndex:5},{value:"Scheduled Tasks",paraId:3,tocIndex:5},{value:"Scheduled Events",paraId:3,tocIndex:5},{value:"Request Interceptors",paraId:3,tocIndex:5},{value:"Pre-operation Events",paraId:3,tocIndex:5},{value:"Approval",paraId:3,tocIndex:5},{value:"Approval Events",paraId:3,tocIndex:5},{value:"Enhancements to trigger mode configuration for the following events:",paraId:4,tocIndex:5},{value:"For more information, see the [Workflow - Post-action events] documentation",paraId:5},{value:"For more information, see the [Workflow - Pre-action events] documentation",paraId:6},{value:"For more information, see the [Custom Branding] documentation",paraId:7},{value:"For more information, see the [nanoid field] documentation",paraId:8},{value:"For more information, see the [uuid field] documentation",paraId:9},{value:"For more information, see the [Unix timestamp field] documentation",paraId:10},{value:"For more information, see the [Field configure / Specific property settings / Number component] documentation",paraId:11},{value:"Added ",paraId:12,tocIndex:13},{value:"APP_PUBLIC_PATH",paraId:12,tocIndex:13},{value:" environment variable to support subpath deployment. For example:",paraId:12,tocIndex:13},{value:`APP_PUBLIC_PATH=/nocobase/ +`,paraId:76,tocIndex:26},{value:"RecordProvider is deprecated and will be removed in the future.",paraId:77},{value:"RecordProvider carries the old RecordContext, while CollectionRecordProvider does not.",paraId:77}],c3={},s3={title:"v0.21: 2024-03-29",toc:"menu",filename:"docs/en-US/welcome/release/v0210-changelog/index.md",lastUpdated:173254844e4,description:"Changes to trigger names:"},u3=[{id:"v021-2024-03-29",depth:1,title:"v0.21: 2024-03-29"},{id:"announcement",depth:2,title:"Announcement"},{id:"new-features",depth:2,title:"New features"},{id:"multi-datasource-support-for-charts",depth:3,title:"Multi-DataSource support for Charts"},{id:"multi-datasource-support-for-workflow",depth:3,title:"Multi-DataSource support for workflow"},{id:"optimization-of-workflow-trigger-events",depth:3,title:"Optimization of workflow Trigger Events"},{id:"post-action-events",depth:4,title:"Post-action events"},{id:"pre-action-events",depth:4,title:"Pre-action events"},{id:"custom-brand-plugin",depth:3,title:"Custom brand Plugin"},{id:"support-for-nanoid-field",depth:3,title:"Support for nanoid field"},{id:"support-for-uuid-field",depth:3,title:"Support for uuid field"},{id:"support-for-unix-timestamp-field",depth:3,title:"Support for unix timestamp field"},{id:"number-type-field-supports-formatting-configuration",depth:3,title:"Number type field supports formatting configuration"},{id:"support-for-subpath-deployment",depth:3,title:"Support for subpath deployment"},{id:"block-performance-optimization",depth:3,title:"Block performance optimization"},{id:"support-for-skeleton-screen-effect",depth:4,title:"Support for skeleton screen effect"},{id:"distributed-processing-of-block-configuration",depth:4,title:"Distributed processing of block configuration"},{id:"incompatible-changes",depth:2,title:"Incompatible changes"},{id:"various-useprops-of-ui-schema-replaced-with-x-use-decorator-props-and-x-use-component-props",depth:3,title:"Various useProps of UI Schema replaced with x-use-decorator-props and x-use-component-props"}],p3=[{value:"For more information, see the [Data Visualization] documentation",paraId:0},{value:"For more information, see the [Workflow] documentation",paraId:1},{value:"Changes to trigger names:",paraId:2,tocIndex:5},{value:"Original Name",paraId:3,tocIndex:5},{value:"Changed to",paraId:3,tocIndex:5},{value:"Form Events, Operation Events",paraId:3,tocIndex:5},{value:"Post-operation Events",paraId:3,tocIndex:5},{value:"Scheduled Tasks",paraId:3,tocIndex:5},{value:"Scheduled Events",paraId:3,tocIndex:5},{value:"Request Interceptors",paraId:3,tocIndex:5},{value:"Pre-operation Events",paraId:3,tocIndex:5},{value:"Approval",paraId:3,tocIndex:5},{value:"Approval Events",paraId:3,tocIndex:5},{value:"Enhancements to trigger mode configuration for the following events:",paraId:4,tocIndex:5},{value:"For more information, see the [Workflow - Post-action events] documentation",paraId:5},{value:"For more information, see the [Workflow - Pre-action events] documentation",paraId:6},{value:"For more information, see the [Custom Branding] documentation",paraId:7},{value:"For more information, see the [nanoid field] documentation",paraId:8},{value:"For more information, see the [uuid field] documentation",paraId:9},{value:"For more information, see the [Unix timestamp field] documentation",paraId:10},{value:"For more information, see the [Field configure / Specific property settings / Number component] documentation",paraId:11},{value:"Added ",paraId:12,tocIndex:13},{value:"APP_PUBLIC_PATH",paraId:12,tocIndex:13},{value:" environment variable to support subpath deployment. For example:",paraId:12,tocIndex:13},{value:`APP_PUBLIC_PATH=/nocobase/ `,paraId:13,tocIndex:13},{value:"Access locally via URL ",paraId:14,tocIndex:13},{value:"http://localhost:13000/nocobase/",paraId:14,tocIndex:13},{value:"Example nginx proxy:",paraId:15,tocIndex:13},{value:`server { listen 80; server_name your_domain.com; # Replace your_domain.com with your domain @@ -7142,7 +7194,7 @@ export class MapPlugin extends Plugin { - useSourceId: "{{ useSourceId }}" - } } -`,paraId:28,tocIndex:18},{value:"More information about x-use-decorator-props and the distinction between static and dynamic properties can be found here: ",paraId:29,tocIndex:18},{value:"Static and Dynamic Properties",paraId:29,tocIndex:18},{value:".",paraId:29,tocIndex:18}],I3={},_3={title:"BlockProvider",toc:"menu",filename:"docs/en-US/api/client/extensions/block-provider.md",lastUpdated:1732240239e3},v3=[{id:"blockprovider",depth:1,title:"BlockProvider"},{id:"kernel-methods",depth:2,title:"Kernel Methods"},{id:"blockprovider-",depth:3,title:""},{id:"useblockrequestcontext",depth:3,title:"useBlockRequestContext()"},{id:"build-in-blockprovider-components",depth:2,title:"Build-in BlockProvider Components"},{id:"calendarblockprovider-",depth:3,title:""},{id:"tablefieldprovider-",depth:3,title:""},{id:"tableblockprovider-",depth:3,title:""},{id:"tableselectorprovider-",depth:3,title:""},{id:"formblockprovider-",depth:3,title:""},{id:"formfieldprovider-",depth:3,title:""},{id:"detailsblockprovider-",depth:3,title:""},{id:"kanbanblockprovider-",depth:3,title:""}],m3=[{value:"",paraId:0},{value:"useBlockRequestContext()",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0}],h3={},f3={title:"ICollection",toc:"menu",filename:"docs/en-US/api/data-source-manager/i-collection.md",lastUpdated:1732240239e3,description:"ICollection \u662F\u6570\u636E\u6A21\u578B\u7684\u63A5\u53E3\uFF0C\u5176\u4E2D\u5305\u542B\u4E86\u6A21\u578B\u7684\u540D\u79F0\u3001\u5B57\u6BB5\u3001\u5173\u8054\u7B49\u4FE1\u606F\u3002"},x3=[{id:"icollection",depth:1,title:"ICollection"},{id:"\u6210\u5458",depth:2,title:"\u6210\u5458"},{id:"repository",depth:3,title:"repository"},{id:"api",depth:2,title:"API"},{id:"updateoptions",depth:3,title:"updateOptions()"},{id:"\u7B7E\u540D",depth:4,title:"\u7B7E\u540D"},{id:"setfield",depth:3,title:"setField()"},{id:"\u7B7E\u540D-1",depth:4,title:"\u7B7E\u540D"},{id:"removefield",depth:3,title:"removeField()"},{id:"\u7B7E\u540D-2",depth:4,title:"\u7B7E\u540D"},{id:"getfields",depth:3,title:"getFields()"},{id:"\u7B7E\u540D-3",depth:4,title:"\u7B7E\u540D"},{id:"getfield",depth:3,title:"getField()"},{id:"\u7B7E\u540D-4",depth:4,title:"\u7B7E\u540D"}],g3=[{value:"ICollection",paraId:0,tocIndex:0},{value:" \u662F\u6570\u636E\u6A21\u578B\u7684\u63A5\u53E3\uFF0C\u5176\u4E2D\u5305\u542B\u4E86\u6A21\u578B\u7684\u540D\u79F0\u3001\u5B57\u6BB5\u3001\u5173\u8054\u7B49\u4FE1\u606F\u3002",paraId:0,tocIndex:0},{value:`export interface ICollection { +`,paraId:28,tocIndex:18},{value:"More information about x-use-decorator-props and the distinction between static and dynamic properties can be found here: ",paraId:29,tocIndex:18},{value:"Static and Dynamic Properties",paraId:29,tocIndex:18},{value:".",paraId:29,tocIndex:18}],I3={},_3={title:"BlockProvider",toc:"menu",filename:"docs/en-US/api/client/extensions/block-provider.md",lastUpdated:173254844e4},v3=[{id:"blockprovider",depth:1,title:"BlockProvider"},{id:"kernel-methods",depth:2,title:"Kernel Methods"},{id:"blockprovider-",depth:3,title:""},{id:"useblockrequestcontext",depth:3,title:"useBlockRequestContext()"},{id:"build-in-blockprovider-components",depth:2,title:"Build-in BlockProvider Components"},{id:"calendarblockprovider-",depth:3,title:""},{id:"tablefieldprovider-",depth:3,title:""},{id:"tableblockprovider-",depth:3,title:""},{id:"tableselectorprovider-",depth:3,title:""},{id:"formblockprovider-",depth:3,title:""},{id:"formfieldprovider-",depth:3,title:""},{id:"detailsblockprovider-",depth:3,title:""},{id:"kanbanblockprovider-",depth:3,title:""}],m3=[{value:"",paraId:0},{value:"useBlockRequestContext()",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0}],h3={},f3={title:"ICollection",toc:"menu",filename:"docs/en-US/api/data-source-manager/i-collection.md",lastUpdated:173254844e4,description:"ICollection \u662F\u6570\u636E\u6A21\u578B\u7684\u63A5\u53E3\uFF0C\u5176\u4E2D\u5305\u542B\u4E86\u6A21\u578B\u7684\u540D\u79F0\u3001\u5B57\u6BB5\u3001\u5173\u8054\u7B49\u4FE1\u606F\u3002"},x3=[{id:"icollection",depth:1,title:"ICollection"},{id:"\u6210\u5458",depth:2,title:"\u6210\u5458"},{id:"repository",depth:3,title:"repository"},{id:"api",depth:2,title:"API"},{id:"updateoptions",depth:3,title:"updateOptions()"},{id:"\u7B7E\u540D",depth:4,title:"\u7B7E\u540D"},{id:"setfield",depth:3,title:"setField()"},{id:"\u7B7E\u540D-1",depth:4,title:"\u7B7E\u540D"},{id:"removefield",depth:3,title:"removeField()"},{id:"\u7B7E\u540D-2",depth:4,title:"\u7B7E\u540D"},{id:"getfields",depth:3,title:"getFields()"},{id:"\u7B7E\u540D-3",depth:4,title:"\u7B7E\u540D"},{id:"getfield",depth:3,title:"getField()"},{id:"\u7B7E\u540D-4",depth:4,title:"\u7B7E\u540D"}],g3=[{value:"ICollection",paraId:0,tocIndex:0},{value:" \u662F\u6570\u636E\u6A21\u578B\u7684\u63A5\u53E3\uFF0C\u5176\u4E2D\u5305\u542B\u4E86\u6A21\u578B\u7684\u540D\u79F0\u3001\u5B57\u6BB5\u3001\u5173\u8054\u7B49\u4FE1\u606F\u3002",paraId:0,tocIndex:0},{value:`export interface ICollection { repository: IRepository; updateOptions(options: any): void; @@ -7157,7 +7209,7 @@ export class MapPlugin extends Plugin { [key: string]: any; } -`,paraId:1,tocIndex:0},{value:"ICollection",paraId:2,tocIndex:2},{value:" \u6240\u5C5E\u7684 ",paraId:2,tocIndex:2},{value:"Repository",paraId:2,tocIndex:2},{value:" \u5B9E\u4F8B",paraId:2,tocIndex:2},{value:"\u66F4\u65B0 ",paraId:3,tocIndex:4},{value:"Collection",paraId:3,tocIndex:4},{value:" \u7684\u5C5E\u6027",paraId:3,tocIndex:4},{value:"updateOptions(options: any): void",paraId:4,tocIndex:5},{value:"\u8BBE\u7F6E ",paraId:5,tocIndex:6},{value:"Collection",paraId:5,tocIndex:6},{value:" \u7684\u5B57\u6BB5",paraId:5,tocIndex:6},{value:"setField(name: string, options: any): IField",paraId:6,tocIndex:7},{value:"\u79FB\u9664 ",paraId:7,tocIndex:8},{value:"Collection",paraId:7,tocIndex:8},{value:" \u7684\u5B57\u6BB5",paraId:7,tocIndex:8},{value:"removeField(name: string): void",paraId:8,tocIndex:9},{value:"\u83B7\u53D6 ",paraId:9,tocIndex:10},{value:"Collection",paraId:9,tocIndex:10},{value:" \u7684\u6240\u6709\u5B57\u6BB5",paraId:9,tocIndex:10},{value:"getFields(): Array",paraId:10,tocIndex:11},{value:"\u6839\u636E\u540D\u79F0\u83B7\u53D6 ",paraId:11,tocIndex:12},{value:"Collection",paraId:11,tocIndex:12},{value:" \u7684\u5B57\u6BB5",paraId:11,tocIndex:12},{value:"getField(name: string): IField",paraId:12,tocIndex:13}],b3={},y3={title:"IRepository",toc:"menu",filename:"docs/en-US/api/data-source-manager/i-repository.md",lastUpdated:1732240239e3,description:"Repository \u63A5\u53E3\u5B9A\u4E49\u4E86\u4E00\u7CFB\u5217\u7684\u6A21\u578B\u64CD\u4F5C\u65B9\u6CD5\uFF0C\u7528\u4E8E\u9002\u914D\u6570\u636E\u6E90\u7684\u589E\u5220\u6539\u67E5\u64CD\u4F5C\u3002"},w3=[{id:"irepository",depth:1,title:"IRepository"},{id:"api",depth:2,title:"API"},{id:"find",depth:3,title:"find()"},{id:"\u7B7E\u540D",depth:4,title:"\u7B7E\u540D"},{id:"findone",depth:3,title:"findOne()"},{id:"\u7B7E\u540D-1",depth:4,title:"\u7B7E\u540D"},{id:"count",depth:3,title:"count()"},{id:"\u7B7E\u540D-2",depth:4,title:"\u7B7E\u540D"},{id:"findandcount",depth:3,title:"findAndCount()"},{id:"\u7B7E\u540D-3",depth:4,title:"\u7B7E\u540D"},{id:"create",depth:3,title:"create()"},{id:"\u7B7E\u540D-4",depth:4,title:"\u7B7E\u540D"},{id:"update",depth:3,title:"update()"},{id:"\u7B7E\u540D-5",depth:4,title:"\u7B7E\u540D"},{id:"destroy",depth:3,title:"destroy()"},{id:"\u7B7E\u540D-6",depth:4,title:"\u7B7E\u540D"}],k3=[{value:"Repository",paraId:0,tocIndex:0},{value:" \u63A5\u53E3\u5B9A\u4E49\u4E86\u4E00\u7CFB\u5217\u7684\u6A21\u578B\u64CD\u4F5C\u65B9\u6CD5\uFF0C\u7528\u4E8E\u9002\u914D\u6570\u636E\u6E90\u7684\u589E\u5220\u6539\u67E5\u64CD\u4F5C\u3002",paraId:0,tocIndex:0},{value:"\u6839\u636E\u67E5\u8BE2\u53C2\u6570\uFF0C\u7ED9\u51FA\u7B26\u5408\u6761\u4EF6\u7684\u6A21\u578B\u5217\u8868",paraId:1,tocIndex:2},{value:"find(options?: any): Promise",paraId:2,tocIndex:3},{value:"\u6839\u636E\u67E5\u8BE2\u53C2\u6570\uFF0C\u7ED9\u51FA\u7B26\u5408\u6761\u4EF6\u7684\u6A21\u578B\uFF0C\u5982\u679C\u6709\u591A\u4E2A\u7B26\u5408\u6761\u4EF6\u7684\u6A21\u578B\uFF0C\u53EA\u8FD4\u56DE\u7B2C\u4E00\u4E2A",paraId:3,tocIndex:4},{value:"findOne(options?: any): Promise",paraId:4,tocIndex:5},{value:"\u6839\u636E\u67E5\u8BE2\u53C2\u6570\uFF0C\u7ED9\u51FA\u7B26\u5408\u6761\u4EF6\u7684\u6A21\u578B\u6570\u91CF",paraId:5,tocIndex:6},{value:"count(options?: any): Promise",paraId:6,tocIndex:7},{value:"\u6839\u636E\u67E5\u8BE2\u53C2\u6570\uFF0C\u7ED9\u51FA\u7B26\u5408\u6761\u4EF6\u7684\u6A21\u578B\u5217\u8868\u548C\u6570\u91CF",paraId:7,tocIndex:8},{value:"findAndCount(options?: any): Promise<[IModel[], Number]>",paraId:8,tocIndex:9},{value:"\u521B\u5EFA\u4E00\u4E2A\u6A21\u578B\u6570\u636E\u5BF9\u8C61",paraId:9,tocIndex:10},{value:"create(options: any): void",paraId:10,tocIndex:11},{value:"\u6839\u636E\u67E5\u8BE2\u6761\u4EF6\uFF0C\u66F4\u65B0\u6A21\u578B\u6570\u636E\u5BF9\u8C61",paraId:11,tocIndex:12},{value:"update(options: any): void",paraId:12,tocIndex:13},{value:"\u6839\u636E\u67E5\u8BE2\u6761\u4EF6\uFF0C\u5220\u9664\u6A21\u578B\u6570\u636E\u5BF9\u8C61",paraId:13,tocIndex:14},{value:"destroy(options: any): void",paraId:14,tocIndex:15}],S3=e(59400),Pr=e.n(S3),$u,Gu,Vu,Ku,Zu,Yu,Qu,Ju,Xu,ep,ap,tp,np,U3={"docs-en-us-development-client-styles-and-themes-demo-0":{component:n.memo(n.lazy(io()(Ct()().mark(function Vt(){var Ga,va,Fa;return Ct()().wrap(function(Ka){for(;;)switch(Ka.prev=Ka.next){case 0:return Ka.next=2,Promise.all([e.e(57563),e.e(29799),e.e(25715),e.e(67050),e.e(83169),e.e(94210)]).then(e.bind(e,23344));case 2:return Ga=Ka.sent,va=Ga.createStyles,Fa=va(function(ft){var Ba=ft.token,vt=ft.css;return{container:{backgroundColor:Ba.colorBgLayout,borderRadius:Ba.borderRadiusLG,maxWidth:400,width:"100%",height:180,display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",marginLeft:"auto",marginRight:"auto"},card:vt($u||($u=Pr()([` +`,paraId:1,tocIndex:0},{value:"ICollection",paraId:2,tocIndex:2},{value:" \u6240\u5C5E\u7684 ",paraId:2,tocIndex:2},{value:"Repository",paraId:2,tocIndex:2},{value:" \u5B9E\u4F8B",paraId:2,tocIndex:2},{value:"\u66F4\u65B0 ",paraId:3,tocIndex:4},{value:"Collection",paraId:3,tocIndex:4},{value:" \u7684\u5C5E\u6027",paraId:3,tocIndex:4},{value:"updateOptions(options: any): void",paraId:4,tocIndex:5},{value:"\u8BBE\u7F6E ",paraId:5,tocIndex:6},{value:"Collection",paraId:5,tocIndex:6},{value:" \u7684\u5B57\u6BB5",paraId:5,tocIndex:6},{value:"setField(name: string, options: any): IField",paraId:6,tocIndex:7},{value:"\u79FB\u9664 ",paraId:7,tocIndex:8},{value:"Collection",paraId:7,tocIndex:8},{value:" \u7684\u5B57\u6BB5",paraId:7,tocIndex:8},{value:"removeField(name: string): void",paraId:8,tocIndex:9},{value:"\u83B7\u53D6 ",paraId:9,tocIndex:10},{value:"Collection",paraId:9,tocIndex:10},{value:" \u7684\u6240\u6709\u5B57\u6BB5",paraId:9,tocIndex:10},{value:"getFields(): Array",paraId:10,tocIndex:11},{value:"\u6839\u636E\u540D\u79F0\u83B7\u53D6 ",paraId:11,tocIndex:12},{value:"Collection",paraId:11,tocIndex:12},{value:" \u7684\u5B57\u6BB5",paraId:11,tocIndex:12},{value:"getField(name: string): IField",paraId:12,tocIndex:13}],b3={},y3={title:"IRepository",toc:"menu",filename:"docs/en-US/api/data-source-manager/i-repository.md",lastUpdated:173254844e4,description:"Repository \u63A5\u53E3\u5B9A\u4E49\u4E86\u4E00\u7CFB\u5217\u7684\u6A21\u578B\u64CD\u4F5C\u65B9\u6CD5\uFF0C\u7528\u4E8E\u9002\u914D\u6570\u636E\u6E90\u7684\u589E\u5220\u6539\u67E5\u64CD\u4F5C\u3002"},w3=[{id:"irepository",depth:1,title:"IRepository"},{id:"api",depth:2,title:"API"},{id:"find",depth:3,title:"find()"},{id:"\u7B7E\u540D",depth:4,title:"\u7B7E\u540D"},{id:"findone",depth:3,title:"findOne()"},{id:"\u7B7E\u540D-1",depth:4,title:"\u7B7E\u540D"},{id:"count",depth:3,title:"count()"},{id:"\u7B7E\u540D-2",depth:4,title:"\u7B7E\u540D"},{id:"findandcount",depth:3,title:"findAndCount()"},{id:"\u7B7E\u540D-3",depth:4,title:"\u7B7E\u540D"},{id:"create",depth:3,title:"create()"},{id:"\u7B7E\u540D-4",depth:4,title:"\u7B7E\u540D"},{id:"update",depth:3,title:"update()"},{id:"\u7B7E\u540D-5",depth:4,title:"\u7B7E\u540D"},{id:"destroy",depth:3,title:"destroy()"},{id:"\u7B7E\u540D-6",depth:4,title:"\u7B7E\u540D"}],k3=[{value:"Repository",paraId:0,tocIndex:0},{value:" \u63A5\u53E3\u5B9A\u4E49\u4E86\u4E00\u7CFB\u5217\u7684\u6A21\u578B\u64CD\u4F5C\u65B9\u6CD5\uFF0C\u7528\u4E8E\u9002\u914D\u6570\u636E\u6E90\u7684\u589E\u5220\u6539\u67E5\u64CD\u4F5C\u3002",paraId:0,tocIndex:0},{value:"\u6839\u636E\u67E5\u8BE2\u53C2\u6570\uFF0C\u7ED9\u51FA\u7B26\u5408\u6761\u4EF6\u7684\u6A21\u578B\u5217\u8868",paraId:1,tocIndex:2},{value:"find(options?: any): Promise",paraId:2,tocIndex:3},{value:"\u6839\u636E\u67E5\u8BE2\u53C2\u6570\uFF0C\u7ED9\u51FA\u7B26\u5408\u6761\u4EF6\u7684\u6A21\u578B\uFF0C\u5982\u679C\u6709\u591A\u4E2A\u7B26\u5408\u6761\u4EF6\u7684\u6A21\u578B\uFF0C\u53EA\u8FD4\u56DE\u7B2C\u4E00\u4E2A",paraId:3,tocIndex:4},{value:"findOne(options?: any): Promise",paraId:4,tocIndex:5},{value:"\u6839\u636E\u67E5\u8BE2\u53C2\u6570\uFF0C\u7ED9\u51FA\u7B26\u5408\u6761\u4EF6\u7684\u6A21\u578B\u6570\u91CF",paraId:5,tocIndex:6},{value:"count(options?: any): Promise",paraId:6,tocIndex:7},{value:"\u6839\u636E\u67E5\u8BE2\u53C2\u6570\uFF0C\u7ED9\u51FA\u7B26\u5408\u6761\u4EF6\u7684\u6A21\u578B\u5217\u8868\u548C\u6570\u91CF",paraId:7,tocIndex:8},{value:"findAndCount(options?: any): Promise<[IModel[], Number]>",paraId:8,tocIndex:9},{value:"\u521B\u5EFA\u4E00\u4E2A\u6A21\u578B\u6570\u636E\u5BF9\u8C61",paraId:9,tocIndex:10},{value:"create(options: any): void",paraId:10,tocIndex:11},{value:"\u6839\u636E\u67E5\u8BE2\u6761\u4EF6\uFF0C\u66F4\u65B0\u6A21\u578B\u6570\u636E\u5BF9\u8C61",paraId:11,tocIndex:12},{value:"update(options: any): void",paraId:12,tocIndex:13},{value:"\u6839\u636E\u67E5\u8BE2\u6761\u4EF6\uFF0C\u5220\u9664\u6A21\u578B\u6570\u636E\u5BF9\u8C61",paraId:13,tocIndex:14},{value:"destroy(options: any): void",paraId:14,tocIndex:15}],S3=e(59400),Pr=e.n(S3),$u,Gu,Vu,Ku,Zu,Yu,Qu,Ju,Xu,ep,ap,tp,np,U3={"docs-en-us-development-client-styles-and-themes-demo-0":{component:n.memo(n.lazy(io()(Ct()().mark(function Vt(){var Ga,va,Fa;return Ct()().wrap(function(Ka){for(;;)switch(Ka.prev=Ka.next){case 0:return Ka.next=2,Promise.all([e.e(57563),e.e(29799),e.e(25715),e.e(67050),e.e(83169),e.e(94210)]).then(e.bind(e,23344));case 2:return Ga=Ka.sent,va=Ga.createStyles,Fa=va(function(ft){var Ba=ft.token,vt=ft.css;return{container:{backgroundColor:Ba.colorBgLayout,borderRadius:Ba.borderRadiusLG,maxWidth:400,width:"100%",height:180,display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",marginLeft:"auto",marginRight:"auto"},card:vt($u||($u=Pr()([` color: `,`; box-shadow: `,`; &:hover { @@ -7475,7 +7527,7 @@ export default () => { ); -};`},"antd-style":{type:"NPM",value:"3.4.5"}}}}},P3={title:"Styles & Themes",toc:"menu",filename:"docs/en-US/development/client/styles-and-themes.md",lastUpdated:1732240239e3,description:"To better accommodate NocoBase's dynamic theme capabilities, it is recommended to use antd-style when writing styles in the plugin. By combining it with the existing theme tokens, you can efficiently manage the dynamic aspects of themes. Additionally, NocoBase provides a theme editor plugin that allows for easy style adjustments."},T3=[{id:"styles--themes",depth:1,title:"Styles & Themes"},{id:"writing-styles",depth:2,title:"Writing Styles"},{id:"writing-styles-with-createstyles-recommended",depth:3,title:"Writing Styles with createStyles (Recommended)"},{id:"creating-reusable-styles-with-createstylish",depth:3,title:"Creating Reusable Styles with createStylish"},{id:"injecting-global-styles-with-createglobalstyle",depth:3,title:"Injecting Global Styles with createGlobalStyle"},{id:"customizing-themes",depth:2,title:"Customizing Themes"},{id:"using-antds-theme-tokens",depth:3,title:"Using antd's Theme Tokens"},{id:"createstyles-example",depth:4,title:"createStyles Example"},{id:"createglobalstyle-example",depth:4,title:"createGlobalStyle Example"},{id:"debugging-themes",depth:2,title:"Debugging Themes"},{id:"using-the-theme-editor-plugin",depth:3,title:"Using the Theme Editor Plugin"}],C3=[{value:"To better accommodate NocoBase's dynamic theme capabilities, it is recommended to use ",paraId:0,tocIndex:0},{value:"antd-style",paraId:0,tocIndex:0},{value:" when writing styles in the plugin. By combining it with the existing ",paraId:0,tocIndex:0},{value:"theme tokens",paraId:0,tocIndex:0},{value:", you can efficiently manage the dynamic aspects of themes. Additionally, NocoBase provides a ",paraId:0,tocIndex:0},{value:"theme editor plugin",paraId:1,tocIndex:0},{value:" that allows for easy style adjustments.",paraId:0,tocIndex:0},{value:"createStyles",paraId:2},{value:"For detailed usage, refer to the ",paraId:3},{value:"createStyles API",paraId:3},{value:".",paraId:3},{value:"createStylish",paraId:2},{value:"For detailed usage, refer to the ",paraId:4},{value:"createStylish API",paraId:4},{value:".",paraId:4},{value:"createGlobalStyle",paraId:2},{value:"For detailed usage, refer to the ",paraId:5},{value:"createGlobalStyle API",paraId:5},{value:".",paraId:5},{value:"antd",paraId:2},{value:"createStyles",paraId:2},{value:"createGlobalStyle",paraId:2}],A3={"docs-en-us-development-client-ui-schema-toolbar-demo-schema-toolbar-basic":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,38174))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-toolbar-demo-schema-toolbar-basic",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(34573).Z},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(78534).Z}}}},"docs-en-us-development-client-ui-schema-toolbar-demo-custom":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,74851))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-toolbar-demo-custom",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(85652).Z},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(78534).Z}}}},"docs-en-us-development-client-ui-schema-toolbar-demo-grid":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,78015))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-toolbar-demo-grid",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(7174).Z},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(78534).Z}}}},"docs-en-us-development-client-ui-schema-toolbar-demo-button":{component:n.memo(n.lazy(function(){return Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(52433)]).then(e.bind(e,50885))})),asset:{type:"BLOCK",id:"docs-en-us-development-client-ui-schema-toolbar-demo-button",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:e(54922).Z},"@formily/react":{type:"NPM",value:"2.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},antd:{type:"NPM",value:"5.16.1"},react:{type:"NPM",value:"18.1.0"},"app.tsx":{type:"FILE",value:e(78534).Z}}}}},q3={title:"Schema toolbar",toc:"menu",filename:"docs/en-US/development/client/ui-schema/toolbar.md",lastUpdated:1732240239e3,description:"After activating the UI configuration, a toolbar corresponding to the Schema will appear when the mouse hovers over the specified block, field, or action."},E3=[{id:"schema-toolbar",depth:1,title:"Schema toolbar"},{id:"usage",depth:2,title:"Usage"},{id:"schema-components-that-support-x-toolbar-include",depth:2,title:"Schema components that support x-toolbar include"},{id:"supporting-x-toolbar-for-custom-components",depth:2,title:"Supporting x-toolbar for custom components"}],D3=[{value:"After activating the UI configuration, a toolbar corresponding to the Schema will appear when the mouse hovers over the specified block, field, or action.",paraId:0,tocIndex:0},{value:"The toolbar consists of:",paraId:1,tocIndex:0},{value:"Title, default is empty",paraId:2,tocIndex:0},{value:"Drag control, providing drag capability, default is draggable",paraId:2,tocIndex:0},{value:"Initializer, default is empty",paraId:2,tocIndex:0},{value:"Settings, default is empty",paraId:2,tocIndex:0},{value:` { 'x-toolbar': 'MySchemaToolbar', 'x-toolbar-props': {}, } -`,paraId:5,tocIndex:1},{value:"x-toolbar",paraId:6},{value:"BlockItem",paraId:7,tocIndex:2},{value:" (wrapper component, generally used in ",paraId:7,tocIndex:2},{value:"x-decorator",paraId:7,tocIndex:2},{value:")",paraId:7,tocIndex:2},{value:"CardItem",paraId:7,tocIndex:2},{value:" (wrapper component, generally used in ",paraId:7,tocIndex:2},{value:"x-decorator",paraId:7,tocIndex:2},{value:")",paraId:7,tocIndex:2},{value:"FormItem",paraId:7,tocIndex:2},{value:" (wrapper component, generally used in ",paraId:7,tocIndex:2},{value:"x-decorator",paraId:7,tocIndex:2},{value:")",paraId:7,tocIndex:2},{value:"Action",paraId:7,tocIndex:2},{value:" (action button component, used in ",paraId:7,tocIndex:2},{value:"x-component",paraId:7,tocIndex:2},{value:")",paraId:7,tocIndex:2},{value:"If the schema's ",paraId:8,tocIndex:2},{value:"x-component",paraId:8,tocIndex:2},{value:" or ",paraId:8,tocIndex:2},{value:"x-decorator",paraId:8,tocIndex:2},{value:" uses the above components and ",paraId:8,tocIndex:2},{value:"x-settings",paraId:8,tocIndex:2},{value:" is configured, ",paraId:8,tocIndex:2},{value:"x-toolbar",paraId:8,tocIndex:2},{value:" can be omitted, and the built-in ",paraId:8,tocIndex:2},{value:"SchemaToolbar",paraId:8,tocIndex:2},{value:" will be used by default.",paraId:8,tocIndex:2},{value:"You can also customize the toolbar component.",paraId:9},{value:"When used in a Grid layout, schemas within the rows and columns will inherit the Grid's ",paraId:10},{value:"x-initializer",paraId:10},{value:".",paraId:10},{value:"x-toolbar",paraId:6}],O3={},R3={title:"Core concepts",toc:"menu",filename:"docs/en-US/development/server/collections/index.md",lastUpdated:1732240239e3,description:"Collection is a collection of all kinds of data, such as orders, products, users, comments, etc. Different collections are distinguished by name, e.g."},M3=[{id:"core-concepts",depth:1,title:"Core concepts"},{id:"collection",depth:2,title:"Collection"},{id:"collection-field",depth:2,title:"Collection Field"},{id:"field-type",depth:3,title:"Field Type"},{id:"field-component",depth:3,title:"Field Component"},{id:"field-interface",depth:3,title:"Field Interface"}],L3=[{value:"Collection is a collection of all kinds of data, such as orders, products, users, comments, etc. Different collections are distinguished by name, e.g.",paraId:0,tocIndex:1},{value:`// Orders +`,paraId:5,tocIndex:1},{value:"x-toolbar",paraId:6},{value:"BlockItem",paraId:7,tocIndex:2},{value:" (wrapper component, generally used in ",paraId:7,tocIndex:2},{value:"x-decorator",paraId:7,tocIndex:2},{value:")",paraId:7,tocIndex:2},{value:"CardItem",paraId:7,tocIndex:2},{value:" (wrapper component, generally used in ",paraId:7,tocIndex:2},{value:"x-decorator",paraId:7,tocIndex:2},{value:")",paraId:7,tocIndex:2},{value:"FormItem",paraId:7,tocIndex:2},{value:" (wrapper component, generally used in ",paraId:7,tocIndex:2},{value:"x-decorator",paraId:7,tocIndex:2},{value:")",paraId:7,tocIndex:2},{value:"Action",paraId:7,tocIndex:2},{value:" (action button component, used in ",paraId:7,tocIndex:2},{value:"x-component",paraId:7,tocIndex:2},{value:")",paraId:7,tocIndex:2},{value:"If the schema's ",paraId:8,tocIndex:2},{value:"x-component",paraId:8,tocIndex:2},{value:" or ",paraId:8,tocIndex:2},{value:"x-decorator",paraId:8,tocIndex:2},{value:" uses the above components and ",paraId:8,tocIndex:2},{value:"x-settings",paraId:8,tocIndex:2},{value:" is configured, ",paraId:8,tocIndex:2},{value:"x-toolbar",paraId:8,tocIndex:2},{value:" can be omitted, and the built-in ",paraId:8,tocIndex:2},{value:"SchemaToolbar",paraId:8,tocIndex:2},{value:" will be used by default.",paraId:8,tocIndex:2},{value:"You can also customize the toolbar component.",paraId:9},{value:"When used in a Grid layout, schemas within the rows and columns will inherit the Grid's ",paraId:10},{value:"x-initializer",paraId:10},{value:".",paraId:10},{value:"x-toolbar",paraId:6}],O3={},R3={title:"Core concepts",toc:"menu",filename:"docs/en-US/development/server/collections/index.md",lastUpdated:173254844e4,description:"Collection is a collection of all kinds of data, such as orders, products, users, comments, etc. Different collections are distinguished by name, e.g."},M3=[{id:"core-concepts",depth:1,title:"Core concepts"},{id:"collection",depth:2,title:"Collection"},{id:"collection-field",depth:2,title:"Collection Field"},{id:"field-type",depth:3,title:"Field Type"},{id:"field-component",depth:3,title:"Field Component"},{id:"field-interface",depth:3,title:"Field Interface"}],L3=[{value:"Collection is a collection of all kinds of data, such as orders, products, users, comments, etc. Different collections are distinguished by name, e.g.",paraId:0,tocIndex:1},{value:`// Orders { name: 'orders', } @@ -7599,7 +7651,7 @@ interface phone { interface: 'phone', name: 'phone', } -`,paraId:21,tocIndex:5},{value:"More Field Interface here",paraId:22,tocIndex:5}],N3={},z3={title:"Resources and Actions",toc:"menu",filename:"docs/en-US/development/server/resources-actions.md",lastUpdated:1732240239e3,description:"In the web development world, you may have heard of the concept of RESTful, and NocoBase borrows this concept of resources to map various entities in the system, such as data in a database, a file in a file system or a service. However, NocoBase does not fully follow the RESTful conventions based on practical considerations, but rather extends the specifications from the Google Cloud API Design Guide to fit more scenarios."},F3=[{id:"resources-and-actions",depth:1,title:"Resources and Actions"},{id:"basic-concepts",depth:2,title:"Basic concepts"},{id:"automatic-mapping-of-collections-to-resources",depth:3,title:"Automatic mapping of collections to resources"},{id:"customize-actions",depth:3,title:"Customize Actions"},{id:"action-parameters",depth:3,title:"Action parameters"},{id:"custom-resources",depth:3,title:"Custom resources"},{id:"example",depth:2,title:"Example"},{id:"overriding-default-actions",depth:3,title:"Overriding default actions"},{id:"custom-actions-for-collection-resources",depth:3,title:"Custom actions for collection resources"},{id:"parameter-merging",depth:3,title:"Parameter merging"},{id:"summary",depth:2,title:"Summary"}],B3=[{value:"In the web development world, you may have heard of the concept of RESTful, and NocoBase borrows this concept of resources to map various entities in the system, such as data in a database, a file in a file system or a service. However, NocoBase does not fully follow the RESTful conventions based on practical considerations, but rather extends the specifications from the ",paraId:0,tocIndex:0},{value:"Google Cloud API Design Guide",paraId:0,tocIndex:0},{value:" to fit more scenarios.",paraId:0,tocIndex:0},{value:"The same concept as resources in RESTful, which are externally available objects in the system that can be manipulated, such as data tables, files, and other custom objects.",paraId:1,tocIndex:1},{value:"Actions refer to reading and writing to resources, usually for accessing data, creating data, updating data, deleting data, etc. NocoBase implements access to resources by defining actions, the core of which is actually a Koa-compatible middleware function for handling requests.",paraId:2,tocIndex:1},{value:"NocoBase automatically maps collections to resources by default, and also provides a server-side data interface. So by default, as long as a collection is defined using ",paraId:3,tocIndex:2},{value:"db.collection()",paraId:3,tocIndex:2},{value:", you can access the data resources of this collection via NocoBase HTTP API. The name of the automatically generated resource is the same as the collection name, for example, the collection defined by ",paraId:3,tocIndex:2},{value:"db.collection({ name: 'users' })",paraId:3,tocIndex:2},{value:" has the corresponding resource name ",paraId:3,tocIndex:2},{value:"users",paraId:3,tocIndex:2},{value:".",paraId:3,tocIndex:2},{value:"Also, there are built-in common CRUD actions for these data resources, and built-in actions methods for associative data for relational data resources.",paraId:4,tocIndex:2},{value:"The default actions for a simple data resource:",paraId:5,tocIndex:2},{value:"list",paraId:6,tocIndex:2},{value:": Query the list of data in the collection",paraId:7,tocIndex:2},{value:"get",paraId:8,tocIndex:2},{value:": Query a single record in the collection",paraId:7,tocIndex:2},{value:"create",paraId:9,tocIndex:2},{value:": Create a single record to the collection",paraId:7,tocIndex:2},{value:"update",paraId:10,tocIndex:2},{value:": Update a single record on the collection",paraId:7,tocIndex:2},{value:"destroy",paraId:11,tocIndex:2},{value:": Delete a single record from the collection",paraId:7,tocIndex:2},{value:"In addition to simple CRUD actions, relational resources have default relational actions:",paraId:12,tocIndex:2},{value:"add",paraId:13,tocIndex:2},{value:": Add a association to the data",paraId:14,tocIndex:2},{value:"remove",paraId:15,tocIndex:2},{value:": Removes an association from the data",paraId:14,tocIndex:2},{value:"set",paraId:16,tocIndex:2},{value:": Set the association to the data",paraId:14,tocIndex:2},{value:"toggle",paraId:17,tocIndex:2},{value:": Add or remove associations to data",paraId:14,tocIndex:2},{value:"For example, to define an article collection and synchronize it to the database.",paraId:18,tocIndex:2},{value:`app.db.collection({ +`,paraId:21,tocIndex:5},{value:"More Field Interface here",paraId:22,tocIndex:5}],N3={},z3={title:"Resources and Actions",toc:"menu",filename:"docs/en-US/development/server/resources-actions.md",lastUpdated:173254844e4,description:"In the web development world, you may have heard of the concept of RESTful, and NocoBase borrows this concept of resources to map various entities in the system, such as data in a database, a file in a file system or a service. However, NocoBase does not fully follow the RESTful conventions based on practical considerations, but rather extends the specifications from the Google Cloud API Design Guide to fit more scenarios."},F3=[{id:"resources-and-actions",depth:1,title:"Resources and Actions"},{id:"basic-concepts",depth:2,title:"Basic concepts"},{id:"automatic-mapping-of-collections-to-resources",depth:3,title:"Automatic mapping of collections to resources"},{id:"customize-actions",depth:3,title:"Customize Actions"},{id:"action-parameters",depth:3,title:"Action parameters"},{id:"custom-resources",depth:3,title:"Custom resources"},{id:"example",depth:2,title:"Example"},{id:"overriding-default-actions",depth:3,title:"Overriding default actions"},{id:"custom-actions-for-collection-resources",depth:3,title:"Custom actions for collection resources"},{id:"parameter-merging",depth:3,title:"Parameter merging"},{id:"summary",depth:2,title:"Summary"}],B3=[{value:"In the web development world, you may have heard of the concept of RESTful, and NocoBase borrows this concept of resources to map various entities in the system, such as data in a database, a file in a file system or a service. However, NocoBase does not fully follow the RESTful conventions based on practical considerations, but rather extends the specifications from the ",paraId:0,tocIndex:0},{value:"Google Cloud API Design Guide",paraId:0,tocIndex:0},{value:" to fit more scenarios.",paraId:0,tocIndex:0},{value:"The same concept as resources in RESTful, which are externally available objects in the system that can be manipulated, such as data tables, files, and other custom objects.",paraId:1,tocIndex:1},{value:"Actions refer to reading and writing to resources, usually for accessing data, creating data, updating data, deleting data, etc. NocoBase implements access to resources by defining actions, the core of which is actually a Koa-compatible middleware function for handling requests.",paraId:2,tocIndex:1},{value:"NocoBase automatically maps collections to resources by default, and also provides a server-side data interface. So by default, as long as a collection is defined using ",paraId:3,tocIndex:2},{value:"db.collection()",paraId:3,tocIndex:2},{value:", you can access the data resources of this collection via NocoBase HTTP API. The name of the automatically generated resource is the same as the collection name, for example, the collection defined by ",paraId:3,tocIndex:2},{value:"db.collection({ name: 'users' })",paraId:3,tocIndex:2},{value:" has the corresponding resource name ",paraId:3,tocIndex:2},{value:"users",paraId:3,tocIndex:2},{value:".",paraId:3,tocIndex:2},{value:"Also, there are built-in common CRUD actions for these data resources, and built-in actions methods for associative data for relational data resources.",paraId:4,tocIndex:2},{value:"The default actions for a simple data resource:",paraId:5,tocIndex:2},{value:"list",paraId:6,tocIndex:2},{value:": Query the list of data in the collection",paraId:7,tocIndex:2},{value:"get",paraId:8,tocIndex:2},{value:": Query a single record in the collection",paraId:7,tocIndex:2},{value:"create",paraId:9,tocIndex:2},{value:": Create a single record to the collection",paraId:7,tocIndex:2},{value:"update",paraId:10,tocIndex:2},{value:": Update a single record on the collection",paraId:7,tocIndex:2},{value:"destroy",paraId:11,tocIndex:2},{value:": Delete a single record from the collection",paraId:7,tocIndex:2},{value:"In addition to simple CRUD actions, relational resources have default relational actions:",paraId:12,tocIndex:2},{value:"add",paraId:13,tocIndex:2},{value:": Add a association to the data",paraId:14,tocIndex:2},{value:"remove",paraId:15,tocIndex:2},{value:": Removes an association from the data",paraId:14,tocIndex:2},{value:"set",paraId:16,tocIndex:2},{value:": Set the association to the data",paraId:14,tocIndex:2},{value:"toggle",paraId:17,tocIndex:2},{value:": Add or remove associations to data",paraId:14,tocIndex:2},{value:"For example, to define an article collection and synchronize it to the database.",paraId:18,tocIndex:2},{value:`app.db.collection({ name: 'posts', fields: [{ type: 'string', name: 'title' }], }); @@ -7868,16 +7920,16 @@ export default class ShopPlugin extends Plugin { }); } } -`,paraId:79,tocIndex:9},{value:"Putting some of the business logic (especially the preprocessing) into middleware makes our code clearer and easier to maintain.",paraId:80,tocIndex:9},{value:"With the above example we have described how to define resources and related actions. To review this chapter.",paraId:81,tocIndex:10},{value:"Automatic mapping of collections to resources",paraId:82,tocIndex:10},{value:"Built-in default resource actions",paraId:82,tocIndex:10},{value:"Custom actions on resources",paraId:82,tocIndex:10},{value:"Parameter merging order and strategy for operations",paraId:82,tocIndex:10},{value:"The code covered in this chapter is included in a complete sample package ",paraId:83,tocIndex:10},{value:"packages/samples/shop-actions",paraId:83,tocIndex:10},{value:", which can be run directly locally to see the results.",paraId:83,tocIndex:10}],j3={},H3={title:"Custom Request",toc:"menu",filename:"docs/en-US/handbook/action-custom-request/index.md",lastUpdated:1732240239e3,description:"This plugin is built-in, so no separate installation is required."},W3=[{id:"custom-request",depth:1,title:"Custom Request"},{id:"overview",depth:2,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"instructions-for-use",depth:2,title:"Instructions for Use"},{id:"configuring-permissions",depth:3,title:"Configuring Permissions"},{id:"variables",depth:3,title:"Variables"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"},{id:"request-settings",depth:3,title:"Request Settings"},{id:"access-control",depth:3,title:"Access Control"}],$3=[{value:"This plugin is built-in, so no separate installation is required.",paraId:0,tocIndex:2},{value:'When the "Allows to configuration interface" option is selected, you can set up custom requests.',paraId:1,tocIndex:4},{value:"The customRequests table is system-level, and permissions are controlled via the acl.registerSnippet method.",paraId:2,tocIndex:4},{value:`this.app.acl.registerSnippet({ +`,paraId:79,tocIndex:9},{value:"Putting some of the business logic (especially the preprocessing) into middleware makes our code clearer and easier to maintain.",paraId:80,tocIndex:9},{value:"With the above example we have described how to define resources and related actions. To review this chapter.",paraId:81,tocIndex:10},{value:"Automatic mapping of collections to resources",paraId:82,tocIndex:10},{value:"Built-in default resource actions",paraId:82,tocIndex:10},{value:"Custom actions on resources",paraId:82,tocIndex:10},{value:"Parameter merging order and strategy for operations",paraId:82,tocIndex:10},{value:"The code covered in this chapter is included in a complete sample package ",paraId:83,tocIndex:10},{value:"packages/samples/shop-actions",paraId:83,tocIndex:10},{value:", which can be run directly locally to see the results.",paraId:83,tocIndex:10}],j3={},H3={title:"Custom Request",toc:"menu",filename:"docs/en-US/handbook/action-custom-request/index.md",lastUpdated:173254844e4,description:"This plugin is built-in, so no separate installation is required."},W3=[{id:"custom-request",depth:1,title:"Custom Request"},{id:"overview",depth:2,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"instructions-for-use",depth:2,title:"Instructions for Use"},{id:"configuring-permissions",depth:3,title:"Configuring Permissions"},{id:"variables",depth:3,title:"Variables"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"},{id:"request-settings",depth:3,title:"Request Settings"},{id:"access-control",depth:3,title:"Access Control"}],$3=[{value:"This plugin is built-in, so no separate installation is required.",paraId:0,tocIndex:2},{value:'When the "Allows to configuration interface" option is selected, you can set up custom requests.',paraId:1,tocIndex:4},{value:"The customRequests table is system-level, and permissions are controlled via the acl.registerSnippet method.",paraId:2,tocIndex:4},{value:`this.app.acl.registerSnippet({ name: 'ui.customRequests', // Permission for configuring interface related to ui.* actions: ['customRequests:*'], }); -`,paraId:3,tocIndex:4},{value:"You can configure variables within both the URL and request body.",paraId:4,tocIndex:5},{value:"Current record",paraId:5,tocIndex:5},{value:"Current user",paraId:5,tocIndex:5},{value:"Current time",paraId:5,tocIndex:5},{value:"API token (supported by v1.3.22-beta and above)",paraId:5,tocIndex:5},{value:"Each custom request can have custom role-based permissions, with default permissions granted to all users.",paraId:6,tocIndex:8}],G3={},V3={title:"Markdown (Vditor)",toc:"menu",filename:"docs/en-US/handbook/field-markdown-vditor/index.md",lastUpdated:1732240239e3,description:"Coming soon."},K3=[{id:"markdown-vditor",depth:1,title:"Markdown (Vditor)"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"example",depth:2,title:"Example"}],Z3=[{value:"Coming soon.",paraId:0,tocIndex:3}],Y3={},Q3={title:"Add Record",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/add-record.md",lastUpdated:1732240239e3,description:'The "Add Record" feature allows users to seamlessly insert records into any data table as part of an operation.'},J3=[{id:"add-record",depth:1,title:"Add Record"},{id:"introduction",depth:2,title:"Introduction"},{id:"using-tables-to-select-records",depth:2,title:"Using Tables to Select Records"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"}],X3=[{value:'The "Add Record" feature allows users to seamlessly insert records into any data table as part of an operation.',paraId:0,tocIndex:1},{value:"Select the target data table and add a form block.",paraId:1,tocIndex:1},{value:'This functionality is currently designed for setting default field values in the "Add Record" operation within table blocks.',paraId:2,tocIndex:2},{value:'For example, the Order table and the Product table have a many-to-many relationship. In the Product table block, you can configure the "Add Record" operation to input data into the Order table.',paraId:3,tocIndex:2},{value:'In this case, set the default value of the "Product" relationship field in the Order table to "Table selected records".',paraId:4,tocIndex:2},{value:"Here's the complete operation:",paraId:5,tocIndex:2},{value:"Edit Button",paraId:6,tocIndex:3},{value:"Open Mode",paraId:7,tocIndex:3},{value:"Popup Size",paraId:8,tocIndex:3}],ek={},ak={title:"Table Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/data-blocks/table.md",lastUpdated:1732240239e3,description:"The table block is one of the core data blocks built into NocoBase, displaying and managing structured data in table form. It features flexible configuration options for customizing table columns, column widths, sorting rules, data scope, and includes various built-in actions for configuration: filter, add new, duplicate, edit, delete, etc."},tk=[{id:"table-block",depth:1,title:"Table Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"data-scope",depth:3,title:"Data Scope"},{id:"setting-sorting-rule",depth:3,title:"Setting Sorting Rule"},{id:"connecting-data-blocks",depth:3,title:"Connecting Data Blocks"},{id:"configure-fields",depth:2,title:"Configure Fields"},{id:"fields-in-current-collection",depth:3,title:"Fields in Current Collection"},{id:"fields-in-related-collections",depth:3,title:"Fields in Related Collections"},{id:"display-inherited-table-fields-parent-table-fields",depth:3,title:"Display Inherited Table Fields (Parent Table Fields)"},{id:"configure-actions",depth:2,title:"Configure Actions"},{id:"global-actions",depth:3,title:"Global Actions"},{id:"row-actions",depth:3,title:"Row Actions"}],nk=[{value:"The table block is one of the core data blocks built into NocoBase, displaying and managing structured data in table form. It features flexible configuration options for customizing table columns, column widths, sorting rules, data scope, and includes various built-in actions for configuration: filter, add new, duplicate, edit, delete, etc.",paraId:0,tocIndex:1},{value:` +`,paraId:3,tocIndex:4},{value:"You can configure variables within both the URL and request body.",paraId:4,tocIndex:5},{value:"Current record",paraId:5,tocIndex:5},{value:"Current user",paraId:5,tocIndex:5},{value:"Current time",paraId:5,tocIndex:5},{value:"API token (supported by v1.3.22-beta and above)",paraId:5,tocIndex:5},{value:"Each custom request can have custom role-based permissions, with default permissions granted to all users.",paraId:6,tocIndex:8}],G3={},V3={title:"Markdown (Vditor)",toc:"menu",filename:"docs/en-US/handbook/field-markdown-vditor/index.md",lastUpdated:173254844e4,description:"Coming soon."},K3=[{id:"markdown-vditor",depth:1,title:"Markdown (Vditor)"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"example",depth:2,title:"Example"}],Z3=[{value:"Coming soon.",paraId:0,tocIndex:3}],Y3={},Q3={title:"Add Record",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/add-record.md",lastUpdated:173254844e4,description:'The "Add Record" feature allows users to seamlessly insert records into any data table as part of an operation.'},J3=[{id:"add-record",depth:1,title:"Add Record"},{id:"introduction",depth:2,title:"Introduction"},{id:"using-tables-to-select-records",depth:2,title:"Using Tables to Select Records"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"}],X3=[{value:'The "Add Record" feature allows users to seamlessly insert records into any data table as part of an operation.',paraId:0,tocIndex:1},{value:"Select the target data table and add a form block.",paraId:1,tocIndex:1},{value:'This functionality is currently designed for setting default field values in the "Add Record" operation within table blocks.',paraId:2,tocIndex:2},{value:'For example, the Order table and the Product table have a many-to-many relationship. In the Product table block, you can configure the "Add Record" operation to input data into the Order table.',paraId:3,tocIndex:2},{value:'In this case, set the default value of the "Product" relationship field in the Order table to "Table selected records".',paraId:4,tocIndex:2},{value:"Here's the complete operation:",paraId:5,tocIndex:2},{value:"Edit Button",paraId:6,tocIndex:3},{value:"Open Mode",paraId:7,tocIndex:3},{value:"Popup Size",paraId:8,tocIndex:3}],e4={},a4={title:"Table Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/data-blocks/table.md",lastUpdated:173254844e4,description:"The table block is one of the core data blocks built into NocoBase, displaying and managing structured data in table form. It features flexible configuration options for customizing table columns, column widths, sorting rules, data scope, and includes various built-in actions for configuration: filter, add new, duplicate, edit, delete, etc."},t4=[{id:"table-block",depth:1,title:"Table Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"data-scope",depth:3,title:"Data Scope"},{id:"setting-sorting-rule",depth:3,title:"Setting Sorting Rule"},{id:"connecting-data-blocks",depth:3,title:"Connecting Data Blocks"},{id:"configure-fields",depth:2,title:"Configure Fields"},{id:"fields-in-current-collection",depth:3,title:"Fields in Current Collection"},{id:"fields-in-related-collections",depth:3,title:"Fields in Related Collections"},{id:"display-inherited-table-fields-parent-table-fields",depth:3,title:"Display Inherited Table Fields (Parent Table Fields)"},{id:"configure-actions",depth:2,title:"Configure Actions"},{id:"global-actions",depth:3,title:"Global Actions"},{id:"row-actions",depth:3,title:"Row Actions"}],n4=[{value:"The table block is one of the core data blocks built into NocoBase, displaying and managing structured data in table form. It features flexible configuration options for customizing table columns, column widths, sorting rules, data scope, and includes various built-in actions for configuration: filter, add new, duplicate, edit, delete, etc.",paraId:0,tocIndex:1},{value:` `,paraId:1},{value:` `,paraId:1},{value:'Example: Default filter for invoices with the "Shipped" status.',paraId:2,tocIndex:4},{value:"For more information, refer to ",paraId:3,tocIndex:4},{value:"Setting Data Scope",paraId:4,tocIndex:4},{value:".",paraId:3,tocIndex:4},{value:"Example: Display invoices in reverse order by shipping date.",paraId:5,tocIndex:5},{value:"For more information, refer to ",paraId:6,tocIndex:5},{value:"Setting Sorting Rule",paraId:7,tocIndex:5},{value:".",paraId:6,tocIndex:5},{value:"Example: Connect the order table block with the order details block to achieve filter linkage.",paraId:8,tocIndex:6},{value:` `,paraId:1},{value:` - `,paraId:1},{value:"For more information, refer to ",paraId:9,tocIndex:6},{value:"Connecting Data Blocks",paraId:10,tocIndex:6},{value:".",paraId:9,tocIndex:6},{value:"Edit Block Title",paraId:11,tocIndex:6},{value:"Set Data Loading Mode",paraId:12,tocIndex:6},{value:"Save as Block Template",paraId:13,tocIndex:6},{value:"Example: Lease order table inherits from the order table.",paraId:14,tocIndex:10},{value:"Configuration options for table column fields can be found in ",paraId:15,tocIndex:10},{value:"Table Column Fields",paraId:16,tocIndex:10},{value:".",paraId:15,tocIndex:10},{value:"Filter",paraId:17,tocIndex:12},{value:"Add",paraId:18,tocIndex:12},{value:"Delete",paraId:19,tocIndex:12},{value:"Refresh",paraId:20,tocIndex:12},{value:"Import",paraId:21,tocIndex:12},{value:"Export",paraId:22,tocIndex:12},{value:"Add record",paraId:23,tocIndex:12},{value:"Bulk Update",paraId:24,tocIndex:12},{value:"Bulk Edit",paraId:25,tocIndex:12},{value:"View",paraId:26,tocIndex:13},{value:"Edit",paraId:27,tocIndex:13},{value:"Duplicate",paraId:28,tocIndex:13},{value:"Delete",paraId:29,tocIndex:13},{value:"Popup",paraId:30,tocIndex:13},{value:"Update Record",paraId:31,tocIndex:13},{value:"Custom Request",paraId:32,tocIndex:13}],ok={},rk={title:"Association Field Component",toc:"menu",filename:"docs/en-US/handbook/ui/fields/association-field.md",lastUpdated:1732240239e3,description:"NocoBase's association field components are designed to help users better display and handle associated data. Regardless of the type of relationship, these components are flexible and universal. Users can select and configure these components according to specific needs."},dk=[{id:"association-field-component",depth:1,title:"Association Field Component"},{id:"introduction",depth:2,title:"Introduction"},{id:"dropdown-selector",depth:3,title:"Dropdown Selector"},{id:"record-picker",depth:3,title:"Record Picker"},{id:"cascade-selector",depth:3,title:"Cascade Selector"},{id:"sub-form",depth:3,title:"Sub-Form"},{id:"sub-form-pop-up",depth:3,title:"Sub-Form (Pop-up)"},{id:"sub-table",depth:3,title:"Sub-Table"},{id:"sub-detail",depth:3,title:"Sub-Detail"},{id:"file-manager",depth:3,title:"File Manager"},{id:"title",depth:3,title:"Title"},{id:"tag",depth:3,title:"Tag"}],ik=[{value:"NocoBase's association field components are designed to help users better display and handle associated data. Regardless of the type of relationship, these components are flexible and universal. Users can select and configure these components according to specific needs.",paraId:0,tocIndex:1},{value:"All association fields whose target collection is not a file collection, the default component in the edit state is a drop-down selector. The drop-down option displays the value of the title field, which is suitable for quickly selecting associated data by displaying a key field information.",paraId:1,tocIndex:2},{value:"For more information, refer to ",paraId:2,tocIndex:2},{value:"Dropdown Selector",paraId:3,tocIndex:2},{value:"The record picker presents data in the form of a pop-up window. Users can configure relationship fields (including relationship's relationship fields) in the record selector, allowing for more accurate selection of associated data.",paraId:4,tocIndex:3},{value:"For more information, refer to ",paraId:5,tocIndex:3},{value:"Record Picker",paraId:6,tocIndex:3},{value:"The cascade selector is suitable for relationship fields where the target collection is a tree collection. It allows users to select data according to the hierarchical structure of the tree collection data. It is applicable to scenarios such as province-city-district, industry classification, product attributes, and other cascade selection scenarios.",paraId:7,tocIndex:4},{value:"For more information, refer to ",paraId:8,tocIndex:4},{value:"Cascade Selector",paraId:9,tocIndex:4},{value:"When dealing with more complex relationship data, using a dropdown selector or data selector can be inconvenient. In this case, users need to frequently open pop-up windows. For this scenario, a sub-form can be used. Users can directly maintain relationship fields on the current page or current pop-up, without repeatedly opening new pop-ups, making the operation process smoother. Multi-level relationships are presented in the form of nested forms.",paraId:10,tocIndex:5},{value:"For more information, refer to ",paraId:11,tocIndex:5},{value:"Sub-Form",paraId:12,tocIndex:5},{value:"When the relationship level is deep and there are many data fields, the sub-form layout may appear lengthy, making it difficult to effectively present the primary and secondary relationship of the form. For this scenario, you can use a sub-form (pop-up). Users can move some non-key or infrequently used relationship fields from the main form to an independent pop-up for filling out, making the main form more concise and clear.",paraId:13,tocIndex:6},{value:"The Sub-Form (Pop-up) not only simplifies the form layout, but also solves the problem of not being able to directly fill in relationship field data in the sub-table.",paraId:14,tocIndex:6},{value:"For more information, refer to ",paraId:15,tocIndex:6},{value:"Sub-Form (Pop-up)",paraId:16,tocIndex:6},{value:"The sub-table presents one-to-many or many-to-many relationship records in the form of a table. It provides a clear, structured way to display and manage associated data, supporting the creation of new data in batches or the selection of existing data for association.",paraId:17,tocIndex:7},{value:"For more information, refer to ",paraId:18,tocIndex:7},{value:"Sub-Table",paraId:19,tocIndex:7},{value:"The sub-detail are the corresponding components of the sub-form in reading mode, and the multi-level relational data is displayed in a nested form.",paraId:20,tocIndex:8},{value:"For more information, refer to ",paraId:21,tocIndex:8},{value:"Sub-Detail",paraId:22,tocIndex:8},{value:"The file manager is a relationship field component specifically for dealing with relationship target collections as file collections.",paraId:23,tocIndex:9},{value:"For more information, refer to ",paraId:24,tocIndex:9},{value:"File Manager",paraId:25,tocIndex:9},{value:"The title component is a relationship field component used in reading mode, displaying key information of associated data through the configuration of the title field.",paraId:26,tocIndex:10},{value:"For more information, refer to ",paraId:27,tocIndex:10},{value:"Title",paraId:28,tocIndex:10},{value:"The tag component is a relationship field component used in reading mode. Using the tag component in data presentation can better classify and identify relationship data. It needs to configure the title field and color field (selected from the target table fields).",paraId:29,tocIndex:11},{value:"For more information, refer to ",paraId:30,tocIndex:11},{value:"Tag",paraId:31,tocIndex:11}],lk={},ck={title:"Data blocks - Form Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/generic/form-item.md",lastUpdated:1732240239e3,description:"Different types of fields in a form have different configuration options, allowing users to extend the configuration options through plugins to meet more personalized needs."},sk=[{id:"data-blocks---form-fields",depth:1,title:"Data blocks - Form Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"default-values",depth:3,title:"Default Values"},{id:"setting-validation-rules",depth:3,title:"Setting Validation Rules"},{id:"required-fields",depth:3,title:"Required Fields"},{id:"field-components",depth:3,title:"Field Components"},{id:"style",depth:3,title:"Style"}],uk=[{value:"Different types of fields in a form have different configuration options, allowing users to extend the configuration options through plugins to meet more personalized needs.",paraId:0,tocIndex:1},{value:"Displays fields related to associated tables (one-to-one or many-to-one relationship fields) as read-only.",paraId:1,tocIndex:1},{value:` - `,paraId:2},{value:"Supports setting constants/variables as the default values for fields.",paraId:3,tocIndex:3},{value:"For more information, refer to ",paraId:4,tocIndex:3},{value:"Setting Default Values",paraId:5,tocIndex:3},{value:".",paraId:4,tocIndex:3},{value:"For more information, refer to ",paraId:6,tocIndex:4},{value:"Setting Validation Rules",paraId:7,tocIndex:4},{value:".",paraId:6,tocIndex:4},{value:"For more information, refer to ",paraId:8,tocIndex:5},{value:"Required Fields",paraId:9,tocIndex:5},{value:".",paraId:8,tocIndex:5},{value:"Edit Field Title",paraId:10,tocIndex:5},{value:"Display Title",paraId:11,tocIndex:5},{value:"Edit Field Description",paraId:12,tocIndex:5},{value:"Edit Field Tooltip",paraId:13,tocIndex:5},{value:"Pattern",paraId:14,tocIndex:5},{value:"Some fields support switching to other components. For example, the ",paraId:15,tocIndex:6},{value:"URL",paraId:15,tocIndex:6},{value:" component can be switched to the ",paraId:15,tocIndex:6},{value:"Preview",paraId:15,tocIndex:6},{value:" component.",paraId:15,tocIndex:6},{value:"If you need to extend more components, refer to ",paraId:16,tocIndex:6},{value:"Extending Value Field Components",paraId:17,tocIndex:6},{value:".",paraId:16,tocIndex:6},{value:"In reading mode, the form can be styled.",paraId:18,tocIndex:7}],pk={},Ik={title:"Revisions",toc:"menu",filename:"docs/en-US/handbook/workflow/advanced/revisions.md",lastUpdated:1732240239e3,description:"After a configured workflow is triggered at least once, if you want to modify the configuration of the workflow or its nodes, you need to create a new version and then modify it, which also ensures that when reviewing execution history of workflows that have been triggered, they are not affected by future modifications."},_k=[{id:"revisions",depth:1,title:"Revisions"}],vk=[{value:"After a configured workflow is triggered at least once, if you want to modify the configuration of the workflow or its nodes, you need to create a new version and then modify it, which also ensures that when reviewing execution history of workflows that have been triggered, they are not affected by future modifications.",paraId:0,tocIndex:0},{value:"On the configuration page of the workflow, you can view existing workflow versions in the version menu in the top right corner:",paraId:1,tocIndex:0},{value:'In the more operations ("...") menu on the right side, you can do "copy to new version" based on the current version being viewed:',paraId:2,tocIndex:0},{value:'After copying to a new version, click the "Enable"/"Disable" switch. After switching the corresponding version to the enabled status, the new workflow version will take effect.',paraId:3,tocIndex:0},{value:'If you need to use an old version again, switch one from the version menu, and then switch to the enabled status by clicking the "On"/"Off" switch again, then the current viewed version will take effect, and further triggers will run on the corresponding version of the workflow.',paraId:4,tocIndex:0},{value:'When need to disable a workflow, after clicking the "Enable"/"Disable" switch to the disabled status, the workflow will no longer be triggered.',paraId:5,tocIndex:0},{value:'Different from "Duplicate" a workflow in the workflow management list,"Copy to new version" will still be grouped in the same group of workflows, but can be distinguished by version. However, duplicating a workflow will be make a completely new workflow, unrelated to the previous versions of the workflow, and the execution count will also be reset to zero.',paraId:6}],mk={},hk={title:"Using Variables",toc:"menu",filename:"docs/en-US/handbook/workflow/advanced/variables.md",lastUpdated:1732240239e3,description:"Just like variables in programming languages, variables are important tools for connecting and organizing processes in workflow."},fk=[{id:"using-variables",depth:1,title:"Using Variables"},{id:"core-conception",depth:2,title:"Core Conception"},{id:"data-structure",depth:2,title:"Data Structure"},{id:"builtin-system-variables",depth:2,title:"Builtin System Variables"},{id:"system-time",depth:3,title:"System Time"},{id:"date-range-parameters",depth:3,title:"Date Range Parameters"}],xk=[{value:"Just like variables in programming languages, ",paraId:0,tocIndex:1},{value:"variables",paraId:0,tocIndex:1},{value:" are important tools for connecting and organizing processes in workflow.",paraId:0,tocIndex:1},{value:"When each node is executed after the workflow is triggered, variables can be used in some configuration options, and the source of the variables is from data result of upstream node, including the following categories:",paraId:1,tocIndex:1},{value:"Trigger Context Data: In cases such as action triggers and collection triggers, single record object can be used by all nodes. The specific implementation may differ based on the individual trigger.",paraId:2,tocIndex:1},{value:"Upstream node data: When executing any node, the result data of the previously completed nodes.",paraId:2,tocIndex:1},{value:"Scope variables: When the node is in some special branch structures, scope variables specific to the corresponding branch can be used, such as in loop structures, where data objects for each round of the loop can be used.",paraId:2,tocIndex:1},{value:"System variables: Some built-in system parameters, such as the current time, etc.",paraId:2,tocIndex:1},{value:"We have used the function of variables many times in ",paraId:3,tocIndex:1},{value:"Quick Start",paraId:4,tocIndex:1},{value:", for example, in the calculation node, we can use variables to reference trigger context data for calculation:",paraId:3,tocIndex:1},{value:"In the update node, use trigger context data as the filtering condition variable, and refer to the result of the calculation node as the field value variable to update record:",paraId:5,tocIndex:1},{value:"The internal of a variable is a JSON structure, which can usually be used to access specific parts of the data according to the JSONPath. Because many variables are based on the data collection of NocoBase, association data will be composed as a tree-like structure of objects, such as selecting the value of a field of related data that is queried. In addition, when association data is a to-many structure, the variable may be an array.",paraId:6,tocIndex:2},{value:"Selecting a variable will most of the time require selecting the last layer value attribute, usually a simple data type such as number, string, etc. However, when there is an array in the variable hierarchy, the attributes at the end level will also be mapped to an array, and only when the corresponding node supports array can the array data be correctly processed. For example, in the calculation node, some calculation engines have functions specially designed for arrays, and in the loop node, the loop object can directly select an array.",paraId:7,tocIndex:2},{value:"For example, when a query node queries multiple data rows, the node result will be an array containing multiple rows of homogeneous data:",paraId:8,tocIndex:2},{value:`[ + `,paraId:1},{value:"For more information, refer to ",paraId:9,tocIndex:6},{value:"Connecting Data Blocks",paraId:10,tocIndex:6},{value:".",paraId:9,tocIndex:6},{value:"Edit Block Title",paraId:11,tocIndex:6},{value:"Set Data Loading Mode",paraId:12,tocIndex:6},{value:"Save as Block Template",paraId:13,tocIndex:6},{value:"Example: Lease order table inherits from the order table.",paraId:14,tocIndex:10},{value:"Configuration options for table column fields can be found in ",paraId:15,tocIndex:10},{value:"Table Column Fields",paraId:16,tocIndex:10},{value:".",paraId:15,tocIndex:10},{value:"Filter",paraId:17,tocIndex:12},{value:"Add",paraId:18,tocIndex:12},{value:"Delete",paraId:19,tocIndex:12},{value:"Refresh",paraId:20,tocIndex:12},{value:"Import",paraId:21,tocIndex:12},{value:"Export",paraId:22,tocIndex:12},{value:"Add record",paraId:23,tocIndex:12},{value:"Bulk Update",paraId:24,tocIndex:12},{value:"Bulk Edit",paraId:25,tocIndex:12},{value:"View",paraId:26,tocIndex:13},{value:"Edit",paraId:27,tocIndex:13},{value:"Duplicate",paraId:28,tocIndex:13},{value:"Delete",paraId:29,tocIndex:13},{value:"Popup",paraId:30,tocIndex:13},{value:"Update Record",paraId:31,tocIndex:13},{value:"Custom Request",paraId:32,tocIndex:13}],o4={},r4={title:"Association Field Component",toc:"menu",filename:"docs/en-US/handbook/ui/fields/association-field.md",lastUpdated:173254844e4,description:"NocoBase's association field components are designed to help users better display and handle associated data. Regardless of the type of relationship, these components are flexible and universal. Users can select and configure these components according to specific needs."},d4=[{id:"association-field-component",depth:1,title:"Association Field Component"},{id:"introduction",depth:2,title:"Introduction"},{id:"dropdown-selector",depth:3,title:"Dropdown Selector"},{id:"record-picker",depth:3,title:"Record Picker"},{id:"cascade-selector",depth:3,title:"Cascade Selector"},{id:"sub-form",depth:3,title:"Sub-Form"},{id:"sub-form-pop-up",depth:3,title:"Sub-Form (Pop-up)"},{id:"sub-table",depth:3,title:"Sub-Table"},{id:"sub-detail",depth:3,title:"Sub-Detail"},{id:"file-manager",depth:3,title:"File Manager"},{id:"title",depth:3,title:"Title"},{id:"tag",depth:3,title:"Tag"}],i4=[{value:"NocoBase's association field components are designed to help users better display and handle associated data. Regardless of the type of relationship, these components are flexible and universal. Users can select and configure these components according to specific needs.",paraId:0,tocIndex:1},{value:"All association fields whose target collection is not a file collection, the default component in the edit state is a drop-down selector. The drop-down option displays the value of the title field, which is suitable for quickly selecting associated data by displaying a key field information.",paraId:1,tocIndex:2},{value:"For more information, refer to ",paraId:2,tocIndex:2},{value:"Dropdown Selector",paraId:3,tocIndex:2},{value:"The record picker presents data in the form of a pop-up window. Users can configure relationship fields (including relationship's relationship fields) in the record selector, allowing for more accurate selection of associated data.",paraId:4,tocIndex:3},{value:"For more information, refer to ",paraId:5,tocIndex:3},{value:"Record Picker",paraId:6,tocIndex:3},{value:"The cascade selector is suitable for relationship fields where the target collection is a tree collection. It allows users to select data according to the hierarchical structure of the tree collection data. It is applicable to scenarios such as province-city-district, industry classification, product attributes, and other cascade selection scenarios.",paraId:7,tocIndex:4},{value:"For more information, refer to ",paraId:8,tocIndex:4},{value:"Cascade Selector",paraId:9,tocIndex:4},{value:"When dealing with more complex relationship data, using a dropdown selector or data selector can be inconvenient. In this case, users need to frequently open pop-up windows. For this scenario, a sub-form can be used. Users can directly maintain relationship fields on the current page or current pop-up, without repeatedly opening new pop-ups, making the operation process smoother. Multi-level relationships are presented in the form of nested forms.",paraId:10,tocIndex:5},{value:"For more information, refer to ",paraId:11,tocIndex:5},{value:"Sub-Form",paraId:12,tocIndex:5},{value:"When the relationship level is deep and there are many data fields, the sub-form layout may appear lengthy, making it difficult to effectively present the primary and secondary relationship of the form. For this scenario, you can use a sub-form (pop-up). Users can move some non-key or infrequently used relationship fields from the main form to an independent pop-up for filling out, making the main form more concise and clear.",paraId:13,tocIndex:6},{value:"The Sub-Form (Pop-up) not only simplifies the form layout, but also solves the problem of not being able to directly fill in relationship field data in the sub-table.",paraId:14,tocIndex:6},{value:"For more information, refer to ",paraId:15,tocIndex:6},{value:"Sub-Form (Pop-up)",paraId:16,tocIndex:6},{value:"The sub-table presents one-to-many or many-to-many relationship records in the form of a table. It provides a clear, structured way to display and manage associated data, supporting the creation of new data in batches or the selection of existing data for association.",paraId:17,tocIndex:7},{value:"For more information, refer to ",paraId:18,tocIndex:7},{value:"Sub-Table",paraId:19,tocIndex:7},{value:"The sub-detail are the corresponding components of the sub-form in reading mode, and the multi-level relational data is displayed in a nested form.",paraId:20,tocIndex:8},{value:"For more information, refer to ",paraId:21,tocIndex:8},{value:"Sub-Detail",paraId:22,tocIndex:8},{value:"The file manager is a relationship field component specifically for dealing with relationship target collections as file collections.",paraId:23,tocIndex:9},{value:"For more information, refer to ",paraId:24,tocIndex:9},{value:"File Manager",paraId:25,tocIndex:9},{value:"The title component is a relationship field component used in reading mode, displaying key information of associated data through the configuration of the title field.",paraId:26,tocIndex:10},{value:"For more information, refer to ",paraId:27,tocIndex:10},{value:"Title",paraId:28,tocIndex:10},{value:"The tag component is a relationship field component used in reading mode. Using the tag component in data presentation can better classify and identify relationship data. It needs to configure the title field and color field (selected from the target table fields).",paraId:29,tocIndex:11},{value:"For more information, refer to ",paraId:30,tocIndex:11},{value:"Tag",paraId:31,tocIndex:11}],l4={},c4={title:"Data blocks - Form Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/generic/form-item.md",lastUpdated:173254844e4,description:"Different types of fields in a form have different configuration options, allowing users to extend the configuration options through plugins to meet more personalized needs."},s4=[{id:"data-blocks---form-fields",depth:1,title:"Data blocks - Form Fields"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"default-values",depth:3,title:"Default Values"},{id:"setting-validation-rules",depth:3,title:"Setting Validation Rules"},{id:"required-fields",depth:3,title:"Required Fields"},{id:"field-components",depth:3,title:"Field Components"},{id:"style",depth:3,title:"Style"}],u4=[{value:"Different types of fields in a form have different configuration options, allowing users to extend the configuration options through plugins to meet more personalized needs.",paraId:0,tocIndex:1},{value:"Displays fields related to associated tables (one-to-one or many-to-one relationship fields) as read-only.",paraId:1,tocIndex:1},{value:` + `,paraId:2},{value:"Supports setting constants/variables as the default values for fields.",paraId:3,tocIndex:3},{value:"For more information, refer to ",paraId:4,tocIndex:3},{value:"Setting Default Values",paraId:5,tocIndex:3},{value:".",paraId:4,tocIndex:3},{value:"For more information, refer to ",paraId:6,tocIndex:4},{value:"Setting Validation Rules",paraId:7,tocIndex:4},{value:".",paraId:6,tocIndex:4},{value:"For more information, refer to ",paraId:8,tocIndex:5},{value:"Required Fields",paraId:9,tocIndex:5},{value:".",paraId:8,tocIndex:5},{value:"Edit Field Title",paraId:10,tocIndex:5},{value:"Display Title",paraId:11,tocIndex:5},{value:"Edit Field Description",paraId:12,tocIndex:5},{value:"Edit Field Tooltip",paraId:13,tocIndex:5},{value:"Pattern",paraId:14,tocIndex:5},{value:"Some fields support switching to other components. For example, the ",paraId:15,tocIndex:6},{value:"URL",paraId:15,tocIndex:6},{value:" component can be switched to the ",paraId:15,tocIndex:6},{value:"Preview",paraId:15,tocIndex:6},{value:" component.",paraId:15,tocIndex:6},{value:"If you need to extend more components, refer to ",paraId:16,tocIndex:6},{value:"Extending Value Field Components",paraId:17,tocIndex:6},{value:".",paraId:16,tocIndex:6},{value:"In reading mode, the form can be styled.",paraId:18,tocIndex:7}],p4={},I4={title:"Revisions",toc:"menu",filename:"docs/en-US/handbook/workflow/advanced/revisions.md",lastUpdated:173254844e4,description:"After a configured workflow is triggered at least once, if you want to modify the configuration of the workflow or its nodes, you need to create a new version and then modify it, which also ensures that when reviewing execution history of workflows that have been triggered, they are not affected by future modifications."},_4=[{id:"revisions",depth:1,title:"Revisions"}],v4=[{value:"After a configured workflow is triggered at least once, if you want to modify the configuration of the workflow or its nodes, you need to create a new version and then modify it, which also ensures that when reviewing execution history of workflows that have been triggered, they are not affected by future modifications.",paraId:0,tocIndex:0},{value:"On the configuration page of the workflow, you can view existing workflow versions in the version menu in the top right corner:",paraId:1,tocIndex:0},{value:'In the more operations ("...") menu on the right side, you can do "copy to new version" based on the current version being viewed:',paraId:2,tocIndex:0},{value:'After copying to a new version, click the "Enable"/"Disable" switch. After switching the corresponding version to the enabled status, the new workflow version will take effect.',paraId:3,tocIndex:0},{value:'If you need to use an old version again, switch one from the version menu, and then switch to the enabled status by clicking the "On"/"Off" switch again, then the current viewed version will take effect, and further triggers will run on the corresponding version of the workflow.',paraId:4,tocIndex:0},{value:'When need to disable a workflow, after clicking the "Enable"/"Disable" switch to the disabled status, the workflow will no longer be triggered.',paraId:5,tocIndex:0},{value:'Different from "Duplicate" a workflow in the workflow management list,"Copy to new version" will still be grouped in the same group of workflows, but can be distinguished by version. However, duplicating a workflow will be make a completely new workflow, unrelated to the previous versions of the workflow, and the execution count will also be reset to zero.',paraId:6}],m4={},h4={title:"Using Variables",toc:"menu",filename:"docs/en-US/handbook/workflow/advanced/variables.md",lastUpdated:173254844e4,description:"Just like variables in programming languages, variables are important tools for connecting and organizing processes in workflow."},f4=[{id:"using-variables",depth:1,title:"Using Variables"},{id:"core-conception",depth:2,title:"Core Conception"},{id:"data-structure",depth:2,title:"Data Structure"},{id:"builtin-system-variables",depth:2,title:"Builtin System Variables"},{id:"system-time",depth:3,title:"System Time"},{id:"date-range-parameters",depth:3,title:"Date Range Parameters"}],x4=[{value:"Just like variables in programming languages, ",paraId:0,tocIndex:1},{value:"variables",paraId:0,tocIndex:1},{value:" are important tools for connecting and organizing processes in workflow.",paraId:0,tocIndex:1},{value:"When each node is executed after the workflow is triggered, variables can be used in some configuration options, and the source of the variables is from data result of upstream node, including the following categories:",paraId:1,tocIndex:1},{value:"Trigger Context Data: In cases such as action triggers and collection triggers, single record object can be used by all nodes. The specific implementation may differ based on the individual trigger.",paraId:2,tocIndex:1},{value:"Upstream node data: When executing any node, the result data of the previously completed nodes.",paraId:2,tocIndex:1},{value:"Scope variables: When the node is in some special branch structures, scope variables specific to the corresponding branch can be used, such as in loop structures, where data objects for each round of the loop can be used.",paraId:2,tocIndex:1},{value:"System variables: Some built-in system parameters, such as the current time, etc.",paraId:2,tocIndex:1},{value:"We have used the function of variables many times in ",paraId:3,tocIndex:1},{value:"Quick Start",paraId:4,tocIndex:1},{value:", for example, in the calculation node, we can use variables to reference trigger context data for calculation:",paraId:3,tocIndex:1},{value:"In the update node, use trigger context data as the filtering condition variable, and refer to the result of the calculation node as the field value variable to update record:",paraId:5,tocIndex:1},{value:"The internal of a variable is a JSON structure, which can usually be used to access specific parts of the data according to the JSONPath. Because many variables are based on the data collection of NocoBase, association data will be composed as a tree-like structure of objects, such as selecting the value of a field of related data that is queried. In addition, when association data is a to-many structure, the variable may be an array.",paraId:6,tocIndex:2},{value:"Selecting a variable will most of the time require selecting the last layer value attribute, usually a simple data type such as number, string, etc. However, when there is an array in the variable hierarchy, the attributes at the end level will also be mapped to an array, and only when the corresponding node supports array can the array data be correctly processed. For example, in the calculation node, some calculation engines have functions specially designed for arrays, and in the loop node, the loop object can directly select an array.",paraId:7,tocIndex:2},{value:"For example, when a query node queries multiple data rows, the node result will be an array containing multiple rows of homogeneous data:",paraId:8,tocIndex:2},{value:`[ { "id": 1, "title": "Title 1" @@ -7888,7 +7940,7 @@ export default class ShopPlugin extends Plugin { } ] `,paraId:9,tocIndex:2},{value:"However, when it is used as a variable in subsequent nodes, if the selected variable is in the form of ",paraId:10,tocIndex:2},{value:"Node Result / Query Node / Title",paraId:10,tocIndex:2},{value:", it will be mapped to an flat array of corresponding field values:",paraId:10,tocIndex:2},{value:`["Title 1", "Title 2"] -`,paraId:11,tocIndex:2},{value:"If it is a multi-dimensional array (such as a many-to-many association fields), it will be a one-dimensional array after the corresponding field is flattened.",paraId:12,tocIndex:2},{value:"Retrieve the system time at the moment of execution based on the node where it is executed, the time zone is the time zone set by the server.",paraId:13,tocIndex:4},{value:`This can be used for configuring date field filter conditions in query, update, and delete nodes. It only supports "Is" comparisons, and the start and end points of the date range are based on the server's time zone settings.`,paraId:14,tocIndex:5}],gk={},bk={title:"\u591A\u6570\u636E\u5E93\u6570\u636E\u6E90",toc:"menu",filename:"docs/en-US/manual/collection/multiple-databases.md",lastUpdated:1732240239e3},yk=[{id:"\u591A\u6570\u636E\u5E93\u6570\u636E\u6E90",depth:1,title:"\u591A\u6570\u636E\u5E93\u6570\u636E\u6E90"}],wk=[],kk={},Sk={title:"\u672C\u5730\u5316\u7BA1\u7406",toc:"menu",filename:"docs/en-US/manual/localization-management/index.md",lastUpdated:1732240239e3,description:"\u540C\u6B65\u4E4B\u540E\uFF0C\u4F1A\u5217\u51FA\u6240\u6709\u53EF\u7FFB\u8BD1\u8BCD\u6761"},Uk=[{id:"\u672C\u5730\u5316\u7BA1\u7406",depth:1,title:"\u672C\u5730\u5316\u7BA1\u7406"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:3,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u672C\u5730\u5316\u7BA1\u7406-1",depth:3,title:"\u672C\u5730\u5316\u7BA1\u7406"},{id:"\u540C\u6B65\u7FFB\u8BD1\u8BCD\u6761",depth:3,title:"\u540C\u6B65\u7FFB\u8BD1\u8BCD\u6761"},{id:"\u53D1\u5E03",depth:3,title:"\u53D1\u5E03"},{id:"\u7FFB\u8BD1\u5176\u4ED6\u8BED\u8A00",depth:3,title:"\u7FFB\u8BD1\u5176\u4ED6\u8BED\u8A00"}],Pk=[{value:"\u540C\u6B65\u4E4B\u540E\uFF0C\u4F1A\u5217\u51FA\u6240\u6709\u53EF\u7FFB\u8BD1\u8BCD\u6761",paraId:0,tocIndex:6},{value:"\u7FFB\u8BD1\u5B8C\u6210\u4E4B\u540E\uFF0C\u9700\u8981\u70B9\u51FB\u201C\u53D1\u5E03\u201D\u6309\u94AE\uFF0C\u624D\u80FD\u4F7F\u4FEE\u6539\u7ED3\u679C\u751F\u6548",paraId:1,tocIndex:7},{value:"\u542F\u7528\u5176\u4ED6\u8BED\u8A00\uFF0C\u5982\u7B80\u4F53\u4E2D\u6587",paraId:2,tocIndex:8},{value:"\u5207\u6362\u8BED\u8A00",paraId:3,tocIndex:8},{value:"\u8BCD\u6761\u540C\u6B65",paraId:4,tocIndex:8},{value:"\u7FFB\u8BD1\u5E76\u53D1\u5E03",paraId:5,tocIndex:8}],Tk={},Ck={title:"\u529F\u80FD\u5206\u533A",toc:"menu",filename:"docs/en-US/manual/quick-start/functional-zoning.md",lastUpdated:1732240239e3,description:"NocoBase \u9ED8\u8BA4\u5185\u7F6E\u4E00\u4E2A\u5E03\u5C40\u6A21\u677F\uFF0C\u8FD9\u4E2A\u5E03\u5C40\u6A21\u677F\u7684\u754C\u9762\u4E3B\u8981\u5206\u4E3A\u4E09\u4E2A\u533A\u57DF\uFF1A"},Ak=[{id:"\u529F\u80FD\u5206\u533A",depth:1,title:"\u529F\u80FD\u5206\u533A"}],qk=[{value:"NocoBase \u9ED8\u8BA4\u5185\u7F6E\u4E00\u4E2A\u5E03\u5C40\u6A21\u677F\uFF0C\u8FD9\u4E2A\u5E03\u5C40\u6A21\u677F\u7684\u754C\u9762\u4E3B\u8981\u5206\u4E3A\u4E09\u4E2A\u533A\u57DF\uFF1A",paraId:0,tocIndex:0},{value:"\u914D\u7F6E\u5165\u53E3\u533A\u3002\u5177\u5907\u7CFB\u7EDF\u914D\u7F6E\u6743\u9650\u7684\u7528\u6237\uFF0C\u53EF\u4EE5\u5728\u8FD9\u91CC\u770B\u5230\u754C\u9762\u914D\u7F6E\u3001\u63D2\u4EF6\u7BA1\u7406\u5668\u3001\u8BBE\u7F6E\u4E2D\u5FC3\u7684\u5165\u53E3\u3002",paraId:1,tocIndex:0},{value:"\u83DC\u5355\u533A\u3002\u9876\u90E8\u662F\u4E00\u7EA7\u83DC\u5355\uFF0C\u5DE6\u4FA7\u662F\u4E8C\u7EA7\u53CA\u4EE5\u4E0B\u5C42\u7EA7\u7684\u83DC\u5355\u3002\u6BCF\u4E2A\u83DC\u5355\u9879\u90FD\u53EF\u4EE5\u914D\u7F6E\u4E3A\u83DC\u5355\u5206\u7EC4\u3001\u9875\u9762\u3001\u5916\u90E8\u94FE\u63A5\u3002",paraId:1,tocIndex:0},{value:"\u533A\u5757\u5BB9\u5668\u3002\u8FD9\u91CC\u662F\u9875\u9762\u7684\u533A\u5757\u5BB9\u5668\uFF0C\u5728\u91CC\u9762\u53EF\u4EE5\u653E\u7F6E\u5404\u79CD\u5404\u6837\u7684\u533A\u5757\u3002",paraId:1,tocIndex:0}],Ek={},Dk={title:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41",toc:"menu",filename:"docs/en-US/manual/ui/actions/submit-to-workflow.md",lastUpdated:1732240239e3,description:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u64CD\u4F5C\u7531\u63D2\u4EF6\u6269\u5C55"},Ok=[{id:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41",depth:1,title:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41"}],Rk=[{value:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u64CD\u4F5C\u7531\u63D2\u4EF6\u6269\u5C55",paraId:0,tocIndex:0},{value:"\u65B0\u589E\u3001\u66F4\u65B0\u8868\u5355\u4E2D\u652F\u6301\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u548C\u89E6\u53D1\u3002",paraId:1,tocIndex:0},{value:"\u53EF\u5728\u4E00\u4E2A\u6309\u94AE\u70B9\u51FB\u65F6\u89E6\u53D1\u591A\u4E2A\u5DE5\u4F5C\u6D41\uFF0C\u5404\u81EA\u9009\u5B9A\u4E0D\u540C\u7684\u5DE5\u4F5C\u6D41\u548C\u6570\u636E\u4E0A\u4E0B\u6587\uFF08\u4E0D\u9650\u5236\u6570\u636E\uFF0C\u7528\u6237\u81EA\u884C\u4FDD\u8BC1\uFF09\u3002",paraId:1,tocIndex:0},{value:"\u8868\u5355\u6309\u94AE\u89E6\u53D1\u4EC5\u652F\u6301\u65B0\u7684\u5DE5\u4F5C\u6D41\u7C7B\u578B\u201C\u8868\u5355\u4E8B\u4EF6\u201D\u3002",paraId:1,tocIndex:0},{value:"\u8BE6\u60C5\u53EF\u67E5\u770B\u63D2\u4EF6\u6587\u6863",paraId:2,tocIndex:0}],Mk={},Lk={title:"Plugin Configuration Page Overview",toc:"menu",filename:"docs/en-US/plugin-samples/plugin-settings/index.md",lastUpdated:1732240239e3,description:"When developing plugins, it is often necessary to provide a configuration page where users can set various parameters for the plugin."},Nk=[{id:"plugin-configuration-page-overview",depth:1,title:"Plugin Configuration Page Overview"},{id:"scenario-introduction",depth:2,title:"Scenario Introduction"},{id:"form-configuration-page",depth:3,title:"Form Configuration Page"},{id:"table-configuration-page",depth:3,title:"Table Configuration Page"},{id:"table-configuration-page-multiple-new-entry-forms",depth:3,title:"Table Configuration Page (Multiple New Entry Forms)"},{id:"other-cases",depth:3,title:"Other Cases"},{id:"examples",depth:2,title:"Examples"},{id:"configuration-page-routes",depth:2,title:"Configuration Page Routes"}],zk=[{value:"When developing plugins, it is often necessary to provide a configuration page where users can set various parameters for the plugin.",paraId:0,tocIndex:1},{value:"There are four common types of plugin configuration pages:",paraId:1,tocIndex:1},{value:"Users can fill in certain parameters in a form and save them. These parameters will be stored in a database and retrieved by the plugin during its operation. For example, see the ",paraId:2,tocIndex:2},{value:"Custom Brand Plugin",paraId:3,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"As shown above, this configuration page is a form where users can input parameters such as ",paraId:4,tocIndex:2},{value:"Brand",paraId:4,tocIndex:2},{value:" and ",paraId:4,tocIndex:2},{value:"About",paraId:4,tocIndex:2},{value:", and then click the ",paraId:4,tocIndex:2},{value:"Submit",paraId:4,tocIndex:2},{value:" button to save them.",paraId:4,tocIndex:2},{value:"The plugin's configuration consists of a dataset that users can add, delete, or modify within a table. For example, see the ",paraId:5,tocIndex:3},{value:"Users & Permissions Plugin",paraId:6,tocIndex:3},{value:".",paraId:5,tocIndex:3},{value:"As seen above, this configuration page is a table where users can add, delete, and modify user information.",paraId:7,tocIndex:3},{value:"The plugin's configuration consists of a dataset, but multiple forms are available for adding new entries. For example, see the ",paraId:8,tocIndex:4},{value:"File Manager Plugin",paraId:9,tocIndex:4},{value:".",paraId:8,tocIndex:4},{value:"As shown above, there are multiple forms for adding new entries, allowing users to choose different forms for data input.",paraId:10,tocIndex:4},{value:"There are also other special cases, such as the ",paraId:11,tocIndex:5},{value:"Theme Editor Plugin",paraId:12,tocIndex:5},{value:".",paraId:11,tocIndex:5},{value:"As seen above, this image displays the corresponding theme editor interface.",paraId:13,tocIndex:5},{value:"For the above scenarios, we provide the following examples:",paraId:14,tocIndex:6},{value:"Form Configuration Page",paraId:15,tocIndex:6},{value:"Table Configuration Page",paraId:16,tocIndex:6},{value:"Table Configuration Page (Multiple New Entry Forms)",paraId:17,tocIndex:6},{value:"For special cases, you can develop according to your specific needs.",paraId:18,tocIndex:6},{value:"For plugin routing, refer to:",paraId:19,tocIndex:7},{value:"Plugin Configuration Page (Single Route)",paraId:20,tocIndex:7},{value:"Plugin Configuration Page (Tabs Route)",paraId:21,tocIndex:7},{value:"Plugin Configuration Page (Different Layouts)",paraId:22,tocIndex:7},{value:"This set of plugin examples does not go into detail on routing. Those interested can consult the relevant documentation.",paraId:23,tocIndex:7}],Fk={},Bk={title:"Table Configuration Page",toc:"menu",filename:"docs/en-US/plugin-samples/plugin-settings/table.md",lastUpdated:1732240239e3,description:"The configuration interface consists of a table that allows you to add, edit, and delete data."},jk=[{id:"table-configuration-page",depth:1,title:"Table Configuration Page"},{id:"scenario-description",depth:2,title:"Scenario Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"backend-implementation",depth:2,title:"Backend Implementation"},{id:"1-create-a-data-table",depth:3,title:"1. Create a Data Table"},{id:"2-apply-the-update",depth:3,title:"2. Apply the Update"},{id:"frontend-implementation",depth:2,title:"Frontend Implementation"},{id:"1-create-the-plugin-configuration-page",depth:3,title:"1. Create the Plugin Configuration Page"},{id:"backend-functionality-implementation",depth:2,title:"Backend Functionality Implementation"},{id:"1-create-a-data-table-1",depth:3,title:"1. Create a Data Table"},{id:"2-execute-the-update",depth:3,title:"2. Execute the Update"},{id:"frontend-functionality-implementation",depth:2,title:"Frontend Functionality Implementation"},{id:"1-create-plugin-configuration-page",depth:3,title:"1. Create Plugin Configuration Page"},{id:"2-define-data-table-structure",depth:3,title:"2. Define Data Table Structure"},{id:"3-create-table-schema",depth:3,title:"3. Create Table Schema"},{id:"4-create-table-component",depth:3,title:"4. Create Table Component"},{id:"5-register-plugin-configuration-page",depth:3,title:"5. Register Plugin Configuration Page"},{id:"6-implementing-the-add-new-feature",depth:3,title:'6. Implementing the "Add New" Feature'},{id:"7-implementing-the-edit-feature",depth:3,title:"7. Implementing the Edit Feature"},{id:"8-implementing-the-delete-functionality",depth:3,title:"8. Implementing the Delete Functionality"},{id:"9-using-configuration-data-within-a-page",depth:3,title:"9. Using Configuration Data Within a Page"},{id:"10-global-usage-of-configuration-data",depth:3,title:"10. Global Usage of Configuration Data"},{id:"packaging-and-uploading-to-production-environment",depth:3,title:"Packaging and Uploading to Production Environment"}],Hk=[{value:"The configuration interface consists of a table that allows you to add, edit, and delete data.",paraId:0,tocIndex:1},{value:"Let\u2019s assume we need to create an email notification plugin. This plugin can have multiple templates, and each template contains information such as the email subject and content. We need a configuration interface to manage these templates.",paraId:1,tocIndex:2},{value:"The complete example code for this document can be found in ",paraId:2,tocIndex:2},{value:"plugin-samples",paraId:2,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"Following the instructions in ",paraId:3,tocIndex:3},{value:"Writing Your First Plugin",paraId:4,tocIndex:3},{value:", if you don't have a project yet, you can create one first. If you already have a project or have cloned the source code, you can skip this step.",paraId:3,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite +`,paraId:11,tocIndex:2},{value:"If it is a multi-dimensional array (such as a many-to-many association fields), it will be a one-dimensional array after the corresponding field is flattened.",paraId:12,tocIndex:2},{value:"Retrieve the system time at the moment of execution based on the node where it is executed, the time zone is the time zone set by the server.",paraId:13,tocIndex:4},{value:`This can be used for configuring date field filter conditions in query, update, and delete nodes. It only supports "Is" comparisons, and the start and end points of the date range are based on the server's time zone settings.`,paraId:14,tocIndex:5}],g4={},b4={title:"\u591A\u6570\u636E\u5E93\u6570\u636E\u6E90",toc:"menu",filename:"docs/en-US/manual/collection/multiple-databases.md",lastUpdated:173254844e4},y4=[{id:"\u591A\u6570\u636E\u5E93\u6570\u636E\u6E90",depth:1,title:"\u591A\u6570\u636E\u5E93\u6570\u636E\u6E90"}],w4=[],k4={},S4={title:"\u672C\u5730\u5316\u7BA1\u7406",toc:"menu",filename:"docs/en-US/manual/localization-management/index.md",lastUpdated:173254844e4,description:"\u540C\u6B65\u4E4B\u540E\uFF0C\u4F1A\u5217\u51FA\u6240\u6709\u53EF\u7FFB\u8BD1\u8BCD\u6761"},U4=[{id:"\u672C\u5730\u5316\u7BA1\u7406",depth:1,title:"\u672C\u5730\u5316\u7BA1\u7406"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:3,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u672C\u5730\u5316\u7BA1\u7406-1",depth:3,title:"\u672C\u5730\u5316\u7BA1\u7406"},{id:"\u540C\u6B65\u7FFB\u8BD1\u8BCD\u6761",depth:3,title:"\u540C\u6B65\u7FFB\u8BD1\u8BCD\u6761"},{id:"\u53D1\u5E03",depth:3,title:"\u53D1\u5E03"},{id:"\u7FFB\u8BD1\u5176\u4ED6\u8BED\u8A00",depth:3,title:"\u7FFB\u8BD1\u5176\u4ED6\u8BED\u8A00"}],P4=[{value:"\u540C\u6B65\u4E4B\u540E\uFF0C\u4F1A\u5217\u51FA\u6240\u6709\u53EF\u7FFB\u8BD1\u8BCD\u6761",paraId:0,tocIndex:6},{value:"\u7FFB\u8BD1\u5B8C\u6210\u4E4B\u540E\uFF0C\u9700\u8981\u70B9\u51FB\u201C\u53D1\u5E03\u201D\u6309\u94AE\uFF0C\u624D\u80FD\u4F7F\u4FEE\u6539\u7ED3\u679C\u751F\u6548",paraId:1,tocIndex:7},{value:"\u542F\u7528\u5176\u4ED6\u8BED\u8A00\uFF0C\u5982\u7B80\u4F53\u4E2D\u6587",paraId:2,tocIndex:8},{value:"\u5207\u6362\u8BED\u8A00",paraId:3,tocIndex:8},{value:"\u8BCD\u6761\u540C\u6B65",paraId:4,tocIndex:8},{value:"\u7FFB\u8BD1\u5E76\u53D1\u5E03",paraId:5,tocIndex:8}],T4={},C4={title:"\u529F\u80FD\u5206\u533A",toc:"menu",filename:"docs/en-US/manual/quick-start/functional-zoning.md",lastUpdated:173254844e4,description:"NocoBase \u9ED8\u8BA4\u5185\u7F6E\u4E00\u4E2A\u5E03\u5C40\u6A21\u677F\uFF0C\u8FD9\u4E2A\u5E03\u5C40\u6A21\u677F\u7684\u754C\u9762\u4E3B\u8981\u5206\u4E3A\u4E09\u4E2A\u533A\u57DF\uFF1A"},A4=[{id:"\u529F\u80FD\u5206\u533A",depth:1,title:"\u529F\u80FD\u5206\u533A"}],q4=[{value:"NocoBase \u9ED8\u8BA4\u5185\u7F6E\u4E00\u4E2A\u5E03\u5C40\u6A21\u677F\uFF0C\u8FD9\u4E2A\u5E03\u5C40\u6A21\u677F\u7684\u754C\u9762\u4E3B\u8981\u5206\u4E3A\u4E09\u4E2A\u533A\u57DF\uFF1A",paraId:0,tocIndex:0},{value:"\u914D\u7F6E\u5165\u53E3\u533A\u3002\u5177\u5907\u7CFB\u7EDF\u914D\u7F6E\u6743\u9650\u7684\u7528\u6237\uFF0C\u53EF\u4EE5\u5728\u8FD9\u91CC\u770B\u5230\u754C\u9762\u914D\u7F6E\u3001\u63D2\u4EF6\u7BA1\u7406\u5668\u3001\u8BBE\u7F6E\u4E2D\u5FC3\u7684\u5165\u53E3\u3002",paraId:1,tocIndex:0},{value:"\u83DC\u5355\u533A\u3002\u9876\u90E8\u662F\u4E00\u7EA7\u83DC\u5355\uFF0C\u5DE6\u4FA7\u662F\u4E8C\u7EA7\u53CA\u4EE5\u4E0B\u5C42\u7EA7\u7684\u83DC\u5355\u3002\u6BCF\u4E2A\u83DC\u5355\u9879\u90FD\u53EF\u4EE5\u914D\u7F6E\u4E3A\u83DC\u5355\u5206\u7EC4\u3001\u9875\u9762\u3001\u5916\u90E8\u94FE\u63A5\u3002",paraId:1,tocIndex:0},{value:"\u533A\u5757\u5BB9\u5668\u3002\u8FD9\u91CC\u662F\u9875\u9762\u7684\u533A\u5757\u5BB9\u5668\uFF0C\u5728\u91CC\u9762\u53EF\u4EE5\u653E\u7F6E\u5404\u79CD\u5404\u6837\u7684\u533A\u5757\u3002",paraId:1,tocIndex:0}],E4={},D4={title:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41",toc:"menu",filename:"docs/en-US/manual/ui/actions/submit-to-workflow.md",lastUpdated:173254844e4,description:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u64CD\u4F5C\u7531\u63D2\u4EF6\u6269\u5C55"},O4=[{id:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41",depth:1,title:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41"}],R4=[{value:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u64CD\u4F5C\u7531\u63D2\u4EF6\u6269\u5C55",paraId:0,tocIndex:0},{value:"\u65B0\u589E\u3001\u66F4\u65B0\u8868\u5355\u4E2D\u652F\u6301\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u548C\u89E6\u53D1\u3002",paraId:1,tocIndex:0},{value:"\u53EF\u5728\u4E00\u4E2A\u6309\u94AE\u70B9\u51FB\u65F6\u89E6\u53D1\u591A\u4E2A\u5DE5\u4F5C\u6D41\uFF0C\u5404\u81EA\u9009\u5B9A\u4E0D\u540C\u7684\u5DE5\u4F5C\u6D41\u548C\u6570\u636E\u4E0A\u4E0B\u6587\uFF08\u4E0D\u9650\u5236\u6570\u636E\uFF0C\u7528\u6237\u81EA\u884C\u4FDD\u8BC1\uFF09\u3002",paraId:1,tocIndex:0},{value:"\u8868\u5355\u6309\u94AE\u89E6\u53D1\u4EC5\u652F\u6301\u65B0\u7684\u5DE5\u4F5C\u6D41\u7C7B\u578B\u201C\u8868\u5355\u4E8B\u4EF6\u201D\u3002",paraId:1,tocIndex:0},{value:"\u8BE6\u60C5\u53EF\u67E5\u770B\u63D2\u4EF6\u6587\u6863",paraId:2,tocIndex:0}],M4={},L4={title:"Plugin Configuration Page Overview",toc:"menu",filename:"docs/en-US/plugin-samples/plugin-settings/index.md",lastUpdated:173254844e4,description:"When developing plugins, it is often necessary to provide a configuration page where users can set various parameters for the plugin."},N4=[{id:"plugin-configuration-page-overview",depth:1,title:"Plugin Configuration Page Overview"},{id:"scenario-introduction",depth:2,title:"Scenario Introduction"},{id:"form-configuration-page",depth:3,title:"Form Configuration Page"},{id:"table-configuration-page",depth:3,title:"Table Configuration Page"},{id:"table-configuration-page-multiple-new-entry-forms",depth:3,title:"Table Configuration Page (Multiple New Entry Forms)"},{id:"other-cases",depth:3,title:"Other Cases"},{id:"examples",depth:2,title:"Examples"},{id:"configuration-page-routes",depth:2,title:"Configuration Page Routes"}],z4=[{value:"When developing plugins, it is often necessary to provide a configuration page where users can set various parameters for the plugin.",paraId:0,tocIndex:1},{value:"There are four common types of plugin configuration pages:",paraId:1,tocIndex:1},{value:"Users can fill in certain parameters in a form and save them. These parameters will be stored in a database and retrieved by the plugin during its operation. For example, see the ",paraId:2,tocIndex:2},{value:"Custom Brand Plugin",paraId:3,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"As shown above, this configuration page is a form where users can input parameters such as ",paraId:4,tocIndex:2},{value:"Brand",paraId:4,tocIndex:2},{value:" and ",paraId:4,tocIndex:2},{value:"About",paraId:4,tocIndex:2},{value:", and then click the ",paraId:4,tocIndex:2},{value:"Submit",paraId:4,tocIndex:2},{value:" button to save them.",paraId:4,tocIndex:2},{value:"The plugin's configuration consists of a dataset that users can add, delete, or modify within a table. For example, see the ",paraId:5,tocIndex:3},{value:"Users & Permissions Plugin",paraId:6,tocIndex:3},{value:".",paraId:5,tocIndex:3},{value:"As seen above, this configuration page is a table where users can add, delete, and modify user information.",paraId:7,tocIndex:3},{value:"The plugin's configuration consists of a dataset, but multiple forms are available for adding new entries. For example, see the ",paraId:8,tocIndex:4},{value:"File Manager Plugin",paraId:9,tocIndex:4},{value:".",paraId:8,tocIndex:4},{value:"As shown above, there are multiple forms for adding new entries, allowing users to choose different forms for data input.",paraId:10,tocIndex:4},{value:"There are also other special cases, such as the ",paraId:11,tocIndex:5},{value:"Theme Editor Plugin",paraId:12,tocIndex:5},{value:".",paraId:11,tocIndex:5},{value:"As seen above, this image displays the corresponding theme editor interface.",paraId:13,tocIndex:5},{value:"For the above scenarios, we provide the following examples:",paraId:14,tocIndex:6},{value:"Form Configuration Page",paraId:15,tocIndex:6},{value:"Table Configuration Page",paraId:16,tocIndex:6},{value:"Table Configuration Page (Multiple New Entry Forms)",paraId:17,tocIndex:6},{value:"For special cases, you can develop according to your specific needs.",paraId:18,tocIndex:6},{value:"For plugin routing, refer to:",paraId:19,tocIndex:7},{value:"Plugin Configuration Page (Single Route)",paraId:20,tocIndex:7},{value:"Plugin Configuration Page (Tabs Route)",paraId:21,tocIndex:7},{value:"Plugin Configuration Page (Different Layouts)",paraId:22,tocIndex:7},{value:"This set of plugin examples does not go into detail on routing. Those interested can consult the relevant documentation.",paraId:23,tocIndex:7}],F4={},B4={title:"Table Configuration Page",toc:"menu",filename:"docs/en-US/plugin-samples/plugin-settings/table.md",lastUpdated:173254844e4,description:"The configuration interface consists of a table that allows you to add, edit, and delete data."},j4=[{id:"table-configuration-page",depth:1,title:"Table Configuration Page"},{id:"scenario-description",depth:2,title:"Scenario Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"backend-implementation",depth:2,title:"Backend Implementation"},{id:"1-create-a-data-table",depth:3,title:"1. Create a Data Table"},{id:"2-apply-the-update",depth:3,title:"2. Apply the Update"},{id:"frontend-implementation",depth:2,title:"Frontend Implementation"},{id:"1-create-the-plugin-configuration-page",depth:3,title:"1. Create the Plugin Configuration Page"},{id:"backend-functionality-implementation",depth:2,title:"Backend Functionality Implementation"},{id:"1-create-a-data-table-1",depth:3,title:"1. Create a Data Table"},{id:"2-execute-the-update",depth:3,title:"2. Execute the Update"},{id:"frontend-functionality-implementation",depth:2,title:"Frontend Functionality Implementation"},{id:"1-create-plugin-configuration-page",depth:3,title:"1. Create Plugin Configuration Page"},{id:"2-define-data-table-structure",depth:3,title:"2. Define Data Table Structure"},{id:"3-create-table-schema",depth:3,title:"3. Create Table Schema"},{id:"4-create-table-component",depth:3,title:"4. Create Table Component"},{id:"5-register-plugin-configuration-page",depth:3,title:"5. Register Plugin Configuration Page"},{id:"6-implementing-the-add-new-feature",depth:3,title:'6. Implementing the "Add New" Feature'},{id:"7-implementing-the-edit-feature",depth:3,title:"7. Implementing the Edit Feature"},{id:"8-implementing-the-delete-functionality",depth:3,title:"8. Implementing the Delete Functionality"},{id:"9-using-configuration-data-within-a-page",depth:3,title:"9. Using Configuration Data Within a Page"},{id:"10-global-usage-of-configuration-data",depth:3,title:"10. Global Usage of Configuration Data"},{id:"packaging-and-uploading-to-production-environment",depth:3,title:"Packaging and Uploading to Production Environment"}],H4=[{value:"The configuration interface consists of a table that allows you to add, edit, and delete data.",paraId:0,tocIndex:1},{value:"Let\u2019s assume we need to create an email notification plugin. This plugin can have multiple templates, and each template contains information such as the email subject and content. We need a configuration interface to manage these templates.",paraId:1,tocIndex:2},{value:"The complete example code for this document can be found in ",paraId:2,tocIndex:2},{value:"plugin-samples",paraId:2,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"Following the instructions in ",paraId:3,tocIndex:3},{value:"Writing Your First Plugin",paraId:4,tocIndex:3},{value:", if you don't have a project yet, you can create one first. If you already have a project or have cloned the source code, you can skip this step.",paraId:3,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install yarn nocobase install @@ -8427,7 +8479,7 @@ function useDeleteActionProps(): ActionProps { `,paraId:113,tocIndex:22},{value:` `,paraId:80},{value:"Following the ",paraId:114,tocIndex:23},{value:"Build and Package Plugin",paraId:115,tocIndex:23},{value:" documentation, we can package the plugin and upload it to the production environment.",paraId:114,tocIndex:23},{value:"If you cloned the source code, you need to perform a full build first to ensure the plugin dependencies are built properly.",paraId:116,tocIndex:23},{value:`yarn build `,paraId:117,tocIndex:23},{value:"If your project was created using ",paraId:118,tocIndex:23},{value:"create-nocobase-app",paraId:118,tocIndex:23},{value:", you can directly run:",paraId:118,tocIndex:23},{value:`yarn build @nocobase-sample/plugin-settings-table --tar -`,paraId:119,tocIndex:23},{value:"This will generate the file ",paraId:120,tocIndex:23},{value:"storage/tar/@nocobase-sample/plugin-settings-table.tar.gz",paraId:120,tocIndex:23},{value:", which can be installed via the ",paraId:120,tocIndex:23},{value:"upload method",paraId:121,tocIndex:23},{value:".",paraId:120,tocIndex:23}],Wk={},$k={title:"Add Page",toc:"menu",filename:"docs/en-US/plugin-samples/router/add-page/index.md",lastUpdated:1732240239e3,description:"Add some pages for personalized display."},Gk=[{id:"add-page",depth:1,title:"Add Page"},{id:"description",depth:2,title:"Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"function-implementation",depth:2,title:"Function Implementation"},{id:"1--add-about-page",depth:3,title:"1. Add /about page"},{id:"2--add-admindata-view-page",depth:3,title:"2. Add /admin/data-view page"},{id:"3--add-adminmaterial-manage-and-its-sub-pages",depth:3,title:"3. Add /admin/material-manage and its sub-pages"},{id:"packaging-and-uploading-to-production-environment",depth:2,title:"Packaging and Uploading to Production Environment"}],Vk=[{value:"Add some pages for personalized display.",paraId:0,tocIndex:1},{value:"This example will add 4 pages:",paraId:1,tocIndex:2},{value:"/about",paraId:2,tocIndex:2},{value:": About page, used to display system-related information, accessible without logging in.",paraId:2,tocIndex:2},{value:"/admin/data-view",paraId:2,tocIndex:2},{value:": Data dashboard page, requires login to access.",paraId:2,tocIndex:2},{value:"/admin/material-manage",paraId:2,tocIndex:2},{value:`: Material management center, including image and video management, is a parent route page. +`,paraId:119,tocIndex:23},{value:"This will generate the file ",paraId:120,tocIndex:23},{value:"storage/tar/@nocobase-sample/plugin-settings-table.tar.gz",paraId:120,tocIndex:23},{value:", which can be installed via the ",paraId:120,tocIndex:23},{value:"upload method",paraId:121,tocIndex:23},{value:".",paraId:120,tocIndex:23}],W4={},$4={title:"Add Page",toc:"menu",filename:"docs/en-US/plugin-samples/router/add-page/index.md",lastUpdated:173254844e4,description:"Add some pages for personalized display."},G4=[{id:"add-page",depth:1,title:"Add Page"},{id:"description",depth:2,title:"Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"function-implementation",depth:2,title:"Function Implementation"},{id:"1--add-about-page",depth:3,title:"1. Add /about page"},{id:"2--add-admindata-view-page",depth:3,title:"2. Add /admin/data-view page"},{id:"3--add-adminmaterial-manage-and-its-sub-pages",depth:3,title:"3. Add /admin/material-manage and its sub-pages"},{id:"packaging-and-uploading-to-production-environment",depth:2,title:"Packaging and Uploading to Production Environment"}],V4=[{value:"Add some pages for personalized display.",paraId:0,tocIndex:1},{value:"This example will add 4 pages:",paraId:1,tocIndex:2},{value:"/about",paraId:2,tocIndex:2},{value:": About page, used to display system-related information, accessible without logging in.",paraId:2,tocIndex:2},{value:"/admin/data-view",paraId:2,tocIndex:2},{value:": Data dashboard page, requires login to access.",paraId:2,tocIndex:2},{value:"/admin/material-manage",paraId:2,tocIndex:2},{value:`: Material management center, including image and video management, is a parent route page. `,paraId:2,tocIndex:2},{value:"/admin/material-manage/image",paraId:3,tocIndex:2},{value:": Image management.",paraId:3,tocIndex:2},{value:"/admin/material-manage/video",paraId:3,tocIndex:2},{value:": Video management.",paraId:3,tocIndex:2},{value:"However, the content development will not be extensive, only for demonstration purposes.",paraId:4,tocIndex:2},{value:"You can find the complete example code in the ",paraId:5,tocIndex:2},{value:"plugin-samples",paraId:5,tocIndex:2},{value:" repository.",paraId:5,tocIndex:2},{value:"Following the instructions in the ",paraId:6,tocIndex:3},{value:"Writing Your First Plugin",paraId:7,tocIndex:3},{value:" documentation, if you don't have a project yet, you can create one. If you already have one or have cloned the source code, you can skip this step.",paraId:6,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -8546,7 +8598,7 @@ export class PluginAddPageClient extends Plugin { `,paraId:30,tocIndex:7},{value:"Then we visit ",paraId:31,tocIndex:7},{value:"http://localhost:13000/admin/material",paraId:31,tocIndex:7},{value:" and we can see that the ",paraId:31,tocIndex:7},{value:"Material Page",paraId:31,tocIndex:7},{value:" is already displayed on the page, and clicking on the ",paraId:31,tocIndex:7},{value:"Video",paraId:31,tocIndex:7},{value:" and ",paraId:31,tocIndex:7},{value:"Img",paraId:31,tocIndex:7},{value:" links can switch to the corresponding pages.",paraId:31,tocIndex:7},{value:` `,paraId:14},{value:"According to the documentation on ",paraId:32,tocIndex:8},{value:"Building and Packaging Plugins",paraId:33,tocIndex:8},{value:", we can package the plugin and upload it to the production environment.",paraId:32,tocIndex:8},{value:"If you have cloned the source code, you need to perform a full build first to build the dependencies of the plugin as well.",paraId:34,tocIndex:8},{value:`yarn build `,paraId:35,tocIndex:8},{value:"If you are using ",paraId:36,tocIndex:8},{value:"create-nocobase-app",paraId:36,tocIndex:8},{value:" to create your project, you can directly execute:",paraId:36,tocIndex:8},{value:`yarn build @nocobase-sample/plugin-add-page --tar -`,paraId:37,tocIndex:8},{value:"This way you can see the ",paraId:38,tocIndex:8},{value:"storage/tar/@nocobase-sample/plugin-add-page.tar.gz",paraId:38,tocIndex:8},{value:" file, and then install it through the ",paraId:38,tocIndex:8},{value:"upload method",paraId:39,tocIndex:8},{value:".",paraId:38,tocIndex:8}],Kk={},Zk={title:"SchemaSettings",toc:"menu",filename:"docs/en-US/plugin-samples/schema-settings/index.md",lastUpdated:1732240239e3,description:"SchemaSettings \u901A\u8FC7\u4FEE\u6539 Schema \u52A8\u6001\u914D\u7F6E\u533A\u5757\u3001\u5B57\u6BB5\u3001\u64CD\u4F5C\u7684\u5C5E\u6027\u3002"},Yk=[{id:"schemasettings",depth:1,title:"SchemaSettings"}],Qk=[{value:"SchemaSettings",paraId:0,tocIndex:0},{value:" \u901A\u8FC7\u4FEE\u6539 Schema \u52A8\u6001\u914D\u7F6E\u533A\u5757\u3001\u5B57\u6BB5\u3001\u64CD\u4F5C\u7684\u5C5E\u6027\u3002",paraId:1,tocIndex:0},{value:"\u6839\u636E\u9700\u6C42\u4E0D\u540C\u53EF\u80FD\u6709\u4EE5\u4E0B\u6269\u5C55\u573A\u666F\uFF1A",paraId:2,tocIndex:0},{value:"\u5411\u5DF2\u6709\u7684 SchemaSettings \u4E2D\u6DFB\u52A0\u5B50\u9879",paraId:3,tocIndex:0},{value:"\u521B\u5EFA\u65B0\u7684 SchemaSettings",paraId:3,tocIndex:0},{value:"\u6839\u636E\u4EE5\u4E0A\u573A\u666F\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E86\u5982\u4E0B\u793A\u4F8B\uFF1A",paraId:4,tocIndex:0},{value:"\u521B\u5EFA\u65B0\u7684 SchemaSettings",paraId:5,tocIndex:0},{value:"\u6DFB\u52A0\u5B50\u9879\u5230\u5DF2\u6709\u7684 SchemaSettings",paraId:6,tocIndex:0}],Jk={},Xk={title:"API\u53C2\u8003",toc:"menu",filename:"docs/en-US/plugins/data-visualization/dev/index.md",lastUpdated:1732240239e3,description:"NocoBase \u5F53\u524D\u4F7F\u7528 G2Plot \u4F5C\u4E3A\u9ED8\u8BA4\u7684\u56FE\u8868\u5E93\uFF0C\u63D0\u4F9B\u4E86\u5E38\u7528\u7684\u56FE\u8868\u7EC4\u4EF6\u3002\u9664\u4E86\u9ED8\u8BA4\u7684\u56FE\u8868\u7EC4\u4EF6\uFF0CNocoBase \u8FD8\u652F\u6301\u6269\u5C55\u5176\u4ED6\u56FE\u8868\u7EC4\u4EF6\uFF0C\u4E5F\u53EF\u4EE5\u63A5\u5165\u5176\u4ED6\u56FE\u8868\u5E93\u7EC4\u4EF6\uFF0C\u6BD4\u5982: ECharts. \u8FD9\u4E00\u90E8\u5206\u4E3B\u8981\u4ECB\u7ECD\u5982\u4F55\u6269\u5C55\u63A5\u5165\u65B0\u7684\u56FE\u8868\u7EC4\u4EF6\u3002"},e4=[{id:"api\u53C2\u8003",depth:1,title:"API\u53C2\u8003"},{id:"\u6DFB\u52A0\u56FE\u8868",depth:2,title:"\u6DFB\u52A0\u56FE\u8868"},{id:"\u65B9\u6CD5",depth:3,title:"\u65B9\u6CD5"},{id:"addgroup",depth:4,title:"addGroup"},{id:"setgroup",depth:4,title:"setGroup"},{id:"add",depth:4,title:"add"},{id:"charttype",depth:2,title:"ChartType"},{id:"\u5C5E\u6027",depth:3,title:"\u5C5E\u6027"},{id:"\u63A5\u53E3",depth:3,title:"\u63A5\u53E3"},{id:"init",depth:4,title:"init"},{id:"render",depth:4,title:"render"},{id:"getreference",depth:4,title:"getReference"},{id:"chart",depth:2,title:"Chart"},{id:"\u5C5E\u6027-1",depth:3,title:"\u5C5E\u6027"},{id:"config",depth:4,title:"config"},{id:"\u65B9\u6CD5-1",depth:3,title:"\u65B9\u6CD5"},{id:"infer",depth:4,title:"infer"},{id:"getprops",depth:4,title:"getProps"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],a4=[{value:"NocoBase \u5F53\u524D\u4F7F\u7528 ",paraId:0,tocIndex:0},{value:"G2Plot",paraId:0,tocIndex:0},{value:" \u4F5C\u4E3A\u9ED8\u8BA4\u7684\u56FE\u8868\u5E93\uFF0C\u63D0\u4F9B\u4E86\u5E38\u7528\u7684\u56FE\u8868\u7EC4\u4EF6\u3002\u9664\u4E86\u9ED8\u8BA4\u7684\u56FE\u8868\u7EC4\u4EF6\uFF0CNocoBase \u8FD8\u652F\u6301\u6269\u5C55\u5176\u4ED6\u56FE\u8868\u7EC4\u4EF6\uFF0C\u4E5F\u53EF\u4EE5\u63A5\u5165\u5176\u4ED6\u56FE\u8868\u5E93\u7EC4\u4EF6\uFF0C\u6BD4\u5982: ECharts. \u8FD9\u4E00\u90E8\u5206\u4E3B\u8981\u4ECB\u7ECD\u5982\u4F55\u6269\u5C55\u63A5\u5165\u65B0\u7684\u56FE\u8868\u7EC4\u4EF6\u3002",paraId:0,tocIndex:0},{value:`import DataVisualization from '@nocobase/plugin-data-visualization' +`,paraId:37,tocIndex:8},{value:"This way you can see the ",paraId:38,tocIndex:8},{value:"storage/tar/@nocobase-sample/plugin-add-page.tar.gz",paraId:38,tocIndex:8},{value:" file, and then install it through the ",paraId:38,tocIndex:8},{value:"upload method",paraId:39,tocIndex:8},{value:".",paraId:38,tocIndex:8}],K4={},Z4={title:"SchemaSettings",toc:"menu",filename:"docs/en-US/plugin-samples/schema-settings/index.md",lastUpdated:173254844e4,description:"SchemaSettings \u901A\u8FC7\u4FEE\u6539 Schema \u52A8\u6001\u914D\u7F6E\u533A\u5757\u3001\u5B57\u6BB5\u3001\u64CD\u4F5C\u7684\u5C5E\u6027\u3002"},Y4=[{id:"schemasettings",depth:1,title:"SchemaSettings"}],Q4=[{value:"SchemaSettings",paraId:0,tocIndex:0},{value:" \u901A\u8FC7\u4FEE\u6539 Schema \u52A8\u6001\u914D\u7F6E\u533A\u5757\u3001\u5B57\u6BB5\u3001\u64CD\u4F5C\u7684\u5C5E\u6027\u3002",paraId:1,tocIndex:0},{value:"\u6839\u636E\u9700\u6C42\u4E0D\u540C\u53EF\u80FD\u6709\u4EE5\u4E0B\u6269\u5C55\u573A\u666F\uFF1A",paraId:2,tocIndex:0},{value:"\u5411\u5DF2\u6709\u7684 SchemaSettings \u4E2D\u6DFB\u52A0\u5B50\u9879",paraId:3,tocIndex:0},{value:"\u521B\u5EFA\u65B0\u7684 SchemaSettings",paraId:3,tocIndex:0},{value:"\u6839\u636E\u4EE5\u4E0A\u573A\u666F\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E86\u5982\u4E0B\u793A\u4F8B\uFF1A",paraId:4,tocIndex:0},{value:"\u521B\u5EFA\u65B0\u7684 SchemaSettings",paraId:5,tocIndex:0},{value:"\u6DFB\u52A0\u5B50\u9879\u5230\u5DF2\u6709\u7684 SchemaSettings",paraId:6,tocIndex:0}],J4={},X4={title:"API\u53C2\u8003",toc:"menu",filename:"docs/en-US/plugins/data-visualization/dev/index.md",lastUpdated:173254844e4,description:"NocoBase \u5F53\u524D\u4F7F\u7528 G2Plot \u4F5C\u4E3A\u9ED8\u8BA4\u7684\u56FE\u8868\u5E93\uFF0C\u63D0\u4F9B\u4E86\u5E38\u7528\u7684\u56FE\u8868\u7EC4\u4EF6\u3002\u9664\u4E86\u9ED8\u8BA4\u7684\u56FE\u8868\u7EC4\u4EF6\uFF0CNocoBase \u8FD8\u652F\u6301\u6269\u5C55\u5176\u4ED6\u56FE\u8868\u7EC4\u4EF6\uFF0C\u4E5F\u53EF\u4EE5\u63A5\u5165\u5176\u4ED6\u56FE\u8868\u5E93\u7EC4\u4EF6\uFF0C\u6BD4\u5982: ECharts. \u8FD9\u4E00\u90E8\u5206\u4E3B\u8981\u4ECB\u7ECD\u5982\u4F55\u6269\u5C55\u63A5\u5165\u65B0\u7684\u56FE\u8868\u7EC4\u4EF6\u3002"},ek=[{id:"api\u53C2\u8003",depth:1,title:"API\u53C2\u8003"},{id:"\u6DFB\u52A0\u56FE\u8868",depth:2,title:"\u6DFB\u52A0\u56FE\u8868"},{id:"\u65B9\u6CD5",depth:3,title:"\u65B9\u6CD5"},{id:"addgroup",depth:4,title:"addGroup"},{id:"setgroup",depth:4,title:"setGroup"},{id:"add",depth:4,title:"add"},{id:"charttype",depth:2,title:"ChartType"},{id:"\u5C5E\u6027",depth:3,title:"\u5C5E\u6027"},{id:"\u63A5\u53E3",depth:3,title:"\u63A5\u53E3"},{id:"init",depth:4,title:"init"},{id:"render",depth:4,title:"render"},{id:"getreference",depth:4,title:"getReference"},{id:"chart",depth:2,title:"Chart"},{id:"\u5C5E\u6027-1",depth:3,title:"\u5C5E\u6027"},{id:"config",depth:4,title:"config"},{id:"\u65B9\u6CD5-1",depth:3,title:"\u65B9\u6CD5"},{id:"infer",depth:4,title:"infer"},{id:"getprops",depth:4,title:"getProps"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],ak=[{value:"NocoBase \u5F53\u524D\u4F7F\u7528 ",paraId:0,tocIndex:0},{value:"G2Plot",paraId:0,tocIndex:0},{value:" \u4F5C\u4E3A\u9ED8\u8BA4\u7684\u56FE\u8868\u5E93\uFF0C\u63D0\u4F9B\u4E86\u5E38\u7528\u7684\u56FE\u8868\u7EC4\u4EF6\u3002\u9664\u4E86\u9ED8\u8BA4\u7684\u56FE\u8868\u7EC4\u4EF6\uFF0CNocoBase \u8FD8\u652F\u6301\u6269\u5C55\u5176\u4ED6\u56FE\u8868\u7EC4\u4EF6\uFF0C\u4E5F\u53EF\u4EE5\u63A5\u5165\u5176\u4ED6\u56FE\u8868\u5E93\u7EC4\u4EF6\uFF0C\u6BD4\u5982: ECharts. \u8FD9\u4E00\u90E8\u5206\u4E3B\u8981\u4ECB\u7ECD\u5982\u4F55\u6269\u5C55\u63A5\u5165\u65B0\u7684\u56FE\u8868\u7EC4\u4EF6\u3002",paraId:0,tocIndex:0},{value:`import DataVisualization from '@nocobase/plugin-data-visualization' class CustomChartsPlugin extends Plugin { async load() { @@ -8633,7 +8685,7 @@ render: (props: RenderProps) => React.FC; yFields: FieldOption[]; }; `,paraId:38,tocIndex:16},{value:"infer",paraId:39,tocIndex:16},{value:" \u65B9\u6CD5\u7528\u4E8E\u6839\u636E\u6570\u636E\u914D\u7F6E\u4E2D\u7684\u5EA6\u91CF\u548C\u7EF4\u5EA6\uFF0C\u521D\u6B65\u63A8\u65AD\u51FA\u63A8\u65AD\u51FA\u56FE\u8868\u914D\u7F6E\u4E2D\u7684\u5404\u5B57\u6BB5\u503C\uFF0C\u51CF\u5C11\u91CD\u590D\u914D\u7F6E\u3002",paraId:39,tocIndex:16},{value:"infer",paraId:40,tocIndex:16},{value:" \u65B9\u6CD5\u63A5\u6536\u4E24\u4E2A\u53C2\u6570\uFF1A",paraId:40,tocIndex:16},{value:"\u5F53\u524D Collection \u7684 fields \u5143\u6570\u636E\uFF0C\u4F5C\u4E3A\u63A8\u65AD\u57FA\u7840",paraId:41,tocIndex:16},{value:"\u5F53\u524D\u5EA6\u91CF\u548C\u7EF4\u5EA6\u914D\u7F6E",paraId:41,tocIndex:16},{value:"\u63A8\u65AD\u7ED3\u679C\u8FD4\u56DE",paraId:42,tocIndex:16},{value:"xFields",paraId:43,tocIndex:16},{value:" - x \u8F74\u5B57\u6BB5",paraId:43,tocIndex:16},{value:"yFields",paraId:43,tocIndex:16},{value:" - y \u8F74\u5B57\u6BB5",paraId:43,tocIndex:16},{value:"seriesFields",paraId:43,tocIndex:16},{value:" - \u5206\u7C7B\u5B57\u6BB5\uFF0C\u53EF\u7528\u4F5C ",paraId:43,tocIndex:16},{value:"colorFields",paraId:43,tocIndex:16},{value:"yFields",paraId:43,tocIndex:16},{value:" - \u591A\u4E2A y \u8F74\u5B57\u6BB5\uFF0C\u901A\u5E38\u7528\u4E8E\u53CC\u8F74\u56FE",paraId:43,tocIndex:16},{value:"\u62FF\u5230\u63A8\u65AD\u7ED3\u679C\u4EE5\u540E\uFF0C\u53EF\u4EE5\u7ED3\u5408\u5B9A\u4E49 ",paraId:44,tocIndex:16},{value:"init",paraId:45,tocIndex:16},{value:"\u65B9\u6CD5",paraId:45,tocIndex:16},{value:"\uFF0C\u7ED9\u56FE\u8868\u914D\u7F6E\u505A\u9ED8\u8BA4\u521D\u59CB\u5316\u3002",paraId:44,tocIndex:16},{value:`getProps: (props: RenderProps) => any; -`,paraId:46,tocIndex:17},{value:"\u5C06\u6570\u636E\u3001\u56FE\u8868\u914D\u7F6E\u3001\u5B57\u6BB5\u5C5E\u6027\u3001\u6570\u636E\u8F6C\u6362\u7B49\u56FE\u8868\u76F8\u5173\u7684\u914D\u7F6E\u5143\u6570\u636E\uFF0C\u8F6C\u6362\u6210\u6E32\u67D3\u56FE\u8868\u7684\u5BF9\u5E94\u7EC4\u4EF6\u7684\u5C5E\u6027\uFF0C\u4E5F\u53EF\u4EE5\u8FD4\u56DE\u4E00\u4E9B\u4E0D\u66B4\u9732\u914D\u7F6E\u7684\u9ED8\u8BA4\u5C5E\u6027\u3002\u9ED8\u8BA4\u7684 ",paraId:47,tocIndex:17},{value:"render",paraId:47,tocIndex:17},{value:" \u65B9\u6CD5\u4F1A\u901A\u8FC7 ",paraId:47,tocIndex:17},{value:"getProps",paraId:47,tocIndex:17},{value:" \u62FF\u5230\u56FE\u8868\u7EC4\u4EF6\u5C5E\u6027\uFF0C\u4F20\u9012\u7ED9\u56FE\u8868\u7EC4\u4EF6\u3002\u8FD9\u4E2A\u65B9\u6CD5\u901A\u5E38\u9700\u8981\u6839\u636E\u4F7F\u7528\u7684\u56FE\u8868\u7EC4\u4EF6\u81EA\u5DF1\u5B9E\u73B0\u3002",paraId:47,tocIndex:17},{value:"src/client/chart/g2plot",paraId:48,tocIndex:18},{value:"src/client/chart/antd",paraId:49,tocIndex:18},{value:"\u56FE\u8868\u6269\u5C55\u6559\u7A0B",paraId:50,tocIndex:18}],t4={},n4={title:"\u6269\u5C55\u89E6\u53D1\u5668\u7C7B\u578B",toc:"menu",filename:"docs/en-US/plugins/workflow/development/trigger.md",lastUpdated:1732240239e3,description:"\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u90FD\u5FC5\u987B\u914D\u7F6E\u7279\u5B9A\u7684\u89E6\u53D1\u5668\uFF0C\u4F5C\u4E3A\u542F\u52A8\u6D41\u7A0B\u6267\u884C\u7684\u5165\u53E3\u3002"},o4=[{id:"\u6269\u5C55\u89E6\u53D1\u5668\u7C7B\u578B",depth:1,title:"\u6269\u5C55\u89E6\u53D1\u5668\u7C7B\u578B"},{id:"\u670D\u52A1\u7AEF",depth:2,title:"\u670D\u52A1\u7AEF"},{id:"\u5BA2\u6237\u7AEF",depth:2,title:"\u5BA2\u6237\u7AEF"}],r4=[{value:"\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u90FD\u5FC5\u987B\u914D\u7F6E\u7279\u5B9A\u7684\u89E6\u53D1\u5668\uFF0C\u4F5C\u4E3A\u542F\u52A8\u6D41\u7A0B\u6267\u884C\u7684\u5165\u53E3\u3002",paraId:0,tocIndex:0},{value:"\u89E6\u53D1\u5668\u7C7B\u578B\u901A\u5E38\u4EE3\u8868\u7279\u5B9A\u7684\u7CFB\u7EDF\u73AF\u5883\u4E8B\u4EF6\u3002\u5728\u5E94\u7528\u8FD0\u884C\u5468\u671F\u4E2D\uFF0C\u4EFB\u4F55\u63D0\u4F9B\u4E86\u53EF\u88AB\u8BA2\u9605\u7684\u4E8B\u4EF6\u73AF\u8282\u90FD\u53EF\u4EE5\u7528\u4E8E\u89E6\u53D1\u5668\u7C7B\u578B\u7684\u5B9A\u4E49\u3002\u4F8B\u5982\u63A5\u6536\u8BF7\u6C42\u3001\u6570\u636E\u8868\u64CD\u4F5C\u3001\u5B9A\u65F6\u4EFB\u52A1\u7B49\u3002",paraId:1,tocIndex:0},{value:"\u89E6\u53D1\u5668\u7C7B\u578B\u57FA\u4E8E\u5B57\u7B26\u4E32\u6807\u8BC6\u6CE8\u518C\u5728\u63D2\u4EF6\u7684\u89E6\u53D1\u5668\u8868\u4E2D\uFF0C\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u5185\u7F6E\u4E86\u4E24\u79CD\u89E6\u53D1\u5668\uFF1A",paraId:2,tocIndex:0},{value:"'collection'",paraId:3,tocIndex:0},{value:"\uFF1A\u6570\u636E\u8868\u64CD\u4F5C\u89E6\u53D1\uFF1B",paraId:3,tocIndex:0},{value:"'schedule'",paraId:3,tocIndex:0},{value:"\uFF1A\u5B9A\u65F6\u4EFB\u52A1\u89E6\u53D1\uFF1B",paraId:3,tocIndex:0},{value:"\u6269\u5C55\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u9700\u8981\u4FDD\u8BC1\u6807\u8BC6\u552F\u4E00\uFF0C\u5728\u670D\u52A1\u7AEF\u6CE8\u518C\u89E6\u53D1\u5668\u7684\u8BA2\u9605/\u53D6\u6D88\u8BA2\u9605\u7684\u5B9E\u73B0\uFF0C\u5728\u5BA2\u6237\u7AEF\u6CE8\u518C\u754C\u9762\u914D\u7F6E\u7684\u5B9E\u73B0\u3002",paraId:4,tocIndex:0},{value:"\u4EFB\u610F\u89E6\u53D1\u5668\u9700\u8981\u7EE7\u627F\u81EA ",paraId:5,tocIndex:1},{value:"Trigger",paraId:5,tocIndex:1},{value:" \u57FA\u7C7B\uFF0C\u5E76\u5B9E\u73B0 ",paraId:5,tocIndex:1},{value:"on",paraId:5,tocIndex:1},{value:"/",paraId:5,tocIndex:1},{value:"off",paraId:5,tocIndex:1},{value:" \u65B9\u6CD5\uFF0C\u5206\u522B\u7528\u4E8E\u8BA2\u9605\u548C\u53D6\u6D88\u8BA2\u9605\u5177\u4F53\u7684\u73AF\u5883\u4E8B\u4EF6\u3002\u5728 ",paraId:5,tocIndex:1},{value:"on",paraId:5,tocIndex:1},{value:" \u65B9\u6CD5\u4E2D\uFF0C\u9700\u8981\u5728\u5177\u4F53\u7684\u4E8B\u4EF6\u56DE\u8C03\u51FD\u6570\u4E2D\u8C03\u7528 ",paraId:5,tocIndex:1},{value:"this.plugin.trigger()",paraId:5,tocIndex:1},{value:"\uFF0C\u4EE5\u6700\u7EC8\u89E6\u53D1\u4E8B\u4EF6\u3002\u53E6\u5916\u5728 ",paraId:5,tocIndex:1},{value:"off",paraId:5,tocIndex:1},{value:" \u65B9\u6CD5\u4E2D\uFF0C\u9700\u8981\u505A\u53D6\u6D88\u8BA2\u9605\u7684\u76F8\u5173\u6E05\u7406\u5DE5\u4F5C\u3002",paraId:5,tocIndex:1},{value:`import { Trigger } from '@nocobase/plugin-workflow'; +`,paraId:46,tocIndex:17},{value:"\u5C06\u6570\u636E\u3001\u56FE\u8868\u914D\u7F6E\u3001\u5B57\u6BB5\u5C5E\u6027\u3001\u6570\u636E\u8F6C\u6362\u7B49\u56FE\u8868\u76F8\u5173\u7684\u914D\u7F6E\u5143\u6570\u636E\uFF0C\u8F6C\u6362\u6210\u6E32\u67D3\u56FE\u8868\u7684\u5BF9\u5E94\u7EC4\u4EF6\u7684\u5C5E\u6027\uFF0C\u4E5F\u53EF\u4EE5\u8FD4\u56DE\u4E00\u4E9B\u4E0D\u66B4\u9732\u914D\u7F6E\u7684\u9ED8\u8BA4\u5C5E\u6027\u3002\u9ED8\u8BA4\u7684 ",paraId:47,tocIndex:17},{value:"render",paraId:47,tocIndex:17},{value:" \u65B9\u6CD5\u4F1A\u901A\u8FC7 ",paraId:47,tocIndex:17},{value:"getProps",paraId:47,tocIndex:17},{value:" \u62FF\u5230\u56FE\u8868\u7EC4\u4EF6\u5C5E\u6027\uFF0C\u4F20\u9012\u7ED9\u56FE\u8868\u7EC4\u4EF6\u3002\u8FD9\u4E2A\u65B9\u6CD5\u901A\u5E38\u9700\u8981\u6839\u636E\u4F7F\u7528\u7684\u56FE\u8868\u7EC4\u4EF6\u81EA\u5DF1\u5B9E\u73B0\u3002",paraId:47,tocIndex:17},{value:"src/client/chart/g2plot",paraId:48,tocIndex:18},{value:"src/client/chart/antd",paraId:49,tocIndex:18},{value:"\u56FE\u8868\u6269\u5C55\u6559\u7A0B",paraId:50,tocIndex:18}],tk={},nk={title:"\u6269\u5C55\u89E6\u53D1\u5668\u7C7B\u578B",toc:"menu",filename:"docs/en-US/plugins/workflow/development/trigger.md",lastUpdated:173254844e4,description:"\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u90FD\u5FC5\u987B\u914D\u7F6E\u7279\u5B9A\u7684\u89E6\u53D1\u5668\uFF0C\u4F5C\u4E3A\u542F\u52A8\u6D41\u7A0B\u6267\u884C\u7684\u5165\u53E3\u3002"},ok=[{id:"\u6269\u5C55\u89E6\u53D1\u5668\u7C7B\u578B",depth:1,title:"\u6269\u5C55\u89E6\u53D1\u5668\u7C7B\u578B"},{id:"\u670D\u52A1\u7AEF",depth:2,title:"\u670D\u52A1\u7AEF"},{id:"\u5BA2\u6237\u7AEF",depth:2,title:"\u5BA2\u6237\u7AEF"}],rk=[{value:"\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u90FD\u5FC5\u987B\u914D\u7F6E\u7279\u5B9A\u7684\u89E6\u53D1\u5668\uFF0C\u4F5C\u4E3A\u542F\u52A8\u6D41\u7A0B\u6267\u884C\u7684\u5165\u53E3\u3002",paraId:0,tocIndex:0},{value:"\u89E6\u53D1\u5668\u7C7B\u578B\u901A\u5E38\u4EE3\u8868\u7279\u5B9A\u7684\u7CFB\u7EDF\u73AF\u5883\u4E8B\u4EF6\u3002\u5728\u5E94\u7528\u8FD0\u884C\u5468\u671F\u4E2D\uFF0C\u4EFB\u4F55\u63D0\u4F9B\u4E86\u53EF\u88AB\u8BA2\u9605\u7684\u4E8B\u4EF6\u73AF\u8282\u90FD\u53EF\u4EE5\u7528\u4E8E\u89E6\u53D1\u5668\u7C7B\u578B\u7684\u5B9A\u4E49\u3002\u4F8B\u5982\u63A5\u6536\u8BF7\u6C42\u3001\u6570\u636E\u8868\u64CD\u4F5C\u3001\u5B9A\u65F6\u4EFB\u52A1\u7B49\u3002",paraId:1,tocIndex:0},{value:"\u89E6\u53D1\u5668\u7C7B\u578B\u57FA\u4E8E\u5B57\u7B26\u4E32\u6807\u8BC6\u6CE8\u518C\u5728\u63D2\u4EF6\u7684\u89E6\u53D1\u5668\u8868\u4E2D\uFF0C\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u5185\u7F6E\u4E86\u4E24\u79CD\u89E6\u53D1\u5668\uFF1A",paraId:2,tocIndex:0},{value:"'collection'",paraId:3,tocIndex:0},{value:"\uFF1A\u6570\u636E\u8868\u64CD\u4F5C\u89E6\u53D1\uFF1B",paraId:3,tocIndex:0},{value:"'schedule'",paraId:3,tocIndex:0},{value:"\uFF1A\u5B9A\u65F6\u4EFB\u52A1\u89E6\u53D1\uFF1B",paraId:3,tocIndex:0},{value:"\u6269\u5C55\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u9700\u8981\u4FDD\u8BC1\u6807\u8BC6\u552F\u4E00\uFF0C\u5728\u670D\u52A1\u7AEF\u6CE8\u518C\u89E6\u53D1\u5668\u7684\u8BA2\u9605/\u53D6\u6D88\u8BA2\u9605\u7684\u5B9E\u73B0\uFF0C\u5728\u5BA2\u6237\u7AEF\u6CE8\u518C\u754C\u9762\u914D\u7F6E\u7684\u5B9E\u73B0\u3002",paraId:4,tocIndex:0},{value:"\u4EFB\u610F\u89E6\u53D1\u5668\u9700\u8981\u7EE7\u627F\u81EA ",paraId:5,tocIndex:1},{value:"Trigger",paraId:5,tocIndex:1},{value:" \u57FA\u7C7B\uFF0C\u5E76\u5B9E\u73B0 ",paraId:5,tocIndex:1},{value:"on",paraId:5,tocIndex:1},{value:"/",paraId:5,tocIndex:1},{value:"off",paraId:5,tocIndex:1},{value:" \u65B9\u6CD5\uFF0C\u5206\u522B\u7528\u4E8E\u8BA2\u9605\u548C\u53D6\u6D88\u8BA2\u9605\u5177\u4F53\u7684\u73AF\u5883\u4E8B\u4EF6\u3002\u5728 ",paraId:5,tocIndex:1},{value:"on",paraId:5,tocIndex:1},{value:" \u65B9\u6CD5\u4E2D\uFF0C\u9700\u8981\u5728\u5177\u4F53\u7684\u4E8B\u4EF6\u56DE\u8C03\u51FD\u6570\u4E2D\u8C03\u7528 ",paraId:5,tocIndex:1},{value:"this.plugin.trigger()",paraId:5,tocIndex:1},{value:"\uFF0C\u4EE5\u6700\u7EC8\u89E6\u53D1\u4E8B\u4EF6\u3002\u53E6\u5916\u5728 ",paraId:5,tocIndex:1},{value:"off",paraId:5,tocIndex:1},{value:" \u65B9\u6CD5\u4E2D\uFF0C\u9700\u8981\u505A\u53D6\u6D88\u8BA2\u9605\u7684\u76F8\u5173\u6E05\u7406\u5DE5\u4F5C\u3002",paraId:5,tocIndex:1},{value:`import { Trigger } from '@nocobase/plugin-workflow'; class MyTrigger extends Trigger { timer: NodeJS.Timeout; @@ -8676,7 +8728,7 @@ triggers.register('interval', { }, }, }); -`,paraId:12,tocIndex:2},{value:"\u6CE8\uFF1A\u5BA2\u6237\u7AEF\u6CE8\u518C\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u6807\u8BC6\u5FC5\u987B\u4E0E\u670D\u52A1\u7AEF\u7684\u4FDD\u6301\u4E00\u81F4\uFF0C\u5426\u5219\u4F1A\u5BFC\u81F4\u9519\u8BEF\u3002",paraId:13,tocIndex:2},{value:"\u5B9A\u4E49\u89E6\u53D1\u5668\u7C7B\u578B\u7684\u5176\u4ED6\u5185\u5BB9\u8BE6\u89C1 ",paraId:14,tocIndex:2},{value:"\u5DE5\u4F5C\u6D41 API \u53C2\u8003",paraId:15,tocIndex:2},{value:" \u90E8\u5206\u3002",paraId:14,tocIndex:2}],d4={},i4={title:"\u65B0\u589E\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/create.md",lastUpdated:1732240239e3,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u65B0\u589E\u4E00\u884C\u6570\u636E\u3002"},l4=[{id:"\u65B0\u589E\u6570\u636E",depth:1,title:"\u65B0\u589E\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u5B57\u6BB5\u503C",depth:3,title:"\u5B57\u6BB5\u503C"},{id:"\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E",depth:3,title:"\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],c4=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u65B0\u589E\u4E00\u884C\u6570\u636E\u3002",paraId:0,tocIndex:0},{value:"\u65B0\u589E\u6570\u636E\u884C\u7684\u5B57\u6BB5\u503C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u5BF9\u5173\u7CFB\u5B57\u6BB5\u7684\u8D4B\u503C\u53EF\u4EE5\u76F4\u63A5\u5F15\u7528\u4E0A\u4E0B\u6587\u4E2D\u7684\u5BF9\u5E94\u6570\u636E\u53D8\u91CF\uFF0C\u53EF\u4EE5\u662F\u5BF9\u8C61\uFF0C\u4E5F\u53EF\u4EE5\u662F\u5916\u952E\u7684\u503C\u3002\u5982\u679C\u4E0D\u4F7F\u7528\u53D8\u91CF\uFF0C\u5219\u9700\u8981\u624B\u52A8\u586B\u5199\u5916\u952E\u7684\u503C\uFF0C\u5BF9\u591A\u5173\u7CFB\u7684\u591A\u4E2A\u5916\u952E\u503C\u9700\u8981\u4F7F\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\u7684\u5F62\u5F0F\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u65B0\u589E\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u9009\u62E9\u8981\u65B0\u589E\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:3,tocIndex:3},{value:"\u9488\u5BF9\u6570\u636E\u8868\u7684\u5B57\u6BB5\u8FDB\u884C\u8D4B\u503C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4E5F\u53EF\u4EE5\u624B\u52A8\u586B\u5199\u9759\u6001\u503C\u3002",paraId:4,tocIndex:4},{value:"\u6CE8\uFF1A\u5DE5\u4F5C\u6D41\u4E2D\u65B0\u589E\u8282\u70B9\u65B0\u589E\u7684\u6570\u636E\u4E0D\u4F1A\u81EA\u52A8\u5904\u7406\u201C\u521B\u5EFA\u4EBA\u201D\u3001\u201C\u6700\u540E\u4FEE\u6539\u4EBA\u201D\u7B49\u7528\u6237\u6570\u636E\uFF0C\u9700\u8981\u6839\u636E\u60C5\u51B5\u81EA\u884C\u914D\u7F6E\u8FD9\u4E24\u4E2A\u5B57\u6BB5\u7684\u503C\u3002",paraId:5,tocIndex:4},{value:"\u5982\u679C\u65B0\u589E\u6570\u636E\u7684\u5B57\u6BB5\u4E2D\u5305\u542B\u5173\u7CFB\u5B57\u6BB5\uFF0C\u4E14\u5E0C\u671B\u540E\u7EED\u6D41\u7A0B\u4E2D\u4F7F\u7528\u76F8\u5E94\u7684\u5173\u7CFB\u6570\u636E\u65F6\uFF0C\u53EF\u4EE5\u5728\u9884\u52A0\u8F7D\u914D\u7F6E\u4E2D\u52FE\u9009\u76F8\u5E94\u7684\u5173\u7CFB\u5B57\u6BB5\uFF0C\u8FD9\u6837\u5728\u65B0\u589E\u6570\u636E\u5B8C\u6210\u540E\uFF0C\u4F1A\u81EA\u52A8\u52A0\u8F7D\u76F8\u5E94\u7684\u5173\u7CFB\u6570\u636E\u4E00\u5E76\u50A8\u5B58\u5728\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u4E2D\u3002",paraId:6,tocIndex:5},{value:"\u4F8B\u5982\u5F53\u201C\u6587\u7AE0\u201D\u8868\u7684\u6570\u636E\u65B0\u589E\u6216\u66F4\u65B0\u540E\uFF0C\u9700\u8981\u81EA\u52A8\u65B0\u589E\u4E00\u6761\u201C\u6587\u7AE0\u7248\u672C\u201D\u6570\u636E\uFF0C\u8BB0\u5F55\u6587\u7AE0\u7684\u4E00\u6B21\u53D8\u66F4\u5386\u53F2\uFF0C\u53EF\u4EE5\u4F7F\u7528\u65B0\u589E\u8282\u70B9\u6765\u5B9E\u73B0\uFF1A",paraId:7,tocIndex:6},{value:"\u6309\u6B64\u914D\u7F6E\u542F\u7528\u5DE5\u4F5C\u6D41\u540E\uFF0C\u5F53\u201C\u6587\u7AE0\u201D\u8868\u7684\u6570\u636E\u53D8\u66F4\u65F6\uFF0C\u4F1A\u81EA\u52A8\u65B0\u589E\u4E00\u6761\u201C\u6587\u7AE0\u7248\u672C\u201D\u6570\u636E\uFF0C\u8BB0\u5F55\u6587\u7AE0\u7684\u53D8\u66F4\u5386\u53F2\u3002",paraId:8,tocIndex:6}],s4={},u4={title:"\u4EBA\u5DE5\u5904\u7406",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/manual.md",lastUpdated:1732240239e3,description:"\u5F53\u4E1A\u52A1\u6D41\u7A0B\u4E0D\u80FD\u5B8C\u5168\u81EA\u52A8\u5316\u51B3\u7B56\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4EBA\u5DE5\u8282\u70B9\uFF0C\u5C06\u90E8\u5206\u51B3\u7B56\u6743\u4EA4\u7ED9\u4EBA\u5DE5\u5904\u7406\u3002"},p4=[{id:"\u4EBA\u5DE5\u5904\u7406",depth:1,title:"\u4EBA\u5DE5\u5904\u7406"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u914D\u7F6E\u8282\u70B9",depth:2,title:"\u914D\u7F6E\u8282\u70B9"},{id:"\u8D1F\u8D23\u4EBA",depth:3,title:"\u8D1F\u8D23\u4EBA"},{id:"\u914D\u7F6E\u7528\u6237\u754C\u9762",depth:3,title:"\u914D\u7F6E\u7528\u6237\u754C\u9762"},{id:"\u6807\u7B7E\u9875",depth:4,title:"\u6807\u7B7E\u9875"},{id:"\u533A\u5757",depth:4,title:"\u533A\u5757"},{id:"\u6570\u636E\u533A\u5757",depth:5,title:"\u6570\u636E\u533A\u5757"},{id:"\u8868\u5355\u533A\u5757",depth:5,title:"\u8868\u5355\u533A\u5757"},{id:"\u914D\u7F6E\u5F85\u529E\u533A\u5757",depth:2,title:"\u914D\u7F6E\u5F85\u529E\u533A\u5757"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u6587\u7AE0\u5BA1\u6838",depth:3,title:"\u6587\u7AE0\u5BA1\u6838"},{id:"\u8BF7\u5047\u5BA1\u6279",depth:3,title:"\u8BF7\u5047\u5BA1\u6279"}],I4=[{value:"\u5F53\u4E1A\u52A1\u6D41\u7A0B\u4E0D\u80FD\u5B8C\u5168\u81EA\u52A8\u5316\u51B3\u7B56\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4EBA\u5DE5\u8282\u70B9\uFF0C\u5C06\u90E8\u5206\u51B3\u7B56\u6743\u4EA4\u7ED9\u4EBA\u5DE5\u5904\u7406\u3002",paraId:0,tocIndex:0},{value:"\u4EBA\u5DE5\u8282\u70B9\u5728\u6267\u884C\u5230\u65F6\u4F1A\u5148\u4E2D\u65AD\u6574\u4E2A\u6D41\u7A0B\u7684\u6267\u884C\uFF0C\u751F\u6210\u5BF9\u5E94\u7528\u6237\u7684\u5F85\u529E\u4EFB\u52A1\uFF0C\u5728\u7528\u6237\u63D0\u4EA4\u540E\u6839\u636E\u6240\u9009\u7684\u72B6\u6001\u51B3\u5B9A\u7EE7\u7EED\u6D41\u7A0B\u3001\u7EE7\u7EED\u7B49\u5F85\u8FD8\u662F\u7EC8\u6B62\u6D41\u7A0B\u3002\u5728\u9700\u8981\u8FDB\u884C\u6D41\u7A0B\u5BA1\u6279\u7B49\u573A\u666F\u4F1A\u975E\u5E38\u6709\u7528\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u4EBA\u5DE5\u5904\u7406\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u4EBA\u5DE5\u8282\u70B9\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u7528\u6237\uFF0C\u4F5C\u4E3A\u5F85\u529E\u4EFB\u52A1\u7684\u6267\u884C\u8005\u3002\u5F85\u529E\u4EFB\u52A1\u7684\u5217\u8868\u53EF\u4EE5\u5728\u9875\u9762\u6DFB\u52A0\u533A\u5757\u65F6\u6DFB\u52A0\uFF0C\u6BCF\u4E2A\u8282\u70B9\u7684\u4EFB\u52A1\u5F39\u7A97\u5185\u5BB9\u9700\u8981\u5728\u8282\u70B9\u4E2D\u8FDB\u884C\u754C\u9762\u914D\u7F6E\u3002",paraId:3,tocIndex:3},{value:"\u9009\u5B9A\u4E00\u4E2A\u7528\u6237\uFF0C\u6216\u8005\u901A\u8FC7\u53D8\u91CF\u9009\u62E9\u4E0A\u4E0B\u6587\u4E2D\u7684\u7528\u6237\u6570\u636E\u7684\u4E3B\u952E\u6216\u5916\u952E\u3002",paraId:4,tocIndex:3},{value:"\u76EE\u524D\u4EBA\u5DE5\u8282\u70B9\u7684\u8D1F\u8D23\u4EBA\u9009\u9879\u6682\u4E0D\u652F\u6301\u9488\u5BF9\u591A\u4EBA\u5904\u7406\uFF0C\u4F1A\u5728\u672A\u6765\u7684\u7248\u672C\u4E2D\u652F\u6301\u3002",paraId:5},{value:"\u5F85\u529E\u4E8B\u9879\u7684\u754C\u9762\u914D\u7F6E\u662F\u4EBA\u5DE5\u8282\u70B9\u7684\u6838\u5FC3\u5185\u5BB9\uFF0C\u53EF\u4EE5\u901A\u8FC7\u70B9\u51FB\u201C\u914D\u7F6E\u7528\u6237\u754C\u9762\u201D\u6309\u94AE\u5F39\u7A97\u6253\u5F00\u72EC\u7ACB\u914D\u7F6E\uFF0C\u548C\u666E\u901A\u9875\u9762\u4E00\u6837\uFF0C\u53EF\u4EE5\u6240\u89C1\u5373\u6240\u5F97\u5730\u914D\u7F6E\uFF1A",paraId:6,tocIndex:4},{value:"\u6807\u7B7E\u9875\u53EF\u4EE5\u7528\u4E8E\u533A\u5206\u4E0D\u540C\u7684\u5185\u5BB9\uFF0C\u4F8B\u5982\u4E00\u4E2A\u6807\u7B7E\u9875\u7528\u4E8E\u901A\u8FC7\u7684\u8868\u5355\u63D0\u4EA4\uFF0C\u53E6\u4E00\u4E2A\u6807\u7B7E\u9875\u7528\u4E8E\u62D2\u7EDD\u7684\u8868\u5355\u63D0\u4EA4\uFF0C\u6216\u8005\u7528\u4E8E\u5C55\u793A\u76F8\u5173\u6570\u636E\u7684\u8BE6\u60C5\u7B49\uFF0C\u53EF\u81EA\u7531\u914D\u7F6E\u3002",paraId:7,tocIndex:5},{value:"\u652F\u6301\u7684\u533A\u5757\u7C7B\u578B\u4E3B\u8981\u6709\u4E24\u5927\u7C7B\uFF0C\u6570\u636E\u533A\u5757\u548C\u8868\u5355\u533A\u5757\uFF0C\u53E6\u5916\u7684 Markdown \u4E3B\u8981\u7528\u4E8E\u63D0\u793A\u4FE1\u606F\u7B49\u9759\u6001\u5185\u5BB9\u3002",paraId:8,tocIndex:6},{value:"\u6570\u636E\u533A\u5757\u53EF\u9009\u62E9\u89E6\u53D1\u5668\u6570\u636E\u6216\u4EFB\u610F\u7684\u8282\u70B9\u5904\u7406\u7ED3\u679C\uFF0C\u7528\u4E8E\u63D0\u4F9B\u7ED9\u5F85\u529E\u8D1F\u8D23\u4EBA\u76F8\u5173\u7684\u4E0A\u4E0B\u6587\u4FE1\u606F\u3002\u4F8B\u5982\u5DE5\u4F5C\u6D41\u662F\u8868\u5355\u4E8B\u4EF6\u89E6\u53D1\u7684\uFF0C\u5373\u53EF\u4EE5\u521B\u5EFA\u4E00\u4E2A\u89E6\u53D1\u6570\u636E\u7684\u8BE6\u60C5\u533A\u5757\uFF0C\u4E0E\u666E\u901A\u9875\u9762\u7684\u8BE6\u60C5\u914D\u7F6E\u4E00\u81F4\uFF0C\u53EF\u4EFB\u9009\u89E6\u53D1\u6570\u636E\u5185\u6709\u7684\u5B57\u6BB5\u8FDB\u884C\u6570\u636E\u5C55\u793A\uFF1A",paraId:9,tocIndex:7},{value:"\u8282\u70B9\u6570\u636E\u533A\u5757\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u9009\u62E9\u4E0A\u6E38\u8282\u70B9\u4E2D\u7684\u6570\u636E\u7ED3\u679C\u4F5C\u4E3A\u8BE6\u60C5\u5C55\u793A\u3002\u4F8B\u5982\u4E0A\u6E38\u4E00\u4E2A\u8BA1\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF0C\u4F5C\u4E3A\u8D1F\u8D23\u4EBA\u5F85\u529E\u7684\u4E0A\u4E0B\u6587\u53C2\u8003\u4FE1\u606F\uFF1A",paraId:10,tocIndex:7},{value:"\u7531\u4E8E\u914D\u7F6E\u754C\u9762\u65F6\u5DE5\u4F5C\u6D41\u90FD\u5904\u4E8E\u672A\u6267\u884C\u7684\u72B6\u6001\uFF0C\u6240\u4EE5\u6570\u636E\u533A\u5757\u4E2D\u90FD\u662F\u6CA1\u6709\u5177\u4F53\u6570\u636E\u663E\u793A\u7684\uFF0C\u53EA\u6709\u5F53\u5DE5\u4F5C\u6D41\u88AB\u89E6\u53D1\u6267\u884C\u540E\uFF0C\u5728\u5F85\u529E\u5F39\u7A97\u754C\u9762\u4E2D\u624D\u53EF\u770B\u5230\u5177\u4F53\u6D41\u7A0B\u7684\u76F8\u5173\u6570\u636E\u3002",paraId:11},{value:"\u5F85\u529E\u754C\u9762\u4E2D\u81F3\u5C11\u9700\u8981\u914D\u7F6E\u4E00\u4E2A\u8868\u5355\u533A\u5757\uFF0C\u4F5C\u4E3A\u5DE5\u4F5C\u6D41\u662F\u5426\u7EE7\u7EED\u6267\u884C\u7684\u6700\u7EC8\u51B3\u7B56\u5904\u7406\uFF0C\u4E0D\u914D\u7F6E\u8868\u5355\u4F1A\u5BFC\u81F4\u6D41\u7A0B\u4E2D\u65AD\u540E\u65E0\u6CD5\u7EE7\u7EED\u3002\u8868\u5355\u533A\u5757\u6709\u4E09\u79CD\u7C7B\u578B\uFF0C\u5206\u522B\u662F\uFF1A",paraId:12,tocIndex:8},{value:"\u81EA\u5B9A\u4E49\u8868\u5355",paraId:13,tocIndex:8},{value:"\u65B0\u589E\u6570\u636E\u8868\u5355",paraId:13,tocIndex:8},{value:"\u66F4\u65B0\u6570\u636E\u8868\u5355",paraId:13,tocIndex:8},{value:"\u65B0\u589E\u6570\u636E\u8868\u5355\u548C\u66F4\u65B0\u6570\u636E\u8868\u5355\u9700\u8981\u9009\u62E9\u57FA\u4E8E\u7684\u6570\u636E\u8868\uFF0C\u5F85\u529E\u7528\u6237\u63D0\u4EA4\u540E\u4F1A\u4F7F\u7528\u8868\u5355\u5185\u7684\u503C\u65B0\u589E\u6216\u66F4\u65B0\u7279\u5B9A\u6570\u636E\u8868\u7684\u6570\u636E\u3002\u81EA\u5B9A\u4E49\u8868\u5355\u5219\u53EF\u4EE5\u81EA\u7531\u5B9A\u4E49\u4E00\u4E2A\u6570\u636E\u8868\u65E0\u5173\u7684\u4E34\u65F6\u8868\u5355\uFF0C\u5F85\u529E\u7528\u6237\u63D0\u4EA4\u540E\u7684\u5B57\u6BB5\u503C\u53EF\u4EE5\u5728\u540E\u7EED\u8282\u70B9\u4E2D\u4F7F\u7528\u3002",paraId:14,tocIndex:8},{value:"\u8868\u5355\u7684\u63D0\u4EA4\u6309\u94AE\u53EF\u4EE5\u914D\u7F6E\u4E09\u79CD\u7C7B\u578B\uFF0C\u5206\u522B\u662F\uFF1A",paraId:15,tocIndex:8},{value:"\u63D0\u4EA4\u540E\u7EE7\u7EED\u6D41\u7A0B",paraId:16,tocIndex:8},{value:"\u63D0\u4EA4\u540E\u7EC8\u6B62\u6D41\u7A0B",paraId:16,tocIndex:8},{value:"\u4EC5\u6682\u5B58\u8868\u5355\u503C",paraId:16,tocIndex:8},{value:"\u4E09\u4E2A\u6309\u94AE\u4EE3\u8868\u6D41\u7A0B\u5904\u7406\u4E2D\u4E09\u79CD\u8282\u70B9\u72B6\u6001\uFF0C\u63D0\u4EA4\u540E\u8BE5\u8282\u70B9\u7684\u72B6\u6001\u4FEE\u6539\u4E3A\u201C\u5B8C\u6210\u201D\u3001\u201C\u62D2\u7EDD\u201D\u6216\u7EE7\u7EED\u5904\u4E8E\u201C\u7B49\u5F85\u201D\u7684\u72B6\u6001\uFF0C\u4E00\u4E2A\u8868\u5355\u81F3\u5C11\u8981\u914D\u7F6E\u524D\u4E24\u8005\u4E4B\u4E00\uFF0C\u4EE5\u51B3\u5B9A\u6574\u4E2A\u6D41\u7A0B\u7684\u540E\u7EED\u5904\u7406\u6D41\u5411\u3002",paraId:17,tocIndex:8},{value:"\u5728\u201C\u7EE7\u7EED\u6D41\u7A0B\u201D\u6309\u94AE\u4E0A\u53EF\u4EE5\u914D\u7F6E\u5BF9\u8868\u5355\u5B57\u6BB5\u7684\u8D4B\u503C\uFF1A",paraId:18,tocIndex:8},{value:"\u6253\u5F00\u5F39\u7A97\u540E\u53EF\u4EE5\u5BF9\u8868\u5355\u4EFB\u610F\u5B57\u6BB5\u8FDB\u884C\u8D4B\u503C\uFF0C\u8868\u5355\u63D0\u4EA4\u540E\u5C06\u4F1A\u4EE5\u8BE5\u503C\u4F5C\u4E3A\u5B57\u6BB5\u7684\u7EC8\u503C\u3002\u901A\u5E38\u5728\u5BF9\u4E00\u4E9B\u6570\u636E\u8FDB\u884C\u5BA1\u6838\u65F6\u6BD4\u8F83\u6709\u7528\uFF0C\u53EF\u4EE5\u5728\u8868\u5355\u4E2D\u4F7F\u7528\u591A\u4E2A\u4E0D\u540C\u7684\u201C\u7EE7\u7EED\u6D41\u7A0B\u201D\u6309\u94AE\uFF0C\u6BCF\u4E2A\u6309\u94AE\u5BF9\u7C7B\u4F3C\u72B6\u6001\u7684\u5B57\u6BB5\u8BBE\u7F6E\u4E0D\u540C\u7684\u679A\u4E3E\u503C\uFF0C\u4EE5\u8FBE\u5230\u7EE7\u7EED\u540E\u7EED\u6D41\u7A0B\u6267\u884C\u4E14\u4F7F\u7528\u4E0D\u540C\u6570\u636E\u503C\u7684\u6548\u679C\u3002",paraId:19,tocIndex:8},{value:"\u5BF9\u4E8E\u4EBA\u5DE5\u5904\u7406\u6765\u8BF4\uFF0C\u8FD8\u9700\u8981\u5728\u9875\u9762\u4E2D\u6DFB\u52A0\u5F85\u529E\u5217\u8868\uFF0C\u7528\u4E8E\u5C55\u793A\u5F85\u529E\u4EFB\u52A1\uFF0C\u76F8\u5173\u4EBA\u5458\u624D\u53EF\u4EE5\u901A\u8FC7\u8BE5\u5217\u8868\u8FDB\u5165\u4EBA\u5DE5\u8282\u70B9\u7684\u5177\u4F53\u4EFB\u52A1\u5904\u7406\u3002\u53EF\u4EE5\u4ECE\u9875\u9762\u4E2D\u7684\u533A\u5757\u4E2D\u9009\u62E9\u201C\u5DE5\u4F5C\u6D41\u5F85\u529E\u201D\uFF0C\u6DFB\u52A0\u5F85\u529E\u5217\u8868\u7684\u533A\u5757\uFF1A",paraId:20,tocIndex:9},{value:"\u5F85\u529E\u5217\u8868\u533A\u5757\u793A\u4F8B\uFF1A",paraId:21,tocIndex:9},{value:"\u4E4B\u540E\u76F8\u5173\u4EBA\u5458\u53EF\u4EE5\u70B9\u51FB\u5BF9\u5E94\u7684\u5F85\u529E\u4EFB\u52A1\uFF0C\u8FDB\u5165\u5F85\u529E\u5F39\u7A97\uFF0C\u8FDB\u884C\u4EBA\u5DE5\u5904\u7406\uFF1A",paraId:22,tocIndex:9},{value:"\u5047\u8BBE\u666E\u901A\u7528\u6237\u63D0\u4EA4\u7684\u6587\u7AE0\uFF0C\u9700\u8981\u7BA1\u7406\u5458\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u80FD\u66F4\u65B0\u4E3A\u5DF2\u53D1\u5E03\u72B6\u6001\uFF0C\u5426\u5219\u5982\u679C\u62D2\u7EDD\u8BE5\u6D41\u7A0B\uFF0C\u6587\u7AE0\u5C06\u4FDD\u6301\u8349\u7A3F\u72B6\u6001\uFF08\u4E0D\u516C\u5F00\uFF09\uFF0C\u8FD9\u4E00\u6D41\u7A0B\u53EF\u4EE5\u4F7F\u7528\u4EBA\u5DE5\u8282\u70B9\u4E2D\u7684\u66F4\u65B0\u8868\u5355\u6765\u5B9E\u73B0\u3002",paraId:23,tocIndex:11},{value:"\u521B\u5EFA\u4E00\u4E2A\u7531\u201C\u65B0\u589E\u6587\u7AE0\u201D\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5E76\u589E\u52A0\u4E00\u4E2A\u4EBA\u5DE5\u8282\u70B9\uFF1A",paraId:24,tocIndex:11},{value:` +`,paraId:12,tocIndex:2},{value:"\u6CE8\uFF1A\u5BA2\u6237\u7AEF\u6CE8\u518C\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u6807\u8BC6\u5FC5\u987B\u4E0E\u670D\u52A1\u7AEF\u7684\u4FDD\u6301\u4E00\u81F4\uFF0C\u5426\u5219\u4F1A\u5BFC\u81F4\u9519\u8BEF\u3002",paraId:13,tocIndex:2},{value:"\u5B9A\u4E49\u89E6\u53D1\u5668\u7C7B\u578B\u7684\u5176\u4ED6\u5185\u5BB9\u8BE6\u89C1 ",paraId:14,tocIndex:2},{value:"\u5DE5\u4F5C\u6D41 API \u53C2\u8003",paraId:15,tocIndex:2},{value:" \u90E8\u5206\u3002",paraId:14,tocIndex:2}],dk={},ik={title:"\u65B0\u589E\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/create.md",lastUpdated:173254844e4,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u65B0\u589E\u4E00\u884C\u6570\u636E\u3002"},lk=[{id:"\u65B0\u589E\u6570\u636E",depth:1,title:"\u65B0\u589E\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u5B57\u6BB5\u503C",depth:3,title:"\u5B57\u6BB5\u503C"},{id:"\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E",depth:3,title:"\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],ck=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u65B0\u589E\u4E00\u884C\u6570\u636E\u3002",paraId:0,tocIndex:0},{value:"\u65B0\u589E\u6570\u636E\u884C\u7684\u5B57\u6BB5\u503C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u5BF9\u5173\u7CFB\u5B57\u6BB5\u7684\u8D4B\u503C\u53EF\u4EE5\u76F4\u63A5\u5F15\u7528\u4E0A\u4E0B\u6587\u4E2D\u7684\u5BF9\u5E94\u6570\u636E\u53D8\u91CF\uFF0C\u53EF\u4EE5\u662F\u5BF9\u8C61\uFF0C\u4E5F\u53EF\u4EE5\u662F\u5916\u952E\u7684\u503C\u3002\u5982\u679C\u4E0D\u4F7F\u7528\u53D8\u91CF\uFF0C\u5219\u9700\u8981\u624B\u52A8\u586B\u5199\u5916\u952E\u7684\u503C\uFF0C\u5BF9\u591A\u5173\u7CFB\u7684\u591A\u4E2A\u5916\u952E\u503C\u9700\u8981\u4F7F\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\u7684\u5F62\u5F0F\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u65B0\u589E\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u9009\u62E9\u8981\u65B0\u589E\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:3,tocIndex:3},{value:"\u9488\u5BF9\u6570\u636E\u8868\u7684\u5B57\u6BB5\u8FDB\u884C\u8D4B\u503C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4E5F\u53EF\u4EE5\u624B\u52A8\u586B\u5199\u9759\u6001\u503C\u3002",paraId:4,tocIndex:4},{value:"\u6CE8\uFF1A\u5DE5\u4F5C\u6D41\u4E2D\u65B0\u589E\u8282\u70B9\u65B0\u589E\u7684\u6570\u636E\u4E0D\u4F1A\u81EA\u52A8\u5904\u7406\u201C\u521B\u5EFA\u4EBA\u201D\u3001\u201C\u6700\u540E\u4FEE\u6539\u4EBA\u201D\u7B49\u7528\u6237\u6570\u636E\uFF0C\u9700\u8981\u6839\u636E\u60C5\u51B5\u81EA\u884C\u914D\u7F6E\u8FD9\u4E24\u4E2A\u5B57\u6BB5\u7684\u503C\u3002",paraId:5,tocIndex:4},{value:"\u5982\u679C\u65B0\u589E\u6570\u636E\u7684\u5B57\u6BB5\u4E2D\u5305\u542B\u5173\u7CFB\u5B57\u6BB5\uFF0C\u4E14\u5E0C\u671B\u540E\u7EED\u6D41\u7A0B\u4E2D\u4F7F\u7528\u76F8\u5E94\u7684\u5173\u7CFB\u6570\u636E\u65F6\uFF0C\u53EF\u4EE5\u5728\u9884\u52A0\u8F7D\u914D\u7F6E\u4E2D\u52FE\u9009\u76F8\u5E94\u7684\u5173\u7CFB\u5B57\u6BB5\uFF0C\u8FD9\u6837\u5728\u65B0\u589E\u6570\u636E\u5B8C\u6210\u540E\uFF0C\u4F1A\u81EA\u52A8\u52A0\u8F7D\u76F8\u5E94\u7684\u5173\u7CFB\u6570\u636E\u4E00\u5E76\u50A8\u5B58\u5728\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u4E2D\u3002",paraId:6,tocIndex:5},{value:"\u4F8B\u5982\u5F53\u201C\u6587\u7AE0\u201D\u8868\u7684\u6570\u636E\u65B0\u589E\u6216\u66F4\u65B0\u540E\uFF0C\u9700\u8981\u81EA\u52A8\u65B0\u589E\u4E00\u6761\u201C\u6587\u7AE0\u7248\u672C\u201D\u6570\u636E\uFF0C\u8BB0\u5F55\u6587\u7AE0\u7684\u4E00\u6B21\u53D8\u66F4\u5386\u53F2\uFF0C\u53EF\u4EE5\u4F7F\u7528\u65B0\u589E\u8282\u70B9\u6765\u5B9E\u73B0\uFF1A",paraId:7,tocIndex:6},{value:"\u6309\u6B64\u914D\u7F6E\u542F\u7528\u5DE5\u4F5C\u6D41\u540E\uFF0C\u5F53\u201C\u6587\u7AE0\u201D\u8868\u7684\u6570\u636E\u53D8\u66F4\u65F6\uFF0C\u4F1A\u81EA\u52A8\u65B0\u589E\u4E00\u6761\u201C\u6587\u7AE0\u7248\u672C\u201D\u6570\u636E\uFF0C\u8BB0\u5F55\u6587\u7AE0\u7684\u53D8\u66F4\u5386\u53F2\u3002",paraId:8,tocIndex:6}],sk={},uk={title:"\u4EBA\u5DE5\u5904\u7406",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/manual.md",lastUpdated:173254844e4,description:"\u5F53\u4E1A\u52A1\u6D41\u7A0B\u4E0D\u80FD\u5B8C\u5168\u81EA\u52A8\u5316\u51B3\u7B56\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4EBA\u5DE5\u8282\u70B9\uFF0C\u5C06\u90E8\u5206\u51B3\u7B56\u6743\u4EA4\u7ED9\u4EBA\u5DE5\u5904\u7406\u3002"},pk=[{id:"\u4EBA\u5DE5\u5904\u7406",depth:1,title:"\u4EBA\u5DE5\u5904\u7406"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u914D\u7F6E\u8282\u70B9",depth:2,title:"\u914D\u7F6E\u8282\u70B9"},{id:"\u8D1F\u8D23\u4EBA",depth:3,title:"\u8D1F\u8D23\u4EBA"},{id:"\u914D\u7F6E\u7528\u6237\u754C\u9762",depth:3,title:"\u914D\u7F6E\u7528\u6237\u754C\u9762"},{id:"\u6807\u7B7E\u9875",depth:4,title:"\u6807\u7B7E\u9875"},{id:"\u533A\u5757",depth:4,title:"\u533A\u5757"},{id:"\u6570\u636E\u533A\u5757",depth:5,title:"\u6570\u636E\u533A\u5757"},{id:"\u8868\u5355\u533A\u5757",depth:5,title:"\u8868\u5355\u533A\u5757"},{id:"\u914D\u7F6E\u5F85\u529E\u533A\u5757",depth:2,title:"\u914D\u7F6E\u5F85\u529E\u533A\u5757"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u6587\u7AE0\u5BA1\u6838",depth:3,title:"\u6587\u7AE0\u5BA1\u6838"},{id:"\u8BF7\u5047\u5BA1\u6279",depth:3,title:"\u8BF7\u5047\u5BA1\u6279"}],Ik=[{value:"\u5F53\u4E1A\u52A1\u6D41\u7A0B\u4E0D\u80FD\u5B8C\u5168\u81EA\u52A8\u5316\u51B3\u7B56\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4EBA\u5DE5\u8282\u70B9\uFF0C\u5C06\u90E8\u5206\u51B3\u7B56\u6743\u4EA4\u7ED9\u4EBA\u5DE5\u5904\u7406\u3002",paraId:0,tocIndex:0},{value:"\u4EBA\u5DE5\u8282\u70B9\u5728\u6267\u884C\u5230\u65F6\u4F1A\u5148\u4E2D\u65AD\u6574\u4E2A\u6D41\u7A0B\u7684\u6267\u884C\uFF0C\u751F\u6210\u5BF9\u5E94\u7528\u6237\u7684\u5F85\u529E\u4EFB\u52A1\uFF0C\u5728\u7528\u6237\u63D0\u4EA4\u540E\u6839\u636E\u6240\u9009\u7684\u72B6\u6001\u51B3\u5B9A\u7EE7\u7EED\u6D41\u7A0B\u3001\u7EE7\u7EED\u7B49\u5F85\u8FD8\u662F\u7EC8\u6B62\u6D41\u7A0B\u3002\u5728\u9700\u8981\u8FDB\u884C\u6D41\u7A0B\u5BA1\u6279\u7B49\u573A\u666F\u4F1A\u975E\u5E38\u6709\u7528\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u4EBA\u5DE5\u5904\u7406\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u4EBA\u5DE5\u8282\u70B9\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u7528\u6237\uFF0C\u4F5C\u4E3A\u5F85\u529E\u4EFB\u52A1\u7684\u6267\u884C\u8005\u3002\u5F85\u529E\u4EFB\u52A1\u7684\u5217\u8868\u53EF\u4EE5\u5728\u9875\u9762\u6DFB\u52A0\u533A\u5757\u65F6\u6DFB\u52A0\uFF0C\u6BCF\u4E2A\u8282\u70B9\u7684\u4EFB\u52A1\u5F39\u7A97\u5185\u5BB9\u9700\u8981\u5728\u8282\u70B9\u4E2D\u8FDB\u884C\u754C\u9762\u914D\u7F6E\u3002",paraId:3,tocIndex:3},{value:"\u9009\u5B9A\u4E00\u4E2A\u7528\u6237\uFF0C\u6216\u8005\u901A\u8FC7\u53D8\u91CF\u9009\u62E9\u4E0A\u4E0B\u6587\u4E2D\u7684\u7528\u6237\u6570\u636E\u7684\u4E3B\u952E\u6216\u5916\u952E\u3002",paraId:4,tocIndex:3},{value:"\u76EE\u524D\u4EBA\u5DE5\u8282\u70B9\u7684\u8D1F\u8D23\u4EBA\u9009\u9879\u6682\u4E0D\u652F\u6301\u9488\u5BF9\u591A\u4EBA\u5904\u7406\uFF0C\u4F1A\u5728\u672A\u6765\u7684\u7248\u672C\u4E2D\u652F\u6301\u3002",paraId:5},{value:"\u5F85\u529E\u4E8B\u9879\u7684\u754C\u9762\u914D\u7F6E\u662F\u4EBA\u5DE5\u8282\u70B9\u7684\u6838\u5FC3\u5185\u5BB9\uFF0C\u53EF\u4EE5\u901A\u8FC7\u70B9\u51FB\u201C\u914D\u7F6E\u7528\u6237\u754C\u9762\u201D\u6309\u94AE\u5F39\u7A97\u6253\u5F00\u72EC\u7ACB\u914D\u7F6E\uFF0C\u548C\u666E\u901A\u9875\u9762\u4E00\u6837\uFF0C\u53EF\u4EE5\u6240\u89C1\u5373\u6240\u5F97\u5730\u914D\u7F6E\uFF1A",paraId:6,tocIndex:4},{value:"\u6807\u7B7E\u9875\u53EF\u4EE5\u7528\u4E8E\u533A\u5206\u4E0D\u540C\u7684\u5185\u5BB9\uFF0C\u4F8B\u5982\u4E00\u4E2A\u6807\u7B7E\u9875\u7528\u4E8E\u901A\u8FC7\u7684\u8868\u5355\u63D0\u4EA4\uFF0C\u53E6\u4E00\u4E2A\u6807\u7B7E\u9875\u7528\u4E8E\u62D2\u7EDD\u7684\u8868\u5355\u63D0\u4EA4\uFF0C\u6216\u8005\u7528\u4E8E\u5C55\u793A\u76F8\u5173\u6570\u636E\u7684\u8BE6\u60C5\u7B49\uFF0C\u53EF\u81EA\u7531\u914D\u7F6E\u3002",paraId:7,tocIndex:5},{value:"\u652F\u6301\u7684\u533A\u5757\u7C7B\u578B\u4E3B\u8981\u6709\u4E24\u5927\u7C7B\uFF0C\u6570\u636E\u533A\u5757\u548C\u8868\u5355\u533A\u5757\uFF0C\u53E6\u5916\u7684 Markdown \u4E3B\u8981\u7528\u4E8E\u63D0\u793A\u4FE1\u606F\u7B49\u9759\u6001\u5185\u5BB9\u3002",paraId:8,tocIndex:6},{value:"\u6570\u636E\u533A\u5757\u53EF\u9009\u62E9\u89E6\u53D1\u5668\u6570\u636E\u6216\u4EFB\u610F\u7684\u8282\u70B9\u5904\u7406\u7ED3\u679C\uFF0C\u7528\u4E8E\u63D0\u4F9B\u7ED9\u5F85\u529E\u8D1F\u8D23\u4EBA\u76F8\u5173\u7684\u4E0A\u4E0B\u6587\u4FE1\u606F\u3002\u4F8B\u5982\u5DE5\u4F5C\u6D41\u662F\u8868\u5355\u4E8B\u4EF6\u89E6\u53D1\u7684\uFF0C\u5373\u53EF\u4EE5\u521B\u5EFA\u4E00\u4E2A\u89E6\u53D1\u6570\u636E\u7684\u8BE6\u60C5\u533A\u5757\uFF0C\u4E0E\u666E\u901A\u9875\u9762\u7684\u8BE6\u60C5\u914D\u7F6E\u4E00\u81F4\uFF0C\u53EF\u4EFB\u9009\u89E6\u53D1\u6570\u636E\u5185\u6709\u7684\u5B57\u6BB5\u8FDB\u884C\u6570\u636E\u5C55\u793A\uFF1A",paraId:9,tocIndex:7},{value:"\u8282\u70B9\u6570\u636E\u533A\u5757\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u9009\u62E9\u4E0A\u6E38\u8282\u70B9\u4E2D\u7684\u6570\u636E\u7ED3\u679C\u4F5C\u4E3A\u8BE6\u60C5\u5C55\u793A\u3002\u4F8B\u5982\u4E0A\u6E38\u4E00\u4E2A\u8BA1\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF0C\u4F5C\u4E3A\u8D1F\u8D23\u4EBA\u5F85\u529E\u7684\u4E0A\u4E0B\u6587\u53C2\u8003\u4FE1\u606F\uFF1A",paraId:10,tocIndex:7},{value:"\u7531\u4E8E\u914D\u7F6E\u754C\u9762\u65F6\u5DE5\u4F5C\u6D41\u90FD\u5904\u4E8E\u672A\u6267\u884C\u7684\u72B6\u6001\uFF0C\u6240\u4EE5\u6570\u636E\u533A\u5757\u4E2D\u90FD\u662F\u6CA1\u6709\u5177\u4F53\u6570\u636E\u663E\u793A\u7684\uFF0C\u53EA\u6709\u5F53\u5DE5\u4F5C\u6D41\u88AB\u89E6\u53D1\u6267\u884C\u540E\uFF0C\u5728\u5F85\u529E\u5F39\u7A97\u754C\u9762\u4E2D\u624D\u53EF\u770B\u5230\u5177\u4F53\u6D41\u7A0B\u7684\u76F8\u5173\u6570\u636E\u3002",paraId:11},{value:"\u5F85\u529E\u754C\u9762\u4E2D\u81F3\u5C11\u9700\u8981\u914D\u7F6E\u4E00\u4E2A\u8868\u5355\u533A\u5757\uFF0C\u4F5C\u4E3A\u5DE5\u4F5C\u6D41\u662F\u5426\u7EE7\u7EED\u6267\u884C\u7684\u6700\u7EC8\u51B3\u7B56\u5904\u7406\uFF0C\u4E0D\u914D\u7F6E\u8868\u5355\u4F1A\u5BFC\u81F4\u6D41\u7A0B\u4E2D\u65AD\u540E\u65E0\u6CD5\u7EE7\u7EED\u3002\u8868\u5355\u533A\u5757\u6709\u4E09\u79CD\u7C7B\u578B\uFF0C\u5206\u522B\u662F\uFF1A",paraId:12,tocIndex:8},{value:"\u81EA\u5B9A\u4E49\u8868\u5355",paraId:13,tocIndex:8},{value:"\u65B0\u589E\u6570\u636E\u8868\u5355",paraId:13,tocIndex:8},{value:"\u66F4\u65B0\u6570\u636E\u8868\u5355",paraId:13,tocIndex:8},{value:"\u65B0\u589E\u6570\u636E\u8868\u5355\u548C\u66F4\u65B0\u6570\u636E\u8868\u5355\u9700\u8981\u9009\u62E9\u57FA\u4E8E\u7684\u6570\u636E\u8868\uFF0C\u5F85\u529E\u7528\u6237\u63D0\u4EA4\u540E\u4F1A\u4F7F\u7528\u8868\u5355\u5185\u7684\u503C\u65B0\u589E\u6216\u66F4\u65B0\u7279\u5B9A\u6570\u636E\u8868\u7684\u6570\u636E\u3002\u81EA\u5B9A\u4E49\u8868\u5355\u5219\u53EF\u4EE5\u81EA\u7531\u5B9A\u4E49\u4E00\u4E2A\u6570\u636E\u8868\u65E0\u5173\u7684\u4E34\u65F6\u8868\u5355\uFF0C\u5F85\u529E\u7528\u6237\u63D0\u4EA4\u540E\u7684\u5B57\u6BB5\u503C\u53EF\u4EE5\u5728\u540E\u7EED\u8282\u70B9\u4E2D\u4F7F\u7528\u3002",paraId:14,tocIndex:8},{value:"\u8868\u5355\u7684\u63D0\u4EA4\u6309\u94AE\u53EF\u4EE5\u914D\u7F6E\u4E09\u79CD\u7C7B\u578B\uFF0C\u5206\u522B\u662F\uFF1A",paraId:15,tocIndex:8},{value:"\u63D0\u4EA4\u540E\u7EE7\u7EED\u6D41\u7A0B",paraId:16,tocIndex:8},{value:"\u63D0\u4EA4\u540E\u7EC8\u6B62\u6D41\u7A0B",paraId:16,tocIndex:8},{value:"\u4EC5\u6682\u5B58\u8868\u5355\u503C",paraId:16,tocIndex:8},{value:"\u4E09\u4E2A\u6309\u94AE\u4EE3\u8868\u6D41\u7A0B\u5904\u7406\u4E2D\u4E09\u79CD\u8282\u70B9\u72B6\u6001\uFF0C\u63D0\u4EA4\u540E\u8BE5\u8282\u70B9\u7684\u72B6\u6001\u4FEE\u6539\u4E3A\u201C\u5B8C\u6210\u201D\u3001\u201C\u62D2\u7EDD\u201D\u6216\u7EE7\u7EED\u5904\u4E8E\u201C\u7B49\u5F85\u201D\u7684\u72B6\u6001\uFF0C\u4E00\u4E2A\u8868\u5355\u81F3\u5C11\u8981\u914D\u7F6E\u524D\u4E24\u8005\u4E4B\u4E00\uFF0C\u4EE5\u51B3\u5B9A\u6574\u4E2A\u6D41\u7A0B\u7684\u540E\u7EED\u5904\u7406\u6D41\u5411\u3002",paraId:17,tocIndex:8},{value:"\u5728\u201C\u7EE7\u7EED\u6D41\u7A0B\u201D\u6309\u94AE\u4E0A\u53EF\u4EE5\u914D\u7F6E\u5BF9\u8868\u5355\u5B57\u6BB5\u7684\u8D4B\u503C\uFF1A",paraId:18,tocIndex:8},{value:"\u6253\u5F00\u5F39\u7A97\u540E\u53EF\u4EE5\u5BF9\u8868\u5355\u4EFB\u610F\u5B57\u6BB5\u8FDB\u884C\u8D4B\u503C\uFF0C\u8868\u5355\u63D0\u4EA4\u540E\u5C06\u4F1A\u4EE5\u8BE5\u503C\u4F5C\u4E3A\u5B57\u6BB5\u7684\u7EC8\u503C\u3002\u901A\u5E38\u5728\u5BF9\u4E00\u4E9B\u6570\u636E\u8FDB\u884C\u5BA1\u6838\u65F6\u6BD4\u8F83\u6709\u7528\uFF0C\u53EF\u4EE5\u5728\u8868\u5355\u4E2D\u4F7F\u7528\u591A\u4E2A\u4E0D\u540C\u7684\u201C\u7EE7\u7EED\u6D41\u7A0B\u201D\u6309\u94AE\uFF0C\u6BCF\u4E2A\u6309\u94AE\u5BF9\u7C7B\u4F3C\u72B6\u6001\u7684\u5B57\u6BB5\u8BBE\u7F6E\u4E0D\u540C\u7684\u679A\u4E3E\u503C\uFF0C\u4EE5\u8FBE\u5230\u7EE7\u7EED\u540E\u7EED\u6D41\u7A0B\u6267\u884C\u4E14\u4F7F\u7528\u4E0D\u540C\u6570\u636E\u503C\u7684\u6548\u679C\u3002",paraId:19,tocIndex:8},{value:"\u5BF9\u4E8E\u4EBA\u5DE5\u5904\u7406\u6765\u8BF4\uFF0C\u8FD8\u9700\u8981\u5728\u9875\u9762\u4E2D\u6DFB\u52A0\u5F85\u529E\u5217\u8868\uFF0C\u7528\u4E8E\u5C55\u793A\u5F85\u529E\u4EFB\u52A1\uFF0C\u76F8\u5173\u4EBA\u5458\u624D\u53EF\u4EE5\u901A\u8FC7\u8BE5\u5217\u8868\u8FDB\u5165\u4EBA\u5DE5\u8282\u70B9\u7684\u5177\u4F53\u4EFB\u52A1\u5904\u7406\u3002\u53EF\u4EE5\u4ECE\u9875\u9762\u4E2D\u7684\u533A\u5757\u4E2D\u9009\u62E9\u201C\u5DE5\u4F5C\u6D41\u5F85\u529E\u201D\uFF0C\u6DFB\u52A0\u5F85\u529E\u5217\u8868\u7684\u533A\u5757\uFF1A",paraId:20,tocIndex:9},{value:"\u5F85\u529E\u5217\u8868\u533A\u5757\u793A\u4F8B\uFF1A",paraId:21,tocIndex:9},{value:"\u4E4B\u540E\u76F8\u5173\u4EBA\u5458\u53EF\u4EE5\u70B9\u51FB\u5BF9\u5E94\u7684\u5F85\u529E\u4EFB\u52A1\uFF0C\u8FDB\u5165\u5F85\u529E\u5F39\u7A97\uFF0C\u8FDB\u884C\u4EBA\u5DE5\u5904\u7406\uFF1A",paraId:22,tocIndex:9},{value:"\u5047\u8BBE\u666E\u901A\u7528\u6237\u63D0\u4EA4\u7684\u6587\u7AE0\uFF0C\u9700\u8981\u7BA1\u7406\u5458\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u80FD\u66F4\u65B0\u4E3A\u5DF2\u53D1\u5E03\u72B6\u6001\uFF0C\u5426\u5219\u5982\u679C\u62D2\u7EDD\u8BE5\u6D41\u7A0B\uFF0C\u6587\u7AE0\u5C06\u4FDD\u6301\u8349\u7A3F\u72B6\u6001\uFF08\u4E0D\u516C\u5F00\uFF09\uFF0C\u8FD9\u4E00\u6D41\u7A0B\u53EF\u4EE5\u4F7F\u7528\u4EBA\u5DE5\u8282\u70B9\u4E2D\u7684\u66F4\u65B0\u8868\u5355\u6765\u5B9E\u73B0\u3002",paraId:23,tocIndex:11},{value:"\u521B\u5EFA\u4E00\u4E2A\u7531\u201C\u65B0\u589E\u6587\u7AE0\u201D\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5E76\u589E\u52A0\u4E00\u4E2A\u4EBA\u5DE5\u8282\u70B9\uFF1A",paraId:24,tocIndex:11},{value:` `,paraId:25},{value:"\u5728\u4EBA\u5DE5\u8282\u70B9\u4E2D\u914D\u7F6E\u8D1F\u8D23\u4EBA\u4E3A\u7BA1\u7406\u5458\uFF0C\u914D\u7F6E\u754C\u9762\u4E2D\u589E\u52A0\u4E00\u4E2A\u57FA\u4E8E\u89E6\u53D1\u6570\u636E\u7684\u533A\u5757\uFF0C\u7528\u4E8E\u5C55\u793A\u65B0\u589E\u6587\u7AE0\u7684\u8BE6\u60C5\uFF1A",paraId:26,tocIndex:11},{value:` `,paraId:25},{value:"\u5728\u914D\u7F6E\u754C\u9762\u4E2D\u589E\u52A0\u4E00\u4E2A\u57FA\u4E8E\u66F4\u65B0\u6570\u636E\u8868\u5355\u7684\u533A\u5757\uFF0C\u9009\u62E9\u6587\u7AE0\u8868\uFF0C\u7528\u4E8E\u7BA1\u7406\u5458\u51B3\u5B9A\u662F\u5426\u901A\u8FC7\u5BA1\u6838\uFF0C\u901A\u8FC7\u5BA1\u6838\u540E\u4F1A\u6839\u636E\u540E\u9762\u7684\u5176\u4ED6\u914D\u7F6E\u66F4\u65B0\u5BF9\u5E94\u6587\u7AE0\u3002\u6DFB\u52A0\u8868\u5355\u540E\uFF0C\u9ED8\u8BA4\u4F1A\u6709\u4E00\u4E2A\u201C\u7EE7\u7EED\u6D41\u7A0B\u201D\u7684\u6309\u94AE\uFF0C\u53EF\u4EE5\u5C06\u5176\u89C6\u4E3A\u70B9\u51FB\u540E\u901A\u8FC7\uFF0C\u518D\u589E\u52A0\u4E00\u4E2A\u201C\u7EC8\u6B62\u6D41\u7A0B\u201D\u7684\u6309\u94AE\uFF0C\u7528\u4F5C\u5BA1\u6838\u4E0D\u901A\u8FC7\u7684\u60C5\u51B5\uFF1A",paraId:27,tocIndex:11},{value:` `,paraId:25},{value:"\u9488\u5BF9\u7EE7\u7EED\u6D41\u7A0B\u65F6\uFF0C\u6211\u4EEC\u9700\u8981\u66F4\u65B0\u6587\u7AE0\u7684\u72B6\u6001\uFF0C\u8FD9\u91CC\u6709\u4E24\u79CD\u914D\u7F6E\u65B9\u5F0F\uFF0C\u4E00\u79CD\u662F\u76F4\u63A5\u5728\u8868\u5355\u4E2D\u5C55\u793A\u6587\u7AE0\u72B6\u6001\u7684\u5B57\u6BB5\uFF0C\u4F9B\u64CD\u4F5C\u8005\u9009\u62E9\uFF0C\u8FD9\u79CD\u65B9\u5F0F\u66F4\u9002\u5408\u4E8E\u4E00\u4E9B\u9700\u8981\u4E3B\u52A8\u586B\u5199\u8868\u5355\u7684\u60C5\u51B5\uFF0C\u4F8B\u5982\u53CD\u9988\u610F\u89C1\u7B49\uFF1A",paraId:28,tocIndex:11},{value:` @@ -8688,7 +8740,7 @@ triggers.register('interval', { `,paraId:25},{value:"\u7BA1\u7406\u5458\u53EF\u4EE5\u6839\u636E\u6587\u7AE0\u8BE6\u60C5\u8FDB\u884C\u4EBA\u5DE5\u5224\u65AD\uFF0C\u8BE5\u6587\u7AE0\u662F\u5426\u53EF\u4EE5\u53D1\u5E03\uFF0C\u5982\u679C\u53EF\u4EE5\u7684\u8BDD\uFF0C\u70B9\u51FB\u201C\u901A\u8FC7\u201D\u6309\u94AE\uFF0C\u6587\u7AE0\u5C06\u4F1A\u66F4\u65B0\u4E3A\u5DF2\u53D1\u5E03\u72B6\u6001\uFF0C\u5982\u679C\u4E0D\u53EF\u4EE5\u7684\u8BDD\uFF0C\u70B9\u51FB\u201C\u62D2\u7EDD\u201D\u6309\u94AE\uFF0C\u6587\u7AE0\u5C06\u4F1A\u4FDD\u6301\u8349\u7A3F\u72B6\u6001\u3002",paraId:33,tocIndex:11},{value:"\u5047\u8BBE\u5458\u5DE5\u9700\u8981\u8BF7\u5047\uFF0C\u9700\u8981\u7ECF\u8FC7\u4E3B\u7BA1\u5BA1\u6279\u901A\u8FC7\u540E\u624D\u80FD\u751F\u6548\uFF0C\u5E76\u6838\u9500\u5BF9\u5E94\u5458\u5DE5\u7684\u5047\u671F\u6570\u636E\u3002\u800C\u4E14\u4E0D\u7BA1\u901A\u8FC7\u6216\u62D2\u7EDD\uFF0C\u90FD\u5C06\u4F1A\u901A\u8FC7\u8BF7\u6C42\u8282\u70B9\u8C03\u7528\u77ED\u4FE1\u63A5\u53E3\uFF0C\u53D1\u9001\u76F8\u5173\u7684\u7684\u901A\u77E5\u77ED\u4FE1\u7ED9\u5458\u5DE5\uFF08\u89C1 ",paraId:34,tocIndex:12},{value:"HTTP \u8BF7\u6C42",paraId:35,tocIndex:12},{value:" \u90E8\u5206\uFF09\u3002\u8FD9\u4E2A\u573A\u666F\u53EF\u4EE5\u4F7F\u7528\u4EBA\u5DE5\u8282\u70B9\u4E2D\u7684\u81EA\u5B9A\u4E49\u8868\u5355\u6765\u5B9E\u73B0\u3002",paraId:34,tocIndex:12},{value:"\u521B\u5EFA\u4E00\u4E2A\u7531\u201C\u65B0\u589E\u8BF7\u5047\u201D\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5E76\u589E\u52A0\u4E00\u4E2A\u4EBA\u5DE5\u8282\u70B9\uFF0C\u4E0E\u4E4B\u524D\u7684\u6587\u7AE0\u5BA1\u6838\u6D41\u7A0B\u7C7B\u4F3C\uFF0C\u53EA\u662F\u8FD9\u91CC\u7684\u8D1F\u8D23\u4EBA\u662F\u4E3B\u7BA1\uFF0C\u914D\u7F6E\u754C\u9762\u4E2D\u589E\u52A0\u4E00\u4E2A\u57FA\u4E8E\u89E6\u53D1\u6570\u636E\u7684\u533A\u5757\uFF0C\u7528\u4E8E\u5C55\u793A\u65B0\u589E\u8BF7\u5047\u7684\u8BE6\u60C5\uFF0C\u518D\u589E\u52A0\u4E00\u4E2A\u57FA\u4E8E\u81EA\u5B9A\u4E49\u8868\u5355\u7684\u533A\u5757\uFF0C\u7528\u4E8E\u4E3B\u7BA1\u51B3\u5B9A\u662F\u5426\u901A\u8FC7\u5BA1\u6838\uFF0C\u81EA\u5B9A\u4E49\u8868\u5355\u4E2D\u589E\u52A0\u4E00\u4E2A\u662F\u5426\u901A\u8FC7\u7684\u5B57\u6BB5\uFF0C\u4EE5\u53CA\u4E00\u4E2A\u62D2\u7EDD\u7406\u7531\u7684\u5B57\u6BB5\uFF1A",paraId:36,tocIndex:12},{value:` `,paraId:25},{value:"\u4E0E\u6587\u7AE0\u5BA1\u6838\u6D41\u7A0B\u4E0D\u540C\uFF0C\u7531\u4E8E\u6211\u4EEC\u9700\u8981\u6839\u636E\u4E3B\u7BA1\u5BA1\u6279\u7684\u7ED3\u679C\u7EE7\u7EED\u540E\u7EED\u7684\u6D41\u7A0B\uFF0C\u6240\u4EE5\u8FD9\u91CC\u6211\u4EEC\u53EA\u914D\u7F6E\u4E00\u4E2A\u201C\u7EE7\u7EED\u6D41\u7A0B\u201D\u6309\u94AE\uFF0C\u4F5C\u4E3A\u63D0\u4EA4\u4F7F\u7528\uFF0C\u800C\u4E0D\u4F7F\u7528\u201C\u7EC8\u6B62\u6D41\u7A0B\u201D\u6309\u94AE\u3002",paraId:37,tocIndex:12},{value:"\u540C\u65F6\u5728\u4EBA\u5DE5\u8282\u70B9\u4E4B\u540E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7\u4E00\u4E2A\u6761\u4EF6\u5224\u65AD\u8282\u70B9\u6765\u5224\u65AD\u4E3B\u7BA1\u662F\u5426\u901A\u8FC7\u4E86\u8BE5\u8BF7\u5047\u7533\u8BF7\uFF0C\u901A\u8FC7\u7684\u5206\u652F\u4E2D\u589E\u52A0\u6838\u9500\u5047\u671F\u7684\u6570\u636E\u5904\u7406\uFF0C\u5E76\u5728\u5206\u652F\u7ED3\u675F\u540E\u589E\u52A0\u4E00\u4E2A\u8BF7\u6C42\u8282\u70B9\uFF0C\u7528\u4E8E\u53D1\u9001\u77ED\u4FE1\u901A\u77E5\u5458\u5DE5\uFF0C\u5C31\u5F97\u5230\u4EE5\u4E0B\u5B8C\u6574\u7684\u6D41\u7A0B\uFF1A",paraId:38,tocIndex:12},{value:` `,paraId:25},{value:"\u5176\u4E2D\u6761\u4EF6\u5224\u65AD\u8282\u70B9\u7684\u4E2D\u7684\u6761\u4EF6\u914D\u7F6E\u4E3A\u201C\u4EBA\u5DE5\u8282\u70B9 / \u81EA\u5B9A\u4E49\u8868\u5355\u6570\u636E / \u662F\u5426\u901A\u8FC7\u5B57\u6BB5\u7684\u503C\u662F\u5426\u4E3A\u2018\u901A\u8FC7\u2019\u201D\uFF1A",paraId:39,tocIndex:12},{value:` - `,paraId:25},{value:"\u53D1\u9001\u8BF7\u6C42\u8282\u70B9\u91CC\u7684\u6570\u636E\u4E5F\u53EF\u4EE5\u4F7F\u7528\u4EBA\u5DE5\u8282\u70B9\u4E2D\u76F8\u5E94\u7684\u8868\u5355\u53D8\u91CF\uFF0C\u4EE5\u533A\u5206\u901A\u8FC7\u548C\u62D2\u7EDD\u7684\u77ED\u4FE1\u5185\u5BB9\u3002\u8FD9\u6837\u5C31\u5B8C\u6210\u4E86\u6574\u4E2A\u6D41\u7A0B\u7684\u914D\u7F6E\uFF0C\u5728\u5F00\u542F\u5DE5\u4F5C\u6D41\u540E\uFF0C\u5F53\u5458\u5DE5\u63D0\u4EA4\u8BF7\u5047\u7533\u8BF7\u7684\u8868\u5355\u540E\uFF0C\u4E3B\u7BA1\u5373\u53EF\u5728\u5F85\u529E\u4EFB\u52A1\u4E2D\u8FDB\u884C\u5BA1\u6279\u5904\u7406\uFF0C\u64CD\u4F5C\u57FA\u672C\u4E0E\u6587\u7AE0\u5BA1\u6838\u6D41\u7A0B\u7C7B\u4F3C\u3002",paraId:40,tocIndex:12}],_4={},v4={title:"\u66F4\u65B0\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/update.md",lastUpdated:1732240239e3,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u66F4\u65B0\u3002"},m4=[{id:"\u66F4\u65B0\u6570\u636E",depth:1,title:"\u66F4\u65B0\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u66F4\u65B0\u6A21\u5F0F",depth:3,title:"\u66F4\u65B0\u6A21\u5F0F"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u5B57\u6BB5\u503C",depth:3,title:"\u5B57\u6BB5\u503C"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],h4=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u66F4\u65B0\u3002",paraId:0,tocIndex:0},{value:"\u6570\u636E\u8868\u548C\u5B57\u6BB5\u8D4B\u503C\u90E8\u5206\u4E0E\u65B0\u589E\u8282\u70B9\u76F8\u540C\uFF0C\u66F4\u65B0\u8282\u70B9\u7684\u533A\u522B\u4E3B\u8981\u662F\u589E\u52A0\u4E86\u7B5B\u9009\u6761\u4EF6\uFF0C\u800C\u4E14\u9700\u8981\u9009\u62E9\u66F4\u65B0\u6A21\u5F0F\u3002\u53E6\u5916\uFF0C\u66F4\u65B0\u8282\u70B9\u7684\u7ED3\u679C\u4F1A\u8FD4\u56DE\u66F4\u65B0\u6210\u529F\u6570\u636E\u7684\u884C\u6570\uFF0C\u53EA\u5728\u6267\u884C\u5386\u53F2\u91CC\u53EF\u67E5\u770B\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u53D8\u91CF\u5728\u540E\u7EED\u8282\u70B9\u4F7F\u7528\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u66F4\u65B0\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u9009\u62E9\u8981\u66F4\u65B0\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:3,tocIndex:3},{value:"\u66F4\u65B0\u6A21\u5F0F\u6709\u201C\u6279\u91CF\u201D\u548C\u201C\u9010\u6761\u201D\u7684\u6A21\u5F0F\uFF0C\u6279\u91CF\u6A21\u5F0F\u4E0B\uFF0C\u4E0D\u4F1A\u518D\u89E6\u53D1\u6BCF\u6761\u66F4\u65B0\u6570\u636E\u7684\u6570\u636E\u8868\u4E8B\u4EF6\uFF0C\u800C\u9010\u6761\u66F4\u65B0\u7684\u8BDD\u4F1A\u89E6\u53D1\u6BCF\u6761\u66F4\u65B0\u6570\u636E\u7684\u6570\u636E\u8868\u4E8B\u4EF6\uFF0C\u4F46\u5728\u5927\u6570\u636E\u91CF\u4E0B\u4F1A\u6709\u6027\u80FD\u95EE\u9898\uFF0C\u9700\u8981\u8C28\u614E\u4F7F\u7528\u3002\u901A\u5E38\u6839\u636E\u66F4\u65B0\u7684\u76EE\u6807\u6570\u636E\u548C\u662F\u5426\u8981\u89E6\u53D1\u5176\u4ED6\u5DE5\u4F5C\u6D41\u4E8B\u4EF6\u6765\u9009\u62E9\uFF0C\u5982\u679C\u662F\u6839\u636E\u4E3B\u952E\u66F4\u65B0\u5355\u6761\u6570\u636E\u7684\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u9010\u6761\u66F4\u65B0\uFF0C\u5982\u679C\u662F\u6839\u636E\u6761\u4EF6\u66F4\u65B0\u591A\u6761\u6570\u636E\u7684\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u6279\u91CF\u66F4\u65B0\u3002",paraId:4,tocIndex:4},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:5,tocIndex:5},{value:"\u4E0E\u65B0\u589E\u8282\u70B9\u7684\u5B57\u6BB5\u8D4B\u503C\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4E5F\u53EF\u4EE5\u624B\u52A8\u586B\u5199\u9759\u6001\u503C\u3002",paraId:6,tocIndex:6},{value:"\u6CE8\uFF1A\u5DE5\u4F5C\u6D41\u4E2D\u66F4\u65B0\u8282\u70B9\u66F4\u65B0\u7684\u6570\u636E\u4E0D\u4F1A\u81EA\u52A8\u5904\u7406\u201C\u6700\u540E\u4FEE\u6539\u4EBA\u201D\u6570\u636E\uFF0C\u9700\u8981\u6839\u636E\u60C5\u51B5\u81EA\u884C\u914D\u7F6E\u8FD9\u4E2A\u5B57\u6BB5\u7684\u503C\u3002",paraId:7,tocIndex:6},{value:"\u4F8B\u5982\u5F53\u65B0\u589E\u201C\u6587\u7AE0\u201D\u65F6\uFF0C\u9700\u8981\u81EA\u52A8\u66F4\u65B0\u201C\u6587\u7AE0\u5206\u7C7B\u201D\u8868\u7684\u201C\u6587\u7AE0\u6570\u91CF\u201D\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u4F7F\u7528\u66F4\u65B0\u8282\u70B9\u6765\u5B9E\u73B0\uFF1A",paraId:8,tocIndex:7},{value:"\u5F53\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\uFF0C\u4F1A\u81EA\u52A8\u66F4\u65B0\u201C\u6587\u7AE0\u5206\u7C7B\u201D\u8868\u7684\u201C\u6587\u7AE0\u6570\u91CF\u201D\u5B57\u6BB5\u4E3A\u5F53\u524D\u6587\u7AE0\u6570\u91CF +1\u3002",paraId:9,tocIndex:7}],f4={},x4={title:"v0.9.0: Collection \u6A21\u677F",toc:"menu",filename:"docs/en-US/welcome/release/collection-templates.md",lastUpdated:1732240239e3,description:"\u5F85\u8865\u5145"},g4=[{id:"v090-collection-\u6A21\u677F",depth:1,title:"v0.9.0: Collection \u6A21\u677F"},{id:"\u4E3A\u4EC0\u4E48\u9700\u8981-collection-\u6A21\u677F",depth:2,title:"\u4E3A\u4EC0\u4E48\u9700\u8981 Collection \u6A21\u677F\uFF1F"},{id:"\u914D\u7F6E\u53C2\u6570\u8BF4\u660E",depth:2,title:"\u914D\u7F6E\u53C2\u6570\u8BF4\u660E"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],b4=[{value:"\u5F85\u8865\u5145",paraId:0,tocIndex:1},{value:`interface ICollectionTemplate { + `,paraId:25},{value:"\u53D1\u9001\u8BF7\u6C42\u8282\u70B9\u91CC\u7684\u6570\u636E\u4E5F\u53EF\u4EE5\u4F7F\u7528\u4EBA\u5DE5\u8282\u70B9\u4E2D\u76F8\u5E94\u7684\u8868\u5355\u53D8\u91CF\uFF0C\u4EE5\u533A\u5206\u901A\u8FC7\u548C\u62D2\u7EDD\u7684\u77ED\u4FE1\u5185\u5BB9\u3002\u8FD9\u6837\u5C31\u5B8C\u6210\u4E86\u6574\u4E2A\u6D41\u7A0B\u7684\u914D\u7F6E\uFF0C\u5728\u5F00\u542F\u5DE5\u4F5C\u6D41\u540E\uFF0C\u5F53\u5458\u5DE5\u63D0\u4EA4\u8BF7\u5047\u7533\u8BF7\u7684\u8868\u5355\u540E\uFF0C\u4E3B\u7BA1\u5373\u53EF\u5728\u5F85\u529E\u4EFB\u52A1\u4E2D\u8FDB\u884C\u5BA1\u6279\u5904\u7406\uFF0C\u64CD\u4F5C\u57FA\u672C\u4E0E\u6587\u7AE0\u5BA1\u6838\u6D41\u7A0B\u7C7B\u4F3C\u3002",paraId:40,tocIndex:12}],_k={},vk={title:"\u66F4\u65B0\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/update.md",lastUpdated:173254844e4,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u66F4\u65B0\u3002"},mk=[{id:"\u66F4\u65B0\u6570\u636E",depth:1,title:"\u66F4\u65B0\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u66F4\u65B0\u6A21\u5F0F",depth:3,title:"\u66F4\u65B0\u6A21\u5F0F"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u5B57\u6BB5\u503C",depth:3,title:"\u5B57\u6BB5\u503C"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],hk=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u66F4\u65B0\u3002",paraId:0,tocIndex:0},{value:"\u6570\u636E\u8868\u548C\u5B57\u6BB5\u8D4B\u503C\u90E8\u5206\u4E0E\u65B0\u589E\u8282\u70B9\u76F8\u540C\uFF0C\u66F4\u65B0\u8282\u70B9\u7684\u533A\u522B\u4E3B\u8981\u662F\u589E\u52A0\u4E86\u7B5B\u9009\u6761\u4EF6\uFF0C\u800C\u4E14\u9700\u8981\u9009\u62E9\u66F4\u65B0\u6A21\u5F0F\u3002\u53E6\u5916\uFF0C\u66F4\u65B0\u8282\u70B9\u7684\u7ED3\u679C\u4F1A\u8FD4\u56DE\u66F4\u65B0\u6210\u529F\u6570\u636E\u7684\u884C\u6570\uFF0C\u53EA\u5728\u6267\u884C\u5386\u53F2\u91CC\u53EF\u67E5\u770B\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u53D8\u91CF\u5728\u540E\u7EED\u8282\u70B9\u4F7F\u7528\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u66F4\u65B0\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u9009\u62E9\u8981\u66F4\u65B0\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:3,tocIndex:3},{value:"\u66F4\u65B0\u6A21\u5F0F\u6709\u201C\u6279\u91CF\u201D\u548C\u201C\u9010\u6761\u201D\u7684\u6A21\u5F0F\uFF0C\u6279\u91CF\u6A21\u5F0F\u4E0B\uFF0C\u4E0D\u4F1A\u518D\u89E6\u53D1\u6BCF\u6761\u66F4\u65B0\u6570\u636E\u7684\u6570\u636E\u8868\u4E8B\u4EF6\uFF0C\u800C\u9010\u6761\u66F4\u65B0\u7684\u8BDD\u4F1A\u89E6\u53D1\u6BCF\u6761\u66F4\u65B0\u6570\u636E\u7684\u6570\u636E\u8868\u4E8B\u4EF6\uFF0C\u4F46\u5728\u5927\u6570\u636E\u91CF\u4E0B\u4F1A\u6709\u6027\u80FD\u95EE\u9898\uFF0C\u9700\u8981\u8C28\u614E\u4F7F\u7528\u3002\u901A\u5E38\u6839\u636E\u66F4\u65B0\u7684\u76EE\u6807\u6570\u636E\u548C\u662F\u5426\u8981\u89E6\u53D1\u5176\u4ED6\u5DE5\u4F5C\u6D41\u4E8B\u4EF6\u6765\u9009\u62E9\uFF0C\u5982\u679C\u662F\u6839\u636E\u4E3B\u952E\u66F4\u65B0\u5355\u6761\u6570\u636E\u7684\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u9010\u6761\u66F4\u65B0\uFF0C\u5982\u679C\u662F\u6839\u636E\u6761\u4EF6\u66F4\u65B0\u591A\u6761\u6570\u636E\u7684\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u6279\u91CF\u66F4\u65B0\u3002",paraId:4,tocIndex:4},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:5,tocIndex:5},{value:"\u4E0E\u65B0\u589E\u8282\u70B9\u7684\u5B57\u6BB5\u8D4B\u503C\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4E5F\u53EF\u4EE5\u624B\u52A8\u586B\u5199\u9759\u6001\u503C\u3002",paraId:6,tocIndex:6},{value:"\u6CE8\uFF1A\u5DE5\u4F5C\u6D41\u4E2D\u66F4\u65B0\u8282\u70B9\u66F4\u65B0\u7684\u6570\u636E\u4E0D\u4F1A\u81EA\u52A8\u5904\u7406\u201C\u6700\u540E\u4FEE\u6539\u4EBA\u201D\u6570\u636E\uFF0C\u9700\u8981\u6839\u636E\u60C5\u51B5\u81EA\u884C\u914D\u7F6E\u8FD9\u4E2A\u5B57\u6BB5\u7684\u503C\u3002",paraId:7,tocIndex:6},{value:"\u4F8B\u5982\u5F53\u65B0\u589E\u201C\u6587\u7AE0\u201D\u65F6\uFF0C\u9700\u8981\u81EA\u52A8\u66F4\u65B0\u201C\u6587\u7AE0\u5206\u7C7B\u201D\u8868\u7684\u201C\u6587\u7AE0\u6570\u91CF\u201D\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u4F7F\u7528\u66F4\u65B0\u8282\u70B9\u6765\u5B9E\u73B0\uFF1A",paraId:8,tocIndex:7},{value:"\u5F53\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\uFF0C\u4F1A\u81EA\u52A8\u66F4\u65B0\u201C\u6587\u7AE0\u5206\u7C7B\u201D\u8868\u7684\u201C\u6587\u7AE0\u6570\u91CF\u201D\u5B57\u6BB5\u4E3A\u5F53\u524D\u6587\u7AE0\u6570\u91CF +1\u3002",paraId:9,tocIndex:7}],fk={},xk={title:"v0.9.0: Collection \u6A21\u677F",toc:"menu",filename:"docs/en-US/welcome/release/collection-templates.md",lastUpdated:173254844e4,description:"\u5F85\u8865\u5145"},gk=[{id:"v090-collection-\u6A21\u677F",depth:1,title:"v0.9.0: Collection \u6A21\u677F"},{id:"\u4E3A\u4EC0\u4E48\u9700\u8981-collection-\u6A21\u677F",depth:2,title:"\u4E3A\u4EC0\u4E48\u9700\u8981 Collection \u6A21\u677F\uFF1F"},{id:"\u914D\u7F6E\u53C2\u6570\u8BF4\u660E",depth:2,title:"\u914D\u7F6E\u53C2\u6570\u8BF4\u660E"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],bk=[{value:"\u5F85\u8865\u5145",paraId:0,tocIndex:1},{value:`interface ICollectionTemplate { name: string; title?: string; /** \u6392\u5E8F */ @@ -8747,7 +8799,7 @@ interface CollectionOptions { ...collectionConfigurableProperties('name', 'title'), }, } -`,paraId:3,tocIndex:3},{value:"\u5B8C\u6574\u63D2\u4EF6\u793A\u4F8B\u53C2\u8003\uFF1A",paraId:4,tocIndex:3},{value:"samples/custom-collection-template",paraId:4,tocIndex:3}],y4={},w4={title:"DataSource (abstract)",toc:"menu",filename:"docs/en-US/api/data-source-manager/data-source.md",lastUpdated:1732240239e3,description:"DataSource \u62BD\u8C61\u7C7B\uFF0C\u7528\u4E8E\u8868\u793A\u4E00\u79CD\u7C7B\u578B\u7684\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u662F\u6570\u636E\u5E93\u3001API\u7B49\u3002"},k4=[{id:"datasource-abstract",depth:1,title:"DataSource (abstract)"},{id:"\u6210\u5458",depth:2,title:"\u6210\u5458"},{id:"collectionmanager",depth:3,title:"collectionManager"},{id:"resourcemanager",depth:3,title:"resourceManager"},{id:"acl",depth:3,title:"acl"},{id:"api",depth:2,title:"API"},{id:"constructor",depth:3,title:"constructor()"},{id:"\u7B7E\u540D",depth:4,title:"\u7B7E\u540D"},{id:"init",depth:3,title:"init()"},{id:"\u7B7E\u540D-1",depth:4,title:"\u7B7E\u540D"},{id:"name",depth:3,title:"name"},{id:"\u7B7E\u540D-2",depth:4,title:"\u7B7E\u540D"},{id:"middleware",depth:3,title:"middleware()"},{id:"testconnection",depth:3,title:"testConnection()"},{id:"\u7B7E\u540D-3",depth:4,title:"\u7B7E\u540D"},{id:"load",depth:3,title:"load()"},{id:"\u7B7E\u540D-4",depth:4,title:"\u7B7E\u540D"},{id:"createcollectionmanager",depth:3,title:"createCollectionManager()"},{id:"\u7B7E\u540D-5",depth:4,title:"\u7B7E\u540D"},{id:"createresourcemanager",depth:3,title:"createResourceManager()"},{id:"createacl",depth:3,title:"createACL()"}],S4=[{value:"DataSource",paraId:0,tocIndex:0},{value:" \u62BD\u8C61\u7C7B\uFF0C\u7528\u4E8E\u8868\u793A\u4E00\u79CD\u7C7B\u578B\u7684\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u662F\u6570\u636E\u5E93\u3001API\u7B49\u3002",paraId:0,tocIndex:0},{value:"\u6570\u636E\u6E90\u7684 CollectionManager \u5B9E\u4F8B\uFF0C\u9700\u5B9E\u73B0 ",paraId:1,tocIndex:2},{value:"ICollectionManager",paraId:2,tocIndex:2},{value:" \u63A5\u53E3\u3002",paraId:1,tocIndex:2},{value:"\u6570\u636E\u6E90\u7684 resourceManager \u5B9E\u4F8B\uFF0C\u8BE6\u89C1\uFF1A",paraId:3,tocIndex:3},{value:"resourceManager",paraId:4,tocIndex:3},{value:"\u6570\u636E\u6E90\u7684 ACL \u5B9E\u4F8B\uFF0C\u8BE6\u89C1\uFF1A ",paraId:5,tocIndex:4},{value:"ACL",paraId:6,tocIndex:4},{value:"\u6784\u9020\u51FD\u6570\uFF0C\u521B\u5EFA\u4E00\u4E2A ",paraId:7,tocIndex:6},{value:"DataSource",paraId:7,tocIndex:6},{value:" \u5B9E\u4F8B\u3002",paraId:7,tocIndex:6},{value:"constructor(options: DataSourceOptions)",paraId:8,tocIndex:7},{value:"\u521D\u59CB\u5316\u51FD\u6570\uFF0C\u5728 ",paraId:9,tocIndex:8},{value:"constructor",paraId:9,tocIndex:8},{value:" \u4E4B\u540E\u65E2\u88AB\u8C03\u7528\u3002",paraId:9,tocIndex:8},{value:"init(options: DataSourceOptions)",paraId:10,tocIndex:9},{value:"get name()",paraId:11,tocIndex:11},{value:"\u54CD\u5E94\u6570\u636E\u6E90\u7684\u5B9E\u4F8B\u540D\u79F0",paraId:12,tocIndex:11},{value:"\u83B7\u5F97 DataSource \u7684\u4E2D\u95F4\u4EF6\uFF0C\u7528\u4E8E\u6302\u8F7D\u5230 Server \u4E2D\u63A5\u6536\u8BF7\u6C42\u3002",paraId:13,tocIndex:12},{value:"\u9759\u6001\u65B9\u6CD5\uFF0C\u5728\u6D4B\u8BD5\u8FDE\u63A5\u64CD\u4F5C\u65F6\u8C03\u7528\uFF0C\u53EF\u7528\u4E8E\u53C2\u6570\u6821\u9A8C\uFF0C\u5177\u4F53\u903B\u8F91\u7531\u5B50\u7C7B\u5B9E\u73B0\u3002",paraId:14,tocIndex:13},{value:"static testConnection(options?: any): Promise",paraId:15,tocIndex:14},{value:"async load(options: any = {})",paraId:16,tocIndex:16},{value:"\u6570\u636E\u6E90\u7684\u52A0\u8F7D\u64CD\u4F5C\uFF0C\u903B\u8F91\u7531\u5B50\u7C7B\u5B9E\u73B0\u3002",paraId:17,tocIndex:16},{value:"abstract createCollectionManager(options?: any): ICollectionManager",paraId:18,tocIndex:18},{value:"\u521B\u5EFA\u6570\u636E\u6E90\u7684 CollectionManager \u5B9E\u4F8B\uFF0C\u903B\u8F91\u7531\u5B50\u7C7B\u5B9E\u73B0\u3002",paraId:19,tocIndex:18},{value:"\u521B\u5EFA\u6570\u636E\u6E90\u7684 ResourceManager \u5B9E\u4F8B\uFF0C\u5B57\u7C7B\u53EF\u8986\u76D6\u5B9E\u73B0\uFF0C\u9ED8\u8BA4\u521B\u5EFA ",paraId:20,tocIndex:19},{value:"@nocobase/resourcer",paraId:20,tocIndex:19},{value:" \u4E2D\u7684 ",paraId:20,tocIndex:19},{value:"ResourceManager",paraId:20,tocIndex:19},{value:"\u3002",paraId:20,tocIndex:19},{value:"\u521B\u5EFA DataSource \u7684 ACL \u5B9E\u4F8B\uFF0C\u5B57\u7C7B\u53EF\u8986\u76D6\u5B9E\u73B0\uFF0C\u9ED8\u8BA4\u521B\u5EFA ",paraId:21,tocIndex:20},{value:"@nocobase/acl",paraId:21,tocIndex:20},{value:" \u4E2D\u7684 ",paraId:21,tocIndex:20},{value:"ACL",paraId:21,tocIndex:20},{value:"\u3002",paraId:21,tocIndex:20}],U4={},P4={title:"MySQL Client Installation",toc:"menu",filename:"docs/en-US/handbook/backups/installation/mysql.md",lastUpdated:1732240239e3,description:"Previously, you would pull a new image for each update. Now, you need to build a new image for each update."},T4=[{id:"mysql-client-installation",depth:1,title:"MySQL Client Installation"},{id:"docker-installation",depth:2,title:"Docker Installation"},{id:"enter-the-directory-where-the-nocobase-dockerfile-is-located-and-create-a-dockerfile-file",depth:3,title:"Enter the directory where the NocoBase Dockerfile is located and create a Dockerfile file"},{id:"modify-the-docker-composeyml-file-of-nocobase",depth:3,title:"Modify the docker-compose.yml file of NocoBase"},{id:"upgrade",depth:3,title:"Upgrade"},{id:"other-installation-methods",depth:2,title:"Other Installation Methods"}],C4=[{value:`# Based on the next version +`,paraId:3,tocIndex:3},{value:"\u5B8C\u6574\u63D2\u4EF6\u793A\u4F8B\u53C2\u8003\uFF1A",paraId:4,tocIndex:3},{value:"samples/custom-collection-template",paraId:4,tocIndex:3}],yk={},wk={title:"DataSource (abstract)",toc:"menu",filename:"docs/en-US/api/data-source-manager/data-source.md",lastUpdated:173254844e4,description:"DataSource \u62BD\u8C61\u7C7B\uFF0C\u7528\u4E8E\u8868\u793A\u4E00\u79CD\u7C7B\u578B\u7684\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u662F\u6570\u636E\u5E93\u3001API\u7B49\u3002"},kk=[{id:"datasource-abstract",depth:1,title:"DataSource (abstract)"},{id:"\u6210\u5458",depth:2,title:"\u6210\u5458"},{id:"collectionmanager",depth:3,title:"collectionManager"},{id:"resourcemanager",depth:3,title:"resourceManager"},{id:"acl",depth:3,title:"acl"},{id:"api",depth:2,title:"API"},{id:"constructor",depth:3,title:"constructor()"},{id:"\u7B7E\u540D",depth:4,title:"\u7B7E\u540D"},{id:"init",depth:3,title:"init()"},{id:"\u7B7E\u540D-1",depth:4,title:"\u7B7E\u540D"},{id:"name",depth:3,title:"name"},{id:"\u7B7E\u540D-2",depth:4,title:"\u7B7E\u540D"},{id:"middleware",depth:3,title:"middleware()"},{id:"testconnection",depth:3,title:"testConnection()"},{id:"\u7B7E\u540D-3",depth:4,title:"\u7B7E\u540D"},{id:"load",depth:3,title:"load()"},{id:"\u7B7E\u540D-4",depth:4,title:"\u7B7E\u540D"},{id:"createcollectionmanager",depth:3,title:"createCollectionManager()"},{id:"\u7B7E\u540D-5",depth:4,title:"\u7B7E\u540D"},{id:"createresourcemanager",depth:3,title:"createResourceManager()"},{id:"createacl",depth:3,title:"createACL()"}],Sk=[{value:"DataSource",paraId:0,tocIndex:0},{value:" \u62BD\u8C61\u7C7B\uFF0C\u7528\u4E8E\u8868\u793A\u4E00\u79CD\u7C7B\u578B\u7684\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u662F\u6570\u636E\u5E93\u3001API\u7B49\u3002",paraId:0,tocIndex:0},{value:"\u6570\u636E\u6E90\u7684 CollectionManager \u5B9E\u4F8B\uFF0C\u9700\u5B9E\u73B0 ",paraId:1,tocIndex:2},{value:"ICollectionManager",paraId:2,tocIndex:2},{value:" \u63A5\u53E3\u3002",paraId:1,tocIndex:2},{value:"\u6570\u636E\u6E90\u7684 resourceManager \u5B9E\u4F8B\uFF0C\u8BE6\u89C1\uFF1A",paraId:3,tocIndex:3},{value:"resourceManager",paraId:4,tocIndex:3},{value:"\u6570\u636E\u6E90\u7684 ACL \u5B9E\u4F8B\uFF0C\u8BE6\u89C1\uFF1A ",paraId:5,tocIndex:4},{value:"ACL",paraId:6,tocIndex:4},{value:"\u6784\u9020\u51FD\u6570\uFF0C\u521B\u5EFA\u4E00\u4E2A ",paraId:7,tocIndex:6},{value:"DataSource",paraId:7,tocIndex:6},{value:" \u5B9E\u4F8B\u3002",paraId:7,tocIndex:6},{value:"constructor(options: DataSourceOptions)",paraId:8,tocIndex:7},{value:"\u521D\u59CB\u5316\u51FD\u6570\uFF0C\u5728 ",paraId:9,tocIndex:8},{value:"constructor",paraId:9,tocIndex:8},{value:" \u4E4B\u540E\u65E2\u88AB\u8C03\u7528\u3002",paraId:9,tocIndex:8},{value:"init(options: DataSourceOptions)",paraId:10,tocIndex:9},{value:"get name()",paraId:11,tocIndex:11},{value:"\u54CD\u5E94\u6570\u636E\u6E90\u7684\u5B9E\u4F8B\u540D\u79F0",paraId:12,tocIndex:11},{value:"\u83B7\u5F97 DataSource \u7684\u4E2D\u95F4\u4EF6\uFF0C\u7528\u4E8E\u6302\u8F7D\u5230 Server \u4E2D\u63A5\u6536\u8BF7\u6C42\u3002",paraId:13,tocIndex:12},{value:"\u9759\u6001\u65B9\u6CD5\uFF0C\u5728\u6D4B\u8BD5\u8FDE\u63A5\u64CD\u4F5C\u65F6\u8C03\u7528\uFF0C\u53EF\u7528\u4E8E\u53C2\u6570\u6821\u9A8C\uFF0C\u5177\u4F53\u903B\u8F91\u7531\u5B50\u7C7B\u5B9E\u73B0\u3002",paraId:14,tocIndex:13},{value:"static testConnection(options?: any): Promise",paraId:15,tocIndex:14},{value:"async load(options: any = {})",paraId:16,tocIndex:16},{value:"\u6570\u636E\u6E90\u7684\u52A0\u8F7D\u64CD\u4F5C\uFF0C\u903B\u8F91\u7531\u5B50\u7C7B\u5B9E\u73B0\u3002",paraId:17,tocIndex:16},{value:"abstract createCollectionManager(options?: any): ICollectionManager",paraId:18,tocIndex:18},{value:"\u521B\u5EFA\u6570\u636E\u6E90\u7684 CollectionManager \u5B9E\u4F8B\uFF0C\u903B\u8F91\u7531\u5B50\u7C7B\u5B9E\u73B0\u3002",paraId:19,tocIndex:18},{value:"\u521B\u5EFA\u6570\u636E\u6E90\u7684 ResourceManager \u5B9E\u4F8B\uFF0C\u5B57\u7C7B\u53EF\u8986\u76D6\u5B9E\u73B0\uFF0C\u9ED8\u8BA4\u521B\u5EFA ",paraId:20,tocIndex:19},{value:"@nocobase/resourcer",paraId:20,tocIndex:19},{value:" \u4E2D\u7684 ",paraId:20,tocIndex:19},{value:"ResourceManager",paraId:20,tocIndex:19},{value:"\u3002",paraId:20,tocIndex:19},{value:"\u521B\u5EFA DataSource \u7684 ACL \u5B9E\u4F8B\uFF0C\u5B57\u7C7B\u53EF\u8986\u76D6\u5B9E\u73B0\uFF0C\u9ED8\u8BA4\u521B\u5EFA ",paraId:21,tocIndex:20},{value:"@nocobase/acl",paraId:21,tocIndex:20},{value:" \u4E2D\u7684 ",paraId:21,tocIndex:20},{value:"ACL",paraId:21,tocIndex:20},{value:"\u3002",paraId:21,tocIndex:20}],Uk={},Pk={title:"MySQL Client Installation",toc:"menu",filename:"docs/en-US/handbook/backups/installation/mysql.md",lastUpdated:173254844e4,description:"Previously, you would pull a new image for each update. Now, you need to build a new image for each update."},Tk=[{id:"mysql-client-installation",depth:1,title:"MySQL Client Installation"},{id:"docker-installation",depth:2,title:"Docker Installation"},{id:"enter-the-directory-where-the-nocobase-dockerfile-is-located-and-create-a-dockerfile-file",depth:3,title:"Enter the directory where the NocoBase Dockerfile is located and create a Dockerfile file"},{id:"modify-the-docker-composeyml-file-of-nocobase",depth:3,title:"Modify the docker-compose.yml file of NocoBase"},{id:"upgrade",depth:3,title:"Upgrade"},{id:"other-installation-methods",depth:2,title:"Other Installation Methods"}],Ck=[{value:`# Based on the next version FROM registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:next # run installation script, please replace the corresponding MySQL version link according to the actual situation @@ -8817,7 +8869,7 @@ services: docker-compose up -d app # Check app logs docker-compose logs app -`,paraId:3,tocIndex:4},{value:"If your NocoBase was installed with ",paraId:4,tocIndex:5},{value:"create-nocobase-app",paraId:5,tocIndex:5},{value:" or ",paraId:4,tocIndex:5},{value:"Git source code",paraId:6,tocIndex:5},{value:", please check the below MySQL official release page, choose the appropriate MySQL version, and follow the official installation guide.",paraId:4,tocIndex:5},{value:"History versions: ",paraId:7,tocIndex:5},{value:"https://downloads.mysql.com/archives/community/",paraId:7,tocIndex:5},{value:"Last versions: ",paraId:7,tocIndex:5},{value:"https://dev.mysql.com/downloads/mysql/",paraId:7,tocIndex:5}],A4={},q4={title:"Data Source - KingbaseES Database",toc:"menu",filename:"docs/en-US/handbook/data-source-kingbase/index.md",lastUpdated:1732240239e3,description:"KingbaseES can be used as a data source, either as the primary database or an external database."},E4=[{id:"data-source---kingbasees-database",depth:1,title:"Data Source - KingbaseES Database"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"using-as-the-primary-database",depth:3,title:"Using as the Primary Database"},{id:"environment-variables",depth:4,title:"Environment Variables"},{id:"docker-installation",depth:4,title:"Docker Installation"},{id:"installation-using-create-nocobase-app",depth:4,title:"Installation Using create-nocobase-app"},{id:"using-as-an-external-database",depth:3,title:"Using as an External Database"},{id:"user-guide",depth:2,title:"User Guide"}],D4=[{value:"KingbaseES can be used as a data source, either as the primary database or an external database.",paraId:0,tocIndex:1},{value:"Currently, only KingbaseES databases running in pg mode are supported.",paraId:1},{value:"Refer to the ",paraId:2,tocIndex:3},{value:"Installation Overview",paraId:3,tocIndex:3},{value:" for the setup procedures, the difference is mainly due to the environment variables.",paraId:2,tocIndex:3},{value:"Edit the .env file to add or modify the following environment variable configurations:",paraId:4,tocIndex:4},{value:`# For accessing commercial plugins +`,paraId:3,tocIndex:4},{value:"If your NocoBase was installed with ",paraId:4,tocIndex:5},{value:"create-nocobase-app",paraId:5,tocIndex:5},{value:" or ",paraId:4,tocIndex:5},{value:"Git source code",paraId:6,tocIndex:5},{value:", please check the below MySQL official release page, choose the appropriate MySQL version, and follow the official installation guide.",paraId:4,tocIndex:5},{value:"History versions: ",paraId:7,tocIndex:5},{value:"https://downloads.mysql.com/archives/community/",paraId:7,tocIndex:5},{value:"Last versions: ",paraId:7,tocIndex:5},{value:"https://dev.mysql.com/downloads/mysql/",paraId:7,tocIndex:5}],Ak={},qk={title:"Data Source - KingbaseES Database",toc:"menu",filename:"docs/en-US/handbook/data-source-kingbase/index.md",lastUpdated:173254844e4,description:"KingbaseES can be used as a data source, either as the primary database or an external database."},Ek=[{id:"data-source---kingbasees-database",depth:1,title:"Data Source - KingbaseES Database"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"using-as-the-primary-database",depth:3,title:"Using as the Primary Database"},{id:"environment-variables",depth:4,title:"Environment Variables"},{id:"docker-installation",depth:4,title:"Docker Installation"},{id:"installation-using-create-nocobase-app",depth:4,title:"Installation Using create-nocobase-app"},{id:"using-as-an-external-database",depth:3,title:"Using as an External Database"},{id:"user-guide",depth:2,title:"User Guide"}],Dk=[{value:"KingbaseES can be used as a data source, either as the primary database or an external database.",paraId:0,tocIndex:1},{value:"Currently, only KingbaseES databases running in pg mode are supported.",paraId:1},{value:"Refer to the ",paraId:2,tocIndex:3},{value:"Installation Overview",paraId:3,tocIndex:3},{value:" for the setup procedures, the difference is mainly due to the environment variables.",paraId:2,tocIndex:3},{value:"Edit the .env file to add or modify the following environment variable configurations:",paraId:4,tocIndex:4},{value:`# For accessing commercial plugins NOCOBASE_PKG_URL=https://pkg.nocobase.com/ NOCOBASE_PKG_USERNAME=your-username # Service platform username NOCOBASE_PKG_PASSWORD=your-password # Service platform password @@ -8898,7 +8950,7 @@ NOCOBASE_PKG_PASSWORD=your-password # Service platform password `,paraId:9,tocIndex:7},{value:"Execute the installation or upgrade command",paraId:10,tocIndex:7},{value:`yarn nocobase install # or yarn nocobase upgrade -`,paraId:11,tocIndex:7},{value:"Activate the Plugin",paraId:12,tocIndex:7},{value:"Primary Database: Refer to the ",paraId:13,tocIndex:8},{value:"handbook",paraId:14,tocIndex:8},{value:"External Database: See ",paraId:13,tocIndex:8},{value:"Data Source / External Database",paraId:15,tocIndex:8}],O4={},R4={title:"REST API Data Source",toc:"menu",filename:"docs/en-US/handbook/data-source-rest-api/index.md",lastUpdated:1732240239e3,description:"This plugin allows you to integrate data from REST API sources seamlessly."},M4=[{id:"rest-api-data-source",depth:1,title:"REST API Data Source"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"adding-a-rest-api-source",depth:2,title:"Adding a REST API Source"},{id:"configuring-the-rest-api-source",depth:3,title:"Configuring the REST API Source"},{id:"adding-a-collection",depth:2,title:"Adding a Collection"},{id:"list",depth:3,title:"List"},{id:"get",depth:3,title:"Get"},{id:"create",depth:3,title:"Create"},{id:"update",depth:3,title:"Update"},{id:"destroy",depth:3,title:"Destroy"},{id:"debugging-the-api",depth:2,title:"Debugging the API"},{id:"request-parameter-integration",depth:3,title:"Request parameter integration"},{id:"response-format-transformation",depth:3,title:"Response format transformation"},{id:"debugging-process-overview",depth:3,title:"Debugging Process Overview"},{id:"variables",depth:2,title:"Variables"},{id:"custom-data-source-variables",depth:3,title:"Custom Data Source Variables"},{id:"nocobase-request",depth:3,title:"NocoBase Request"},{id:"third-party-responses",depth:3,title:"Third-Party Responses"},{id:"list-1",depth:3,title:"List"},{id:"get-1",depth:3,title:"Get"},{id:"create-1",depth:3,title:"Create"},{id:"update-1",depth:3,title:"Update"},{id:"destroy-1",depth:3,title:"Destroy"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"adding-rest-api-data-source-blocks",depth:2,title:"Adding REST API Data Source Blocks"}],L4=[{value:"This plugin allows you to integrate data from REST API sources seamlessly.",paraId:0,tocIndex:1},{value:"As a commercial plugin, it requires uploading and activation through the plugin manager.",paraId:1,tocIndex:2},{value:"After activating the plugin, you can add a REST API source by selecting it from the Add new dropdown menu in the data source management section.",paraId:2,tocIndex:3},{value:"In NocoBase, a RESTful resource is mapped to a Collection, such as a Users resource.",paraId:3,tocIndex:5},{value:`GET /users +`,paraId:11,tocIndex:7},{value:"Activate the Plugin",paraId:12,tocIndex:7},{value:"Primary Database: Refer to the ",paraId:13,tocIndex:8},{value:"handbook",paraId:14,tocIndex:8},{value:"External Database: See ",paraId:13,tocIndex:8},{value:"Data Source / External Database",paraId:15,tocIndex:8}],Ok={},Rk={title:"REST API Data Source",toc:"menu",filename:"docs/en-US/handbook/data-source-rest-api/index.md",lastUpdated:173254844e4,description:"This plugin allows you to integrate data from REST API sources seamlessly."},Mk=[{id:"rest-api-data-source",depth:1,title:"REST API Data Source"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"adding-a-rest-api-source",depth:2,title:"Adding a REST API Source"},{id:"configuring-the-rest-api-source",depth:3,title:"Configuring the REST API Source"},{id:"adding-a-collection",depth:2,title:"Adding a Collection"},{id:"list",depth:3,title:"List"},{id:"get",depth:3,title:"Get"},{id:"create",depth:3,title:"Create"},{id:"update",depth:3,title:"Update"},{id:"destroy",depth:3,title:"Destroy"},{id:"debugging-the-api",depth:2,title:"Debugging the API"},{id:"request-parameter-integration",depth:3,title:"Request parameter integration"},{id:"response-format-transformation",depth:3,title:"Response format transformation"},{id:"debugging-process-overview",depth:3,title:"Debugging Process Overview"},{id:"variables",depth:2,title:"Variables"},{id:"custom-data-source-variables",depth:3,title:"Custom Data Source Variables"},{id:"nocobase-request",depth:3,title:"NocoBase Request"},{id:"third-party-responses",depth:3,title:"Third-Party Responses"},{id:"list-1",depth:3,title:"List"},{id:"get-1",depth:3,title:"Get"},{id:"create-1",depth:3,title:"Create"},{id:"update-1",depth:3,title:"Update"},{id:"destroy-1",depth:3,title:"Destroy"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"adding-rest-api-data-source-blocks",depth:2,title:"Adding REST API Data Source Blocks"}],Lk=[{value:"This plugin allows you to integrate data from REST API sources seamlessly.",paraId:0,tocIndex:1},{value:"As a commercial plugin, it requires uploading and activation through the plugin manager.",paraId:1,tocIndex:2},{value:"After activating the plugin, you can add a REST API source by selecting it from the Add new dropdown menu in the data source management section.",paraId:2,tocIndex:3},{value:"In NocoBase, a RESTful resource is mapped to a Collection, such as a Users resource.",paraId:3,tocIndex:5},{value:`GET /users POST /users GET /users/1 PUT /users/1 @@ -8908,10 +8960,10 @@ POST /users:create POST /users:get?filterByTk=1 POST /users:update?filterByTk=1 POST /users:destroy?filterByTk=1 -`,paraId:6,tocIndex:5},{value:"For a comprehensive guide on NocoBase API design specifications, refer to the API documentation.",paraId:7,tocIndex:5},{value:'Check the "NocoBase API - Core" chapter for detailed information.',paraId:8,tocIndex:5},{value:"The Collection configuration for a REST API data source includes the following:",paraId:9,tocIndex:5},{value:"Map the interface for viewing a list of resources.",paraId:10,tocIndex:6},{value:"Map the interface for viewing resource details.",paraId:11,tocIndex:7},{value:"Map the interface for creating a resource.",paraId:12,tocIndex:8},{value:"Map the interface for updating a resource.",paraId:13,tocIndex:9},{value:"Map the interface for deleting a resource.",paraId:14,tocIndex:10},{value:"Both the List and Get interfaces are required to be configured.",paraId:15,tocIndex:10},{value:"example: configure pagination parameters for the List API.",paraId:16,tocIndex:12},{value:"if the third-party api does not support pagination natively, implement pagination will based on the retrieved list data.",paraId:17,tocIndex:12},{value:"Note: Only variables added to the API will work.",paraId:18,tocIndex:12},{value:"Third-party API params name",paraId:19,tocIndex:12},{value:"NocoBase params",paraId:19,tocIndex:12},{value:"page",paraId:19,tocIndex:12},{value:"{{request.params.page}}",paraId:19,tocIndex:12},{value:"limit",paraId:19,tocIndex:12},{value:"{{request.params.pageSize}}",paraId:19,tocIndex:12},{value:"You can easily debug the API by clicking ",paraId:20,tocIndex:12},{value:"Try it out",paraId:20,tocIndex:12},{value:".",paraId:20,tocIndex:12},{value:` - `,paraId:21},{value:"The response format of the third-party API may not be in NocoBase standard, and it needs to be transformed before it can be correctly displayed on the front end.",paraId:22,tocIndex:13},{value:"Adjust the conversion rules based on the response format of the third-party API to ensure the output conforms to the NocoBase standard.",paraId:23,tocIndex:13},{value:"The REST API data source supports three types of variables for API integration:",paraId:24,tocIndex:15},{value:"Custom data source variables",paraId:25,tocIndex:15},{value:"NocoBase request variables",paraId:25,tocIndex:15},{value:"Third-party response variables",paraId:25,tocIndex:15},{value:"Params:",paraId:26,tocIndex:17},{value:" URL query parameters (Search Params), which vary depending on the interface.",paraId:26,tocIndex:17},{value:"Headers:",paraId:26,tocIndex:17},{value:" Custom request headers, primarily providing specific X- information from NocoBase.",paraId:26,tocIndex:17},{value:"Body:",paraId:26,tocIndex:17},{value:" The request body.",paraId:26,tocIndex:17},{value:"Token:",paraId:26,tocIndex:17},{value:" The API token for the current NocoBase request.",paraId:26,tocIndex:17},{value:"Currently, only the response body is available.",paraId:27,tocIndex:18},{value:"Below are the variables available for each interface:",paraId:28,tocIndex:18},{value:"Parameter",paraId:29,tocIndex:19},{value:"Description",paraId:29,tocIndex:19},{value:"request.params.page",paraId:29,tocIndex:19},{value:"Current page",paraId:29,tocIndex:19},{value:"request.params.pageSize",paraId:29,tocIndex:19},{value:"Number of items per page",paraId:29,tocIndex:19},{value:"request.params.filter",paraId:29,tocIndex:19},{value:"Filter criteria (must meet NocoBase Filter format)",paraId:29,tocIndex:19},{value:"request.params.sort",paraId:29,tocIndex:19},{value:"Sorting criteria (must meet NocoBase Sort format)",paraId:29,tocIndex:19},{value:"request.params.appends",paraId:29,tocIndex:19},{value:"Fields to load on demand, typically for association fields",paraId:29,tocIndex:19},{value:"request.params.fields",paraId:29,tocIndex:19},{value:"Fields to include (whitelist)",paraId:29,tocIndex:19},{value:"request.params.except",paraId:29,tocIndex:19},{value:"Fields to exclude (blacklist)",paraId:29,tocIndex:19},{value:"Parameter",paraId:30,tocIndex:20},{value:"Description",paraId:30,tocIndex:20},{value:"request.params.filterByTk",paraId:30,tocIndex:20},{value:"Required, typically the current record ID",paraId:30,tocIndex:20},{value:"request.params.filter",paraId:30,tocIndex:20},{value:"Filter criteria (must meet NocoBase Filter format)",paraId:30,tocIndex:20},{value:"request.params.appends",paraId:30,tocIndex:20},{value:"Fields to load on demand, typically for association fields",paraId:30,tocIndex:20},{value:"request.params.fields",paraId:30,tocIndex:20},{value:"Fields to include (whitelist)",paraId:30,tocIndex:20},{value:"request.params.except",paraId:30,tocIndex:20},{value:"Fields to exclude (blacklist)",paraId:30,tocIndex:20},{value:"Parameter",paraId:31,tocIndex:21},{value:"Description",paraId:31,tocIndex:21},{value:"request.params.whiteList",paraId:31,tocIndex:21},{value:"Whitelist",paraId:31,tocIndex:21},{value:"request.params.blacklist",paraId:31,tocIndex:21},{value:"Blacklist",paraId:31,tocIndex:21},{value:"request.body",paraId:31,tocIndex:21},{value:"Initial data for creation",paraId:31,tocIndex:21},{value:"Parameter",paraId:32,tocIndex:22},{value:"Description",paraId:32,tocIndex:22},{value:"request.params.filterByTk",paraId:32,tocIndex:22},{value:"Required, typically the current record ID",paraId:32,tocIndex:22},{value:"request.params.filter",paraId:32,tocIndex:22},{value:"Filter criteria (must meet NocoBase Filter format)",paraId:32,tocIndex:22},{value:"request.params.whiteList",paraId:32,tocIndex:22},{value:"Whitelist",paraId:32,tocIndex:22},{value:"request.params.blacklist",paraId:32,tocIndex:22},{value:"Blacklist",paraId:32,tocIndex:22},{value:"request.body",paraId:32,tocIndex:22},{value:"Data for update",paraId:32,tocIndex:22},{value:"Parameter",paraId:33,tocIndex:23},{value:"Description",paraId:33,tocIndex:23},{value:"request.params.filterByTk",paraId:33,tocIndex:23},{value:"Required, typically the current record ID",paraId:33,tocIndex:23},{value:"request.params.filter",paraId:33,tocIndex:23},{value:"Filtering conditions",paraId:33,tocIndex:23},{value:"Field metadata (Fields) is extracted from the CRUD interface data of the adapted resource to serve as the fields of the collection.",paraId:34,tocIndex:24},{value:"Field metadata extraction.",paraId:35,tocIndex:24},{value:"Field and preview.",paraId:36,tocIndex:24},{value:"Field editing is similar to other data sources.",paraId:37,tocIndex:24},{value:"Once the collection is configured, you can add blocks to the interface.",paraId:38,tocIndex:25}],N4={},z4={title:"Data Field: Attachment (URL)",toc:"menu",filename:"docs/en-US/handbook/field-attachment-url/index.md",lastUpdated:1732240239e3,description:"Supports attachments in URL format."},F4=[{id:"data-field-attachment-url",depth:1,title:"Data Field: Attachment (URL)"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"field-configuration",depth:3,title:"Field Configuration"},{id:"external-data-source",depth:3,title:"External Data Source"},{id:"interface",depth:3,title:"Interface"}],B4=[{value:"Supports attachments in URL format.",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin.",paraId:1,tocIndex:2}],j4={},H4={title:"Mask",toc:"menu",filename:"docs/en-US/handbook/field-component-mask/index.md",lastUpdated:1732240239e3,description:"The Mask Field Component allows you to display field values in a masked format, which is particularly useful for handling sensitive information like passwords or credit card numbers."},W4=[{id:"mask",depth:1,title:"Mask"},{id:"overview",depth:2,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"mask-settings",depth:2,title:"Mask Settings"},{id:"mask-rules",depth:3,title:"Mask Rules"},{id:"predefined-mask-rules",depth:4,title:"Predefined Mask Rules"},{id:"custom-mask-rules",depth:4,title:"Custom Mask Rules"},{id:"roles-authorized-to-view-original-values",depth:3,title:"Roles Authorized to View Original Values"}],$4=[{value:"The Mask Field Component allows you to display field values in a masked format, which is particularly useful for handling sensitive information like passwords or credit card numbers.",paraId:0,tocIndex:1},{value:"This is a commercial plugin.",paraId:1,tocIndex:2},{value:"Field Component",paraId:2,tocIndex:3},{value:": Switch between the default field component and the mask field component.",paraId:3,tocIndex:3},{value:"Mask Settings: Configure mask rules and set permissions for the field.",paraId:3,tocIndex:3},{value:"******",paraId:4,tocIndex:6},{value:": Masks the data entirely with six asterisks.",paraId:4,tocIndex:6},{value:"***abc",paraId:4,tocIndex:6},{value:": Masks the data with three asterisks followed by the last three characters of the original data.",paraId:4,tocIndex:6},{value:"**ab**",paraId:4,tocIndex:6},{value:": Masks the data with two asterisks at both the beginning and end, revealing the middle two characters of the original data.",paraId:4,tocIndex:6},{value:"abc***",paraId:4,tocIndex:6},{value:": Masks the data by showing the first three characters followed by three asterisks.",paraId:4,tocIndex:6},{value:"If the predefined mask rules don't meet your needs, you can select ",paraId:5,tocIndex:7},{value:"Custom",paraId:5,tocIndex:7},{value:` to define your own mask rules. -The syntax for custom mask rules is as follows:`,paraId:5,tocIndex:7},{value:"*",paraId:6,tocIndex:7},{value:" represents a placeholder, and the mask will display a specified number of ",paraId:6,tocIndex:7},{value:"*",paraId:6,tocIndex:7},{value:".",paraId:6,tocIndex:7},{value:"All other characters will display as they appear in the original data.",paraId:6,tocIndex:7},{value:"Examples:",paraId:7,tocIndex:7},{value:"a*a*a*",paraId:8,tocIndex:7},{value:": Masks the original data ",paraId:8,tocIndex:7},{value:"123456",paraId:8,tocIndex:7},{value:" as ",paraId:8,tocIndex:7},{value:"1*3*5*",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"a****a",paraId:8,tocIndex:7},{value:": Masks the original data ",paraId:8,tocIndex:7},{value:"123456789",paraId:8,tocIndex:7},{value:" as ",paraId:8,tocIndex:7},{value:"1****9",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"ab***abc",paraId:8,tocIndex:7},{value:": Masks the original data ",paraId:8,tocIndex:7},{value:"asdfghjkl",paraId:8,tocIndex:7},{value:" as ",paraId:8,tocIndex:7},{value:"as***jkl",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"You can specify which user roles are permitted to view the original, unmasked field values. By default, only the root user has this permission.",paraId:9,tocIndex:8},{value:"When the field is in edit mode, the original value is always visible, regardless of role settings.",paraId:10}],G4={},V4={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/file-manager/storage/index.md",lastUpdated:1732240239e3,description:"Currently, NocoBase supports the following built-in engine types:"},K4=[{id:"overview",depth:1,title:"Overview"},{id:"built-in-engines",depth:2,title:"Built-in Engines"},{id:"common-engine-parameters",depth:2,title:"Common Engine Parameters"},{id:"title",depth:3,title:"Title"},{id:"system-name",depth:3,title:"System Name"},{id:"access-base-url",depth:3,title:"Access base URL"},{id:"path",depth:3,title:"Path"},{id:"file-size-limit",depth:3,title:"File Size Limit"},{id:"default-storage-engine",depth:3,title:"Default Storage Engine"},{id:"keep-files-when-destroying-records",depth:3,title:"Keep Files When Destroying Records"}],Z4=[{value:"Currently, NocoBase supports the following built-in engine types:",paraId:0,tocIndex:1},{value:"Local Storage",paraId:1,tocIndex:1},{value:"Alibaba Cloud OSS",paraId:2,tocIndex:1},{value:"Amazon S3",paraId:3,tocIndex:1},{value:"Tencent Cloud COS",paraId:4,tocIndex:1},{value:"A local storage engine is automatically added during system installation and can be used directly. New engines can also be added or existing engine parameters can be edited.",paraId:5,tocIndex:1},{value:"In addition to specific parameters for different engine categories, the following are common parameters:",paraId:6,tocIndex:2},{value:"The name of the storage engine for human recognition.",paraId:7,tocIndex:3},{value:"The system name of the storage engine for system identifying. It must be unique in system-wide. If not provided, it will be generate randomly.",paraId:8,tocIndex:4},{value:'The prefix part of the URL address accessible to the file externally, which can be the access URL base of a CDN, for example: "',paraId:9,tocIndex:5},{value:"https://cdn.nocobase.com/app",paraId:9,tocIndex:5},{value:'" (without the trailing "',paraId:9,tocIndex:5},{value:"/",paraId:9,tocIndex:5},{value:'").',paraId:9,tocIndex:5},{value:'The relative path used when storing files. This part will also be automatically concatenated to the final URL when accessed. For example: "',paraId:10,tocIndex:6},{value:"user/avatar",paraId:10,tocIndex:6},{value:'" (without the leading or trailing "',paraId:10,tocIndex:6},{value:"/",paraId:10,tocIndex:6},{value:'").',paraId:10,tocIndex:6},{value:"The size limit for uploading files to this storage engine. Files larger than this setting will not be uploaded. The system maximum limit is 1GB.",paraId:11,tocIndex:7},{value:"When checked, it is set as the default storage engine for the system. Files uploaded in attachment fields or file collections without specifying a storage engine will be saved to the default storage engine. The default storage engine cannot be deleted.",paraId:12,tocIndex:8},{value:"When checked, uploaded files in the storage engine will be retained even when the data records in attachment fields or file collections are deleted. By default, files in the storage engine are deleted when records are deleted.",paraId:13,tocIndex:9},{value:"See local storage as an example:",paraId:14,tocIndex:9},{value:"After file upload, the final access path is composed of several parts:",paraId:15},{value:`// -`,paraId:16},{value:"For example: ",paraId:17},{value:"https://cdn.nocobase.com/app/user/avatar/20240529115151.png",paraId:17},{value:".",paraId:17}],Y4={},Q4={title:"Local storage",toc:"menu",filename:"docs/en-US/handbook/file-manager/storage/local.md",lastUpdated:1732240239e3,description:"The uploaded files will be saved in a local directory on the server. Suitable for scenarios small scale or experimental usage, which the quantity of files is finite."},J4=[{id:"local-storage",depth:1,title:"Local storage"},{id:"options",depth:2,title:"Options"},{id:"path",depth:3,title:"Path"}],X4=[{value:"The uploaded files will be saved in a local directory on the server. Suitable for scenarios small scale or experimental usage, which the quantity of files is finite.",paraId:0,tocIndex:0},{value:"This section only covers the specific options for the local storage engine. For common parameters, please refer to the ",paraId:1},{value:"General Engine Parameters",paraId:2},{value:".",paraId:1},{value:'The path represents both the relative path of the file stored on the server and the URL access path. For example, "',paraId:3,tocIndex:2},{value:"user/avatar",paraId:3,tocIndex:2},{value:'" (without the leading and trailing "',paraId:3,tocIndex:2},{value:"/",paraId:3,tocIndex:2},{value:'") represents:',paraId:3,tocIndex:2},{value:"The relative path of the uploaded file stored on the server: ",paraId:4,tocIndex:2},{value:"/path/to/nocobase-app/storage/uploads/user/avatar",paraId:4,tocIndex:2},{value:".",paraId:4,tocIndex:2},{value:"The URL prefix for accessing the file: ",paraId:4,tocIndex:2},{value:"http://localhost:13000/storage/uploads/user/avatar",paraId:4,tocIndex:2},{value:".",paraId:4,tocIndex:2}],eS={},aS={title:"Notification Manager",toc:"menu",filename:"docs/en-US/handbook/notification-manager/index.md",lastUpdated:1732240239e3,description:"The Notification Manager is a centralized service that integrates various notification channels, offering a unified interface for channel configuration, management of notifications, and log recording. It\u2019s also designed to be highly flexible, allowing for the expansion of additional channels."},tS=[{id:"notification-manager",depth:1,title:"Notification Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"channel-management",depth:2,title:"Channel Management"},{id:"notification-logs",depth:2,title:"Notification Logs"},{id:"workflow-notification-node",depth:2,title:"Workflow Notification Node"}],nS=[{value:"The Notification Manager is a centralized service that integrates various notification channels, offering a unified interface for channel configuration, management of notifications, and log recording. It\u2019s also designed to be highly flexible, allowing for the expansion of additional channels.",paraId:0,tocIndex:1},{value:"Purple section: The Notification Manager provides a comprehensive service that includes channel configuration and log recording, with the option to expand to other notification channels.",paraId:1,tocIndex:1},{value:"Green section: In-App Message, a built-in channel, enables users to receive notifications directly within the application.",paraId:1,tocIndex:1},{value:"Red section: Email, an extendable channel, allows users to receive notifications through email.",paraId:1,tocIndex:1},{value:"The currently supported channels include:",paraId:2,tocIndex:2},{value:"In-App Message",paraId:3,tocIndex:2},{value:" (under development)",paraId:4,tocIndex:2},{value:"Email",paraId:5,tocIndex:2},{value:" (built-in SMTP protocol)",paraId:4,tocIndex:2},{value:"For additional channels, refer to the ",paraId:6,tocIndex:2},{value:"Channel Expansion",paraId:7,tocIndex:2},{value:" documentation.",paraId:6,tocIndex:2},{value:"The system logs each notification's details and status, offering a valuable tool for both analysis and troubleshooting.",paraId:8,tocIndex:3}],oS={},rS={title:"Telemetry - Prometheus",toc:"menu",filename:"docs/en-US/handbook/telemetry-prometheus/index.md",lastUpdated:1732240239e3,description:"This plugin is used to convert OpenTelemetry protocol (OTLP) data into Prometheus format and expose an interface for Prometheus to scrape metric data."},dS=[{id:"telemetry---prometheus",depth:1,title:"Telemetry - Prometheus"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"environment-variables",depth:3,title:"Environment Variables"},{id:"telemetry_enabled",depth:4,title:"TELEMETRY_ENABLED"},{id:"telemetry_metric_reader",depth:4,title:"TELEMETRY_METRIC_READER"},{id:"telemetry_prometheus_server",depth:4,title:"TELEMETRY_PROMETHEUS_SERVER"},{id:"telemetry_prometheus_port",depth:4,title:"TELEMETRY_PROMETHEUS_PORT"},{id:"related-documents",depth:4,title:"Related Documents"},{id:"prometheus-configuration",depth:3,title:"Prometheus Configuration"}],iS=[{value:"This plugin is used to convert OpenTelemetry protocol (OTLP) data into Prometheus format and expose an interface for Prometheus to scrape metric data.",paraId:0,tocIndex:1},{value:"This is a commercial plugin. Please see ",paraId:1},{value:"NocoBase commercial version",paraId:1},{value:" for details.",paraId:1},{value:"Configure the environment variables before starting NocoBase.",paraId:2,tocIndex:4},{value:"Set to ",paraId:3,tocIndex:5},{value:"on",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:`TELEMETRY_ENABLED=on +`,paraId:6,tocIndex:5},{value:"For a comprehensive guide on NocoBase API design specifications, refer to the API documentation.",paraId:7,tocIndex:5},{value:'Check the "NocoBase API - Core" chapter for detailed information.',paraId:8,tocIndex:5},{value:"The Collection configuration for a REST API data source includes the following:",paraId:9,tocIndex:5},{value:"Map the interface for viewing a list of resources.",paraId:10,tocIndex:6},{value:"Map the interface for viewing resource details.",paraId:11,tocIndex:7},{value:"Map the interface for creating a resource.",paraId:12,tocIndex:8},{value:"Map the interface for updating a resource.",paraId:13,tocIndex:9},{value:"Map the interface for deleting a resource.",paraId:14,tocIndex:10},{value:"Both the List and Get interfaces are required to be configured.",paraId:15,tocIndex:10},{value:"example: configure pagination parameters for the List API.",paraId:16,tocIndex:12},{value:"if the third-party api does not support pagination natively, implement pagination will based on the retrieved list data.",paraId:17,tocIndex:12},{value:"Note: Only variables added to the API will work.",paraId:18,tocIndex:12},{value:"Third-party API params name",paraId:19,tocIndex:12},{value:"NocoBase params",paraId:19,tocIndex:12},{value:"page",paraId:19,tocIndex:12},{value:"{{request.params.page}}",paraId:19,tocIndex:12},{value:"limit",paraId:19,tocIndex:12},{value:"{{request.params.pageSize}}",paraId:19,tocIndex:12},{value:"You can easily debug the API by clicking Try it out.",paraId:20,tocIndex:12},{value:` + `,paraId:21},{value:"The response format of the third-party API may not be in NocoBase standard, and it needs to be transformed before it can be correctly displayed on the front end.",paraId:22,tocIndex:13},{value:"Adjust the conversion rules based on the response format of the third-party API to ensure the output conforms to the NocoBase standard.",paraId:23,tocIndex:13},{value:"The REST API data source supports three types of variables for API integration:",paraId:24,tocIndex:15},{value:"Custom data source variables",paraId:25,tocIndex:15},{value:"NocoBase request variables",paraId:25,tocIndex:15},{value:"Third-party response variables",paraId:25,tocIndex:15},{value:"Params: URL query parameters (Search Params), which vary depending on the interface.",paraId:26,tocIndex:17},{value:"Headers: Custom request headers, primarily providing specific X- information from NocoBase.",paraId:26,tocIndex:17},{value:"Body: The request body.",paraId:26,tocIndex:17},{value:"Token: The API token for the current NocoBase request.",paraId:26,tocIndex:17},{value:"Currently, only the response body is available.",paraId:27,tocIndex:18},{value:"Below are the variables available for each interface:",paraId:28,tocIndex:18},{value:"Parameter",paraId:29,tocIndex:19},{value:"Description",paraId:29,tocIndex:19},{value:"request.params.page",paraId:29,tocIndex:19},{value:"Current page",paraId:29,tocIndex:19},{value:"request.params.pageSize",paraId:29,tocIndex:19},{value:"Number of items per page",paraId:29,tocIndex:19},{value:"request.params.filter",paraId:29,tocIndex:19},{value:"Filter criteria (must meet NocoBase Filter format)",paraId:29,tocIndex:19},{value:"request.params.sort",paraId:29,tocIndex:19},{value:"Sorting criteria (must meet NocoBase Sort format)",paraId:29,tocIndex:19},{value:"request.params.appends",paraId:29,tocIndex:19},{value:"Fields to load on demand, typically for association fields",paraId:29,tocIndex:19},{value:"request.params.fields",paraId:29,tocIndex:19},{value:"Fields to include (whitelist)",paraId:29,tocIndex:19},{value:"request.params.except",paraId:29,tocIndex:19},{value:"Fields to exclude (blacklist)",paraId:29,tocIndex:19},{value:"Parameter",paraId:30,tocIndex:20},{value:"Description",paraId:30,tocIndex:20},{value:"request.params.filterByTk",paraId:30,tocIndex:20},{value:"Required, typically the current record ID",paraId:30,tocIndex:20},{value:"request.params.filter",paraId:30,tocIndex:20},{value:"Filter criteria (must meet NocoBase Filter format)",paraId:30,tocIndex:20},{value:"request.params.appends",paraId:30,tocIndex:20},{value:"Fields to load on demand, typically for association fields",paraId:30,tocIndex:20},{value:"request.params.fields",paraId:30,tocIndex:20},{value:"Fields to include (whitelist)",paraId:30,tocIndex:20},{value:"request.params.except",paraId:30,tocIndex:20},{value:"Fields to exclude (blacklist)",paraId:30,tocIndex:20},{value:"Parameter",paraId:31,tocIndex:21},{value:"Description",paraId:31,tocIndex:21},{value:"request.params.whiteList",paraId:31,tocIndex:21},{value:"Whitelist",paraId:31,tocIndex:21},{value:"request.params.blacklist",paraId:31,tocIndex:21},{value:"Blacklist",paraId:31,tocIndex:21},{value:"request.body",paraId:31,tocIndex:21},{value:"Initial data for creation",paraId:31,tocIndex:21},{value:"Parameter",paraId:32,tocIndex:22},{value:"Description",paraId:32,tocIndex:22},{value:"request.params.filterByTk",paraId:32,tocIndex:22},{value:"Required, typically the current record ID",paraId:32,tocIndex:22},{value:"request.params.filter",paraId:32,tocIndex:22},{value:"Filter criteria (must meet NocoBase Filter format)",paraId:32,tocIndex:22},{value:"request.params.whiteList",paraId:32,tocIndex:22},{value:"Whitelist",paraId:32,tocIndex:22},{value:"request.params.blacklist",paraId:32,tocIndex:22},{value:"Blacklist",paraId:32,tocIndex:22},{value:"request.body",paraId:32,tocIndex:22},{value:"Data for update",paraId:32,tocIndex:22},{value:"Parameter",paraId:33,tocIndex:23},{value:"Description",paraId:33,tocIndex:23},{value:"request.params.filterByTk",paraId:33,tocIndex:23},{value:"Required, typically the current record ID",paraId:33,tocIndex:23},{value:"request.params.filter",paraId:33,tocIndex:23},{value:"Filtering conditions",paraId:33,tocIndex:23},{value:"Field metadata (Fields) is extracted from the CRUD interface data of the adapted resource to serve as the fields of the collection.",paraId:34,tocIndex:24},{value:"Field metadata extraction.",paraId:35,tocIndex:24},{value:"Field and preview.",paraId:36,tocIndex:24},{value:"Edit fields (similar to other data sources).",paraId:37,tocIndex:24},{value:"Once the collection is configured, you can add blocks to the interface.",paraId:38,tocIndex:25}],Nk={},zk={title:"Data Field: Attachment (URL)",toc:"menu",filename:"docs/en-US/handbook/field-attachment-url/index.md",lastUpdated:173254844e4,description:"Supports attachments in URL format."},Fk=[{id:"data-field-attachment-url",depth:1,title:"Data Field: Attachment (URL)"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"field-configuration",depth:3,title:"Field Configuration"},{id:"external-data-source",depth:3,title:"External Data Source"},{id:"interface",depth:3,title:"Interface"}],Bk=[{value:"Supports attachments in URL format.",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin.",paraId:1,tocIndex:2}],jk={},Hk={title:"Mask",toc:"menu",filename:"docs/en-US/handbook/field-component-mask/index.md",lastUpdated:173254844e4,description:"The Mask Field Component allows you to display field values in a masked format, which is particularly useful for handling sensitive information like passwords or credit card numbers."},Wk=[{id:"mask",depth:1,title:"Mask"},{id:"overview",depth:2,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"mask-settings",depth:2,title:"Mask Settings"},{id:"mask-rules",depth:3,title:"Mask Rules"},{id:"predefined-mask-rules",depth:4,title:"Predefined Mask Rules"},{id:"custom-mask-rules",depth:4,title:"Custom Mask Rules"},{id:"roles-authorized-to-view-original-values",depth:3,title:"Roles Authorized to View Original Values"}],$k=[{value:"The Mask Field Component allows you to display field values in a masked format, which is particularly useful for handling sensitive information like passwords or credit card numbers.",paraId:0,tocIndex:1},{value:"This is a commercial plugin.",paraId:1,tocIndex:2},{value:"Field Component",paraId:2,tocIndex:3},{value:": Switch between the default field component and the mask field component.",paraId:3,tocIndex:3},{value:"Mask Settings: Configure mask rules and set permissions for the field.",paraId:3,tocIndex:3},{value:"******",paraId:4,tocIndex:6},{value:": Masks the data entirely with six asterisks.",paraId:4,tocIndex:6},{value:"***abc",paraId:4,tocIndex:6},{value:": Masks the data with three asterisks followed by the last three characters of the original data.",paraId:4,tocIndex:6},{value:"**ab**",paraId:4,tocIndex:6},{value:": Masks the data with two asterisks at both the beginning and end, revealing the middle two characters of the original data.",paraId:4,tocIndex:6},{value:"abc***",paraId:4,tocIndex:6},{value:": Masks the data by showing the first three characters followed by three asterisks.",paraId:4,tocIndex:6},{value:"If the predefined mask rules don't meet your needs, you can select ",paraId:5,tocIndex:7},{value:"Custom",paraId:5,tocIndex:7},{value:` to define your own mask rules. +The syntax for custom mask rules is as follows:`,paraId:5,tocIndex:7},{value:"*",paraId:6,tocIndex:7},{value:" represents a placeholder, and the mask will display a specified number of ",paraId:6,tocIndex:7},{value:"*",paraId:6,tocIndex:7},{value:".",paraId:6,tocIndex:7},{value:"All other characters will display as they appear in the original data.",paraId:6,tocIndex:7},{value:"Examples:",paraId:7,tocIndex:7},{value:"a*a*a*",paraId:8,tocIndex:7},{value:": Masks the original data ",paraId:8,tocIndex:7},{value:"123456",paraId:8,tocIndex:7},{value:" as ",paraId:8,tocIndex:7},{value:"1*3*5*",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"a****a",paraId:8,tocIndex:7},{value:": Masks the original data ",paraId:8,tocIndex:7},{value:"123456789",paraId:8,tocIndex:7},{value:" as ",paraId:8,tocIndex:7},{value:"1****9",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"ab***abc",paraId:8,tocIndex:7},{value:": Masks the original data ",paraId:8,tocIndex:7},{value:"asdfghjkl",paraId:8,tocIndex:7},{value:" as ",paraId:8,tocIndex:7},{value:"as***jkl",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"You can specify which user roles are permitted to view the original, unmasked field values. By default, only the root user has this permission.",paraId:9,tocIndex:8},{value:"When the field is in edit mode, the original value is always visible, regardless of role settings.",paraId:10}],Gk={},Vk={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/file-manager/storage/index.md",lastUpdated:173254844e4,description:"Currently, NocoBase supports the following built-in engine types:"},Kk=[{id:"overview",depth:1,title:"Overview"},{id:"built-in-engines",depth:2,title:"Built-in Engines"},{id:"common-engine-parameters",depth:2,title:"Common Engine Parameters"},{id:"title",depth:3,title:"Title"},{id:"system-name",depth:3,title:"System Name"},{id:"access-base-url",depth:3,title:"Access base URL"},{id:"path",depth:3,title:"Path"},{id:"file-size-limit",depth:3,title:"File Size Limit"},{id:"default-storage-engine",depth:3,title:"Default Storage Engine"},{id:"keep-files-when-destroying-records",depth:3,title:"Keep Files When Destroying Records"}],Zk=[{value:"Currently, NocoBase supports the following built-in engine types:",paraId:0,tocIndex:1},{value:"Local Storage",paraId:1,tocIndex:1},{value:"Alibaba Cloud OSS",paraId:2,tocIndex:1},{value:"Amazon S3",paraId:3,tocIndex:1},{value:"Tencent Cloud COS",paraId:4,tocIndex:1},{value:"A local storage engine is automatically added during system installation and can be used directly. New engines can also be added or existing engine parameters can be edited.",paraId:5,tocIndex:1},{value:"In addition to specific parameters for different engine categories, the following are common parameters:",paraId:6,tocIndex:2},{value:"The name of the storage engine for human recognition.",paraId:7,tocIndex:3},{value:"The system name of the storage engine for system identifying. It must be unique in system-wide. If not provided, it will be generate randomly.",paraId:8,tocIndex:4},{value:'The prefix part of the URL address accessible to the file externally, which can be the access URL base of a CDN, for example: "',paraId:9,tocIndex:5},{value:"https://cdn.nocobase.com/app",paraId:9,tocIndex:5},{value:'" (without the trailing "',paraId:9,tocIndex:5},{value:"/",paraId:9,tocIndex:5},{value:'").',paraId:9,tocIndex:5},{value:'The relative path used when storing files. This part will also be automatically concatenated to the final URL when accessed. For example: "',paraId:10,tocIndex:6},{value:"user/avatar",paraId:10,tocIndex:6},{value:'" (without the leading or trailing "',paraId:10,tocIndex:6},{value:"/",paraId:10,tocIndex:6},{value:'").',paraId:10,tocIndex:6},{value:"The size limit for uploading files to this storage engine. Files larger than this setting will not be uploaded. The system maximum limit is 1GB.",paraId:11,tocIndex:7},{value:"When checked, it is set as the default storage engine for the system. Files uploaded in attachment fields or file collections without specifying a storage engine will be saved to the default storage engine. The default storage engine cannot be deleted.",paraId:12,tocIndex:8},{value:"When checked, uploaded files in the storage engine will be retained even when the data records in attachment fields or file collections are deleted. By default, files in the storage engine are deleted when records are deleted.",paraId:13,tocIndex:9},{value:"See local storage as an example:",paraId:14,tocIndex:9},{value:"After file upload, the final access path is composed of several parts:",paraId:15},{value:`// +`,paraId:16},{value:"For example: ",paraId:17},{value:"https://cdn.nocobase.com/app/user/avatar/20240529115151.png",paraId:17},{value:".",paraId:17}],Yk={},Qk={title:"Local storage",toc:"menu",filename:"docs/en-US/handbook/file-manager/storage/local.md",lastUpdated:173254844e4,description:"The uploaded files will be saved in a local directory on the server. Suitable for scenarios small scale or experimental usage, which the quantity of files is finite."},Jk=[{id:"local-storage",depth:1,title:"Local storage"},{id:"options",depth:2,title:"Options"},{id:"path",depth:3,title:"Path"}],Xk=[{value:"The uploaded files will be saved in a local directory on the server. Suitable for scenarios small scale or experimental usage, which the quantity of files is finite.",paraId:0,tocIndex:0},{value:"This section only covers the specific options for the local storage engine. For common parameters, please refer to the ",paraId:1},{value:"General Engine Parameters",paraId:2},{value:".",paraId:1},{value:'The path represents both the relative path of the file stored on the server and the URL access path. For example, "',paraId:3,tocIndex:2},{value:"user/avatar",paraId:3,tocIndex:2},{value:'" (without the leading and trailing "',paraId:3,tocIndex:2},{value:"/",paraId:3,tocIndex:2},{value:'") represents:',paraId:3,tocIndex:2},{value:"The relative path of the uploaded file stored on the server: ",paraId:4,tocIndex:2},{value:"/path/to/nocobase-app/storage/uploads/user/avatar",paraId:4,tocIndex:2},{value:".",paraId:4,tocIndex:2},{value:"The URL prefix for accessing the file: ",paraId:4,tocIndex:2},{value:"http://localhost:13000/storage/uploads/user/avatar",paraId:4,tocIndex:2},{value:".",paraId:4,tocIndex:2}],e5={},a5={title:"Notification Manager",toc:"menu",filename:"docs/en-US/handbook/notification-manager/index.md",lastUpdated:173254844e4,description:"The Notification Manager is a centralized service that integrates various notification channels, offering a unified interface for channel configuration, management of notifications, and log recording. It\u2019s also designed to be highly flexible, allowing for the expansion of additional channels."},t5=[{id:"notification-manager",depth:1,title:"Notification Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"channel-management",depth:2,title:"Channel Management"},{id:"notification-logs",depth:2,title:"Notification Logs"},{id:"workflow-notification-node",depth:2,title:"Workflow Notification Node"}],n5=[{value:"The Notification Manager is a centralized service that integrates various notification channels, offering a unified interface for channel configuration, management of notifications, and log recording. It\u2019s also designed to be highly flexible, allowing for the expansion of additional channels.",paraId:0,tocIndex:1},{value:"Purple section: The Notification Manager provides a comprehensive service that includes channel configuration and log recording, with the option to expand to other notification channels.",paraId:1,tocIndex:1},{value:"Green section: In-App Message, a built-in channel, enables users to receive notifications directly within the application.",paraId:1,tocIndex:1},{value:"Red section: Email, an extendable channel, allows users to receive notifications through email.",paraId:1,tocIndex:1},{value:"The currently supported channels include:",paraId:2,tocIndex:2},{value:"In-App Message",paraId:3,tocIndex:2},{value:" (under development)",paraId:4,tocIndex:2},{value:"Email",paraId:5,tocIndex:2},{value:" (built-in SMTP protocol)",paraId:4,tocIndex:2},{value:"For additional channels, refer to the ",paraId:6,tocIndex:2},{value:"Channel Expansion",paraId:7,tocIndex:2},{value:" documentation.",paraId:6,tocIndex:2},{value:"The system logs each notification's details and status, offering a valuable tool for both analysis and troubleshooting.",paraId:8,tocIndex:3}],o5={},r5={title:"Telemetry - Prometheus",toc:"menu",filename:"docs/en-US/handbook/telemetry-prometheus/index.md",lastUpdated:173254844e4,description:"This plugin is used to convert OpenTelemetry protocol (OTLP) data into Prometheus format and expose an interface for Prometheus to scrape metric data."},d5=[{id:"telemetry---prometheus",depth:1,title:"Telemetry - Prometheus"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"environment-variables",depth:3,title:"Environment Variables"},{id:"telemetry_enabled",depth:4,title:"TELEMETRY_ENABLED"},{id:"telemetry_metric_reader",depth:4,title:"TELEMETRY_METRIC_READER"},{id:"telemetry_prometheus_server",depth:4,title:"TELEMETRY_PROMETHEUS_SERVER"},{id:"telemetry_prometheus_port",depth:4,title:"TELEMETRY_PROMETHEUS_PORT"},{id:"related-documents",depth:4,title:"Related Documents"},{id:"prometheus-configuration",depth:3,title:"Prometheus Configuration"}],i5=[{value:"This plugin is used to convert OpenTelemetry protocol (OTLP) data into Prometheus format and expose an interface for Prometheus to scrape metric data.",paraId:0,tocIndex:1},{value:"This is a commercial plugin. Please see ",paraId:1},{value:"NocoBase commercial version",paraId:1},{value:" for details.",paraId:1},{value:"Configure the environment variables before starting NocoBase.",paraId:2,tocIndex:4},{value:"Set to ",paraId:3,tocIndex:5},{value:"on",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:`TELEMETRY_ENABLED=on `,paraId:4,tocIndex:5},{value:"Add ",paraId:5,tocIndex:6},{value:"prometheus",paraId:5,tocIndex:6},{value:".",paraId:5,tocIndex:6},{value:`TELEMETRY_METRIC_READER=prometheus `,paraId:6,tocIndex:6},{value:"Whether to start a separate server.",paraId:7,tocIndex:7},{value:"off",paraId:8,tocIndex:7},{value:". The scraping interface is ",paraId:8,tocIndex:7},{value:"/api/prometheus:metrics",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"on",paraId:8,tocIndex:7},{value:". The scraping interface is ",paraId:8,tocIndex:7},{value:":port/metrics",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"The port for the separate server when activated. Default ",paraId:9,tocIndex:8},{value:"9464",paraId:9,tocIndex:8},{value:".",paraId:9,tocIndex:8},{value:"Environment Variables",paraId:10,tocIndex:9},{value:"Separate server",paraId:11,tocIndex:10},{value:`scrape_configs: - job_name: 'nocobase' @@ -8922,12 +8974,12 @@ The syntax for custom mask rules is as follows:`,paraId:5,tocIndex:7},{value:"*" metrics_path: '/api/prometheus:metrics' static_configs: - targets: ['localhost:13001'] -`,paraId:14,tocIndex:10}],lS={},cS={title:"Form Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/data-blocks/form.md",lastUpdated:1732240239e3,description:"The form block is an essential block for building data input and editing interfaces. It is highly customizable and uses corresponding components based on the data model to display the required fields. Through linkage rules, the form block can dynamically display fields. Additionally, it can be combined with workflows to achieve automated process triggering and data processing, further enhancing work efficiency or implementing logical orchestration."},sS=[{id:"form-block",depth:1,title:"Form Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"linkage-rules",depth:3,title:"Linkage Rules"},{id:"form-data-templates-supports-form-for-adding-new-data-only",depth:3,title:"Form Data Templates (Supports Form for Adding New Data Only)"},{id:"synchronize-from-form-fields",depth:4,title:"Synchronize From Form Fields"},{id:"the-following-fields-data-will-be-filtered-out-for-the-selected-data-template-record",depth:4,title:"The following fields' data will be filtered out for the selected data template record:"},{id:"for-association-fields",depth:4,title:"For Association Fields"},{id:"example-scenarios",depth:4,title:"Example Scenarios"},{id:"configure-fields",depth:2,title:"Configure Fields"},{id:"fields-in-current-collection",depth:3,title:"Fields in Current Collection"},{id:"fields-in-related-collections",depth:3,title:"Fields in Related Collections"},{id:"configure-actions",depth:2,title:"Configure Actions"}],uS=[{value:"The form block is an essential block for building data input and editing interfaces. It is highly customizable and uses corresponding components based on the data model to display the required fields. Through linkage rules, the form block can dynamically display fields. Additionally, it can be combined with workflows to achieve automated process triggering and data processing, further enhancing work efficiency or implementing logical orchestration.",paraId:0,tocIndex:1},{value:` +`,paraId:14,tocIndex:10}],l5={},c5={title:"Form Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/data-blocks/form.md",lastUpdated:173254844e4,description:"The form block is an essential block for building data input and editing interfaces. It is highly customizable and uses corresponding components based on the data model to display the required fields. Through linkage rules, the form block can dynamically display fields. Additionally, it can be combined with workflows to achieve automated process triggering and data processing, further enhancing work efficiency or implementing logical orchestration."},s5=[{id:"form-block",depth:1,title:"Form Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"linkage-rules",depth:3,title:"Linkage Rules"},{id:"form-data-templates-supports-form-for-adding-new-data-only",depth:3,title:"Form Data Templates (Supports Form for Adding New Data Only)"},{id:"synchronize-from-form-fields",depth:4,title:"Synchronize From Form Fields"},{id:"the-following-fields-data-will-be-filtered-out-for-the-selected-data-template-record",depth:4,title:"The following fields' data will be filtered out for the selected data template record:"},{id:"for-association-fields",depth:4,title:"For Association Fields"},{id:"example-scenarios",depth:4,title:"Example Scenarios"},{id:"configure-fields",depth:2,title:"Configure Fields"},{id:"fields-in-current-collection",depth:3,title:"Fields in Current Collection"},{id:"fields-in-related-collections",depth:3,title:"Fields in Related Collections"},{id:"configure-actions",depth:2,title:"Configure Actions"}],u5=[{value:"The form block is an essential block for building data input and editing interfaces. It is highly customizable and uses corresponding components based on the data model to display the required fields. Through linkage rules, the form block can dynamically display fields. Additionally, it can be combined with workflows to achieve automated process triggering and data processing, further enhancing work efficiency or implementing logical orchestration.",paraId:0,tocIndex:1},{value:` `,paraId:1},{value:"Control form field behavior through linkage rules.",paraId:2,tocIndex:4},{value:"For more information, refer to ",paraId:3,tocIndex:4},{value:"Linkage Rules",paraId:4,tocIndex:4},{value:".",paraId:3,tocIndex:4},{value:"The purpose of the form data templates is to simplify the data entry process and improve efficiency. By filtering out a single piece or a group of records as a template from the data range, the selected target data template will be populated as the default values in the form.",paraId:5,tocIndex:5},{value:"Filter out a single piece or a group of records as template data.",paraId:6,tocIndex:5},{value:"Select the title field to identify the template data.",paraId:6,tocIndex:5},{value:"Check the template fields, and the selected fields will be automatically populated into the form.",paraId:6,tocIndex:5},{value:"Automatically parse the configured fields in the current form block as template fields.",paraId:7,tocIndex:6},{value:"If there are subsequent modifications to the form block fields (such as adjustments to association field components), you can reopen the template configuration and click the sync form button to ensure consistency between the form and the template.",paraId:7,tocIndex:6},{value:"Primary Key",paraId:8,tocIndex:7},{value:"Foreign Key",paraId:8,tocIndex:7},{value:"Fields disallowing duplicates",paraId:8,tocIndex:7},{value:"Sort fields",paraId:8,tocIndex:7},{value:"Sequence fields",paraId:8,tocIndex:7},{value:"Password",paraId:8,tocIndex:7},{value:"Created by",paraId:8,tocIndex:7},{value:"Created at",paraId:8,tocIndex:7},{value:"Last updated by",paraId:8,tocIndex:7},{value:"Last updated at",paraId:8,tocIndex:7},{value:"Regular fields and hasOne and hasMany relationship fields are copied.",paraId:9,tocIndex:8},{value:"belongsTo and belongsToMany relationship fields are referenced, and references may become copies. For example, after changing from select to sub-form, the relationship changes from reference to copy (after becoming a copy, all fields are optional).",paraId:9,tocIndex:8},{value:"Scenario Description: An e-commerce platform needs to frequently add new products, and these new products are similar or identical to existing products in many attributes.",paraId:10,tocIndex:9},{value:"Solution: Select an existing product as a template and use its attribute information as the form data template. When creating a new product, users can choose to apply this template, thus quickly copying the attribute information of the template product to the new product, improving the efficiency of entering new products.",paraId:11,tocIndex:9},{value:"Create a product promotion template",paraId:12,tocIndex:9},{value:"Create promotional products quickly",paraId:13,tocIndex:9},{value:` `,paraId:1},{value:"Edit Block Title",paraId:14,tocIndex:9},{value:"Save as Block Template",paraId:15,tocIndex:9},{value:"Fields in related tables are read-only in the form and are typically used in conjunction with relationship fields to display multiple field values of related data.",paraId:16,tocIndex:12},{value:` - `,paraId:1},{value:"Form field configuration options can be found in ",paraId:17,tocIndex:12},{value:"Form Fields",paraId:18,tocIndex:12},{value:".",paraId:17,tocIndex:12},{value:"Submit",paraId:19,tocIndex:13},{value:"Save Data",paraId:20,tocIndex:13},{value:"Custom Request",paraId:21,tocIndex:13},{value:"Trigger workflow",paraId:22,tocIndex:13}],pS={},IS={title:"List Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/data-blocks/list.md",lastUpdated:1732240239e3,description:"The list block displays data in a list format, suitable for scenarios such as task lists, news updates, product information, and other data presentation needs."},_S=[{id:"list-block",depth:1,title:"List Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-a-block",depth:2,title:"Adding a Block"},{id:"block-configuration-options",depth:2,title:"Block Configuration Options"},{id:"setting-data-scope",depth:3,title:"Setting Data Scope"},{id:"setting-sorting-rules",depth:3,title:"Setting Sorting Rules"},{id:"setting-data-loading-method",depth:3,title:"Setting Data Loading Method"},{id:"setting-block-height",depth:3,title:"Setting Block Height"},{id:"configuring-fields",depth:2,title:"Configuring Fields"},{id:"main-table-fields",depth:3,title:"Main Table Fields"},{id:"related-table-fields",depth:3,title:"Related Table Fields"},{id:"configuring-actions",depth:2,title:"Configuring Actions"},{id:"global-actions",depth:3,title:"Global Actions"},{id:"row-actions",depth:3,title:"Row Actions"}],vS=[{value:"The list block displays data in a list format, suitable for scenarios such as task lists, news updates, product information, and other data presentation needs.",paraId:0,tocIndex:1},{value:` + `,paraId:1},{value:"Form field configuration options can be found in ",paraId:17,tocIndex:12},{value:"Form Fields",paraId:18,tocIndex:12},{value:".",paraId:17,tocIndex:12},{value:"Submit",paraId:19,tocIndex:13},{value:"Save Data",paraId:20,tocIndex:13},{value:"Custom Request",paraId:21,tocIndex:13},{value:"Trigger workflow",paraId:22,tocIndex:13}],p5={},I5={title:"List Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/data-blocks/list.md",lastUpdated:173254844e4,description:"The list block displays data in a list format, suitable for scenarios such as task lists, news updates, product information, and other data presentation needs."},_5=[{id:"list-block",depth:1,title:"List Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-a-block",depth:2,title:"Adding a Block"},{id:"block-configuration-options",depth:2,title:"Block Configuration Options"},{id:"setting-data-scope",depth:3,title:"Setting Data Scope"},{id:"setting-sorting-rules",depth:3,title:"Setting Sorting Rules"},{id:"setting-data-loading-method",depth:3,title:"Setting Data Loading Method"},{id:"setting-block-height",depth:3,title:"Setting Block Height"},{id:"configuring-fields",depth:2,title:"Configuring Fields"},{id:"main-table-fields",depth:3,title:"Main Table Fields"},{id:"related-table-fields",depth:3,title:"Related Table Fields"},{id:"configuring-actions",depth:2,title:"Configuring Actions"},{id:"global-actions",depth:3,title:"Global Actions"},{id:"row-actions",depth:3,title:"Row Actions"}],v5=[{value:"The list block displays data in a list format, suitable for scenarios such as task lists, news updates, product information, and other data presentation needs.",paraId:0,tocIndex:1},{value:` `,paraId:1},{value:'As shown in the image: The default filter selects orders with a "Refunded" status.',paraId:2,tocIndex:4},{value:"For more details, refer to ",paraId:3,tocIndex:4},{value:"Setting Data Scope",paraId:4,tocIndex:4},{value:".",paraId:3,tocIndex:4},{value:"As shown in the image: Orders are sorted in descending order by order amount.",paraId:5,tocIndex:5},{value:"For more details, refer to ",paraId:6,tocIndex:5},{value:"Setting Sorting Rules",paraId:7,tocIndex:5},{value:".",paraId:6,tocIndex:5},{value:"Typically used in conjunction with the filter block to load data only when filtered.",paraId:8,tocIndex:6},{value:` - `,paraId:1},{value:"For more details, refer to ",paraId:9,tocIndex:6},{value:"Setting Data Loading Method",paraId:10,tocIndex:6},{value:".",paraId:9,tocIndex:6},{value:'Example: Set the height of the order list block to "Full Height" mode.',paraId:11,tocIndex:7},{value:"For more details, refer to ",paraId:12,tocIndex:7},{value:"Block Height",paraId:13,tocIndex:7},{value:".",paraId:12,tocIndex:7},{value:"Edit Block Title",paraId:14,tocIndex:7},{value:"Save as Block Template",paraId:15,tocIndex:7},{value:"For more details on configuring list fields, refer to ",paraId:16,tocIndex:10},{value:"Detail Fields",paraId:17,tocIndex:10},{value:".",paraId:16,tocIndex:10},{value:"Filter",paraId:18,tocIndex:12},{value:"Add New",paraId:19,tocIndex:12},{value:"Refresh",paraId:20,tocIndex:12},{value:"Import",paraId:21,tocIndex:12},{value:"Export",paraId:22,tocIndex:12},{value:"View",paraId:23,tocIndex:13},{value:"Edit",paraId:24,tocIndex:13},{value:"Delete",paraId:25,tocIndex:13},{value:"Pop-Up",paraId:26,tocIndex:13},{value:"Update Record",paraId:27,tocIndex:13},{value:"Custom Request",paraId:28,tocIndex:13}],mS={},hS={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow/development/index.md",lastUpdated:1732240239e3,description:"While the built-in features of workflows are robust, they may not cover every possible scenario. For instance, the default node types might not accommodate all the operations required in diverse business contexts. To address these gaps, we offer an extension framework for workflows, enabling you to expand trigger types and node functionalities. When the built-in features fall short, these extensions allow you to customize solutions using low-code techniques."},fS=[{id:"overview",depth:1,title:"Overview"},{id:"additional-resources",depth:2,title:"Additional Resources"}],xS=[{value:"While the built-in features of workflows are robust, they may not cover every possible scenario. For instance, the default node types might not accommodate all the operations required in diverse business contexts. To address these gaps, we offer an extension framework for workflows, enabling you to expand trigger types and node functionalities. When the built-in features fall short, these extensions allow you to customize solutions using low-code techniques.",paraId:0,tocIndex:0},{value:"These extensions are categorized into two main areas:",paraId:1,tocIndex:0},{value:"Extend Trigger Types",paraId:2,tocIndex:0},{value:"Extend Node Types",paraId:3,tocIndex:0},{value:"API Reference",paraId:4,tocIndex:1}],gS={},bS={title:"Calculation",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/calculation.md",lastUpdated:1732240239e3,description:"Although the calculation node does not control the flow of the process, it is an important function in the workflow. The calculation node can evaluate an expression, and the result will be stored in the corresponding node's result for later use by other nodes. It is a tool for calculating, processing, and transforming data. To some extent, it can replace the functionality of calling a function to compute a value in programming languages and assigning it to a variable."},yS=[{id:"calculation",depth:1,title:"Calculation"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"calculation-engine",depth:3,title:"Calculation Engine"},{id:"expression",depth:3,title:"Expression"},{id:"example",depth:2,title:"Example"},{id:"calculating-total-order-price",depth:3,title:"Calculating Total Order Price"}],wS=[{value:"Although the calculation node does not control the flow of the process, it is an important function in the workflow. The calculation node can evaluate an expression, and the result will be stored in the corresponding node's result for later use by other nodes. It is a tool for calculating, processing, and transforming data. To some extent, it can replace the functionality of calling a function to compute a value in programming languages and assigning it to a variable.",paraId:0,tocIndex:0},{value:'In the workflow configuration UI, click the plus ("+") button in the flow to add a "Calculation" node:',paraId:1,tocIndex:1},{value:"The calculation engine specifies the syntax supported of the expression. Currently supported calculation engines include ",paraId:2,tocIndex:3},{value:"Math.js",paraId:2,tocIndex:3},{value:" and ",paraId:2,tocIndex:3},{value:"Formula.js",paraId:2,tocIndex:3},{value:", each of which has built-in support for a large number of common functions and methods for data manipulation. Specific usage can be found in their official documentation.",paraId:2,tocIndex:3},{value:"It's important to note that there is a difference in array indexing between the them. In Math.js, indexing starts from ",paraId:3},{value:"1",paraId:3},{value:", while in Formula.js, it starts from ",paraId:3},{value:"0",paraId:3},{value:".",paraId:3},{value:'Additionally, if simple string concatenation is needed, the "String Template" can be used directly. This engine will replace variables in the expression with their corresponding values and then return the concatenated string.',paraId:4},{value:"The expression is a string representation of a calculation formula, composed of variables, constants, operators, and supported functions. Variables from the workflow context can be used, such as results from preceding nodes of the calculation node or scope variables from loops.",paraId:5,tocIndex:4},{value:"If the expression input does not comply with the syntax, an error will be prompted in the node configuration. If a variable does not exist during execution or its type does not match, or if an undefined function is used, the calculation node will terminate prematurely with an error status.",paraId:6,tocIndex:4},{value:"Typically, an order may contain multiple items, each with different prices and quantities. The total price of the order requires calculating the sum of the products of prices and quantities for all items. You can use a calculation node to compute the total order price after loading the list of order details (a many-to-many relationship dataset):",paraId:7,tocIndex:6},{value:"Where the ",paraId:8,tocIndex:6},{value:"SUMPRODUCT",paraId:8,tocIndex:6},{value:" function from Formula.js calculates the sum of the products of two arrays of the same length, and then summing them up yields the total order price.",paraId:8,tocIndex:6}],kS={},SS={title:"Aggregate",toc:"menu",filename:"docs/en-US/handbook/workflow/plugins/aggregate.md",lastUpdated:1732240239e3,description:"This plugin is designed to execute aggregate function queries on specific data within a table that meets defined conditions, returning the relevant statistical outcomes. It is particularly useful for generating statistical data for reports."},US=[{id:"aggregate",depth:1,title:"Aggregate"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"aggregate-functions",depth:4,title:"Aggregate Functions"},{id:"target-type",depth:4,title:"Target Type"},{id:"distinct",depth:4,title:"Distinct"},{id:"filter-conditions",depth:4,title:"Filter Conditions"},{id:"example",depth:3,title:"Example"}],PS=[{value:"This plugin is designed to execute aggregate function queries on specific data within a table that meets defined conditions, returning the relevant statistical outcomes. It is particularly useful for generating statistical data for reports.",paraId:0},{value:"The node operates using database aggregate functions and currently supports querying a single field within a single data table. The resulting statistics are stored within the node\u2019s output, making them available for subsequent nodes in the workflow.",paraId:1},{value:"This is a built-in plugin, so no installation steps are required.",paraId:2,tocIndex:1},{value:'In the workflow configuration interface, click the plus ("+") button within the process flow to add an "Aggregate Query" node:',paraId:3,tocIndex:3},{value:"This plugin supports five SQL aggregate functions: ",paraId:4,tocIndex:5},{value:"COUNT",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"SUM",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"AVG",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"MIN",paraId:4,tocIndex:5},{value:", and ",paraId:4,tocIndex:5},{value:"MAX",paraId:4,tocIndex:5},{value:". You can select any one of these functions to perform the aggregate query on your data.",paraId:4,tocIndex:5},{value:"There are two methods for selecting the target of the aggregate query. The first is to directly select the target data table and one of its fields. The second is to choose a related data table and field from the existing data objects in the workflow context to perform the aggregate query.",paraId:5,tocIndex:6},{value:"This feature corresponds to the ",paraId:6,tocIndex:7},{value:"DISTINCT",paraId:6,tocIndex:7},{value:" keyword in SQL. The distinct field must be the same as the selected data table field, and currently, different fields cannot be selected for the distinct and target fields.",paraId:6,tocIndex:7},{value:"You can apply filter conditions similar to those in a standard data table query, using the workflow\u2019s context variables.",paraId:7,tocIndex:8},{value:`The aggregate target "Collection Table Data" is quite intuitive, so let's illustrate the usage of the aggregate target as "Related Collection Table Data" with the example of "counting the total number of articles in a category after adding a new article to that category."`,paraId:8,tocIndex:9},{value:'First, create two data tables: "Posts" and "Categories." The "Posts" collection includes a many-to-one relationship field pointing to the "Categories" collection, and a reverse relationship field that allows one category to contain multiple articles:',paraId:9,tocIndex:9},{value:"Field Name",paraId:10,tocIndex:9},{value:"Type",paraId:10,tocIndex:9},{value:"Title",paraId:10,tocIndex:9},{value:"Single Line Text",paraId:10,tocIndex:9},{value:"Category",paraId:10,tocIndex:9},{value:"Many-to-One (Category)",paraId:10,tocIndex:9},{value:"Field Name",paraId:11,tocIndex:9},{value:"Type",paraId:11,tocIndex:9},{value:"Category Name",paraId:11,tocIndex:9},{value:"Single Line Text",paraId:11,tocIndex:9},{value:"Posts",paraId:11,tocIndex:9},{value:"One-to-Many (Articles)",paraId:11,tocIndex:9},{value:'Next, create a workflow triggered by an event in the data table, specifically when new data is added to the "Articles" table.',paraId:12,tocIndex:9},{value:"Then, add an aggregate query node with the following configuration:",paraId:13,tocIndex:9},{value:"Once the workflow is triggered, the aggregate query node will calculate the total number of articles within the category of the newly added article and save this count as the node\u2019s output.",paraId:14,tocIndex:9},{value:'If you need to access related data in a collection table event trigger, ensure you configure the relevant fields for "Preload associations" in the trigger; otherwise, these fields won\u2019t be selectable.',paraId:15}],TS={},CS={title:"Approval",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/approval.md",lastUpdated:1732240239e3,description:'To set up an approval workflow, start by selecting the "Approval" type during the workflow creation process:'},AS=[{id:"approval",depth:1,title:"Approval"},{id:"creating-a-workflow",depth:2,title:"Creating a Workflow"},{id:"binding-data-tables",depth:2,title:"Binding Data Tables"},{id:"where-to-initiate-an-approval",depth:2,title:"Where to Initiate an Approval"},{id:"withdrawn",depth:2,title:"Withdrawn"},{id:"configuring-the-form-interface-for-initiating-approvals",depth:2,title:"Configuring the Form Interface for Initiating Approvals"},{id:"related-content",depth:2,title:"Related Content"}],qS=[{value:'To set up an approval workflow, start by selecting the "Approval" type during the workflow creation process:',paraId:0,tocIndex:1},{value:"Next, in the workflow configuration interface, click on the trigger to open a popup window for additional configuration options.",paraId:1,tocIndex:1},{value:"NocoBase\u2019s approval plugin is designed with flexibility in mind, allowing it to be integrated with any custom data collection. This means there\u2019s no need to repeatedly configure the data model for approval processes. Instead, you can reuse existing data collections. When configuring the trigger, the first step is to select a data table to determine which data entries will trigger the workflow upon creation or update:",paraId:2,tocIndex:2},{value:"After selecting the data table, bind the workflow to the submit button in the form used for creating or editing data within the chosen table:",paraId:3,tocIndex:2},{value:"Once the form is submitted, the corresponding approval workflow will be triggered. The submitted data will be saved in the specified data table and also snapshotted within the approval flow for future review by approvers.",paraId:4,tocIndex:2},{value:"There are two locations within the user interface where approvals can be initiated:",paraId:5,tocIndex:3},{value:"Through the submission of a data collection form that has been bound to an approval process, typically used for initiating a single approval process.",paraId:6,tocIndex:3},{value:"Via the Approval block, which allows for the centralized initiation of global processes.",paraId:6,tocIndex:3},{value:'By selecting "Initiate and approve in both data blocks and global approval blocks" the process will appear in the \u201CInitiations\u201D dropdown menu within the Approval Center block, enabling users to manage various approvals from a central location.',paraId:7,tocIndex:3},{value:'If the approval process permits the initiator to withdraw the request, select the "Allowed to be withdrawn" option:',paraId:8,tocIndex:4},{value:"When this option is selected, the initiator can withdraw the approval request at any time before any approver has processed it. However, once any subsequent approval nodes have been processed, the approval can no longer be withdrawn.",paraId:9,tocIndex:4},{value:"Finally, you\u2019ll need to configure the form interface for the initiator. This interface is used when initiating an approval from the Approval Center block or when re-initiating after a withdrawal. Click the configuration button to open a popup window:",paraId:10,tocIndex:5},{value:"You can add a form based on the bound data table or include explanatory text (Markdown) to guide the initiator. A form is required; otherwise, the initiator will not be able to proceed upon entering this interface.",paraId:11,tocIndex:5},{value:"After adding the form block, you can configure the corresponding data table's field components and arrange them as needed to organize the content to be filled out, similar to the regular form configuration interface:",paraId:12,tocIndex:5},{value:"In addition to the submit button, you can also add a \u201CSave Draft\u201D button to support the temporary storage of data during the process:",paraId:13,tocIndex:5},{value:"Except for trigger configuration, there are also some related contents about approval that can be further understood through the ",paraId:14,tocIndex:6},{value:"plugin documentation",paraId:15,tocIndex:6},{value:".",paraId:14,tocIndex:6}],ES={},DS={title:"Schedule event",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/schedule.md",lastUpdated:1732240239e3,description:"Scheduled tasks are events triggered based on time conditions, including two modes:"},OS=[{id:"schedule-event",depth:1,title:"Schedule event"},{id:"basic-usage",depth:2,title:"Basic Usage"},{id:"creating-schedule-event",depth:3,title:"Creating Schedule event"},{id:"custom-time-mode",depth:3,title:"Custom Time Mode"},{id:"time-field-of-collection-mode",depth:3,title:"Time Field of Collection Mode"},{id:"related-tips",depth:2,title:"Related Tips"},{id:"scheduled-tasks-in-application-not-started",depth:3,title:"Scheduled Tasks in Application Not Started"},{id:"repeat-count",depth:3,title:"Repeat Count"},{id:"difference-between-interval-time-and-advanced-mode-in-repeat-rules",depth:3,title:"Difference Between Interval Time and Advanced Mode in Repeat Rules"},{id:"example",depth:2,title:"Example"},{id:"custom-time-mode-1",depth:3,title:"Custom Time Mode"},{id:"time-field-of-collection-mode-1",depth:3,title:"Time Field of Collection Mode"}],RS=[{value:"Scheduled tasks are events triggered based on time conditions, including two modes:",paraId:0,tocIndex:0},{value:"Custom Time: Regularly scheduled triggers similar to cron based on system time.",paraId:1,tocIndex:0},{value:"Time field of collection: Triggered according to the value of the time field in the collection.",paraId:1,tocIndex:0},{value:"When the system reaches the time (accurate to seconds) that meets the configured trigger conditions, the corresponding workflow will be triggered.",paraId:2,tocIndex:0},{value:'Select the "Schedule event" type when creating a workflow in the workflow list:',paraId:3,tocIndex:2},{value:"For the regular mode, start by configuring the start time to any point in time (accurate to seconds). The start time can be set to a future time or a past time. When set to a past time, it will check whether it is time based on the configured repeat condition. If no repeat condition is configured, the workflow will not be triggered if the start time is in the past.",paraId:4,tocIndex:3},{value:"There are two ways to configure repeat rules:",paraId:5,tocIndex:3},{value:"Interval Time: Trigger every fixed interval after the start time, such as every hour, every 30 minutes, etc.",paraId:6,tocIndex:3},{value:"Advanced Mode: Using cron rules, it can be configured to occur at fixed rule of dates and times.",paraId:6,tocIndex:3},{value:"After configuring the repeat rule, you can also configure the end condition, which can end at a fixed point in time or by the number of times executed.",paraId:7,tocIndex:3},{value:"Using the time field of the collection to determine the start time is a trigger mode that combines ordinary scheduled tasks with the collection time field. Using this mode can simplify some nodes in specific processes and make the configuration more intuitive. For example, to change the status of orders that have not been paid for more than 30 minutes to canceled, you can simply configure a scheduled task in the collection time field mode, select the start time as 30 minutes after the order created time field.",paraId:8,tocIndex:4},{value:"If the configured time conditions are met but the entire NocoBase application service is in a stopped or shutdown state, the scheduled tasks that should be triggered at the corresponding time point will be missed, and after the service restarts, missed tasks will not be triggered again. So, it may be necessary to consider handling corresponding situations or backup measures when using it.",paraId:9,tocIndex:6},{value:"When the repeat count is configured in the end condition, it calculates the total number of executions of the same workflow including all versions. For example, if a scheduled task has been executed 10 times in version 1, and the repeat count is also set to 10 times, the workflow will no longer be triggered. Even if it is copied to a new version, it will not be triggered unless the repeat count is modified to a number greater than 10. However, if it is duplicated to a new workflow, the number of executions will be recalculated from 0. Without modifying the relevant configuration, the new workflow can be triggered 10 more times.",paraId:10,tocIndex:7},{value:"The interval time in the repeat rule is relative to the time point of the previous trigger (start time), while the advanced mode triggers at fixed time points. For example, if it is configured to trigger every 30 minutes, and the last trigger is at 2021-09-01 12:01:23, the next trigger time will be 2021-09-01 12:31:23. The advanced mode, same as cron, configures rules to trigger at fixed time points, for example, it can be configured to trigger at 01 and 31 minutes past every hour.",paraId:11,tocIndex:8},{value:"Suppose we want to check orders that have not been paid for more than 30 minutes every minute and automatically change their status to canceled. We'll implement it using both modes.",paraId:12,tocIndex:9},{value:'Create a workflow based on a scheduled task, select the "Custom Time" mode in the trigger configuration, choose any time point not later than the current time as the start time, select "Every Minute" for the repeat rule, and leave the end condition blank:',paraId:13,tocIndex:10},{value:"Then, configure other nodes according to the logic of the workflow, calculating a time 30 minutes before current system time, and updating the status to canceled if unpaid which created before then:",paraId:14,tocIndex:10},{value:"After enabling the workflow, it will trigger every minute from the start time, calculate 30 minutes before now, and update the status of orders created before that time to canceled.",paraId:15,tocIndex:10},{value:'Create a workflow based on a scheduled task, select the "Collection Time Field" mode in the trigger configuration, choose the "Orders" collection, select 30 minutes after the order created time as the start time, and choose "No Repeat" for the repeat rule:',paraId:16,tocIndex:11},{value:'Then, configure other nodes according to the logic of the workflow, update orders with the ID of the triggered data and the status "Unpaid" to canceled:',paraId:17,tocIndex:11},{value:"Unlike the custom time mode, there is no need to calculate 30 minutes before, because the triggered data context in the workflow contains the corresponding data record that meet the time conditions, so you can directly update the status of the corresponding orders.",paraId:18,tocIndex:11}],MS={},LS={title:"Advanced Understanding",toc:"menu",filename:"docs/en-US/handbook/workflow-approval/advanced.md",lastUpdated:1732240239e3,description:"In the approval process, data is governed by the principle of transactional data immutability. Each submission generates a snapshot that is then tracked and circulated during the approval process. The flow of this process is as follows:"},NS=[{id:"advanced-understanding",depth:1,title:"Advanced Understanding"},{id:"snapshot-of-submitted-data-for-approval",depth:2,title:"Snapshot of Submitted Data for Approval"},{id:"approval-process-statuses",depth:2,title:"Approval Process Statuses"}],zS=[{value:"In the approval process, data is governed by the principle of transactional data immutability. Each submission generates a snapshot that is then tracked and circulated during the approval process. The flow of this process is as follows:",paraId:0,tocIndex:1},{value:'When actions such as "withdraw" or "return" are triggered within the process, the system preserves a snapshot of the data as it existed at that point within the same application document:',paraId:1,tocIndex:1},{value:"As illustrated above, every time data is withdrawn and then resubmitted, a new snapshot is saved for that particular submission process.",paraId:2,tocIndex:1},{value:"For the initiator, an application document's status field indicates the current stage of the approval process, typically reflecting the following states:",paraId:3,tocIndex:2},{value:"Status",paraId:4,tocIndex:2},{value:"Description",paraId:4,tocIndex:2},{value:"Draft",paraId:4,tocIndex:2},{value:"The applicant has temporarily saved the application form's data but has not yet officially submitted it to start the process.",paraId:4,tocIndex:2},{value:"Submitted",paraId:4,tocIndex:2},{value:"The application has been submitted and is awaiting approval. At this stage, no approver has yet processed it, and if allowed by the configuration, the initiator can still withdraw the application.",paraId:4,tocIndex:2},{value:"On going",paraId:4,tocIndex:2},{value:"The application has moved through at least one approval node, with at least one approver having submitted their decision. The initiator can no longer withdraw the application at this stage.",paraId:4,tocIndex:2},{value:"Returned",paraId:4,tocIndex:2},{value:"The application has been returned by one of the approvers, allowing the initiator to modify and resubmit it.",paraId:4,tocIndex:2},{value:"Approved",paraId:4,tocIndex:2},{value:"All approval nodes have been processed, and the application has been approved at each stage, marking the process as complete.",paraId:4,tocIndex:2},{value:"Rejected",paraId:4,tocIndex:2},{value:"The application has been rejected at one of the approval nodes, thereby terminating the process.",paraId:4,tocIndex:2},{value:"For each approval node, a record of the processing action is generated for the designated approver. Each approver\u2019s record includes a status field indicating the current state of their processing, which typically includes the following statuses:",paraId:5,tocIndex:2},{value:"Status",paraId:6,tocIndex:2},{value:"Description",paraId:6,tocIndex:2},{value:"Assigned",paraId:6,tocIndex:2},{value:"A record for the corresponding approver has been created, but since the processing rule requires serial handling, the approver must wait for the previous approver to finish before they can proceed.",paraId:6,tocIndex:2},{value:"Pending",paraId:6,tocIndex:2},{value:"The application is awaiting action from the current approver.",paraId:6,tocIndex:2},{value:"Returned",paraId:6,tocIndex:2},{value:"The current approver has returned the application.",paraId:6,tocIndex:2},{value:"Approved",paraId:6,tocIndex:2},{value:"The current approver has approved the application.",paraId:6,tocIndex:2},{value:"Rejected",paraId:6,tocIndex:2},{value:"The current approver has rejected the application.",paraId:6,tocIndex:2},{value:"Unprocessed",paraId:6,tocIndex:2},{value:"The application has reached a terminal state according to the node's processing rules after being handled by other approvers, or the workflow has become invalid, so the current approver is no longer required to take action.",paraId:6,tocIndex:2}],FS={},BS={title:"HTTP API",toc:"menu",filename:"docs/en-US/handbook/workflow-approval/http-api.md",lastUpdated:1732240239e3,description:"Approval events aren\u2019t confined to actions within the user interface; they can also be triggered through HTTP API calls."},jS=[{id:"http-api",depth:1,title:"HTTP API"}],HS=[{value:"Approval events aren\u2019t confined to actions within the user interface; they can also be triggered through HTTP API calls.",paraId:0,tocIndex:0},{value:"For approvals initiated from data blocks and approval center blocks, you can trigger them using an API call (using the creation button for the ",paraId:1,tocIndex:0},{value:"posts",paraId:1,tocIndex:0},{value:" table as an example):",paraId:1,tocIndex:0},{value:`curl -X POST -H 'Authorization: Bearer ' -H 'X-Role: ' -d \\ + `,paraId:1},{value:"For more details, refer to ",paraId:9,tocIndex:6},{value:"Setting Data Loading Method",paraId:10,tocIndex:6},{value:".",paraId:9,tocIndex:6},{value:'Example: Set the height of the order list block to "Full Height" mode.',paraId:11,tocIndex:7},{value:"For more details, refer to ",paraId:12,tocIndex:7},{value:"Block Height",paraId:13,tocIndex:7},{value:".",paraId:12,tocIndex:7},{value:"Edit Block Title",paraId:14,tocIndex:7},{value:"Save as Block Template",paraId:15,tocIndex:7},{value:"For more details on configuring list fields, refer to ",paraId:16,tocIndex:10},{value:"Detail Fields",paraId:17,tocIndex:10},{value:".",paraId:16,tocIndex:10},{value:"Filter",paraId:18,tocIndex:12},{value:"Add New",paraId:19,tocIndex:12},{value:"Refresh",paraId:20,tocIndex:12},{value:"Import",paraId:21,tocIndex:12},{value:"Export",paraId:22,tocIndex:12},{value:"View",paraId:23,tocIndex:13},{value:"Edit",paraId:24,tocIndex:13},{value:"Delete",paraId:25,tocIndex:13},{value:"Pop-Up",paraId:26,tocIndex:13},{value:"Update Record",paraId:27,tocIndex:13},{value:"Custom Request",paraId:28,tocIndex:13}],m5={},h5={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow/development/index.md",lastUpdated:173254844e4,description:"While the built-in features of workflows are robust, they may not cover every possible scenario. For instance, the default node types might not accommodate all the operations required in diverse business contexts. To address these gaps, we offer an extension framework for workflows, enabling you to expand trigger types and node functionalities. When the built-in features fall short, these extensions allow you to customize solutions using low-code techniques."},f5=[{id:"overview",depth:1,title:"Overview"},{id:"additional-resources",depth:2,title:"Additional Resources"}],x5=[{value:"While the built-in features of workflows are robust, they may not cover every possible scenario. For instance, the default node types might not accommodate all the operations required in diverse business contexts. To address these gaps, we offer an extension framework for workflows, enabling you to expand trigger types and node functionalities. When the built-in features fall short, these extensions allow you to customize solutions using low-code techniques.",paraId:0,tocIndex:0},{value:"These extensions are categorized into two main areas:",paraId:1,tocIndex:0},{value:"Extend Trigger Types",paraId:2,tocIndex:0},{value:"Extend Node Types",paraId:3,tocIndex:0},{value:"API Reference",paraId:4,tocIndex:1}],g5={},b5={title:"Calculation",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/calculation.md",lastUpdated:173254844e4,description:"Although the calculation node does not control the flow of the process, it is an important function in the workflow. The calculation node can evaluate an expression, and the result will be stored in the corresponding node's result for later use by other nodes. It is a tool for calculating, processing, and transforming data. To some extent, it can replace the functionality of calling a function to compute a value in programming languages and assigning it to a variable."},y5=[{id:"calculation",depth:1,title:"Calculation"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"calculation-engine",depth:3,title:"Calculation Engine"},{id:"expression",depth:3,title:"Expression"},{id:"example",depth:2,title:"Example"},{id:"calculating-total-order-price",depth:3,title:"Calculating Total Order Price"}],w5=[{value:"Although the calculation node does not control the flow of the process, it is an important function in the workflow. The calculation node can evaluate an expression, and the result will be stored in the corresponding node's result for later use by other nodes. It is a tool for calculating, processing, and transforming data. To some extent, it can replace the functionality of calling a function to compute a value in programming languages and assigning it to a variable.",paraId:0,tocIndex:0},{value:'In the workflow configuration UI, click the plus ("+") button in the flow to add a "Calculation" node:',paraId:1,tocIndex:1},{value:"The calculation engine specifies the syntax supported of the expression. Currently supported calculation engines include ",paraId:2,tocIndex:3},{value:"Math.js",paraId:2,tocIndex:3},{value:" and ",paraId:2,tocIndex:3},{value:"Formula.js",paraId:2,tocIndex:3},{value:", each of which has built-in support for a large number of common functions and methods for data manipulation. Specific usage can be found in their official documentation.",paraId:2,tocIndex:3},{value:"It's important to note that there is a difference in array indexing between the them. In Math.js, indexing starts from ",paraId:3},{value:"1",paraId:3},{value:", while in Formula.js, it starts from ",paraId:3},{value:"0",paraId:3},{value:".",paraId:3},{value:'Additionally, if simple string concatenation is needed, the "String Template" can be used directly. This engine will replace variables in the expression with their corresponding values and then return the concatenated string.',paraId:4},{value:"The expression is a string representation of a calculation formula, composed of variables, constants, operators, and supported functions. Variables from the workflow context can be used, such as results from preceding nodes of the calculation node or scope variables from loops.",paraId:5,tocIndex:4},{value:"If the expression input does not comply with the syntax, an error will be prompted in the node configuration. If a variable does not exist during execution or its type does not match, or if an undefined function is used, the calculation node will terminate prematurely with an error status.",paraId:6,tocIndex:4},{value:"Typically, an order may contain multiple items, each with different prices and quantities. The total price of the order requires calculating the sum of the products of prices and quantities for all items. You can use a calculation node to compute the total order price after loading the list of order details (a many-to-many relationship dataset):",paraId:7,tocIndex:6},{value:"Where the ",paraId:8,tocIndex:6},{value:"SUMPRODUCT",paraId:8,tocIndex:6},{value:" function from Formula.js calculates the sum of the products of two arrays of the same length, and then summing them up yields the total order price.",paraId:8,tocIndex:6}],k5={},S5={title:"Aggregate",toc:"menu",filename:"docs/en-US/handbook/workflow/plugins/aggregate.md",lastUpdated:173254844e4,description:"This plugin is designed to execute aggregate function queries on specific data within a table that meets defined conditions, returning the relevant statistical outcomes. It is particularly useful for generating statistical data for reports."},U5=[{id:"aggregate",depth:1,title:"Aggregate"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"aggregate-functions",depth:4,title:"Aggregate Functions"},{id:"target-type",depth:4,title:"Target Type"},{id:"distinct",depth:4,title:"Distinct"},{id:"filter-conditions",depth:4,title:"Filter Conditions"},{id:"example",depth:3,title:"Example"}],P5=[{value:"This plugin is designed to execute aggregate function queries on specific data within a table that meets defined conditions, returning the relevant statistical outcomes. It is particularly useful for generating statistical data for reports.",paraId:0},{value:"The node operates using database aggregate functions and currently supports querying a single field within a single data table. The resulting statistics are stored within the node\u2019s output, making them available for subsequent nodes in the workflow.",paraId:1},{value:"This is a built-in plugin, so no installation steps are required.",paraId:2,tocIndex:1},{value:'In the workflow configuration interface, click the plus ("+") button within the process flow to add an "Aggregate Query" node:',paraId:3,tocIndex:3},{value:"This plugin supports five SQL aggregate functions: ",paraId:4,tocIndex:5},{value:"COUNT",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"SUM",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"AVG",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"MIN",paraId:4,tocIndex:5},{value:", and ",paraId:4,tocIndex:5},{value:"MAX",paraId:4,tocIndex:5},{value:". You can select any one of these functions to perform the aggregate query on your data.",paraId:4,tocIndex:5},{value:"There are two methods for selecting the target of the aggregate query. The first is to directly select the target data table and one of its fields. The second is to choose a related data table and field from the existing data objects in the workflow context to perform the aggregate query.",paraId:5,tocIndex:6},{value:"This feature corresponds to the ",paraId:6,tocIndex:7},{value:"DISTINCT",paraId:6,tocIndex:7},{value:" keyword in SQL. The distinct field must be the same as the selected data table field, and currently, different fields cannot be selected for the distinct and target fields.",paraId:6,tocIndex:7},{value:"You can apply filter conditions similar to those in a standard data table query, using the workflow\u2019s context variables.",paraId:7,tocIndex:8},{value:`The aggregate target "Collection Table Data" is quite intuitive, so let's illustrate the usage of the aggregate target as "Related Collection Table Data" with the example of "counting the total number of articles in a category after adding a new article to that category."`,paraId:8,tocIndex:9},{value:'First, create two data tables: "Posts" and "Categories." The "Posts" collection includes a many-to-one relationship field pointing to the "Categories" collection, and a reverse relationship field that allows one category to contain multiple articles:',paraId:9,tocIndex:9},{value:"Field Name",paraId:10,tocIndex:9},{value:"Type",paraId:10,tocIndex:9},{value:"Title",paraId:10,tocIndex:9},{value:"Single Line Text",paraId:10,tocIndex:9},{value:"Category",paraId:10,tocIndex:9},{value:"Many-to-One (Category)",paraId:10,tocIndex:9},{value:"Field Name",paraId:11,tocIndex:9},{value:"Type",paraId:11,tocIndex:9},{value:"Category Name",paraId:11,tocIndex:9},{value:"Single Line Text",paraId:11,tocIndex:9},{value:"Posts",paraId:11,tocIndex:9},{value:"One-to-Many (Articles)",paraId:11,tocIndex:9},{value:'Next, create a workflow triggered by an event in the data table, specifically when new data is added to the "Articles" table.',paraId:12,tocIndex:9},{value:"Then, add an aggregate query node with the following configuration:",paraId:13,tocIndex:9},{value:"Once the workflow is triggered, the aggregate query node will calculate the total number of articles within the category of the newly added article and save this count as the node\u2019s output.",paraId:14,tocIndex:9},{value:'If you need to access related data in a collection table event trigger, ensure you configure the relevant fields for "Preload associations" in the trigger; otherwise, these fields won\u2019t be selectable.',paraId:15}],T5={},C5={title:"Approval",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/approval.md",lastUpdated:173254844e4,description:'To set up an approval workflow, start by selecting the "Approval" type during the workflow creation process:'},A5=[{id:"approval",depth:1,title:"Approval"},{id:"creating-a-workflow",depth:2,title:"Creating a Workflow"},{id:"binding-data-tables",depth:2,title:"Binding Data Tables"},{id:"where-to-initiate-an-approval",depth:2,title:"Where to Initiate an Approval"},{id:"withdrawn",depth:2,title:"Withdrawn"},{id:"configuring-the-form-interface-for-initiating-approvals",depth:2,title:"Configuring the Form Interface for Initiating Approvals"},{id:"related-content",depth:2,title:"Related Content"}],q5=[{value:'To set up an approval workflow, start by selecting the "Approval" type during the workflow creation process:',paraId:0,tocIndex:1},{value:"Next, in the workflow configuration interface, click on the trigger to open a popup window for additional configuration options.",paraId:1,tocIndex:1},{value:"NocoBase\u2019s approval plugin is designed with flexibility in mind, allowing it to be integrated with any custom data collection. This means there\u2019s no need to repeatedly configure the data model for approval processes. Instead, you can reuse existing data collections. When configuring the trigger, the first step is to select a data table to determine which data entries will trigger the workflow upon creation or update:",paraId:2,tocIndex:2},{value:"After selecting the data table, bind the workflow to the submit button in the form used for creating or editing data within the chosen table:",paraId:3,tocIndex:2},{value:"Once the form is submitted, the corresponding approval workflow will be triggered. The submitted data will be saved in the specified data table and also snapshotted within the approval flow for future review by approvers.",paraId:4,tocIndex:2},{value:"There are two locations within the user interface where approvals can be initiated:",paraId:5,tocIndex:3},{value:"Through the submission of a data collection form that has been bound to an approval process, typically used for initiating a single approval process.",paraId:6,tocIndex:3},{value:"Via the Approval block, which allows for the centralized initiation of global processes.",paraId:6,tocIndex:3},{value:'By selecting "Initiate and approve in both data blocks and global approval blocks" the process will appear in the \u201CInitiations\u201D dropdown menu within the Approval Center block, enabling users to manage various approvals from a central location.',paraId:7,tocIndex:3},{value:'If the approval process permits the initiator to withdraw the request, select the "Allowed to be withdrawn" option:',paraId:8,tocIndex:4},{value:"When this option is selected, the initiator can withdraw the approval request at any time before any approver has processed it. However, once any subsequent approval nodes have been processed, the approval can no longer be withdrawn.",paraId:9,tocIndex:4},{value:"Finally, you\u2019ll need to configure the form interface for the initiator. This interface is used when initiating an approval from the Approval Center block or when re-initiating after a withdrawal. Click the configuration button to open a popup window:",paraId:10,tocIndex:5},{value:"You can add a form based on the bound data table or include explanatory text (Markdown) to guide the initiator. A form is required; otherwise, the initiator will not be able to proceed upon entering this interface.",paraId:11,tocIndex:5},{value:"After adding the form block, you can configure the corresponding data table's field components and arrange them as needed to organize the content to be filled out, similar to the regular form configuration interface:",paraId:12,tocIndex:5},{value:"In addition to the submit button, you can also add a \u201CSave Draft\u201D button to support the temporary storage of data during the process:",paraId:13,tocIndex:5},{value:"Except for trigger configuration, there are also some related contents about approval that can be further understood through the ",paraId:14,tocIndex:6},{value:"plugin documentation",paraId:15,tocIndex:6},{value:".",paraId:14,tocIndex:6}],E5={},D5={title:"Schedule event",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/schedule.md",lastUpdated:173254844e4,description:"Scheduled tasks are events triggered based on time conditions, including two modes:"},O5=[{id:"schedule-event",depth:1,title:"Schedule event"},{id:"basic-usage",depth:2,title:"Basic Usage"},{id:"creating-schedule-event",depth:3,title:"Creating Schedule event"},{id:"custom-time-mode",depth:3,title:"Custom Time Mode"},{id:"time-field-of-collection-mode",depth:3,title:"Time Field of Collection Mode"},{id:"related-tips",depth:2,title:"Related Tips"},{id:"scheduled-tasks-in-application-not-started",depth:3,title:"Scheduled Tasks in Application Not Started"},{id:"repeat-count",depth:3,title:"Repeat Count"},{id:"difference-between-interval-time-and-advanced-mode-in-repeat-rules",depth:3,title:"Difference Between Interval Time and Advanced Mode in Repeat Rules"},{id:"example",depth:2,title:"Example"},{id:"custom-time-mode-1",depth:3,title:"Custom Time Mode"},{id:"time-field-of-collection-mode-1",depth:3,title:"Time Field of Collection Mode"}],R5=[{value:"Scheduled tasks are events triggered based on time conditions, including two modes:",paraId:0,tocIndex:0},{value:"Custom Time: Regularly scheduled triggers similar to cron based on system time.",paraId:1,tocIndex:0},{value:"Time field of collection: Triggered according to the value of the time field in the collection.",paraId:1,tocIndex:0},{value:"When the system reaches the time (accurate to seconds) that meets the configured trigger conditions, the corresponding workflow will be triggered.",paraId:2,tocIndex:0},{value:'Select the "Schedule event" type when creating a workflow in the workflow list:',paraId:3,tocIndex:2},{value:"For the regular mode, start by configuring the start time to any point in time (accurate to seconds). The start time can be set to a future time or a past time. When set to a past time, it will check whether it is time based on the configured repeat condition. If no repeat condition is configured, the workflow will not be triggered if the start time is in the past.",paraId:4,tocIndex:3},{value:"There are two ways to configure repeat rules:",paraId:5,tocIndex:3},{value:"Interval Time: Trigger every fixed interval after the start time, such as every hour, every 30 minutes, etc.",paraId:6,tocIndex:3},{value:"Advanced Mode: Using cron rules, it can be configured to occur at fixed rule of dates and times.",paraId:6,tocIndex:3},{value:"After configuring the repeat rule, you can also configure the end condition, which can end at a fixed point in time or by the number of times executed.",paraId:7,tocIndex:3},{value:"Using the time field of the collection to determine the start time is a trigger mode that combines ordinary scheduled tasks with the collection time field. Using this mode can simplify some nodes in specific processes and make the configuration more intuitive. For example, to change the status of orders that have not been paid for more than 30 minutes to canceled, you can simply configure a scheduled task in the collection time field mode, select the start time as 30 minutes after the order created time field.",paraId:8,tocIndex:4},{value:"If the configured time conditions are met but the entire NocoBase application service is in a stopped or shutdown state, the scheduled tasks that should be triggered at the corresponding time point will be missed, and after the service restarts, missed tasks will not be triggered again. So, it may be necessary to consider handling corresponding situations or backup measures when using it.",paraId:9,tocIndex:6},{value:"When the repeat count is configured in the end condition, it calculates the total number of executions of the same workflow including all versions. For example, if a scheduled task has been executed 10 times in version 1, and the repeat count is also set to 10 times, the workflow will no longer be triggered. Even if it is copied to a new version, it will not be triggered unless the repeat count is modified to a number greater than 10. However, if it is duplicated to a new workflow, the number of executions will be recalculated from 0. Without modifying the relevant configuration, the new workflow can be triggered 10 more times.",paraId:10,tocIndex:7},{value:"The interval time in the repeat rule is relative to the time point of the previous trigger (start time), while the advanced mode triggers at fixed time points. For example, if it is configured to trigger every 30 minutes, and the last trigger is at 2021-09-01 12:01:23, the next trigger time will be 2021-09-01 12:31:23. The advanced mode, same as cron, configures rules to trigger at fixed time points, for example, it can be configured to trigger at 01 and 31 minutes past every hour.",paraId:11,tocIndex:8},{value:"Suppose we want to check orders that have not been paid for more than 30 minutes every minute and automatically change their status to canceled. We'll implement it using both modes.",paraId:12,tocIndex:9},{value:'Create a workflow based on a scheduled task, select the "Custom Time" mode in the trigger configuration, choose any time point not later than the current time as the start time, select "Every Minute" for the repeat rule, and leave the end condition blank:',paraId:13,tocIndex:10},{value:"Then, configure other nodes according to the logic of the workflow, calculating a time 30 minutes before current system time, and updating the status to canceled if unpaid which created before then:",paraId:14,tocIndex:10},{value:"After enabling the workflow, it will trigger every minute from the start time, calculate 30 minutes before now, and update the status of orders created before that time to canceled.",paraId:15,tocIndex:10},{value:'Create a workflow based on a scheduled task, select the "Collection Time Field" mode in the trigger configuration, choose the "Orders" collection, select 30 minutes after the order created time as the start time, and choose "No Repeat" for the repeat rule:',paraId:16,tocIndex:11},{value:'Then, configure other nodes according to the logic of the workflow, update orders with the ID of the triggered data and the status "Unpaid" to canceled:',paraId:17,tocIndex:11},{value:"Unlike the custom time mode, there is no need to calculate 30 minutes before, because the triggered data context in the workflow contains the corresponding data record that meet the time conditions, so you can directly update the status of the corresponding orders.",paraId:18,tocIndex:11}],M5={},L5={title:"Advanced Understanding",toc:"menu",filename:"docs/en-US/handbook/workflow-approval/advanced.md",lastUpdated:173254844e4,description:"In the approval process, data is governed by the principle of transactional data immutability. Each submission generates a snapshot that is then tracked and circulated during the approval process. The flow of this process is as follows:"},N5=[{id:"advanced-understanding",depth:1,title:"Advanced Understanding"},{id:"snapshot-of-submitted-data-for-approval",depth:2,title:"Snapshot of Submitted Data for Approval"},{id:"approval-process-statuses",depth:2,title:"Approval Process Statuses"}],z5=[{value:"In the approval process, data is governed by the principle of transactional data immutability. Each submission generates a snapshot that is then tracked and circulated during the approval process. The flow of this process is as follows:",paraId:0,tocIndex:1},{value:'When actions such as "withdraw" or "return" are triggered within the process, the system preserves a snapshot of the data as it existed at that point within the same application document:',paraId:1,tocIndex:1},{value:"As illustrated above, every time data is withdrawn and then resubmitted, a new snapshot is saved for that particular submission process.",paraId:2,tocIndex:1},{value:"For the initiator, an application document's status field indicates the current stage of the approval process, typically reflecting the following states:",paraId:3,tocIndex:2},{value:"Status",paraId:4,tocIndex:2},{value:"Description",paraId:4,tocIndex:2},{value:"Draft",paraId:4,tocIndex:2},{value:"The applicant has temporarily saved the application form's data but has not yet officially submitted it to start the process.",paraId:4,tocIndex:2},{value:"Submitted",paraId:4,tocIndex:2},{value:"The application has been submitted and is awaiting approval. At this stage, no approver has yet processed it, and if allowed by the configuration, the initiator can still withdraw the application.",paraId:4,tocIndex:2},{value:"On going",paraId:4,tocIndex:2},{value:"The application has moved through at least one approval node, with at least one approver having submitted their decision. The initiator can no longer withdraw the application at this stage.",paraId:4,tocIndex:2},{value:"Returned",paraId:4,tocIndex:2},{value:"The application has been returned by one of the approvers, allowing the initiator to modify and resubmit it.",paraId:4,tocIndex:2},{value:"Approved",paraId:4,tocIndex:2},{value:"All approval nodes have been processed, and the application has been approved at each stage, marking the process as complete.",paraId:4,tocIndex:2},{value:"Rejected",paraId:4,tocIndex:2},{value:"The application has been rejected at one of the approval nodes, thereby terminating the process.",paraId:4,tocIndex:2},{value:"For each approval node, a record of the processing action is generated for the designated approver. Each approver\u2019s record includes a status field indicating the current state of their processing, which typically includes the following statuses:",paraId:5,tocIndex:2},{value:"Status",paraId:6,tocIndex:2},{value:"Description",paraId:6,tocIndex:2},{value:"Assigned",paraId:6,tocIndex:2},{value:"A record for the corresponding approver has been created, but since the processing rule requires serial handling, the approver must wait for the previous approver to finish before they can proceed.",paraId:6,tocIndex:2},{value:"Pending",paraId:6,tocIndex:2},{value:"The application is awaiting action from the current approver.",paraId:6,tocIndex:2},{value:"Returned",paraId:6,tocIndex:2},{value:"The current approver has returned the application.",paraId:6,tocIndex:2},{value:"Approved",paraId:6,tocIndex:2},{value:"The current approver has approved the application.",paraId:6,tocIndex:2},{value:"Rejected",paraId:6,tocIndex:2},{value:"The current approver has rejected the application.",paraId:6,tocIndex:2},{value:"Unprocessed",paraId:6,tocIndex:2},{value:"The application has reached a terminal state according to the node's processing rules after being handled by other approvers, or the workflow has become invalid, so the current approver is no longer required to take action.",paraId:6,tocIndex:2}],F5={},B5={title:"HTTP API",toc:"menu",filename:"docs/en-US/handbook/workflow-approval/http-api.md",lastUpdated:173254844e4,description:"Approval events aren\u2019t confined to actions within the user interface; they can also be triggered through HTTP API calls."},j5=[{id:"http-api",depth:1,title:"HTTP API"}],H5=[{value:"Approval events aren\u2019t confined to actions within the user interface; they can also be triggered through HTTP API calls.",paraId:0,tocIndex:0},{value:"For approvals initiated from data blocks and approval center blocks, you can trigger them using an API call (using the creation button for the ",paraId:1,tocIndex:0},{value:"posts",paraId:1,tocIndex:0},{value:" table as an example):",paraId:1,tocIndex:0},{value:`curl -X POST -H 'Authorization: Bearer ' -H 'X-Role: ' -d \\ '{ "title": "Hello, world!", "content": "This is a test post." @@ -8942,13 +8994,13 @@ The syntax for custom mask rules is as follows:`,paraId:5,tocIndex:7},{value:"*" } }' "http://localhost:3000/api/posts:create?triggerWorkflows=workflowKey!category" -`,paraId:7},{value:"When the call is successfully executed, the approval event for the ",paraId:8},{value:"categories",paraId:8},{value:" table will be triggered.",paraId:8},{value:"When triggering events via HTTP API calls, ensure that the workflow is enabled and that the data table configuration is correct; otherwise, the call may not be successful or may result in errors.",paraId:9}],WS={},$S={title:"\u914D\u7F6E\u9762\u677F",toc:"menu",filename:"docs/en-US/manual/data-visualization/configure.md",lastUpdated:1732240239e3,description:"\u56FE\u8868\u7684\u914D\u7F6E\u9762\u677F\u6574\u4F53\u4E0A\u5212\u5206\u4E3A\u4E09\u4E2A\u90E8\u5206\uFF1A\u6570\u636E\u914D\u7F6E\u3001\u56FE\u8868\u914D\u7F6E\u548C\u56FE\u8868\u9884\u89C8\u3002"},GS=[{id:"\u914D\u7F6E\u9762\u677F",depth:1,title:"\u914D\u7F6E\u9762\u677F"},{id:"\u6570\u636E\u914D\u7F6E",depth:2,title:"\u6570\u636E\u914D\u7F6E"},{id:"\u5EA6\u91CF-measures",depth:3,title:"\u5EA6\u91CF (Measures)"},{id:"\u7EF4\u5EA6-dimesions",depth:3,title:"\u7EF4\u5EA6 (Dimesions)"},{id:"\u7B5B\u9009-filter",depth:3,title:"\u7B5B\u9009 (Filter)"},{id:"\u6392\u5E8F-sort-\u548C\u9650\u5236-limit",depth:3,title:"\u6392\u5E8F (Sort) \u548C\u9650\u5236 (Limit)"},{id:"\u7F13\u5B58",depth:3,title:"\u7F13\u5B58"},{id:"\u56FE\u8868\u914D\u7F6E",depth:2,title:"\u56FE\u8868\u914D\u7F6E"},{id:"\u6570\u636E\u8F6C\u6362",depth:2,title:"\u6570\u636E\u8F6C\u6362"}],VS=[{value:"\u56FE\u8868\u7684\u914D\u7F6E\u9762\u677F\u6574\u4F53\u4E0A\u5212\u5206\u4E3A\u4E09\u4E2A\u90E8\u5206\uFF1A\u6570\u636E\u914D\u7F6E\u3001\u56FE\u8868\u914D\u7F6E\u548C\u56FE\u8868\u9884\u89C8\u3002",paraId:0,tocIndex:0},{value:"\u9876\u90E8\u4E0B\u62C9\u6846\u4EE3\u8868\u5F53\u524D\u6B63\u5728\u914D\u7F6E\u7684\u6570\u636E\u8868 (Collection)\uFF0C\u901A\u8FC7\u4E0B\u62C9\u83DC\u5355\u53EF\u4EE5\u5207\u6362\u3002",paraId:1,tocIndex:1},{value:"\u914D\u7F6E\u5B8C\u6210\u540E\uFF0C\u70B9\u51FB\u201C\u6267\u884C\u67E5\u8BE2\u201D (Run query) \u53EF\u4EE5\u901A\u8FC7\u914D\u7F6E\u83B7\u53D6\u6570\u636E\uFF0C\u201C\u6570\u636E\u201D (Data) \u9762\u677F\u4F1A\u5C55\u793A\u6570\u636E\u3002",paraId:1,tocIndex:1},{value:"\u5EA6\u91CF\u5B57\u6BB5\uFF0C\u901A\u5E38\u662F\u56FE\u8868\u9700\u8981\u5C55\u793A\u7684\u6838\u5FC3\u6570\u636E\u3002\u5EA6\u91CF\u6570\u636E\u53EF\u4EE5\u901A\u8FC7\u805A\u5408\u51FD\u6570\u8FDB\u884C\u7EDF\u8BA1\uFF0C\u652F\u6301\u5E38\u7528\u7684\u6570\u636E\u5E93\u7EDF\u8BA1\u51FD\u6570 ",paraId:2,tocIndex:2},{value:"\u6C42\u548C (Sum)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u8BA1\u6570 (Count)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u5E73\u5747\u503C (Avg)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u6700\u5927\u503C (Max)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u6700\u5C0F\u503C (Min)",paraId:2,tocIndex:2},{value:". \u5EA6\u91CF\u5B57\u6BB5\u53EF\u4EE5\u6709\u591A\u4E2A\uFF0C\u53EF\u4EE5\u8BBE\u7F6E\u522B\u540D\u3002",paraId:2,tocIndex:2},{value:"\u7EF4\u5EA6\u5B57\u6BB5\uFF0C\u901A\u5E38\u662F\u56FE\u8868\u6570\u636E\u5206\u7EC4\u7684\u4F9D\u636E\u3002\u5BF9\u4E8E\u65E5\u671F\u7C7B\u578B\u5B57\u6BB5\uFF0C\u652F\u6301\u5982\u56FE\u6240\u793A\u7684\u683C\u5F0F\u5316\u65B9\u5F0F\uFF0C\u683C\u5F0F\u5316\u901A\u8FC7\u6570\u636E\u5E93\u51FD\u6570\u5B9E\u73B0\uFF08\u4F8B\u5982\uFF1AMySQL \u5BF9\u5E94 ",paraId:3,tocIndex:3},{value:"date_format",paraId:3,tocIndex:3},{value:"\uFF09\uFF0C\u5176\u4ED6\u7C7B\u578B\u6570\u636E\u683C\u5F0F\u5316\u89C1",paraId:3,tocIndex:3},{value:"\u6570\u636E\u8F6C\u6362",paraId:4,tocIndex:3},{value:"\u90E8\u5206\u3002",paraId:3,tocIndex:3},{value:"\u7EF4\u5EA6\u683C\u5F0F\u5316 (Dimensions Format) VS \u6570\u636E\u8F6C\u6362 (Transform)",paraId:5},{value:"\u7EF4\u5EA6\u683C\u5F0F\u5316\u53D1\u751F\u5728\u83B7\u53D6\u6700\u7EC8\u6570\u636E\u4E4B\u524D\uFF0C\u6570\u636E\u5206\u7EC4\u6309\u7167\u7EF4\u5EA6\u683C\u5F0F\u5316\u540E\u7684\u503C\u8FDB\u884C\uFF0C\u901A\u5E38\u5728\u6309\u65F6\u95F4\u6BB5\u7B5B\u9009\u6570\u636E\u65F6\u6709\u6B64\u9700\u6C42\u3002",paraId:6},{value:"\u6570\u636E\u8F6C\u6362\u5BF9\u54CD\u5E94\u6570\u636E\u505A\u8FDB\u4E00\u6B65\u5904\u7406\uFF0C\u8BF8\u5982\u53EF\u8BFB\u6027\u5904\u7406\uFF0C\u4EE5\u5C55\u73B0\u6070\u5F53\u7684\u6570\u636E\uFF0C\u6570\u636E\u8F6C\u6362\u5728\u524D\u7AEF\u8FDB\u884C\u3002",paraId:6},{value:"\u7B5B\u9009\u914D\u7F6E\u5C06\u5BF9\u5206\u7EC4\u524D\u7684\u6570\u636E\u8FDB\u884C\u8FC7\u6EE4\u3002\u6709\u201C\u5F53\u524D\u7528\u6237\u201D\u548C\u201C\u5F53\u524D\u65E5\u671F\u201D\u53D8\u91CF\u53EF\u4F9B\u9009\u62E9\uFF0C\u7ED9\u56FE\u8868\u914D\u7F6E\u52A8\u6001\u7684\u7B5B\u9009\u8303\u56F4\u3002",paraId:7,tocIndex:4},{value:"\u9ED8\u8BA4\u6570\u636E\u96C6\u6761\u6570\u4E0A\u9650\u4E3A 2000.",paraId:8,tocIndex:5},{value:"\u5F00\u542F\u7F13\u5B58\u540E\uFF0C\u56FE\u8868\u5C06\u5C55\u793A\u7F13\u5B58\u7684\u6570\u636E\u3002",paraId:9,tocIndex:6},{value:"\u56FE\u8868\u7C7B\u578B (Chart Type) - \u7528\u4E8E\u5C55\u793A\u7684\u56FE\u8868\u7C7B\u578B\u3002NocoBase \u4F7F\u7528 ",paraId:10,tocIndex:7},{value:"G2Plot",paraId:10,tocIndex:7},{value:" \u4F5C\u4E3A\u9ED8\u8BA4\u7684\u56FE\u8868\u5E93\uFF0C\u60F3\u6269\u5C55\u4F7F\u7528\u5176\u4ED6\u56FE\u8868\u5E93\uFF0C\u53EF\u4EE5\u53C2\u8003",paraId:10,tocIndex:7},{value:"\u5F00\u53D1\u6307\u5357",paraId:11,tocIndex:7},{value:"\u3002",paraId:10,tocIndex:7},{value:"\u57FA\u7840\u914D\u7F6E - \u9009\u62E9\u56FE\u8868\u540E\uFF0C\u4F1A\u51FA\u73B0\u76F8\u5E94\u7684\u57FA\u7840\u53EF\u89C6\u5316\u914D\u7F6E\uFF0C\u5B57\u6BB5\u914D\u7F6E\u901A\u5E38\u63D0\u4F9B\u4E86\u4E0B\u62C9\u83DC\u5355\u4F9B\u9009\u62E9\uFF0C\u9009\u9879\u4E2D\u5305\u542B\u4E86 Collection \u7684\u57FA\u7840\u5B57\u6BB5\u548C\u5B57\u6BB5\u522B\u540D\u3002",paraId:10,tocIndex:7},{value:"JSON \u914D\u7F6E - \u5F53\u57FA\u7840\u914D\u7F6E\u4E0D\u6EE1\u8DB3\u8981\u6C42\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 JSON \u914D\u7F6E\u5176\u4ED6\u56FE\u8868\u5C5E\u6027\u3002\u53C2\u8003 ",paraId:10,tocIndex:7},{value:"G2Plot \u6587\u6863",paraId:10,tocIndex:7},{value:"\u3002",paraId:10,tocIndex:7},{value:"\u4F7F\u7528\u6570\u636E\u8F6C\u6362\u53EF\u4EE5\u5BF9\u63A5\u53E3\u54CD\u5E94\u7684\u6570\u636E\u505A\u8FDB\u4E00\u6B65\u5904\u7406\uFF0C\u76EE\u524D\u652F\u6301\u8F6C\u6362\u5904\u7406\u7684\u6570\u636E\u7C7B\u578B\u4E3A ",paraId:12,tocIndex:8},{value:"number",paraId:12,tocIndex:8},{value:",",paraId:12,tocIndex:8},{value:"date",paraId:12,tocIndex:8},{value:",",paraId:12,tocIndex:8},{value:"time",paraId:12,tocIndex:8},{value:",",paraId:12,tocIndex:8},{value:"datetime",paraId:12,tocIndex:8},{value:", \u5BF9\u4E8E\u4E0D\u5C5E\u4E8E\u652F\u6301\u7684\u6570\u636E\u7C7B\u578B\u7684\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u624B\u52A8\u9009\u62E9\u4E3A\u8FD9\u51E0\u4E2A\u7C7B\u578B\uFF0C\u4EE5\u4F7F\u7528\u5BF9\u5E94\u7684\u8F6C\u6362\u65B9\u6CD5\u3002",paraId:12,tocIndex:8}],KS={},ZS={title:"\u6570\u636E\u8868\u4E8B\u4EF6",toc:"menu",filename:"docs/en-US/manual/workflow/triggers/collection.md",lastUpdated:1732240239e3,description:"\u6570\u636E\u8868\u4E8B\u4EF6\u7C7B\u578B\u7684\u89E6\u53D1\u5668\u5C06\u76D1\u542C\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u4E8B\u4EF6\uFF0C\u5F53\u53D1\u751F\u5BF9\u8BE5\u8868\u7684\u6570\u636E\u64CD\u4F5C\u4E14\u6EE1\u8DB3\u914D\u7F6E\u7684\u6761\u4EF6\u65F6\uFF0C\u89E6\u53D1\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u3002\u4F8B\u5982\u65B0\u589E\u8BA2\u5355\u540E\u6263\u51CF\u5546\u54C1\u7684\u5E93\u5B58\uFF0C\u65B0\u589E\u4E00\u6761\u8BC4\u8BBA\u540E\u7B49\u5F85\u4EBA\u5DE5\u5BA1\u6838\u7B49\u573A\u666F\u3002"},YS=[{id:"\u6570\u636E\u8868\u4E8B\u4EF6",depth:1,title:"\u6570\u636E\u8868\u4E8B\u4EF6"},{id:"\u57FA\u672C\u4F7F\u7528",depth:2,title:"\u57FA\u672C\u4F7F\u7528"},{id:"\u76F8\u5173\u63D0\u793A",depth:2,title:"\u76F8\u5173\u63D0\u793A"},{id:"\u6682\u4E0D\u652F\u6301\u6279\u91CF\u6570\u636E\u64CD\u4F5C\u89E6\u53D1",depth:3,title:"\u6682\u4E0D\u652F\u6301\u6279\u91CF\u6570\u636E\u64CD\u4F5C\u89E6\u53D1"},{id:"\u975E\u5E94\u7528\u5185\u7684\u6570\u636E\u64CD\u4F5C\u4E0D\u4F1A\u89E6\u53D1",depth:3,title:"\u975E\u5E94\u7528\u5185\u7684\u6570\u636E\u64CD\u4F5C\u4E0D\u4F1A\u89E6\u53D1"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],QS=[{value:"\u6570\u636E\u8868\u4E8B\u4EF6\u7C7B\u578B\u7684\u89E6\u53D1\u5668\u5C06\u76D1\u542C\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u4E8B\u4EF6\uFF0C\u5F53\u53D1\u751F\u5BF9\u8BE5\u8868\u7684\u6570\u636E\u64CD\u4F5C\u4E14\u6EE1\u8DB3\u914D\u7F6E\u7684\u6761\u4EF6\u65F6\uFF0C\u89E6\u53D1\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u3002\u4F8B\u5982\u65B0\u589E\u8BA2\u5355\u540E\u6263\u51CF\u5546\u54C1\u7684\u5E93\u5B58\uFF0C\u65B0\u589E\u4E00\u6761\u8BC4\u8BBA\u540E\u7B49\u5F85\u4EBA\u5DE5\u5BA1\u6838\u7B49\u573A\u666F\u3002",paraId:0,tocIndex:0},{value:"\u6570\u636E\u8868\u7684\u53D8\u52A8\u6709\u51E0\u79CD\u60C5\u51B5\uFF1A",paraId:1,tocIndex:1},{value:"\u65B0\u589E\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:"\u66F4\u65B0\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:"\u65B0\u589E\u6216\u66F4\u65B0\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:"\u5220\u9664\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:` +`,paraId:7},{value:"When the call is successfully executed, the approval event for the ",paraId:8},{value:"categories",paraId:8},{value:" table will be triggered.",paraId:8},{value:"When triggering events via HTTP API calls, ensure that the workflow is enabled and that the data table configuration is correct; otherwise, the call may not be successful or may result in errors.",paraId:9}],W5={},$5={title:"\u914D\u7F6E\u9762\u677F",toc:"menu",filename:"docs/en-US/manual/data-visualization/configure.md",lastUpdated:173254844e4,description:"\u56FE\u8868\u7684\u914D\u7F6E\u9762\u677F\u6574\u4F53\u4E0A\u5212\u5206\u4E3A\u4E09\u4E2A\u90E8\u5206\uFF1A\u6570\u636E\u914D\u7F6E\u3001\u56FE\u8868\u914D\u7F6E\u548C\u56FE\u8868\u9884\u89C8\u3002"},G5=[{id:"\u914D\u7F6E\u9762\u677F",depth:1,title:"\u914D\u7F6E\u9762\u677F"},{id:"\u6570\u636E\u914D\u7F6E",depth:2,title:"\u6570\u636E\u914D\u7F6E"},{id:"\u5EA6\u91CF-measures",depth:3,title:"\u5EA6\u91CF (Measures)"},{id:"\u7EF4\u5EA6-dimesions",depth:3,title:"\u7EF4\u5EA6 (Dimesions)"},{id:"\u7B5B\u9009-filter",depth:3,title:"\u7B5B\u9009 (Filter)"},{id:"\u6392\u5E8F-sort-\u548C\u9650\u5236-limit",depth:3,title:"\u6392\u5E8F (Sort) \u548C\u9650\u5236 (Limit)"},{id:"\u7F13\u5B58",depth:3,title:"\u7F13\u5B58"},{id:"\u56FE\u8868\u914D\u7F6E",depth:2,title:"\u56FE\u8868\u914D\u7F6E"},{id:"\u6570\u636E\u8F6C\u6362",depth:2,title:"\u6570\u636E\u8F6C\u6362"}],V5=[{value:"\u56FE\u8868\u7684\u914D\u7F6E\u9762\u677F\u6574\u4F53\u4E0A\u5212\u5206\u4E3A\u4E09\u4E2A\u90E8\u5206\uFF1A\u6570\u636E\u914D\u7F6E\u3001\u56FE\u8868\u914D\u7F6E\u548C\u56FE\u8868\u9884\u89C8\u3002",paraId:0,tocIndex:0},{value:"\u9876\u90E8\u4E0B\u62C9\u6846\u4EE3\u8868\u5F53\u524D\u6B63\u5728\u914D\u7F6E\u7684\u6570\u636E\u8868 (Collection)\uFF0C\u901A\u8FC7\u4E0B\u62C9\u83DC\u5355\u53EF\u4EE5\u5207\u6362\u3002",paraId:1,tocIndex:1},{value:"\u914D\u7F6E\u5B8C\u6210\u540E\uFF0C\u70B9\u51FB\u201C\u6267\u884C\u67E5\u8BE2\u201D (Run query) \u53EF\u4EE5\u901A\u8FC7\u914D\u7F6E\u83B7\u53D6\u6570\u636E\uFF0C\u201C\u6570\u636E\u201D (Data) \u9762\u677F\u4F1A\u5C55\u793A\u6570\u636E\u3002",paraId:1,tocIndex:1},{value:"\u5EA6\u91CF\u5B57\u6BB5\uFF0C\u901A\u5E38\u662F\u56FE\u8868\u9700\u8981\u5C55\u793A\u7684\u6838\u5FC3\u6570\u636E\u3002\u5EA6\u91CF\u6570\u636E\u53EF\u4EE5\u901A\u8FC7\u805A\u5408\u51FD\u6570\u8FDB\u884C\u7EDF\u8BA1\uFF0C\u652F\u6301\u5E38\u7528\u7684\u6570\u636E\u5E93\u7EDF\u8BA1\u51FD\u6570 ",paraId:2,tocIndex:2},{value:"\u6C42\u548C (Sum)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u8BA1\u6570 (Count)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u5E73\u5747\u503C (Avg)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u6700\u5927\u503C (Max)",paraId:2,tocIndex:2},{value:",",paraId:2,tocIndex:2},{value:"\u6700\u5C0F\u503C (Min)",paraId:2,tocIndex:2},{value:". \u5EA6\u91CF\u5B57\u6BB5\u53EF\u4EE5\u6709\u591A\u4E2A\uFF0C\u53EF\u4EE5\u8BBE\u7F6E\u522B\u540D\u3002",paraId:2,tocIndex:2},{value:"\u7EF4\u5EA6\u5B57\u6BB5\uFF0C\u901A\u5E38\u662F\u56FE\u8868\u6570\u636E\u5206\u7EC4\u7684\u4F9D\u636E\u3002\u5BF9\u4E8E\u65E5\u671F\u7C7B\u578B\u5B57\u6BB5\uFF0C\u652F\u6301\u5982\u56FE\u6240\u793A\u7684\u683C\u5F0F\u5316\u65B9\u5F0F\uFF0C\u683C\u5F0F\u5316\u901A\u8FC7\u6570\u636E\u5E93\u51FD\u6570\u5B9E\u73B0\uFF08\u4F8B\u5982\uFF1AMySQL \u5BF9\u5E94 ",paraId:3,tocIndex:3},{value:"date_format",paraId:3,tocIndex:3},{value:"\uFF09\uFF0C\u5176\u4ED6\u7C7B\u578B\u6570\u636E\u683C\u5F0F\u5316\u89C1",paraId:3,tocIndex:3},{value:"\u6570\u636E\u8F6C\u6362",paraId:4,tocIndex:3},{value:"\u90E8\u5206\u3002",paraId:3,tocIndex:3},{value:"\u7EF4\u5EA6\u683C\u5F0F\u5316 (Dimensions Format) VS \u6570\u636E\u8F6C\u6362 (Transform)",paraId:5},{value:"\u7EF4\u5EA6\u683C\u5F0F\u5316\u53D1\u751F\u5728\u83B7\u53D6\u6700\u7EC8\u6570\u636E\u4E4B\u524D\uFF0C\u6570\u636E\u5206\u7EC4\u6309\u7167\u7EF4\u5EA6\u683C\u5F0F\u5316\u540E\u7684\u503C\u8FDB\u884C\uFF0C\u901A\u5E38\u5728\u6309\u65F6\u95F4\u6BB5\u7B5B\u9009\u6570\u636E\u65F6\u6709\u6B64\u9700\u6C42\u3002",paraId:6},{value:"\u6570\u636E\u8F6C\u6362\u5BF9\u54CD\u5E94\u6570\u636E\u505A\u8FDB\u4E00\u6B65\u5904\u7406\uFF0C\u8BF8\u5982\u53EF\u8BFB\u6027\u5904\u7406\uFF0C\u4EE5\u5C55\u73B0\u6070\u5F53\u7684\u6570\u636E\uFF0C\u6570\u636E\u8F6C\u6362\u5728\u524D\u7AEF\u8FDB\u884C\u3002",paraId:6},{value:"\u7B5B\u9009\u914D\u7F6E\u5C06\u5BF9\u5206\u7EC4\u524D\u7684\u6570\u636E\u8FDB\u884C\u8FC7\u6EE4\u3002\u6709\u201C\u5F53\u524D\u7528\u6237\u201D\u548C\u201C\u5F53\u524D\u65E5\u671F\u201D\u53D8\u91CF\u53EF\u4F9B\u9009\u62E9\uFF0C\u7ED9\u56FE\u8868\u914D\u7F6E\u52A8\u6001\u7684\u7B5B\u9009\u8303\u56F4\u3002",paraId:7,tocIndex:4},{value:"\u9ED8\u8BA4\u6570\u636E\u96C6\u6761\u6570\u4E0A\u9650\u4E3A 2000.",paraId:8,tocIndex:5},{value:"\u5F00\u542F\u7F13\u5B58\u540E\uFF0C\u56FE\u8868\u5C06\u5C55\u793A\u7F13\u5B58\u7684\u6570\u636E\u3002",paraId:9,tocIndex:6},{value:"\u56FE\u8868\u7C7B\u578B (Chart Type) - \u7528\u4E8E\u5C55\u793A\u7684\u56FE\u8868\u7C7B\u578B\u3002NocoBase \u4F7F\u7528 ",paraId:10,tocIndex:7},{value:"G2Plot",paraId:10,tocIndex:7},{value:" \u4F5C\u4E3A\u9ED8\u8BA4\u7684\u56FE\u8868\u5E93\uFF0C\u60F3\u6269\u5C55\u4F7F\u7528\u5176\u4ED6\u56FE\u8868\u5E93\uFF0C\u53EF\u4EE5\u53C2\u8003",paraId:10,tocIndex:7},{value:"\u5F00\u53D1\u6307\u5357",paraId:11,tocIndex:7},{value:"\u3002",paraId:10,tocIndex:7},{value:"\u57FA\u7840\u914D\u7F6E - \u9009\u62E9\u56FE\u8868\u540E\uFF0C\u4F1A\u51FA\u73B0\u76F8\u5E94\u7684\u57FA\u7840\u53EF\u89C6\u5316\u914D\u7F6E\uFF0C\u5B57\u6BB5\u914D\u7F6E\u901A\u5E38\u63D0\u4F9B\u4E86\u4E0B\u62C9\u83DC\u5355\u4F9B\u9009\u62E9\uFF0C\u9009\u9879\u4E2D\u5305\u542B\u4E86 Collection \u7684\u57FA\u7840\u5B57\u6BB5\u548C\u5B57\u6BB5\u522B\u540D\u3002",paraId:10,tocIndex:7},{value:"JSON \u914D\u7F6E - \u5F53\u57FA\u7840\u914D\u7F6E\u4E0D\u6EE1\u8DB3\u8981\u6C42\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 JSON \u914D\u7F6E\u5176\u4ED6\u56FE\u8868\u5C5E\u6027\u3002\u53C2\u8003 ",paraId:10,tocIndex:7},{value:"G2Plot \u6587\u6863",paraId:10,tocIndex:7},{value:"\u3002",paraId:10,tocIndex:7},{value:"\u4F7F\u7528\u6570\u636E\u8F6C\u6362\u53EF\u4EE5\u5BF9\u63A5\u53E3\u54CD\u5E94\u7684\u6570\u636E\u505A\u8FDB\u4E00\u6B65\u5904\u7406\uFF0C\u76EE\u524D\u652F\u6301\u8F6C\u6362\u5904\u7406\u7684\u6570\u636E\u7C7B\u578B\u4E3A ",paraId:12,tocIndex:8},{value:"number",paraId:12,tocIndex:8},{value:",",paraId:12,tocIndex:8},{value:"date",paraId:12,tocIndex:8},{value:",",paraId:12,tocIndex:8},{value:"time",paraId:12,tocIndex:8},{value:",",paraId:12,tocIndex:8},{value:"datetime",paraId:12,tocIndex:8},{value:", \u5BF9\u4E8E\u4E0D\u5C5E\u4E8E\u652F\u6301\u7684\u6570\u636E\u7C7B\u578B\u7684\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u624B\u52A8\u9009\u62E9\u4E3A\u8FD9\u51E0\u4E2A\u7C7B\u578B\uFF0C\u4EE5\u4F7F\u7528\u5BF9\u5E94\u7684\u8F6C\u6362\u65B9\u6CD5\u3002",paraId:12,tocIndex:8}],K5={},Z5={title:"\u6570\u636E\u8868\u4E8B\u4EF6",toc:"menu",filename:"docs/en-US/manual/workflow/triggers/collection.md",lastUpdated:173254844e4,description:"\u6570\u636E\u8868\u4E8B\u4EF6\u7C7B\u578B\u7684\u89E6\u53D1\u5668\u5C06\u76D1\u542C\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u4E8B\u4EF6\uFF0C\u5F53\u53D1\u751F\u5BF9\u8BE5\u8868\u7684\u6570\u636E\u64CD\u4F5C\u4E14\u6EE1\u8DB3\u914D\u7F6E\u7684\u6761\u4EF6\u65F6\uFF0C\u89E6\u53D1\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u3002\u4F8B\u5982\u65B0\u589E\u8BA2\u5355\u540E\u6263\u51CF\u5546\u54C1\u7684\u5E93\u5B58\uFF0C\u65B0\u589E\u4E00\u6761\u8BC4\u8BBA\u540E\u7B49\u5F85\u4EBA\u5DE5\u5BA1\u6838\u7B49\u573A\u666F\u3002"},Y5=[{id:"\u6570\u636E\u8868\u4E8B\u4EF6",depth:1,title:"\u6570\u636E\u8868\u4E8B\u4EF6"},{id:"\u57FA\u672C\u4F7F\u7528",depth:2,title:"\u57FA\u672C\u4F7F\u7528"},{id:"\u76F8\u5173\u63D0\u793A",depth:2,title:"\u76F8\u5173\u63D0\u793A"},{id:"\u6682\u4E0D\u652F\u6301\u6279\u91CF\u6570\u636E\u64CD\u4F5C\u89E6\u53D1",depth:3,title:"\u6682\u4E0D\u652F\u6301\u6279\u91CF\u6570\u636E\u64CD\u4F5C\u89E6\u53D1"},{id:"\u975E\u5E94\u7528\u5185\u7684\u6570\u636E\u64CD\u4F5C\u4E0D\u4F1A\u89E6\u53D1",depth:3,title:"\u975E\u5E94\u7528\u5185\u7684\u6570\u636E\u64CD\u4F5C\u4E0D\u4F1A\u89E6\u53D1"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],Q5=[{value:"\u6570\u636E\u8868\u4E8B\u4EF6\u7C7B\u578B\u7684\u89E6\u53D1\u5668\u5C06\u76D1\u542C\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u4E8B\u4EF6\uFF0C\u5F53\u53D1\u751F\u5BF9\u8BE5\u8868\u7684\u6570\u636E\u64CD\u4F5C\u4E14\u6EE1\u8DB3\u914D\u7F6E\u7684\u6761\u4EF6\u65F6\uFF0C\u89E6\u53D1\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u3002\u4F8B\u5982\u65B0\u589E\u8BA2\u5355\u540E\u6263\u51CF\u5546\u54C1\u7684\u5E93\u5B58\uFF0C\u65B0\u589E\u4E00\u6761\u8BC4\u8BBA\u540E\u7B49\u5F85\u4EBA\u5DE5\u5BA1\u6838\u7B49\u573A\u666F\u3002",paraId:0,tocIndex:0},{value:"\u6570\u636E\u8868\u7684\u53D8\u52A8\u6709\u51E0\u79CD\u60C5\u51B5\uFF1A",paraId:1,tocIndex:1},{value:"\u65B0\u589E\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:"\u66F4\u65B0\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:"\u65B0\u589E\u6216\u66F4\u65B0\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:"\u5220\u9664\u6570\u636E\u540E\u3002",paraId:2,tocIndex:1},{value:` `,paraId:3},{value:"\u53EF\u4EE5\u6839\u636E\u4E1A\u52A1\u7684\u4E0D\u540C\u9700\u8981\u9009\u62E9\u89E6\u53D1\u7684\u65F6\u673A\u3002\u5F53\u9009\u62E9\u53D8\u52A8\u60C5\u51B5\u4E2D\u5305\u542B\u66F4\u65B0\u6570\u636E\u8868\u7684\u60C5\u51B5\u65F6\uFF0C\u8FD8\u53EF\u4EE5\u5BF9\u53D1\u751F\u53D8\u52A8\u7684\u5B57\u6BB5\u8FDB\u884C\u9650\u5B9A\uFF0C\u53EA\u6709\u9009\u4E2D\u5B57\u6BB5\u53D1\u751F\u53D8\u52A8\u65F6\uFF0C\u624D\u6EE1\u8DB3\u89E6\u53D1\u6761\u4EF6\uFF0C\u4E0D\u9009\u62E9\u5219\u4EE3\u8868\u6240\u6709\u5B57\u6BB5\u53D1\u751F\u53D8\u52A8\u90FD\u53EF\u4EE5\u89E6\u53D1\u3002",paraId:4,tocIndex:1},{value:` `,paraId:3},{value:"\u66F4\u7EC6\u8282\u5730\uFF0C\u53EF\u4EE5\u5BF9\u89E6\u53D1\u7684\u6570\u636E\u884C\u7684\u5404\u4E2A\u5B57\u6BB5\u914D\u7F6E\u6761\u4EF6\u89C4\u5219\uFF0C\u5F53\u5176\u4E2D\u7684\u5B57\u6BB5\u6EE1\u8DB3\u76F8\u5E94\u6761\u4EF6\uFF0C\u624D\u8FDB\u884C\u89E6\u53D1\u3002",paraId:5,tocIndex:1},{value:` `,paraId:3},{value:"\u6570\u636E\u8868\u4E8B\u4EF6\u89E6\u53D1\u540E\u4F1A\u5728\u6267\u884C\u8BA1\u5212\u4E2D\u6CE8\u5165\u4EA7\u751F\u4E8B\u4EF6\u7684\u6570\u636E\u884C\u4F5C\u4E3A\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u4EE5\u4F9B\u540E\u7EED\u6D41\u7A0B\u4E2D\u7684\u8282\u70B9\u4F5C\u4E3A\u53D8\u91CF\u8C03\u7528\u3002\u4F46\u5F53\u540E\u7EED\u8282\u70B9\u4E2D\u5E0C\u671B\u4F7F\u7528\u8BE5\u6570\u636E\u7684\u5173\u7CFB\u5B57\u6BB5\u65F6\uFF0C\u9700\u8981\u5148\u914D\u7F6E\u5BF9\u5173\u7CFB\u6570\u636E\u7684\u9884\u52A0\u8F7D\uFF0C\u9009\u4E2D\u7684\u5173\u7CFB\u6570\u636E\u5C06\u4F1A\u5728\u89E6\u53D1\u540E\u4E00\u5E76\u6CE8\u5165\u5230\u4E0A\u4E0B\u6587\u4E2D\uFF0C\u4E14\u53EF\u88AB\u6309\u5C42\u7EA7\u8FDB\u884C\u9009\u62E9\u4F7F\u7528\u3002",paraId:6,tocIndex:1},{value:"\u6570\u636E\u8868\u4E8B\u4EF6\u4E8B\u4EF6\u6682\u4E0D\u652F\u6301\u6279\u91CF\u6570\u636E\u64CD\u4F5C\u7684\u89E6\u53D1\uFF0C\u4F8B\u5982\u65B0\u589E\u6587\u7AE0\u6570\u636E\u65F6\u540C\u65F6\u65B0\u589E\u7684\u8BE5\u6587\u7AE0\u7684\u591A\u4E2A\u6807\u7B7E\u6570\u636E\uFF08\u5BF9\u591A\u5173\u7CFB\u6570\u636E\uFF09\uFF0C\u5C06\u4EC5\u80FD\u89E6\u53D1\u5BF9\u6587\u7AE0\u65B0\u589E\u7684\u5DE5\u4F5C\u6D41\uFF0C\u800C\u540C\u65F6\u65B0\u589E\u7684\u591A\u4E2A\u6807\u7B7E\u5C06\u4E0D\u4F1A\u89E6\u53D1\u65B0\u589E\u6807\u7B7E\u7684\u5DE5\u4F5C\u6D41\u3002\u591A\u5BF9\u591A\u5173\u7CFB\u6570\u636E\u7684\u5173\u8054\u548C\u65B0\u589E\u65F6\uFF0C\u4E5F\u4E0D\u4F1A\u89E6\u53D1\u4E2D\u95F4\u8868\u7684\u5DE5\u4F5C\u6D41\u3002",paraId:7,tocIndex:3},{value:"\u53E6\u5916\uFF0C\u901A\u8FC7 HTTP API \u8C03\u7528\u5E94\u7528\u63A5\u53E3\u5BF9\u6570\u636E\u8868\u7684\u64CD\u4F5C\u4E5F\u53EF\u4EE5\u89E6\u53D1\u76F8\u5E94\u4E8B\u4EF6\uFF0C\u4F46\u5982\u679C\u4E0D\u901A\u8FC7 NodoBase \u5E94\u7528\uFF0C\u800C\u662F\u76F4\u63A5\u901A\u8FC7\u6570\u636E\u5E93\u64CD\u4F5C\u4EA7\u751F\u7684\u6570\u636E\u53D8\u52A8\uFF0C\u5C31\u65E0\u6CD5\u89E6\u53D1\u76F8\u5E94\u4E8B\u4EF6\u3002\u6BD4\u5982\u6570\u636E\u5E93\u4E2D\u672C\u8EAB\u7684\u89E6\u53D1\u5668\u4E0D\u4F1A\u4E0E\u5E94\u7528\u4E2D\u7684\u5DE5\u4F5C\u6D41\u4EA7\u751F\u5173\u8054\u3002",paraId:8,tocIndex:4},{value:"\u4EE5\u65B0\u589E\u4E00\u4E2A\u8BA2\u5355\u540E\u8BA1\u7B97\u603B\u4EF7\u5E76\u6263\u51CF\u5E93\u5B58\u7684\u573A\u666F\u4E3E\u4F8B\u3002",paraId:9,tocIndex:5},{value:"\u9996\u5148\uFF0C\u6211\u4EEC\u521B\u5EFA\u5546\u54C1\u8868\u548C\u8BA2\u5355\u8868\uFF0C\u6570\u636E\u6A21\u578B\u5982\u4E0B\uFF1A",paraId:10,tocIndex:5},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:11,tocIndex:5},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:11,tocIndex:5},{value:"\u5546\u54C1\u540D\u79F0",paraId:11,tocIndex:5},{value:"\u5355\u884C\u6587\u672C",paraId:11,tocIndex:5},{value:"\u4EF7\u683C",paraId:11,tocIndex:5},{value:"\u6570\u5B57",paraId:11,tocIndex:5},{value:"\u5E93\u5B58",paraId:11,tocIndex:5},{value:"\u6574\u6570",paraId:11,tocIndex:5},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:12,tocIndex:5},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:12,tocIndex:5},{value:"\u8BA2\u5355\u53F7",paraId:12,tocIndex:5},{value:"\u81EA\u52A8\u7F16\u53F7",paraId:12,tocIndex:5},{value:"\u8BA2\u5355\u5546\u54C1",paraId:12,tocIndex:5},{value:"\u591A\u5BF9\u4E00\uFF08\u5546\u54C1\uFF09",paraId:12,tocIndex:5},{value:"\u8BA2\u5355\u603B\u4EF7",paraId:12,tocIndex:5},{value:"\u6570\u5B57",paraId:12,tocIndex:5},{value:"\u5E76\u6DFB\u52A0\u57FA\u7840\u7684\u5546\u54C1\u6570\u636E\uFF1A",paraId:13,tocIndex:5},{value:"\u5546\u54C1\u540D\u79F0",paraId:14,tocIndex:5},{value:"\u4EF7\u683C",paraId:14,tocIndex:5},{value:"\u5E93\u5B58",paraId:14,tocIndex:5},{value:"iPhone 14 Pro",paraId:14,tocIndex:5},{value:"7999",paraId:14,tocIndex:5},{value:"10",paraId:14,tocIndex:5},{value:"iPhone 13 Pro",paraId:14,tocIndex:5},{value:"5999",paraId:14,tocIndex:5},{value:"0",paraId:14,tocIndex:5},{value:"\u7136\u540E\u521B\u5EFA\u4E00\u4E2A\u57FA\u4E8E\u8BA2\u5355\u6570\u636E\u8868\u4E8B\u4EF6\u7684\u5DE5\u4F5C\u6D41\uFF1A",paraId:15,tocIndex:5},{value:` `,paraId:3},{value:"\u5176\u4E2D\u7684\u51E0\u4E2A\u914D\u7F6E\u9879\uFF1A",paraId:16,tocIndex:5},{value:"\u6570\u636E\u8868\uFF1A\u9009\u62E9\u201C\u8BA2\u5355\u201D\u8868\u3002",paraId:17,tocIndex:5},{value:"\u89E6\u53D1\u65F6\u673A\uFF1A\u9009\u62E9\u201C\u65B0\u589E\u6570\u636E\u540E\u201D\u89E6\u53D1\u3002",paraId:17,tocIndex:5},{value:"\u89E6\u53D1\u6761\u4EF6\uFF1A\u7559\u7A7A\u3002",paraId:17,tocIndex:5},{value:"\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E\uFF1A\u52FE\u9009\u201C\u5546\u54C1\u201D\u3002",paraId:17,tocIndex:5},{value:"\u4E4B\u540E\u6839\u636E\u6D41\u7A0B\u7684\u903B\u8F91\u914D\u7F6E\u5176\u4ED6\u8282\u70B9\uFF0C\u68C0\u67E5\u5546\u54C1\u5E93\u5B58\u662F\u5426\u5927\u4E8E 0\uFF0C\u5927\u4E8E 0 \u7684\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u65E0\u6548\u5220\u9664\u8BA2\u5355\uFF1A",paraId:18,tocIndex:5},{value:` `,paraId:3},{value:"\u8282\u70B9\u7684\u914D\u7F6E\u4F1A\u5728\u5177\u4F53\u7C7B\u578B\u7684\u4ECB\u7ECD\u6587\u6863\u4E2D\u8BE6\u7EC6\u8BF4\u660E\u3002",paraId:19,tocIndex:5},{value:"\u542F\u7528\u8BE5\u5DE5\u4F5C\u6D41\uFF0C\u5E76\u901A\u8FC7\u754C\u9762\u65B0\u589E\u8BA2\u5355\u6765\u6D4B\u8BD5\u3002\u5BF9\u201CiPhone 14 Pro\u201D\u4E0B\u5355\u540E\uFF0C\u5BF9\u5E94\u5546\u54C1\u7684\u5E93\u5B58\u4F1A\u6263\u51CF\u4E3A 9\uFF0C\u800C\u5982\u679C\u5BF9\u201CiPhone 13 Pro\u201D\u4E0B\u5355\uFF0C\u7531\u4E8E\u5E93\u5B58\u4E0D\u8DB3\uFF0C\u8BA2\u5355\u5C06\u88AB\u5220\u9664\u3002",paraId:20,tocIndex:5},{value:` - `,paraId:3}],JS={},XS={title:"Carousel \u533A\u5757",toc:"menu",filename:"docs/en-US/plugin-samples/block/block-carousel.md",lastUpdated:1732240239e3,description:"NocoBase \u6709\u5F88\u591A Add block \u6309\u94AE\u7528\u4E8E\u5411\u754C\u9762\u6DFB\u52A0\u533A\u5757\uFF0C\u4F46\u662F\u76EE\u524D\u5DF2\u6709\u7684\u533A\u5757\u7C7B\u578B\u4E0D\u4E00\u5B9A\u6EE1\u8DB3\u6211\u4EEC\u7684\u9700\u6C42\uFF0C\u6211\u4EEC\u5C31\u9700\u8981\u6839\u636E\u9700\u6C42\u81EA\u5B9A\u5F00\u53D1\u4E00\u4E9B\u533A\u5757\u3002"},e5=[{id:"carousel-\u533A\u5757",depth:1,title:"Carousel \u533A\u5757"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u5B9A\u4E49\u540D\u79F0",depth:3,title:"1. \u5B9A\u4E49\u540D\u79F0"},{id:"2-\u5B9E\u73B0\u533A\u5757\u7EC4\u4EF6",depth:3,title:"2. \u5B9E\u73B0\u533A\u5757\u7EC4\u4EF6"},{id:"21-\u5B9A\u4E49\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.1 \u5B9A\u4E49\u533A\u5757\u7EC4\u4EF6"},{id:"22-\u6CE8\u518C\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.2 \u6CE8\u518C\u533A\u5757\u7EC4\u4EF6"},{id:"23-\u9A8C\u8BC1\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.3 \u9A8C\u8BC1\u533A\u5757\u7EC4\u4EF6"},{id:"3-\u5B9A\u4E49\u533A\u5757-schema",depth:3,title:"3. \u5B9A\u4E49\u533A\u5757 Schema"},{id:"31-\u5B9A\u4E49\u533A\u5757-schema",depth:4,title:"3.1 \u5B9A\u4E49\u533A\u5757 Schema"},{id:"32-\u6CE8\u518C-scope",depth:4,title:"3.2 \u6CE8\u518C scope"},{id:"33-\u9A8C\u8BC1\u533A\u5757-schema",depth:4,title:"3.3 \u9A8C\u8BC1\u533A\u5757 Schema"},{id:"4-\u5B9A\u4E49-schema-initializer-item",depth:3,title:"4. \u5B9A\u4E49 Schema Initializer Item"},{id:"5-\u6DFB\u52A0\u5230-add-block-\u4E2D",depth:3,title:"5. \u6DFB\u52A0\u5230 Add block \u4E2D"},{id:"51-\u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B-add-block-\u4E2D",depth:4,title:"5.1 \u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B Add block \u4E2D"},{id:"52-\u6DFB\u52A0\u5230\u5F39\u7A97-add-block-\u4E2D",depth:4,title:"5.2 \u6DFB\u52A0\u5230\u5F39\u7A97 Add block \u4E2D"},{id:"53-\u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF-add-block-\u4E2D",depth:4,title:"5.3 \u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF Add block \u4E2D"},{id:"6-\u5B9E\u73B0-schema-settings",depth:3,title:"6. \u5B9E\u73B0 Schema Settings"},{id:"61-\u5B9A\u4E49-schema-settings",depth:4,title:"6.1 \u5B9A\u4E49 Schema Settings"},{id:"62-\u6CE8\u518C-schema-settings",depth:4,title:"6.2 \u6CE8\u518C Schema Settings"},{id:"63-\u4F7F\u7528-schema-settings",depth:4,title:"6.3 \u4F7F\u7528 Schema Settings"},{id:"7-\u5B9E\u73B0-schema-settings-items",depth:3,title:"7. \u5B9E\u73B0 Schema Settings items"},{id:"71-\u5B9E\u73B0-remove-\u64CD\u4F5C",depth:4,title:"7.1 \u5B9E\u73B0 remove \u64CD\u4F5C"},{id:"72-\u5B9E\u73B0-edit-block-title-\u64CD\u4F5C",depth:4,title:"7.2 \u5B9E\u73B0 Edit Block title \u64CD\u4F5C"},{id:"73-\u5B9E\u73B0-edit-images-\u64CD\u4F5C",depth:4,title:"7.3 \u5B9E\u73B0 Edit Images \u64CD\u4F5C"},{id:"731-\u5B9A\u4E49-schema-settings-item",depth:5,title:"7.3.1 \u5B9A\u4E49 Schema Settings item"},{id:"732-\u4F7F\u7528-schemasettings-item",depth:5,title:"7.3.2 \u4F7F\u7528 SchemaSettings Item"},{id:"74-\u5B9E\u73B0-edit-height",depth:4,title:"7.4 \u5B9E\u73B0 Edit Height"},{id:"741-\u5B9E\u73B0-schemasettings-item",depth:5,title:"7.4.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"742-\u4F7F\u7528-schemasettings-item",depth:5,title:"7.4.2 \u4F7F\u7528 SchemaSettings Item"},{id:"75-\u5B9E\u73B0-objectfit",depth:4,title:"7.5 \u5B9E\u73B0 ObjectFit"},{id:"751-\u5B9E\u73B0-schemasettings-item",depth:5,title:"7.5.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"752-\u4F7F\u7528-schemasettings-item",depth:5,title:"7.5.2 \u4F7F\u7528 SchemaSettings Item"},{id:"76-\u5B9E\u73B0-autoplay",depth:4,title:"7.6 \u5B9E\u73B0 Autoplay"},{id:"761-\u5B9E\u73B0-schemasettings-item",depth:5,title:"7.6.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"762-\u4F7F\u7528-schemasettings-item",depth:5,title:"7.6.2 \u4F7F\u7528 SchemaSettings Item"},{id:"77-\u589E\u52A0-divider",depth:4,title:"7.7 \u589E\u52A0 divider"},{id:"8-\u6743\u9650",depth:3,title:"8. \u6743\u9650"},{id:"9-\u591A\u8BED\u8A00",depth:3,title:"9. \u591A\u8BED\u8A00"},{id:"91-\u82F1\u6587",depth:4,title:"9.1 \u82F1\u6587"},{id:"92-\u4E2D\u6587",depth:4,title:"9.2 \u4E2D\u6587"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],a5=[{value:"Carousel",paraId:0},{value:"NocoBase \u6709\u5F88\u591A ",paraId:1,tocIndex:1},{value:"Add block",paraId:1,tocIndex:1},{value:" \u6309\u94AE\u7528\u4E8E\u5411\u754C\u9762\u6DFB\u52A0\u533A\u5757\uFF0C\u4F46\u662F\u76EE\u524D\u5DF2\u6709\u7684\u533A\u5757\u7C7B\u578B\u4E0D\u4E00\u5B9A\u6EE1\u8DB3\u6211\u4EEC\u7684\u9700\u6C42\uFF0C\u6211\u4EEC\u5C31\u9700\u8981\u6839\u636E\u9700\u6C42\u81EA\u5B9A\u5F00\u53D1\u4E00\u4E9B\u533A\u5757\u3002",paraId:1,tocIndex:1},{value:"\u5176\u4E2D\u6709\u4E9B\u548C\u6570\u636E\u8868\u6709\u5173\u7CFB\u7684\u88AB\u6210\u4E3A\u6570\u636E\u533A\u5757 ",paraId:2,tocIndex:1},{value:"Data Block",paraId:2,tocIndex:1},{value:"\uFF0C\u6709\u4E9B\u548C\u6570\u636E\u8868\u65E0\u5173\u7684\u88AB\u79F0\u4E3A\u7B80\u5355\u533A\u5757 ",paraId:2,tocIndex:1},{value:"Simple Block",paraId:2,tocIndex:1},{value:"\uFF0C\u672C\u7BC7\u6587\u7AE0\u5C31\u662F\u9488\u5BF9\u7B80\u5355\u533A\u5757 ",paraId:2,tocIndex:1},{value:"Simple Block",paraId:2,tocIndex:1},{value:" \u4E3E\u4F8B\u8BF4\u660E\u3002",paraId:2,tocIndex:1},{value:"\u672C\u5B9E\u4F8B\u4F1A\u57FA\u4E8E ant-design \u7684 ",paraId:3,tocIndex:2},{value:"Carousel",paraId:3,tocIndex:2},{value:" \u7EC4\u4EF6\u521B\u5EFA ",paraId:3,tocIndex:2},{value:"Carousel",paraId:3,tocIndex:2},{value:" \u533A\u5757\uFF0C\u5E76\u5C06\u5176\u6DFB\u52A0\u5230 ",paraId:3,tocIndex:2},{value:"Page",paraId:3,tocIndex:2},{value:"\u3001",paraId:3,tocIndex:2},{value:"Table",paraId:3,tocIndex:2},{value:" \u4EE5\u53CA\u79FB\u52A8\u7AEF\u7684 ",paraId:3,tocIndex:2},{value:"Add block",paraId:3,tocIndex:2},{value:" \u4E2D\u3002",paraId:3,tocIndex:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:4,tocIndex:2},{value:"plugin-samples",paraId:4,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:4,tocIndex:2},{value:` + `,paraId:3}],J5={},X5={title:"Carousel \u533A\u5757",toc:"menu",filename:"docs/en-US/plugin-samples/block/block-carousel.md",lastUpdated:173254844e4,description:"NocoBase \u6709\u5F88\u591A Add block \u6309\u94AE\u7528\u4E8E\u5411\u754C\u9762\u6DFB\u52A0\u533A\u5757\uFF0C\u4F46\u662F\u76EE\u524D\u5DF2\u6709\u7684\u533A\u5757\u7C7B\u578B\u4E0D\u4E00\u5B9A\u6EE1\u8DB3\u6211\u4EEC\u7684\u9700\u6C42\uFF0C\u6211\u4EEC\u5C31\u9700\u8981\u6839\u636E\u9700\u6C42\u81EA\u5B9A\u5F00\u53D1\u4E00\u4E9B\u533A\u5757\u3002"},eS=[{id:"carousel-\u533A\u5757",depth:1,title:"Carousel \u533A\u5757"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u5B9A\u4E49\u540D\u79F0",depth:3,title:"1. \u5B9A\u4E49\u540D\u79F0"},{id:"2-\u5B9E\u73B0\u533A\u5757\u7EC4\u4EF6",depth:3,title:"2. \u5B9E\u73B0\u533A\u5757\u7EC4\u4EF6"},{id:"21-\u5B9A\u4E49\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.1 \u5B9A\u4E49\u533A\u5757\u7EC4\u4EF6"},{id:"22-\u6CE8\u518C\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.2 \u6CE8\u518C\u533A\u5757\u7EC4\u4EF6"},{id:"23-\u9A8C\u8BC1\u533A\u5757\u7EC4\u4EF6",depth:4,title:"2.3 \u9A8C\u8BC1\u533A\u5757\u7EC4\u4EF6"},{id:"3-\u5B9A\u4E49\u533A\u5757-schema",depth:3,title:"3. \u5B9A\u4E49\u533A\u5757 Schema"},{id:"31-\u5B9A\u4E49\u533A\u5757-schema",depth:4,title:"3.1 \u5B9A\u4E49\u533A\u5757 Schema"},{id:"32-\u6CE8\u518C-scope",depth:4,title:"3.2 \u6CE8\u518C scope"},{id:"33-\u9A8C\u8BC1\u533A\u5757-schema",depth:4,title:"3.3 \u9A8C\u8BC1\u533A\u5757 Schema"},{id:"4-\u5B9A\u4E49-schema-initializer-item",depth:3,title:"4. \u5B9A\u4E49 Schema Initializer Item"},{id:"5-\u6DFB\u52A0\u5230-add-block-\u4E2D",depth:3,title:"5. \u6DFB\u52A0\u5230 Add block \u4E2D"},{id:"51-\u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B-add-block-\u4E2D",depth:4,title:"5.1 \u6DFB\u52A0\u5230\u9875\u9762\u7EA7\u522B Add block \u4E2D"},{id:"52-\u6DFB\u52A0\u5230\u5F39\u7A97-add-block-\u4E2D",depth:4,title:"5.2 \u6DFB\u52A0\u5230\u5F39\u7A97 Add block \u4E2D"},{id:"53-\u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF-add-block-\u4E2D",depth:4,title:"5.3 \u6DFB\u52A0\u5230\u79FB\u52A8\u7AEF Add block \u4E2D"},{id:"6-\u5B9E\u73B0-schema-settings",depth:3,title:"6. \u5B9E\u73B0 Schema Settings"},{id:"61-\u5B9A\u4E49-schema-settings",depth:4,title:"6.1 \u5B9A\u4E49 Schema Settings"},{id:"62-\u6CE8\u518C-schema-settings",depth:4,title:"6.2 \u6CE8\u518C Schema Settings"},{id:"63-\u4F7F\u7528-schema-settings",depth:4,title:"6.3 \u4F7F\u7528 Schema Settings"},{id:"7-\u5B9E\u73B0-schema-settings-items",depth:3,title:"7. \u5B9E\u73B0 Schema Settings items"},{id:"71-\u5B9E\u73B0-remove-\u64CD\u4F5C",depth:4,title:"7.1 \u5B9E\u73B0 remove \u64CD\u4F5C"},{id:"72-\u5B9E\u73B0-edit-block-title-\u64CD\u4F5C",depth:4,title:"7.2 \u5B9E\u73B0 Edit Block title \u64CD\u4F5C"},{id:"73-\u5B9E\u73B0-edit-images-\u64CD\u4F5C",depth:4,title:"7.3 \u5B9E\u73B0 Edit Images \u64CD\u4F5C"},{id:"731-\u5B9A\u4E49-schema-settings-item",depth:5,title:"7.3.1 \u5B9A\u4E49 Schema Settings item"},{id:"732-\u4F7F\u7528-schemasettings-item",depth:5,title:"7.3.2 \u4F7F\u7528 SchemaSettings Item"},{id:"74-\u5B9E\u73B0-edit-height",depth:4,title:"7.4 \u5B9E\u73B0 Edit Height"},{id:"741-\u5B9E\u73B0-schemasettings-item",depth:5,title:"7.4.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"742-\u4F7F\u7528-schemasettings-item",depth:5,title:"7.4.2 \u4F7F\u7528 SchemaSettings Item"},{id:"75-\u5B9E\u73B0-objectfit",depth:4,title:"7.5 \u5B9E\u73B0 ObjectFit"},{id:"751-\u5B9E\u73B0-schemasettings-item",depth:5,title:"7.5.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"752-\u4F7F\u7528-schemasettings-item",depth:5,title:"7.5.2 \u4F7F\u7528 SchemaSettings Item"},{id:"76-\u5B9E\u73B0-autoplay",depth:4,title:"7.6 \u5B9E\u73B0 Autoplay"},{id:"761-\u5B9E\u73B0-schemasettings-item",depth:5,title:"7.6.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"762-\u4F7F\u7528-schemasettings-item",depth:5,title:"7.6.2 \u4F7F\u7528 SchemaSettings Item"},{id:"77-\u589E\u52A0-divider",depth:4,title:"7.7 \u589E\u52A0 divider"},{id:"8-\u6743\u9650",depth:3,title:"8. \u6743\u9650"},{id:"9-\u591A\u8BED\u8A00",depth:3,title:"9. \u591A\u8BED\u8A00"},{id:"91-\u82F1\u6587",depth:4,title:"9.1 \u82F1\u6587"},{id:"92-\u4E2D\u6587",depth:4,title:"9.2 \u4E2D\u6587"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],aS=[{value:"Carousel",paraId:0},{value:"NocoBase \u6709\u5F88\u591A ",paraId:1,tocIndex:1},{value:"Add block",paraId:1,tocIndex:1},{value:" \u6309\u94AE\u7528\u4E8E\u5411\u754C\u9762\u6DFB\u52A0\u533A\u5757\uFF0C\u4F46\u662F\u76EE\u524D\u5DF2\u6709\u7684\u533A\u5757\u7C7B\u578B\u4E0D\u4E00\u5B9A\u6EE1\u8DB3\u6211\u4EEC\u7684\u9700\u6C42\uFF0C\u6211\u4EEC\u5C31\u9700\u8981\u6839\u636E\u9700\u6C42\u81EA\u5B9A\u5F00\u53D1\u4E00\u4E9B\u533A\u5757\u3002",paraId:1,tocIndex:1},{value:"\u5176\u4E2D\u6709\u4E9B\u548C\u6570\u636E\u8868\u6709\u5173\u7CFB\u7684\u88AB\u6210\u4E3A\u6570\u636E\u533A\u5757 ",paraId:2,tocIndex:1},{value:"Data Block",paraId:2,tocIndex:1},{value:"\uFF0C\u6709\u4E9B\u548C\u6570\u636E\u8868\u65E0\u5173\u7684\u88AB\u79F0\u4E3A\u7B80\u5355\u533A\u5757 ",paraId:2,tocIndex:1},{value:"Simple Block",paraId:2,tocIndex:1},{value:"\uFF0C\u672C\u7BC7\u6587\u7AE0\u5C31\u662F\u9488\u5BF9\u7B80\u5355\u533A\u5757 ",paraId:2,tocIndex:1},{value:"Simple Block",paraId:2,tocIndex:1},{value:" \u4E3E\u4F8B\u8BF4\u660E\u3002",paraId:2,tocIndex:1},{value:"\u672C\u5B9E\u4F8B\u4F1A\u57FA\u4E8E ant-design \u7684 ",paraId:3,tocIndex:2},{value:"Carousel",paraId:3,tocIndex:2},{value:" \u7EC4\u4EF6\u521B\u5EFA ",paraId:3,tocIndex:2},{value:"Carousel",paraId:3,tocIndex:2},{value:" \u533A\u5757\uFF0C\u5E76\u5C06\u5176\u6DFB\u52A0\u5230 ",paraId:3,tocIndex:2},{value:"Page",paraId:3,tocIndex:2},{value:"\u3001",paraId:3,tocIndex:2},{value:"Table",paraId:3,tocIndex:2},{value:" \u4EE5\u53CA\u79FB\u52A8\u7AEF\u7684 ",paraId:3,tocIndex:2},{value:"Add block",paraId:3,tocIndex:2},{value:" \u4E2D\u3002",paraId:3,tocIndex:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:4,tocIndex:2},{value:"plugin-samples",paraId:4,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:4,tocIndex:2},{value:` `,paraId:0},{value:"\u6211\u4EEC\u6309\u7167 ",paraId:5,tocIndex:3},{value:"\u7F16\u5199\u7B2C\u4E00\u4E2A\u63D2\u4EF6",paraId:6,tocIndex:3},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u5982\u679C\u6CA1\u6709\u4E00\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u5148\u521B\u5EFA\u4E00\u4E2A\u9879\u76EE\uFF0C\u5982\u679C\u5DF2\u7ECF\u6709\u4E86\u6216\u8005\u662F clone \u7684\u6E90\u7801\uFF0C\u5219\u8DF3\u8FC7\u8FD9\u4E00\u6B65\u3002",paraId:5,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -9580,7 +9632,7 @@ export const carouselSettings = new SchemaSettings({ } `,paraId:160,tocIndex:42},{value:"\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 ",paraId:161,tocIndex:42},{value:"http://localhost:13000/admin/settings/system-settings",paraId:161,tocIndex:42},{value:" \u6DFB\u52A0\u591A\u4E2A\u8BED\u8A00\uFF0C\u5E76\u4E14\u5728\u53F3\u4E0A\u89D2\u5207\u6362\u8BED\u8A00\u3002",paraId:161,tocIndex:42},{value:"\u6309\u7167 ",paraId:162,tocIndex:43},{value:"\u6784\u5EFA\u5E76\u6253\u5305\u63D2\u4EF6",paraId:163,tocIndex:43},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6253\u5305\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883\u3002",paraId:162,tocIndex:43},{value:"\u5982\u679C\u662F clone \u7684\u6E90\u7801\uFF0C\u9700\u8981\u5148\u6267\u884C\u4E00\u6B21\u5168\u91CF build\uFF0C\u5C06\u63D2\u4EF6\u7684\u4F9D\u8D56\u4E5F\u6784\u5EFA\u597D\u3002",paraId:164,tocIndex:43},{value:`yarn build `,paraId:165,tocIndex:43},{value:"\u5982\u679C\u662F\u4F7F\u7528\u7684 ",paraId:166,tocIndex:43},{value:"create-nocobase-app",paraId:166,tocIndex:43},{value:" \u521B\u5EFA\u7684\u9879\u76EE\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A",paraId:166,tocIndex:43},{value:`yarn build @nocobase-sample/plugin-block-carousel --tar -`,paraId:167,tocIndex:43},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:168,tocIndex:43},{value:"storage/tar/@nocobase-sample/plugin-block-carousel.tar.gz",paraId:168,tocIndex:43},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:168,tocIndex:43},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:169,tocIndex:43},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:168,tocIndex:43}],t5={},n5={title:"Form Configuration Page",toc:"menu",filename:"docs/en-US/plugin-samples/plugin-settings/form.md",lastUpdated:1732240239e3,description:"The configuration interface is composed of a form."},o5=[{id:"form-configuration-page",depth:1,title:"Form Configuration Page"},{id:"scenario-description",depth:2,title:"Scenario Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"backend-implementation",depth:2,title:"Backend Implementation"},{id:"1-create-the-database-table",depth:3,title:"1. Create the Database Table"},{id:"2-execute-the-update",depth:3,title:"2. Execute the Update"},{id:"frontend-implementation",depth:2,title:"Frontend Implementation"},{id:"1-create-the-plugin-configuration-page",depth:3,title:"1. Create the Plugin Configuration Page"},{id:"2-define-the-data-table-structure",depth:3,title:"2. Define the Data Table Structure"},{id:"3-create-form-schema",depth:3,title:"3. Create Form Schema"},{id:"4-create-the-form-component",depth:3,title:"4. Create the Form Component"},{id:"5-register-the-plugin-configuration-page",depth:3,title:"5. Register the Plugin Configuration Page"},{id:"6-use-configuration-data-inside-the-page",depth:3,title:"6. Use Configuration Data Inside the Page"},{id:"7-use-configuration-data-globally",depth:3,title:"7. Use Configuration Data Globally"},{id:"packaging-and-uploading-to-production-environment",depth:2,title:"Packaging and Uploading to Production Environment"}],r5=[{value:"The configuration interface is composed of a form.",paraId:0,tocIndex:1},{value:"Suppose we need to connect to a third-party map service and configure the map's ",paraId:1,tocIndex:2},{value:"key",paraId:1,tocIndex:2},{value:" and ",paraId:1,tocIndex:2},{value:"secret",paraId:1,tocIndex:2},{value:". We can add a configuration page via a plugin to fill in this information.",paraId:1,tocIndex:2},{value:"The complete example code in this document can be found in ",paraId:2,tocIndex:2},{value:"plugin-samples",paraId:2,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"Following the ",paraId:3,tocIndex:3},{value:"Writing Your First Plugin",paraId:4,tocIndex:3},{value:" document, if you don\u2019t have a project yet, you can create one first. If you already have one or have cloned the source code, you can skip this step.",paraId:3,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite +`,paraId:167,tocIndex:43},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:168,tocIndex:43},{value:"storage/tar/@nocobase-sample/plugin-block-carousel.tar.gz",paraId:168,tocIndex:43},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:168,tocIndex:43},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:169,tocIndex:43},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:168,tocIndex:43}],tS={},nS={title:"Form Configuration Page",toc:"menu",filename:"docs/en-US/plugin-samples/plugin-settings/form.md",lastUpdated:173254844e4,description:"The configuration interface is composed of a form."},oS=[{id:"form-configuration-page",depth:1,title:"Form Configuration Page"},{id:"scenario-description",depth:2,title:"Scenario Description"},{id:"example-description",depth:2,title:"Example Description"},{id:"initialize-the-plugin",depth:2,title:"Initialize the Plugin"},{id:"backend-implementation",depth:2,title:"Backend Implementation"},{id:"1-create-the-database-table",depth:3,title:"1. Create the Database Table"},{id:"2-execute-the-update",depth:3,title:"2. Execute the Update"},{id:"frontend-implementation",depth:2,title:"Frontend Implementation"},{id:"1-create-the-plugin-configuration-page",depth:3,title:"1. Create the Plugin Configuration Page"},{id:"2-define-the-data-table-structure",depth:3,title:"2. Define the Data Table Structure"},{id:"3-create-form-schema",depth:3,title:"3. Create Form Schema"},{id:"4-create-the-form-component",depth:3,title:"4. Create the Form Component"},{id:"5-register-the-plugin-configuration-page",depth:3,title:"5. Register the Plugin Configuration Page"},{id:"6-use-configuration-data-inside-the-page",depth:3,title:"6. Use Configuration Data Inside the Page"},{id:"7-use-configuration-data-globally",depth:3,title:"7. Use Configuration Data Globally"},{id:"packaging-and-uploading-to-production-environment",depth:2,title:"Packaging and Uploading to Production Environment"}],rS=[{value:"The configuration interface is composed of a form.",paraId:0,tocIndex:1},{value:"Suppose we need to connect to a third-party map service and configure the map's ",paraId:1,tocIndex:2},{value:"key",paraId:1,tocIndex:2},{value:" and ",paraId:1,tocIndex:2},{value:"secret",paraId:1,tocIndex:2},{value:". We can add a configuration page via a plugin to fill in this information.",paraId:1,tocIndex:2},{value:"The complete example code in this document can be found in ",paraId:2,tocIndex:2},{value:"plugin-samples",paraId:2,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"Following the ",paraId:3,tocIndex:3},{value:"Writing Your First Plugin",paraId:4,tocIndex:3},{value:" document, if you don\u2019t have a project yet, you can create one first. If you already have one or have cloned the source code, you can skip this step.",paraId:3,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install yarn nocobase install @@ -9826,11 +9878,11 @@ const useSubmitActionProps = (): ActionProps => { `,paraId:72,tocIndex:14},{value:` `,paraId:56},{value:"Following the ",paraId:73,tocIndex:15},{value:"Build and Package Plugin",paraId:74,tocIndex:15},{value:" document, we can package the plugin and upload it to the production environment.",paraId:73,tocIndex:15},{value:"If you've cloned the source code, you need to perform a full build first to package the plugin's dependencies.",paraId:75,tocIndex:15},{value:`yarn build `,paraId:76,tocIndex:15},{value:"If you used the ",paraId:77,tocIndex:15},{value:"create-nocobase-app",paraId:77,tocIndex:15},{value:" to create the project, you can directly execute:",paraId:77,tocIndex:15},{value:`yarn build @nocobase-sample/plugin-settings-form --tar -`,paraId:78,tocIndex:15},{value:"Then you\u2019ll see the ",paraId:79,tocIndex:15},{value:"storage/tar/@nocobase-sample/plugin-settings-form.tar.gz",paraId:79,tocIndex:15},{value:" file, which can be installed by following the ",paraId:79,tocIndex:15},{value:"uploading instructions",paraId:80,tocIndex:15},{value:".",paraId:79,tocIndex:15}],d5={},i5={title:"\u5EF6\u65F6",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/delay.md",lastUpdated:1732240239e3,description:"\u5EF6\u65F6\u8282\u70B9\u53EF\u4EE5\u5728\u6D41\u7A0B\u4E2D\u589E\u52A0\u4E00\u4E2A\u5EF6\u65F6\uFF0C\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u53EF\u6839\u636E\u914D\u7F6E\u662F\u7EE7\u7EED\u6267\u884C\u5EF6\u65F6\u7ED3\u675F\u540E\u7684\u8282\u70B9\u6216\u662F\u63D0\u524D\u7EC8\u6B62\u6D41\u7A0B\u3002"},l5=[{id:"\u5EF6\u65F6",depth:1,title:"\u5EF6\u65F6"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u5EF6\u65F6\u65F6\u95F4",depth:3,title:"\u5EF6\u65F6\u65F6\u95F4"},{id:"\u5230\u65F6\u72B6\u6001",depth:3,title:"\u5230\u65F6\u72B6\u6001"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],c5=[{value:"\u5EF6\u65F6\u8282\u70B9\u53EF\u4EE5\u5728\u6D41\u7A0B\u4E2D\u589E\u52A0\u4E00\u4E2A\u5EF6\u65F6\uFF0C\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u53EF\u6839\u636E\u914D\u7F6E\u662F\u7EE7\u7EED\u6267\u884C\u5EF6\u65F6\u7ED3\u675F\u540E\u7684\u8282\u70B9\u6216\u662F\u63D0\u524D\u7EC8\u6B62\u6D41\u7A0B\u3002",paraId:0,tocIndex:0},{value:"\u901A\u5E38\u914D\u5408\u5E76\u884C\u5206\u652F\u8282\u70B9\u4E00\u8D77\u4F7F\u7528\uFF0C\u53EF\u4EE5\u5728\u5176\u4E2D\u4E00\u4E2A\u5206\u652F\u4E2D\u589E\u52A0\u5EF6\u65F6\u8282\u70B9\uFF0C\u4EE5\u8FBE\u5230\u8D85\u65F6\u540E\u76F8\u5173\u5904\u7406\u7684\u76EE\u7684\u3002\u4F8B\u5982\u5E76\u884C\u5206\u652F\u4E2D\u5176\u4E2D\u4E00\u4E2A\u5206\u652F\u5305\u542B\u4EBA\u5DE5\u5904\u7406\uFF0C\u53E6\u4E00\u4E2A\u5206\u652F\u5305\u542B\u5EF6\u65F6\u8282\u70B9\uFF0C\u5F53\u4EBA\u5DE5\u5904\u7406\u8D85\u65F6\u540E\uFF0C\u5982\u679C\u8BBE\u7F6E\u7684\u662F\u8D85\u65F6\u5931\u8D25\uFF0C\u5219\u4EE3\u8868\u4EBA\u5DE5\u5904\u7406\u5FC5\u987B\u5728\u9650\u5B9A\u65F6\u95F4\u5185\u5B8C\u6210\uFF0C\u5982\u679C\u8BBE\u7F6E\u7684\u662F\u8D85\u65F6\u7EE7\u7EED\uFF0C\u5219\u4EE3\u8868\u5230\u65F6\u95F4\u540E\u53EF\u4EE5\u5FFD\u7565\u8BE5\u4EBA\u5DE5\u5904\u7406\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5EF6\u65F6\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u5EF6\u65F6\u65F6\u95F4\u53EF\u4EE5\u586B\u5199\u4E00\u4E2A\u6570\u5B57\uFF0C\u5E76\u9009\u62E9\u65F6\u95F4\u5355\u4F4D\uFF0C\u652F\u6301\u7684\u65F6\u95F4\u5355\u4F4D\u6709\uFF1A\u79D2\u3001\u5206\u949F\u3001\u5C0F\u65F6\u3001\u5929\u548C\u5468\u3002",paraId:3,tocIndex:3},{value:"\u5230\u65F6\u72B6\u6001\u53EF\u4EE5\u9009\u62E9\u201C\u901A\u8FC7\u5E76\u7EE7\u7EED\u201D\u548C\u201C\u5931\u8D25\u5E76\u9000\u51FA\u201D\uFF0C\u524D\u8005\u4EE3\u8868\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u6D41\u7A0B\u4F1A\u7EE7\u7EED\u6267\u884C\u5EF6\u65F6\u7ED3\u675F\u540E\u7684\u8282\u70B9\uFF0C\u540E\u8005\u4EE3\u8868\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u6D41\u7A0B\u4F1A\u4EE5\u5931\u8D25\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\u3002",paraId:4,tocIndex:4},{value:"\u4EE5\u5DE5\u5355\u53D1\u8D77\u540E\u9700\u8981\u5728\u9650\u65F6\u5185\u7B54\u590D\u7684\u573A\u666F\u4E3A\u4F8B\uFF0C\u6211\u4EEC\u9700\u8981\u5728\u5E76\u884C\u7684\u4E24\u4E2A\u5206\u652F\u4E2D\u5176\u4E00\u6DFB\u52A0\u4E00\u4E2A\u4EBA\u5DE5\u8282\u70B9\uFF0C\u53E6\u4E00\u4E2A\u5206\u652F\u6DFB\u52A0\u5EF6\u65F6\u8282\u70B9\uFF0C\u5982\u679C\u4EBA\u5DE5\u5904\u7406\u672A\u5728 10 \u5206\u949F\u5185\u7B54\u590D\uFF0C\u5219\u66F4\u65B0\u5DE5\u5355\u72B6\u6001\u4E3A\u8D85\u65F6\u672A\u5904\u7406\u3002",paraId:5,tocIndex:5}],s5={},u5={title:"\u6982\u8FF0",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/index.md",lastUpdated:1732240239e3,description:"\u8282\u70B9\u662F\u5DE5\u4F5C\u6D41\u4E2D\u903B\u8F91\u7F16\u6392\u7684\u57FA\u672C\u5355\u5143\uFF0C\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u8282\u70B9\uFF0C\u6BCF\u4E2A\u8282\u70B9\u7684\u7C7B\u578B\u4EE3\u8868\u4E00\u4E2A\u6307\u4EE4\uFF0C\u51B3\u5B9A\u4E86\u8282\u70B9\u7684\u884C\u4E3A\u3002\u8282\u70B9\u7684\u914D\u7F6E\u5373\u5BF9\u5E94\u6307\u4EE4\u7684\u53C2\u6570\uFF0C\u53C2\u6570\u51B3\u5B9A\u5176\u884C\u4E3A\u7684\u64CD\u4F5C\u6570\u636E\u5BF9\u8C61\u6216\u5176\u4ED6\u5185\u5BB9\u3002"},p5=[{id:"\u6982\u8FF0",depth:1,title:"\u6982\u8FF0"}],I5=[{value:"\u8282\u70B9\u662F\u5DE5\u4F5C\u6D41\u4E2D\u903B\u8F91\u7F16\u6392\u7684\u57FA\u672C\u5355\u5143\uFF0C\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u8282\u70B9\uFF0C\u6BCF\u4E2A\u8282\u70B9\u7684\u7C7B\u578B\u4EE3\u8868\u4E00\u4E2A\u6307\u4EE4\uFF0C\u51B3\u5B9A\u4E86\u8282\u70B9\u7684\u884C\u4E3A\u3002\u8282\u70B9\u7684\u914D\u7F6E\u5373\u5BF9\u5E94\u6307\u4EE4\u7684\u53C2\u6570\uFF0C\u53C2\u6570\u51B3\u5B9A\u5176\u884C\u4E3A\u7684\u64CD\u4F5C\u6570\u636E\u5BF9\u8C61\u6216\u5176\u4ED6\u5185\u5BB9\u3002",paraId:0,tocIndex:0},{value:"\u5DE5\u4F5C\u6D41\u7684\u89E6\u53D1\u5668\u4E0D\u5C5E\u4E8E\u8282\u70B9\uFF0C\u53EA\u662F\u4EE5\u5165\u53E3\u8282\u70B9\u7684\u5F62\u5F0F\u5C55\u793A\u5728\u6D41\u7A0B\u56FE\u4E2D\uFF0C\u4F46\u4E0E\u8282\u70B9\u662F\u4E0D\u540C\u7684\u6982\u5FF5\uFF0C\u8BE6\u60C5\u8BF7\u53C2\u8003",paraId:1},{value:"\u89E6\u53D1\u5668",paraId:2},{value:"\u7684\u5185\u5BB9\u3002",paraId:1},{value:"\u4ECE\u529F\u80FD\u89D2\u5EA6\uFF0C\u76EE\u524D\u5DF2\u5B9E\u73B0\u7684\u8282\u70B9\u53EF\u4EE5\u5206\u4E3A\u56DB\u5927\u7C7B\uFF08\u5171 14 \u79CD\u8282\u70B9\uFF09\uFF1A",paraId:3},{value:`\u6D41\u7A0B\u63A7\u5236\u7C7B +`,paraId:78,tocIndex:15},{value:"Then you\u2019ll see the ",paraId:79,tocIndex:15},{value:"storage/tar/@nocobase-sample/plugin-settings-form.tar.gz",paraId:79,tocIndex:15},{value:" file, which can be installed by following the ",paraId:79,tocIndex:15},{value:"uploading instructions",paraId:80,tocIndex:15},{value:".",paraId:79,tocIndex:15}],dS={},iS={title:"\u5EF6\u65F6",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/delay.md",lastUpdated:173254844e4,description:"\u5EF6\u65F6\u8282\u70B9\u53EF\u4EE5\u5728\u6D41\u7A0B\u4E2D\u589E\u52A0\u4E00\u4E2A\u5EF6\u65F6\uFF0C\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u53EF\u6839\u636E\u914D\u7F6E\u662F\u7EE7\u7EED\u6267\u884C\u5EF6\u65F6\u7ED3\u675F\u540E\u7684\u8282\u70B9\u6216\u662F\u63D0\u524D\u7EC8\u6B62\u6D41\u7A0B\u3002"},lS=[{id:"\u5EF6\u65F6",depth:1,title:"\u5EF6\u65F6"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u5EF6\u65F6\u65F6\u95F4",depth:3,title:"\u5EF6\u65F6\u65F6\u95F4"},{id:"\u5230\u65F6\u72B6\u6001",depth:3,title:"\u5230\u65F6\u72B6\u6001"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],cS=[{value:"\u5EF6\u65F6\u8282\u70B9\u53EF\u4EE5\u5728\u6D41\u7A0B\u4E2D\u589E\u52A0\u4E00\u4E2A\u5EF6\u65F6\uFF0C\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u53EF\u6839\u636E\u914D\u7F6E\u662F\u7EE7\u7EED\u6267\u884C\u5EF6\u65F6\u7ED3\u675F\u540E\u7684\u8282\u70B9\u6216\u662F\u63D0\u524D\u7EC8\u6B62\u6D41\u7A0B\u3002",paraId:0,tocIndex:0},{value:"\u901A\u5E38\u914D\u5408\u5E76\u884C\u5206\u652F\u8282\u70B9\u4E00\u8D77\u4F7F\u7528\uFF0C\u53EF\u4EE5\u5728\u5176\u4E2D\u4E00\u4E2A\u5206\u652F\u4E2D\u589E\u52A0\u5EF6\u65F6\u8282\u70B9\uFF0C\u4EE5\u8FBE\u5230\u8D85\u65F6\u540E\u76F8\u5173\u5904\u7406\u7684\u76EE\u7684\u3002\u4F8B\u5982\u5E76\u884C\u5206\u652F\u4E2D\u5176\u4E2D\u4E00\u4E2A\u5206\u652F\u5305\u542B\u4EBA\u5DE5\u5904\u7406\uFF0C\u53E6\u4E00\u4E2A\u5206\u652F\u5305\u542B\u5EF6\u65F6\u8282\u70B9\uFF0C\u5F53\u4EBA\u5DE5\u5904\u7406\u8D85\u65F6\u540E\uFF0C\u5982\u679C\u8BBE\u7F6E\u7684\u662F\u8D85\u65F6\u5931\u8D25\uFF0C\u5219\u4EE3\u8868\u4EBA\u5DE5\u5904\u7406\u5FC5\u987B\u5728\u9650\u5B9A\u65F6\u95F4\u5185\u5B8C\u6210\uFF0C\u5982\u679C\u8BBE\u7F6E\u7684\u662F\u8D85\u65F6\u7EE7\u7EED\uFF0C\u5219\u4EE3\u8868\u5230\u65F6\u95F4\u540E\u53EF\u4EE5\u5FFD\u7565\u8BE5\u4EBA\u5DE5\u5904\u7406\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5EF6\u65F6\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u5EF6\u65F6\u65F6\u95F4\u53EF\u4EE5\u586B\u5199\u4E00\u4E2A\u6570\u5B57\uFF0C\u5E76\u9009\u62E9\u65F6\u95F4\u5355\u4F4D\uFF0C\u652F\u6301\u7684\u65F6\u95F4\u5355\u4F4D\u6709\uFF1A\u79D2\u3001\u5206\u949F\u3001\u5C0F\u65F6\u3001\u5929\u548C\u5468\u3002",paraId:3,tocIndex:3},{value:"\u5230\u65F6\u72B6\u6001\u53EF\u4EE5\u9009\u62E9\u201C\u901A\u8FC7\u5E76\u7EE7\u7EED\u201D\u548C\u201C\u5931\u8D25\u5E76\u9000\u51FA\u201D\uFF0C\u524D\u8005\u4EE3\u8868\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u6D41\u7A0B\u4F1A\u7EE7\u7EED\u6267\u884C\u5EF6\u65F6\u7ED3\u675F\u540E\u7684\u8282\u70B9\uFF0C\u540E\u8005\u4EE3\u8868\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u6D41\u7A0B\u4F1A\u4EE5\u5931\u8D25\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\u3002",paraId:4,tocIndex:4},{value:"\u4EE5\u5DE5\u5355\u53D1\u8D77\u540E\u9700\u8981\u5728\u9650\u65F6\u5185\u7B54\u590D\u7684\u573A\u666F\u4E3A\u4F8B\uFF0C\u6211\u4EEC\u9700\u8981\u5728\u5E76\u884C\u7684\u4E24\u4E2A\u5206\u652F\u4E2D\u5176\u4E00\u6DFB\u52A0\u4E00\u4E2A\u4EBA\u5DE5\u8282\u70B9\uFF0C\u53E6\u4E00\u4E2A\u5206\u652F\u6DFB\u52A0\u5EF6\u65F6\u8282\u70B9\uFF0C\u5982\u679C\u4EBA\u5DE5\u5904\u7406\u672A\u5728 10 \u5206\u949F\u5185\u7B54\u590D\uFF0C\u5219\u66F4\u65B0\u5DE5\u5355\u72B6\u6001\u4E3A\u8D85\u65F6\u672A\u5904\u7406\u3002",paraId:5,tocIndex:5}],sS={},uS={title:"\u6982\u8FF0",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/index.md",lastUpdated:173254844e4,description:"\u8282\u70B9\u662F\u5DE5\u4F5C\u6D41\u4E2D\u903B\u8F91\u7F16\u6392\u7684\u57FA\u672C\u5355\u5143\uFF0C\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u8282\u70B9\uFF0C\u6BCF\u4E2A\u8282\u70B9\u7684\u7C7B\u578B\u4EE3\u8868\u4E00\u4E2A\u6307\u4EE4\uFF0C\u51B3\u5B9A\u4E86\u8282\u70B9\u7684\u884C\u4E3A\u3002\u8282\u70B9\u7684\u914D\u7F6E\u5373\u5BF9\u5E94\u6307\u4EE4\u7684\u53C2\u6570\uFF0C\u53C2\u6570\u51B3\u5B9A\u5176\u884C\u4E3A\u7684\u64CD\u4F5C\u6570\u636E\u5BF9\u8C61\u6216\u5176\u4ED6\u5185\u5BB9\u3002"},pS=[{id:"\u6982\u8FF0",depth:1,title:"\u6982\u8FF0"}],IS=[{value:"\u8282\u70B9\u662F\u5DE5\u4F5C\u6D41\u4E2D\u903B\u8F91\u7F16\u6392\u7684\u57FA\u672C\u5355\u5143\uFF0C\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u8282\u70B9\uFF0C\u6BCF\u4E2A\u8282\u70B9\u7684\u7C7B\u578B\u4EE3\u8868\u4E00\u4E2A\u6307\u4EE4\uFF0C\u51B3\u5B9A\u4E86\u8282\u70B9\u7684\u884C\u4E3A\u3002\u8282\u70B9\u7684\u914D\u7F6E\u5373\u5BF9\u5E94\u6307\u4EE4\u7684\u53C2\u6570\uFF0C\u53C2\u6570\u51B3\u5B9A\u5176\u884C\u4E3A\u7684\u64CD\u4F5C\u6570\u636E\u5BF9\u8C61\u6216\u5176\u4ED6\u5185\u5BB9\u3002",paraId:0,tocIndex:0},{value:"\u5DE5\u4F5C\u6D41\u7684\u89E6\u53D1\u5668\u4E0D\u5C5E\u4E8E\u8282\u70B9\uFF0C\u53EA\u662F\u4EE5\u5165\u53E3\u8282\u70B9\u7684\u5F62\u5F0F\u5C55\u793A\u5728\u6D41\u7A0B\u56FE\u4E2D\uFF0C\u4F46\u4E0E\u8282\u70B9\u662F\u4E0D\u540C\u7684\u6982\u5FF5\uFF0C\u8BE6\u60C5\u8BF7\u53C2\u8003",paraId:1},{value:"\u89E6\u53D1\u5668",paraId:2},{value:"\u7684\u5185\u5BB9\u3002",paraId:1},{value:"\u4ECE\u529F\u80FD\u89D2\u5EA6\uFF0C\u76EE\u524D\u5DF2\u5B9E\u73B0\u7684\u8282\u70B9\u53EF\u4EE5\u5206\u4E3A\u56DB\u5927\u7C7B\uFF08\u5171 14 \u79CD\u8282\u70B9\uFF09\uFF1A",paraId:3},{value:`\u6D41\u7A0B\u63A7\u5236\u7C7B `,paraId:4},{value:"\u6761\u4EF6\u5224\u65AD",paraId:5},{value:"\u8FD0\u7B97",paraId:6},{value:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97",paraId:7},{value:"\u5FAA\u73AF",paraId:8},{value:"\u5E76\u884C\u5206\u652F",paraId:9},{value:"\u5EF6\u65F6",paraId:10},{value:`\u6570\u636E\u8868\u64CD\u4F5C `,paraId:4},{value:"\u65B0\u589E\u6570\u636E",paraId:11},{value:"\u66F4\u65B0\u6570\u636E",paraId:12},{value:"\u5220\u9664\u6570\u636E",paraId:13},{value:"\u67E5\u8BE2\u6570\u636E",paraId:14},{value:"\u805A\u5408\u67E5\u8BE2",paraId:15},{value:"SQL \u64CD\u4F5C",paraId:16},{value:`\u4EBA\u5DE5\u5904\u7406 `,paraId:4},{value:"\u4EBA\u5DE5\u5904\u7406",paraId:17},{value:`\u5916\u90E8\u8C03\u7528 -`,paraId:4},{value:"HTTP \u8BF7\u6C42",paraId:18}],_5={},v5={title:"\u67E5\u8BE2\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/query.md",lastUpdated:1732240239e3,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u67E5\u8BE2\u5E76\u83B7\u53D6\u6570\u636E\u8BB0\u5F55\u3002"},m5=[{id:"\u67E5\u8BE2\u6570\u636E",depth:1,title:"\u67E5\u8BE2\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u67E5\u8BE2\u6A21\u5F0F",depth:3,title:"\u67E5\u8BE2\u6A21\u5F0F"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u6392\u5E8F",depth:3,title:"\u6392\u5E8F"},{id:"\u5206\u9875",depth:3,title:"\u5206\u9875"},{id:"\u7ED3\u679C\u4E3A\u7A7A\u7684\u5904\u7406",depth:3,title:"\u7ED3\u679C\u4E3A\u7A7A\u7684\u5904\u7406"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],h5=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u67E5\u8BE2\u5E76\u83B7\u53D6\u6570\u636E\u8BB0\u5F55\u3002",paraId:0,tocIndex:0},{value:"\u53EF\u4EE5\u914D\u7F6E\u67E5\u8BE2\u5355\u6761\u6570\u636E\u6216\u591A\u6761\u6570\u636E\uFF0C\u67E5\u8BE2\u7ED3\u679C\u53EF\u4EE5\u4F5C\u4E3A\u53D8\u91CF\u5728\u540E\u7EED\u8282\u70B9\u4F7F\u7528\u3002\u5F53\u67E5\u8BE2\u591A\u6761\u6570\u636E\u65F6\uFF0C\u67E5\u8BE2\u7ED3\u679C\u4E3A\u4E00\u4E2A\u6570\u7EC4\u3002\u5F53\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A\u65F6\uFF0C\u53EF\u4EE5\u9009\u62E9\u662F\u5426\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u8282\u70B9\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u67E5\u8BE2\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u9009\u62E9\u8981\u67E5\u8BE2\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:3,tocIndex:3},{value:"\u52FE\u9009\u201C\u5141\u8BB8\u7ED3\u679C\u662F\u591A\u6761\u6570\u636E\u201D\u540E\uFF0C\u5C06\u4F1A\u67E5\u8BE2\u51FA\u6EE1\u8DB3\u6761\u4EF6\u7684\u6240\u6709\u6570\u636E\uFF0C\u5426\u5219\u53EA\u4F1A\u67E5\u8BE2\u51FA\u6EE1\u8DB3\u6761\u4EF6\u7684\u7B2C\u4E00\u6761\u6570\u636E\u3002\u5982\u679C\u52FE\u9009\u4E86\u201C\u5141\u8BB8\u7ED3\u679C\u662F\u591A\u6761\u6570\u636E\u201D\uFF0C\u5219\u67E5\u8BE2\u8282\u70B9\u7684\u7ED3\u679C\u4F1A\u662F\u4E00\u4E2A\u6570\u7EC4\u7C7B\u578B\u3002",paraId:4,tocIndex:4},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:5,tocIndex:5},{value:"\u67E5\u8BE2\u4E00\u6761\u6216\u591A\u6761\u6570\u636E\u65F6\u5747\u53EF\u901A\u8FC7\u6392\u5E8F\u89C4\u5219\u6765\u63A7\u5236\u9700\u8981\u7684\u7ED3\u679C\u3002\u4F8B\u5982\u67E5\u8BE2\u6700\u65B0\u7684\u4E00\u6761\u6570\u636E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u201C\u521B\u5EFA\u65F6\u95F4\u201D\u5B57\u6BB5\u964D\u5E8F\u6392\u5E8F\u3002",paraId:6,tocIndex:6},{value:"\u5F53\u7ED3\u679C\u96C6\u53EF\u80FD\u4F1A\u5F88\u5927\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5206\u9875\u6765\u63A7\u5236\u67E5\u8BE2\u7ED3\u679C\u7684\u6570\u91CF\u3002\u4F8B\u5982\u67E5\u8BE2\u6700\u65B0\u7684 10 \u6761\u6570\u636E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u201C\u521B\u5EFA\u65F6\u95F4\u201D\u5B57\u6BB5\u964D\u5E8F\u6392\u5E8F\uFF0C\u7136\u540E\u8BBE\u7F6E\u5206\u9875\u4E3A 1 \u9875 10 \u6761\u6570\u636E\u3002",paraId:7,tocIndex:7},{value:"\u5728\u5355\u6761\u7ED3\u679C\u6A21\u5F0F\u4E0B\uFF0C\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6570\u636E\u7684\u8BDD\u67E5\u8BE2\u7ED3\u679C\u4F1A\u662F ",paraId:8,tocIndex:8},{value:"null",paraId:8,tocIndex:8},{value:"\uFF0C\u591A\u6761\u7ED3\u679C\u7684\u6A21\u5F0F\u4E0B\u662F\u7A7A\u6570\u7EC4\uFF08",paraId:8,tocIndex:8},{value:"[]",paraId:8,tocIndex:8},{value:"\uFF09\u3002\u53EF\u4EE5\u6839\u636E\u9700\u8981\u662F\u5426\u52FE\u9009\u201C\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A\u662F\uFF0C\u9000\u51FA\u6D41\u7A0B\u201D\uFF0C\u52FE\u9009\u540E\uFF0C\u5982\u679C\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A\uFF0C\u5219\u4E0D\u4F1A\u6267\u884C\u540E\u7EED\u8282\u70B9\uFF0C\u4EE5\u5931\u8D25\u7684\u72B6\u6001\u63D0\u524D\u9000\u51FA\u3002",paraId:8,tocIndex:8},{value:"TODO",paraId:9,tocIndex:9}],f5={},x5={title:"Workflow Form Trigger",toc:"menu",filename:"docs/en-US/plugins/workflow-form-trigger/index.md",lastUpdated:1732240239e3},g5=[],b5=[],y5={},w5={title:"Overview of Data Sources",toc:"menu",filename:"docs/en-US/handbook/data-modeling/data-source.md",lastUpdated:1732240239e3},k5=[{id:"overview-of-data-sources",depth:1,title:"Overview of Data Sources"}],S5=[],U5={},P5={title:"Data Source Manager",toc:"menu",filename:"docs/en-US/handbook/data-source-manager/index.md",lastUpdated:1732240239e3,description:"NocoBase provides a data source management plugin for managing data sources and their data tables. The data source management plugin only provides a management interface for all data sources and does not provide the ability to access data sources. It needs to be used in conjunction with various data source plugins. The data sources currently supported for access include:"},T5=[{id:"data-source-manager",depth:1,title:"Data Source Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"}],C5=[{value:"NocoBase provides a data source management plugin for managing data sources and their data tables. The data source management plugin only provides a management interface for all data sources and does not provide the ability to access data sources. It needs to be used in conjunction with various data source plugins. The data sources currently supported for access include:",paraId:0,tocIndex:1},{value:"Main Database",paraId:1,tocIndex:1},{value:": NocoBase's main database, supporting relational databases such as MySQL, PostgreSQL, SQLite, etc.",paraId:2,tocIndex:1},{value:"External MySQL",paraId:3,tocIndex:1},{value:": Use an external MySQL database as a data source.",paraId:2,tocIndex:1},{value:"External MariaDB",paraId:4,tocIndex:1},{value:": Use an external MariaDB database as a data source.",paraId:2,tocIndex:1},{value:"External PostgreSQL",paraId:5,tocIndex:1},{value:": Use an external PostgreSQL database as a data source.",paraId:2,tocIndex:1},{value:"In addition, more types can be extended through plugins, which can be common types of databases or platforms that provide APIs (SDKs).",paraId:6,tocIndex:1},{value:"Built-in plugin, no separate installation required.",paraId:7,tocIndex:2},{value:"When the application is initialized and installed, a data source will be provided by default to store NocoBase data, known as the main database. For more information, see the ",paraId:8,tocIndex:3},{value:"Main Database",paraId:9,tocIndex:3},{value:".",paraId:8,tocIndex:3},{value:"At the same time, it also supports external databases as data sources. For more information, see the ",paraId:10,tocIndex:3},{value:"External Database / Introduction",paraId:11,tocIndex:3},{value:".",paraId:10,tocIndex:3},{value:"You can also access data from HTTP API sources. For more information, see the ",paraId:12,tocIndex:3},{value:"HTTP API Data Source",paraId:13,tocIndex:3},{value:".",paraId:12,tocIndex:3}],A5={},q5={title:"Handlebars Template",toc:"menu",filename:"docs/en-US/handbook/template-handlebars/index.md",lastUpdated:1732240239e3,description:"Handlebars is a popular templating engine that allows us to dynamically embed data into HTML using a simple template syntax."},E5=[{id:"handlebars-template",depth:1,title:"Handlebars Template"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage",depth:2,title:"Usage"},{id:"basic-template-syntax",depth:3,title:"Basic Template Syntax"},{id:"comparison-operations",depth:3,title:"Comparison Operations"},{id:"mathematical-operations",depth:3,title:"Mathematical Operations"},{id:"string-handling",depth:3,title:"String Handling"},{id:"date-handling",depth:3,title:"Date Handling"},{id:"array-and-object-operations",depth:3,title:"Array and Object Operations"},{id:"more-helpers",depth:3,title:"More Helpers"}],D5=[{value:"Handlebars is a popular templating engine that allows us to dynamically embed data into HTML using a simple template syntax.",paraId:0,tocIndex:1},{value:"In Handlebars, the basic syntax includes:",paraId:1,tocIndex:3},{value:"Interpolation expression ",paraId:2,tocIndex:3},{value:"{{variable}}",paraId:2,tocIndex:3},{value:" to output data.",paraId:2,tocIndex:3},{value:"Conditional expression ",paraId:2,tocIndex:3},{value:"{{#if condition}}...{{/if}}",paraId:2,tocIndex:3},{value:" for logical conditions.",paraId:2,tocIndex:3},{value:"Looping ",paraId:2,tocIndex:3},{value:"{{#each array}}...{{/each}}",paraId:2,tocIndex:3},{value:" to iterate over arrays.",paraId:2,tocIndex:3},{value:"For example, given the following data:",paraId:3,tocIndex:3},{value:`const context = { +`,paraId:4},{value:"HTTP \u8BF7\u6C42",paraId:18}],_S={},vS={title:"\u67E5\u8BE2\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/query.md",lastUpdated:173254844e4,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u67E5\u8BE2\u5E76\u83B7\u53D6\u6570\u636E\u8BB0\u5F55\u3002"},mS=[{id:"\u67E5\u8BE2\u6570\u636E",depth:1,title:"\u67E5\u8BE2\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u67E5\u8BE2\u6A21\u5F0F",depth:3,title:"\u67E5\u8BE2\u6A21\u5F0F"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u6392\u5E8F",depth:3,title:"\u6392\u5E8F"},{id:"\u5206\u9875",depth:3,title:"\u5206\u9875"},{id:"\u7ED3\u679C\u4E3A\u7A7A\u7684\u5904\u7406",depth:3,title:"\u7ED3\u679C\u4E3A\u7A7A\u7684\u5904\u7406"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],hS=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u67E5\u8BE2\u5E76\u83B7\u53D6\u6570\u636E\u8BB0\u5F55\u3002",paraId:0,tocIndex:0},{value:"\u53EF\u4EE5\u914D\u7F6E\u67E5\u8BE2\u5355\u6761\u6570\u636E\u6216\u591A\u6761\u6570\u636E\uFF0C\u67E5\u8BE2\u7ED3\u679C\u53EF\u4EE5\u4F5C\u4E3A\u53D8\u91CF\u5728\u540E\u7EED\u8282\u70B9\u4F7F\u7528\u3002\u5F53\u67E5\u8BE2\u591A\u6761\u6570\u636E\u65F6\uFF0C\u67E5\u8BE2\u7ED3\u679C\u4E3A\u4E00\u4E2A\u6570\u7EC4\u3002\u5F53\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A\u65F6\uFF0C\u53EF\u4EE5\u9009\u62E9\u662F\u5426\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u8282\u70B9\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u67E5\u8BE2\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u9009\u62E9\u8981\u67E5\u8BE2\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:3,tocIndex:3},{value:"\u52FE\u9009\u201C\u5141\u8BB8\u7ED3\u679C\u662F\u591A\u6761\u6570\u636E\u201D\u540E\uFF0C\u5C06\u4F1A\u67E5\u8BE2\u51FA\u6EE1\u8DB3\u6761\u4EF6\u7684\u6240\u6709\u6570\u636E\uFF0C\u5426\u5219\u53EA\u4F1A\u67E5\u8BE2\u51FA\u6EE1\u8DB3\u6761\u4EF6\u7684\u7B2C\u4E00\u6761\u6570\u636E\u3002\u5982\u679C\u52FE\u9009\u4E86\u201C\u5141\u8BB8\u7ED3\u679C\u662F\u591A\u6761\u6570\u636E\u201D\uFF0C\u5219\u67E5\u8BE2\u8282\u70B9\u7684\u7ED3\u679C\u4F1A\u662F\u4E00\u4E2A\u6570\u7EC4\u7C7B\u578B\u3002",paraId:4,tocIndex:4},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:5,tocIndex:5},{value:"\u67E5\u8BE2\u4E00\u6761\u6216\u591A\u6761\u6570\u636E\u65F6\u5747\u53EF\u901A\u8FC7\u6392\u5E8F\u89C4\u5219\u6765\u63A7\u5236\u9700\u8981\u7684\u7ED3\u679C\u3002\u4F8B\u5982\u67E5\u8BE2\u6700\u65B0\u7684\u4E00\u6761\u6570\u636E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u201C\u521B\u5EFA\u65F6\u95F4\u201D\u5B57\u6BB5\u964D\u5E8F\u6392\u5E8F\u3002",paraId:6,tocIndex:6},{value:"\u5F53\u7ED3\u679C\u96C6\u53EF\u80FD\u4F1A\u5F88\u5927\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5206\u9875\u6765\u63A7\u5236\u67E5\u8BE2\u7ED3\u679C\u7684\u6570\u91CF\u3002\u4F8B\u5982\u67E5\u8BE2\u6700\u65B0\u7684 10 \u6761\u6570\u636E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u201C\u521B\u5EFA\u65F6\u95F4\u201D\u5B57\u6BB5\u964D\u5E8F\u6392\u5E8F\uFF0C\u7136\u540E\u8BBE\u7F6E\u5206\u9875\u4E3A 1 \u9875 10 \u6761\u6570\u636E\u3002",paraId:7,tocIndex:7},{value:"\u5728\u5355\u6761\u7ED3\u679C\u6A21\u5F0F\u4E0B\uFF0C\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6570\u636E\u7684\u8BDD\u67E5\u8BE2\u7ED3\u679C\u4F1A\u662F ",paraId:8,tocIndex:8},{value:"null",paraId:8,tocIndex:8},{value:"\uFF0C\u591A\u6761\u7ED3\u679C\u7684\u6A21\u5F0F\u4E0B\u662F\u7A7A\u6570\u7EC4\uFF08",paraId:8,tocIndex:8},{value:"[]",paraId:8,tocIndex:8},{value:"\uFF09\u3002\u53EF\u4EE5\u6839\u636E\u9700\u8981\u662F\u5426\u52FE\u9009\u201C\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A\u662F\uFF0C\u9000\u51FA\u6D41\u7A0B\u201D\uFF0C\u52FE\u9009\u540E\uFF0C\u5982\u679C\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A\uFF0C\u5219\u4E0D\u4F1A\u6267\u884C\u540E\u7EED\u8282\u70B9\uFF0C\u4EE5\u5931\u8D25\u7684\u72B6\u6001\u63D0\u524D\u9000\u51FA\u3002",paraId:8,tocIndex:8},{value:"TODO",paraId:9,tocIndex:9}],fS={},xS={title:"Workflow Form Trigger",toc:"menu",filename:"docs/en-US/plugins/workflow-form-trigger/index.md",lastUpdated:173254844e4},gS=[],bS=[],yS={},wS={title:"Overview of Data Sources",toc:"menu",filename:"docs/en-US/handbook/data-modeling/data-source.md",lastUpdated:173254844e4},kS=[{id:"overview-of-data-sources",depth:1,title:"Overview of Data Sources"}],SS=[],US={},PS={title:"Data Source Manager",toc:"menu",filename:"docs/en-US/handbook/data-source-manager/index.md",lastUpdated:173254844e4,description:"NocoBase provides a data source management plugin for managing data sources and their data tables. The data source management plugin only provides a management interface for all data sources and does not provide the ability to access data sources. It needs to be used in conjunction with various data source plugins. The data sources currently supported for access include:"},TS=[{id:"data-source-manager",depth:1,title:"Data Source Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"}],CS=[{value:"NocoBase provides a data source management plugin for managing data sources and their data tables. The data source management plugin only provides a management interface for all data sources and does not provide the ability to access data sources. It needs to be used in conjunction with various data source plugins. The data sources currently supported for access include:",paraId:0,tocIndex:1},{value:"Main Database",paraId:1,tocIndex:1},{value:": NocoBase's main database, supporting relational databases such as MySQL, PostgreSQL, SQLite, etc.",paraId:2,tocIndex:1},{value:"External MySQL",paraId:3,tocIndex:1},{value:": Use an external MySQL database as a data source.",paraId:2,tocIndex:1},{value:"External MariaDB",paraId:4,tocIndex:1},{value:": Use an external MariaDB database as a data source.",paraId:2,tocIndex:1},{value:"External PostgreSQL",paraId:5,tocIndex:1},{value:": Use an external PostgreSQL database as a data source.",paraId:2,tocIndex:1},{value:"In addition, more types can be extended through plugins, which can be common types of databases or platforms that provide APIs (SDKs).",paraId:6,tocIndex:1},{value:"Built-in plugin, no separate installation required.",paraId:7,tocIndex:2},{value:"When the application is initialized and installed, a data source will be provided by default to store NocoBase data, known as the main database. For more information, see the ",paraId:8,tocIndex:3},{value:"Main Database",paraId:9,tocIndex:3},{value:".",paraId:8,tocIndex:3},{value:"At the same time, it also supports external databases as data sources. For more information, see the ",paraId:10,tocIndex:3},{value:"External Database / Introduction",paraId:11,tocIndex:3},{value:".",paraId:10,tocIndex:3},{value:"You can also access data from HTTP API sources. For more information, see the ",paraId:12,tocIndex:3},{value:"HTTP API Data Source",paraId:13,tocIndex:3},{value:".",paraId:12,tocIndex:3}],AS={},qS={title:"Handlebars Template",toc:"menu",filename:"docs/en-US/handbook/template-handlebars/index.md",lastUpdated:173254844e4,description:"Handlebars is a popular templating engine that allows us to dynamically embed data into HTML using a simple template syntax."},ES=[{id:"handlebars-template",depth:1,title:"Handlebars Template"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage",depth:2,title:"Usage"},{id:"basic-template-syntax",depth:3,title:"Basic Template Syntax"},{id:"comparison-operations",depth:3,title:"Comparison Operations"},{id:"mathematical-operations",depth:3,title:"Mathematical Operations"},{id:"string-handling",depth:3,title:"String Handling"},{id:"date-handling",depth:3,title:"Date Handling"},{id:"array-and-object-operations",depth:3,title:"Array and Object Operations"},{id:"more-helpers",depth:3,title:"More Helpers"}],DS=[{value:"Handlebars is a popular templating engine that allows us to dynamically embed data into HTML using a simple template syntax.",paraId:0,tocIndex:1},{value:"In Handlebars, the basic syntax includes:",paraId:1,tocIndex:3},{value:"Interpolation expression ",paraId:2,tocIndex:3},{value:"{{variable}}",paraId:2,tocIndex:3},{value:" to output data.",paraId:2,tocIndex:3},{value:"Conditional expression ",paraId:2,tocIndex:3},{value:"{{#if condition}}...{{/if}}",paraId:2,tocIndex:3},{value:" for logical conditions.",paraId:2,tocIndex:3},{value:"Looping ",paraId:2,tocIndex:3},{value:"{{#each array}}...{{/each}}",paraId:2,tocIndex:3},{value:" to iterate over arrays.",paraId:2,tocIndex:3},{value:"For example, given the following data:",paraId:3,tocIndex:3},{value:`const context = { title: "Handlebars Template Example", items: ["Apple", "Banana", "Orange"] }; @@ -9866,11 +9918,11 @@ const useSubmitActionProps = (): ActionProps => { `,paraId:22,tocIndex:6},{value:"For more content, refer to",paraId:23,tocIndex:6},{value:"String",paraId:24,tocIndex:6},{value:`

{{dateFormat "2024-09-25" "YYYY"}}

`,paraId:25,tocIndex:7},{value:"For more content refer to",paraId:26,tocIndex:7},{value:"Date",paraId:27,tocIndex:7},{value:`

First element: {{first items}}

Last element: {{last items}}

-`,paraId:28,tocIndex:8},{value:"For more content, refer to",paraId:29,tocIndex:8},{value:"Array",paraId:30,tocIndex:8},{value:"Object",paraId:31,tocIndex:8},{value:"Category",paraId:32,tocIndex:9},{value:"Description",paraId:32,tocIndex:9},{value:"Core",paraId:33,tocIndex:9},{value:"Built-in Handlebars methods",paraId:32,tocIndex:9},{value:"Array",paraId:34,tocIndex:9},{value:"Methods for handling arrays",paraId:32,tocIndex:9},{value:"Comparison",paraId:35,tocIndex:9},{value:"Comparison operators and methods",paraId:32,tocIndex:9},{value:"Date",paraId:36,tocIndex:9},{value:"Methods for date and time",paraId:32,tocIndex:9},{value:"HTML",paraId:37,tocIndex:9},{value:"Methods for HTML document handling",paraId:32,tocIndex:9},{value:"I18n",paraId:38,tocIndex:9},{value:"Internationalization support",paraId:32,tocIndex:9},{value:"Math",paraId:39,tocIndex:9},{value:"Mathematical functions",paraId:32,tocIndex:9},{value:"Number",paraId:40,tocIndex:9},{value:"Number formatting and handling",paraId:32,tocIndex:9},{value:"Object",paraId:41,tocIndex:9},{value:"Methods for object handling",paraId:32,tocIndex:9},{value:"Path",paraId:42,tocIndex:9},{value:"Methods for path and filesystem",paraId:32,tocIndex:9},{value:"Regex",paraId:43,tocIndex:9},{value:"Regular expression methods",paraId:32,tocIndex:9},{value:"String",paraId:44,tocIndex:9},{value:"String manipulation methods",paraId:32,tocIndex:9},{value:"URL",paraId:45,tocIndex:9},{value:"URL parsing and building methods",paraId:32,tocIndex:9}],O5={},R5={title:"Block Template",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-templates.md",lastUpdated:1732240239e3,description:"Save a data block as a template, enabling you to effortlessly copy or reference this template when adding new blocks in the future. For instance, if a form for a data table is used both for adding new records and editing existing ones, you can save this form as a template and reference it in both the data entry and editing interfaces."},M5=[{id:"block-template",depth:1,title:"Block Template"},{id:"introduction",depth:2,title:"Introduction"},{id:"how-to-add-and-use-a-template",depth:2,title:"How to Add and Use a Template?"},{id:"copying-vs-referencing-whats-the-difference",depth:2,title:"Copying vs. Referencing: What's the Difference?"},{id:"important-notes",depth:2,title:"Important Notes"}],L5=[{value:"Save a data block as a template, enabling you to effortlessly copy or reference this template when adding new blocks in the future. For instance, if a form for a data table is used both for adding new records and editing existing ones, you can save this form as a template and reference it in both the data entry and editing interfaces.",paraId:0,tocIndex:1},{value:"Save as block template.",paraId:1,tocIndex:2},{value:"When adding a block, choose ",paraId:2,tocIndex:2},{value:"Reference template",paraId:2,tocIndex:2},{value:" or ",paraId:2,tocIndex:2},{value:"Duplicate template",paraId:2,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"Copying creates an entirely new block based on the block template, allowing for adjustments without affecting the original template. Referencing, on the other hand, directly uses the block template. Any changes made to a referenced block will modify the template itself, affecting all blocks that reference it.",paraId:3,tocIndex:3},{value:"Templates created with relationship blocks can only be used to create relationship blocks.",paraId:4,tocIndex:4},{value:"Templates created with non-relationship blocks can only be used to create non-relationship blocks.",paraId:4,tocIndex:4}],N5={},z5={title:"Nester",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/nester.md",lastUpdated:1732240239e3,description:"Sub-form offer an elegant solution for scenarios where relational data needs to be created before association. They present multi-level relational data in a clear, nested structure. Unlike data selectors and dropdown menus, subforms allow direct management of relational table fields within the current page block. Moreover, they ensure that relational data is submitted seamlessly alongside the main form."},F5=[{id:"nester",depth:1,title:"Nester"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"subforms-for-many-to-many-relationships",depth:3,title:"Subforms for Many-to-Many Relationships"},{id:"subforms-for-one-to-one-relationships",depth:3,title:"Subforms for One-to-One Relationships"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"multiple-record-additionassociation-enabled-by-default",depth:3,title:"Multiple Record Addition/Association (Enabled by Default)"},{id:"field-component",depth:3,title:"Field Component"},{id:"linkage-rules",depth:3,title:"Linkage Rules"}],B5=[{value:"Sub-form offer an elegant solution for scenarios where relational data needs to be created before association. They present multi-level relational data in a clear, nested structure. Unlike data selectors and dropdown menus, subforms allow direct management of relational table fields within the current page block. Moreover, they ensure that relational data is submitted seamlessly alongside the main form.",paraId:0,tocIndex:1},{value:"Effortlessly display nested multi-level relationship fields, such as products and their associated inventory.",paraId:1,tocIndex:3},{value:"When activated, this feature allows users to add multiple records with a simple click of the + icon.",paraId:2,tocIndex:6},{value:"Field Component",paraId:3,tocIndex:7},{value:": Switch to other relationship field components, such as dropdown select, data selector, etc.",paraId:4,tocIndex:7},{value:"The version of NocoBase needs to be v1.3.17-beta or above.",paraId:5},{value:"For more information, refer to ",paraId:6},{value:"Linkage Rules",paraId:7}],j5={},H5={title:"Record picker",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/picker.md",lastUpdated:1732240239e3,description:"The Record picker, presented as a popup table selector, allows users to select existing data associations for the target table or add new data to the target table and then associate it."},W5=[{id:"record-picker",depth:1,title:"Record picker"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"allow-adding-data",depth:3,title:"Allow Adding Data"},{id:"allow-addingassociating-multiple-items",depth:3,title:"Allow Adding/Associating Multiple Items"},{id:"title-field",depth:3,title:"Title Field"}],$5=[{value:"The ",paraId:0,tocIndex:1},{value:"Record picker",paraId:0,tocIndex:1},{value:", presented as a popup table selector, allows users to select existing data associations for the target table or add new data to the target table and then associate it.",paraId:0,tocIndex:1},{value:'The order table features a many-to-many relationship field called "Products".',paraId:1,tocIndex:1},{value:"Data that has already been selected will not appear in the table selector.",paraId:2,tocIndex:1},{value:` +`,paraId:28,tocIndex:8},{value:"For more content, refer to",paraId:29,tocIndex:8},{value:"Array",paraId:30,tocIndex:8},{value:"Object",paraId:31,tocIndex:8},{value:"Category",paraId:32,tocIndex:9},{value:"Description",paraId:32,tocIndex:9},{value:"Core",paraId:33,tocIndex:9},{value:"Built-in Handlebars methods",paraId:32,tocIndex:9},{value:"Array",paraId:34,tocIndex:9},{value:"Methods for handling arrays",paraId:32,tocIndex:9},{value:"Comparison",paraId:35,tocIndex:9},{value:"Comparison operators and methods",paraId:32,tocIndex:9},{value:"Date",paraId:36,tocIndex:9},{value:"Methods for date and time",paraId:32,tocIndex:9},{value:"HTML",paraId:37,tocIndex:9},{value:"Methods for HTML document handling",paraId:32,tocIndex:9},{value:"I18n",paraId:38,tocIndex:9},{value:"Internationalization support",paraId:32,tocIndex:9},{value:"Math",paraId:39,tocIndex:9},{value:"Mathematical functions",paraId:32,tocIndex:9},{value:"Number",paraId:40,tocIndex:9},{value:"Number formatting and handling",paraId:32,tocIndex:9},{value:"Object",paraId:41,tocIndex:9},{value:"Methods for object handling",paraId:32,tocIndex:9},{value:"Path",paraId:42,tocIndex:9},{value:"Methods for path and filesystem",paraId:32,tocIndex:9},{value:"Regex",paraId:43,tocIndex:9},{value:"Regular expression methods",paraId:32,tocIndex:9},{value:"String",paraId:44,tocIndex:9},{value:"String manipulation methods",paraId:32,tocIndex:9},{value:"URL",paraId:45,tocIndex:9},{value:"URL parsing and building methods",paraId:32,tocIndex:9}],OS={},RS={title:"Block Template",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/block-templates.md",lastUpdated:173254844e4,description:"Save a data block as a template, enabling you to effortlessly copy or reference this template when adding new blocks in the future. For instance, if a form for a data table is used both for adding new records and editing existing ones, you can save this form as a template and reference it in both the data entry and editing interfaces."},MS=[{id:"block-template",depth:1,title:"Block Template"},{id:"introduction",depth:2,title:"Introduction"},{id:"how-to-add-and-use-a-template",depth:2,title:"How to Add and Use a Template?"},{id:"copying-vs-referencing-whats-the-difference",depth:2,title:"Copying vs. Referencing: What's the Difference?"},{id:"important-notes",depth:2,title:"Important Notes"}],LS=[{value:"Save a data block as a template, enabling you to effortlessly copy or reference this template when adding new blocks in the future. For instance, if a form for a data table is used both for adding new records and editing existing ones, you can save this form as a template and reference it in both the data entry and editing interfaces.",paraId:0,tocIndex:1},{value:"Save as block template.",paraId:1,tocIndex:2},{value:"When adding a block, choose ",paraId:2,tocIndex:2},{value:"Reference template",paraId:2,tocIndex:2},{value:" or ",paraId:2,tocIndex:2},{value:"Duplicate template",paraId:2,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"Copying creates an entirely new block based on the block template, allowing for adjustments without affecting the original template. Referencing, on the other hand, directly uses the block template. Any changes made to a referenced block will modify the template itself, affecting all blocks that reference it.",paraId:3,tocIndex:3},{value:"Templates created with relationship blocks can only be used to create relationship blocks.",paraId:4,tocIndex:4},{value:"Templates created with non-relationship blocks can only be used to create non-relationship blocks.",paraId:4,tocIndex:4}],NS={},zS={title:"Nester",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/nester.md",lastUpdated:173254844e4,description:"Sub-form offer an elegant solution for scenarios where relational data needs to be created before association. They present multi-level relational data in a clear, nested structure. Unlike data selectors and dropdown menus, subforms allow direct management of relational table fields within the current page block. Moreover, they ensure that relational data is submitted seamlessly alongside the main form."},FS=[{id:"nester",depth:1,title:"Nester"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"subforms-for-many-to-many-relationships",depth:3,title:"Subforms for Many-to-Many Relationships"},{id:"subforms-for-one-to-one-relationships",depth:3,title:"Subforms for One-to-One Relationships"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"multiple-record-additionassociation-enabled-by-default",depth:3,title:"Multiple Record Addition/Association (Enabled by Default)"},{id:"field-component",depth:3,title:"Field Component"},{id:"linkage-rules",depth:3,title:"Linkage Rules"}],BS=[{value:"Sub-form offer an elegant solution for scenarios where relational data needs to be created before association. They present multi-level relational data in a clear, nested structure. Unlike data selectors and dropdown menus, subforms allow direct management of relational table fields within the current page block. Moreover, they ensure that relational data is submitted seamlessly alongside the main form.",paraId:0,tocIndex:1},{value:"Effortlessly display nested multi-level relationship fields, such as products and their associated inventory.",paraId:1,tocIndex:3},{value:"When activated, this feature allows users to add multiple records with a simple click of the + icon.",paraId:2,tocIndex:6},{value:"Field Component",paraId:3,tocIndex:7},{value:": Switch to other relationship field components, such as dropdown select, data selector, etc.",paraId:4,tocIndex:7},{value:"The version of NocoBase needs to be v1.3.17-beta or above.",paraId:5},{value:"For more information, refer to ",paraId:6},{value:"Linkage Rules",paraId:7}],jS={},HS={title:"Record picker",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/picker.md",lastUpdated:173254844e4,description:"The Record picker, presented as a popup table selector, allows users to select existing data associations for the target table or add new data to the target table and then associate it."},WS=[{id:"record-picker",depth:1,title:"Record picker"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"allow-adding-data",depth:3,title:"Allow Adding Data"},{id:"allow-addingassociating-multiple-items",depth:3,title:"Allow Adding/Associating Multiple Items"},{id:"title-field",depth:3,title:"Title Field"}],$S=[{value:"The ",paraId:0,tocIndex:1},{value:"Record picker",paraId:0,tocIndex:1},{value:", presented as a popup table selector, allows users to select existing data associations for the target table or add new data to the target table and then associate it.",paraId:0,tocIndex:1},{value:'The order table features a many-to-many relationship field called "Products".',paraId:1,tocIndex:1},{value:"Data that has already been selected will not appear in the table selector.",paraId:2,tocIndex:1},{value:` `,paraId:3},{value:"Within the table selector, users can further manage the relationship target table (add, delete, import, export, etc.).",paraId:4,tocIndex:1},{value:"This option enables users to add data to the target table and then select that newly added data.",paraId:5,tocIndex:3},{value:` - `,paraId:3},{value:"This setting restricts multiple relationship data to allow associating only one piece of data.",paraId:6,tocIndex:4},{value:"For more information, refer to ",paraId:7,tocIndex:5},{value:"Title Field",paraId:8,tocIndex:5},{value:"Popup Size",paraId:9,tocIndex:5},{value:"Field Components",paraId:10,tocIndex:5}],G5={},V5={title:"Select",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/select.md",lastUpdated:1732240239e3,description:"The selector offers a streamlined way to select or associate data within the target table, whether you're working with existing records or newly added entries. The dropdown options also support fuzzy search for easier navigation."},K5=[{id:"select",depth:1,title:"Select"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"quick-creation-add-data-first-then-select",depth:3,title:"Quick Creation: Add Data First, Then Select"},{id:"add-via-dropdown-menu",depth:4,title:"Add via Dropdown Menu"},{id:"add-popup",depth:4,title:"Add Popup"},{id:"set-data-range",depth:3,title:"Set Data Range"},{id:"set-sorting-rules",depth:3,title:"Set Sorting Rules"},{id:"allow-multiple-addassociate",depth:3,title:"Allow Multiple Add/Associate"},{id:"title-field",depth:3,title:"Title Field"}],Z5=[{value:"The selector offers a streamlined way to select or associate data within the target table, whether you're working with existing records or newly added entries. The dropdown options also support fuzzy search for easier navigation.",paraId:0,tocIndex:1},{value:"When new data is added to the target table, it will be automatically selected and linked upon form submission. This method is ideal for straightforward data scenarios, such as tagging.",paraId:1,tocIndex:4},{value:'For example, the order table contains a many-to-one relationship field called "Tag"',paraId:2,tocIndex:4},{value:` + `,paraId:3},{value:"This setting restricts multiple relationship data to allow associating only one piece of data.",paraId:6,tocIndex:4},{value:"For more information, refer to ",paraId:7,tocIndex:5},{value:"Title Field",paraId:8,tocIndex:5},{value:"Popup Size",paraId:9,tocIndex:5},{value:"Field Components",paraId:10,tocIndex:5}],GS={},VS={title:"Select",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/select.md",lastUpdated:173254844e4,description:"The selector offers a streamlined way to select or associate data within the target table, whether you're working with existing records or newly added entries. The dropdown options also support fuzzy search for easier navigation."},KS=[{id:"select",depth:1,title:"Select"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"quick-creation-add-data-first-then-select",depth:3,title:"Quick Creation: Add Data First, Then Select"},{id:"add-via-dropdown-menu",depth:4,title:"Add via Dropdown Menu"},{id:"add-popup",depth:4,title:"Add Popup"},{id:"set-data-range",depth:3,title:"Set Data Range"},{id:"set-sorting-rules",depth:3,title:"Set Sorting Rules"},{id:"allow-multiple-addassociate",depth:3,title:"Allow Multiple Add/Associate"},{id:"title-field",depth:3,title:"Title Field"}],ZS=[{value:"The selector offers a streamlined way to select or associate data within the target table, whether you're working with existing records or newly added entries. The dropdown options also support fuzzy search for easier navigation.",paraId:0,tocIndex:1},{value:"When new data is added to the target table, it will be automatically selected and linked upon form submission. This method is ideal for straightforward data scenarios, such as tagging.",paraId:1,tocIndex:4},{value:'For example, the order table contains a many-to-one relationship field called "Tag"',paraId:2,tocIndex:4},{value:` `,paraId:3},{value:"This option allows you to configure a new form in a popup window, making it suitable for more complex scenarios, such as product entries.",paraId:4,tocIndex:5},{value:'For instance, the order table includes a many-to-many relationship field named "Products."',paraId:5,tocIndex:5},{value:` - `,paraId:3},{value:"Define the range of data that will appear in the dropdown list.",paraId:6,tocIndex:6},{value:"For more information, refer to ",paraId:7,tocIndex:6},{value:"Set Data Range",paraId:8,tocIndex:6},{value:".",paraId:7,tocIndex:6},{value:"Determine the order in which the dropdown options are displayed.",paraId:9,tocIndex:7},{value:"Example: Display in descending order based on the production date.",paraId:10,tocIndex:7},{value:"Limit the association in many-to-many relationship fields to a single data item.",paraId:11,tocIndex:8},{value:"For additional details, see ",paraId:12,tocIndex:9},{value:"Title Field",paraId:13,tocIndex:9},{value:".",paraId:12,tocIndex:9},{value:"Field Components",paraId:14,tocIndex:9}],Y5={},Q5={title:"Advanced Options",toc:"menu",filename:"docs/en-US/handbook/workflow/advanced/options.md",lastUpdated:1732240239e3,description:'Workflow execution is based on the trigger type selected when creating, and can be executed in "Asynchronously" or "Synchronously" mode. "Asynchronously" mode means that after a specific event is triggered, it will enter the execution queue and be executed one by one by the background scheduler, while "synchronously" mode will not enter the scheduling queue after triggering, and will start execution directly, and will immediately provide feedback after execution.'},J5=[{id:"advanced-options",depth:1,title:"Advanced Options"},{id:"execution-modes",depth:2,title:"Execution Modes"},{id:"automatically-delete-history",depth:2,title:"Automatically Delete History"}],X5=[{value:'Workflow execution is based on the trigger type selected when creating, and can be executed in "Asynchronously" or "Synchronously" mode. "Asynchronously" mode means that after a specific event is triggered, it will enter the execution queue and be executed one by one by the background scheduler, while "synchronously" mode will not enter the scheduling queue after triggering, and will start execution directly, and will immediately provide feedback after execution.',paraId:0,tocIndex:1},{value:"Collection event, post-action event, custom action event, schedule event and approval event will be executed asynchronously by default, while pre-action event will be executed synchronously by default. Among them, collection event, post-action event and custom action event support both modes, and you can choose when creating a workflow:",paraId:1,tocIndex:1},{value:'Synchronously mode workflow are limited by their mode and cannot use nodes that generate a "pending" status, such as "manual process" etc.',paraId:2},{value:"When workflows are triggered frequently, you can reduce interference and database storage pressure by configuring automatic deletion of historical executions.",paraId:3,tocIndex:2},{value:"Similarly, in the pop-up for creating and editing workflows, you can configure whether the corresponding process automatically deletes history:",paraId:4,tocIndex:2},{value:'Automatic deletion can be configured based on the status of the execution. In most cases, it is recommended to only select the "Succeeded" status, so that history of execution failures can be retained for subsequent troubleshooting.',paraId:5,tocIndex:2},{value:"It is recommended not to enable automatic deletion of history when debugging workflows, so that the execution logic of the workflows can be reviewed in history.",paraId:6,tocIndex:2},{value:"Deleting the history of workflows will not reduce the count of workflows already executed.",paraId:7}],e6={},a6={title:"JSON Query",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/json-query.md",lastUpdated:1732240239e3,description:"This plugin is designed to parse complex JSON data generated by various nodes, enabling subsequent nodes to effectively utilize this data. For instance, SQL operations and HTTP request nodes often return results in JSON format. The JSON query node allows you to transform this data into the specific values and variable formats required by later stages in the workflow."},t6=[{id:"json-query",depth:1,title:"JSON Query"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"parsing-engine",depth:4,title:"Parsing Engine"},{id:"data-source",depth:4,title:"Data Source"},{id:"parsing-expression",depth:4,title:"Parsing Expression"},{id:"properties-mapping",depth:4,title:"Properties mapping"},{id:"example",depth:3,title:"Example"}],n6=[{value:"This plugin is designed to parse complex JSON data generated by various nodes, enabling subsequent nodes to effectively utilize this data. For instance, SQL operations and HTTP request nodes often return results in JSON format. The JSON query node allows you to transform this data into the specific values and variable formats required by later stages in the workflow.",paraId:0},{value:"To add a \u201CJSON query\u201D node in the workflow configuration interface, simply click the plus (\u201C+\u201D) button within the process:",paraId:1,tocIndex:2},{value:"JSON query nodes are generally positioned beneath other data nodes to facilitate parsing their output.",paraId:2},{value:"The JSON query node offers support for various parsing engines, each with its own unique syntax. You can select an engine based on your specific needs and preferences. Currently, three parsing engines are available:",paraId:3,tocIndex:4},{value:"JMESPath",paraId:4,tocIndex:4},{value:"JSONPath Plus",paraId:4,tocIndex:4},{value:"JSONata",paraId:4,tocIndex:4},{value:"The data source can be either the output of an upstream node or a data object within the process context. This is typically an unstructured data object, such as the results from an SQL node or an HTTP request node.",paraId:5,tocIndex:5},{value:"Data objects related to data tables are usually already structured through table configuration information and do not typically require parsing by a JSON query node.",paraId:6},{value:"You can create a custom parsing expression based on your specific needs and the parsing engine you\u2019ve selected.",paraId:7,tocIndex:6},{value:"Different parsing engines use different syntaxes; refer to the linked documentation for detailed information.",paraId:8},{value:"As of version ",paraId:9},{value:"v1.0.0-alpha.15",paraId:9},{value:", expressions now support the use of variables. These variables are pre-parsed before the specific engine executes, replacing the variables with the corresponding string values according to string template rules and merging them with other static elements in the expression. This feature is particularly valuable when dynamically constructing expressions, such as when parsing JSON content that requires dynamic keys.",paraId:9},{value:"When the parsed result is an object (or an array of objects), you can use properties mapping to convert the desired attributes into sub-variables for use by subsequent nodes.",paraId:10,tocIndex:7},{value:"For object (or array of objects) results, if you do not perform properties mapping, the entire object (or array of objects) will be stored as a single variable in the node's result, making it impossible to directly access the object's attribute values as individual variables.",paraId:11},{value:"Suppose you need to parse data from an SQL node that returns a set of order data:",paraId:12,tocIndex:8},{value:`[ + `,paraId:3},{value:"Define the range of data that will appear in the dropdown list.",paraId:6,tocIndex:6},{value:"For more information, refer to ",paraId:7,tocIndex:6},{value:"Set Data Range",paraId:8,tocIndex:6},{value:".",paraId:7,tocIndex:6},{value:"Determine the order in which the dropdown options are displayed.",paraId:9,tocIndex:7},{value:"Example: Display in descending order based on the production date.",paraId:10,tocIndex:7},{value:"Limit the association in many-to-many relationship fields to a single data item.",paraId:11,tocIndex:8},{value:"For additional details, see ",paraId:12,tocIndex:9},{value:"Title Field",paraId:13,tocIndex:9},{value:".",paraId:12,tocIndex:9},{value:"Field Components",paraId:14,tocIndex:9}],YS={},QS={title:"Advanced Options",toc:"menu",filename:"docs/en-US/handbook/workflow/advanced/options.md",lastUpdated:173254844e4,description:'Workflow execution is based on the trigger type selected when creating, and can be executed in "Asynchronously" or "Synchronously" mode. "Asynchronously" mode means that after a specific event is triggered, it will enter the execution queue and be executed one by one by the background scheduler, while "synchronously" mode will not enter the scheduling queue after triggering, and will start execution directly, and will immediately provide feedback after execution.'},JS=[{id:"advanced-options",depth:1,title:"Advanced Options"},{id:"execution-modes",depth:2,title:"Execution Modes"},{id:"automatically-delete-history",depth:2,title:"Automatically Delete History"}],XS=[{value:'Workflow execution is based on the trigger type selected when creating, and can be executed in "Asynchronously" or "Synchronously" mode. "Asynchronously" mode means that after a specific event is triggered, it will enter the execution queue and be executed one by one by the background scheduler, while "synchronously" mode will not enter the scheduling queue after triggering, and will start execution directly, and will immediately provide feedback after execution.',paraId:0,tocIndex:1},{value:"Collection event, post-action event, custom action event, schedule event and approval event will be executed asynchronously by default, while pre-action event will be executed synchronously by default. Among them, collection event, post-action event and custom action event support both modes, and you can choose when creating a workflow:",paraId:1,tocIndex:1},{value:'Synchronously mode workflow are limited by their mode and cannot use nodes that generate a "pending" status, such as "manual process" etc.',paraId:2},{value:"When workflows are triggered frequently, you can reduce interference and database storage pressure by configuring automatic deletion of historical executions.",paraId:3,tocIndex:2},{value:"Similarly, in the pop-up for creating and editing workflows, you can configure whether the corresponding process automatically deletes history:",paraId:4,tocIndex:2},{value:'Automatic deletion can be configured based on the status of the execution. In most cases, it is recommended to only select the "Succeeded" status, so that history of execution failures can be retained for subsequent troubleshooting.',paraId:5,tocIndex:2},{value:"It is recommended not to enable automatic deletion of history when debugging workflows, so that the execution logic of the workflows can be reviewed in history.",paraId:6,tocIndex:2},{value:"Deleting the history of workflows will not reduce the count of workflows already executed.",paraId:7}],e6={},a6={title:"JSON Query",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/json-query.md",lastUpdated:173254844e4,description:"This plugin is designed to parse complex JSON data generated by various nodes, enabling subsequent nodes to effectively utilize this data. For instance, SQL operations and HTTP request nodes often return results in JSON format. The JSON query node allows you to transform this data into the specific values and variable formats required by later stages in the workflow."},t6=[{id:"json-query",depth:1,title:"JSON Query"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"parsing-engine",depth:4,title:"Parsing Engine"},{id:"data-source",depth:4,title:"Data Source"},{id:"parsing-expression",depth:4,title:"Parsing Expression"},{id:"properties-mapping",depth:4,title:"Properties mapping"},{id:"example",depth:3,title:"Example"}],n6=[{value:"This plugin is designed to parse complex JSON data generated by various nodes, enabling subsequent nodes to effectively utilize this data. For instance, SQL operations and HTTP request nodes often return results in JSON format. The JSON query node allows you to transform this data into the specific values and variable formats required by later stages in the workflow.",paraId:0},{value:"To add a \u201CJSON query\u201D node in the workflow configuration interface, simply click the plus (\u201C+\u201D) button within the process:",paraId:1,tocIndex:2},{value:"JSON query nodes are generally positioned beneath other data nodes to facilitate parsing their output.",paraId:2},{value:"The JSON query node offers support for various parsing engines, each with its own unique syntax. You can select an engine based on your specific needs and preferences. Currently, three parsing engines are available:",paraId:3,tocIndex:4},{value:"JMESPath",paraId:4,tocIndex:4},{value:"JSONPath Plus",paraId:4,tocIndex:4},{value:"JSONata",paraId:4,tocIndex:4},{value:"The data source can be either the output of an upstream node or a data object within the process context. This is typically an unstructured data object, such as the results from an SQL node or an HTTP request node.",paraId:5,tocIndex:5},{value:"Data objects related to data tables are usually already structured through table configuration information and do not typically require parsing by a JSON query node.",paraId:6},{value:"You can create a custom parsing expression based on your specific needs and the parsing engine you\u2019ve selected.",paraId:7,tocIndex:6},{value:"Different parsing engines use different syntaxes; refer to the linked documentation for detailed information.",paraId:8},{value:"As of version ",paraId:9},{value:"v1.0.0-alpha.15",paraId:9},{value:", expressions now support the use of variables. These variables are pre-parsed before the specific engine executes, replacing the variables with the corresponding string values according to string template rules and merging them with other static elements in the expression. This feature is particularly valuable when dynamically constructing expressions, such as when parsing JSON content that requires dynamic keys.",paraId:9},{value:"When the parsed result is an object (or an array of objects), you can use properties mapping to convert the desired attributes into sub-variables for use by subsequent nodes.",paraId:10,tocIndex:7},{value:"For object (or array of objects) results, if you do not perform properties mapping, the entire object (or array of objects) will be stored as a single variable in the node's result, making it impossible to directly access the object's attribute values as individual variables.",paraId:11},{value:"Suppose you need to parse data from an SQL node that returns a set of order data:",paraId:12,tocIndex:8},{value:`[ [ { "id": 1, @@ -9918,7 +9970,7 @@ const useSubmitActionProps = (): ActionProps => { "total": 410 } ] -`,paraId:18},{value:"You can then iterate over the array of completed orders to update the total price of each order.",paraId:19}],o6={},r6={title:"Trigger Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-approval/trigger.md",lastUpdated:1732240239e3,description:'To set up an approval workflow, start by selecting the "Approval" type during the workflow creation process:'},d6=[{id:"trigger-configuration",depth:1,title:"Trigger Configuration"},{id:"creating-a-workflow",depth:2,title:"Creating a Workflow"},{id:"binding-data-tables",depth:2,title:"Binding Data Tables"},{id:"where-to-initiate-an-approval",depth:2,title:"Where to Initiate an Approval"},{id:"withdrawn",depth:2,title:"Withdrawn"},{id:"configuring-the-form-interface-for-initiating-approvals",depth:2,title:"Configuring the Form Interface for Initiating Approvals"}],i6=[{value:'To set up an approval workflow, start by selecting the "Approval" type during the workflow creation process:',paraId:0,tocIndex:1},{value:"Next, in the workflow configuration interface, click on the trigger to open a popup window for additional configuration options.",paraId:1,tocIndex:1},{value:"NocoBase\u2019s approval plugin is designed with flexibility in mind, allowing it to be integrated with any custom data collection. This means there\u2019s no need to repeatedly configure the data model for approval processes. Instead, you can reuse existing data collections. When configuring the trigger, the first step is to select a data table to determine which data entries will trigger the workflow upon creation or update:",paraId:2,tocIndex:2},{value:"After selecting the data table, bind the workflow to the submit button in the form used for creating or editing data within the chosen table:",paraId:3,tocIndex:2},{value:"Once the form is submitted, the corresponding approval workflow will be triggered. The submitted data will be saved in the specified data table and also snapshotted within the approval flow for future review by approvers.",paraId:4,tocIndex:2},{value:"There are two locations within the user interface where approvals can be initiated:",paraId:5,tocIndex:3},{value:"Through the submission of a data collection form that has been bound to an approval process, typically used for initiating a single approval process.",paraId:6,tocIndex:3},{value:"Via the Approval block, which allows for the centralized initiation of global processes.",paraId:6,tocIndex:3},{value:'By selecting "Initiate and approve in both data blocks and global approval blocks" the process will appear in the \u201CInitiations\u201D dropdown menu within the Approval Center block, enabling users to manage various approvals from a central location.',paraId:7,tocIndex:3},{value:'If the approval process permits the initiator to withdraw the request, select the "Allowed to be withdrawn" option:',paraId:8,tocIndex:4},{value:"When this option is selected, the initiator can withdraw the approval request at any time before any approver has processed it. However, once any subsequent approval nodes have been processed, the approval can no longer be withdrawn.",paraId:9,tocIndex:4},{value:"Finally, you\u2019ll need to configure the form interface for the initiator. This interface is used when initiating an approval from the Approval Center block or when re-initiating after a withdrawal. Click the configuration button to open a popup window:",paraId:10,tocIndex:5},{value:"You can add a form based on the bound data table or include explanatory text (Markdown) to guide the initiator. A form is required; otherwise, the initiator will not be able to proceed upon entering this interface.",paraId:11,tocIndex:5},{value:"After adding the form block, you can configure the corresponding data table's field components and arrange them as needed to organize the content to be filled out, similar to the regular form configuration interface:",paraId:12,tocIndex:5},{value:"In addition to the submit button, you can also add a \u201CSave Draft\u201D button to support the temporary storage of data during the process:",paraId:13,tocIndex:5}],l6={},c6={title:"JSON query",toc:"menu",filename:"docs/en-US/handbook/workflow-json-query/index.md",lastUpdated:1732240239e3,description:"This plugin is designed to parse complex JSON data generated by various nodes, enabling subsequent nodes to effectively utilize this data. For instance, SQL operations and HTTP request nodes often return results in JSON format. The JSON query node allows you to transform this data into the specific values and variable formats required by later stages in the workflow."},s6=[{id:"json-query",depth:1,title:"JSON query"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"parsing-engine",depth:4,title:"Parsing Engine"},{id:"data-source",depth:4,title:"Data Source"},{id:"parsing-expression",depth:4,title:"Parsing Expression"},{id:"properties-mapping",depth:4,title:"Properties mapping"},{id:"example",depth:3,title:"Example"}],u6=[{value:"This plugin is designed to parse complex JSON data generated by various nodes, enabling subsequent nodes to effectively utilize this data. For instance, SQL operations and HTTP request nodes often return results in JSON format. The JSON query node allows you to transform this data into the specific values and variable formats required by later stages in the workflow.",paraId:0},{value:"To add a \u201CJSON query\u201D node in the workflow configuration interface, simply click the plus (\u201C+\u201D) button within the process:",paraId:1,tocIndex:2},{value:"JSON query nodes are generally positioned beneath other data nodes to facilitate parsing their output.",paraId:2},{value:"The JSON query node offers support for various parsing engines, each with its own unique syntax. You can select an engine based on your specific needs and preferences. Currently, three parsing engines are available:",paraId:3,tocIndex:4},{value:"JMESPath",paraId:4,tocIndex:4},{value:"JSONPath Plus",paraId:4,tocIndex:4},{value:"JSONata",paraId:4,tocIndex:4},{value:"The data source can be either the output of an upstream node or a data object within the process context. This is typically an unstructured data object, such as the results from an SQL node or an HTTP request node.",paraId:5,tocIndex:5},{value:"Data objects related to data tables are usually already structured through table configuration information and do not typically require parsing by a JSON query node.",paraId:6},{value:"You can create a custom parsing expression based on your specific needs and the parsing engine you\u2019ve selected.",paraId:7,tocIndex:6},{value:"Different parsing engines use different syntaxes; refer to the linked documentation for detailed information.",paraId:8},{value:"As of version ",paraId:9},{value:"v1.0.0-alpha.15",paraId:9},{value:", expressions now support the use of variables. These variables are pre-parsed before the specific engine executes, replacing the variables with the corresponding string values according to string template rules and merging them with other static elements in the expression. This feature is particularly valuable when dynamically constructing expressions, such as when parsing JSON content that requires dynamic keys.",paraId:9},{value:"When the parsed result is an object (or an array of objects), you can use properties mapping to convert the desired attributes into sub-variables for use by subsequent nodes.",paraId:10,tocIndex:7},{value:"For object (or array of objects) results, if you do not perform properties mapping, the entire object (or array of objects) will be stored as a single variable in the node's result, making it impossible to directly access the object's attribute values as individual variables.",paraId:11},{value:"Suppose you need to parse data from an SQL node that returns a set of order data:",paraId:12,tocIndex:8},{value:`[ +`,paraId:18},{value:"You can then iterate over the array of completed orders to update the total price of each order.",paraId:19}],o6={},r6={title:"Trigger Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-approval/trigger.md",lastUpdated:173254844e4,description:'To set up an approval workflow, start by selecting the "Approval" type during the workflow creation process:'},d6=[{id:"trigger-configuration",depth:1,title:"Trigger Configuration"},{id:"creating-a-workflow",depth:2,title:"Creating a Workflow"},{id:"binding-data-tables",depth:2,title:"Binding Data Tables"},{id:"where-to-initiate-an-approval",depth:2,title:"Where to Initiate an Approval"},{id:"withdrawn",depth:2,title:"Withdrawn"},{id:"configuring-the-form-interface-for-initiating-approvals",depth:2,title:"Configuring the Form Interface for Initiating Approvals"}],i6=[{value:'To set up an approval workflow, start by selecting the "Approval" type during the workflow creation process:',paraId:0,tocIndex:1},{value:"Next, in the workflow configuration interface, click on the trigger to open a popup window for additional configuration options.",paraId:1,tocIndex:1},{value:"NocoBase\u2019s approval plugin is designed with flexibility in mind, allowing it to be integrated with any custom data collection. This means there\u2019s no need to repeatedly configure the data model for approval processes. Instead, you can reuse existing data collections. When configuring the trigger, the first step is to select a data table to determine which data entries will trigger the workflow upon creation or update:",paraId:2,tocIndex:2},{value:"After selecting the data table, bind the workflow to the submit button in the form used for creating or editing data within the chosen table:",paraId:3,tocIndex:2},{value:"Once the form is submitted, the corresponding approval workflow will be triggered. The submitted data will be saved in the specified data table and also snapshotted within the approval flow for future review by approvers.",paraId:4,tocIndex:2},{value:"There are two locations within the user interface where approvals can be initiated:",paraId:5,tocIndex:3},{value:"Through the submission of a data collection form that has been bound to an approval process, typically used for initiating a single approval process.",paraId:6,tocIndex:3},{value:"Via the Approval block, which allows for the centralized initiation of global processes.",paraId:6,tocIndex:3},{value:'By selecting "Initiate and approve in both data blocks and global approval blocks" the process will appear in the \u201CInitiations\u201D dropdown menu within the Approval Center block, enabling users to manage various approvals from a central location.',paraId:7,tocIndex:3},{value:'If the approval process permits the initiator to withdraw the request, select the "Allowed to be withdrawn" option:',paraId:8,tocIndex:4},{value:"When this option is selected, the initiator can withdraw the approval request at any time before any approver has processed it. However, once any subsequent approval nodes have been processed, the approval can no longer be withdrawn.",paraId:9,tocIndex:4},{value:"Finally, you\u2019ll need to configure the form interface for the initiator. This interface is used when initiating an approval from the Approval Center block or when re-initiating after a withdrawal. Click the configuration button to open a popup window:",paraId:10,tocIndex:5},{value:"You can add a form based on the bound data table or include explanatory text (Markdown) to guide the initiator. A form is required; otherwise, the initiator will not be able to proceed upon entering this interface.",paraId:11,tocIndex:5},{value:"After adding the form block, you can configure the corresponding data table's field components and arrange them as needed to organize the content to be filled out, similar to the regular form configuration interface:",paraId:12,tocIndex:5},{value:"In addition to the submit button, you can also add a \u201CSave Draft\u201D button to support the temporary storage of data during the process:",paraId:13,tocIndex:5}],l6={},c6={title:"JSON query",toc:"menu",filename:"docs/en-US/handbook/workflow-json-query/index.md",lastUpdated:173254844e4,description:"This plugin is designed to parse complex JSON data generated by various nodes, enabling subsequent nodes to effectively utilize this data. For instance, SQL operations and HTTP request nodes often return results in JSON format. The JSON query node allows you to transform this data into the specific values and variable formats required by later stages in the workflow."},s6=[{id:"json-query",depth:1,title:"JSON query"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"parsing-engine",depth:4,title:"Parsing Engine"},{id:"data-source",depth:4,title:"Data Source"},{id:"parsing-expression",depth:4,title:"Parsing Expression"},{id:"properties-mapping",depth:4,title:"Properties mapping"},{id:"example",depth:3,title:"Example"}],u6=[{value:"This plugin is designed to parse complex JSON data generated by various nodes, enabling subsequent nodes to effectively utilize this data. For instance, SQL operations and HTTP request nodes often return results in JSON format. The JSON query node allows you to transform this data into the specific values and variable formats required by later stages in the workflow.",paraId:0},{value:"To add a \u201CJSON query\u201D node in the workflow configuration interface, simply click the plus (\u201C+\u201D) button within the process:",paraId:1,tocIndex:2},{value:"JSON query nodes are generally positioned beneath other data nodes to facilitate parsing their output.",paraId:2},{value:"The JSON query node offers support for various parsing engines, each with its own unique syntax. You can select an engine based on your specific needs and preferences. Currently, three parsing engines are available:",paraId:3,tocIndex:4},{value:"JMESPath",paraId:4,tocIndex:4},{value:"JSONPath Plus",paraId:4,tocIndex:4},{value:"JSONata",paraId:4,tocIndex:4},{value:"The data source can be either the output of an upstream node or a data object within the process context. This is typically an unstructured data object, such as the results from an SQL node or an HTTP request node.",paraId:5,tocIndex:5},{value:"Data objects related to data tables are usually already structured through table configuration information and do not typically require parsing by a JSON query node.",paraId:6},{value:"You can create a custom parsing expression based on your specific needs and the parsing engine you\u2019ve selected.",paraId:7,tocIndex:6},{value:"Different parsing engines use different syntaxes; refer to the linked documentation for detailed information.",paraId:8},{value:"As of version ",paraId:9},{value:"v1.0.0-alpha.15",paraId:9},{value:", expressions now support the use of variables. These variables are pre-parsed before the specific engine executes, replacing the variables with the corresponding string values according to string template rules and merging them with other static elements in the expression. This feature is particularly valuable when dynamically constructing expressions, such as when parsing JSON content that requires dynamic keys.",paraId:9},{value:"When the parsed result is an object (or an array of objects), you can use properties mapping to convert the desired attributes into sub-variables for use by subsequent nodes.",paraId:10,tocIndex:7},{value:"For object (or array of objects) results, if you do not perform properties mapping, the entire object (or array of objects) will be stored as a single variable in the node's result, making it impossible to directly access the object's attribute values as individual variables.",paraId:11},{value:"Suppose you need to parse data from an SQL node that returns a set of order data:",paraId:12,tocIndex:8},{value:`[ [ { "id": 1, @@ -9966,7 +10018,7 @@ const useSubmitActionProps = (): ActionProps => { "total": 410 } ] -`,paraId:18},{value:"You can then iterate over the array of completed orders to update the total price of each order.",paraId:19}],p6={},I6={title:"Frontend",toc:"menu",filename:"docs/en-US/manual/mobile/development/frontend.md",lastUpdated:1732240239e3},_6=[{id:"schema-initializer-\u548C-settings",depth:2,title:"Schema Initializer \u548C Settings"}],v6=[],m6={},h6={title:"\u65E0\u503C\u5B57\u6BB5\u7EC4\u4EF6",toc:"menu",filename:"docs/en-US/plugin-samples/field/without-value.md",lastUpdated:1732240239e3,description:"\u67D0\u4E9B\u8868\u5355\u5B57\u6BB5\u7531\u4E8E\u7279\u6B8A\u9700\u6C42\uFF0C\u5B83\u5E76\u4E0D\u4E0E\u5B57\u6BB5\u76F4\u63A5\u5173\u8054\uFF0C\u53EF\u80FD\u662F\u72EC\u7ACB\u7684\u4E00\u4E2A\u5B57\u6BB5\u6216\u8005\u8BFB\u53D6\u5176\u4ED6\u5B57\u6BB5\u7684\u503C\uFF0C\u505A\u4E00\u4E9B\u7279\u6B8A\u5904\u7406\u540E\u5C55\u793A\u5728\u754C\u9762\u4E0A\u3002"},f6=[{id:"\u65E0\u503C\u5B57\u6BB5\u7EC4\u4EF6",depth:1,title:"\u65E0\u503C\u5B57\u6BB5\u7EC4\u4EF6"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u5B9A\u4E49\u540D\u79F0",depth:3,title:"1. \u5B9A\u4E49\u540D\u79F0"},{id:"2-\u5B9E\u73B0\u5B57\u6BB5\u7EC4\u4EF6",depth:3,title:"2. \u5B9E\u73B0\u5B57\u6BB5\u7EC4\u4EF6"},{id:"21-\u5B9A\u4E49\u5B57\u6BB5\u7EC4\u4EF6",depth:4,title:"2.1 \u5B9A\u4E49\u5B57\u6BB5\u7EC4\u4EF6"},{id:"22-\u6CE8\u518C\u5B57\u6BB5\u7EC4\u4EF6",depth:4,title:"2.2 \u6CE8\u518C\u5B57\u6BB5\u7EC4\u4EF6"},{id:"23-\u9A8C\u8BC1\u5B57\u6BB5\u7EC4\u4EF6",depth:4,title:"2.3 \u9A8C\u8BC1\u5B57\u6BB5\u7EC4\u4EF6"},{id:"3-\u5B9A\u4E49\u5B57\u6BB5-schema",depth:3,title:"3. \u5B9A\u4E49\u5B57\u6BB5 Schema"},{id:"31-\u5B9A\u4E49\u5B57\u6BB5-schema",depth:4,title:"3.1 \u5B9A\u4E49\u5B57\u6BB5 Schema"},{id:"32-\u9A8C\u8BC1\u5B57\u6BB5-schema",depth:4,title:"3.2 \u9A8C\u8BC1\u5B57\u6BB5 Schema"},{id:"4-\u5B9A\u4E49-schema-initializer-item",depth:3,title:"4. \u5B9A\u4E49 Schema Initializer Item"},{id:"5-\u6DFB\u52A0\u5230-form-block-configure-fields-\u4E2D",depth:3,title:"5. \u6DFB\u52A0\u5230 Form Block Configure fields \u4E2D"},{id:"6-\u5B9E\u73B0-schema-settings",depth:3,title:"6. \u5B9E\u73B0 Schema Settings"},{id:"61-\u5B9A\u4E49-schema-settings",depth:4,title:"6.1 \u5B9A\u4E49 Schema Settings"},{id:"62-\u6CE8\u518C-schema-settings",depth:4,title:"6.2 \u6CE8\u518C Schema Settings"},{id:"63-\u4F7F\u7528-schema-settings",depth:4,title:"6.3 \u4F7F\u7528 Schema Settings"},{id:"7-\u5B9E\u73B0-schema-settings-items",depth:3,title:"7. \u5B9E\u73B0 Schema Settings items"},{id:"71-\u5B9E\u73B0-remove-\u64CD\u4F5C",depth:4,title:"7.1 \u5B9E\u73B0 remove \u64CD\u4F5C"},{id:"72-\u5B9E\u73B0-order-field-\u9009\u62E9",depth:4,title:"7.2 \u5B9E\u73B0 Order field \u9009\u62E9"},{id:"721-\u5B9A\u4E49-schema-settings-item",depth:5,title:"7.2.1 \u5B9A\u4E49 Schema Settings item"},{id:"732-\u4F7F\u7528-schemasettings-item",depth:5,title:"7.3.2 \u4F7F\u7528 SchemaSettings Item"},{id:"8-\u591A\u8BED\u8A00",depth:3,title:"8. \u591A\u8BED\u8A00"},{id:"81-\u82F1\u6587",depth:4,title:"8.1 \u82F1\u6587"},{id:"82-\u4E2D\u6587",depth:4,title:"8.2 \u4E2D\u6587"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],x6=[{value:"\u67D0\u4E9B\u8868\u5355\u5B57\u6BB5\u7531\u4E8E\u7279\u6B8A\u9700\u6C42\uFF0C\u5B83\u5E76\u4E0D\u4E0E\u5B57\u6BB5\u76F4\u63A5\u5173\u8054\uFF0C\u53EF\u80FD\u662F\u72EC\u7ACB\u7684\u4E00\u4E2A\u5B57\u6BB5\u6216\u8005\u8BFB\u53D6\u5176\u4ED6\u5B57\u6BB5\u7684\u503C\uFF0C\u505A\u4E00\u4E9B\u7279\u6B8A\u5904\u7406\u540E\u5C55\u793A\u5728\u754C\u9762\u4E0A\u3002",paraId:0,tocIndex:1},{value:"\u672C\u793A\u4F8B\u4F1A\u6F14\u793A\u4E00\u4E2A\u901A\u8FC7\u5B9E\u65F6\u68C0\u6D4B\u8BA2\u5355\u53F7\u5B57\u6BB5\u53D8\u5316\uFF0C\u67E5\u8BE2\u8BA2\u5355\u8BE6\u60C5\u5E76\u5C55\u793A\u7684\u573A\u666F\u3002",paraId:1,tocIndex:2},{value:` +`,paraId:18},{value:"You can then iterate over the array of completed orders to update the total price of each order.",paraId:19}],p6={},I6={title:"Frontend",toc:"menu",filename:"docs/en-US/manual/mobile/development/frontend.md",lastUpdated:173254844e4},_6=[{id:"schema-initializer-\u548C-settings",depth:2,title:"Schema Initializer \u548C Settings"}],v6=[],m6={},h6={title:"\u65E0\u503C\u5B57\u6BB5\u7EC4\u4EF6",toc:"menu",filename:"docs/en-US/plugin-samples/field/without-value.md",lastUpdated:173254844e4,description:"\u67D0\u4E9B\u8868\u5355\u5B57\u6BB5\u7531\u4E8E\u7279\u6B8A\u9700\u6C42\uFF0C\u5B83\u5E76\u4E0D\u4E0E\u5B57\u6BB5\u76F4\u63A5\u5173\u8054\uFF0C\u53EF\u80FD\u662F\u72EC\u7ACB\u7684\u4E00\u4E2A\u5B57\u6BB5\u6216\u8005\u8BFB\u53D6\u5176\u4ED6\u5B57\u6BB5\u7684\u503C\uFF0C\u505A\u4E00\u4E9B\u7279\u6B8A\u5904\u7406\u540E\u5C55\u793A\u5728\u754C\u9762\u4E0A\u3002"},f6=[{id:"\u65E0\u503C\u5B57\u6BB5\u7EC4\u4EF6",depth:1,title:"\u65E0\u503C\u5B57\u6BB5\u7EC4\u4EF6"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u5B9A\u4E49\u540D\u79F0",depth:3,title:"1. \u5B9A\u4E49\u540D\u79F0"},{id:"2-\u5B9E\u73B0\u5B57\u6BB5\u7EC4\u4EF6",depth:3,title:"2. \u5B9E\u73B0\u5B57\u6BB5\u7EC4\u4EF6"},{id:"21-\u5B9A\u4E49\u5B57\u6BB5\u7EC4\u4EF6",depth:4,title:"2.1 \u5B9A\u4E49\u5B57\u6BB5\u7EC4\u4EF6"},{id:"22-\u6CE8\u518C\u5B57\u6BB5\u7EC4\u4EF6",depth:4,title:"2.2 \u6CE8\u518C\u5B57\u6BB5\u7EC4\u4EF6"},{id:"23-\u9A8C\u8BC1\u5B57\u6BB5\u7EC4\u4EF6",depth:4,title:"2.3 \u9A8C\u8BC1\u5B57\u6BB5\u7EC4\u4EF6"},{id:"3-\u5B9A\u4E49\u5B57\u6BB5-schema",depth:3,title:"3. \u5B9A\u4E49\u5B57\u6BB5 Schema"},{id:"31-\u5B9A\u4E49\u5B57\u6BB5-schema",depth:4,title:"3.1 \u5B9A\u4E49\u5B57\u6BB5 Schema"},{id:"32-\u9A8C\u8BC1\u5B57\u6BB5-schema",depth:4,title:"3.2 \u9A8C\u8BC1\u5B57\u6BB5 Schema"},{id:"4-\u5B9A\u4E49-schema-initializer-item",depth:3,title:"4. \u5B9A\u4E49 Schema Initializer Item"},{id:"5-\u6DFB\u52A0\u5230-form-block-configure-fields-\u4E2D",depth:3,title:"5. \u6DFB\u52A0\u5230 Form Block Configure fields \u4E2D"},{id:"6-\u5B9E\u73B0-schema-settings",depth:3,title:"6. \u5B9E\u73B0 Schema Settings"},{id:"61-\u5B9A\u4E49-schema-settings",depth:4,title:"6.1 \u5B9A\u4E49 Schema Settings"},{id:"62-\u6CE8\u518C-schema-settings",depth:4,title:"6.2 \u6CE8\u518C Schema Settings"},{id:"63-\u4F7F\u7528-schema-settings",depth:4,title:"6.3 \u4F7F\u7528 Schema Settings"},{id:"7-\u5B9E\u73B0-schema-settings-items",depth:3,title:"7. \u5B9E\u73B0 Schema Settings items"},{id:"71-\u5B9E\u73B0-remove-\u64CD\u4F5C",depth:4,title:"7.1 \u5B9E\u73B0 remove \u64CD\u4F5C"},{id:"72-\u5B9E\u73B0-order-field-\u9009\u62E9",depth:4,title:"7.2 \u5B9E\u73B0 Order field \u9009\u62E9"},{id:"721-\u5B9A\u4E49-schema-settings-item",depth:5,title:"7.2.1 \u5B9A\u4E49 Schema Settings item"},{id:"732-\u4F7F\u7528-schemasettings-item",depth:5,title:"7.3.2 \u4F7F\u7528 SchemaSettings Item"},{id:"8-\u591A\u8BED\u8A00",depth:3,title:"8. \u591A\u8BED\u8A00"},{id:"81-\u82F1\u6587",depth:4,title:"8.1 \u82F1\u6587"},{id:"82-\u4E2D\u6587",depth:4,title:"8.2 \u4E2D\u6587"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],x6=[{value:"\u67D0\u4E9B\u8868\u5355\u5B57\u6BB5\u7531\u4E8E\u7279\u6B8A\u9700\u6C42\uFF0C\u5B83\u5E76\u4E0D\u4E0E\u5B57\u6BB5\u76F4\u63A5\u5173\u8054\uFF0C\u53EF\u80FD\u662F\u72EC\u7ACB\u7684\u4E00\u4E2A\u5B57\u6BB5\u6216\u8005\u8BFB\u53D6\u5176\u4ED6\u5B57\u6BB5\u7684\u503C\uFF0C\u505A\u4E00\u4E9B\u7279\u6B8A\u5904\u7406\u540E\u5C55\u793A\u5728\u754C\u9762\u4E0A\u3002",paraId:0,tocIndex:1},{value:"\u672C\u793A\u4F8B\u4F1A\u6F14\u793A\u4E00\u4E2A\u901A\u8FC7\u5B9E\u65F6\u68C0\u6D4B\u8BA2\u5355\u53F7\u5B57\u6BB5\u53D8\u5316\uFF0C\u67E5\u8BE2\u8BA2\u5355\u8BE6\u60C5\u5E76\u5C55\u793A\u7684\u573A\u666F\u3002",paraId:1,tocIndex:2},{value:` `,paraId:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:3,tocIndex:2},{value:"plugin-samples",paraId:3,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:3,tocIndex:2},{value:"\u6211\u4EEC\u6309\u7167 ",paraId:4,tocIndex:3},{value:"\u7F16\u5199\u7B2C\u4E00\u4E2A\u63D2\u4EF6",paraId:5,tocIndex:3},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u5982\u679C\u6CA1\u6709\u4E00\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u5148\u521B\u5EFA\u4E00\u4E2A\u9879\u76EE\uFF0C\u5982\u679C\u5DF2\u7ECF\u6709\u4E86\u6216\u8005\u662F clone \u7684\u6E90\u7801\uFF0C\u5219\u8DF3\u8FC7\u8FD9\u4E00\u6B65\u3002",paraId:4,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -10290,7 +10342,7 @@ export const orderDetailsSettings = new SchemaSettings({ } `,paraId:91,tocIndex:26},{value:"\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 ",paraId:92,tocIndex:26},{value:"http://localhost:13000/admin/settings/system-settings",paraId:92,tocIndex:26},{value:" \u6DFB\u52A0\u591A\u4E2A\u8BED\u8A00\uFF0C\u5E76\u4E14\u5728\u53F3\u4E0A\u89D2\u5207\u6362\u8BED\u8A00\u3002",paraId:92,tocIndex:26},{value:"\u6309\u7167 ",paraId:93,tocIndex:27},{value:"\u6784\u5EFA\u5E76\u6253\u5305\u63D2\u4EF6",paraId:94,tocIndex:27},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6253\u5305\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883\u3002",paraId:93,tocIndex:27},{value:"\u5982\u679C\u662F clone \u7684\u6E90\u7801\uFF0C\u9700\u8981\u5148\u6267\u884C\u4E00\u6B21\u5168\u91CF build\uFF0C\u5C06\u63D2\u4EF6\u7684\u4F9D\u8D56\u4E5F\u6784\u5EFA\u597D\u3002",paraId:95,tocIndex:27},{value:`yarn build `,paraId:96,tocIndex:27},{value:"\u5982\u679C\u662F\u4F7F\u7528\u7684 ",paraId:97,tocIndex:27},{value:"create-nocobase-app",paraId:97,tocIndex:27},{value:" \u521B\u5EFA\u7684\u9879\u76EE\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A",paraId:97,tocIndex:27},{value:`yarn build @nocobase-sample/plugin-field-component-without-value --tar -`,paraId:98,tocIndex:27},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:99,tocIndex:27},{value:"storage/tar/@nocobase-sample/plugin-field-component-without-value.tar.gz",paraId:99,tocIndex:27},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:99,tocIndex:27},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:100,tocIndex:27},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:99,tocIndex:27}],g6={},b6={title:"\u521B\u5EFA\u65B0\u7684 SchemaSettings",toc:"menu",filename:"docs/en-US/plugin-samples/schema-settings/new.md",lastUpdated:1732240239e3,description:"\u5F53\u6211\u4EEC\u65B0\u589E\u4E00\u4E2A\u533A\u5757\u3001\u5B57\u6BB5\u6216\u8005\u64CD\u4F5C\u65F6\uFF0C\u6211\u4EEC\u53EF\u80FD\u9700\u8981\u65B0\u589E\u4E00\u4E9B\u914D\u7F6E\u9879\uFF0C\u7528\u4E8E\u5176\u5C55\u793A\u3001\u884C\u4E3A\u7B49\uFF0C\u8FD9\u65F6\u6211\u4EEC\u5C31\u9700\u8981\u65B0\u589E\u4E00\u4E2A SchemaSettings\u3002"},y6=[{id:"\u521B\u5EFA\u65B0\u7684-schemasettings",depth:1,title:"\u521B\u5EFA\u65B0\u7684 SchemaSettings"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u521B\u5EFA\u533A\u5757\u5B57\u6BB5\u64CD\u4F5C",depth:3,title:"1. \u521B\u5EFA\u533A\u5757/\u5B57\u6BB5/\u64CD\u4F5C"},{id:"2-\u7EC4\u4EF6\u5C5E\u6027",depth:3,title:"2. \u7EC4\u4EF6\u5C5E\u6027"},{id:"21-\u5B9E\u73B0\u7EC4\u4EF6",depth:4,title:"2.1 \u5B9E\u73B0\u7EC4\u4EF6"},{id:"22-\u9A8C\u8BC1\u7EC4\u4EF6",depth:4,title:"2.2 \u9A8C\u8BC1\u7EC4\u4EF6"},{id:"3-\u5B9E\u73B0-schema",depth:3,title:"3. \u5B9E\u73B0 Schema"},{id:"31-\u5B9A\u4E49-schema",depth:4,title:"3.1 \u5B9A\u4E49 Schema"},{id:"32-\u9A8C\u8BC1-schema",depth:4,title:"3.2 \u9A8C\u8BC1 Schema"},{id:"4-\u5B9E\u73B0-schemasettings",depth:3,title:"4. \u5B9E\u73B0 SchemaSettings"},{id:"5-\u5B9E\u73B0-schemasettings-items",depth:3,title:"5. \u5B9E\u73B0 SchemaSettings items"},{id:"51-\u5B9E\u73B0-edit-block-title",depth:4,title:"5.1 \u5B9E\u73B0 Edit block title"},{id:"52-\u5B9E\u73B0-edit-image",depth:4,title:"5.2 \u5B9E\u73B0 Edit Image"},{id:"521-\u5B9E\u73B0-schemasettings-item",depth:5,title:"5.2.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"522-\u4F7F\u7528-schemasettings-item",depth:5,title:"5.2.2 \u4F7F\u7528 SchemaSettings Item"},{id:"53-\u5B9E\u73B0-edit-height",depth:4,title:"5.3 \u5B9E\u73B0 Edit Height"},{id:"531-\u5B9E\u73B0-schemasettings-item",depth:5,title:"5.3.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"532-\u4F7F\u7528-schemasettings-item",depth:5,title:"5.3.2 \u4F7F\u7528 SchemaSettings Item"},{id:"54-\u5B9E\u73B0-objectfit",depth:4,title:"5.4 \u5B9E\u73B0 ObjectFit"},{id:"541-\u5B9E\u73B0-schemasettings-item",depth:5,title:"5.4.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"542-\u4F7F\u7528-schemasettings-item",depth:5,title:"5.4.2 \u4F7F\u7528 SchemaSettings Item"},{id:"55-\u5B9E\u73B0-lazy",depth:4,title:"5.5 \u5B9E\u73B0 Lazy"},{id:"551-\u5B9E\u73B0-schemasettings-item",depth:5,title:"5.5.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"552-\u4F7F\u7528-schemasettings-item",depth:5,title:"5.5.2 \u4F7F\u7528 SchemaSettings Item"},{id:"56-\u589E\u52A0-divider",depth:4,title:"5.6 \u589E\u52A0 divider"},{id:"6-\u591A\u8BED\u8A00",depth:3,title:"6. \u591A\u8BED\u8A00"},{id:"61-\u82F1\u6587",depth:4,title:"6.1 \u82F1\u6587"},{id:"62-\u4E2D\u6587",depth:4,title:"6.2 \u4E2D\u6587"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],w6=[{value:"\u5F53\u6211\u4EEC\u65B0\u589E\u4E00\u4E2A\u533A\u5757\u3001\u5B57\u6BB5\u6216\u8005\u64CD\u4F5C\u65F6\uFF0C\u6211\u4EEC\u53EF\u80FD\u9700\u8981\u65B0\u589E\u4E00\u4E9B\u914D\u7F6E\u9879\uFF0C\u7528\u4E8E\u5176\u5C55\u793A\u3001\u884C\u4E3A\u7B49\uFF0C\u8FD9\u65F6\u6211\u4EEC\u5C31\u9700\u8981\u65B0\u589E\u4E00\u4E2A ",paraId:0,tocIndex:1},{value:"SchemaSettings",paraId:0,tocIndex:1},{value:"\u3002",paraId:0,tocIndex:1},{value:"\u672C\u793A\u4F8B\u4F1A\u5728 ",paraId:1,tocIndex:2},{value:"\u7B80\u5355\u533A\u5757",paraId:2,tocIndex:2},{value:" \u4F8B\u5B50\u7684\u57FA\u7840\u4E0A\u5B8C\u5584\uFF0C\u5F53\u65F6\u53EA\u662F\u521B\u5EFA\u4E86\u4E00\u4E2A\u53EA\u6709 ",paraId:1,tocIndex:2},{value:"remove",paraId:1,tocIndex:2},{value:" \u7684 SchemaSettings\uFF0C\u672C\u793A\u4F8B\u4F1A\u589E\u52A0\u5982\u4E0B\u914D\u7F6E\u9879\uFF1A",paraId:1,tocIndex:2},{value:"Edit block title",paraId:3,tocIndex:2},{value:"\uFF1A\u7F16\u8F91\u533A\u5757\u6807\u9898",paraId:3,tocIndex:2},{value:"Edit Image",paraId:3,tocIndex:2},{value:"\uFF1A\u7F16\u8F91\u56FE\u7247",paraId:3,tocIndex:2},{value:"Edit height",paraId:3,tocIndex:2},{value:"\uFF1A\u7F16\u8F91\u56FE\u7247\u7684\u9AD8\u5EA6",paraId:3,tocIndex:2},{value:"objectFit",paraId:3,tocIndex:2},{value:"\uFF1A\u9009\u62E9 img \u7684 ",paraId:3,tocIndex:2},{value:"object-fit",paraId:3,tocIndex:2},{value:" \u5C5E\u6027",paraId:3,tocIndex:2},{value:"Lazy",paraId:3,tocIndex:2},{value:"\uFF1A\u662F\u5426\u61D2\u52A0\u8F7D",paraId:3,tocIndex:2},{value:` +`,paraId:98,tocIndex:27},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:99,tocIndex:27},{value:"storage/tar/@nocobase-sample/plugin-field-component-without-value.tar.gz",paraId:99,tocIndex:27},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:99,tocIndex:27},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:100,tocIndex:27},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:99,tocIndex:27}],g6={},b6={title:"\u521B\u5EFA\u65B0\u7684 SchemaSettings",toc:"menu",filename:"docs/en-US/plugin-samples/schema-settings/new.md",lastUpdated:173254844e4,description:"\u5F53\u6211\u4EEC\u65B0\u589E\u4E00\u4E2A\u533A\u5757\u3001\u5B57\u6BB5\u6216\u8005\u64CD\u4F5C\u65F6\uFF0C\u6211\u4EEC\u53EF\u80FD\u9700\u8981\u65B0\u589E\u4E00\u4E9B\u914D\u7F6E\u9879\uFF0C\u7528\u4E8E\u5176\u5C55\u793A\u3001\u884C\u4E3A\u7B49\uFF0C\u8FD9\u65F6\u6211\u4EEC\u5C31\u9700\u8981\u65B0\u589E\u4E00\u4E2A SchemaSettings\u3002"},y6=[{id:"\u521B\u5EFA\u65B0\u7684-schemasettings",depth:1,title:"\u521B\u5EFA\u65B0\u7684 SchemaSettings"},{id:"\u573A\u666F\u8BF4\u660E",depth:2,title:"\u573A\u666F\u8BF4\u660E"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u521B\u5EFA\u533A\u5757\u5B57\u6BB5\u64CD\u4F5C",depth:3,title:"1. \u521B\u5EFA\u533A\u5757/\u5B57\u6BB5/\u64CD\u4F5C"},{id:"2-\u7EC4\u4EF6\u5C5E\u6027",depth:3,title:"2. \u7EC4\u4EF6\u5C5E\u6027"},{id:"21-\u5B9E\u73B0\u7EC4\u4EF6",depth:4,title:"2.1 \u5B9E\u73B0\u7EC4\u4EF6"},{id:"22-\u9A8C\u8BC1\u7EC4\u4EF6",depth:4,title:"2.2 \u9A8C\u8BC1\u7EC4\u4EF6"},{id:"3-\u5B9E\u73B0-schema",depth:3,title:"3. \u5B9E\u73B0 Schema"},{id:"31-\u5B9A\u4E49-schema",depth:4,title:"3.1 \u5B9A\u4E49 Schema"},{id:"32-\u9A8C\u8BC1-schema",depth:4,title:"3.2 \u9A8C\u8BC1 Schema"},{id:"4-\u5B9E\u73B0-schemasettings",depth:3,title:"4. \u5B9E\u73B0 SchemaSettings"},{id:"5-\u5B9E\u73B0-schemasettings-items",depth:3,title:"5. \u5B9E\u73B0 SchemaSettings items"},{id:"51-\u5B9E\u73B0-edit-block-title",depth:4,title:"5.1 \u5B9E\u73B0 Edit block title"},{id:"52-\u5B9E\u73B0-edit-image",depth:4,title:"5.2 \u5B9E\u73B0 Edit Image"},{id:"521-\u5B9E\u73B0-schemasettings-item",depth:5,title:"5.2.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"522-\u4F7F\u7528-schemasettings-item",depth:5,title:"5.2.2 \u4F7F\u7528 SchemaSettings Item"},{id:"53-\u5B9E\u73B0-edit-height",depth:4,title:"5.3 \u5B9E\u73B0 Edit Height"},{id:"531-\u5B9E\u73B0-schemasettings-item",depth:5,title:"5.3.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"532-\u4F7F\u7528-schemasettings-item",depth:5,title:"5.3.2 \u4F7F\u7528 SchemaSettings Item"},{id:"54-\u5B9E\u73B0-objectfit",depth:4,title:"5.4 \u5B9E\u73B0 ObjectFit"},{id:"541-\u5B9E\u73B0-schemasettings-item",depth:5,title:"5.4.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"542-\u4F7F\u7528-schemasettings-item",depth:5,title:"5.4.2 \u4F7F\u7528 SchemaSettings Item"},{id:"55-\u5B9E\u73B0-lazy",depth:4,title:"5.5 \u5B9E\u73B0 Lazy"},{id:"551-\u5B9E\u73B0-schemasettings-item",depth:5,title:"5.5.1 \u5B9E\u73B0 SchemaSettings Item"},{id:"552-\u4F7F\u7528-schemasettings-item",depth:5,title:"5.5.2 \u4F7F\u7528 SchemaSettings Item"},{id:"56-\u589E\u52A0-divider",depth:4,title:"5.6 \u589E\u52A0 divider"},{id:"6-\u591A\u8BED\u8A00",depth:3,title:"6. \u591A\u8BED\u8A00"},{id:"61-\u82F1\u6587",depth:4,title:"6.1 \u82F1\u6587"},{id:"62-\u4E2D\u6587",depth:4,title:"6.2 \u4E2D\u6587"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],w6=[{value:"\u5F53\u6211\u4EEC\u65B0\u589E\u4E00\u4E2A\u533A\u5757\u3001\u5B57\u6BB5\u6216\u8005\u64CD\u4F5C\u65F6\uFF0C\u6211\u4EEC\u53EF\u80FD\u9700\u8981\u65B0\u589E\u4E00\u4E9B\u914D\u7F6E\u9879\uFF0C\u7528\u4E8E\u5176\u5C55\u793A\u3001\u884C\u4E3A\u7B49\uFF0C\u8FD9\u65F6\u6211\u4EEC\u5C31\u9700\u8981\u65B0\u589E\u4E00\u4E2A ",paraId:0,tocIndex:1},{value:"SchemaSettings",paraId:0,tocIndex:1},{value:"\u3002",paraId:0,tocIndex:1},{value:"\u672C\u793A\u4F8B\u4F1A\u5728 ",paraId:1,tocIndex:2},{value:"\u7B80\u5355\u533A\u5757",paraId:2,tocIndex:2},{value:" \u4F8B\u5B50\u7684\u57FA\u7840\u4E0A\u5B8C\u5584\uFF0C\u5F53\u65F6\u53EA\u662F\u521B\u5EFA\u4E86\u4E00\u4E2A\u53EA\u6709 ",paraId:1,tocIndex:2},{value:"remove",paraId:1,tocIndex:2},{value:" \u7684 SchemaSettings\uFF0C\u672C\u793A\u4F8B\u4F1A\u589E\u52A0\u5982\u4E0B\u914D\u7F6E\u9879\uFF1A",paraId:1,tocIndex:2},{value:"Edit block title",paraId:3,tocIndex:2},{value:"\uFF1A\u7F16\u8F91\u533A\u5757\u6807\u9898",paraId:3,tocIndex:2},{value:"Edit Image",paraId:3,tocIndex:2},{value:"\uFF1A\u7F16\u8F91\u56FE\u7247",paraId:3,tocIndex:2},{value:"Edit height",paraId:3,tocIndex:2},{value:"\uFF1A\u7F16\u8F91\u56FE\u7247\u7684\u9AD8\u5EA6",paraId:3,tocIndex:2},{value:"objectFit",paraId:3,tocIndex:2},{value:"\uFF1A\u9009\u62E9 img \u7684 ",paraId:3,tocIndex:2},{value:"object-fit",paraId:3,tocIndex:2},{value:" \u5C5E\u6027",paraId:3,tocIndex:2},{value:"Lazy",paraId:3,tocIndex:2},{value:"\uFF1A\u662F\u5426\u61D2\u52A0\u8F7D",paraId:3,tocIndex:2},{value:` `,paraId:4},{value:"\u672C\u5B9E\u4F8B\u4E3B\u8981\u4E3A\u4E86\u6F14\u793A initializer \u7684\u4F7F\u7528\uFF0C\u66F4\u591A\u5173\u4E8E\u533A\u5757\u6269\u5C55\u53EF\u4EE5\u67E5\u770B ",paraId:5,tocIndex:2},{value:"\u533A\u5757\u6269\u5C55",paraId:6,tocIndex:2},{value:" \u6587\u6863\u3002",paraId:5,tocIndex:2},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:7,tocIndex:2},{value:"plugin-samples",paraId:7,tocIndex:2},{value:" \u4E2D\u67E5\u770B\u3002",paraId:7,tocIndex:2},{value:"\u6211\u4EEC\u6309\u7167 ",paraId:8,tocIndex:3},{value:"\u7F16\u5199\u7B2C\u4E00\u4E2A\u63D2\u4EF6",paraId:9,tocIndex:3},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u5982\u679C\u6CA1\u6709\u4E00\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u5148\u521B\u5EFA\u4E00\u4E2A\u9879\u76EE\uFF0C\u5982\u679C\u5DF2\u7ECF\u6709\u4E86\u6216\u8005\u662F clone \u7684\u6E90\u7801\uFF0C\u5219\u8DF3\u8FC7\u8FD9\u4E00\u6B65\u3002",paraId:8,tocIndex:3},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -10799,7 +10851,7 @@ export const imageSettings = new SchemaSettings({ } `,paraId:104,tocIndex:30},{value:"\u5982\u679C\u9700\u8981\u66F4\u591A\u7684\u591A\u8BED\u8A00\u652F\u6301\uFF0C\u53EF\u4EE5\u7EE7\u7EED\u6DFB\u52A0\u3002",paraId:105,tocIndex:30},{value:"\u6309\u7167 ",paraId:106,tocIndex:31},{value:"\u6784\u5EFA\u5E76\u6253\u5305\u63D2\u4EF6",paraId:107,tocIndex:31},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6253\u5305\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883\u3002",paraId:106,tocIndex:31},{value:"\u5982\u679C\u662F clone \u7684\u6E90\u7801\uFF0C\u9700\u8981\u5148\u6267\u884C\u4E00\u6B21\u5168\u91CF build\uFF0C\u5C06\u63D2\u4EF6\u7684\u4F9D\u8D56\u4E5F\u6784\u5EFA\u597D\u3002",paraId:108,tocIndex:31},{value:`yarn build `,paraId:109,tocIndex:31},{value:"\u5982\u679C\u662F\u4F7F\u7528\u7684 ",paraId:110,tocIndex:31},{value:"create-nocobase-app",paraId:110,tocIndex:31},{value:" \u521B\u5EFA\u7684\u9879\u76EE\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A",paraId:110,tocIndex:31},{value:`yarn build @nocobase-sample/plugin-schema-settings-new --tar -`,paraId:111,tocIndex:31},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:112,tocIndex:31},{value:"storage/tar/@nocobase-sample/plugin-schema-settings-new.tar.gz",paraId:112,tocIndex:31},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:112,tocIndex:31},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:113,tocIndex:31},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:112,tocIndex:31}],k6={},S6={title:"Telemetry - Prometheus",toc:"menu",filename:"docs/en-US/plugins/telemetry-prometheus/index.md",lastUpdated:1732240239e3,description:"\u672C\u63D2\u4EF6\u7528\u4E8E\u5C06 OpenTelemetry \u534F\u8BAE (OTLP) \u6570\u636E\u8F6C\u6362\u6210 Prometheus \u683C\u5F0F\uFF0C\u5E76\u66B4\u9732\u63A5\u53E3\u4F9B Prometheus \u6293\u53D6\u6307\u6807 (Metric) \u6570\u636E\u3002"},U6=[{id:"telemetry---prometheus",depth:1,title:"Telemetry - Prometheus"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u73AF\u5883\u53D8\u91CF",depth:3,title:"\u73AF\u5883\u53D8\u91CF"},{id:"telemetry_enabled",depth:4,title:"TELEMETRY_ENABLED"},{id:"telemetry_metric_reader",depth:4,title:"TELEMETRY_METRIC_READER"},{id:"telemetry_prometheus_server",depth:4,title:"TELEMETRY_PROMETHEUS_SERVER"},{id:"telemetry_prometheus_port",depth:4,title:"TELEMETRY_PROMETHEUS_PORT"},{id:"\u76F8\u5173\u6587\u6863",depth:4,title:"\u76F8\u5173\u6587\u6863"},{id:"prometheus-\u914D\u7F6E",depth:3,title:"Prometheus \u914D\u7F6E"}],P6=[{value:"\u672C\u63D2\u4EF6\u7528\u4E8E\u5C06 ",paraId:0,tocIndex:1},{value:"OpenTelemetry",paraId:0,tocIndex:1},{value:" \u534F\u8BAE (OTLP) \u6570\u636E\u8F6C\u6362\u6210 Prometheus \u683C\u5F0F\uFF0C\u5E76\u66B4\u9732\u63A5\u53E3\u4F9B Prometheus \u6293\u53D6\u6307\u6807 (Metric) \u6570\u636E\u3002",paraId:0,tocIndex:1},{value:"\u8BE5\u63D2\u4EF6\u4E3A\u5546\u4E1A\u63D2\u4EF6\uFF0C\u8BF7\u67E5\u770B ",paraId:1},{value:"NocoBase \u5546\u4E1A\u7248\u672C",paraId:1},{value:"\u4E86\u89E3\u8BE6\u60C5\u3002",paraId:1},{value:"\u542F\u52A8 NocoBase \u524D\uFF0C\u9700\u8981\u5148\u914D\u7F6E\u597D\u73AF\u5883\u53D8\u91CF\u3002",paraId:2,tocIndex:4},{value:"\u914D\u7F6E\u4E3A ",paraId:3,tocIndex:5},{value:"on",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:`TELEMETRY_ENABLED=on +`,paraId:111,tocIndex:31},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:112,tocIndex:31},{value:"storage/tar/@nocobase-sample/plugin-schema-settings-new.tar.gz",paraId:112,tocIndex:31},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:112,tocIndex:31},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:113,tocIndex:31},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:112,tocIndex:31}],k6={},S6={title:"Telemetry - Prometheus",toc:"menu",filename:"docs/en-US/plugins/telemetry-prometheus/index.md",lastUpdated:173254844e4,description:"\u672C\u63D2\u4EF6\u7528\u4E8E\u5C06 OpenTelemetry \u534F\u8BAE (OTLP) \u6570\u636E\u8F6C\u6362\u6210 Prometheus \u683C\u5F0F\uFF0C\u5E76\u66B4\u9732\u63A5\u53E3\u4F9B Prometheus \u6293\u53D6\u6307\u6807 (Metric) \u6570\u636E\u3002"},U6=[{id:"telemetry---prometheus",depth:1,title:"Telemetry - Prometheus"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u73AF\u5883\u53D8\u91CF",depth:3,title:"\u73AF\u5883\u53D8\u91CF"},{id:"telemetry_enabled",depth:4,title:"TELEMETRY_ENABLED"},{id:"telemetry_metric_reader",depth:4,title:"TELEMETRY_METRIC_READER"},{id:"telemetry_prometheus_server",depth:4,title:"TELEMETRY_PROMETHEUS_SERVER"},{id:"telemetry_prometheus_port",depth:4,title:"TELEMETRY_PROMETHEUS_PORT"},{id:"\u76F8\u5173\u6587\u6863",depth:4,title:"\u76F8\u5173\u6587\u6863"},{id:"prometheus-\u914D\u7F6E",depth:3,title:"Prometheus \u914D\u7F6E"}],P6=[{value:"\u672C\u63D2\u4EF6\u7528\u4E8E\u5C06 ",paraId:0,tocIndex:1},{value:"OpenTelemetry",paraId:0,tocIndex:1},{value:" \u534F\u8BAE (OTLP) \u6570\u636E\u8F6C\u6362\u6210 Prometheus \u683C\u5F0F\uFF0C\u5E76\u66B4\u9732\u63A5\u53E3\u4F9B Prometheus \u6293\u53D6\u6307\u6807 (Metric) \u6570\u636E\u3002",paraId:0,tocIndex:1},{value:"\u8BE5\u63D2\u4EF6\u4E3A\u5546\u4E1A\u63D2\u4EF6\uFF0C\u8BF7\u67E5\u770B ",paraId:1},{value:"NocoBase \u5546\u4E1A\u7248\u672C",paraId:1},{value:"\u4E86\u89E3\u8BE6\u60C5\u3002",paraId:1},{value:"\u542F\u52A8 NocoBase \u524D\uFF0C\u9700\u8981\u5148\u914D\u7F6E\u597D\u73AF\u5883\u53D8\u91CF\u3002",paraId:2,tocIndex:4},{value:"\u914D\u7F6E\u4E3A ",paraId:3,tocIndex:5},{value:"on",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:`TELEMETRY_ENABLED=on `,paraId:4,tocIndex:5},{value:"\u6DFB\u52A0 ",paraId:5,tocIndex:6},{value:"prometheus",paraId:5,tocIndex:6},{value:".",paraId:5,tocIndex:6},{value:`TELEMETRY_METRIC_READER=prometheus `,paraId:6,tocIndex:6},{value:"\u662F\u5426\u542F\u52A8\u5355\u72EC\u7684\u670D\u52A1\u3002",paraId:7,tocIndex:7},{value:"off",paraId:8,tocIndex:7},{value:". \u6293\u53D6\u63A5\u53E3\u4E3A ",paraId:8,tocIndex:7},{value:"/api/prometheus:metrics",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"on",paraId:8,tocIndex:7},{value:". \u6293\u53D6\u63A5\u53E3\u4E3A ",paraId:8,tocIndex:7},{value:":port/metrics",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"\u542F\u52A8\u5355\u72EC\u670D\u52A1\u65F6\u7684\u670D\u52A1\u7AEF\u53E3\u3002\u9ED8\u8BA4 ",paraId:9,tocIndex:8},{value:"9464",paraId:9,tocIndex:8},{value:".",paraId:9,tocIndex:8},{value:"\u73AF\u5883\u53D8\u91CF",paraId:10,tocIndex:9},{value:"\u5355\u72EC server",paraId:11,tocIndex:10},{value:`scrape_configs: - job_name: 'nocobase' @@ -10810,7 +10862,7 @@ export const imageSettings = new SchemaSettings({ metrics_path: '/api/prometheus:metrics' static_configs: - targets: ['localhost:13001'] -`,paraId:14,tocIndex:10}],T6={},C6={title:"\u6269\u5C55\u5F00\u53D1",toc:"menu",filename:"docs/en-US/plugins/workflow/development/index.md",lastUpdated:1732240239e3,description:"\u5DE5\u4F5C\u6D41\u4ECE\u5185\u7F6E\u7684\u529F\u80FD\u6765\u8BF4\u4E0D\u662F\u5168\u80FD\u7684\uFF0C\u6BD4\u5982\u5185\u7F6E\u7684\u8282\u70B9\u7C7B\u578B\u65E0\u6CD5\u7A77\u4E3E\u6240\u6709\u4E1A\u52A1\u573A\u666F\u4E2D\u7684\u6BCF\u4E00\u79CD\u64CD\u4F5C\uFF0C\u6240\u4EE5\u6211\u4EEC\u8FD8\u63D0\u4F9B\u4E86\u5BF9\u5DE5\u4F5C\u6D41\u8FDB\u884C\u6269\u5C55\u7684\u8BBE\u8BA1\uFF0C\u5305\u62EC\u6269\u5C55\u89E6\u53D1\u5668\u4E0E\u8282\u70B9\u7C7B\u578B\u7B49\u65B9\u9762\uFF0C\u9047\u5230\u5185\u7F6E\u529F\u80FD\u65E0\u6CD5\u6EE1\u8DB3\u7684\u4E1A\u52A1\u573A\u666F\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4F4E\u4EE3\u7801\u7684\u65B9\u5F0F\u6269\u5C55\u89E3\u51B3\u3002"},A6=[{id:"\u6269\u5C55\u5F00\u53D1",depth:1,title:"\u6269\u5C55\u5F00\u53D1"},{id:"\u57FA\u7840\u5F15\u64CE",depth:2,title:"\u57FA\u7840\u5F15\u64CE"},{id:"\u6267\u884C\u6D41\u7A0B",depth:2,title:"\u6267\u884C\u6D41\u7A0B"}],q6=[{value:"\u5DE5\u4F5C\u6D41\u4ECE\u5185\u7F6E\u7684\u529F\u80FD\u6765\u8BF4\u4E0D\u662F\u5168\u80FD\u7684\uFF0C\u6BD4\u5982\u5185\u7F6E\u7684\u8282\u70B9\u7C7B\u578B\u65E0\u6CD5\u7A77\u4E3E\u6240\u6709\u4E1A\u52A1\u573A\u666F\u4E2D\u7684\u6BCF\u4E00\u79CD\u64CD\u4F5C\uFF0C\u6240\u4EE5\u6211\u4EEC\u8FD8\u63D0\u4F9B\u4E86\u5BF9\u5DE5\u4F5C\u6D41\u8FDB\u884C\u6269\u5C55\u7684\u8BBE\u8BA1\uFF0C\u5305\u62EC\u6269\u5C55\u89E6\u53D1\u5668\u4E0E\u8282\u70B9\u7C7B\u578B\u7B49\u65B9\u9762\uFF0C\u9047\u5230\u5185\u7F6E\u529F\u80FD\u65E0\u6CD5\u6EE1\u8DB3\u7684\u4E1A\u52A1\u573A\u666F\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4F4E\u4EE3\u7801\u7684\u65B9\u5F0F\u6269\u5C55\u89E3\u51B3\u3002",paraId:0,tocIndex:0},{value:"\u5DE5\u4F5C\u6D41\u5F15\u64CE\u4E5F\u662F\u4E00\u4E2A\u5FAE\u5185\u6838\u67B6\u6784\uFF0C\u6838\u5FC3\u4EC5\u4E3A\u4E00\u4E2A\u81EA\u52A8\u72B6\u6001\u673A\u7684\u8BBE\u8BA1\uFF0C\u53EF\u6839\u636E\u5177\u4F53\u914D\u7F6E\u6309\u987A\u5E8F\u8FDB\u884C\u8282\u70B9\u6307\u4EE4\u7684\u5904\u7406\u3002\u540C\u65F6\u8003\u8651\u6D41\u7A0B\u7684\u5E94\u7528\u573A\u666F\uFF08\u5982\u4EBA\u5DE5\u4ECB\u5165\u7B49\uFF09\uFF0C\u4ECE\u5E95\u5C42\u7684\u72B6\u6001\u8BBE\u8BA1\u4E0A\u4EA6\u652F\u6301\u4E34\u65F6\u4E2D\u65AD\u4E0E\u6062\u590D\u3002\u90E8\u5206\u5185\u7F6E\u7684\u8282\u70B9\u7C7B\u578B\u4E5F\u662F\u57FA\u4E8E\u8FD9\u4E9B\u5185\u6838\u8BBE\u8BA1\uFF0C\u6269\u5C55\u51FA\u6761\u4EF6\u3001\u5206\u652F\u7B49\u6D41\u7A0B\u63A7\u5236\u80FD\u529B\u3002",paraId:1,tocIndex:1},{value:"\u5DE5\u4F5C\u6D41\u5728\u914D\u7F6E\u548C\u8FD0\u884C\u65F6\u7684\u57FA\u7840\u6570\u636E\u5EFA\u6A21\u5982\u4E0B\u56FE\uFF1A",paraId:2,tocIndex:1},{value:"\u4E00\u4E2A\u5DE5\u4F5C\u6D41\uFF08workflow\uFF09\u6709\u82E5\u5E72\u4E2A\u6D41\u7A0B\u8282\u70B9\uFF08node\uFF09\uFF0C\u6BCF\u4E2A\u8282\u70B9\u5BF9\u5E94\u7279\u5B9A\u7684\u64CD\u4F5C\u6307\u4EE4\u3002",paraId:3,tocIndex:1},{value:"\u591A\u4E2A\u8282\u70B9\u4E4B\u95F4\u6709\u4E0A\u4E0B\u6E38\u548C\u5206\u652F\u5173\u7CFB\uFF0C\u7EC4\u6210\u6811\u72B6\u7ED3\u6784\uFF0C\u5206\u652F\u7684\u6D41\u5411\u6709\u5F00\u542F\u5206\u652F\u7684\u8282\u70B9\u6307\u4EE4\u5185\u5BB9\u51B3\u5B9A\u3002",paraId:3,tocIndex:1},{value:"\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u6709\u591A\u6B21\u89E6\u53D1\uFF0C\u6BCF\u6B21\u89E6\u53D1\u4F1A\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u6D41\u7A0B\u5B9E\u4F8B\uFF08execution\uFF09\uFF0C\u7528\u4E8E\u8DDF\u8E2A\u6267\u884C\u72B6\u6001\u3002",paraId:3,tocIndex:1},{value:"\u6BCF\u6B21\u89E6\u53D1\u6267\u884C\uFF0C\u6839\u636E\u6D41\u7A0B\u7ECF\u8FC7\u7684\u8282\u70B9\uFF0C\u4F1A\u6709\u82E5\u5E72\u4E2A\u4EFB\u52A1\uFF08job\uFF09\uFF0C\u4EE5\u8BB0\u5F55\u6BCF\u4E2A\u8282\u70B9\u7684\u6267\u884C\u72B6\u6001\u548C\u7ED3\u679C\u3002",paraId:3,tocIndex:1},{value:"\u53EF\u4EE5\u5C06\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u7406\u89E3\u4E3A\u6A21\u677F\uFF0C\u6BCF\u4E00\u6B21\u89E6\u53D1\u5C31\u6839\u636E\u8BE5\u6A21\u677F\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u6267\u884C\u5B9E\u4F8B\uFF0C\u7528\u4E8E\u8DDF\u8E2A\u6267\u884C\u72B6\u6001\u3002\u800C\u8282\u70B9\u4E5F\u76F8\u5F53\u4E8E\u4EFB\u52A1\u7684\u6A21\u677F\uFF0C\u6D41\u7A0B\u7ECF\u8FC7\u8282\u70B9\u5219\u4F1A\u521B\u5EFA\u4E00\u4E2A\u5BF9\u5E94\u7684\u4EFB\u52A1\uFF0C\u7528\u4E8E\u8BB0\u5F55\u8282\u70B9\u6267\u884C\u7684\u72B6\u6001\u548C\u6570\u636E\u7ED3\u679C\u3002",paraId:4,tocIndex:1},{value:"\u5728\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u88AB\u89E6\u53D1\u540E\uFF0C\u5F15\u64CE\uFF08\u6267\u884C\u5668\uFF09\u4F1A\u6839\u636E\u914D\u7F6E\u7684\u8282\u70B9\u987A\u5E8F\uFF0C\u4F9D\u6B21\u6267\u884C\u6BCF\u4E2A\u8282\u70B9\u4EE3\u8868\u7684\u6307\u4EE4\u548C\u64CD\u4F5C\u3002\u6BCF\u4E2A\u8282\u70B9\u6267\u884C\u540E\u90FD\u4F1A\u8FD4\u56DE\u4EE5\u4E0B\u5176\u4E2D\u4E00\u79CD\u72B6\u6001\uFF1A",paraId:5,tocIndex:2},{value:"\u5E38\u91CF",paraId:6,tocIndex:2},{value:"\u6570\u636E\u503C",paraId:6,tocIndex:2},{value:"\u542B\u4E49",paraId:6,tocIndex:2},{value:"JOB_STATUS.RESOLVED",paraId:6,tocIndex:2},{value:"1",paraId:6,tocIndex:2},{value:"\u6210\u529F\uFF1A\u8BE5\u8282\u70B9\u5DF2\u6267\u884C\u6210\u529F",paraId:6,tocIndex:2},{value:"JOB_STATUS.REJECTED",paraId:6,tocIndex:2},{value:"-1",paraId:6,tocIndex:2},{value:"\u5931\u8D25\uFF1A\u8BE5\u8282\u70B9\u5DF2\u6267\u884C\u5931\u8D25\uFF08\u62A5\u9519\u6216\u4E1A\u52A1\u62D2\u7EDD\uFF09",paraId:6,tocIndex:2},{value:"JOB_STATUS.PENDING",paraId:6,tocIndex:2},{value:"0",paraId:6,tocIndex:2},{value:"\u505C\u7B49\uFF1A\u5DF2\u6267\u884C\u5230\u8BE5\u8282\u70B9\uFF0C\u4F46\u6307\u4EE4\u8981\u6C42\u6302\u8D77\u7B49\u5F85",paraId:6,tocIndex:2},{value:"\u8282\u70B9\u7684\u6267\u884C\u72B6\u6001\u4F1A\u5F71\u54CD\u6574\u4E2A\u6D41\u7A0B\u7684\u6210\u529F\u6216\u5931\u8D25\uFF0C\u901A\u5E38\u5728\u6CA1\u6709\u5206\u652F\u7684\u60C5\u51B5\u4E0B\uFF0C\u67D0\u4E2A\u8282\u70B9\u7684\u5931\u8D25\u4F1A\u76F4\u63A5\u5BFC\u81F4\u6574\u4E2A\u6D41\u7A0B\u5931\u8D25\u3002\u5176\u4E2D\u6700\u5E38\u89C4\u7684\u60C5\u51B5\u662F\uFF0C\u8282\u70B9\u6267\u884C\u6210\u529F\u5219\u7EE7\u7EED\u8282\u70B9\u8868\u4E2D\u7684\u4E0B\u4E00\u4E2A\u8282\u70B9\uFF0C\u76F4\u5230\u6CA1\u6709\u540E\u7EED\u8282\u70B9\uFF0C\u5219\u6574\u4E2A\u5DE5\u4F5C\u6D41\u6267\u884C\u4EE5\u6210\u529F\u7684\u72B6\u6001\u5B8C\u6210\u3002",paraId:7,tocIndex:2},{value:"\u5982\u679C\u6267\u884C\u4E2D\u67D0\u4E2A\u8282\u70B9\u8FD4\u56DE\u4E86\u6267\u884C\u5931\u8D25\u7684\u72B6\u6001\uFF0C\u5219\u89C6\u4EE5\u4E0B\u4E24\u79CD\u60C5\u51B5\u5F15\u64CE\u4F1A\u6709\u4E0D\u540C\u7684\u5904\u7406\uFF1A",paraId:8,tocIndex:2},{value:"\u8FD4\u56DE\u5931\u8D25\u72B6\u6001\u7684\u8282\u70B9\u5904\u4E8E\u4E3B\u6D41\u7A0B\uFF0C\u5373\u5747\u672A\u5904\u4E8E\u4E0A\u6E38\u7684\u8282\u70B9\u5F00\u542F\u7684\u4EFB\u610F\u5206\u652F\u6D41\u7A0B\u4E4B\u5185\uFF0C\u5219\u6574\u4E2A\u4E3B\u6D41\u7A0B\u4F1A\u5224\u5B9A\u4E3A\u5931\u8D25\uFF0C\u5E76\u9000\u51FA\u6D41\u7A0B\u3002",paraId:9,tocIndex:2},{value:"\u8FD4\u56DE\u5931\u8D25\u72B6\u6001\u7684\u8282\u70B9\u5904\u4E8E\u67D0\u4E2A\u5206\u652F\u6D41\u7A0B\u4E4B\u5185\uFF0C\u6B64\u65F6\u5C06\u5224\u5B9A\u6D41\u7A0B\u4E0B\u4E00\u6B65\u72B6\u6001\u7684\u804C\u8D23\u4EA4\u7531\u5F00\u542F\u5206\u652F\u7684\u8282\u70B9\uFF0C\u7531\u8BE5\u8282\u70B9\u7684\u5185\u90E8\u903B\u8F91\u51B3\u5B9A\u540E\u7EED\u6D41\u7A0B\u7684\u72B6\u6001\uFF0C\u5E76\u4E14\u9012\u5F52\u4E0A\u6EAF\u5230\u4E3B\u6D41\u7A0B\u3002",paraId:10,tocIndex:2},{value:"\u6700\u7EC8\u90FD\u5728\u4E3B\u6D41\u7A0B\u7684\u8282\u70B9\u4E0A\u5F97\u51FA\u6574\u4E2A\u6D41\u7A0B\u7684\u4E0B\u4E00\u6B65\u72B6\u6001\uFF0C\u5982\u679C\u4E3B\u6D41\u7A0B\u7684\u8282\u70B9\u4E2D\u8FD4\u56DE\u7684\u662F\u5931\u8D25\uFF0C\u5219\u6574\u4E2A\u6D41\u7A0B\u4EE5\u5931\u8D25\u7684\u72B6\u6001\u7ED3\u675F\u3002",paraId:11,tocIndex:2},{value:"\u5982\u679C\u4EFB\u610F\u8282\u70B9\u6267\u884C\u540E\u8FD4\u56DE\u4E86\u201C\u505C\u7B49\u201D\u72B6\u6001\uFF0C\u5219\u6574\u4E2A\u6267\u884C\u6D41\u7A0B\u4F1A\u88AB\u6682\u65F6\u4E2D\u65AD\u6302\u8D77\uFF0C\u7B49\u5F85\u4E00\u4E2A\u7531\u5BF9\u5E94\u8282\u70B9\u5B9A\u4E49\u7684\u4E8B\u4EF6\u89E6\u53D1\u4EE5\u6062\u590D\u6D41\u7A0B\u7684\u6267\u884C\u3002\u4F8B\u5982\u5BA1\u6279\u7C7B\u578B\u7684\u8282\u70B9\u5904\u7406\uFF0C\u4F1A\u4EE5\u201C\u505C\u7B49\u201D\u72B6\u6001\u4ECE\u8BE5\u8282\u70B9\u6682\u505C\uFF0C\u7B49\u5F85\u4EBA\u5DE5\u4ECB\u5165\u8BE5\u6D41\u7A0B\uFF0C\u51B3\u7B56\u662F\u5426\u901A\u8FC7\u3002\u5982\u679C\u4EBA\u5DE5\u8F93\u5165\u7684\u72B6\u6001\u662F\u901A\u8FC7\uFF0C\u5219\u7EE7\u7EED\u540E\u7EED\u7684\u6D41\u7A0B\u8282\u70B9\uFF0C\u53CD\u4E4B\u5219\u6309\u524D\u9762\u7684\u5931\u8D25\u903B\u8F91\u5904\u7406\u3002",paraId:12,tocIndex:2},{value:"\u5BF9\u5E94\u7684\uFF0C\u6574\u4E2A\u5DE5\u4F5C\u6D41\u5728\u89E6\u53D1\u540E\u6267\u884C\u5B9E\u4F8B\u7684\u72B6\u6001\u6709\u4EE5\u4E0B\u51E0\u79CD\uFF1A",paraId:13,tocIndex:2},{value:"\u5E38\u91CF\u540D",paraId:14,tocIndex:2},{value:"\u503C",paraId:14,tocIndex:2},{value:"\u542B\u4E49",paraId:14,tocIndex:2},{value:"EXECUTION_STATUS.STARTED",paraId:14,tocIndex:2},{value:"0",paraId:14,tocIndex:2},{value:"\u6267\u884C\u4E2D",paraId:14,tocIndex:2},{value:"EXECUTION_STATUS.RESOLVED",paraId:14,tocIndex:2},{value:"1",paraId:14,tocIndex:2},{value:"\u5DF2\u6267\u884C\u6210\u529F",paraId:14,tocIndex:2},{value:"EXECUTION_STATUS.REJECTED",paraId:14,tocIndex:2},{value:"-1",paraId:14,tocIndex:2},{value:"\u5DF2\u6267\u884C\u5931\u8D25",paraId:14,tocIndex:2},{value:"\u5728\u89E6\u53D1\u540E\u672A\u6267\u884C\u5B8C\u6BD5\u6216\u67D0\u4E2A\u8282\u70B9\u8FD4\u56DE\u201C\u505C\u7B49\u201D\u72B6\u6001\u7684\u60C5\u51B5\u4E0B\uFF0C\u6267\u884C\u5B9E\u4F8B\u7684\u72B6\u6001\u90FD\u662F\u201C\u6267\u884C\u4E2D\u201D\u3002\u76F4\u5230\u4E3B\u6D41\u7A0B\u4E2D\u4EA7\u751F\u7EC8\u6001\uFF08\u6210\u529F\u6216\u5931\u8D25\uFF09\u7684\u8282\u70B9\uFF0C\u6574\u4E2A\u6267\u884C\u5B9E\u4F8B\u7684\u72B6\u6001\u624D\u4F1A\u88AB\u66F4\u65B0\u4E3A\u5BF9\u5E94\u7684\u7EC8\u6001\uFF0C\u4EE3\u8868\u6267\u884C\u7ED3\u675F\u3002",paraId:15,tocIndex:2}],E6={},D6={title:"\u5FAA\u73AF",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/loop.md",lastUpdated:1732240239e3,description:"\u5FAA\u73AF\u76F8\u5F53\u7F16\u7A0B\u8BED\u8A00\u4E2D\u7684 for/while/forEach \u7B49\u8BED\u6CD5\u7ED3\u6784\uFF0C\u5F53\u9700\u8981\u4E00\u5B9A\u6B21\u6570\u6216\u9488\u5BF9\u67D0\u4E2A\u6570\u636E\u96C6\u5408\uFF08\u6570\u7EC4\uFF09\u91CD\u590D\u6267\u884C\u4E00\u4E9B\u64CD\u4F5C\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5FAA\u73AF\u8282\u70B9\u3002"},O6=[{id:"\u5FAA\u73AF",depth:1,title:"\u5FAA\u73AF"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u5FAA\u73AF\u5BF9\u8C61",depth:3,title:"\u5FAA\u73AF\u5BF9\u8C61"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],R6=[{value:"\u5FAA\u73AF\u76F8\u5F53\u7F16\u7A0B\u8BED\u8A00\u4E2D\u7684 ",paraId:0,tocIndex:0},{value:"for",paraId:0,tocIndex:0},{value:"/",paraId:0,tocIndex:0},{value:"while",paraId:0,tocIndex:0},{value:"/",paraId:0,tocIndex:0},{value:"forEach",paraId:0,tocIndex:0},{value:" \u7B49\u8BED\u6CD5\u7ED3\u6784\uFF0C\u5F53\u9700\u8981\u4E00\u5B9A\u6B21\u6570\u6216\u9488\u5BF9\u67D0\u4E2A\u6570\u636E\u96C6\u5408\uFF08\u6570\u7EC4\uFF09\u91CD\u590D\u6267\u884C\u4E00\u4E9B\u64CD\u4F5C\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5FAA\u73AF\u8282\u70B9\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5FAA\u73AF\u201D\u8282\u70B9\uFF1A",paraId:1,tocIndex:1},{value:"\u521B\u5EFA\u5FAA\u73AF\u8282\u70B9\u540E\uFF0C\u4F1A\u751F\u6210\u4E00\u4E2A\u5FAA\u73AF\u5185\u90E8\u7684\u5206\u652F\uFF0C\u53EF\u4EE5\u5728\u5206\u652F\u4E2D\u589E\u52A0\u4EFB\u610F\u591A\u4E2A\u8282\u70B9\uFF0C\u8FD9\u4E9B\u8282\u70B9\u9664\u4E86\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u8FD8\u53EF\u4EE5\u4F7F\u7528\u5FAA\u73AF\u4E0A\u4E0B\u6587\u7684\u5C40\u90E8\u53D8\u91CF\uFF0C\u4F8B\u5982\u5FAA\u73AF\u96C6\u5408\u4E2D\u6BCF\u6B21\u5FAA\u73AF\u5230\u7684\u6570\u636E\u5BF9\u8C61\uFF0C\u6216\u8005\u662F\u5FAA\u73AF\u6B21\u6570\u7684\u7D22\u5F15\uFF08\u7D22\u5F15\u4ECE ",paraId:2,tocIndex:1},{value:"0",paraId:2,tocIndex:1},{value:" \u5F00\u59CB\u8BA1\u6570\uFF09\u3002\u5C40\u90E8\u53D8\u91CF\u7684\u4F5C\u7528\u57DF\u4EC5\u9650\u4E8E\u5FAA\u73AF\u5185\u90E8\uFF0C\u5982\u679C\u6709\u591A\u5C42\u5FAA\u73AF\u5D4C\u5957\uFF0C\u53EF\u4EE5\u6309\u5C42\u4F7F\u7528\u5177\u4F53\u5FAA\u73AF\u7684\u5C40\u90E8\u53D8\u91CF\u3002",paraId:2,tocIndex:1},{value:"\u5FAA\u73AF\u4F1A\u4EE5\u5FAA\u73AF\u5BF9\u8C61\u4E0D\u540C\u6570\u636E\u7C7B\u578B\u505A\u4E0D\u540C\u7684\u5904\u7406\uFF1A",paraId:3,tocIndex:3},{value:"\u6570\u7EC4",paraId:4,tocIndex:3},{value:"\uFF1A\u6700\u5E38\u89C1\u7684\u60C5\u51B5\uFF0C\u901A\u5E38\u662F\u53EF\u4EE5\u9009\u62E9\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u6BD4\u5982\u67E5\u8BE2\u8282\u70B9\u7684\u591A\u6761\u6570\u636E\u7ED3\u679C\uFF0C\u6216\u8005\u9884\u52A0\u8F7D\u7684\u5BF9\u591A\u5173\u7CFB\u6570\u636E\u3002\u5982\u679C\u9009\u62E9\u7684\u662F\u6570\u7EC4\uFF0C\u5FAA\u73AF\u8282\u70B9\u4F1A\u904D\u5386\u6570\u7EC4\u4E2D\u7684\u6BCF\u4E2A\u5143\u7D20\uFF0C\u6BCF\u6B21\u5FAA\u73AF\u90FD\u4F1A\u5C06\u5F53\u524D\u5143\u7D20\u8D4B\u503C\u7ED9\u5FAA\u73AF\u4E0A\u4E0B\u6587\u7684\u5C40\u90E8\u53D8\u91CF\u3002",paraId:4,tocIndex:3},{value:"\u6570\u5B57",paraId:5,tocIndex:3},{value:"\uFF1A\u5F53\u9009\u62E9\u7684\u53D8\u91CF\u662F\u4E00\u4E2A\u6570\u5B57\u662F\uFF0C\u4F1A\u4EE5\u8BE5\u6570\u5B57\u4E3A\u5FAA\u73AF\u6B21\u6570\uFF0C\u5C40\u57DF\u53D8\u91CF\u4E2D\u7684\u5FAA\u73AF\u6B21\u6570\u7684\u7D22\u5F15\u4E5F\u5373\u5FAA\u73AF\u5BF9\u8C61\u7684\u503C\u3002",paraId:5,tocIndex:3},{value:"\u5B57\u7B26\u4E32",paraId:6,tocIndex:3},{value:"\uFF1A\u5F53\u9009\u62E9\u7684\u53D8\u91CF\u662F\u4E00\u4E2A\u5B57\u7B26\u4E32\u65F6\uFF0C\u4F1A\u4EE5\u8BE5\u5B57\u7B26\u4E32\u7684\u957F\u5EA6\u4E3A\u5FAA\u73AF\u6B21\u6570\uFF0C\u6BCF\u6B21\u6309\u7D22\u5F15\u5904\u7406\u5B57\u7B26\u4E32\u4E2D\u7684\u6BCF\u4E00\u4E2A\u5B57\u7B26\u3002",paraId:6,tocIndex:3},{value:"\u5176\u4ED6",paraId:7,tocIndex:3},{value:"\uFF1A\u5176\u4ED6\u7C7B\u578B\u7684\u503C\uFF08\u5305\u62EC\u5BF9\u8C61\u7C7B\u578B\uFF09\u90FD\u4EC5\u4F5C\u4E3A\u5355\u6B21\u5904\u7406\u7684\u5FAA\u73AF\u5BF9\u8C61\uFF0C\u4E5F\u53EA\u4F1A\u5FAA\u73AF\u4E00\u6B21\uFF0C\u901A\u5E38\u8FD9\u79CD\u60C5\u51B5\u4E0D\u9700\u8981\u4F7F\u7528\u5FAA\u73AF\u3002",paraId:7,tocIndex:3},{value:"\u9664\u4E86\u9009\u62E9\u53D8\u91CF\uFF0C\u9488\u5BF9\u6570\u5B57\u548C\u5B57\u7B26\u4E32\u7C7B\u578B\u4E5F\u53EF\u4EE5\u76F4\u63A5\u8F93\u5165\u5E38\u91CF\uFF0C\u4F8B\u5982\u8F93\u5165 ",paraId:8,tocIndex:3},{value:"5",paraId:8,tocIndex:3},{value:"\uFF08\u6570\u5B57\u7C7B\u578B\uFF09\uFF0C\u5FAA\u73AF\u8282\u70B9\u4F1A\u5FAA\u73AF 5 \u6B21\uFF0C\u8F93\u5165 ",paraId:8,tocIndex:3},{value:"abc",paraId:8,tocIndex:3},{value:"\uFF08\u5B57\u7B26\u4E32\u7C7B\u578B\uFF09\uFF0C\u5FAA\u73AF\u8282\u70B9\u4F1A\u5FAA\u73AF 3 \u6B21\uFF0C\u5206\u522B\u5904\u7406 ",paraId:8,tocIndex:3},{value:"a",paraId:8,tocIndex:3},{value:"\u3001",paraId:8,tocIndex:3},{value:"b",paraId:8,tocIndex:3},{value:"\u3001",paraId:8,tocIndex:3},{value:"c",paraId:8,tocIndex:3},{value:" \u4E09\u4E2A\u5B57\u7B26\u3002\u5728\u9009\u62E9\u53D8\u91CF\u7684\u5DE5\u5177\u4E2D\u9009\u62E9\u5E0C\u671B\u4F7F\u7528\u5E38\u91CF\u7684\u7C7B\u578B\u3002",paraId:8,tocIndex:3},{value:"\u4F8B\u5982\u5728\u8BA2\u5355\u4E0B\u5355\u65F6\uFF0C\u9700\u8981\u5BF9\u8BA2\u5355\u4E2D\u7684\u6BCF\u4E2A\u5546\u54C1\u8FDB\u884C\u5E93\u5B58\u68C0\u67E5\uFF0C\u5982\u679C\u5E93\u5B58\u5145\u8DB3\u5219\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u660E\u7EC6\u5185\u7684\u5546\u54C1\u66F4\u65B0\u4E3A\u65E0\u6548\u3002",paraId:9,tocIndex:4},{value:"\u521B\u5EFA\u4E09\u5F20\u8868\uFF0C\u5546\u54C1\u8868 <-(1:m)-- \u8BA2\u5355\u660E\u7EC6\u8868 --(m:1)-> \u8BA2\u5355\u8868\uFF0C\u6570\u636E\u6A21\u578B\u5982\u4E0B\uFF1A",paraId:10,tocIndex:4},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:11,tocIndex:4},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:11,tocIndex:4},{value:"\u8BA2\u5355\u5546\u54C1\u660E\u7EC6",paraId:11,tocIndex:4},{value:"\u591A\u5BF9\u4E00\uFF08\u660E\u7EC6\uFF09",paraId:11,tocIndex:4},{value:"\u8BA2\u5355\u603B\u4EF7",paraId:11,tocIndex:4},{value:"\u6570\u5B57",paraId:11,tocIndex:4},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:12,tocIndex:4},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:12,tocIndex:4},{value:"\u5546\u54C1",paraId:12,tocIndex:4},{value:"\u4E00\u5BF9\u591A\uFF08\u5546\u54C1\uFF09",paraId:12,tocIndex:4},{value:"\u6570\u91CF",paraId:12,tocIndex:4},{value:"\u6570\u5B57",paraId:12,tocIndex:4},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:13,tocIndex:4},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:13,tocIndex:4},{value:"\u5546\u54C1\u540D\u79F0",paraId:13,tocIndex:4},{value:"\u5355\u884C\u6587\u672C",paraId:13,tocIndex:4},{value:"\u4EF7\u683C",paraId:13,tocIndex:4},{value:"\u6570\u5B57",paraId:13,tocIndex:4},{value:"\u5E93\u5B58",paraId:13,tocIndex:4},{value:"\u6574\u6570",paraId:13,tocIndex:4},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\uFF0C\u89E6\u53D1\u5668\u9009\u62E9\u201C\u6570\u636E\u8868\u4E8B\u4EF6\u201D\uFF0C\u9009\u62E9\u201C\u8BA2\u5355\u201D\u8868\u201C\u65B0\u589E\u6570\u636E\u65F6\u201D\u89E6\u53D1\uFF0C\u5E76\u4E14\u9700\u8981\u914D\u7F6E\u4E0A\u9884\u52A0\u8F7D\u201C\u8BA2\u5355\u660E\u7EC6\u201D\u8868\u548C\u660E\u7EC6\u4E0B\u7684\u5546\u54C1\u8868\u7684\u5173\u7CFB\u6570\u636E\uFF1A",paraId:14,tocIndex:4},{value:"\u521B\u5EFA\u5FAA\u73AF\u8282\u70B9\uFF0C\u9009\u62E9\u5FAA\u73AF\u5BF9\u8C61\u4E3A\u201C\u89E6\u53D1\u6570\u636E / \u8BA2\u5355\u660E\u7EC6\u201D\uFF0C\u5373\u5BF9\u8BA2\u5355\u660E\u7EC6\u8868\u4E2D\u7684\u6BCF\u4E00\u6761\u6570\u636E\uFF1A",paraId:15,tocIndex:4},{value:"\u5FAA\u73AF\u8282\u70B9\u5185\u90E8\u521B\u5EFA\u4E00\u4E2A\u201C\u6761\u4EF6\u5224\u65AD\u201D\u8282\u70B9\uFF0C\u5224\u65AD\u5546\u54C1\u7684\u5E93\u5B58\u662F\u5426\u5145\u8DB3\uFF1A",paraId:16,tocIndex:4},{value:"\u5982\u679C\u5145\u8DB3\u5219\u5728\u201C\u662F\u201D\u7684\u5206\u652F\u4E2D\u521B\u5EFA\u4E00\u4E2A\u201C\u8BA1\u7B97\u8282\u70B9\u201D\u548C\u4E00\u4E2A\u201C\u66F4\u65B0\u6570\u636E\u201D\u8282\u70B9\uFF0C\u5C06\u8BA1\u7B97\u5B8C\u6263\u51CF\u7684\u5E93\u5B58\u66F4\u65B0\u81F3\u5BF9\u5E94\u5546\u54C1\u7684\u8BB0\u5F55\uFF1A",paraId:17,tocIndex:4},{value:"\u5426\u5219\u5728\u201C\u5426\u201D\u7684\u5206\u652F\u4E2D\u521B\u5EFA\u4E00\u4E2A\u201C\u66F4\u65B0\u6570\u636E\u201D\u8282\u70B9\uFF0C\u66F4\u65B0\u8BA2\u5355\u660E\u7EC6\u7684\u72B6\u6001\u4E3A\u201C\u65E0\u6548\u201D\uFF1A",paraId:18,tocIndex:4},{value:"\u603B\u7684\u6D41\u7A0B\u7ED3\u6784\u5982\u4E0B\u56FE\uFF1A",paraId:19,tocIndex:4},{value:"\u914D\u7F6E\u5B8C\u6210\u5E76\u6FC0\u6D3B\u8BE5\u6D41\u7A0B\u540E\uFF0C\u5F53\u521B\u5EFA\u65B0\u8BA2\u5355\u65F6\uFF0C\u4F1A\u81EA\u52A8\u68C0\u67E5\u8BA2\u5355\u660E\u7EC6\u4E2D\u7684\u5546\u54C1\u5E93\u5B58\uFF0C\u5982\u679C\u5E93\u5B58\u5145\u8DB3\u5219\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u660E\u7EC6\u5185\u7684\u5546\u54C1\u66F4\u65B0\u4E3A\u65E0\u6548\uFF08\u4EE5\u4FBF\u8BA1\u7B97\u6709\u6548\u7684\u8BA2\u5355\u603B\u4EF7\uFF09\u3002",paraId:20,tocIndex:4}],M6={},L6={title:"v1.0.0-alpha.15: 2024.05.19",toc:"menu",filename:"docs/en-US/welcome/release/20240519-changelog.md",lastUpdated:1732240239e3,description:"Refer to Fixed Table Columns"},N6=[{id:"v100-alpha15-20240519",depth:1,title:"v1.0.0-alpha.15: 2024.05.19"},{id:"new-features",depth:2,title:"New Features"},{id:"fixed-table-columns",depth:3,title:"Fixed Table Columns"},{id:"support-for-adding-gantt-kanban-blocks-in-modalsdrawers",depth:3,title:"Support for Adding Gantt, Kanban Blocks in Modals/Drawers"},{id:"support-for-adding-linkage-rules-in-detail-blocks",depth:3,title:"Support for Adding Linkage Rules in Detail Blocks"},{id:"auth-ldap",depth:3,title:"Auth: LDAP"},{id:"workflow-http-request-node",depth:3,title:"Workflow HTTP Request Node"},{id:"support-for-applicationwww-x-form-urlencoded-data-format",depth:4,title:"Support for application/www-x-form-urlencoded Data Format"},{id:"string-template-support-for-value-input-fields",depth:4,title:"String Template Support for Value Input Fields"},{id:"workflow-custom-action-event",depth:3,title:"Workflow Custom Action Event"},{id:"improvements",depth:2,title:"Improvements"},{id:"configure-actions-adjustments",depth:3,title:"Configure Actions Adjustments"},{id:"ui-adjustments",depth:4,title:"UI Adjustments"},{id:"impact-on-developers",depth:4,title:"Impact on Developers"},{id:"logs",depth:3,title:"Logs"},{id:"log-plugin-file-list",depth:4,title:"Log Plugin File List"},{id:"workflow-and-custom-request-folder-paths",depth:4,title:"Workflow and Custom Request Folder Paths"},{id:"workflow",depth:3,title:"Workflow"},{id:"http-request-node-result-data",depth:4,title:"HTTP Request Node Result Data"},{id:"bug-fixes",depth:2,title:"Bug Fixes"},{id:"documentation",depth:2,title:"Documentation"}],z6=[{value:"Refer to ",paraId:0,tocIndex:2},{value:"Fixed Table Columns",paraId:0,tocIndex:2},{value:"Refer to ",paraId:1,tocIndex:3},{value:"Adding Blocks in Modals",paraId:1,tocIndex:3},{value:"The linkage rules in detail blocks now support dynamically setting fields to show/hide. Refer to ",paraId:2,tocIndex:4},{value:"Linkage Rules in Detail Blocks",paraId:2,tocIndex:4},{value:'Added the "Auth: LDAP" plugin (commercial plugin), which allows users to sign in to NocoBase using LDAP server account credentials. Refer to the ',paraId:3,tocIndex:5},{value:"User Manual",paraId:3,tocIndex:5},{value:"application/www-x-form-urlencoded",paraId:4},{value:"Previously, request node only supported JSON format (",paraId:5,tocIndex:7},{value:"application/json",paraId:5,tocIndex:7},{value:") for the body part of the Content-Type. After the upgrade, it also support configuring form format data in key-value pairs.",paraId:5,tocIndex:7},{value:'Previously, the value input fields in the "Headers" and "Parameters" sections of request node only supported pure input or variable selection. After the upgrade, you can directly enter a string with embedded variables. It will be automatically parsed as the final string value before sending the request.',paraId:6,tocIndex:8},{value:'The "Submit to Workflow" action button, originally bound to directly trigger type of the "Post-action Events", has been split and independently created as the "Trigger Workflow" action button for "Custom Action Events" (a commercial plugin). The previously added action buttons in the open-source version can still be used, but no longer supported for new additions. Please use the new "Custom Action Event" instead. See the ',paraId:7,tocIndex:9},{value:"Usage Manual",paraId:7,tocIndex:9},{value:" for more information.",paraId:7,tocIndex:9},{value:"Flattened menu hierarchy and removed some toggle operations, supporting repeated additions.",paraId:8,tocIndex:12},{value:"Before:",paraId:9,tocIndex:12},{value:"After:",paraId:10,tocIndex:12},{value:"Merged similar actions",paraId:11,tocIndex:12},{value:'2.1. Merged "Add New" and "Add Record" options',paraId:12,tocIndex:12},{value:"Before:",paraId:13,tocIndex:12},{value:"After:",paraId:14,tocIndex:12},{value:'2.2 Merged "Submit" and "Save Record" options',paraId:15,tocIndex:12},{value:"Before:",paraId:16,tocIndex:12},{value:"After:",paraId:17,tocIndex:12},{value:"See PR\uFF1A",paraId:18,tocIndex:13},{value:"refactor: flatten and merge Actions #4336",paraId:18,tocIndex:13},{value:"Before: In a multi-application environment, the log plugin displays all application log file lists.",paraId:19,tocIndex:15},{value:"After: In a multi-application environment, the log plugin only displays the current application log file list.",paraId:20,tocIndex:15},{value:"Before: The folder path for workflow and custom request log files is at the same level as the application log folder.",paraId:21,tocIndex:16},{value:"After: The folder path for workflow and custom request log files belongs to the corresponding application log folder.",paraId:22,tocIndex:16},{value:"Previously, the result data structure after successful or failed HTTP request node was inconsistent.",paraId:23,tocIndex:18},{value:`// Only the response data part is returned when successful +`,paraId:14,tocIndex:10}],T6={},C6={title:"\u6269\u5C55\u5F00\u53D1",toc:"menu",filename:"docs/en-US/plugins/workflow/development/index.md",lastUpdated:173254844e4,description:"\u5DE5\u4F5C\u6D41\u4ECE\u5185\u7F6E\u7684\u529F\u80FD\u6765\u8BF4\u4E0D\u662F\u5168\u80FD\u7684\uFF0C\u6BD4\u5982\u5185\u7F6E\u7684\u8282\u70B9\u7C7B\u578B\u65E0\u6CD5\u7A77\u4E3E\u6240\u6709\u4E1A\u52A1\u573A\u666F\u4E2D\u7684\u6BCF\u4E00\u79CD\u64CD\u4F5C\uFF0C\u6240\u4EE5\u6211\u4EEC\u8FD8\u63D0\u4F9B\u4E86\u5BF9\u5DE5\u4F5C\u6D41\u8FDB\u884C\u6269\u5C55\u7684\u8BBE\u8BA1\uFF0C\u5305\u62EC\u6269\u5C55\u89E6\u53D1\u5668\u4E0E\u8282\u70B9\u7C7B\u578B\u7B49\u65B9\u9762\uFF0C\u9047\u5230\u5185\u7F6E\u529F\u80FD\u65E0\u6CD5\u6EE1\u8DB3\u7684\u4E1A\u52A1\u573A\u666F\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4F4E\u4EE3\u7801\u7684\u65B9\u5F0F\u6269\u5C55\u89E3\u51B3\u3002"},A6=[{id:"\u6269\u5C55\u5F00\u53D1",depth:1,title:"\u6269\u5C55\u5F00\u53D1"},{id:"\u57FA\u7840\u5F15\u64CE",depth:2,title:"\u57FA\u7840\u5F15\u64CE"},{id:"\u6267\u884C\u6D41\u7A0B",depth:2,title:"\u6267\u884C\u6D41\u7A0B"}],q6=[{value:"\u5DE5\u4F5C\u6D41\u4ECE\u5185\u7F6E\u7684\u529F\u80FD\u6765\u8BF4\u4E0D\u662F\u5168\u80FD\u7684\uFF0C\u6BD4\u5982\u5185\u7F6E\u7684\u8282\u70B9\u7C7B\u578B\u65E0\u6CD5\u7A77\u4E3E\u6240\u6709\u4E1A\u52A1\u573A\u666F\u4E2D\u7684\u6BCF\u4E00\u79CD\u64CD\u4F5C\uFF0C\u6240\u4EE5\u6211\u4EEC\u8FD8\u63D0\u4F9B\u4E86\u5BF9\u5DE5\u4F5C\u6D41\u8FDB\u884C\u6269\u5C55\u7684\u8BBE\u8BA1\uFF0C\u5305\u62EC\u6269\u5C55\u89E6\u53D1\u5668\u4E0E\u8282\u70B9\u7C7B\u578B\u7B49\u65B9\u9762\uFF0C\u9047\u5230\u5185\u7F6E\u529F\u80FD\u65E0\u6CD5\u6EE1\u8DB3\u7684\u4E1A\u52A1\u573A\u666F\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4F4E\u4EE3\u7801\u7684\u65B9\u5F0F\u6269\u5C55\u89E3\u51B3\u3002",paraId:0,tocIndex:0},{value:"\u5DE5\u4F5C\u6D41\u5F15\u64CE\u4E5F\u662F\u4E00\u4E2A\u5FAE\u5185\u6838\u67B6\u6784\uFF0C\u6838\u5FC3\u4EC5\u4E3A\u4E00\u4E2A\u81EA\u52A8\u72B6\u6001\u673A\u7684\u8BBE\u8BA1\uFF0C\u53EF\u6839\u636E\u5177\u4F53\u914D\u7F6E\u6309\u987A\u5E8F\u8FDB\u884C\u8282\u70B9\u6307\u4EE4\u7684\u5904\u7406\u3002\u540C\u65F6\u8003\u8651\u6D41\u7A0B\u7684\u5E94\u7528\u573A\u666F\uFF08\u5982\u4EBA\u5DE5\u4ECB\u5165\u7B49\uFF09\uFF0C\u4ECE\u5E95\u5C42\u7684\u72B6\u6001\u8BBE\u8BA1\u4E0A\u4EA6\u652F\u6301\u4E34\u65F6\u4E2D\u65AD\u4E0E\u6062\u590D\u3002\u90E8\u5206\u5185\u7F6E\u7684\u8282\u70B9\u7C7B\u578B\u4E5F\u662F\u57FA\u4E8E\u8FD9\u4E9B\u5185\u6838\u8BBE\u8BA1\uFF0C\u6269\u5C55\u51FA\u6761\u4EF6\u3001\u5206\u652F\u7B49\u6D41\u7A0B\u63A7\u5236\u80FD\u529B\u3002",paraId:1,tocIndex:1},{value:"\u5DE5\u4F5C\u6D41\u5728\u914D\u7F6E\u548C\u8FD0\u884C\u65F6\u7684\u57FA\u7840\u6570\u636E\u5EFA\u6A21\u5982\u4E0B\u56FE\uFF1A",paraId:2,tocIndex:1},{value:"\u4E00\u4E2A\u5DE5\u4F5C\u6D41\uFF08workflow\uFF09\u6709\u82E5\u5E72\u4E2A\u6D41\u7A0B\u8282\u70B9\uFF08node\uFF09\uFF0C\u6BCF\u4E2A\u8282\u70B9\u5BF9\u5E94\u7279\u5B9A\u7684\u64CD\u4F5C\u6307\u4EE4\u3002",paraId:3,tocIndex:1},{value:"\u591A\u4E2A\u8282\u70B9\u4E4B\u95F4\u6709\u4E0A\u4E0B\u6E38\u548C\u5206\u652F\u5173\u7CFB\uFF0C\u7EC4\u6210\u6811\u72B6\u7ED3\u6784\uFF0C\u5206\u652F\u7684\u6D41\u5411\u6709\u5F00\u542F\u5206\u652F\u7684\u8282\u70B9\u6307\u4EE4\u5185\u5BB9\u51B3\u5B9A\u3002",paraId:3,tocIndex:1},{value:"\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u6709\u591A\u6B21\u89E6\u53D1\uFF0C\u6BCF\u6B21\u89E6\u53D1\u4F1A\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u6D41\u7A0B\u5B9E\u4F8B\uFF08execution\uFF09\uFF0C\u7528\u4E8E\u8DDF\u8E2A\u6267\u884C\u72B6\u6001\u3002",paraId:3,tocIndex:1},{value:"\u6BCF\u6B21\u89E6\u53D1\u6267\u884C\uFF0C\u6839\u636E\u6D41\u7A0B\u7ECF\u8FC7\u7684\u8282\u70B9\uFF0C\u4F1A\u6709\u82E5\u5E72\u4E2A\u4EFB\u52A1\uFF08job\uFF09\uFF0C\u4EE5\u8BB0\u5F55\u6BCF\u4E2A\u8282\u70B9\u7684\u6267\u884C\u72B6\u6001\u548C\u7ED3\u679C\u3002",paraId:3,tocIndex:1},{value:"\u53EF\u4EE5\u5C06\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u7406\u89E3\u4E3A\u6A21\u677F\uFF0C\u6BCF\u4E00\u6B21\u89E6\u53D1\u5C31\u6839\u636E\u8BE5\u6A21\u677F\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u6267\u884C\u5B9E\u4F8B\uFF0C\u7528\u4E8E\u8DDF\u8E2A\u6267\u884C\u72B6\u6001\u3002\u800C\u8282\u70B9\u4E5F\u76F8\u5F53\u4E8E\u4EFB\u52A1\u7684\u6A21\u677F\uFF0C\u6D41\u7A0B\u7ECF\u8FC7\u8282\u70B9\u5219\u4F1A\u521B\u5EFA\u4E00\u4E2A\u5BF9\u5E94\u7684\u4EFB\u52A1\uFF0C\u7528\u4E8E\u8BB0\u5F55\u8282\u70B9\u6267\u884C\u7684\u72B6\u6001\u548C\u6570\u636E\u7ED3\u679C\u3002",paraId:4,tocIndex:1},{value:"\u5728\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u88AB\u89E6\u53D1\u540E\uFF0C\u5F15\u64CE\uFF08\u6267\u884C\u5668\uFF09\u4F1A\u6839\u636E\u914D\u7F6E\u7684\u8282\u70B9\u987A\u5E8F\uFF0C\u4F9D\u6B21\u6267\u884C\u6BCF\u4E2A\u8282\u70B9\u4EE3\u8868\u7684\u6307\u4EE4\u548C\u64CD\u4F5C\u3002\u6BCF\u4E2A\u8282\u70B9\u6267\u884C\u540E\u90FD\u4F1A\u8FD4\u56DE\u4EE5\u4E0B\u5176\u4E2D\u4E00\u79CD\u72B6\u6001\uFF1A",paraId:5,tocIndex:2},{value:"\u5E38\u91CF",paraId:6,tocIndex:2},{value:"\u6570\u636E\u503C",paraId:6,tocIndex:2},{value:"\u542B\u4E49",paraId:6,tocIndex:2},{value:"JOB_STATUS.RESOLVED",paraId:6,tocIndex:2},{value:"1",paraId:6,tocIndex:2},{value:"\u6210\u529F\uFF1A\u8BE5\u8282\u70B9\u5DF2\u6267\u884C\u6210\u529F",paraId:6,tocIndex:2},{value:"JOB_STATUS.REJECTED",paraId:6,tocIndex:2},{value:"-1",paraId:6,tocIndex:2},{value:"\u5931\u8D25\uFF1A\u8BE5\u8282\u70B9\u5DF2\u6267\u884C\u5931\u8D25\uFF08\u62A5\u9519\u6216\u4E1A\u52A1\u62D2\u7EDD\uFF09",paraId:6,tocIndex:2},{value:"JOB_STATUS.PENDING",paraId:6,tocIndex:2},{value:"0",paraId:6,tocIndex:2},{value:"\u505C\u7B49\uFF1A\u5DF2\u6267\u884C\u5230\u8BE5\u8282\u70B9\uFF0C\u4F46\u6307\u4EE4\u8981\u6C42\u6302\u8D77\u7B49\u5F85",paraId:6,tocIndex:2},{value:"\u8282\u70B9\u7684\u6267\u884C\u72B6\u6001\u4F1A\u5F71\u54CD\u6574\u4E2A\u6D41\u7A0B\u7684\u6210\u529F\u6216\u5931\u8D25\uFF0C\u901A\u5E38\u5728\u6CA1\u6709\u5206\u652F\u7684\u60C5\u51B5\u4E0B\uFF0C\u67D0\u4E2A\u8282\u70B9\u7684\u5931\u8D25\u4F1A\u76F4\u63A5\u5BFC\u81F4\u6574\u4E2A\u6D41\u7A0B\u5931\u8D25\u3002\u5176\u4E2D\u6700\u5E38\u89C4\u7684\u60C5\u51B5\u662F\uFF0C\u8282\u70B9\u6267\u884C\u6210\u529F\u5219\u7EE7\u7EED\u8282\u70B9\u8868\u4E2D\u7684\u4E0B\u4E00\u4E2A\u8282\u70B9\uFF0C\u76F4\u5230\u6CA1\u6709\u540E\u7EED\u8282\u70B9\uFF0C\u5219\u6574\u4E2A\u5DE5\u4F5C\u6D41\u6267\u884C\u4EE5\u6210\u529F\u7684\u72B6\u6001\u5B8C\u6210\u3002",paraId:7,tocIndex:2},{value:"\u5982\u679C\u6267\u884C\u4E2D\u67D0\u4E2A\u8282\u70B9\u8FD4\u56DE\u4E86\u6267\u884C\u5931\u8D25\u7684\u72B6\u6001\uFF0C\u5219\u89C6\u4EE5\u4E0B\u4E24\u79CD\u60C5\u51B5\u5F15\u64CE\u4F1A\u6709\u4E0D\u540C\u7684\u5904\u7406\uFF1A",paraId:8,tocIndex:2},{value:"\u8FD4\u56DE\u5931\u8D25\u72B6\u6001\u7684\u8282\u70B9\u5904\u4E8E\u4E3B\u6D41\u7A0B\uFF0C\u5373\u5747\u672A\u5904\u4E8E\u4E0A\u6E38\u7684\u8282\u70B9\u5F00\u542F\u7684\u4EFB\u610F\u5206\u652F\u6D41\u7A0B\u4E4B\u5185\uFF0C\u5219\u6574\u4E2A\u4E3B\u6D41\u7A0B\u4F1A\u5224\u5B9A\u4E3A\u5931\u8D25\uFF0C\u5E76\u9000\u51FA\u6D41\u7A0B\u3002",paraId:9,tocIndex:2},{value:"\u8FD4\u56DE\u5931\u8D25\u72B6\u6001\u7684\u8282\u70B9\u5904\u4E8E\u67D0\u4E2A\u5206\u652F\u6D41\u7A0B\u4E4B\u5185\uFF0C\u6B64\u65F6\u5C06\u5224\u5B9A\u6D41\u7A0B\u4E0B\u4E00\u6B65\u72B6\u6001\u7684\u804C\u8D23\u4EA4\u7531\u5F00\u542F\u5206\u652F\u7684\u8282\u70B9\uFF0C\u7531\u8BE5\u8282\u70B9\u7684\u5185\u90E8\u903B\u8F91\u51B3\u5B9A\u540E\u7EED\u6D41\u7A0B\u7684\u72B6\u6001\uFF0C\u5E76\u4E14\u9012\u5F52\u4E0A\u6EAF\u5230\u4E3B\u6D41\u7A0B\u3002",paraId:10,tocIndex:2},{value:"\u6700\u7EC8\u90FD\u5728\u4E3B\u6D41\u7A0B\u7684\u8282\u70B9\u4E0A\u5F97\u51FA\u6574\u4E2A\u6D41\u7A0B\u7684\u4E0B\u4E00\u6B65\u72B6\u6001\uFF0C\u5982\u679C\u4E3B\u6D41\u7A0B\u7684\u8282\u70B9\u4E2D\u8FD4\u56DE\u7684\u662F\u5931\u8D25\uFF0C\u5219\u6574\u4E2A\u6D41\u7A0B\u4EE5\u5931\u8D25\u7684\u72B6\u6001\u7ED3\u675F\u3002",paraId:11,tocIndex:2},{value:"\u5982\u679C\u4EFB\u610F\u8282\u70B9\u6267\u884C\u540E\u8FD4\u56DE\u4E86\u201C\u505C\u7B49\u201D\u72B6\u6001\uFF0C\u5219\u6574\u4E2A\u6267\u884C\u6D41\u7A0B\u4F1A\u88AB\u6682\u65F6\u4E2D\u65AD\u6302\u8D77\uFF0C\u7B49\u5F85\u4E00\u4E2A\u7531\u5BF9\u5E94\u8282\u70B9\u5B9A\u4E49\u7684\u4E8B\u4EF6\u89E6\u53D1\u4EE5\u6062\u590D\u6D41\u7A0B\u7684\u6267\u884C\u3002\u4F8B\u5982\u5BA1\u6279\u7C7B\u578B\u7684\u8282\u70B9\u5904\u7406\uFF0C\u4F1A\u4EE5\u201C\u505C\u7B49\u201D\u72B6\u6001\u4ECE\u8BE5\u8282\u70B9\u6682\u505C\uFF0C\u7B49\u5F85\u4EBA\u5DE5\u4ECB\u5165\u8BE5\u6D41\u7A0B\uFF0C\u51B3\u7B56\u662F\u5426\u901A\u8FC7\u3002\u5982\u679C\u4EBA\u5DE5\u8F93\u5165\u7684\u72B6\u6001\u662F\u901A\u8FC7\uFF0C\u5219\u7EE7\u7EED\u540E\u7EED\u7684\u6D41\u7A0B\u8282\u70B9\uFF0C\u53CD\u4E4B\u5219\u6309\u524D\u9762\u7684\u5931\u8D25\u903B\u8F91\u5904\u7406\u3002",paraId:12,tocIndex:2},{value:"\u5BF9\u5E94\u7684\uFF0C\u6574\u4E2A\u5DE5\u4F5C\u6D41\u5728\u89E6\u53D1\u540E\u6267\u884C\u5B9E\u4F8B\u7684\u72B6\u6001\u6709\u4EE5\u4E0B\u51E0\u79CD\uFF1A",paraId:13,tocIndex:2},{value:"\u5E38\u91CF\u540D",paraId:14,tocIndex:2},{value:"\u503C",paraId:14,tocIndex:2},{value:"\u542B\u4E49",paraId:14,tocIndex:2},{value:"EXECUTION_STATUS.STARTED",paraId:14,tocIndex:2},{value:"0",paraId:14,tocIndex:2},{value:"\u6267\u884C\u4E2D",paraId:14,tocIndex:2},{value:"EXECUTION_STATUS.RESOLVED",paraId:14,tocIndex:2},{value:"1",paraId:14,tocIndex:2},{value:"\u5DF2\u6267\u884C\u6210\u529F",paraId:14,tocIndex:2},{value:"EXECUTION_STATUS.REJECTED",paraId:14,tocIndex:2},{value:"-1",paraId:14,tocIndex:2},{value:"\u5DF2\u6267\u884C\u5931\u8D25",paraId:14,tocIndex:2},{value:"\u5728\u89E6\u53D1\u540E\u672A\u6267\u884C\u5B8C\u6BD5\u6216\u67D0\u4E2A\u8282\u70B9\u8FD4\u56DE\u201C\u505C\u7B49\u201D\u72B6\u6001\u7684\u60C5\u51B5\u4E0B\uFF0C\u6267\u884C\u5B9E\u4F8B\u7684\u72B6\u6001\u90FD\u662F\u201C\u6267\u884C\u4E2D\u201D\u3002\u76F4\u5230\u4E3B\u6D41\u7A0B\u4E2D\u4EA7\u751F\u7EC8\u6001\uFF08\u6210\u529F\u6216\u5931\u8D25\uFF09\u7684\u8282\u70B9\uFF0C\u6574\u4E2A\u6267\u884C\u5B9E\u4F8B\u7684\u72B6\u6001\u624D\u4F1A\u88AB\u66F4\u65B0\u4E3A\u5BF9\u5E94\u7684\u7EC8\u6001\uFF0C\u4EE3\u8868\u6267\u884C\u7ED3\u675F\u3002",paraId:15,tocIndex:2}],E6={},D6={title:"\u5FAA\u73AF",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/loop.md",lastUpdated:173254844e4,description:"\u5FAA\u73AF\u76F8\u5F53\u7F16\u7A0B\u8BED\u8A00\u4E2D\u7684 for/while/forEach \u7B49\u8BED\u6CD5\u7ED3\u6784\uFF0C\u5F53\u9700\u8981\u4E00\u5B9A\u6B21\u6570\u6216\u9488\u5BF9\u67D0\u4E2A\u6570\u636E\u96C6\u5408\uFF08\u6570\u7EC4\uFF09\u91CD\u590D\u6267\u884C\u4E00\u4E9B\u64CD\u4F5C\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5FAA\u73AF\u8282\u70B9\u3002"},O6=[{id:"\u5FAA\u73AF",depth:1,title:"\u5FAA\u73AF"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u5FAA\u73AF\u5BF9\u8C61",depth:3,title:"\u5FAA\u73AF\u5BF9\u8C61"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],R6=[{value:"\u5FAA\u73AF\u76F8\u5F53\u7F16\u7A0B\u8BED\u8A00\u4E2D\u7684 ",paraId:0,tocIndex:0},{value:"for",paraId:0,tocIndex:0},{value:"/",paraId:0,tocIndex:0},{value:"while",paraId:0,tocIndex:0},{value:"/",paraId:0,tocIndex:0},{value:"forEach",paraId:0,tocIndex:0},{value:" \u7B49\u8BED\u6CD5\u7ED3\u6784\uFF0C\u5F53\u9700\u8981\u4E00\u5B9A\u6B21\u6570\u6216\u9488\u5BF9\u67D0\u4E2A\u6570\u636E\u96C6\u5408\uFF08\u6570\u7EC4\uFF09\u91CD\u590D\u6267\u884C\u4E00\u4E9B\u64CD\u4F5C\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5FAA\u73AF\u8282\u70B9\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5FAA\u73AF\u201D\u8282\u70B9\uFF1A",paraId:1,tocIndex:1},{value:"\u521B\u5EFA\u5FAA\u73AF\u8282\u70B9\u540E\uFF0C\u4F1A\u751F\u6210\u4E00\u4E2A\u5FAA\u73AF\u5185\u90E8\u7684\u5206\u652F\uFF0C\u53EF\u4EE5\u5728\u5206\u652F\u4E2D\u589E\u52A0\u4EFB\u610F\u591A\u4E2A\u8282\u70B9\uFF0C\u8FD9\u4E9B\u8282\u70B9\u9664\u4E86\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u8FD8\u53EF\u4EE5\u4F7F\u7528\u5FAA\u73AF\u4E0A\u4E0B\u6587\u7684\u5C40\u90E8\u53D8\u91CF\uFF0C\u4F8B\u5982\u5FAA\u73AF\u96C6\u5408\u4E2D\u6BCF\u6B21\u5FAA\u73AF\u5230\u7684\u6570\u636E\u5BF9\u8C61\uFF0C\u6216\u8005\u662F\u5FAA\u73AF\u6B21\u6570\u7684\u7D22\u5F15\uFF08\u7D22\u5F15\u4ECE ",paraId:2,tocIndex:1},{value:"0",paraId:2,tocIndex:1},{value:" \u5F00\u59CB\u8BA1\u6570\uFF09\u3002\u5C40\u90E8\u53D8\u91CF\u7684\u4F5C\u7528\u57DF\u4EC5\u9650\u4E8E\u5FAA\u73AF\u5185\u90E8\uFF0C\u5982\u679C\u6709\u591A\u5C42\u5FAA\u73AF\u5D4C\u5957\uFF0C\u53EF\u4EE5\u6309\u5C42\u4F7F\u7528\u5177\u4F53\u5FAA\u73AF\u7684\u5C40\u90E8\u53D8\u91CF\u3002",paraId:2,tocIndex:1},{value:"\u5FAA\u73AF\u4F1A\u4EE5\u5FAA\u73AF\u5BF9\u8C61\u4E0D\u540C\u6570\u636E\u7C7B\u578B\u505A\u4E0D\u540C\u7684\u5904\u7406\uFF1A",paraId:3,tocIndex:3},{value:"\u6570\u7EC4",paraId:4,tocIndex:3},{value:"\uFF1A\u6700\u5E38\u89C1\u7684\u60C5\u51B5\uFF0C\u901A\u5E38\u662F\u53EF\u4EE5\u9009\u62E9\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u6BD4\u5982\u67E5\u8BE2\u8282\u70B9\u7684\u591A\u6761\u6570\u636E\u7ED3\u679C\uFF0C\u6216\u8005\u9884\u52A0\u8F7D\u7684\u5BF9\u591A\u5173\u7CFB\u6570\u636E\u3002\u5982\u679C\u9009\u62E9\u7684\u662F\u6570\u7EC4\uFF0C\u5FAA\u73AF\u8282\u70B9\u4F1A\u904D\u5386\u6570\u7EC4\u4E2D\u7684\u6BCF\u4E2A\u5143\u7D20\uFF0C\u6BCF\u6B21\u5FAA\u73AF\u90FD\u4F1A\u5C06\u5F53\u524D\u5143\u7D20\u8D4B\u503C\u7ED9\u5FAA\u73AF\u4E0A\u4E0B\u6587\u7684\u5C40\u90E8\u53D8\u91CF\u3002",paraId:4,tocIndex:3},{value:"\u6570\u5B57",paraId:5,tocIndex:3},{value:"\uFF1A\u5F53\u9009\u62E9\u7684\u53D8\u91CF\u662F\u4E00\u4E2A\u6570\u5B57\u662F\uFF0C\u4F1A\u4EE5\u8BE5\u6570\u5B57\u4E3A\u5FAA\u73AF\u6B21\u6570\uFF0C\u5C40\u57DF\u53D8\u91CF\u4E2D\u7684\u5FAA\u73AF\u6B21\u6570\u7684\u7D22\u5F15\u4E5F\u5373\u5FAA\u73AF\u5BF9\u8C61\u7684\u503C\u3002",paraId:5,tocIndex:3},{value:"\u5B57\u7B26\u4E32",paraId:6,tocIndex:3},{value:"\uFF1A\u5F53\u9009\u62E9\u7684\u53D8\u91CF\u662F\u4E00\u4E2A\u5B57\u7B26\u4E32\u65F6\uFF0C\u4F1A\u4EE5\u8BE5\u5B57\u7B26\u4E32\u7684\u957F\u5EA6\u4E3A\u5FAA\u73AF\u6B21\u6570\uFF0C\u6BCF\u6B21\u6309\u7D22\u5F15\u5904\u7406\u5B57\u7B26\u4E32\u4E2D\u7684\u6BCF\u4E00\u4E2A\u5B57\u7B26\u3002",paraId:6,tocIndex:3},{value:"\u5176\u4ED6",paraId:7,tocIndex:3},{value:"\uFF1A\u5176\u4ED6\u7C7B\u578B\u7684\u503C\uFF08\u5305\u62EC\u5BF9\u8C61\u7C7B\u578B\uFF09\u90FD\u4EC5\u4F5C\u4E3A\u5355\u6B21\u5904\u7406\u7684\u5FAA\u73AF\u5BF9\u8C61\uFF0C\u4E5F\u53EA\u4F1A\u5FAA\u73AF\u4E00\u6B21\uFF0C\u901A\u5E38\u8FD9\u79CD\u60C5\u51B5\u4E0D\u9700\u8981\u4F7F\u7528\u5FAA\u73AF\u3002",paraId:7,tocIndex:3},{value:"\u9664\u4E86\u9009\u62E9\u53D8\u91CF\uFF0C\u9488\u5BF9\u6570\u5B57\u548C\u5B57\u7B26\u4E32\u7C7B\u578B\u4E5F\u53EF\u4EE5\u76F4\u63A5\u8F93\u5165\u5E38\u91CF\uFF0C\u4F8B\u5982\u8F93\u5165 ",paraId:8,tocIndex:3},{value:"5",paraId:8,tocIndex:3},{value:"\uFF08\u6570\u5B57\u7C7B\u578B\uFF09\uFF0C\u5FAA\u73AF\u8282\u70B9\u4F1A\u5FAA\u73AF 5 \u6B21\uFF0C\u8F93\u5165 ",paraId:8,tocIndex:3},{value:"abc",paraId:8,tocIndex:3},{value:"\uFF08\u5B57\u7B26\u4E32\u7C7B\u578B\uFF09\uFF0C\u5FAA\u73AF\u8282\u70B9\u4F1A\u5FAA\u73AF 3 \u6B21\uFF0C\u5206\u522B\u5904\u7406 ",paraId:8,tocIndex:3},{value:"a",paraId:8,tocIndex:3},{value:"\u3001",paraId:8,tocIndex:3},{value:"b",paraId:8,tocIndex:3},{value:"\u3001",paraId:8,tocIndex:3},{value:"c",paraId:8,tocIndex:3},{value:" \u4E09\u4E2A\u5B57\u7B26\u3002\u5728\u9009\u62E9\u53D8\u91CF\u7684\u5DE5\u5177\u4E2D\u9009\u62E9\u5E0C\u671B\u4F7F\u7528\u5E38\u91CF\u7684\u7C7B\u578B\u3002",paraId:8,tocIndex:3},{value:"\u4F8B\u5982\u5728\u8BA2\u5355\u4E0B\u5355\u65F6\uFF0C\u9700\u8981\u5BF9\u8BA2\u5355\u4E2D\u7684\u6BCF\u4E2A\u5546\u54C1\u8FDB\u884C\u5E93\u5B58\u68C0\u67E5\uFF0C\u5982\u679C\u5E93\u5B58\u5145\u8DB3\u5219\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u660E\u7EC6\u5185\u7684\u5546\u54C1\u66F4\u65B0\u4E3A\u65E0\u6548\u3002",paraId:9,tocIndex:4},{value:"\u521B\u5EFA\u4E09\u5F20\u8868\uFF0C\u5546\u54C1\u8868 <-(1:m)-- \u8BA2\u5355\u660E\u7EC6\u8868 --(m:1)-> \u8BA2\u5355\u8868\uFF0C\u6570\u636E\u6A21\u578B\u5982\u4E0B\uFF1A",paraId:10,tocIndex:4},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:11,tocIndex:4},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:11,tocIndex:4},{value:"\u8BA2\u5355\u5546\u54C1\u660E\u7EC6",paraId:11,tocIndex:4},{value:"\u591A\u5BF9\u4E00\uFF08\u660E\u7EC6\uFF09",paraId:11,tocIndex:4},{value:"\u8BA2\u5355\u603B\u4EF7",paraId:11,tocIndex:4},{value:"\u6570\u5B57",paraId:11,tocIndex:4},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:12,tocIndex:4},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:12,tocIndex:4},{value:"\u5546\u54C1",paraId:12,tocIndex:4},{value:"\u4E00\u5BF9\u591A\uFF08\u5546\u54C1\uFF09",paraId:12,tocIndex:4},{value:"\u6570\u91CF",paraId:12,tocIndex:4},{value:"\u6570\u5B57",paraId:12,tocIndex:4},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:13,tocIndex:4},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:13,tocIndex:4},{value:"\u5546\u54C1\u540D\u79F0",paraId:13,tocIndex:4},{value:"\u5355\u884C\u6587\u672C",paraId:13,tocIndex:4},{value:"\u4EF7\u683C",paraId:13,tocIndex:4},{value:"\u6570\u5B57",paraId:13,tocIndex:4},{value:"\u5E93\u5B58",paraId:13,tocIndex:4},{value:"\u6574\u6570",paraId:13,tocIndex:4},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\uFF0C\u89E6\u53D1\u5668\u9009\u62E9\u201C\u6570\u636E\u8868\u4E8B\u4EF6\u201D\uFF0C\u9009\u62E9\u201C\u8BA2\u5355\u201D\u8868\u201C\u65B0\u589E\u6570\u636E\u65F6\u201D\u89E6\u53D1\uFF0C\u5E76\u4E14\u9700\u8981\u914D\u7F6E\u4E0A\u9884\u52A0\u8F7D\u201C\u8BA2\u5355\u660E\u7EC6\u201D\u8868\u548C\u660E\u7EC6\u4E0B\u7684\u5546\u54C1\u8868\u7684\u5173\u7CFB\u6570\u636E\uFF1A",paraId:14,tocIndex:4},{value:"\u521B\u5EFA\u5FAA\u73AF\u8282\u70B9\uFF0C\u9009\u62E9\u5FAA\u73AF\u5BF9\u8C61\u4E3A\u201C\u89E6\u53D1\u6570\u636E / \u8BA2\u5355\u660E\u7EC6\u201D\uFF0C\u5373\u5BF9\u8BA2\u5355\u660E\u7EC6\u8868\u4E2D\u7684\u6BCF\u4E00\u6761\u6570\u636E\uFF1A",paraId:15,tocIndex:4},{value:"\u5FAA\u73AF\u8282\u70B9\u5185\u90E8\u521B\u5EFA\u4E00\u4E2A\u201C\u6761\u4EF6\u5224\u65AD\u201D\u8282\u70B9\uFF0C\u5224\u65AD\u5546\u54C1\u7684\u5E93\u5B58\u662F\u5426\u5145\u8DB3\uFF1A",paraId:16,tocIndex:4},{value:"\u5982\u679C\u5145\u8DB3\u5219\u5728\u201C\u662F\u201D\u7684\u5206\u652F\u4E2D\u521B\u5EFA\u4E00\u4E2A\u201C\u8BA1\u7B97\u8282\u70B9\u201D\u548C\u4E00\u4E2A\u201C\u66F4\u65B0\u6570\u636E\u201D\u8282\u70B9\uFF0C\u5C06\u8BA1\u7B97\u5B8C\u6263\u51CF\u7684\u5E93\u5B58\u66F4\u65B0\u81F3\u5BF9\u5E94\u5546\u54C1\u7684\u8BB0\u5F55\uFF1A",paraId:17,tocIndex:4},{value:"\u5426\u5219\u5728\u201C\u5426\u201D\u7684\u5206\u652F\u4E2D\u521B\u5EFA\u4E00\u4E2A\u201C\u66F4\u65B0\u6570\u636E\u201D\u8282\u70B9\uFF0C\u66F4\u65B0\u8BA2\u5355\u660E\u7EC6\u7684\u72B6\u6001\u4E3A\u201C\u65E0\u6548\u201D\uFF1A",paraId:18,tocIndex:4},{value:"\u603B\u7684\u6D41\u7A0B\u7ED3\u6784\u5982\u4E0B\u56FE\uFF1A",paraId:19,tocIndex:4},{value:"\u914D\u7F6E\u5B8C\u6210\u5E76\u6FC0\u6D3B\u8BE5\u6D41\u7A0B\u540E\uFF0C\u5F53\u521B\u5EFA\u65B0\u8BA2\u5355\u65F6\uFF0C\u4F1A\u81EA\u52A8\u68C0\u67E5\u8BA2\u5355\u660E\u7EC6\u4E2D\u7684\u5546\u54C1\u5E93\u5B58\uFF0C\u5982\u679C\u5E93\u5B58\u5145\u8DB3\u5219\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u660E\u7EC6\u5185\u7684\u5546\u54C1\u66F4\u65B0\u4E3A\u65E0\u6548\uFF08\u4EE5\u4FBF\u8BA1\u7B97\u6709\u6548\u7684\u8BA2\u5355\u603B\u4EF7\uFF09\u3002",paraId:20,tocIndex:4}],M6={},L6={title:"v1.0.0-alpha.15: 2024.05.19",toc:"menu",filename:"docs/en-US/welcome/release/20240519-changelog.md",lastUpdated:173254844e4,description:"Refer to Fixed Table Columns"},N6=[{id:"v100-alpha15-20240519",depth:1,title:"v1.0.0-alpha.15: 2024.05.19"},{id:"new-features",depth:2,title:"New Features"},{id:"fixed-table-columns",depth:3,title:"Fixed Table Columns"},{id:"support-for-adding-gantt-kanban-blocks-in-modalsdrawers",depth:3,title:"Support for Adding Gantt, Kanban Blocks in Modals/Drawers"},{id:"support-for-adding-linkage-rules-in-detail-blocks",depth:3,title:"Support for Adding Linkage Rules in Detail Blocks"},{id:"auth-ldap",depth:3,title:"Auth: LDAP"},{id:"workflow-http-request-node",depth:3,title:"Workflow HTTP Request Node"},{id:"support-for-applicationwww-x-form-urlencoded-data-format",depth:4,title:"Support for application/www-x-form-urlencoded Data Format"},{id:"string-template-support-for-value-input-fields",depth:4,title:"String Template Support for Value Input Fields"},{id:"workflow-custom-action-event",depth:3,title:"Workflow Custom Action Event"},{id:"improvements",depth:2,title:"Improvements"},{id:"configure-actions-adjustments",depth:3,title:"Configure Actions Adjustments"},{id:"ui-adjustments",depth:4,title:"UI Adjustments"},{id:"impact-on-developers",depth:4,title:"Impact on Developers"},{id:"logs",depth:3,title:"Logs"},{id:"log-plugin-file-list",depth:4,title:"Log Plugin File List"},{id:"workflow-and-custom-request-folder-paths",depth:4,title:"Workflow and Custom Request Folder Paths"},{id:"workflow",depth:3,title:"Workflow"},{id:"http-request-node-result-data",depth:4,title:"HTTP Request Node Result Data"},{id:"bug-fixes",depth:2,title:"Bug Fixes"},{id:"documentation",depth:2,title:"Documentation"}],z6=[{value:"Refer to ",paraId:0,tocIndex:2},{value:"Fixed Table Columns",paraId:0,tocIndex:2},{value:"Refer to ",paraId:1,tocIndex:3},{value:"Adding Blocks in Modals",paraId:1,tocIndex:3},{value:"The linkage rules in detail blocks now support dynamically setting fields to show/hide. Refer to ",paraId:2,tocIndex:4},{value:"Linkage Rules in Detail Blocks",paraId:2,tocIndex:4},{value:'Added the "Auth: LDAP" plugin (commercial plugin), which allows users to sign in to NocoBase using LDAP server account credentials. Refer to the ',paraId:3,tocIndex:5},{value:"User Manual",paraId:3,tocIndex:5},{value:"application/www-x-form-urlencoded",paraId:4},{value:"Previously, request node only supported JSON format (",paraId:5,tocIndex:7},{value:"application/json",paraId:5,tocIndex:7},{value:") for the body part of the Content-Type. After the upgrade, it also support configuring form format data in key-value pairs.",paraId:5,tocIndex:7},{value:'Previously, the value input fields in the "Headers" and "Parameters" sections of request node only supported pure input or variable selection. After the upgrade, you can directly enter a string with embedded variables. It will be automatically parsed as the final string value before sending the request.',paraId:6,tocIndex:8},{value:'The "Submit to Workflow" action button, originally bound to directly trigger type of the "Post-action Events", has been split and independently created as the "Trigger Workflow" action button for "Custom Action Events" (a commercial plugin). The previously added action buttons in the open-source version can still be used, but no longer supported for new additions. Please use the new "Custom Action Event" instead. See the ',paraId:7,tocIndex:9},{value:"Usage Manual",paraId:7,tocIndex:9},{value:" for more information.",paraId:7,tocIndex:9},{value:"Flattened menu hierarchy and removed some toggle operations, supporting repeated additions.",paraId:8,tocIndex:12},{value:"Before:",paraId:9,tocIndex:12},{value:"After:",paraId:10,tocIndex:12},{value:"Merged similar actions",paraId:11,tocIndex:12},{value:'2.1. Merged "Add New" and "Add Record" options',paraId:12,tocIndex:12},{value:"Before:",paraId:13,tocIndex:12},{value:"After:",paraId:14,tocIndex:12},{value:'2.2 Merged "Submit" and "Save Record" options',paraId:15,tocIndex:12},{value:"Before:",paraId:16,tocIndex:12},{value:"After:",paraId:17,tocIndex:12},{value:"See PR\uFF1A",paraId:18,tocIndex:13},{value:"refactor: flatten and merge Actions #4336",paraId:18,tocIndex:13},{value:"Before: In a multi-application environment, the log plugin displays all application log file lists.",paraId:19,tocIndex:15},{value:"After: In a multi-application environment, the log plugin only displays the current application log file list.",paraId:20,tocIndex:15},{value:"Before: The folder path for workflow and custom request log files is at the same level as the application log folder.",paraId:21,tocIndex:16},{value:"After: The folder path for workflow and custom request log files belongs to the corresponding application log folder.",paraId:22,tocIndex:16},{value:"Previously, the result data structure after successful or failed HTTP request node was inconsistent.",paraId:23,tocIndex:18},{value:`// Only the response data part is returned when successful { // Any JSON content } @@ -10839,7 +10891,7 @@ export const imageSettings = new SchemaSettings({ statusText: 'xxx', data: {} } -`,paraId:26,tocIndex:18},{value:"Other exceptions such as no response from the server (",paraId:27,tocIndex:18},{value:"status",paraId:27,tocIndex:18},{value:" is ",paraId:27,tocIndex:18},{value:"null",paraId:27,tocIndex:18},{value:"), or failed initialization, can be observed in the server logs for error handling. See more details in ",paraId:27,tocIndex:18},{value:"[Workflow: HTTP request Node] Node result type not fixed #4373",paraId:27,tocIndex:18},{value:"Date fields in charts were not converted according to the client's time zone when aggregating data with a date field dimension. ",paraId:28,tocIndex:19},{value:"fix(data-vi): should use local timezone when formatting date #4366",paraId:28,tocIndex:19},{value:"Poor view refreshing; database views must be exited and re-entered to refresh. ",paraId:29,tocIndex:19},{value:"fix: collection fields should refreshed after editing sync from database #4224",paraId:29,tocIndex:19},{value:"Tree table blocks did not collapse all nodes when adding a child node. ",paraId:30,tocIndex:19},{value:"fix: do not collapse all nodes when adding a child node in the tree table block #4289",paraId:30,tocIndex:19},{value:"Collection title field setting was invalid. ",paraId:31,tocIndex:19},{value:"fix: collection title field setting is invalid #4358",paraId:31,tocIndex:19},{value:"bigint field lost precision in read pretty mode. ",paraId:32,tocIndex:19},{value:"fix: bigint field loses precision in read pretty mode #4360",paraId:32,tocIndex:19},{value:"Log files remained open after stopping sub-applications. ",paraId:33,tocIndex:19},{value:"fix(logger): should close log stream after destroying app #4380",paraId:33,tocIndex:19},{value:"Workflow aggregate node association field selection bug. ",paraId:34,tocIndex:19},{value:"fix(plugin-workflow-aggregate): fix association field select #4315",paraId:34,tocIndex:19},{value:"Ignore error option was invalid in HTTP request node sync mode. ",paraId:35,tocIndex:19},{value:"fix(plugin-workflow-request): fix ignoreFail in sync mode #4334",paraId:35,tocIndex:19},{value:'Value input fields in workflow HTTP request node overflowed. fix(plugin-workflow-request): fix value fields overflowing #4354',paraId:36,tocIndex:19},{value:'Special characters caused workflow HTTP request node to hang. fix(plugin-workflow-request): fix request hanging when invalid header value #4376',paraId:37,tocIndex:19},{value:"Setting marginBlock in the theme editor affected the spacing between form fields. ",paraId:38,tocIndex:19},{value:"fix(theme-editor): form field spacing should not be affected by token.marginBlock #4374",paraId:38,tocIndex:19},{value:'Fixed an issue where clicking on the "License" option in the top right corner of the page would result in incorrect redirection. ',paraId:39,tocIndex:19},{value:"PR #4415",paraId:39,tocIndex:19},{value:"Fixed the issue where the operator of the field becomes invalid after saving the filter form as a block template. ",paraId:40,tocIndex:19},{value:"PR #4390",paraId:40,tocIndex:19},{value:"Added plugin sample documentation: ",paraId:41,tocIndex:20},{value:"https://docs-cn.nocobase.com/plugin-samples",paraId:41,tocIndex:20},{value:"Updated documentation structure for workflow usage manual: ",paraId:42,tocIndex:20},{value:"https://docs-cn.nocobase.com/handbook/workflow",paraId:42,tocIndex:20}],F6={},B6={title:"Gantt block",toc:"menu",filename:"docs/en-US/welcome/release/gantt/introduction.md",lastUpdated:1732240239e3},j6=[{id:"gantt-block",depth:1,title:"Gantt block"},{id:"create-gantt-block",depth:2,title:"Create gantt block"},{id:"gantt-block-no-data",depth:2,title:"Gantt block (No data)"},{id:"block-settings",depth:2,title:"Block settings"},{id:"general-tasks",depth:2,title:"General tasks"},{id:"tree-tasks",depth:2,title:"Tree tasks"}],H6=[],W6={},$6={title:"Comparison",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/comparison.md",lastUpdated:1732240239e3,description:"Helper that renders the block if both of the given values are truthy. If an inverse block is specified it will be rendered when falsy. Works as a block helper, inline helper or subexpression."},G6=[{id:"comparison",depth:1,title:"Comparison"},{id:"and",depth:2,title:"{{and}}"},{id:"compare",depth:2,title:"{{compare}}"},{id:"contains",depth:2,title:"{{contains}}"},{id:"default",depth:2,title:"{{default}}"},{id:"eq",depth:2,title:"{{eq}}"},{id:"gt",depth:2,title:"{{gt}}"},{id:"gte",depth:2,title:"{{gte}}"},{id:"has",depth:2,title:"{{has}}"},{id:"isempty",depth:2,title:"{{isEmpty}}"},{id:"isfalsey",depth:2,title:"{{isFalsey}}"},{id:"istruthy",depth:2,title:"{{isTruthy}}"},{id:"ifeven",depth:2,title:"{{ifEven}}"},{id:"ifnth",depth:2,title:"{{ifNth}}"},{id:"ifodd",depth:2,title:"{{ifOdd}}"},{id:"is",depth:2,title:"{{is}}"},{id:"isnt",depth:2,title:"{{isnt}}"},{id:"lt",depth:2,title:"{{lt}}"},{id:"lte",depth:2,title:"{{lte}}"},{id:"neither",depth:2,title:"{{neither}}"},{id:"not",depth:2,title:"{{not}}"},{id:"or",depth:2,title:"{{or}}"},{id:"unlesseq",depth:2,title:"{{unlessEq}}"},{id:"unlessgt",depth:2,title:"{{unlessGt}}"},{id:"unlesslt",depth:2,title:"{{unlessLt}}"},{id:"unlessgteq",depth:2,title:"{{unlessGteq}}"},{id:"unlesslteq",depth:2,title:"{{unlessLteq}}"}],V6=[{value:"Helper that renders the block if ",paraId:0,tocIndex:1},{value:"both",paraId:0,tocIndex:1},{value:" of the given values are truthy. If an inverse block is specified it will be rendered when falsy. Works as a block helper, inline helper or subexpression.",paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"a",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{any}",paraId:2,tocIndex:1},{value:"b",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{any}",paraId:2,tocIndex:1},{value:"options",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{Object}",paraId:2,tocIndex:1},{value:": Handlebars provided options object",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"Example",paraId:3,tocIndex:1},{value:` +`,paraId:26,tocIndex:18},{value:"Other exceptions such as no response from the server (",paraId:27,tocIndex:18},{value:"status",paraId:27,tocIndex:18},{value:" is ",paraId:27,tocIndex:18},{value:"null",paraId:27,tocIndex:18},{value:"), or failed initialization, can be observed in the server logs for error handling. See more details in ",paraId:27,tocIndex:18},{value:"[Workflow: HTTP request Node] Node result type not fixed #4373",paraId:27,tocIndex:18},{value:"Date fields in charts were not converted according to the client's time zone when aggregating data with a date field dimension. ",paraId:28,tocIndex:19},{value:"fix(data-vi): should use local timezone when formatting date #4366",paraId:28,tocIndex:19},{value:"Poor view refreshing; database views must be exited and re-entered to refresh. ",paraId:29,tocIndex:19},{value:"fix: collection fields should refreshed after editing sync from database #4224",paraId:29,tocIndex:19},{value:"Tree table blocks did not collapse all nodes when adding a child node. ",paraId:30,tocIndex:19},{value:"fix: do not collapse all nodes when adding a child node in the tree table block #4289",paraId:30,tocIndex:19},{value:"Collection title field setting was invalid. ",paraId:31,tocIndex:19},{value:"fix: collection title field setting is invalid #4358",paraId:31,tocIndex:19},{value:"bigint field lost precision in read pretty mode. ",paraId:32,tocIndex:19},{value:"fix: bigint field loses precision in read pretty mode #4360",paraId:32,tocIndex:19},{value:"Log files remained open after stopping sub-applications. ",paraId:33,tocIndex:19},{value:"fix(logger): should close log stream after destroying app #4380",paraId:33,tocIndex:19},{value:"Workflow aggregate node association field selection bug. ",paraId:34,tocIndex:19},{value:"fix(plugin-workflow-aggregate): fix association field select #4315",paraId:34,tocIndex:19},{value:"Ignore error option was invalid in HTTP request node sync mode. ",paraId:35,tocIndex:19},{value:"fix(plugin-workflow-request): fix ignoreFail in sync mode #4334",paraId:35,tocIndex:19},{value:'Value input fields in workflow HTTP request node overflowed. fix(plugin-workflow-request): fix value fields overflowing #4354',paraId:36,tocIndex:19},{value:'Special characters caused workflow HTTP request node to hang. fix(plugin-workflow-request): fix request hanging when invalid header value #4376',paraId:37,tocIndex:19},{value:"Setting marginBlock in the theme editor affected the spacing between form fields. ",paraId:38,tocIndex:19},{value:"fix(theme-editor): form field spacing should not be affected by token.marginBlock #4374",paraId:38,tocIndex:19},{value:'Fixed an issue where clicking on the "License" option in the top right corner of the page would result in incorrect redirection. ',paraId:39,tocIndex:19},{value:"PR #4415",paraId:39,tocIndex:19},{value:"Fixed the issue where the operator of the field becomes invalid after saving the filter form as a block template. ",paraId:40,tocIndex:19},{value:"PR #4390",paraId:40,tocIndex:19},{value:"Added plugin sample documentation: ",paraId:41,tocIndex:20},{value:"https://docs-cn.nocobase.com/plugin-samples",paraId:41,tocIndex:20},{value:"Updated documentation structure for workflow usage manual: ",paraId:42,tocIndex:20},{value:"https://docs-cn.nocobase.com/handbook/workflow",paraId:42,tocIndex:20}],F6={},B6={title:"Gantt block",toc:"menu",filename:"docs/en-US/welcome/release/gantt/introduction.md",lastUpdated:173254844e4},j6=[{id:"gantt-block",depth:1,title:"Gantt block"},{id:"create-gantt-block",depth:2,title:"Create gantt block"},{id:"gantt-block-no-data",depth:2,title:"Gantt block (No data)"},{id:"block-settings",depth:2,title:"Block settings"},{id:"general-tasks",depth:2,title:"General tasks"},{id:"tree-tasks",depth:2,title:"Tree tasks"}],H6=[],W6={},$6={title:"Comparison",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/comparison.md",lastUpdated:173254844e4,description:"Helper that renders the block if both of the given values are truthy. If an inverse block is specified it will be rendered when falsy. Works as a block helper, inline helper or subexpression."},G6=[{id:"comparison",depth:1,title:"Comparison"},{id:"and",depth:2,title:"{{and}}"},{id:"compare",depth:2,title:"{{compare}}"},{id:"contains",depth:2,title:"{{contains}}"},{id:"default",depth:2,title:"{{default}}"},{id:"eq",depth:2,title:"{{eq}}"},{id:"gt",depth:2,title:"{{gt}}"},{id:"gte",depth:2,title:"{{gte}}"},{id:"has",depth:2,title:"{{has}}"},{id:"isempty",depth:2,title:"{{isEmpty}}"},{id:"isfalsey",depth:2,title:"{{isFalsey}}"},{id:"istruthy",depth:2,title:"{{isTruthy}}"},{id:"ifeven",depth:2,title:"{{ifEven}}"},{id:"ifnth",depth:2,title:"{{ifNth}}"},{id:"ifodd",depth:2,title:"{{ifOdd}}"},{id:"is",depth:2,title:"{{is}}"},{id:"isnt",depth:2,title:"{{isnt}}"},{id:"lt",depth:2,title:"{{lt}}"},{id:"lte",depth:2,title:"{{lte}}"},{id:"neither",depth:2,title:"{{neither}}"},{id:"not",depth:2,title:"{{not}}"},{id:"or",depth:2,title:"{{or}}"},{id:"unlesseq",depth:2,title:"{{unlessEq}}"},{id:"unlessgt",depth:2,title:"{{unlessGt}}"},{id:"unlesslt",depth:2,title:"{{unlessLt}}"},{id:"unlessgteq",depth:2,title:"{{unlessGteq}}"},{id:"unlesslteq",depth:2,title:"{{unlessLteq}}"}],V6=[{value:"Helper that renders the block if ",paraId:0,tocIndex:1},{value:"both",paraId:0,tocIndex:1},{value:" of the given values are truthy. If an inverse block is specified it will be rendered when falsy. Works as a block helper, inline helper or subexpression.",paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"a",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{any}",paraId:2,tocIndex:1},{value:"b",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{any}",paraId:2,tocIndex:1},{value:"options",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{Object}",paraId:2,tocIndex:1},{value:": Handlebars provided options object",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"Example",paraId:3,tocIndex:1},{value:` {{#and great magnificent}}A{{else}}B{{/and}} `,paraId:4,tocIndex:1},{value:`Render a block when a comparison of the first and third @@ -10901,9 +10953,9 @@ is equal to `,paraId:81,tocIndex:22},{value:"b",paraId:81,tocIndex:22},{value:". is greater than `,paraId:84,tocIndex:23},{value:"b",paraId:84,tocIndex:23},{value:".",paraId:84,tocIndex:23},{value:"Params",paraId:85,tocIndex:23},{value:"a",paraId:86,tocIndex:23},{value:" ",paraId:86,tocIndex:23},{value:"{Object}",paraId:86,tocIndex:23},{value:": The default value",paraId:86,tocIndex:23},{value:"b",paraId:86,tocIndex:23},{value:" ",paraId:86,tocIndex:23},{value:"{Object}",paraId:86,tocIndex:23},{value:": The value to compare",paraId:86,tocIndex:23},{value:"options",paraId:86,tocIndex:23},{value:" ",paraId:86,tocIndex:23},{value:"{Object}",paraId:86,tocIndex:23},{value:": Handlebars provided options object",paraId:86,tocIndex:23},{value:"returns",paraId:86,tocIndex:23},{value:" ",paraId:86,tocIndex:23},{value:"{String}",paraId:86,tocIndex:23},{value:": Inverse block by default, or block if falsey.",paraId:86,tocIndex:23},{value:"Block helper that always renders the inverse block ",paraId:87,tocIndex:24},{value:"unless ",paraId:87,tocIndex:24},{value:"a",paraId:87,tocIndex:24},{value:` is is less than `,paraId:87,tocIndex:24},{value:"b",paraId:87,tocIndex:24},{value:".",paraId:87,tocIndex:24},{value:"Params",paraId:88,tocIndex:24},{value:"a",paraId:89,tocIndex:24},{value:" ",paraId:89,tocIndex:24},{value:"{Object}",paraId:89,tocIndex:24},{value:": The default value",paraId:89,tocIndex:24},{value:"b",paraId:89,tocIndex:24},{value:" ",paraId:89,tocIndex:24},{value:"{Object}",paraId:89,tocIndex:24},{value:": The value to compare",paraId:89,tocIndex:24},{value:"options",paraId:89,tocIndex:24},{value:" ",paraId:89,tocIndex:24},{value:"{Object}",paraId:89,tocIndex:24},{value:": Handlebars provided options object",paraId:89,tocIndex:24},{value:"returns",paraId:89,tocIndex:24},{value:" ",paraId:89,tocIndex:24},{value:"{String}",paraId:89,tocIndex:24},{value:": Block, or inverse block if specified and falsey.",paraId:89,tocIndex:24},{value:"Block helper that always renders the inverse block ",paraId:90,tocIndex:25},{value:"unless ",paraId:90,tocIndex:25},{value:"a",paraId:90,tocIndex:25},{value:` is is greater than or equal to `,paraId:90,tocIndex:25},{value:"b",paraId:90,tocIndex:25},{value:".",paraId:90,tocIndex:25},{value:"Params",paraId:91,tocIndex:25},{value:"a",paraId:92,tocIndex:25},{value:" ",paraId:92,tocIndex:25},{value:"{any}",paraId:92,tocIndex:25},{value:"b",paraId:92,tocIndex:25},{value:" ",paraId:92,tocIndex:25},{value:"{any}",paraId:92,tocIndex:25},{value:"options",paraId:92,tocIndex:25},{value:" ",paraId:92,tocIndex:25},{value:"{Object}",paraId:92,tocIndex:25},{value:": Handlebars provided options object",paraId:92,tocIndex:25},{value:"returns",paraId:92,tocIndex:25},{value:" ",paraId:92,tocIndex:25},{value:"{String}",paraId:92,tocIndex:25},{value:": Block, or inverse block if specified and falsey.",paraId:92,tocIndex:25},{value:"Block helper that always renders the inverse block ",paraId:93,tocIndex:26},{value:"unless ",paraId:93,tocIndex:26},{value:"a",paraId:93,tocIndex:26},{value:` is -is less than or equal to `,paraId:93,tocIndex:26},{value:"b",paraId:93,tocIndex:26},{value:".",paraId:93,tocIndex:26},{value:"Params",paraId:94,tocIndex:26},{value:"a",paraId:95,tocIndex:26},{value:" ",paraId:95,tocIndex:26},{value:"{any}",paraId:95,tocIndex:26},{value:"b",paraId:95,tocIndex:26},{value:" ",paraId:95,tocIndex:26},{value:"{any}",paraId:95,tocIndex:26},{value:"options",paraId:95,tocIndex:26},{value:" ",paraId:95,tocIndex:26},{value:"{Object}",paraId:95,tocIndex:26},{value:": Handlebars provided options object",paraId:95,tocIndex:26},{value:"returns",paraId:95,tocIndex:26},{value:" ",paraId:95,tocIndex:26},{value:"{String}",paraId:95,tocIndex:26},{value:": Block, or inverse block if specified and falsey.",paraId:95,tocIndex:26}],K6={},Z6={title:"Bulk update",toc:"menu",filename:"docs/en-US/handbook/action-bulk-update/index.md",lastUpdated:1732240239e3,description:"The bulk update function is designed for situations where you need to apply the same modification across multiple records. Before executing a batch update, users must first define the logic for assigning values to the fields that will be updated. This logic is applied to all selected records once the update button is clicked."},Y6=[{id:"bulk-update",depth:1,title:"Bulk update"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-guide",depth:2,title:"User Guide"}],Q6=[{value:"The bulk update function is designed for situations where you need to apply the same modification across multiple records. Before executing a batch update, users must first define the logic for assigning values to the fields that will be updated. This logic is applied to all selected records once the update button is clicked.",paraId:0,tocIndex:1},{value:'Set the Data to Update: Choose between "Selected" or "All," with "Selected" being the default option.',paraId:1,tocIndex:2},{value:"Field Assignment: Specify which fields will be included in the batch update; only these specified fields will be affected.",paraId:1,tocIndex:2},{value:'In the example shown, the batch update operation is configured in the waybill table to mark the selected records as "Delivery Confirmed."',paraId:2,tocIndex:2}],J6={},X6={title:"Sign in with Google",toc:"menu",filename:"docs/en-US/handbook/auth-oidc/example/google.md",lastUpdated:1732240239e3,description:"https://developers.google.com/identity/openid-connect/openid-connect"},e9=[{id:"sign-in-with-google",depth:1,title:"Sign in with Google"},{id:"get-google-oauth-20-credentials",depth:2,title:"Get Google OAuth 2.0 Credentials"},{id:"add-a-new-authenticator-on-nocobase",depth:2,title:"Add a new Authenticator on NocoBase"}],a9=[{value:"https://developers.google.com/identity/openid-connect/openid-connect",paraId:0,tocIndex:0},{value:"Google Cloud Console",paraId:1,tocIndex:1},{value:" - Create Credentials - OAuth Client ID",paraId:1,tocIndex:1},{value:"Go to the configuration interface and fill in the authorized redirect URL. The redirect URL can be obtained when adding an authenticator in Nocobase, usually it's ",paraId:2,tocIndex:1},{value:"http(s)://host:port/api/oidc:redirect",paraId:2,tocIndex:1},{value:". See the ",paraId:2,tocIndex:1},{value:"User Manual - Configuration",paraId:3,tocIndex:1},{value:" section.",paraId:2,tocIndex:1},{value:"Plugin Settings - User Authentication - Add - OIDC",paraId:4,tocIndex:2},{value:"Refer to the parameters introduced in ",paraId:5,tocIndex:2},{value:"User Manual - Configuration",paraId:6,tocIndex:2},{value:" to complete the authenticator configuration.",paraId:5,tocIndex:2}],t9={},n9={title:"Google Workspace",toc:"menu",filename:"docs/en-US/handbook/auth-saml/example/google.md",lastUpdated:1732240239e3,description:"Google Admin Console - Apps - Web and mobile apps"},o9=[{id:"google-workspace",depth:1,title:"Google Workspace"},{id:"set-google-as-idp",depth:2,title:"Set Google as IdP"},{id:"add-a-new-authenticator-on-nocobase",depth:2,title:"Add a new Authenticator on NocoBase"},{id:"fill-in-sp-information-on-google",depth:2,title:"Fill in SP Information on Google"}],r9=[{value:"Google Admin Console",paraId:0,tocIndex:1},{value:" - Apps - Web and mobile apps",paraId:0,tocIndex:1},{value:"After setting up the app, copy the ",paraId:1,tocIndex:1},{value:"SSO URL",paraId:1,tocIndex:1},{value:", ",paraId:1,tocIndex:1},{value:"Entity ID",paraId:1,tocIndex:1},{value:", and ",paraId:1,tocIndex:1},{value:"Certificate",paraId:1,tocIndex:1},{value:".",paraId:1,tocIndex:1},{value:"Plugin Settings - User Authentication - Add - SAML",paraId:2,tocIndex:2},{value:"Enter the copied information respectively:",paraId:3,tocIndex:2},{value:"SSO URL: SSO URL",paraId:4,tocIndex:2},{value:"Public Certificate: Certificate",paraId:4,tocIndex:2},{value:"idP Issuer: Entity ID",paraId:4,tocIndex:2},{value:"http: Check if you are testing locally with http",paraId:4,tocIndex:2},{value:"Then copy the SP Issuer/EntityID and ACS URL from Usage.",paraId:5,tocIndex:2},{value:"Go back to the Google Console, on the ",paraId:6,tocIndex:3},{value:"Service Provider Details",paraId:6,tocIndex:3},{value:" page, enter the ACS URL and Entity ID copied earlier, and check ",paraId:6,tocIndex:3},{value:"Signed Response",paraId:6,tocIndex:3},{value:".",paraId:6,tocIndex:3},{value:"In the ",paraId:7,tocIndex:3},{value:"Attribute Mapping",paraId:7,tocIndex:3},{value:" position, add mapping, you can map corresponding attributes.",paraId:7,tocIndex:3}],d9={},i9={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection.md",lastUpdated:1732240239e3,description:"NocoBase provides a unique DSL to describe the structure of data, known as Collection, which unifies the data structure from various sources, providing a reliable foundation for data management, analysis, and application."},l9=[{id:"overview",depth:1,title:"Overview"}],c9=[{value:"NocoBase provides a unique DSL to describe the structure of data, known as Collection, which unifies the data structure from various sources, providing a reliable foundation for data management, analysis, and application.",paraId:0,tocIndex:0},{value:"To conveniently use various data models, it supports various types of collections:",paraId:1,tocIndex:0},{value:"General collection",paraId:2,tocIndex:0},{value:": Built-in common system fields;",paraId:3,tocIndex:0},{value:"Inheritance collection",paraId:4,tocIndex:0},{value:": You can create a parent collection and then derive a child collection from the parent collection. The child collection will inherit the structure of the parent collection and can also define its own columns.",paraId:3,tocIndex:0},{value:"Tree collection",paraId:5,tocIndex:0},{value:": Tree structure collection, currently only supports adjacency collection design;",paraId:3,tocIndex:0},{value:"Calendar Tabcollectionle",paraId:6,tocIndex:0},{value:": Used to create calendar-related event collections;",paraId:3,tocIndex:0},{value:"File collection",paraId:7,tocIndex:0},{value:": Used for file storage management;",paraId:3,tocIndex:0},{value:"Expression collection",paraId:8,tocIndex:0},{value:": Used for dynamic expression scenarios in workflows;",paraId:3,tocIndex:0},{value:"SQL collection",paraId:9,tocIndex:0},{value:": Not an actual database collection, but quickly presents SQL queries in a structured manner;",paraId:3,tocIndex:0},{value:"Connect to database view",paraId:10,tocIndex:0},{value:": Connects to existing database views;",paraId:3,tocIndex:0},{value:"Connect to foreign data",paraId:11,tocIndex:0},{value:": Allows the database system to directly access and query data in external data sources, based on FDW technology.",paraId:3,tocIndex:0}],s9={},u9={title:"Data Visualization",toc:"menu",filename:"docs/en-US/handbook/data-visualization/index.md",lastUpdated:1732240239e3,description:"The NocoBase data visualization plugin provides robust data retrieval features and a rich variety of chart components. Based on system Collection data, users can quickly build visual dashboards, organize charts with flexibility, and conduct insightful business data analysis."},p9=[{id:"data-visualization",depth:1,title:"Data Visualization"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"related-documentation",depth:2,title:"Related Documentation"},{id:"roadmap",depth:2,title:"RoadMap"}],I9=[{value:"The NocoBase data visualization plugin provides robust data retrieval features and a rich variety of chart components. Based on system Collection data, users can quickly build visual dashboards, organize charts with flexibility, and conduct insightful business data analysis.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, so no additional installation is required.",paraId:1,tocIndex:2},{value:`User Manual +is less than or equal to `,paraId:93,tocIndex:26},{value:"b",paraId:93,tocIndex:26},{value:".",paraId:93,tocIndex:26},{value:"Params",paraId:94,tocIndex:26},{value:"a",paraId:95,tocIndex:26},{value:" ",paraId:95,tocIndex:26},{value:"{any}",paraId:95,tocIndex:26},{value:"b",paraId:95,tocIndex:26},{value:" ",paraId:95,tocIndex:26},{value:"{any}",paraId:95,tocIndex:26},{value:"options",paraId:95,tocIndex:26},{value:" ",paraId:95,tocIndex:26},{value:"{Object}",paraId:95,tocIndex:26},{value:": Handlebars provided options object",paraId:95,tocIndex:26},{value:"returns",paraId:95,tocIndex:26},{value:" ",paraId:95,tocIndex:26},{value:"{String}",paraId:95,tocIndex:26},{value:": Block, or inverse block if specified and falsey.",paraId:95,tocIndex:26}],K6={},Z6={title:"Bulk update",toc:"menu",filename:"docs/en-US/handbook/action-bulk-update/index.md",lastUpdated:173254844e4,description:"The bulk update function is designed for situations where you need to apply the same modification across multiple records. Before executing a batch update, users must first define the logic for assigning values to the fields that will be updated. This logic is applied to all selected records once the update button is clicked."},Y6=[{id:"bulk-update",depth:1,title:"Bulk update"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-guide",depth:2,title:"User Guide"}],Q6=[{value:"The bulk update function is designed for situations where you need to apply the same modification across multiple records. Before executing a batch update, users must first define the logic for assigning values to the fields that will be updated. This logic is applied to all selected records once the update button is clicked.",paraId:0,tocIndex:1},{value:'Set the Data to Update: Choose between "Selected" or "All," with "Selected" being the default option.',paraId:1,tocIndex:2},{value:"Field Assignment: Specify which fields will be included in the batch update; only these specified fields will be affected.",paraId:1,tocIndex:2},{value:'In the example shown, the batch update operation is configured in the waybill table to mark the selected records as "Delivery Confirmed."',paraId:2,tocIndex:2}],J6={},X6={title:"Sign in with Google",toc:"menu",filename:"docs/en-US/handbook/auth-oidc/example/google.md",lastUpdated:173254844e4,description:"https://developers.google.com/identity/openid-connect/openid-connect"},e8=[{id:"sign-in-with-google",depth:1,title:"Sign in with Google"},{id:"get-google-oauth-20-credentials",depth:2,title:"Get Google OAuth 2.0 Credentials"},{id:"add-a-new-authenticator-on-nocobase",depth:2,title:"Add a new Authenticator on NocoBase"}],a8=[{value:"https://developers.google.com/identity/openid-connect/openid-connect",paraId:0,tocIndex:0},{value:"Google Cloud Console",paraId:1,tocIndex:1},{value:" - Create Credentials - OAuth Client ID",paraId:1,tocIndex:1},{value:"Go to the configuration interface and fill in the authorized redirect URL. The redirect URL can be obtained when adding an authenticator in Nocobase, usually it's ",paraId:2,tocIndex:1},{value:"http(s)://host:port/api/oidc:redirect",paraId:2,tocIndex:1},{value:". See the ",paraId:2,tocIndex:1},{value:"User Manual - Configuration",paraId:3,tocIndex:1},{value:" section.",paraId:2,tocIndex:1},{value:"Plugin Settings - User Authentication - Add - OIDC",paraId:4,tocIndex:2},{value:"Refer to the parameters introduced in ",paraId:5,tocIndex:2},{value:"User Manual - Configuration",paraId:6,tocIndex:2},{value:" to complete the authenticator configuration.",paraId:5,tocIndex:2}],t8={},n8={title:"Google Workspace",toc:"menu",filename:"docs/en-US/handbook/auth-saml/example/google.md",lastUpdated:173254844e4,description:"Google Admin Console - Apps - Web and mobile apps"},o8=[{id:"google-workspace",depth:1,title:"Google Workspace"},{id:"set-google-as-idp",depth:2,title:"Set Google as IdP"},{id:"add-a-new-authenticator-on-nocobase",depth:2,title:"Add a new Authenticator on NocoBase"},{id:"fill-in-sp-information-on-google",depth:2,title:"Fill in SP Information on Google"}],r8=[{value:"Google Admin Console",paraId:0,tocIndex:1},{value:" - Apps - Web and mobile apps",paraId:0,tocIndex:1},{value:"After setting up the app, copy the ",paraId:1,tocIndex:1},{value:"SSO URL",paraId:1,tocIndex:1},{value:", ",paraId:1,tocIndex:1},{value:"Entity ID",paraId:1,tocIndex:1},{value:", and ",paraId:1,tocIndex:1},{value:"Certificate",paraId:1,tocIndex:1},{value:".",paraId:1,tocIndex:1},{value:"Plugin Settings - User Authentication - Add - SAML",paraId:2,tocIndex:2},{value:"Enter the copied information respectively:",paraId:3,tocIndex:2},{value:"SSO URL: SSO URL",paraId:4,tocIndex:2},{value:"Public Certificate: Certificate",paraId:4,tocIndex:2},{value:"idP Issuer: Entity ID",paraId:4,tocIndex:2},{value:"http: Check if you are testing locally with http",paraId:4,tocIndex:2},{value:"Then copy the SP Issuer/EntityID and ACS URL from Usage.",paraId:5,tocIndex:2},{value:"Go back to the Google Console, on the ",paraId:6,tocIndex:3},{value:"Service Provider Details",paraId:6,tocIndex:3},{value:" page, enter the ACS URL and Entity ID copied earlier, and check ",paraId:6,tocIndex:3},{value:"Signed Response",paraId:6,tocIndex:3},{value:".",paraId:6,tocIndex:3},{value:"In the ",paraId:7,tocIndex:3},{value:"Attribute Mapping",paraId:7,tocIndex:3},{value:" position, add mapping, you can map corresponding attributes.",paraId:7,tocIndex:3}],d8={},i8={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-modeling/collection.md",lastUpdated:173254844e4,description:"NocoBase provides a unique DSL to describe the structure of data, known as Collection, which unifies the data structure from various sources, providing a reliable foundation for data management, analysis, and application."},l8=[{id:"overview",depth:1,title:"Overview"}],c8=[{value:"NocoBase provides a unique DSL to describe the structure of data, known as Collection, which unifies the data structure from various sources, providing a reliable foundation for data management, analysis, and application.",paraId:0,tocIndex:0},{value:"To conveniently use various data models, it supports various types of collections:",paraId:1,tocIndex:0},{value:"General collection",paraId:2,tocIndex:0},{value:": Built-in common system fields;",paraId:3,tocIndex:0},{value:"Inheritance collection",paraId:4,tocIndex:0},{value:": You can create a parent collection and then derive a child collection from the parent collection. The child collection will inherit the structure of the parent collection and can also define its own columns.",paraId:3,tocIndex:0},{value:"Tree collection",paraId:5,tocIndex:0},{value:": Tree structure collection, currently only supports adjacency collection design;",paraId:3,tocIndex:0},{value:"Calendar Tabcollectionle",paraId:6,tocIndex:0},{value:": Used to create calendar-related event collections;",paraId:3,tocIndex:0},{value:"File collection",paraId:7,tocIndex:0},{value:": Used for file storage management;",paraId:3,tocIndex:0},{value:"Expression collection",paraId:8,tocIndex:0},{value:": Used for dynamic expression scenarios in workflows;",paraId:3,tocIndex:0},{value:"SQL collection",paraId:9,tocIndex:0},{value:": Not an actual database collection, but quickly presents SQL queries in a structured manner;",paraId:3,tocIndex:0},{value:"Connect to database view",paraId:10,tocIndex:0},{value:": Connects to existing database views;",paraId:3,tocIndex:0},{value:"Connect to foreign data",paraId:11,tocIndex:0},{value:": Allows the database system to directly access and query data in external data sources, based on FDW technology.",paraId:3,tocIndex:0}],s8={},u8={title:"Data Visualization",toc:"menu",filename:"docs/en-US/handbook/data-visualization/index.md",lastUpdated:173254844e4,description:"The NocoBase data visualization plugin provides robust data retrieval features and a rich variety of chart components. Based on system Collection data, users can quickly build visual dashboards, organize charts with flexibility, and conduct insightful business data analysis."},p8=[{id:"data-visualization",depth:1,title:"Data Visualization"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"related-documentation",depth:2,title:"Related Documentation"},{id:"roadmap",depth:2,title:"RoadMap"}],I8=[{value:"The NocoBase data visualization plugin provides robust data retrieval features and a rich variety of chart components. Based on system Collection data, users can quickly build visual dashboards, organize charts with flexibility, and conduct insightful business data analysis.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, so no additional installation is required.",paraId:1,tocIndex:2},{value:`User Manual `,paraId:2,tocIndex:3},{value:"Chart Block",paraId:3,tocIndex:3},{value:"Configuring Charts",paraId:4,tocIndex:3},{value:"Filter Block",paraId:5,tocIndex:3},{value:`Developer Guide -`,paraId:2,tocIndex:3},{value:"API Reference",paraId:6,tocIndex:3},{value:"Step-by-Step Tutorial",paraId:7,tocIndex:3},{value:"FAQ",paraId:8,tocIndex:3},{value:"Simplified data processing and transformation",paraId:9,tocIndex:4},{value:"Ability to add charts in pop-up windows",paraId:9,tocIndex:4},{value:"Embed other blocks (e.g., Markdown) in chart blocks",paraId:9,tocIndex:4},{value:"Save configurations as templates",paraId:9,tocIndex:4},{value:"Enable data drill-down",paraId:9,tocIndex:4},{value:"Improved permissions control",paraId:9,tocIndex:4}],_9={},v9={title:"China region",toc:"menu",filename:"docs/en-US/handbook/field-china-region/index.md",lastUpdated:1732240239e3,description:"To be added."},m9=[{id:"china-region",depth:1,title:"China region"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"examples",depth:2,title:"Examples"}],h9=[{value:"To be added.",paraId:0,tocIndex:3}],f9={},x9={title:"Notification: email",toc:"menu",filename:"docs/en-US/handbook/notification-email/index.md",lastUpdated:1732240239e3,description:"Send notifications through the email channel, currently supporting only the SMTP transmission method."},g9=[{id:"notification-email",depth:1,title:"Notification: email"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"email-channel-configuration",depth:3,title:"Email Channel Configuration"},{id:"workflow-notification-configuration",depth:3,title:"Workflow Notification Configuration"}],b9=[{value:"Send notifications through the email channel, currently supporting only the SMTP transmission method.",paraId:0,tocIndex:1},{value:"This is a built-in plugin that must be activated before use.",paraId:1,tocIndex:2},{value:"Currently, only the SMTP transmission method is supported.",paraId:2,tocIndex:4}],y9={},w9={title:"Add New",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/add-new.md",lastUpdated:1732240239e3,description:"The add operation is used to add records to the current block's data table. By configuring the form block, you can enter new data records into the current block's data table."},k9=[{id:"add-new",depth:1,title:"Add New"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"}],S9=[{value:"The add operation is used to add records to the current block's data table. By configuring the form block, you can enter new data records into the current block's data table.",paraId:0,tocIndex:1},{value:"Edit Button",paraId:1,tocIndex:2},{value:"Open Mode",paraId:2,tocIndex:2},{value:"Popup Size",paraId:3,tocIndex:2},{value:"Enable Sub-table (Inherited Table)",paraId:4,tocIndex:2}],U9={},P9={title:"Refresh",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/refresh.md",lastUpdated:1732240239e3},T9=[{id:"refresh",depth:1,title:"Refresh"}],C9=[],A9={},q9={title:"Title",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/title.md",lastUpdated:1732240239e3,description:"In reading mode, the default component for relationship fields is the title component, which marks the current associated record by displaying the value of the title field."},E9=[{id:"title",depth:1,title:"Title"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"enable-link-enabled-by-default",depth:3,title:"Enable Link (Enabled by default)"}],D9=[{value:"In reading mode, the default component for relationship fields is the title component, which marks the current associated record by displaying the value of the title field.",paraId:0,tocIndex:1},{value:"Clicking will open a pop-up window, allowing you to customize the configuration block for data management.",paraId:1,tocIndex:3},{value:"For more details, see ",paraId:2,tocIndex:3},{value:"Field Components",paraId:3,tocIndex:3},{value:".",paraId:2,tocIndex:3}],O9={},R9={title:"API Reference",toc:"menu",filename:"docs/en-US/handbook/workflow/development/api.md",lastUpdated:1732240239e3,description:"The API available in the server-side package is shown in the following code:"},M9=[{id:"api-reference",depth:1,title:"API Reference"},{id:"server-side",depth:2,title:"Server-Side"},{id:"pluginworkflowserver",depth:3,title:"PluginWorkflowServer"},{id:"registertrigger",depth:3,title:"registerTrigger()"},{id:"registerinstruction",depth:3,title:"registerInstruction()"},{id:"trigger",depth:3,title:"trigger()"},{id:"resume",depth:3,title:"resume()"},{id:"trigger-1",depth:2,title:"Trigger"},{id:"instruction",depth:2,title:"Instruction"},{id:"execution_status",depth:2,title:"EXECUTION_STATUS"},{id:"job_status",depth:2,title:"JOB_STATUS"},{id:"client-side",depth:2,title:"Client-Side"},{id:"pluginworkflowclient",depth:3,title:"PluginWorkflowClient"},{id:"registertrigger-1",depth:3,title:"registerTrigger()"},{id:"registerinstruction-1",depth:3,title:"registerInstruction()"},{id:"trigger-2",depth:2,title:"Trigger"},{id:"instruction-1",depth:2,title:"Instruction"}],L9=[{value:"The API available in the server-side package is shown in the following code:",paraId:0,tocIndex:1},{value:`import PluginWorkflowServer, { +`,paraId:2,tocIndex:3},{value:"API Reference",paraId:6,tocIndex:3},{value:"Step-by-Step Tutorial",paraId:7,tocIndex:3},{value:"FAQ",paraId:8,tocIndex:3},{value:"Simplified data processing and transformation",paraId:9,tocIndex:4},{value:"Ability to add charts in pop-up windows",paraId:9,tocIndex:4},{value:"Embed other blocks (e.g., Markdown) in chart blocks",paraId:9,tocIndex:4},{value:"Save configurations as templates",paraId:9,tocIndex:4},{value:"Enable data drill-down",paraId:9,tocIndex:4},{value:"Improved permissions control",paraId:9,tocIndex:4}],_8={},v8={title:"China region",toc:"menu",filename:"docs/en-US/handbook/field-china-region/index.md",lastUpdated:173254844e4,description:"To be added."},m8=[{id:"china-region",depth:1,title:"China region"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field configuration"},{id:"examples",depth:2,title:"Examples"}],h8=[{value:"To be added.",paraId:0,tocIndex:3}],f8={},x8={title:"Notification: email",toc:"menu",filename:"docs/en-US/handbook/notification-email/index.md",lastUpdated:173254844e4,description:"Send notifications through the email channel, currently supporting only the SMTP transmission method."},g8=[{id:"notification-email",depth:1,title:"Notification: email"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"email-channel-configuration",depth:3,title:"Email Channel Configuration"},{id:"workflow-notification-configuration",depth:3,title:"Workflow Notification Configuration"}],b8=[{value:"Send notifications through the email channel, currently supporting only the SMTP transmission method.",paraId:0,tocIndex:1},{value:"This is a built-in plugin that must be activated before use.",paraId:1,tocIndex:2},{value:"Currently, only the SMTP transmission method is supported.",paraId:2,tocIndex:4}],y8={},w8={title:"Add New",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/add-new.md",lastUpdated:173254844e4,description:"The add operation is used to add records to the current block's data table. By configuring the form block, you can enter new data records into the current block's data table."},k8=[{id:"add-new",depth:1,title:"Add New"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"}],S8=[{value:"The add operation is used to add records to the current block's data table. By configuring the form block, you can enter new data records into the current block's data table.",paraId:0,tocIndex:1},{value:"Edit Button",paraId:1,tocIndex:2},{value:"Open Mode",paraId:2,tocIndex:2},{value:"Popup Size",paraId:3,tocIndex:2},{value:"Enable Sub-table (Inherited Table)",paraId:4,tocIndex:2}],U8={},P8={title:"Refresh",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/refresh.md",lastUpdated:173254844e4},T8=[{id:"refresh",depth:1,title:"Refresh"}],C8=[],A8={},q8={title:"Title",toc:"menu",filename:"docs/en-US/handbook/ui/fields/specific/title.md",lastUpdated:173254844e4,description:"In reading mode, the default component for relationship fields is the title component, which marks the current associated record by displaying the value of the title field."},E8=[{id:"title",depth:1,title:"Title"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration-options",depth:2,title:"Field Configuration Options"},{id:"enable-link-enabled-by-default",depth:3,title:"Enable Link (Enabled by default)"}],D8=[{value:"In reading mode, the default component for relationship fields is the title component, which marks the current associated record by displaying the value of the title field.",paraId:0,tocIndex:1},{value:"Clicking will open a pop-up window, allowing you to customize the configuration block for data management.",paraId:1,tocIndex:3},{value:"For more details, see ",paraId:2,tocIndex:3},{value:"Field Components",paraId:3,tocIndex:3},{value:".",paraId:2,tocIndex:3}],O8={},R8={title:"API Reference",toc:"menu",filename:"docs/en-US/handbook/workflow/development/api.md",lastUpdated:173254844e4,description:"The API available in the server-side package is shown in the following code:"},M8=[{id:"api-reference",depth:1,title:"API Reference"},{id:"server-side",depth:2,title:"Server-Side"},{id:"pluginworkflowserver",depth:3,title:"PluginWorkflowServer"},{id:"registertrigger",depth:3,title:"registerTrigger()"},{id:"registerinstruction",depth:3,title:"registerInstruction()"},{id:"trigger",depth:3,title:"trigger()"},{id:"resume",depth:3,title:"resume()"},{id:"trigger-1",depth:2,title:"Trigger"},{id:"instruction",depth:2,title:"Instruction"},{id:"execution_status",depth:2,title:"EXECUTION_STATUS"},{id:"job_status",depth:2,title:"JOB_STATUS"},{id:"client-side",depth:2,title:"Client-Side"},{id:"pluginworkflowclient",depth:3,title:"PluginWorkflowClient"},{id:"registertrigger-1",depth:3,title:"registerTrigger()"},{id:"registerinstruction-1",depth:3,title:"registerInstruction()"},{id:"trigger-2",depth:2,title:"Trigger"},{id:"instruction-1",depth:2,title:"Instruction"}],L8=[{value:"The API available in the server-side package is shown in the following code:",paraId:0,tocIndex:1},{value:`import PluginWorkflowServer, { Trigger, Instruction, EXECUTION_STATUS, @@ -11009,11 +11061,11 @@ export class Instruction { upstream: object; branchIndex: number; }; -`,paraId:67,tocIndex:16},{value:"If ",paraId:68,tocIndex:16},{value:"useVariables",paraId:68,tocIndex:16},{value:" is not set, it means that this node type does not provide a value-fetching function, and the result data of this node type cannot be selected in the flow. If the result value is singular (non-selectable), a static content that expresses the corresponding information can be returned (refer to the ",paraId:68,tocIndex:16},{value:"calculation node source code",paraId:68,tocIndex:16},{value:"). If selection is required (e.g., a property in an Object), a custom selection component output can be provided (refer to the ",paraId:68,tocIndex:16},{value:"Create Data Node source code",paraId:68,tocIndex:16},{value:").",paraId:68,tocIndex:16},{value:"Component",paraId:68,tocIndex:16},{value:": Custom rendering component for the node, used when the default node rendering is not sufficient, allowing for complete customization of the node view. For example, to provide more operation buttons or other interactive elements for the start node of a branch type, this method should be used (refer to the ",paraId:68,tocIndex:16},{value:"Parallel Branch source code",paraId:68,tocIndex:16},{value:").",paraId:68,tocIndex:16},{value:"useInitializers",paraId:68,tocIndex:16},{value:": Used to provide methods for initialization blocks, for example, in a manual node, it can initialize relevant user blocks based on the upstream node. If this method is provided, it will be available during the initialization block in the manual node configuration interface (refer to the ",paraId:68,tocIndex:16},{value:"Create Data Node source code",paraId:68,tocIndex:16},{value:").",paraId:68,tocIndex:16},{value:"isAvailable",paraId:68,tocIndex:16},{value:": Mainly used to determine whether the node can be used (added) in the current environment. The current environment includes the current workflow, upstream nodes, and the current branch index.",paraId:68,tocIndex:16}],N9={},z9={title:"Aggregate Query",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/aggregate.md",lastUpdated:1732240239e3,description:"This plugin is designed to execute aggregate function queries on specific data within a table that meets defined conditions, returning the relevant statistical outcomes. It is particularly useful for generating statistical data for reports."},F9=[{id:"aggregate-query",depth:1,title:"Aggregate Query"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"aggregate-functions",depth:4,title:"Aggregate Functions"},{id:"target-type",depth:4,title:"Target Type"},{id:"distinct",depth:4,title:"Distinct"},{id:"filter-conditions",depth:4,title:"Filter Conditions"},{id:"example",depth:3,title:"Example"}],B9=[{value:"This plugin is designed to execute aggregate function queries on specific data within a table that meets defined conditions, returning the relevant statistical outcomes. It is particularly useful for generating statistical data for reports.",paraId:0},{value:"The node operates using database aggregate functions and currently supports querying a single field within a single data table. The resulting statistics are stored within the node\u2019s output, making them available for subsequent nodes in the workflow.",paraId:1},{value:"This is a built-in plugin, so no installation steps are required.",paraId:2,tocIndex:1},{value:'In the workflow configuration interface, click the plus ("+") button within the process flow to add an "Aggregate Query" node:',paraId:3,tocIndex:3},{value:"This plugin supports five SQL aggregate functions: ",paraId:4,tocIndex:5},{value:"COUNT",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"SUM",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"AVG",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"MIN",paraId:4,tocIndex:5},{value:", and ",paraId:4,tocIndex:5},{value:"MAX",paraId:4,tocIndex:5},{value:". You can select any one of these functions to perform the aggregate query on your data.",paraId:4,tocIndex:5},{value:"There are two methods for selecting the target of the aggregate query. The first is to directly select the target data table and one of its fields. The second is to choose a related data table and field from the existing data objects in the workflow context to perform the aggregate query.",paraId:5,tocIndex:6},{value:"This feature corresponds to the ",paraId:6,tocIndex:7},{value:"DISTINCT",paraId:6,tocIndex:7},{value:" keyword in SQL. The distinct field must be the same as the selected data table field, and currently, different fields cannot be selected for the distinct and target fields.",paraId:6,tocIndex:7},{value:"You can apply filter conditions similar to those in a standard data table query, using the workflow\u2019s context variables.",paraId:7,tocIndex:8},{value:`The aggregate target "Collection Table Data" is quite intuitive, so let's illustrate the usage of the aggregate target as "Related Collection Table Data" with the example of "counting the total number of articles in a category after adding a new article to that category."`,paraId:8,tocIndex:9},{value:'First, create two data tables: "Posts" and "Categories." The "Posts" collection includes a many-to-one relationship field pointing to the "Categories" collection, and a reverse relationship field that allows one category to contain multiple articles:',paraId:9,tocIndex:9},{value:"Field Name",paraId:10,tocIndex:9},{value:"Type",paraId:10,tocIndex:9},{value:"Title",paraId:10,tocIndex:9},{value:"Single Line Text",paraId:10,tocIndex:9},{value:"Category",paraId:10,tocIndex:9},{value:"Many-to-One (Category)",paraId:10,tocIndex:9},{value:"Field Name",paraId:11,tocIndex:9},{value:"Type",paraId:11,tocIndex:9},{value:"Category Name",paraId:11,tocIndex:9},{value:"Single Line Text",paraId:11,tocIndex:9},{value:"Posts",paraId:11,tocIndex:9},{value:"One-to-Many (Articles)",paraId:11,tocIndex:9},{value:'Next, create a workflow triggered by an event in the data table, specifically when new data is added to the "Articles" table.',paraId:12,tocIndex:9},{value:"Then, add an aggregate query node with the following configuration:",paraId:13,tocIndex:9},{value:"Once the workflow is triggered, the aggregate query node will calculate the total number of articles within the category of the newly added article and save this count as the node\u2019s output.",paraId:14,tocIndex:9},{value:'If you need to access related data in a collection table event trigger, ensure you configure the relevant fields for "Preload associations" in the trigger; otherwise, these fields won\u2019t be selectable.',paraId:15}],j9={},H9={title:"Condition",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/condition.md",lastUpdated:1732240239e3,description:"Similar to the if statement in programming languages, the condition node determines the direction of the subsequent flow based on the result of the configured condition."},W9=[{id:"condition",depth:1,title:"Condition"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"calculation-engine",depth:3,title:"Calculation Engine"}],$9=[{value:"Similar to the ",paraId:0,tocIndex:0},{value:"if",paraId:0,tocIndex:0},{value:" statement in programming languages, the condition node determines the direction of the subsequent flow based on the result of the configured condition.",paraId:0,tocIndex:0},{value:`There are two modes for condition: "Continue if 'true'" and "Continue if 'true' or 'false'". When creating the node, you need to choose one of these modes, and it cannot be changed in the node's configuration afterward.`,paraId:1,tocIndex:1},{value:`In the "Continue if 'true'" mode, when the result of the condition judgment is "true", workflow will continue to execute the subsequent nodes; otherwise, the flow will terminate and exit prematurely with a failed status.`,paraId:2,tocIndex:1},{value:'This mode is suitable for scenarios where the flow should not continue if the condition is not met. For example, when configuring a form button to submit an order which bound with a "Pre-action event", if there is insufficient stock for the items in the order, the process should not continue to generate the order but instead fail and exit.',paraId:3,tocIndex:1},{value:`In the "Continue if 'true' or 'false'" mode, the condition node will produce two branches of the flow, corresponding to the scenarios where the condition judgment results are "true" and "false". Each branch can have subsequent nodes configured separately. After either branch completes execution, it will automatically return back to the parent branch where the condition node is located and continue executing the subsequent nodes.`,paraId:4,tocIndex:1},{value:"This mode is suitable for scenarios where different operations need to be performed depending on whether the condition is met or not. For example, checking if a piece of data exists, and if it doesn't, inserting it; if it does, updating it.",paraId:5,tocIndex:1},{value:"Currently, three engines are supported:",paraId:6,tocIndex:3},{value:"Basic",paraId:7,tocIndex:3},{value:': Obtains logical results through simple binary calculations and grouping with "AND" and "OR".',paraId:7,tocIndex:3},{value:"Math.js",paraId:7,tocIndex:3},{value:": Computes logical results from expressions supported by the ",paraId:7,tocIndex:3},{value:"Math.js",paraId:7,tocIndex:3},{value:" engine.",paraId:7,tocIndex:3},{value:"Formula.js",paraId:7,tocIndex:3},{value:": Computes logical results from expressions supported by the ",paraId:7,tocIndex:3},{value:"Formula.js",paraId:7,tocIndex:3},{value:" engine.",paraId:7,tocIndex:3},{value:"All three calculations can use variables from the workflow context as operands for computation.",paraId:8,tocIndex:3}],G9={},V9={title:"Aggregate",toc:"menu",filename:"docs/en-US/handbook/workflow-aggregate/index.md",lastUpdated:1732240239e3,description:"This plugin is designed to execute aggregate function queries on specific data within a table that meets defined conditions, returning the relevant statistical outcomes. It is particularly useful for generating statistical data for reports."},K9=[{id:"aggregate",depth:1,title:"Aggregate"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"aggregate-functions",depth:4,title:"Aggregate Functions"},{id:"target-type",depth:4,title:"Target Type"},{id:"distinct",depth:4,title:"Distinct"},{id:"filter-conditions",depth:4,title:"Filter Conditions"},{id:"example",depth:3,title:"Example"}],Z9=[{value:"This plugin is designed to execute aggregate function queries on specific data within a table that meets defined conditions, returning the relevant statistical outcomes. It is particularly useful for generating statistical data for reports.",paraId:0},{value:"The node operates using database aggregate functions and currently supports querying a single field within a single data table. The resulting statistics are stored within the node\u2019s output, making them available for subsequent nodes in the workflow.",paraId:1},{value:"This is a built-in plugin, so no installation steps are required.",paraId:2,tocIndex:1},{value:'In the workflow configuration interface, click the plus ("+") button within the process flow to add an "Aggregate Query" node:',paraId:3,tocIndex:3},{value:"This plugin supports five SQL aggregate functions: ",paraId:4,tocIndex:5},{value:"COUNT",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"SUM",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"AVG",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"MIN",paraId:4,tocIndex:5},{value:", and ",paraId:4,tocIndex:5},{value:"MAX",paraId:4,tocIndex:5},{value:". You can select any one of these functions to perform the aggregate query on your data.",paraId:4,tocIndex:5},{value:"There are two methods for selecting the target of the aggregate query. The first is to directly select the target data table and one of its fields. The second is to choose a related data table and field from the existing data objects in the workflow context to perform the aggregate query.",paraId:5,tocIndex:6},{value:"This feature corresponds to the ",paraId:6,tocIndex:7},{value:"DISTINCT",paraId:6,tocIndex:7},{value:" keyword in SQL. The distinct field must be the same as the selected data table field, and currently, different fields cannot be selected for the distinct and target fields.",paraId:6,tocIndex:7},{value:"You can apply filter conditions similar to those in a standard data table query, using the workflow\u2019s context variables.",paraId:7,tocIndex:8},{value:`The aggregate target "Collection Table Data" is quite intuitive, so let's illustrate the usage of the aggregate target as "Related Collection Table Data" with the example of "counting the total number of articles in a category after adding a new article to that category."`,paraId:8,tocIndex:9},{value:'First, create two data tables: "Posts" and "Categories." The "Posts" collection includes a many-to-one relationship field pointing to the "Categories" collection, and a reverse relationship field that allows one category to contain multiple articles:',paraId:9,tocIndex:9},{value:"Field Name",paraId:10,tocIndex:9},{value:"Type",paraId:10,tocIndex:9},{value:"Title",paraId:10,tocIndex:9},{value:"Single Line Text",paraId:10,tocIndex:9},{value:"Category",paraId:10,tocIndex:9},{value:"Many-to-One (Category)",paraId:10,tocIndex:9},{value:"Field Name",paraId:11,tocIndex:9},{value:"Type",paraId:11,tocIndex:9},{value:"Category Name",paraId:11,tocIndex:9},{value:"Single Line Text",paraId:11,tocIndex:9},{value:"Posts",paraId:11,tocIndex:9},{value:"One-to-Many (Articles)",paraId:11,tocIndex:9},{value:'Next, create a workflow triggered by an event in the data table, specifically when new data is added to the "Articles" table.',paraId:12,tocIndex:9},{value:"Then, add an aggregate query node with the following configuration:",paraId:13,tocIndex:9},{value:"Once the workflow is triggered, the aggregate query node will calculate the total number of articles within the category of the newly added article and save this count as the node\u2019s output.",paraId:14,tocIndex:9},{value:'If you need to access related data in a collection table event trigger, ensure you configure the relevant fields for "Preload associations" in the trigger; otherwise, these fields won\u2019t be selectable.',paraId:15}],Y9={},Q9={title:"Initiate Approval Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-approval/action.md",lastUpdated:1732240239e3,description:"After configuring and activating an approval workflow, you can link it to the submit button of the relevant data table form. This setup allows users to automatically initiate the approval process when they submit the form:"},J9=[{id:"initiate-approval-configuration",depth:1,title:"Initiate Approval Configuration"}],X9=[{value:"After configuring and activating an approval workflow, you can link it to the submit button of the relevant data table form. This setup allows users to automatically initiate the approval process when they submit the form:",paraId:0,tocIndex:0},{value:"Once the workflow is linked, users will trigger the approval process upon submitting the form.",paraId:1,tocIndex:0},{value:'The approval initiation button currently only supports the "Submit" (or "Save") button in "Add" or "Update" forms. It does not support the "Submit to Workflow" button (which can only be linked to "Post-action event").',paraId:2}],e7={},a7={title:"\u9AD8\u7EA7\u7C7B\u578B",toc:"menu",filename:"docs/en-US/manual/collection/fields/advanced.md",lastUpdated:1732240239e3},t7=[{id:"\u9AD8\u7EA7\u7C7B\u578B",depth:1,title:"\u9AD8\u7EA7\u7C7B\u578B"}],n7=[{value:"Formula",paraId:0,tocIndex:0},{value:"Sequence",paraId:0,tocIndex:0},{value:"JSON",paraId:0,tocIndex:0},{value:"Collection",paraId:0,tocIndex:0}],o7={},r7={title:"\u5173\u7CFB\u7C7B\u578B",toc:"menu",filename:"docs/en-US/manual/collection/fields/relation.md",lastUpdated:1732240239e3,description:"\u7528\u4E8E\u5EFA\u7ACB\u5404\u79CD\u5173\u8054\u5173\u7CFB"},d7=[{id:"\u5173\u7CFB\u7C7B\u578B",depth:1,title:"\u5173\u7CFB\u7C7B\u578B"}],i7=[{value:"\u7528\u4E8E\u5EFA\u7ACB\u5404\u79CD\u5173\u8054\u5173\u7CFB",paraId:0,tocIndex:0},{value:"One to one (belongs to)",paraId:1,tocIndex:0},{value:"One to one (has one)",paraId:1,tocIndex:0},{value:"One to many",paraId:1,tocIndex:0},{value:"Many to one",paraId:1,tocIndex:0},{value:"Many to many",paraId:1,tocIndex:0}],l7={},c7={title:"\u754C\u9762\u914D\u7F6E\u6A21\u5F0F",toc:"menu",filename:"docs/en-US/manual/quick-start/ui-editor-mode.md",lastUpdated:1732240239e3,description:"NocoBase \u91C7\u7528\u6240\u89C1\u5373\u6240\u5F97\u7684\u65B9\u5F0F\u6765\u914D\u7F6E\u754C\u9762\u3002\u70B9\u51FB\u53F3\u4E0A\u89D2\u7684UI Editor\u6309\u94AE\uFF0C\u5373\u53EF\u5207\u6362\u914D\u7F6E\u6A21\u5F0F\u548C\u4F7F\u7528\u6A21\u5F0F\u3002\u8FDB\u5165\u914D\u7F6E\u6A21\u5F0F\u4E4B\u540E\uFF0C\u754C\u9762\u4E0A\u5404\u5904\u5C06\u4F1A\u51FA\u73B0\u6A59\u8272\u7684\u914D\u7F6E\u5165\u53E3\u3002"},s7=[{id:"\u754C\u9762\u914D\u7F6E\u6A21\u5F0F",depth:1,title:"\u754C\u9762\u914D\u7F6E\u6A21\u5F0F"},{id:"\u83DC\u5355\u9879\u914D\u7F6E",depth:2,title:"\u83DC\u5355\u9879\u914D\u7F6E"},{id:"\u533A\u5757\u914D\u7F6E",depth:2,title:"\u533A\u5757\u914D\u7F6E"},{id:"\u64CD\u4F5C\u914D\u7F6E",depth:2,title:"\u64CD\u4F5C\u914D\u7F6E"},{id:"\u6807\u7B7E\u9875\u914D\u7F6E",depth:2,title:"\u6807\u7B7E\u9875\u914D\u7F6E"}],u7=[{value:"NocoBase \u91C7\u7528\u6240\u89C1\u5373\u6240\u5F97\u7684\u65B9\u5F0F\u6765\u914D\u7F6E\u754C\u9762\u3002\u70B9\u51FB\u53F3\u4E0A\u89D2\u7684",paraId:0,tocIndex:0},{value:"UI Editor",paraId:0,tocIndex:0},{value:"\u6309\u94AE\uFF0C\u5373\u53EF\u5207\u6362\u914D\u7F6E\u6A21\u5F0F\u548C\u4F7F\u7528\u6A21\u5F0F\u3002\u8FDB\u5165\u914D\u7F6E\u6A21\u5F0F\u4E4B\u540E\uFF0C\u754C\u9762\u4E0A\u5404\u5904\u5C06\u4F1A\u51FA\u73B0\u6A59\u8272\u7684\u914D\u7F6E\u5165\u53E3\u3002",paraId:0,tocIndex:0},{value:"\u901A\u5E38\uFF0C\u914D\u7F6E\u9879\u5165\u53E3\u4F1A\u51FA\u73B0\u5728\u5143\u7D20\u7684\u53F3\u4E0A\u89D2\u3002",paraId:1,tocIndex:0},{value:"\u5C06\u9F20\u6807\u79FB\u5230\u83DC\u5355\u9879\u4E0A\uFF0C\u5728\u53F3\u4E0A\u89D2\u5373\u53EF\u4EE5\u770B\u5230\u62D6\u62FD\u6392\u5E8F\u6309\u94AE\u3001\u914D\u7F6E\u9879\u6309\u94AE\uFF0C\u53EF\u4EE5\u7F16\u8F91\u3001\u79FB\u52A8\u3001\u63D2\u5165\u3001\u5220\u9664\u3002",paraId:2,tocIndex:1},{value:"\u5C06\u9F20\u6807\u79FB\u5230\u4E00\u4E2A\u533A\u5757\u4E0A\uFF0C\u5728\u53F3\u4E0A\u89D2\u5373\u53EF\u4EE5\u770B\u5230\u62D6\u62FD\u6392\u5E8F\u6309\u94AE\u3001\u65B0\u589E\u533A\u5757\u6309\u94AE\u3001\u914D\u7F6E\u9879\u6309\u94AE\u3002",paraId:3,tocIndex:2},{value:"\u4E0D\u540C\u7684\u533A\u5757\u8FD8\u4F1A\u6709\u4E00\u4E9B\u81EA\u5DF1\u72EC\u6709\u7684\u914D\u7F6E\u9879\u3002\u6BD4\u5982\u8868\u683C\u533A\u5757\uFF0C\u5C06\u9F20\u6807\u79FB\u5230\u8868\u5934\u4E0A\u5373\u53EF\u4EE5\u5728\u53F3\u4E0A\u89D2\u770B\u5230\u8868\u5934\u7684\u914D\u7F6E\u9879\uFF1B\u5728\u8868\u5934\u6700\u53F3\u4FA7\u8FD8\u53EF\u4EE5\u770B\u5230\u8868\u683C\u5217\u7684\u914D\u7F6E\u9879\u3002",paraId:4,tocIndex:2},{value:"\u5728\u533A\u5757\u4E2D\u53EF\u4EE5\u770B\u5230\u64CD\u4F5C\u7684\u914D\u7F6E\u5165\u53E3\uFF0C\u8FD9\u4E9B\u5165\u53E3\u5728\u4E0D\u540C\u7684\u533A\u5757\u91CC\u4F1A\u51FA\u73B0\u5728\u4E0D\u540C\u7684\u4F4D\u7F6E\u3002",paraId:5,tocIndex:3},{value:"\u6BD4\u5982\u8868\u683C\u533A\u5757\uFF0C\u5728\u53F3\u4E0A\u65B9\u53EF\u4EE5\u770B\u5230\u9488\u5BF9\u8868\u683C\u6570\u636E\u7684\u64CD\u4F5C\uFF1A",paraId:6,tocIndex:3},{value:"\u5728\u64CD\u4F5C\u5217\u7684\u8868\u5934\u91CC\u53EF\u4EE5\u770B\u5230\u9488\u5BF9\u5355\u884C\u6570\u636E\u7684\u64CD\u4F5C\uFF1A",paraId:7,tocIndex:3},{value:"\u5728\u8BE6\u60C5\u533A\u5757\u7684\u53F3\u4E0A\u89D2\u53EF\u4EE5\u770B\u5230\u9488\u5BF9\u8BE6\u60C5\u7684\u64CD\u4F5C\uFF1A",paraId:8,tocIndex:3},{value:"\u5728\u8868\u5355\u533A\u5757\u5E95\u90E8\u53EF\u4EE5\u770B\u5230\u9488\u5BF9\u8868\u5355\u7684\u64CD\u4F5C\uFF1A",paraId:9,tocIndex:3},{value:"\u5728\u5F39\u7A97\u6216\u62BD\u5C49\u91CC\uFF0C\u53EF\u4EE5\u6DFB\u52A0\u591A\u4E2A\u6807\u7B7E\u9875\uFF0C\u7528\u4E8E\u627F\u8F7D\u4E0D\u540C\u7684\u533A\u5757\u3002",paraId:10,tocIndex:4}],p7={},I7={title:"\u8FD0\u7B97",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/calculation.md",lastUpdated:1732240239e3,description:"\u8FD0\u7B97\u8282\u70B9\u867D\u7136\u4E0D\u5BF9\u6D41\u7A0B\u8FDB\u884C\u63A7\u5236\uFF0C\u4F46\u662F\u6D41\u7A0B\u4E2D\u4E00\u79CD\u91CD\u8981\u7684\u529F\u80FD\uFF0C\u8FD0\u7B97\u8282\u70B9\u53EF\u4EE5\u5BF9\u4E00\u4E2A\u8868\u8FBE\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u8FD0\u7B97\u7ED3\u679C\u4F1A\u4FDD\u5B58\u5728\u5BF9\u5E94\u8282\u70B9\u7684\u7ED3\u679C\u4E2D\uFF0C\u4EE5\u4F9B\u540E\u7EED\u5176\u4ED6\u8282\u70B9\u4F7F\u7528\u3002\u662F\u4E00\u79CD\u7528\u4E8E\u8BA1\u7B97\u3001\u5904\u7406\u548C\u8F6C\u6362\u6570\u636E\u7684\u5DE5\u5177\uFF0C\u4E00\u5B9A\u7A0B\u5EA6\u4E0A\uFF0C\u53EF\u4EE5\u4EE3\u66FF\u7F16\u7A0B\u8BED\u8A00\u4E2D\u5BF9\u4E00\u4E2A\u503C\u8BA1\u7B97\u51FD\u6570\u8C03\u7528\u5E76\u8D4B\u503C\u7ED9\u53D8\u91CF\u7684\u529F\u80FD\u3002"},_7=[{id:"\u8FD0\u7B97",depth:1,title:"\u8FD0\u7B97"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u8FD0\u7B97\u5F15\u64CE",depth:3,title:"\u8FD0\u7B97\u5F15\u64CE"},{id:"\u8868\u8FBE\u5F0F",depth:3,title:"\u8868\u8FBE\u5F0F"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u8BA1\u7B97\u8BA2\u5355\u603B\u4EF7",depth:3,title:"\u8BA1\u7B97\u8BA2\u5355\u603B\u4EF7"}],v7=[{value:"\u8FD0\u7B97\u8282\u70B9\u867D\u7136\u4E0D\u5BF9\u6D41\u7A0B\u8FDB\u884C\u63A7\u5236\uFF0C\u4F46\u662F\u6D41\u7A0B\u4E2D\u4E00\u79CD\u91CD\u8981\u7684\u529F\u80FD\uFF0C\u8FD0\u7B97\u8282\u70B9\u53EF\u4EE5\u5BF9\u4E00\u4E2A\u8868\u8FBE\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u8FD0\u7B97\u7ED3\u679C\u4F1A\u4FDD\u5B58\u5728\u5BF9\u5E94\u8282\u70B9\u7684\u7ED3\u679C\u4E2D\uFF0C\u4EE5\u4F9B\u540E\u7EED\u5176\u4ED6\u8282\u70B9\u4F7F\u7528\u3002\u662F\u4E00\u79CD\u7528\u4E8E\u8BA1\u7B97\u3001\u5904\u7406\u548C\u8F6C\u6362\u6570\u636E\u7684\u5DE5\u5177\uFF0C\u4E00\u5B9A\u7A0B\u5EA6\u4E0A\uFF0C\u53EF\u4EE5\u4EE3\u66FF\u7F16\u7A0B\u8BED\u8A00\u4E2D\u5BF9\u4E00\u4E2A\u503C\u8BA1\u7B97\u51FD\u6570\u8C03\u7528\u5E76\u8D4B\u503C\u7ED9\u53D8\u91CF\u7684\u529F\u80FD\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u8FD0\u7B97\u201D\u8282\u70B9\uFF1A",paraId:1,tocIndex:1},{value:"\u8FD0\u7B97\u5F15\u64CE\u89C4\u5B9A\u4E86\u8868\u8FBE\u5F0F\u652F\u6301\u7684\u8BED\u6CD5\uFF0C\u76EE\u524D\u652F\u6301\u7684\u8FD0\u7B97\u5F15\u64CE\u6709 ",paraId:2,tocIndex:3},{value:"Math.js",paraId:2,tocIndex:3},{value:" \u548C ",paraId:2,tocIndex:3},{value:"Formula.js",paraId:2,tocIndex:3},{value:"\uFF0C\u5F15\u64CE\u5404\u81EA\u90FD\u5185\u7F6E\u4E86\u5927\u91CF\u7684\u5E38\u7528\u51FD\u6570\u548C\u6570\u636E\u64CD\u4F5C\u7684\u65B9\u6CD5\uFF0C\u5177\u4F53\u7684\u7528\u6CD5\u53EF\u4EE5\u53C2\u8003\u5176\u5B98\u65B9\u6587\u6863\u3002",paraId:2,tocIndex:3},{value:"\u9700\u8981\u6CE8\u610F\u7684\u662F\uFF0C\u4E24\u8005\u5728\u6570\u7EC4\u4E0B\u6807\u8BBF\u95EE\u4E0A\u6709\u6240\u533A\u522B\uFF0CMath.js \u7684\u7D22\u5F15\u662F\u4ECE ",paraId:3},{value:"1",paraId:3},{value:" \u5F00\u59CB\uFF0C\u800C Formula.js \u662F\u4ECE ",paraId:3},{value:"0",paraId:3},{value:" \u5F00\u59CB\u3002",paraId:3},{value:"\u53E6\u5916\u5982\u679C\u662F\u9700\u8981\u7B80\u5355\u7684\u5B57\u7B26\u4E32\u62FC\u63A5\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528\u201C\u5B57\u7B26\u4E32\u6A21\u677F\u201D\uFF0C\u8BE5\u5F15\u64CE\u4F1A\u5C06\u8868\u8FBE\u5F0F\u4E2D\u7684\u53D8\u91CF\u66FF\u6362\u4E3A\u5BF9\u5E94\u7684\u503C\uFF0C\u7136\u540E\u8FD4\u56DE\u62FC\u63A5\u540E\u7684\u5B57\u7B26\u4E32\u3002",paraId:4},{value:"\u8868\u8FBE\u5F0F\u5373\u4E00\u4E2A\u8FD0\u7B97\u516C\u5F0F\u7684\u5B57\u7B26\u4E32\u8868\u8FBE\uFF0C\u53EF\u4EE5\u7531\u53D8\u91CF\u3001\u5E38\u91CF\u3001\u8FD0\u7B97\u7B26\u548C\u652F\u6301\u7684\u51FD\u6570\u7B49\u7EC4\u6210\u3002\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4F8B\u5982\u8FD0\u7B97\u8282\u70B9\u7684\u524D\u7F6E\u8282\u70B9\u7684\u7ED3\u679C\uFF0C\u6216\u8005\u662F\u5FAA\u73AF\u7684\u5C40\u90E8\u53D8\u91CF\u7B49\u3002",paraId:5,tocIndex:4},{value:"\u8868\u8FBE\u5F0F\u8F93\u5165\u4E0D\u7B26\u5408\u8BED\u6CD5\u65F6\u4F1A\u5728\u8282\u70B9\u914D\u7F6E\u4E2D\u63D0\u793A\u9519\u8BEF\uFF0C\u5982\u679C\u5728\u5177\u4F53\u6267\u884C\u65F6\u53D8\u91CF\u4E0D\u5B58\u5728\u6216\u8005\u7C7B\u578B\u4E0D\u5339\u914D\uFF0C\u53C8\u6216\u8005\u4F7F\u7528\u4E86\u4E0D\u5B58\u5728\u7684\u51FD\u6570\uFF0C\u8FD0\u7B97\u8282\u70B9\u4F1A\u4EE5\u51FA\u9519\u7684\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\u3002",paraId:6,tocIndex:4},{value:"\u901A\u5E38\u4E00\u4E2A\u8BA2\u5355\u5185\u53EF\u80FD\u6709\u591A\u4E2A\u5546\u54C1\uFF0C\u6BCF\u4E2A\u5546\u54C1\u7684\u4EF7\u683C\u548C\u6570\u91CF\u90FD\u4E0D\u540C\uFF0C\u8BA2\u5355\u7684\u603B\u4EF7\u9700\u8981\u8BA1\u7B97\u6240\u6709\u5546\u54C1\u7684\u4EF7\u683C\u548C\u6570\u91CF\u7684\u4E58\u79EF\u4E4B\u548C\u3002\u53EF\u4EE5\u5728\u52A0\u8F7D\u8BA2\u5355\u660E\u7EC6\u5217\u8868\uFF08\u5BF9\u591A\u5173\u7CFB\u6570\u636E\u96C6\uFF09\u4E4B\u540E\u4F7F\u7528\u8FD0\u7B97\u8282\u70B9\u6765\u8BA1\u7B97\u8BA2\u5355\u7684\u603B\u4EF7\uFF1A",paraId:7,tocIndex:6},{value:"\u5176\u4E2D Formula.js \u7684 ",paraId:8,tocIndex:6},{value:"SUMPRODUCT",paraId:8,tocIndex:6},{value:" \u51FD\u6570\u53EF\u4EE5\u8BA1\u7B97\u4E24\u4E2A\u76F8\u540C\u957F\u5EA6\u6570\u7EC4\u6BCF\u884C\u7684\u4E58\u79EF\u4E4B\u548C\uFF0C\u52A0\u603B\u5C31\u53EF\u4EE5\u5F97\u5230\u8BA2\u5355\u7684\u603B\u4EF7\u3002",paraId:8,tocIndex:6}],m7={},h7={title:"\u5B9A\u65F6\u4EFB\u52A1",toc:"menu",filename:"docs/en-US/manual/workflow/triggers/schedule.md",lastUpdated:1732240239e3,description:"\u5B9A\u65F6\u4EFB\u52A1\u662F\u4EE5\u65F6\u95F4\u4E3A\u89E6\u53D1\u6761\u4EF6\u7684\u4E8B\u4EF6\uFF0C\u5206\u4E3A\u4E24\u79CD\u6A21\u5F0F\uFF1A"},f7=[{id:"\u5B9A\u65F6\u4EFB\u52A1",depth:1,title:"\u5B9A\u65F6\u4EFB\u52A1"},{id:"\u57FA\u672C\u4F7F\u7528",depth:2,title:"\u57FA\u672C\u4F7F\u7528"},{id:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F",depth:3,title:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F"},{id:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F",depth:3,title:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F"},{id:"\u76F8\u5173\u63D0\u793A",depth:2,title:"\u76F8\u5173\u63D0\u793A"},{id:"\u672A\u542F\u52A8\u6216\u505C\u673A\u72B6\u6001\u4E0B\u7684\u5B9A\u65F6\u4EFB\u52A1",depth:3,title:"\u672A\u542F\u52A8\u6216\u505C\u673A\u72B6\u6001\u4E0B\u7684\u5B9A\u65F6\u4EFB\u52A1"},{id:"\u91CD\u590D\u6B21\u6570",depth:3,title:"\u91CD\u590D\u6B21\u6570"},{id:"\u91CD\u590D\u89C4\u5219\u4E2D\u95F4\u9694\u65F6\u95F4\u4E0E\u9AD8\u7EA7\u6A21\u5F0F\u7684\u533A\u522B",depth:3,title:"\u91CD\u590D\u89C4\u5219\u4E2D\u95F4\u9694\u65F6\u95F4\u4E0E\u9AD8\u7EA7\u6A21\u5F0F\u7684\u533A\u522B"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F-1",depth:3,title:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F"},{id:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F-1",depth:3,title:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F"}],x7=[{value:"\u5B9A\u65F6\u4EFB\u52A1\u662F\u4EE5\u65F6\u95F4\u4E3A\u89E6\u53D1\u6761\u4EF6\u7684\u4E8B\u4EF6\uFF0C\u5206\u4E3A\u4E24\u79CD\u6A21\u5F0F\uFF1A",paraId:0,tocIndex:0},{value:"\u81EA\u5B9A\u4E49\u65F6\u95F4\uFF1A\u5E38\u89C4\u7C7B\u4F3C cron \u7684\u6309\u7CFB\u7EDF\u65F6\u95F4\u8BA1\u5212\u89E6\u53D1",paraId:1,tocIndex:0},{value:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\uFF1A\u6309\u6570\u636E\u8868\u4E2D\u65F6\u95F4\u5B57\u6BB5\u7684\u503C\u5230\u65F6\u89E6\u53D1",paraId:1,tocIndex:0},{value:"\u7CFB\u7EDF\u8FD0\u884C\u5230\u6EE1\u8DB3\u6240\u914D\u7F6E\u7684\u89E6\u53D1\u6761\u4EF6\u7684\u65F6\u95F4\u70B9\uFF08\u7CBE\u5EA6\u5230\u79D2\uFF09\u65F6\uFF0C\u4F1A\u89E6\u53D1\u76F8\u5E94\u7684\u5DE5\u4F5C\u6D41\u3002",paraId:2,tocIndex:0},{value:"\u9488\u5BF9\u5E38\u89C4\u7684\u6A21\u5F0F\uFF0C\u9996\u5148\u9700\u8981\u914D\u7F6E\u5F00\u59CB\u65F6\u95F4\u4E3A\u4EFB\u610F\u65F6\u95F4\u70B9\uFF08\u7CBE\u5EA6\u5230\u79D2\uFF09\u3002\u5F00\u59CB\u65F6\u95F4\u53EF\u4EE5\u914D\u7F6E\u4E3A\u672A\u6765\u7684\u65F6\u95F4\uFF0C\u4E5F\u53EF\u4EE5\u914D\u7F6E\u4E3A\u8FC7\u53BB\u7684\u65F6\u95F4\u3002\u5F53\u914D\u7F6E\u4E3A\u8FC7\u53BB\u7684\u65F6\u95F4\u65F6\uFF0C\u4F1A\u6839\u636E\u914D\u7F6E\u7684\u91CD\u590D\u6761\u4EF6\u68C0\u67E5\u662F\u5426\u5230\u65F6\uFF0C\u5982\u679C\u6CA1\u6709\u914D\u7F6E\u91CD\u590D\u6761\u4EF6\uFF0C\u5F00\u59CB\u65F6\u95F4\u5982\u679C\u662F\u8FC7\u53BB\u7684\u65F6\u95F4\uFF0C\u5219\u5DE5\u4F5C\u6D41\u4E0D\u518D\u4F1A\u88AB\u89E6\u53D1\u3002",paraId:3,tocIndex:2},{value:"\u91CD\u590D\u89C4\u5219\u6709\u4E24\u79CD\u914D\u7F6E\u65B9\u5F0F\uFF1A",paraId:4,tocIndex:2},{value:"\u6309\u95F4\u9694\u65F6\u95F4\uFF1A\u5F00\u59CB\u65F6\u95F4\u540E\u6BCF\u56FA\u5B9A\u95F4\u9694\u65F6\u95F4\u89E6\u53D1\uFF0C\u5982\u6BCF\u4E00\u5C0F\u65F6\uFF0C\u6BCF 30 \u5206\u949F\u7B49\u3002",paraId:5,tocIndex:2},{value:"\u9AD8\u7EA7\u6A21\u5F0F\uFF1A\u5373\u6309 cron \u89C4\u5219\uFF0C\u53EF\u914D\u7F6E\u4E3A\u5230\u8FBE\u56FA\u5B9A\u89C4\u5219\u65E5\u671F\u65F6\u95F4\u7684\u5468\u671F\u3002",paraId:5,tocIndex:2},{value:"\u914D\u7F6E\u4E86\u91CD\u590D\u89C4\u5219\u540E\uFF0C\u8FD8\u53EF\u4EE5\u914D\u7F6E\u7ED3\u675F\u6761\u4EF6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u56FA\u5B9A\u65F6\u95F4\u70B9\u7ED3\u675F\uFF0C\u4E5F\u53EF\u4EE5\u901A\u8FC7\u5DF2\u6267\u884C\u8FC7\u7684\u6B21\u6570\u9650\u5236\u3002",paraId:6,tocIndex:2},{value:"\u901A\u8FC7\u6570\u636E\u8868\u7684\u65F6\u95F4\u5B57\u6BB5\u6765\u786E\u5B9A\u5F00\u59CB\u65F6\u95F4\uFF0C\u662F\u4E00\u79CD\u5C06\u666E\u901A\u5B9A\u65F6\u4EFB\u52A1\u548C\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u7ED3\u5408\u7684\u89E6\u53D1\u6A21\u5F0F\uFF0C\u4F7F\u7528\u8FD9\u4E2A\u6A21\u5F0F\u53EF\u4EE5\u7B80\u5316\u4E00\u4E9B\u7279\u5B9A\u6D41\u7A0B\u7684\u4E2D\u7684\u8282\u70B9\uFF0C\u4ECE\u914D\u7F6E\u4E0A\u4E5F\u66F4\u52A0\u76F4\u89C2\u3002\u4F8B\u5982\uFF0C\u9700\u8981\u5C06\u8D85\u65F6\u672A\u652F\u4ED8\u7684\u8BA2\u5355\u4FEE\u6539\u4E3A\u5DF2\u53D6\u6D88\u7684\u72B6\u6001\uFF0C\u53EF\u4EE5\u4EC5\u914D\u7F6E\u4E00\u4E2A\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F\u7684\u5B9A\u65F6\u4EFB\u52A1\uFF0C\u9009\u62E9\u5F00\u59CB\u65F6\u95F4\u4E3A\u8BA2\u5355\u521B\u5EFA\u540E 30 \u5206\u949F\uFF0C",paraId:7,tocIndex:3},{value:"\u5982\u679C\u914D\u7F6E\u7684\u65F6\u95F4\u6761\u4EF6\u6EE1\u8DB3\u65F6\uFF0C\u4F46\u6574\u4E2A NocoBase \u5E94\u7528\u670D\u52A1\u5904\u5728\u672A\u542F\u52A8\u6216\u505C\u673A\u72B6\u6001\uFF0C\u5219\u5BF9\u5E94\u65F6\u95F4\u70B9\u5E94\u8BE5\u89E6\u53D1\u7684\u5B9A\u65F6\u4EFB\u52A1\u4F1A\u88AB\u9519\u8FC7\uFF0C\u4E14\u5728\u670D\u52A1\u91CD\u65B0\u542F\u52A8\u540E\uFF0C\u5DF2\u7ECF\u9519\u8FC7\u7684\u4EFB\u52A1\u4E0D\u4F1A\u518D\u88AB\u89E6\u53D1\u3002\u6240\u4EE5\u5728\u4F7F\u7528\u65F6\u53EF\u80FD\u9700\u8981\u8003\u8651\u5BF9\u5E94\u60C5\u51B5\u7684\u5904\u7406\uFF0C\u6216\u5019\u8865\u63AA\u65BD\u3002",paraId:8,tocIndex:5},{value:"\u914D\u7F6E\u4E86\u7ED3\u675F\u6761\u4EF6\u4E2D\u7684\u6309\u91CD\u590D\u6B21\u6570\u65F6\uFF0C\u8BA1\u7B97\u7684\u662F\u540C\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u6240\u6709\u7248\u672C\u6267\u884C\u8FC7\u7684\u603B\u6B21\u6570\uFF0C\u4F8B\u5982\u4E00\u4E2A\u5B9A\u65F6\u4EFB\u52A1\u5728\u7248\u672C 1 \u7684\u65F6\u5019\u6267\u884C\u8FC7 10 \u6B21\uFF0C\u5982\u679C\u91CD\u590D\u6B21\u6570\u4E5F\u8BBE\u7F6E\u4E86 10 \u6B21\uFF0C\u8BE5\u5DE5\u4F5C\u6D41\u5C06\u4E0D\u518D\u4F1A\u88AB\u89E6\u53D1\uFF0C\u5373\u4F7F\u590D\u5236\u5230\u65B0\u7248\u672C\uFF0C\u4E5F\u4E0D\u4F1A\u88AB\u89E6\u53D1\uFF0C\u9664\u975E\u5C06\u91CD\u590D\u6B21\u6570\u4FEE\u6539\u4E3A\u5927\u4E8E 10 \u7684\u6570\u5B57\u3002\u4F46\u5982\u679C\u662F\u590D\u5236\u4E3A\u65B0\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5DF2\u6267\u884C\u7684\u6B21\u6570\u5C06\u4F1A\u91CD\u65B0\u4ECE 0 \u5F00\u59CB\u8BA1\u7B97\uFF0C\u4E0D\u4FEE\u6539\u76F8\u5173\u914D\u7F6E\u7684\u60C5\u51B5\u4E0B\uFF0C\u65B0\u7684\u5DE5\u4F5C\u6D41\u5C06\u53EF\u4EE5\u518D\u88AB\u89E6\u53D1 10 \u6B21\u3002",paraId:9,tocIndex:6},{value:"\u91CD\u590D\u89C4\u5219\u4E2D\u7684\u95F4\u9694\u65F6\u95F4\u662F\u76F8\u5BF9\u4E8E\u4E0A\u4E00\u6B21\u89E6\u53D1\uFF08\u5F00\u59CB\u65F6\u95F4\uFF09\u7684\u65F6\u95F4\u70B9\uFF0C\u800C\u9AD8\u7EA7\u6A21\u5F0F\u662F\u6309\u56FA\u5B9A\u7684\u65F6\u95F4\u70B9\u89E6\u53D1\uFF0C\u4F8B\u5982\uFF0C\u914D\u7F6E\u4E86\u6BCF 30 \u5206\u949F\u89E6\u53D1\u4E00\u6B21\uFF0C\u5982\u679C\u4E0A\u4E00\u6B21\u89E6\u53D1\u662F 2021-09-01 12:01:23\uFF0C\u90A3\u4E48\u4E0B\u4E00\u6B21\u89E6\u53D1\u65F6\u95F4\u662F 2021-09-01 12:31:23\u3002\u800C\u9AD8\u7EA7\u6A21\u5F0F\u5373 cron \u6A21\u5F0F\uFF0C\u914D\u7F6E\u7684\u89C4\u5219\u5747\u4E3A\u56FA\u5B9A\u7684\u65F6\u95F4\u70B9\u89E6\u53D1\uFF0C\u4F8B\u5982\uFF0C\u53EF\u4EE5\u914D\u7F6E\u5728\u6BCF\u5C0F\u65F6\u7684 01 \u5206\u548C 31 \u5206\u89E6\u53D1\u3002",paraId:10,tocIndex:7},{value:"\u5047\u8BBE\u6BCF\u5206\u949F\u68C0\u67E5\u521B\u5EFA\u540E\u8D85\u8FC7 30 \u5206\u949F\u672A\u5B8C\u6210\u652F\u4ED8\u7684\u8BA2\u5355\uFF0C\u5E76\u81EA\u52A8\u4FEE\u6539\u4E3A\u5DF2\u53D6\u6D88\u72B6\u6001\u3002\u5206\u522B\u4F7F\u7528\u4E24\u79CD\u6A21\u5F0F\u6765\u5B9E\u73B0\u3002",paraId:11,tocIndex:8},{value:"\u521B\u5EFA\u4E00\u4E2A\u57FA\u4E8E\u5B9A\u65F6\u4EFB\u52A1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u89E6\u53D1\u5668\u914D\u7F6E\u4E2D\u9009\u62E9\u201C\u81EA\u5B9A\u4E49\u65F6\u95F4\u201D\u6A21\u5F0F\uFF0C\u5F00\u59CB\u65F6\u95F4\u9009\u62E9\u4EFB\u610F\u4E0D\u665A\u4E8E\u5F53\u524D\u65F6\u95F4\u7684\u65F6\u95F4\u70B9\uFF0C\u91CD\u590D\u89C4\u5219\u9009\u62E9\u201C\u6BCF\u5206\u949F\u201D\uFF0C\u7ED3\u675F\u6761\u4EF6\u7559\u7A7A\uFF1A",paraId:12,tocIndex:9},{value:` +`,paraId:67,tocIndex:16},{value:"If ",paraId:68,tocIndex:16},{value:"useVariables",paraId:68,tocIndex:16},{value:" is not set, it means that this node type does not provide a value-fetching function, and the result data of this node type cannot be selected in the flow. If the result value is singular (non-selectable), a static content that expresses the corresponding information can be returned (refer to the ",paraId:68,tocIndex:16},{value:"calculation node source code",paraId:68,tocIndex:16},{value:"). If selection is required (e.g., a property in an Object), a custom selection component output can be provided (refer to the ",paraId:68,tocIndex:16},{value:"Create Data Node source code",paraId:68,tocIndex:16},{value:").",paraId:68,tocIndex:16},{value:"Component",paraId:68,tocIndex:16},{value:": Custom rendering component for the node, used when the default node rendering is not sufficient, allowing for complete customization of the node view. For example, to provide more operation buttons or other interactive elements for the start node of a branch type, this method should be used (refer to the ",paraId:68,tocIndex:16},{value:"Parallel Branch source code",paraId:68,tocIndex:16},{value:").",paraId:68,tocIndex:16},{value:"useInitializers",paraId:68,tocIndex:16},{value:": Used to provide methods for initialization blocks, for example, in a manual node, it can initialize relevant user blocks based on the upstream node. If this method is provided, it will be available during the initialization block in the manual node configuration interface (refer to the ",paraId:68,tocIndex:16},{value:"Create Data Node source code",paraId:68,tocIndex:16},{value:").",paraId:68,tocIndex:16},{value:"isAvailable",paraId:68,tocIndex:16},{value:": Mainly used to determine whether the node can be used (added) in the current environment. The current environment includes the current workflow, upstream nodes, and the current branch index.",paraId:68,tocIndex:16}],N8={},z8={title:"Aggregate Query",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/aggregate.md",lastUpdated:173254844e4,description:"This plugin is designed to execute aggregate function queries on specific data within a table that meets defined conditions, returning the relevant statistical outcomes. It is particularly useful for generating statistical data for reports."},F8=[{id:"aggregate-query",depth:1,title:"Aggregate Query"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"aggregate-functions",depth:4,title:"Aggregate Functions"},{id:"target-type",depth:4,title:"Target Type"},{id:"distinct",depth:4,title:"Distinct"},{id:"filter-conditions",depth:4,title:"Filter Conditions"},{id:"example",depth:3,title:"Example"}],B8=[{value:"This plugin is designed to execute aggregate function queries on specific data within a table that meets defined conditions, returning the relevant statistical outcomes. It is particularly useful for generating statistical data for reports.",paraId:0},{value:"The node operates using database aggregate functions and currently supports querying a single field within a single data table. The resulting statistics are stored within the node\u2019s output, making them available for subsequent nodes in the workflow.",paraId:1},{value:"This is a built-in plugin, so no installation steps are required.",paraId:2,tocIndex:1},{value:'In the workflow configuration interface, click the plus ("+") button within the process flow to add an "Aggregate Query" node:',paraId:3,tocIndex:3},{value:"This plugin supports five SQL aggregate functions: ",paraId:4,tocIndex:5},{value:"COUNT",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"SUM",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"AVG",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"MIN",paraId:4,tocIndex:5},{value:", and ",paraId:4,tocIndex:5},{value:"MAX",paraId:4,tocIndex:5},{value:". You can select any one of these functions to perform the aggregate query on your data.",paraId:4,tocIndex:5},{value:"There are two methods for selecting the target of the aggregate query. The first is to directly select the target data table and one of its fields. The second is to choose a related data table and field from the existing data objects in the workflow context to perform the aggregate query.",paraId:5,tocIndex:6},{value:"This feature corresponds to the ",paraId:6,tocIndex:7},{value:"DISTINCT",paraId:6,tocIndex:7},{value:" keyword in SQL. The distinct field must be the same as the selected data table field, and currently, different fields cannot be selected for the distinct and target fields.",paraId:6,tocIndex:7},{value:"You can apply filter conditions similar to those in a standard data table query, using the workflow\u2019s context variables.",paraId:7,tocIndex:8},{value:`The aggregate target "Collection Table Data" is quite intuitive, so let's illustrate the usage of the aggregate target as "Related Collection Table Data" with the example of "counting the total number of articles in a category after adding a new article to that category."`,paraId:8,tocIndex:9},{value:'First, create two data tables: "Posts" and "Categories." The "Posts" collection includes a many-to-one relationship field pointing to the "Categories" collection, and a reverse relationship field that allows one category to contain multiple articles:',paraId:9,tocIndex:9},{value:"Field Name",paraId:10,tocIndex:9},{value:"Type",paraId:10,tocIndex:9},{value:"Title",paraId:10,tocIndex:9},{value:"Single Line Text",paraId:10,tocIndex:9},{value:"Category",paraId:10,tocIndex:9},{value:"Many-to-One (Category)",paraId:10,tocIndex:9},{value:"Field Name",paraId:11,tocIndex:9},{value:"Type",paraId:11,tocIndex:9},{value:"Category Name",paraId:11,tocIndex:9},{value:"Single Line Text",paraId:11,tocIndex:9},{value:"Posts",paraId:11,tocIndex:9},{value:"One-to-Many (Articles)",paraId:11,tocIndex:9},{value:'Next, create a workflow triggered by an event in the data table, specifically when new data is added to the "Articles" table.',paraId:12,tocIndex:9},{value:"Then, add an aggregate query node with the following configuration:",paraId:13,tocIndex:9},{value:"Once the workflow is triggered, the aggregate query node will calculate the total number of articles within the category of the newly added article and save this count as the node\u2019s output.",paraId:14,tocIndex:9},{value:'If you need to access related data in a collection table event trigger, ensure you configure the relevant fields for "Preload associations" in the trigger; otherwise, these fields won\u2019t be selectable.',paraId:15}],j8={},H8={title:"Condition",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/condition.md",lastUpdated:173254844e4,description:"Similar to the if statement in programming languages, the condition node determines the direction of the subsequent flow based on the result of the configured condition."},W8=[{id:"condition",depth:1,title:"Condition"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"calculation-engine",depth:3,title:"Calculation Engine"}],$8=[{value:"Similar to the ",paraId:0,tocIndex:0},{value:"if",paraId:0,tocIndex:0},{value:" statement in programming languages, the condition node determines the direction of the subsequent flow based on the result of the configured condition.",paraId:0,tocIndex:0},{value:`There are two modes for condition: "Continue if 'true'" and "Continue if 'true' or 'false'". When creating the node, you need to choose one of these modes, and it cannot be changed in the node's configuration afterward.`,paraId:1,tocIndex:1},{value:`In the "Continue if 'true'" mode, when the result of the condition judgment is "true", workflow will continue to execute the subsequent nodes; otherwise, the flow will terminate and exit prematurely with a failed status.`,paraId:2,tocIndex:1},{value:'This mode is suitable for scenarios where the flow should not continue if the condition is not met. For example, when configuring a form button to submit an order which bound with a "Pre-action event", if there is insufficient stock for the items in the order, the process should not continue to generate the order but instead fail and exit.',paraId:3,tocIndex:1},{value:`In the "Continue if 'true' or 'false'" mode, the condition node will produce two branches of the flow, corresponding to the scenarios where the condition judgment results are "true" and "false". Each branch can have subsequent nodes configured separately. After either branch completes execution, it will automatically return back to the parent branch where the condition node is located and continue executing the subsequent nodes.`,paraId:4,tocIndex:1},{value:"This mode is suitable for scenarios where different operations need to be performed depending on whether the condition is met or not. For example, checking if a piece of data exists, and if it doesn't, inserting it; if it does, updating it.",paraId:5,tocIndex:1},{value:"Currently, three engines are supported:",paraId:6,tocIndex:3},{value:"Basic",paraId:7,tocIndex:3},{value:': Obtains logical results through simple binary calculations and grouping with "AND" and "OR".',paraId:7,tocIndex:3},{value:"Math.js",paraId:7,tocIndex:3},{value:": Computes logical results from expressions supported by the ",paraId:7,tocIndex:3},{value:"Math.js",paraId:7,tocIndex:3},{value:" engine.",paraId:7,tocIndex:3},{value:"Formula.js",paraId:7,tocIndex:3},{value:": Computes logical results from expressions supported by the ",paraId:7,tocIndex:3},{value:"Formula.js",paraId:7,tocIndex:3},{value:" engine.",paraId:7,tocIndex:3},{value:"All three calculations can use variables from the workflow context as operands for computation.",paraId:8,tocIndex:3}],G8={},V8={title:"Aggregate",toc:"menu",filename:"docs/en-US/handbook/workflow-aggregate/index.md",lastUpdated:173254844e4,description:"This plugin is designed to execute aggregate function queries on specific data within a table that meets defined conditions, returning the relevant statistical outcomes. It is particularly useful for generating statistical data for reports."},K8=[{id:"aggregate",depth:1,title:"Aggregate"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"aggregate-functions",depth:4,title:"Aggregate Functions"},{id:"target-type",depth:4,title:"Target Type"},{id:"distinct",depth:4,title:"Distinct"},{id:"filter-conditions",depth:4,title:"Filter Conditions"},{id:"example",depth:3,title:"Example"}],Z8=[{value:"This plugin is designed to execute aggregate function queries on specific data within a table that meets defined conditions, returning the relevant statistical outcomes. It is particularly useful for generating statistical data for reports.",paraId:0},{value:"The node operates using database aggregate functions and currently supports querying a single field within a single data table. The resulting statistics are stored within the node\u2019s output, making them available for subsequent nodes in the workflow.",paraId:1},{value:"This is a built-in plugin, so no installation steps are required.",paraId:2,tocIndex:1},{value:'In the workflow configuration interface, click the plus ("+") button within the process flow to add an "Aggregate Query" node:',paraId:3,tocIndex:3},{value:"This plugin supports five SQL aggregate functions: ",paraId:4,tocIndex:5},{value:"COUNT",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"SUM",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"AVG",paraId:4,tocIndex:5},{value:", ",paraId:4,tocIndex:5},{value:"MIN",paraId:4,tocIndex:5},{value:", and ",paraId:4,tocIndex:5},{value:"MAX",paraId:4,tocIndex:5},{value:". You can select any one of these functions to perform the aggregate query on your data.",paraId:4,tocIndex:5},{value:"There are two methods for selecting the target of the aggregate query. The first is to directly select the target data table and one of its fields. The second is to choose a related data table and field from the existing data objects in the workflow context to perform the aggregate query.",paraId:5,tocIndex:6},{value:"This feature corresponds to the ",paraId:6,tocIndex:7},{value:"DISTINCT",paraId:6,tocIndex:7},{value:" keyword in SQL. The distinct field must be the same as the selected data table field, and currently, different fields cannot be selected for the distinct and target fields.",paraId:6,tocIndex:7},{value:"You can apply filter conditions similar to those in a standard data table query, using the workflow\u2019s context variables.",paraId:7,tocIndex:8},{value:`The aggregate target "Collection Table Data" is quite intuitive, so let's illustrate the usage of the aggregate target as "Related Collection Table Data" with the example of "counting the total number of articles in a category after adding a new article to that category."`,paraId:8,tocIndex:9},{value:'First, create two data tables: "Posts" and "Categories." The "Posts" collection includes a many-to-one relationship field pointing to the "Categories" collection, and a reverse relationship field that allows one category to contain multiple articles:',paraId:9,tocIndex:9},{value:"Field Name",paraId:10,tocIndex:9},{value:"Type",paraId:10,tocIndex:9},{value:"Title",paraId:10,tocIndex:9},{value:"Single Line Text",paraId:10,tocIndex:9},{value:"Category",paraId:10,tocIndex:9},{value:"Many-to-One (Category)",paraId:10,tocIndex:9},{value:"Field Name",paraId:11,tocIndex:9},{value:"Type",paraId:11,tocIndex:9},{value:"Category Name",paraId:11,tocIndex:9},{value:"Single Line Text",paraId:11,tocIndex:9},{value:"Posts",paraId:11,tocIndex:9},{value:"One-to-Many (Articles)",paraId:11,tocIndex:9},{value:'Next, create a workflow triggered by an event in the data table, specifically when new data is added to the "Articles" table.',paraId:12,tocIndex:9},{value:"Then, add an aggregate query node with the following configuration:",paraId:13,tocIndex:9},{value:"Once the workflow is triggered, the aggregate query node will calculate the total number of articles within the category of the newly added article and save this count as the node\u2019s output.",paraId:14,tocIndex:9},{value:'If you need to access related data in a collection table event trigger, ensure you configure the relevant fields for "Preload associations" in the trigger; otherwise, these fields won\u2019t be selectable.',paraId:15}],Y8={},Q8={title:"Initiate Approval Configuration",toc:"menu",filename:"docs/en-US/handbook/workflow-approval/action.md",lastUpdated:173254844e4,description:"After configuring and activating an approval workflow, you can link it to the submit button of the relevant data table form. This setup allows users to automatically initiate the approval process when they submit the form:"},J8=[{id:"initiate-approval-configuration",depth:1,title:"Initiate Approval Configuration"}],X8=[{value:"After configuring and activating an approval workflow, you can link it to the submit button of the relevant data table form. This setup allows users to automatically initiate the approval process when they submit the form:",paraId:0,tocIndex:0},{value:"Once the workflow is linked, users will trigger the approval process upon submitting the form.",paraId:1,tocIndex:0},{value:'The approval initiation button currently only supports the "Submit" (or "Save") button in "Add" or "Update" forms. It does not support the "Submit to Workflow" button (which can only be linked to "Post-action event").',paraId:2}],e7={},a7={title:"\u9AD8\u7EA7\u7C7B\u578B",toc:"menu",filename:"docs/en-US/manual/collection/fields/advanced.md",lastUpdated:173254844e4},t7=[{id:"\u9AD8\u7EA7\u7C7B\u578B",depth:1,title:"\u9AD8\u7EA7\u7C7B\u578B"}],n7=[{value:"Formula",paraId:0,tocIndex:0},{value:"Sequence",paraId:0,tocIndex:0},{value:"JSON",paraId:0,tocIndex:0},{value:"Collection",paraId:0,tocIndex:0}],o7={},r7={title:"\u5173\u7CFB\u7C7B\u578B",toc:"menu",filename:"docs/en-US/manual/collection/fields/relation.md",lastUpdated:173254844e4,description:"\u7528\u4E8E\u5EFA\u7ACB\u5404\u79CD\u5173\u8054\u5173\u7CFB"},d7=[{id:"\u5173\u7CFB\u7C7B\u578B",depth:1,title:"\u5173\u7CFB\u7C7B\u578B"}],i7=[{value:"\u7528\u4E8E\u5EFA\u7ACB\u5404\u79CD\u5173\u8054\u5173\u7CFB",paraId:0,tocIndex:0},{value:"One to one (belongs to)",paraId:1,tocIndex:0},{value:"One to one (has one)",paraId:1,tocIndex:0},{value:"One to many",paraId:1,tocIndex:0},{value:"Many to one",paraId:1,tocIndex:0},{value:"Many to many",paraId:1,tocIndex:0}],l7={},c7={title:"\u754C\u9762\u914D\u7F6E\u6A21\u5F0F",toc:"menu",filename:"docs/en-US/manual/quick-start/ui-editor-mode.md",lastUpdated:173254844e4,description:"NocoBase \u91C7\u7528\u6240\u89C1\u5373\u6240\u5F97\u7684\u65B9\u5F0F\u6765\u914D\u7F6E\u754C\u9762\u3002\u70B9\u51FB\u53F3\u4E0A\u89D2\u7684UI Editor\u6309\u94AE\uFF0C\u5373\u53EF\u5207\u6362\u914D\u7F6E\u6A21\u5F0F\u548C\u4F7F\u7528\u6A21\u5F0F\u3002\u8FDB\u5165\u914D\u7F6E\u6A21\u5F0F\u4E4B\u540E\uFF0C\u754C\u9762\u4E0A\u5404\u5904\u5C06\u4F1A\u51FA\u73B0\u6A59\u8272\u7684\u914D\u7F6E\u5165\u53E3\u3002"},s7=[{id:"\u754C\u9762\u914D\u7F6E\u6A21\u5F0F",depth:1,title:"\u754C\u9762\u914D\u7F6E\u6A21\u5F0F"},{id:"\u83DC\u5355\u9879\u914D\u7F6E",depth:2,title:"\u83DC\u5355\u9879\u914D\u7F6E"},{id:"\u533A\u5757\u914D\u7F6E",depth:2,title:"\u533A\u5757\u914D\u7F6E"},{id:"\u64CD\u4F5C\u914D\u7F6E",depth:2,title:"\u64CD\u4F5C\u914D\u7F6E"},{id:"\u6807\u7B7E\u9875\u914D\u7F6E",depth:2,title:"\u6807\u7B7E\u9875\u914D\u7F6E"}],u7=[{value:"NocoBase \u91C7\u7528\u6240\u89C1\u5373\u6240\u5F97\u7684\u65B9\u5F0F\u6765\u914D\u7F6E\u754C\u9762\u3002\u70B9\u51FB\u53F3\u4E0A\u89D2\u7684",paraId:0,tocIndex:0},{value:"UI Editor",paraId:0,tocIndex:0},{value:"\u6309\u94AE\uFF0C\u5373\u53EF\u5207\u6362\u914D\u7F6E\u6A21\u5F0F\u548C\u4F7F\u7528\u6A21\u5F0F\u3002\u8FDB\u5165\u914D\u7F6E\u6A21\u5F0F\u4E4B\u540E\uFF0C\u754C\u9762\u4E0A\u5404\u5904\u5C06\u4F1A\u51FA\u73B0\u6A59\u8272\u7684\u914D\u7F6E\u5165\u53E3\u3002",paraId:0,tocIndex:0},{value:"\u901A\u5E38\uFF0C\u914D\u7F6E\u9879\u5165\u53E3\u4F1A\u51FA\u73B0\u5728\u5143\u7D20\u7684\u53F3\u4E0A\u89D2\u3002",paraId:1,tocIndex:0},{value:"\u5C06\u9F20\u6807\u79FB\u5230\u83DC\u5355\u9879\u4E0A\uFF0C\u5728\u53F3\u4E0A\u89D2\u5373\u53EF\u4EE5\u770B\u5230\u62D6\u62FD\u6392\u5E8F\u6309\u94AE\u3001\u914D\u7F6E\u9879\u6309\u94AE\uFF0C\u53EF\u4EE5\u7F16\u8F91\u3001\u79FB\u52A8\u3001\u63D2\u5165\u3001\u5220\u9664\u3002",paraId:2,tocIndex:1},{value:"\u5C06\u9F20\u6807\u79FB\u5230\u4E00\u4E2A\u533A\u5757\u4E0A\uFF0C\u5728\u53F3\u4E0A\u89D2\u5373\u53EF\u4EE5\u770B\u5230\u62D6\u62FD\u6392\u5E8F\u6309\u94AE\u3001\u65B0\u589E\u533A\u5757\u6309\u94AE\u3001\u914D\u7F6E\u9879\u6309\u94AE\u3002",paraId:3,tocIndex:2},{value:"\u4E0D\u540C\u7684\u533A\u5757\u8FD8\u4F1A\u6709\u4E00\u4E9B\u81EA\u5DF1\u72EC\u6709\u7684\u914D\u7F6E\u9879\u3002\u6BD4\u5982\u8868\u683C\u533A\u5757\uFF0C\u5C06\u9F20\u6807\u79FB\u5230\u8868\u5934\u4E0A\u5373\u53EF\u4EE5\u5728\u53F3\u4E0A\u89D2\u770B\u5230\u8868\u5934\u7684\u914D\u7F6E\u9879\uFF1B\u5728\u8868\u5934\u6700\u53F3\u4FA7\u8FD8\u53EF\u4EE5\u770B\u5230\u8868\u683C\u5217\u7684\u914D\u7F6E\u9879\u3002",paraId:4,tocIndex:2},{value:"\u5728\u533A\u5757\u4E2D\u53EF\u4EE5\u770B\u5230\u64CD\u4F5C\u7684\u914D\u7F6E\u5165\u53E3\uFF0C\u8FD9\u4E9B\u5165\u53E3\u5728\u4E0D\u540C\u7684\u533A\u5757\u91CC\u4F1A\u51FA\u73B0\u5728\u4E0D\u540C\u7684\u4F4D\u7F6E\u3002",paraId:5,tocIndex:3},{value:"\u6BD4\u5982\u8868\u683C\u533A\u5757\uFF0C\u5728\u53F3\u4E0A\u65B9\u53EF\u4EE5\u770B\u5230\u9488\u5BF9\u8868\u683C\u6570\u636E\u7684\u64CD\u4F5C\uFF1A",paraId:6,tocIndex:3},{value:"\u5728\u64CD\u4F5C\u5217\u7684\u8868\u5934\u91CC\u53EF\u4EE5\u770B\u5230\u9488\u5BF9\u5355\u884C\u6570\u636E\u7684\u64CD\u4F5C\uFF1A",paraId:7,tocIndex:3},{value:"\u5728\u8BE6\u60C5\u533A\u5757\u7684\u53F3\u4E0A\u89D2\u53EF\u4EE5\u770B\u5230\u9488\u5BF9\u8BE6\u60C5\u7684\u64CD\u4F5C\uFF1A",paraId:8,tocIndex:3},{value:"\u5728\u8868\u5355\u533A\u5757\u5E95\u90E8\u53EF\u4EE5\u770B\u5230\u9488\u5BF9\u8868\u5355\u7684\u64CD\u4F5C\uFF1A",paraId:9,tocIndex:3},{value:"\u5728\u5F39\u7A97\u6216\u62BD\u5C49\u91CC\uFF0C\u53EF\u4EE5\u6DFB\u52A0\u591A\u4E2A\u6807\u7B7E\u9875\uFF0C\u7528\u4E8E\u627F\u8F7D\u4E0D\u540C\u7684\u533A\u5757\u3002",paraId:10,tocIndex:4}],p7={},I7={title:"\u8FD0\u7B97",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/calculation.md",lastUpdated:173254844e4,description:"\u8FD0\u7B97\u8282\u70B9\u867D\u7136\u4E0D\u5BF9\u6D41\u7A0B\u8FDB\u884C\u63A7\u5236\uFF0C\u4F46\u662F\u6D41\u7A0B\u4E2D\u4E00\u79CD\u91CD\u8981\u7684\u529F\u80FD\uFF0C\u8FD0\u7B97\u8282\u70B9\u53EF\u4EE5\u5BF9\u4E00\u4E2A\u8868\u8FBE\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u8FD0\u7B97\u7ED3\u679C\u4F1A\u4FDD\u5B58\u5728\u5BF9\u5E94\u8282\u70B9\u7684\u7ED3\u679C\u4E2D\uFF0C\u4EE5\u4F9B\u540E\u7EED\u5176\u4ED6\u8282\u70B9\u4F7F\u7528\u3002\u662F\u4E00\u79CD\u7528\u4E8E\u8BA1\u7B97\u3001\u5904\u7406\u548C\u8F6C\u6362\u6570\u636E\u7684\u5DE5\u5177\uFF0C\u4E00\u5B9A\u7A0B\u5EA6\u4E0A\uFF0C\u53EF\u4EE5\u4EE3\u66FF\u7F16\u7A0B\u8BED\u8A00\u4E2D\u5BF9\u4E00\u4E2A\u503C\u8BA1\u7B97\u51FD\u6570\u8C03\u7528\u5E76\u8D4B\u503C\u7ED9\u53D8\u91CF\u7684\u529F\u80FD\u3002"},_7=[{id:"\u8FD0\u7B97",depth:1,title:"\u8FD0\u7B97"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u8FD0\u7B97\u5F15\u64CE",depth:3,title:"\u8FD0\u7B97\u5F15\u64CE"},{id:"\u8868\u8FBE\u5F0F",depth:3,title:"\u8868\u8FBE\u5F0F"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u8BA1\u7B97\u8BA2\u5355\u603B\u4EF7",depth:3,title:"\u8BA1\u7B97\u8BA2\u5355\u603B\u4EF7"}],v7=[{value:"\u8FD0\u7B97\u8282\u70B9\u867D\u7136\u4E0D\u5BF9\u6D41\u7A0B\u8FDB\u884C\u63A7\u5236\uFF0C\u4F46\u662F\u6D41\u7A0B\u4E2D\u4E00\u79CD\u91CD\u8981\u7684\u529F\u80FD\uFF0C\u8FD0\u7B97\u8282\u70B9\u53EF\u4EE5\u5BF9\u4E00\u4E2A\u8868\u8FBE\u5F0F\u8FDB\u884C\u8BA1\u7B97\uFF0C\u8FD0\u7B97\u7ED3\u679C\u4F1A\u4FDD\u5B58\u5728\u5BF9\u5E94\u8282\u70B9\u7684\u7ED3\u679C\u4E2D\uFF0C\u4EE5\u4F9B\u540E\u7EED\u5176\u4ED6\u8282\u70B9\u4F7F\u7528\u3002\u662F\u4E00\u79CD\u7528\u4E8E\u8BA1\u7B97\u3001\u5904\u7406\u548C\u8F6C\u6362\u6570\u636E\u7684\u5DE5\u5177\uFF0C\u4E00\u5B9A\u7A0B\u5EA6\u4E0A\uFF0C\u53EF\u4EE5\u4EE3\u66FF\u7F16\u7A0B\u8BED\u8A00\u4E2D\u5BF9\u4E00\u4E2A\u503C\u8BA1\u7B97\u51FD\u6570\u8C03\u7528\u5E76\u8D4B\u503C\u7ED9\u53D8\u91CF\u7684\u529F\u80FD\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u8FD0\u7B97\u201D\u8282\u70B9\uFF1A",paraId:1,tocIndex:1},{value:"\u8FD0\u7B97\u5F15\u64CE\u89C4\u5B9A\u4E86\u8868\u8FBE\u5F0F\u652F\u6301\u7684\u8BED\u6CD5\uFF0C\u76EE\u524D\u652F\u6301\u7684\u8FD0\u7B97\u5F15\u64CE\u6709 ",paraId:2,tocIndex:3},{value:"Math.js",paraId:2,tocIndex:3},{value:" \u548C ",paraId:2,tocIndex:3},{value:"Formula.js",paraId:2,tocIndex:3},{value:"\uFF0C\u5F15\u64CE\u5404\u81EA\u90FD\u5185\u7F6E\u4E86\u5927\u91CF\u7684\u5E38\u7528\u51FD\u6570\u548C\u6570\u636E\u64CD\u4F5C\u7684\u65B9\u6CD5\uFF0C\u5177\u4F53\u7684\u7528\u6CD5\u53EF\u4EE5\u53C2\u8003\u5176\u5B98\u65B9\u6587\u6863\u3002",paraId:2,tocIndex:3},{value:"\u9700\u8981\u6CE8\u610F\u7684\u662F\uFF0C\u4E24\u8005\u5728\u6570\u7EC4\u4E0B\u6807\u8BBF\u95EE\u4E0A\u6709\u6240\u533A\u522B\uFF0CMath.js \u7684\u7D22\u5F15\u662F\u4ECE ",paraId:3},{value:"1",paraId:3},{value:" \u5F00\u59CB\uFF0C\u800C Formula.js \u662F\u4ECE ",paraId:3},{value:"0",paraId:3},{value:" \u5F00\u59CB\u3002",paraId:3},{value:"\u53E6\u5916\u5982\u679C\u662F\u9700\u8981\u7B80\u5355\u7684\u5B57\u7B26\u4E32\u62FC\u63A5\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528\u201C\u5B57\u7B26\u4E32\u6A21\u677F\u201D\uFF0C\u8BE5\u5F15\u64CE\u4F1A\u5C06\u8868\u8FBE\u5F0F\u4E2D\u7684\u53D8\u91CF\u66FF\u6362\u4E3A\u5BF9\u5E94\u7684\u503C\uFF0C\u7136\u540E\u8FD4\u56DE\u62FC\u63A5\u540E\u7684\u5B57\u7B26\u4E32\u3002",paraId:4},{value:"\u8868\u8FBE\u5F0F\u5373\u4E00\u4E2A\u8FD0\u7B97\u516C\u5F0F\u7684\u5B57\u7B26\u4E32\u8868\u8FBE\uFF0C\u53EF\u4EE5\u7531\u53D8\u91CF\u3001\u5E38\u91CF\u3001\u8FD0\u7B97\u7B26\u548C\u652F\u6301\u7684\u51FD\u6570\u7B49\u7EC4\u6210\u3002\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4F8B\u5982\u8FD0\u7B97\u8282\u70B9\u7684\u524D\u7F6E\u8282\u70B9\u7684\u7ED3\u679C\uFF0C\u6216\u8005\u662F\u5FAA\u73AF\u7684\u5C40\u90E8\u53D8\u91CF\u7B49\u3002",paraId:5,tocIndex:4},{value:"\u8868\u8FBE\u5F0F\u8F93\u5165\u4E0D\u7B26\u5408\u8BED\u6CD5\u65F6\u4F1A\u5728\u8282\u70B9\u914D\u7F6E\u4E2D\u63D0\u793A\u9519\u8BEF\uFF0C\u5982\u679C\u5728\u5177\u4F53\u6267\u884C\u65F6\u53D8\u91CF\u4E0D\u5B58\u5728\u6216\u8005\u7C7B\u578B\u4E0D\u5339\u914D\uFF0C\u53C8\u6216\u8005\u4F7F\u7528\u4E86\u4E0D\u5B58\u5728\u7684\u51FD\u6570\uFF0C\u8FD0\u7B97\u8282\u70B9\u4F1A\u4EE5\u51FA\u9519\u7684\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\u3002",paraId:6,tocIndex:4},{value:"\u901A\u5E38\u4E00\u4E2A\u8BA2\u5355\u5185\u53EF\u80FD\u6709\u591A\u4E2A\u5546\u54C1\uFF0C\u6BCF\u4E2A\u5546\u54C1\u7684\u4EF7\u683C\u548C\u6570\u91CF\u90FD\u4E0D\u540C\uFF0C\u8BA2\u5355\u7684\u603B\u4EF7\u9700\u8981\u8BA1\u7B97\u6240\u6709\u5546\u54C1\u7684\u4EF7\u683C\u548C\u6570\u91CF\u7684\u4E58\u79EF\u4E4B\u548C\u3002\u53EF\u4EE5\u5728\u52A0\u8F7D\u8BA2\u5355\u660E\u7EC6\u5217\u8868\uFF08\u5BF9\u591A\u5173\u7CFB\u6570\u636E\u96C6\uFF09\u4E4B\u540E\u4F7F\u7528\u8FD0\u7B97\u8282\u70B9\u6765\u8BA1\u7B97\u8BA2\u5355\u7684\u603B\u4EF7\uFF1A",paraId:7,tocIndex:6},{value:"\u5176\u4E2D Formula.js \u7684 ",paraId:8,tocIndex:6},{value:"SUMPRODUCT",paraId:8,tocIndex:6},{value:" \u51FD\u6570\u53EF\u4EE5\u8BA1\u7B97\u4E24\u4E2A\u76F8\u540C\u957F\u5EA6\u6570\u7EC4\u6BCF\u884C\u7684\u4E58\u79EF\u4E4B\u548C\uFF0C\u52A0\u603B\u5C31\u53EF\u4EE5\u5F97\u5230\u8BA2\u5355\u7684\u603B\u4EF7\u3002",paraId:8,tocIndex:6}],m7={},h7={title:"\u5B9A\u65F6\u4EFB\u52A1",toc:"menu",filename:"docs/en-US/manual/workflow/triggers/schedule.md",lastUpdated:173254844e4,description:"\u5B9A\u65F6\u4EFB\u52A1\u662F\u4EE5\u65F6\u95F4\u4E3A\u89E6\u53D1\u6761\u4EF6\u7684\u4E8B\u4EF6\uFF0C\u5206\u4E3A\u4E24\u79CD\u6A21\u5F0F\uFF1A"},f7=[{id:"\u5B9A\u65F6\u4EFB\u52A1",depth:1,title:"\u5B9A\u65F6\u4EFB\u52A1"},{id:"\u57FA\u672C\u4F7F\u7528",depth:2,title:"\u57FA\u672C\u4F7F\u7528"},{id:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F",depth:3,title:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F"},{id:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F",depth:3,title:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F"},{id:"\u76F8\u5173\u63D0\u793A",depth:2,title:"\u76F8\u5173\u63D0\u793A"},{id:"\u672A\u542F\u52A8\u6216\u505C\u673A\u72B6\u6001\u4E0B\u7684\u5B9A\u65F6\u4EFB\u52A1",depth:3,title:"\u672A\u542F\u52A8\u6216\u505C\u673A\u72B6\u6001\u4E0B\u7684\u5B9A\u65F6\u4EFB\u52A1"},{id:"\u91CD\u590D\u6B21\u6570",depth:3,title:"\u91CD\u590D\u6B21\u6570"},{id:"\u91CD\u590D\u89C4\u5219\u4E2D\u95F4\u9694\u65F6\u95F4\u4E0E\u9AD8\u7EA7\u6A21\u5F0F\u7684\u533A\u522B",depth:3,title:"\u91CD\u590D\u89C4\u5219\u4E2D\u95F4\u9694\u65F6\u95F4\u4E0E\u9AD8\u7EA7\u6A21\u5F0F\u7684\u533A\u522B"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F-1",depth:3,title:"\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F"},{id:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F-1",depth:3,title:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F"}],x7=[{value:"\u5B9A\u65F6\u4EFB\u52A1\u662F\u4EE5\u65F6\u95F4\u4E3A\u89E6\u53D1\u6761\u4EF6\u7684\u4E8B\u4EF6\uFF0C\u5206\u4E3A\u4E24\u79CD\u6A21\u5F0F\uFF1A",paraId:0,tocIndex:0},{value:"\u81EA\u5B9A\u4E49\u65F6\u95F4\uFF1A\u5E38\u89C4\u7C7B\u4F3C cron \u7684\u6309\u7CFB\u7EDF\u65F6\u95F4\u8BA1\u5212\u89E6\u53D1",paraId:1,tocIndex:0},{value:"\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\uFF1A\u6309\u6570\u636E\u8868\u4E2D\u65F6\u95F4\u5B57\u6BB5\u7684\u503C\u5230\u65F6\u89E6\u53D1",paraId:1,tocIndex:0},{value:"\u7CFB\u7EDF\u8FD0\u884C\u5230\u6EE1\u8DB3\u6240\u914D\u7F6E\u7684\u89E6\u53D1\u6761\u4EF6\u7684\u65F6\u95F4\u70B9\uFF08\u7CBE\u5EA6\u5230\u79D2\uFF09\u65F6\uFF0C\u4F1A\u89E6\u53D1\u76F8\u5E94\u7684\u5DE5\u4F5C\u6D41\u3002",paraId:2,tocIndex:0},{value:"\u9488\u5BF9\u5E38\u89C4\u7684\u6A21\u5F0F\uFF0C\u9996\u5148\u9700\u8981\u914D\u7F6E\u5F00\u59CB\u65F6\u95F4\u4E3A\u4EFB\u610F\u65F6\u95F4\u70B9\uFF08\u7CBE\u5EA6\u5230\u79D2\uFF09\u3002\u5F00\u59CB\u65F6\u95F4\u53EF\u4EE5\u914D\u7F6E\u4E3A\u672A\u6765\u7684\u65F6\u95F4\uFF0C\u4E5F\u53EF\u4EE5\u914D\u7F6E\u4E3A\u8FC7\u53BB\u7684\u65F6\u95F4\u3002\u5F53\u914D\u7F6E\u4E3A\u8FC7\u53BB\u7684\u65F6\u95F4\u65F6\uFF0C\u4F1A\u6839\u636E\u914D\u7F6E\u7684\u91CD\u590D\u6761\u4EF6\u68C0\u67E5\u662F\u5426\u5230\u65F6\uFF0C\u5982\u679C\u6CA1\u6709\u914D\u7F6E\u91CD\u590D\u6761\u4EF6\uFF0C\u5F00\u59CB\u65F6\u95F4\u5982\u679C\u662F\u8FC7\u53BB\u7684\u65F6\u95F4\uFF0C\u5219\u5DE5\u4F5C\u6D41\u4E0D\u518D\u4F1A\u88AB\u89E6\u53D1\u3002",paraId:3,tocIndex:2},{value:"\u91CD\u590D\u89C4\u5219\u6709\u4E24\u79CD\u914D\u7F6E\u65B9\u5F0F\uFF1A",paraId:4,tocIndex:2},{value:"\u6309\u95F4\u9694\u65F6\u95F4\uFF1A\u5F00\u59CB\u65F6\u95F4\u540E\u6BCF\u56FA\u5B9A\u95F4\u9694\u65F6\u95F4\u89E6\u53D1\uFF0C\u5982\u6BCF\u4E00\u5C0F\u65F6\uFF0C\u6BCF 30 \u5206\u949F\u7B49\u3002",paraId:5,tocIndex:2},{value:"\u9AD8\u7EA7\u6A21\u5F0F\uFF1A\u5373\u6309 cron \u89C4\u5219\uFF0C\u53EF\u914D\u7F6E\u4E3A\u5230\u8FBE\u56FA\u5B9A\u89C4\u5219\u65E5\u671F\u65F6\u95F4\u7684\u5468\u671F\u3002",paraId:5,tocIndex:2},{value:"\u914D\u7F6E\u4E86\u91CD\u590D\u89C4\u5219\u540E\uFF0C\u8FD8\u53EF\u4EE5\u914D\u7F6E\u7ED3\u675F\u6761\u4EF6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u56FA\u5B9A\u65F6\u95F4\u70B9\u7ED3\u675F\uFF0C\u4E5F\u53EF\u4EE5\u901A\u8FC7\u5DF2\u6267\u884C\u8FC7\u7684\u6B21\u6570\u9650\u5236\u3002",paraId:6,tocIndex:2},{value:"\u901A\u8FC7\u6570\u636E\u8868\u7684\u65F6\u95F4\u5B57\u6BB5\u6765\u786E\u5B9A\u5F00\u59CB\u65F6\u95F4\uFF0C\u662F\u4E00\u79CD\u5C06\u666E\u901A\u5B9A\u65F6\u4EFB\u52A1\u548C\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u7ED3\u5408\u7684\u89E6\u53D1\u6A21\u5F0F\uFF0C\u4F7F\u7528\u8FD9\u4E2A\u6A21\u5F0F\u53EF\u4EE5\u7B80\u5316\u4E00\u4E9B\u7279\u5B9A\u6D41\u7A0B\u7684\u4E2D\u7684\u8282\u70B9\uFF0C\u4ECE\u914D\u7F6E\u4E0A\u4E5F\u66F4\u52A0\u76F4\u89C2\u3002\u4F8B\u5982\uFF0C\u9700\u8981\u5C06\u8D85\u65F6\u672A\u652F\u4ED8\u7684\u8BA2\u5355\u4FEE\u6539\u4E3A\u5DF2\u53D6\u6D88\u7684\u72B6\u6001\uFF0C\u53EF\u4EE5\u4EC5\u914D\u7F6E\u4E00\u4E2A\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u6A21\u5F0F\u7684\u5B9A\u65F6\u4EFB\u52A1\uFF0C\u9009\u62E9\u5F00\u59CB\u65F6\u95F4\u4E3A\u8BA2\u5355\u521B\u5EFA\u540E 30 \u5206\u949F\uFF0C",paraId:7,tocIndex:3},{value:"\u5982\u679C\u914D\u7F6E\u7684\u65F6\u95F4\u6761\u4EF6\u6EE1\u8DB3\u65F6\uFF0C\u4F46\u6574\u4E2A NocoBase \u5E94\u7528\u670D\u52A1\u5904\u5728\u672A\u542F\u52A8\u6216\u505C\u673A\u72B6\u6001\uFF0C\u5219\u5BF9\u5E94\u65F6\u95F4\u70B9\u5E94\u8BE5\u89E6\u53D1\u7684\u5B9A\u65F6\u4EFB\u52A1\u4F1A\u88AB\u9519\u8FC7\uFF0C\u4E14\u5728\u670D\u52A1\u91CD\u65B0\u542F\u52A8\u540E\uFF0C\u5DF2\u7ECF\u9519\u8FC7\u7684\u4EFB\u52A1\u4E0D\u4F1A\u518D\u88AB\u89E6\u53D1\u3002\u6240\u4EE5\u5728\u4F7F\u7528\u65F6\u53EF\u80FD\u9700\u8981\u8003\u8651\u5BF9\u5E94\u60C5\u51B5\u7684\u5904\u7406\uFF0C\u6216\u5019\u8865\u63AA\u65BD\u3002",paraId:8,tocIndex:5},{value:"\u914D\u7F6E\u4E86\u7ED3\u675F\u6761\u4EF6\u4E2D\u7684\u6309\u91CD\u590D\u6B21\u6570\u65F6\uFF0C\u8BA1\u7B97\u7684\u662F\u540C\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u6240\u6709\u7248\u672C\u6267\u884C\u8FC7\u7684\u603B\u6B21\u6570\uFF0C\u4F8B\u5982\u4E00\u4E2A\u5B9A\u65F6\u4EFB\u52A1\u5728\u7248\u672C 1 \u7684\u65F6\u5019\u6267\u884C\u8FC7 10 \u6B21\uFF0C\u5982\u679C\u91CD\u590D\u6B21\u6570\u4E5F\u8BBE\u7F6E\u4E86 10 \u6B21\uFF0C\u8BE5\u5DE5\u4F5C\u6D41\u5C06\u4E0D\u518D\u4F1A\u88AB\u89E6\u53D1\uFF0C\u5373\u4F7F\u590D\u5236\u5230\u65B0\u7248\u672C\uFF0C\u4E5F\u4E0D\u4F1A\u88AB\u89E6\u53D1\uFF0C\u9664\u975E\u5C06\u91CD\u590D\u6B21\u6570\u4FEE\u6539\u4E3A\u5927\u4E8E 10 \u7684\u6570\u5B57\u3002\u4F46\u5982\u679C\u662F\u590D\u5236\u4E3A\u65B0\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5DF2\u6267\u884C\u7684\u6B21\u6570\u5C06\u4F1A\u91CD\u65B0\u4ECE 0 \u5F00\u59CB\u8BA1\u7B97\uFF0C\u4E0D\u4FEE\u6539\u76F8\u5173\u914D\u7F6E\u7684\u60C5\u51B5\u4E0B\uFF0C\u65B0\u7684\u5DE5\u4F5C\u6D41\u5C06\u53EF\u4EE5\u518D\u88AB\u89E6\u53D1 10 \u6B21\u3002",paraId:9,tocIndex:6},{value:"\u91CD\u590D\u89C4\u5219\u4E2D\u7684\u95F4\u9694\u65F6\u95F4\u662F\u76F8\u5BF9\u4E8E\u4E0A\u4E00\u6B21\u89E6\u53D1\uFF08\u5F00\u59CB\u65F6\u95F4\uFF09\u7684\u65F6\u95F4\u70B9\uFF0C\u800C\u9AD8\u7EA7\u6A21\u5F0F\u662F\u6309\u56FA\u5B9A\u7684\u65F6\u95F4\u70B9\u89E6\u53D1\uFF0C\u4F8B\u5982\uFF0C\u914D\u7F6E\u4E86\u6BCF 30 \u5206\u949F\u89E6\u53D1\u4E00\u6B21\uFF0C\u5982\u679C\u4E0A\u4E00\u6B21\u89E6\u53D1\u662F 2021-09-01 12:01:23\uFF0C\u90A3\u4E48\u4E0B\u4E00\u6B21\u89E6\u53D1\u65F6\u95F4\u662F 2021-09-01 12:31:23\u3002\u800C\u9AD8\u7EA7\u6A21\u5F0F\u5373 cron \u6A21\u5F0F\uFF0C\u914D\u7F6E\u7684\u89C4\u5219\u5747\u4E3A\u56FA\u5B9A\u7684\u65F6\u95F4\u70B9\u89E6\u53D1\uFF0C\u4F8B\u5982\uFF0C\u53EF\u4EE5\u914D\u7F6E\u5728\u6BCF\u5C0F\u65F6\u7684 01 \u5206\u548C 31 \u5206\u89E6\u53D1\u3002",paraId:10,tocIndex:7},{value:"\u5047\u8BBE\u6BCF\u5206\u949F\u68C0\u67E5\u521B\u5EFA\u540E\u8D85\u8FC7 30 \u5206\u949F\u672A\u5B8C\u6210\u652F\u4ED8\u7684\u8BA2\u5355\uFF0C\u5E76\u81EA\u52A8\u4FEE\u6539\u4E3A\u5DF2\u53D6\u6D88\u72B6\u6001\u3002\u5206\u522B\u4F7F\u7528\u4E24\u79CD\u6A21\u5F0F\u6765\u5B9E\u73B0\u3002",paraId:11,tocIndex:8},{value:"\u521B\u5EFA\u4E00\u4E2A\u57FA\u4E8E\u5B9A\u65F6\u4EFB\u52A1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u89E6\u53D1\u5668\u914D\u7F6E\u4E2D\u9009\u62E9\u201C\u81EA\u5B9A\u4E49\u65F6\u95F4\u201D\u6A21\u5F0F\uFF0C\u5F00\u59CB\u65F6\u95F4\u9009\u62E9\u4EFB\u610F\u4E0D\u665A\u4E8E\u5F53\u524D\u65F6\u95F4\u7684\u65F6\u95F4\u70B9\uFF0C\u91CD\u590D\u89C4\u5219\u9009\u62E9\u201C\u6BCF\u5206\u949F\u201D\uFF0C\u7ED3\u675F\u6761\u4EF6\u7559\u7A7A\uFF1A",paraId:12,tocIndex:9},{value:` `,paraId:13},{value:"\u4E4B\u540E\u6839\u636E\u6D41\u7A0B\u7684\u903B\u8F91\u914D\u7F6E\u5176\u4ED6\u8282\u70B9\uFF0C\u8BA1\u7B97\u51FA 30 \u5206\u949F\uFF0C\u5982\u679C\u8D85\u65F6\u672A\u652F\u4ED8\u5219\u4FEE\u6539\u4E3A\u5DF2\u53D6\u6D88\u72B6\u6001\uFF1A",paraId:14,tocIndex:9},{value:` `,paraId:13},{value:"\u5DE5\u4F5C\u6D41\u542F\u7528\u540E\uFF0C\u4ECE\u5F00\u59CB\u65F6\u95F4\u8D77\u6BCF\u5206\u949F\u4F1A\u89E6\u53D1\u4E00\u6B21\uFF0C\u8BA1\u7B97 30 \u5206\u949F\u524D\u7684\u65F6\u95F4\uFF0C\u7528\u4E8E\u66F4\u65B0\u521B\u5EFA\u65F6\u95F4\u65E9\u4E8E\u8BE5\u65F6\u95F4\u70B9\u7684\u8BA2\u5355\u72B6\u6001\u4E3A\u53D6\u6D88\u3002",paraId:15,tocIndex:9},{value:"\u521B\u5EFA\u4E00\u4E2A\u57FA\u4E8E\u5B9A\u65F6\u4EFB\u52A1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u89E6\u53D1\u5668\u914D\u7F6E\u4E2D\u9009\u62E9\u201C\u6570\u636E\u8868\u65F6\u95F4\u5B57\u6BB5\u201D\u6A21\u5F0F\uFF0C\u6570\u636E\u8868\u9009\u62E9\u201C\u8BA2\u5355\u201D\u8868\uFF0C\u5F00\u59CB\u65F6\u95F4\u9009\u62E9\u8BA2\u5355\u7684\u521B\u5EFA\u65F6\u95F4\u4E4B\u540E 30 \u5206\u949F\uFF0C\u91CD\u590D\u89C4\u5219\u9009\u62E9\u201C\u4E0D\u91CD\u590D\u201D\uFF1A",paraId:16,tocIndex:10},{value:` `,paraId:13},{value:"\u4E4B\u540E\u6839\u636E\u6D41\u7A0B\u7684\u903B\u8F91\u914D\u7F6E\u5176\u4ED6\u8282\u70B9\uFF0C\u66F4\u65B0 ID \u4E3A\u89E6\u53D1\u6570\u636E ID \u4E14\u72B6\u6001\u662F\u201C\u672A\u652F\u4ED8\u201D\u7684\u8BA2\u5355\u4E3A\u53D6\u6D88\u72B6\u6001\uFF1A",paraId:17,tocIndex:10},{value:` - `,paraId:13},{value:"\u4E0E\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F\u4E0D\u540C\u7684\u662F\uFF0C\u8FD9\u91CC\u4E0D\u9700\u8981\u8BA1\u7B97 30 \u5206\u949F\u524D\u7684\u65F6\u95F4\uFF0C\u56E0\u4E3A\u5DE5\u4F5C\u6D41\u89E6\u53D1\u6570\u636E\u4E0A\u4E0B\u6587\u4E2D\u5373\u5305\u542B\u5BF9\u5E94\u7B26\u5408\u65F6\u95F4\u6761\u4EF6\u7684\u6570\u636E\u884C\uFF0C\u6240\u4EE5\u53EF\u4EE5\u76F4\u63A5\u66F4\u65B0\u5BF9\u5E94\u8BA2\u5355\u7684\u72B6\u6001\u3002",paraId:18,tocIndex:10}],g7={},b7={title:"SQL \u64CD\u4F5C",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/sql.md",lastUpdated:1732240239e3,description:"\u5728\u4E00\u4E9B\u7279\u6B8A\u573A\u666F\u91CC\uFF0C\u4E0A\u9762\u7B80\u5355\u7684\u6570\u636E\u8868\u64CD\u4F5C\u8282\u70B9\u53EF\u80FD\u65E0\u6CD5\u590D\u6742\u7684\u64CD\u4F5C\uFF0C\u5219\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 SQL \u8282\u70B9\uFF0C\u4F7F\u6570\u636E\u5E93\u76F4\u63A5\u6267\u884C\u590D\u6742\u7684 SQL \u8BED\u53E5\u8FDB\u884C\u6570\u636E\u64CD\u4F5C\u3002"},y7=[{id:"sql-\u64CD\u4F5C",depth:1,title:"SQL \u64CD\u4F5C"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"}],w7=[{value:"\u5728\u4E00\u4E9B\u7279\u6B8A\u573A\u666F\u91CC\uFF0C\u4E0A\u9762\u7B80\u5355\u7684\u6570\u636E\u8868\u64CD\u4F5C\u8282\u70B9\u53EF\u80FD\u65E0\u6CD5\u590D\u6742\u7684\u64CD\u4F5C\uFF0C\u5219\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 SQL \u8282\u70B9\uFF0C\u4F7F\u6570\u636E\u5E93\u76F4\u63A5\u6267\u884C\u590D\u6742\u7684 SQL \u8BED\u53E5\u8FDB\u884C\u6570\u636E\u64CD\u4F5C\u3002",paraId:0,tocIndex:0},{value:"\u4E0E\u5728\u5E94\u7528\u5916\u90E8\u76F4\u63A5\u8FDE\u63A5\u6570\u636E\u5E93\u8FDB\u884C SQL \u64CD\u4F5C\u7684\u533A\u522B\u662F\uFF0C\u5728\u5DE5\u4F5C\u6D41\u5185\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4F5C\u4E3A SQL \u8BED\u53E5\u4E2D\u7684\u90E8\u5206\u53C2\u6570\u3002",paraId:1,tocIndex:0},{value:"\u76EE\u524D SQL \u8282\u70B9\u8FD8\u4E0D\u652F\u6301 ",paraId:2},{value:"SELECT",paraId:2},{value:" \u8BED\u53E5\u7684\u7ED3\u679C\u4F5C\u4E3A\u8282\u70B9\u7ED3\u679C\u4F7F\u7528\uFF0C\u53EF\u80FD\u4F1A\u5728\u672A\u6765\u652F\u6301\u3002",paraId:2},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201CSQL \u64CD\u4F5C\u201D\u8282\u70B9\uFF1A",paraId:3,tocIndex:1},{value:"\u901A\u8FC7\u7F16\u8F91\u6846\u53F3\u4E0A\u89D2\u7684\u53D8\u91CF\u6309\u94AE\u63D2\u5165\u9700\u8981\u7684\u53D8\u91CF\uFF0C\u4F1A\u5728\u6267\u884C\u524D\u901A\u8FC7\u6587\u672C\u66FF\u6362\u4E3A\u5BF9\u5E94\u53D8\u91CF\u7684\u503C\uFF1A",paraId:4,tocIndex:2}],k7={},S7={title:"Workflow Json Query",toc:"menu",filename:"docs/en-US/plugins/workflow-json-query/index.md",lastUpdated:1732240239e3},U7=[],P7=[],T7={},C7={title:"0.17.0-alpha.1",toc:"menu",filename:"docs/en-US/breaking-changes/v0-17-0-alpha-1.md",lastUpdated:1732240239e3,description:"This article only covers incompatibility changes related to plugin development."},A7=[{id:"0170-alpha1",depth:1,title:"0.17.0-alpha.1"},{id:"changes-to-schemainitializer",depth:2,title:"Changes to SchemaInitializer"},{id:"adding-items-to-an-existing-initializer",depth:3,title:"Adding items to an existing initializer"},{id:"add-the-new-initializer-to-the-application",depth:3,title:"Add the new initializer to the application"},{id:"add-new-initializer",depth:3,title:"Add new initializer"},{id:"item-definition-and-implementation",depth:3,title:"Item definition and implementation"},{id:"changes-to-schemasettings",depth:2,title:"Changes to SchemaSettings"},{id:"settings-definition-and-implementation",depth:3,title:"Settings definition and implementation"},{id:"implementation-of-item-for-settings",depth:3,title:"Implementation of Item for Settings"},{id:"other",depth:2,title:"Other"},{id:"appaddcomponent-method-privatization",depth:3,title:"app.addComponent method privatization"},{id:"delete-the-pluginmanagercontext",depth:3,title:"Delete the PluginManagerContext."}],q7=[{value:"This article only covers incompatibility changes related to plugin development.",paraId:0},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerManager",paraId:1,tocIndex:1},{value:" for registering ",paraId:1,tocIndex:1},{value:"SchemaInitializer",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"useSchemaInitializerRender()",paraId:1,tocIndex:1},{value:" to replace the original ",paraId:1,tocIndex:1},{value:"useSchemaInitializer()",paraId:1,tocIndex:1},{value:" ",paraId:1,tocIndex:1},{value:"render()",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"useSchemaInitializerItem()",paraId:1,tocIndex:1},{value:" for obtaining the context of the current initialization item",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerItemGroup",paraId:1,tocIndex:1},{value:" component as the default component for ",paraId:1,tocIndex:1},{value:"type: 'itemGroup'",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerSubMenu",paraId:1,tocIndex:1},{value:" component as the default component for ",paraId:1,tocIndex:1},{value:"type: 'subMenu'",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerDivider",paraId:1,tocIndex:1},{value:" component as the default component for ",paraId:1,tocIndex:1},{value:"type: 'divider'",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerChildren",paraId:1,tocIndex:1},{value:" component for custom rendering of multiple list items",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerChild",paraId:1,tocIndex:1},{value:" component for custom rendering of a single list item",paraId:1,tocIndex:1},{value:"Changed the responsibilities of ",paraId:1,tocIndex:1},{value:"SchemaInitializerContext",paraId:1,tocIndex:1},{value:" for storing the context of the current initializer",paraId:1,tocIndex:1},{value:"Changed the responsibilities of ",paraId:1,tocIndex:1},{value:"useSchemaInitializer()",paraId:1,tocIndex:1},{value:" for obtaining the context of the current initializer",paraId:1,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"function SchemaInitializer",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"class SchemaInitializer",paraId:1,tocIndex:1},{value:" for defining initializer",paraId:1,tocIndex:1},{value:"Changed parameters of ",paraId:1,tocIndex:1},{value:"SchemaInitializer",paraId:1,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"name",paraId:2,tocIndex:1},{value:" required parameter for the value of ",paraId:2,tocIndex:1},{value:"x-initializer",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"Component",paraId:2,tocIndex:1},{value:" parameter for custom rendering of the button. Default is ",paraId:2,tocIndex:1},{value:"SchemaInitializerButton",paraId:2,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"componentProps",paraId:2,tocIndex:1},{value:", ",paraId:2,tocIndex:1},{value:"style",paraId:2,tocIndex:1},{value:" for configuring the properties and style of ",paraId:2,tocIndex:1},{value:"Component",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"ItemsComponent",paraId:2,tocIndex:1},{value:" parameter for custom rendering of the list. Default is ",paraId:2,tocIndex:1},{value:"SchemaInitializerItems",paraId:2,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"itemsComponentProps",paraId:2,tocIndex:1},{value:", ",paraId:2,tocIndex:1},{value:"itemsComponentStyle",paraId:2,tocIndex:1},{value:" for configuring the properties and style of ",paraId:2,tocIndex:1},{value:"ItemsComponent",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"popover",paraId:2,tocIndex:1},{value:" parameter for configuring whether to display the ",paraId:2,tocIndex:1},{value:"popover",paraId:2,tocIndex:1},{value:" effect",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"useInsert",paraId:2,tocIndex:1},{value:" parameter for when the ",paraId:2,tocIndex:1},{value:"insert",paraId:2,tocIndex:1},{value:" function needs to use hooks",paraId:2,tocIndex:1},{value:"Changed ",paraId:2,tocIndex:1},{value:"dropdown",paraId:2,tocIndex:1},{value:" parameter to ",paraId:2,tocIndex:1},{value:"popoverProps",paraId:2,tocIndex:1},{value:", using ",paraId:2,tocIndex:1},{value:"Popover",paraId:2,tocIndex:1},{value:" instead of ",paraId:2,tocIndex:1},{value:"Dropdown",paraId:2,tocIndex:1},{value:"Changed parameters of ",paraId:1,tocIndex:1},{value:"items",paraId:1,tocIndex:1},{value:" for ",paraId:1,tocIndex:1},{value:"SchemaInitializer",paraId:1,tocIndex:1},{value:"Added ",paraId:3,tocIndex:1},{value:"useChildren",paraId:3,tocIndex:1},{value:" function for dynamically controlling child items",paraId:3,tocIndex:1},{value:"Added ",paraId:3,tocIndex:1},{value:"componentProps",paraId:3,tocIndex:1},{value:" function for the properties of the component itself",paraId:3,tocIndex:1},{value:"Added ",paraId:3,tocIndex:1},{value:"useComponentProps",paraId:3,tocIndex:1},{value:" function for dynamically processing the props of the component",paraId:3,tocIndex:1},{value:"Changed ",paraId:3,tocIndex:1},{value:"key",paraId:3,tocIndex:1},{value:" parameter to ",paraId:3,tocIndex:1},{value:"name",paraId:3,tocIndex:1},{value:" for the unique identification of list items",paraId:3,tocIndex:1},{value:"Changed ",paraId:3,tocIndex:1},{value:"visible",paraId:3,tocIndex:1},{value:" parameter to ",paraId:3,tocIndex:1},{value:"useVisible",paraId:3,tocIndex:1},{value:" function for dynamically controlling whether to display",paraId:3,tocIndex:1},{value:"Changed ",paraId:3,tocIndex:1},{value:"component",paraId:3,tocIndex:1},{value:" parameter to ",paraId:3,tocIndex:1},{value:"Component",paraId:3,tocIndex:1},{value:" for rendering list items",paraId:3,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"SchemaInitializer.Button",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"SchemaInitializerButton",paraId:1,tocIndex:1},{value:", the default value for the Component parameter of SchemaInitializer",paraId:1,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"SchemaInitializer.Item",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"SchemaInitializerItem",paraId:1,tocIndex:1},{value:", with unchanged parameters",paraId:1,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"SchemaInitializer.ActionModal",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"SchemaInitializerActionModal",paraId:1,tocIndex:1},{value:", with unchanged parameters",paraId:1,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"SchemaInitializer.SwitchItem",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"SchemaInitializer.Switch",paraId:1,tocIndex:1},{value:", with unchanged parameters",paraId:1,tocIndex:1},{value:"Deleted ",paraId:1,tocIndex:1},{value:"SchemaInitializerProvider",paraId:1,tocIndex:1},{value:", replaced by ",paraId:1,tocIndex:1},{value:"SchemaInitializerManager",paraId:1,tocIndex:1},{value:"Deleted ",paraId:1,tocIndex:1},{value:"SchemaInitializer.itemWrap",paraId:1,tocIndex:1},{value:", no longer need to wrap the ",paraId:1,tocIndex:1},{value:"item",paraId:1,tocIndex:1},{value:" component",paraId:1,tocIndex:1},{value:"For more information, refer to the following documentation:",paraId:4,tocIndex:1},{value:"Plugin Development / Schema Initializer",paraId:5,tocIndex:1},{value:"API Documentation / SchemaInitializer",paraId:6,tocIndex:1},{value:"In the past, we used to get all the ",paraId:7,tocIndex:2},{value:"Initializers",paraId:7,tocIndex:2},{value:" through ",paraId:7,tocIndex:2},{value:"SchemaInitializerContext",paraId:7,tocIndex:2},{value:" and then add, delete or change them. For example, the following code adds ",paraId:7,tocIndex:2},{value:"Hello",paraId:7,tocIndex:2},{value:" to ",paraId:7,tocIndex:2},{value:"media",paraId:7,tocIndex:2},{value:" in ",paraId:7,tocIndex:2},{value:"BlockInitializers",paraId:7,tocIndex:2},{value:":",paraId:7,tocIndex:2},{value:`const items = useContext(SchemaInitializerContext); + `,paraId:13},{value:"\u4E0E\u81EA\u5B9A\u4E49\u65F6\u95F4\u6A21\u5F0F\u4E0D\u540C\u7684\u662F\uFF0C\u8FD9\u91CC\u4E0D\u9700\u8981\u8BA1\u7B97 30 \u5206\u949F\u524D\u7684\u65F6\u95F4\uFF0C\u56E0\u4E3A\u5DE5\u4F5C\u6D41\u89E6\u53D1\u6570\u636E\u4E0A\u4E0B\u6587\u4E2D\u5373\u5305\u542B\u5BF9\u5E94\u7B26\u5408\u65F6\u95F4\u6761\u4EF6\u7684\u6570\u636E\u884C\uFF0C\u6240\u4EE5\u53EF\u4EE5\u76F4\u63A5\u66F4\u65B0\u5BF9\u5E94\u8BA2\u5355\u7684\u72B6\u6001\u3002",paraId:18,tocIndex:10}],g7={},b7={title:"SQL \u64CD\u4F5C",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/nodes/sql.md",lastUpdated:173254844e4,description:"\u5728\u4E00\u4E9B\u7279\u6B8A\u573A\u666F\u91CC\uFF0C\u4E0A\u9762\u7B80\u5355\u7684\u6570\u636E\u8868\u64CD\u4F5C\u8282\u70B9\u53EF\u80FD\u65E0\u6CD5\u590D\u6742\u7684\u64CD\u4F5C\uFF0C\u5219\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 SQL \u8282\u70B9\uFF0C\u4F7F\u6570\u636E\u5E93\u76F4\u63A5\u6267\u884C\u590D\u6742\u7684 SQL \u8BED\u53E5\u8FDB\u884C\u6570\u636E\u64CD\u4F5C\u3002"},y7=[{id:"sql-\u64CD\u4F5C",depth:1,title:"SQL \u64CD\u4F5C"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"}],w7=[{value:"\u5728\u4E00\u4E9B\u7279\u6B8A\u573A\u666F\u91CC\uFF0C\u4E0A\u9762\u7B80\u5355\u7684\u6570\u636E\u8868\u64CD\u4F5C\u8282\u70B9\u53EF\u80FD\u65E0\u6CD5\u590D\u6742\u7684\u64CD\u4F5C\uFF0C\u5219\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 SQL \u8282\u70B9\uFF0C\u4F7F\u6570\u636E\u5E93\u76F4\u63A5\u6267\u884C\u590D\u6742\u7684 SQL \u8BED\u53E5\u8FDB\u884C\u6570\u636E\u64CD\u4F5C\u3002",paraId:0,tocIndex:0},{value:"\u4E0E\u5728\u5E94\u7528\u5916\u90E8\u76F4\u63A5\u8FDE\u63A5\u6570\u636E\u5E93\u8FDB\u884C SQL \u64CD\u4F5C\u7684\u533A\u522B\u662F\uFF0C\u5728\u5DE5\u4F5C\u6D41\u5185\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4F5C\u4E3A SQL \u8BED\u53E5\u4E2D\u7684\u90E8\u5206\u53C2\u6570\u3002",paraId:1,tocIndex:0},{value:"\u76EE\u524D SQL \u8282\u70B9\u8FD8\u4E0D\u652F\u6301 ",paraId:2},{value:"SELECT",paraId:2},{value:" \u8BED\u53E5\u7684\u7ED3\u679C\u4F5C\u4E3A\u8282\u70B9\u7ED3\u679C\u4F7F\u7528\uFF0C\u53EF\u80FD\u4F1A\u5728\u672A\u6765\u652F\u6301\u3002",paraId:2},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201CSQL \u64CD\u4F5C\u201D\u8282\u70B9\uFF1A",paraId:3,tocIndex:1},{value:"\u901A\u8FC7\u7F16\u8F91\u6846\u53F3\u4E0A\u89D2\u7684\u53D8\u91CF\u6309\u94AE\u63D2\u5165\u9700\u8981\u7684\u53D8\u91CF\uFF0C\u4F1A\u5728\u6267\u884C\u524D\u901A\u8FC7\u6587\u672C\u66FF\u6362\u4E3A\u5BF9\u5E94\u53D8\u91CF\u7684\u503C\uFF1A",paraId:4,tocIndex:2}],k7={},S7={title:"Workflow Json Query",toc:"menu",filename:"docs/en-US/plugins/workflow-json-query/index.md",lastUpdated:173254844e4},U7=[],P7=[],T7={},C7={title:"0.17.0-alpha.1",toc:"menu",filename:"docs/en-US/breaking-changes/v0-17-0-alpha-1.md",lastUpdated:173254844e4,description:"This article only covers incompatibility changes related to plugin development."},A7=[{id:"0170-alpha1",depth:1,title:"0.17.0-alpha.1"},{id:"changes-to-schemainitializer",depth:2,title:"Changes to SchemaInitializer"},{id:"adding-items-to-an-existing-initializer",depth:3,title:"Adding items to an existing initializer"},{id:"add-the-new-initializer-to-the-application",depth:3,title:"Add the new initializer to the application"},{id:"add-new-initializer",depth:3,title:"Add new initializer"},{id:"item-definition-and-implementation",depth:3,title:"Item definition and implementation"},{id:"changes-to-schemasettings",depth:2,title:"Changes to SchemaSettings"},{id:"settings-definition-and-implementation",depth:3,title:"Settings definition and implementation"},{id:"implementation-of-item-for-settings",depth:3,title:"Implementation of Item for Settings"},{id:"other",depth:2,title:"Other"},{id:"appaddcomponent-method-privatization",depth:3,title:"app.addComponent method privatization"},{id:"delete-the-pluginmanagercontext",depth:3,title:"Delete the PluginManagerContext."}],q7=[{value:"This article only covers incompatibility changes related to plugin development.",paraId:0},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerManager",paraId:1,tocIndex:1},{value:" for registering ",paraId:1,tocIndex:1},{value:"SchemaInitializer",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"useSchemaInitializerRender()",paraId:1,tocIndex:1},{value:" to replace the original ",paraId:1,tocIndex:1},{value:"useSchemaInitializer()",paraId:1,tocIndex:1},{value:" ",paraId:1,tocIndex:1},{value:"render()",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"useSchemaInitializerItem()",paraId:1,tocIndex:1},{value:" for obtaining the context of the current initialization item",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerItemGroup",paraId:1,tocIndex:1},{value:" component as the default component for ",paraId:1,tocIndex:1},{value:"type: 'itemGroup'",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerSubMenu",paraId:1,tocIndex:1},{value:" component as the default component for ",paraId:1,tocIndex:1},{value:"type: 'subMenu'",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerDivider",paraId:1,tocIndex:1},{value:" component as the default component for ",paraId:1,tocIndex:1},{value:"type: 'divider'",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerChildren",paraId:1,tocIndex:1},{value:" component for custom rendering of multiple list items",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerChild",paraId:1,tocIndex:1},{value:" component for custom rendering of a single list item",paraId:1,tocIndex:1},{value:"Changed the responsibilities of ",paraId:1,tocIndex:1},{value:"SchemaInitializerContext",paraId:1,tocIndex:1},{value:" for storing the context of the current initializer",paraId:1,tocIndex:1},{value:"Changed the responsibilities of ",paraId:1,tocIndex:1},{value:"useSchemaInitializer()",paraId:1,tocIndex:1},{value:" for obtaining the context of the current initializer",paraId:1,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"function SchemaInitializer",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"class SchemaInitializer",paraId:1,tocIndex:1},{value:" for defining initializer",paraId:1,tocIndex:1},{value:"Changed parameters of ",paraId:1,tocIndex:1},{value:"SchemaInitializer",paraId:1,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"name",paraId:2,tocIndex:1},{value:" required parameter for the value of ",paraId:2,tocIndex:1},{value:"x-initializer",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"Component",paraId:2,tocIndex:1},{value:" parameter for custom rendering of the button. Default is ",paraId:2,tocIndex:1},{value:"SchemaInitializerButton",paraId:2,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"componentProps",paraId:2,tocIndex:1},{value:", ",paraId:2,tocIndex:1},{value:"style",paraId:2,tocIndex:1},{value:" for configuring the properties and style of ",paraId:2,tocIndex:1},{value:"Component",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"ItemsComponent",paraId:2,tocIndex:1},{value:" parameter for custom rendering of the list. Default is ",paraId:2,tocIndex:1},{value:"SchemaInitializerItems",paraId:2,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"itemsComponentProps",paraId:2,tocIndex:1},{value:", ",paraId:2,tocIndex:1},{value:"itemsComponentStyle",paraId:2,tocIndex:1},{value:" for configuring the properties and style of ",paraId:2,tocIndex:1},{value:"ItemsComponent",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"popover",paraId:2,tocIndex:1},{value:" parameter for configuring whether to display the ",paraId:2,tocIndex:1},{value:"popover",paraId:2,tocIndex:1},{value:" effect",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"useInsert",paraId:2,tocIndex:1},{value:" parameter for when the ",paraId:2,tocIndex:1},{value:"insert",paraId:2,tocIndex:1},{value:" function needs to use hooks",paraId:2,tocIndex:1},{value:"Changed ",paraId:2,tocIndex:1},{value:"dropdown",paraId:2,tocIndex:1},{value:" parameter to ",paraId:2,tocIndex:1},{value:"popoverProps",paraId:2,tocIndex:1},{value:", using ",paraId:2,tocIndex:1},{value:"Popover",paraId:2,tocIndex:1},{value:" instead of ",paraId:2,tocIndex:1},{value:"Dropdown",paraId:2,tocIndex:1},{value:"Changed parameters of ",paraId:1,tocIndex:1},{value:"items",paraId:1,tocIndex:1},{value:" for ",paraId:1,tocIndex:1},{value:"SchemaInitializer",paraId:1,tocIndex:1},{value:"Added ",paraId:3,tocIndex:1},{value:"useChildren",paraId:3,tocIndex:1},{value:" function for dynamically controlling child items",paraId:3,tocIndex:1},{value:"Added ",paraId:3,tocIndex:1},{value:"componentProps",paraId:3,tocIndex:1},{value:" function for the properties of the component itself",paraId:3,tocIndex:1},{value:"Added ",paraId:3,tocIndex:1},{value:"useComponentProps",paraId:3,tocIndex:1},{value:" function for dynamically processing the props of the component",paraId:3,tocIndex:1},{value:"Changed ",paraId:3,tocIndex:1},{value:"key",paraId:3,tocIndex:1},{value:" parameter to ",paraId:3,tocIndex:1},{value:"name",paraId:3,tocIndex:1},{value:" for the unique identification of list items",paraId:3,tocIndex:1},{value:"Changed ",paraId:3,tocIndex:1},{value:"visible",paraId:3,tocIndex:1},{value:" parameter to ",paraId:3,tocIndex:1},{value:"useVisible",paraId:3,tocIndex:1},{value:" function for dynamically controlling whether to display",paraId:3,tocIndex:1},{value:"Changed ",paraId:3,tocIndex:1},{value:"component",paraId:3,tocIndex:1},{value:" parameter to ",paraId:3,tocIndex:1},{value:"Component",paraId:3,tocIndex:1},{value:" for rendering list items",paraId:3,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"SchemaInitializer.Button",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"SchemaInitializerButton",paraId:1,tocIndex:1},{value:", the default value for the Component parameter of SchemaInitializer",paraId:1,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"SchemaInitializer.Item",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"SchemaInitializerItem",paraId:1,tocIndex:1},{value:", with unchanged parameters",paraId:1,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"SchemaInitializer.ActionModal",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"SchemaInitializerActionModal",paraId:1,tocIndex:1},{value:", with unchanged parameters",paraId:1,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"SchemaInitializer.SwitchItem",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"SchemaInitializer.Switch",paraId:1,tocIndex:1},{value:", with unchanged parameters",paraId:1,tocIndex:1},{value:"Deleted ",paraId:1,tocIndex:1},{value:"SchemaInitializerProvider",paraId:1,tocIndex:1},{value:", replaced by ",paraId:1,tocIndex:1},{value:"SchemaInitializerManager",paraId:1,tocIndex:1},{value:"Deleted ",paraId:1,tocIndex:1},{value:"SchemaInitializer.itemWrap",paraId:1,tocIndex:1},{value:", no longer need to wrap the ",paraId:1,tocIndex:1},{value:"item",paraId:1,tocIndex:1},{value:" component",paraId:1,tocIndex:1},{value:"For more information, refer to the following documentation:",paraId:4,tocIndex:1},{value:"Plugin Development / Schema Initializer",paraId:5,tocIndex:1},{value:"API Documentation / SchemaInitializer",paraId:6,tocIndex:1},{value:"In the past, we used to get all the ",paraId:7,tocIndex:2},{value:"Initializers",paraId:7,tocIndex:2},{value:" through ",paraId:7,tocIndex:2},{value:"SchemaInitializerContext",paraId:7,tocIndex:2},{value:" and then add, delete or change them. For example, the following code adds ",paraId:7,tocIndex:2},{value:"Hello",paraId:7,tocIndex:2},{value:" to ",paraId:7,tocIndex:2},{value:"media",paraId:7,tocIndex:2},{value:" in ",paraId:7,tocIndex:2},{value:"BlockInitializers",paraId:7,tocIndex:2},{value:":",paraId:7,tocIndex:2},{value:`const items = useContext(SchemaInitializerContext); const mediaItems = items.BlockInitializers.items.find( (item) => item.key === 'media', ); @@ -11274,14 +11326,14 @@ return
-
} -`,paraId:59,tocIndex:11}],E7={},D7={title:"0.17.0-alpha.3",toc:"menu",filename:"docs/en-US/breaking-changes/v0-17-0-alpha-3.md",lastUpdated:1732240239e3,description:"Refer to Update\uFF08localization-management\uFF09\uFF1AOrganize text namespaces by modules"},O7=[{id:"0170-alpha3",depth:1,title:"0.17.0-alpha.3"},{id:"localization-management",depth:2,title:"Localization management"},{id:"background",depth:3,title:"Background"},{id:"translation-texts-are-no-longer-deduplicated",depth:3,title:"Translation texts are no longer deduplicated"},{id:"removed-fallbackns-option-from-i18n-instance",depth:3,title:"Removed fallbackNS option from i18n instance"}],R7=[{value:"Refer to ",paraId:0,tocIndex:2},{value:"Update\uFF08localization-management\uFF09\uFF1AOrganize text namespaces by modules",paraId:0,tocIndex:2},{value:"Duplicate texts across modules require separate translations.",paraId:1,tocIndex:3},{value:"fallbackNS",paraId:2},{value:"i18n",paraId:2},{value:"The ",paraId:3,tocIndex:4},{value:"i18n",paraId:3,tocIndex:4},{value:" instance of client no longer includes the option ",paraId:3,tocIndex:4},{value:'fallbackNS: "client"',paraId:3,tocIndex:4},{value:".",paraId:3,tocIndex:4},{value:"For plugin developers, if language files in a plugin omit some texts already present in the core client, it's necessary to supplement them. If you still want to reuse content from ",paraId:4,tocIndex:4},{value:"packages/core/client/src/locale",paraId:4,tocIndex:4},{value:", pass the appropriate parameters when using it, for example:",paraId:4,tocIndex:4},{value:`import { useTranslation } from 'react-i18next'; +`,paraId:59,tocIndex:11}],E7={},D7={title:"0.17.0-alpha.3",toc:"menu",filename:"docs/en-US/breaking-changes/v0-17-0-alpha-3.md",lastUpdated:173254844e4,description:"Refer to Update\uFF08localization-management\uFF09\uFF1AOrganize text namespaces by modules"},O7=[{id:"0170-alpha3",depth:1,title:"0.17.0-alpha.3"},{id:"localization-management",depth:2,title:"Localization management"},{id:"background",depth:3,title:"Background"},{id:"translation-texts-are-no-longer-deduplicated",depth:3,title:"Translation texts are no longer deduplicated"},{id:"removed-fallbackns-option-from-i18n-instance",depth:3,title:"Removed fallbackNS option from i18n instance"}],R7=[{value:"Refer to ",paraId:0,tocIndex:2},{value:"Update\uFF08localization-management\uFF09\uFF1AOrganize text namespaces by modules",paraId:0,tocIndex:2},{value:"Duplicate texts across modules require separate translations.",paraId:1,tocIndex:3},{value:"fallbackNS",paraId:2},{value:"i18n",paraId:2},{value:"The ",paraId:3,tocIndex:4},{value:"i18n",paraId:3,tocIndex:4},{value:" instance of client no longer includes the option ",paraId:3,tocIndex:4},{value:'fallbackNS: "client"',paraId:3,tocIndex:4},{value:".",paraId:3,tocIndex:4},{value:"For plugin developers, if language files in a plugin omit some texts already present in the core client, it's necessary to supplement them. If you still want to reuse content from ",paraId:4,tocIndex:4},{value:"packages/core/client/src/locale",paraId:4,tocIndex:4},{value:", pass the appropriate parameters when using it, for example:",paraId:4,tocIndex:4},{value:`import { useTranslation } from 'react-i18next'; export const NAMESPACE = 'localization-management'; export const useLocalTranslation = () => { return useTranslation([NAMESPACE, 'client'], { nsMode: 'fallback' }); }; -`,paraId:5,tocIndex:4}],M7={},L7={title:"0.17.0-alpha.5",toc:"menu",filename:"docs/en-US/breaking-changes/v0-17-0-alpha-5.md",lastUpdated:1732240239e3,description:"The new version introduces caching for the user information stored in ctx.state.currentUser."},N7=[{id:"0170-alpha5",depth:1,title:"0.17.0-alpha.5"},{id:"server-ctxstatecurrentuser",depth:2,title:"Server ctx.state.currentUser"},{id:"background",depth:3,title:"Background"},{id:"changes",depth:3,title:"Changes"},{id:"accessing-user-attributes",depth:4,title:"Accessing User Attributes"},{id:"modifying-user-attributes",depth:4,title:"Modifying User Attributes"},{id:"retrieving-user-information-object",depth:4,title:"Retrieving User Information Object"}],z7=[{value:"ctx.state.currentUser",paraId:0},{value:"The new version introduces caching for the user information stored in ",paraId:1,tocIndex:2},{value:"ctx.state.currentUser",paraId:1,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:"Previously, ",paraId:2,tocIndex:2},{value:"ctx.state.currentUser",paraId:2,tocIndex:2},{value:" stored a Sequelize UserModel object:",paraId:2,tocIndex:2},{value:`{ +`,paraId:5,tocIndex:4}],M7={},L7={title:"0.17.0-alpha.5",toc:"menu",filename:"docs/en-US/breaking-changes/v0-17-0-alpha-5.md",lastUpdated:173254844e4,description:"The new version introduces caching for the user information stored in ctx.state.currentUser."},N7=[{id:"0170-alpha5",depth:1,title:"0.17.0-alpha.5"},{id:"server-ctxstatecurrentuser",depth:2,title:"Server ctx.state.currentUser"},{id:"background",depth:3,title:"Background"},{id:"changes",depth:3,title:"Changes"},{id:"accessing-user-attributes",depth:4,title:"Accessing User Attributes"},{id:"modifying-user-attributes",depth:4,title:"Modifying User Attributes"},{id:"retrieving-user-information-object",depth:4,title:"Retrieving User Information Object"}],z7=[{value:"ctx.state.currentUser",paraId:0},{value:"The new version introduces caching for the user information stored in ",paraId:1,tocIndex:2},{value:"ctx.state.currentUser",paraId:1,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:"Previously, ",paraId:2,tocIndex:2},{value:"ctx.state.currentUser",paraId:2,tocIndex:2},{value:" stored a Sequelize UserModel object:",paraId:2,tocIndex:2},{value:`{ "dataValues": { "username": "nocobase" // Other user information @@ -11303,7 +11355,7 @@ ctx.state.currentUser.roles = roles; `,paraId:14,tocIndex:5},{value:"Now",paraId:15,tocIndex:5},{value:`// Only applicable method ctx.state.currentUser.roles = roles; `,paraId:16,tocIndex:5},{value:"Previously",paraId:17,tocIndex:6},{value:`ctx.state.currentUser.toJSON(); -`,paraId:18,tocIndex:6},{value:"Now",paraId:19,tocIndex:6},{value:"Deprecated. ",paraId:20,tocIndex:6},{value:"ctx.state.currentUser",paraId:20,tocIndex:6},{value:" itself represents the result of ",paraId:20,tocIndex:6},{value:"toJSON",paraId:20,tocIndex:6},{value:" on the UserModel.",paraId:20,tocIndex:6}],F7={},B7={title:"0.18.0-alpha.1",toc:"menu",filename:"docs/en-US/breaking-changes/v0-18-0-alpha-1.md",lastUpdated:1732240239e3,description:"This article only covers incompatibility changes related to plugin development."},j7=[{id:"0180-alpha1",depth:1,title:"0.18.0-alpha.1"},{id:"test-framework-changed-from-jest-to-vitest",depth:2,title:"Test framework changed from jest to vitest"},{id:"authentication-client-api-changes",depth:2,title:"Authentication Client API changes"},{id:"background",depth:3,title:"Background"},{id:"changes",depth:3,title:"Changes"},{id:"example",depth:3,title:"Example"},{id:"customize-sign-in-form--sign-up-form--admin-settings-form",depth:4,title:"Customize sign-in form + sign-up form + admin settings form"},{id:"customize-sign-in-thirt-party-button--admin-settings-form",depth:4,title:"Customize sign-in (thirt-party) button + admin settings form"},{id:"removed",depth:3,title:"Removed"}],H7=[{value:"This article only covers incompatibility changes related to plugin development.",paraId:0},{value:"Server - Testing",paraId:1,tocIndex:1},{value:"Client - Testing",paraId:2,tocIndex:1},{value:"Previously, when developing the client for a custom authentication method, it was based on React ",paraId:3,tocIndex:3},{value:"Context",paraId:3,tocIndex:3},{value:`. +`,paraId:18,tocIndex:6},{value:"Now",paraId:19,tocIndex:6},{value:"Deprecated. ",paraId:20,tocIndex:6},{value:"ctx.state.currentUser",paraId:20,tocIndex:6},{value:" itself represents the result of ",paraId:20,tocIndex:6},{value:"toJSON",paraId:20,tocIndex:6},{value:" on the UserModel.",paraId:20,tocIndex:6}],F7={},B7={title:"0.18.0-alpha.1",toc:"menu",filename:"docs/en-US/breaking-changes/v0-18-0-alpha-1.md",lastUpdated:173254844e4,description:"This article only covers incompatibility changes related to plugin development."},j7=[{id:"0180-alpha1",depth:1,title:"0.18.0-alpha.1"},{id:"test-framework-changed-from-jest-to-vitest",depth:2,title:"Test framework changed from jest to vitest"},{id:"authentication-client-api-changes",depth:2,title:"Authentication Client API changes"},{id:"background",depth:3,title:"Background"},{id:"changes",depth:3,title:"Changes"},{id:"example",depth:3,title:"Example"},{id:"customize-sign-in-form--sign-up-form--admin-settings-form",depth:4,title:"Customize sign-in form + sign-up form + admin settings form"},{id:"customize-sign-in-thirt-party-button--admin-settings-form",depth:4,title:"Customize sign-in (thirt-party) button + admin settings form"},{id:"removed",depth:3,title:"Removed"}],H7=[{value:"This article only covers incompatibility changes related to plugin development.",paraId:0},{value:"Server - Testing",paraId:1,tocIndex:1},{value:"Client - Testing",paraId:2,tocIndex:1},{value:"Previously, when developing the client for a custom authentication method, it was based on React ",paraId:3,tocIndex:3},{value:"Context",paraId:3,tocIndex:3},{value:`. It utilized the `,paraId:3,tocIndex:3},{value:"Provider",paraId:3,tocIndex:3},{value:" to extend custom sign-in, sign-up, and admin settings forms. For example:",paraId:3,tocIndex:3},{value:` @@ -11382,7 +11434,7 @@ export class AuthPlugin extends Plugin { + }); } } -`,paraId:10,tocIndex:7},{value:"For more details, refer to the documentation: ",paraId:11,tocIndex:7},{value:"Authentication - Development",paraId:12,tocIndex:7},{value:"The following ",paraId:13,tocIndex:8},{value:"Provider",paraId:13,tocIndex:8},{value:" has been removed\uFF1A",paraId:13,tocIndex:8},{value:"SigninPageProvider",paraId:14,tocIndex:8},{value:"SignupPageProvider",paraId:14,tocIndex:8},{value:"OptionsComponentProvider",paraId:14,tocIndex:8},{value:"SigninExtensionProvider",paraId:14,tocIndex:8}],W7={},$7={title:"0.19.0-alpha.1",toc:"menu",filename:"docs/en-US/breaking-changes/v0.19.0-alpha.1.md",lastUpdated:1732240239e3,description:"This article only covers incompatibility changes related to plugin development."},G7=[{id:"0190-alpha1",depth:1,title:"0.19.0-alpha.1"},{id:"collections-commands-migrations-configuration-changes-to-convention-based-directories",depth:2,title:"Collections, commands, migrations configuration changes to convention-based directories"}],V7=[{value:"This article only covers incompatibility changes related to plugin development.",paraId:0},{value:"Example 1: Collections loaded by importCollections, the code is deleted directly, and the collections configuration file must be placed in the ",paraId:1,tocIndex:1},{value:"src/server/collections",paraId:1,tocIndex:1},{value:" directory.",paraId:1,tocIndex:1},{value:`export class AuthPlugin extends Plugin { +`,paraId:10,tocIndex:7},{value:"For more details, refer to the documentation: ",paraId:11,tocIndex:7},{value:"Authentication - Development",paraId:12,tocIndex:7},{value:"The following ",paraId:13,tocIndex:8},{value:"Provider",paraId:13,tocIndex:8},{value:" has been removed\uFF1A",paraId:13,tocIndex:8},{value:"SigninPageProvider",paraId:14,tocIndex:8},{value:"SignupPageProvider",paraId:14,tocIndex:8},{value:"OptionsComponentProvider",paraId:14,tocIndex:8},{value:"SigninExtensionProvider",paraId:14,tocIndex:8}],W7={},$7={title:"0.19.0-alpha.1",toc:"menu",filename:"docs/en-US/breaking-changes/v0.19.0-alpha.1.md",lastUpdated:173254844e4,description:"This article only covers incompatibility changes related to plugin development."},G7=[{id:"0190-alpha1",depth:1,title:"0.19.0-alpha.1"},{id:"collections-commands-migrations-configuration-changes-to-convention-based-directories",depth:2,title:"Collections, commands, migrations configuration changes to convention-based directories"}],V7=[{value:"This article only covers incompatibility changes related to plugin development.",paraId:0},{value:"Example 1: Collections loaded by importCollections, the code is deleted directly, and the collections configuration file must be placed in the ",paraId:1,tocIndex:1},{value:"src/server/collections",paraId:1,tocIndex:1},{value:" directory.",paraId:1,tocIndex:1},{value:`export class AuthPlugin extends Plugin { async load() { - await this.importCollections(resolve(__dirname, 'collections')); } @@ -11441,8 +11493,8 @@ export default defineCollection({ } }); } -`,paraId:14,tocIndex:1}],K7={},Z7={title:"Export Pro",toc:"menu",filename:"docs/en-US/handbook/action-export-pro/index.md",lastUpdated:1732240239e3,description:"The plugin is currently under development."},Y7=[{id:"export-pro",depth:1,title:"Export Pro"},{id:"introduction",depth:2,title:"Introduction"}],Q7=[{value:"The plugin is currently under development.",paraId:0}],J7={},X7={title:"Import Pro",toc:"menu",filename:"docs/en-US/handbook/action-import-pro/index.md",lastUpdated:1732240239e3,description:"The plugin is currently under development."},e8=[{id:"import-pro",depth:1,title:"Import Pro"},{id:"introduction",depth:2,title:"Introduction"}],a8=[{value:"The plugin is currently under development.",paraId:0}],t8={},n8={title:"Multi-App Manager",toc:"menu",filename:"docs/en-US/handbook/multi-app-manager/index.md",lastUpdated:1732240239e3,description:"Dynamically manage multiple applications without the need for separate deployments, with each application being an independent instance."},o8=[{id:"multi-app-manager",depth:1,title:"Multi-App Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"adding-applications",depth:3,title:"Adding Applications"},{id:"starting-methods",depth:3,title:"Starting Methods"},{id:"custom-domain-name",depth:3,title:"Custom Domain Name"},{id:"display-in-the-menu",depth:3,title:"Display in the Menu"}],r8=[{value:"Dynamically manage multiple applications without the need for separate deployments, with each application being an independent instance.",paraId:0,tocIndex:1},{value:'The multi-app management plugin does not provide the capability for user sharing. It can be integrated through the "',paraId:1},{value:"Authentication plugin",paraId:2},{value:'" or handled using the "',paraId:1},{value:"App Switching plugin",paraId:3},{value:'".',paraId:1},{value:"This is a preset plugin that needs to be activated before use.",paraId:4,tocIndex:2},{value:"Two starting methods are provided:",paraId:5,tocIndex:5},{value:"Start on first visit: The sub-application starts only when a user visits the sub-application's URL for the first time;",paraId:6,tocIndex:5},{value:"Start with the main application: When the main application starts, the sub-applications start as well, which increases the startup time of the main application.",paraId:6,tocIndex:5},{value:"Sub-applications can be accessed via subpaths ",paraId:7,tocIndex:6},{value:"/apps/:appName/admin/",paraId:7,tocIndex:6},{value:", for example:",paraId:7,tocIndex:6},{value:`http://localhost:13000/apps/a_7zkxoarusnx/admin/z45sjaukasd -`,paraId:8,tocIndex:6},{value:"Additionally, sub-applications can be configured with independent subdomains, which require domain resolution to the current IP. If nginx is used, the domain also needs to be added in the nginx configuration.",paraId:9,tocIndex:6},{value:`The list of sub-applications displayed in the current right drop-down menu is only a set of quick links. Users are not shared; sub-applications require login and can only be used by the main application's root account. Full application switching capabilities will be provided in the commercial plugin "`,paraId:10},{value:"App Switching",paraId:10},{value:'".',paraId:10}],d8={},i8={title:"Delete",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/delete.md",lastUpdated:1732240239e3,description:"The delete operation allows for the removal of data records. This can be done by configuring a row deletion button or utilizing the bulk action button for multiple records at once."},l8=[{id:"delete",depth:2,title:"Delete"},{id:"introduction",depth:3,title:"Introduction"},{id:"operation-configuration-items",depth:3,title:"Operation Configuration Items"}],c8=[{value:"The delete operation allows for the removal of data records. This can be done by configuring a row deletion button or utilizing the bulk action button for multiple records at once.",paraId:0,tocIndex:1},{value:"Edit Button",paraId:1,tocIndex:2},{value:"Secondary Confirmation",paraId:2,tocIndex:2},{value:"Refresh data after execution: Enabled by default, this option automatically refreshes the block data once the operation is successfully completed.",paraId:3,tocIndex:2}],s8={},u8={title:"Filter",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/filter.md",lastUpdated:1732240239e3,description:"Filtering operations are commonly found within data blocks, allowing users to filter data by setting various conditions. It's essential to note that if a data block has a predefined data range, the filtering criteria will be combined with the range conditions to create the final filtering rules."},p8=[{id:"filter",depth:1,title:"Filter"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"},{id:"filterable-fields",depth:3,title:"Filterable Fields"}],I8=[{value:"Filtering operations are commonly found within data blocks, allowing users to filter data by setting various conditions. It's essential to note that if a data block has a predefined data range, the filtering criteria will be combined with the range conditions to create the final filtering rules.",paraId:0,tocIndex:1},{value:"By default, all fields in the table are enabled, and only enabled fields can be selected from the condition field list.",paraId:1,tocIndex:3},{value:"Fields from related tables can also be used as filterable fields.",paraId:2,tocIndex:3},{value:"Edit Button",paraId:3,tocIndex:3}],_8={},v8={title:"Custom Pop-up",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/pop-up.md",lastUpdated:1732240239e3,description:"The custom pop-up feature functions much like the view and edit actions. It's part of the table's row buttons and uses the current record as its context. Users can set up multiple pop-up actions within the row operations of a table."},m8=[{id:"custom-pop-up",depth:1,title:"Custom Pop-up"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"}],h8=[{value:"The custom pop-up feature functions much like the view and edit actions. It's part of the table's row buttons and uses the current record as its context. Users can set up multiple pop-up actions within the row operations of a table.",paraId:0,tocIndex:1},{value:"Configure blocks as needed in the pop-up window.",paraId:1,tocIndex:1},{value:"Edit Button",paraId:2,tocIndex:2},{value:": Customize the title, color, and icon of the edit button",paraId:3,tocIndex:2},{value:"Linkage Rule",paraId:4,tocIndex:2},{value:": Dynamically control the button\u2019s state (Visible/Disabled)",paraId:3,tocIndex:2},{value:"Open Mode",paraId:5,tocIndex:2},{value:": Pop-up/Drawer",paraId:3,tocIndex:2},{value:"Pop-up Size",paraId:6,tocIndex:2},{value:": The default size is Middle(Large/Middle/Small)",paraId:3,tocIndex:2}],f8={},x8={title:"Submit",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/submit.md",lastUpdated:1732240239e3,description:"The submission function is designed to save form data (unique to form blocks) and can be integrated with workflows to streamline data automation."},g8=[{id:"submit",depth:1,title:"Submit"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"},{id:"save-mode",depth:3,title:"Save Mode"},{id:"bind-workflows",depth:3,title:"Bind Workflows"}],b8=[{value:"The submission function is designed to save form data (unique to form blocks) and can be integrated with workflows to streamline data automation.",paraId:0,tocIndex:1},{value:"The submission operation for form blocks that only add new data supports configuring the save method.",paraId:1,tocIndex:3},{value:"Insert and create new records directly;",paraId:2,tocIndex:3},{value:"Insert only if the record doesn't exist (requires fields to determine the record\u2019s existence);",paraId:2,tocIndex:3},{value:"Insert if the record doesn't exist, otherwise update (requires fields to check for existing records).",paraId:2,tocIndex:3},{value:"The bound workflow will only be triggered once the data has been successfully submitted.",paraId:3,tocIndex:4},{value:"For further details, see ",paraId:4,tocIndex:4},{value:"Bind Workflows",paraId:5,tocIndex:4},{value:".",paraId:4,tocIndex:4},{value:"Edit Button",paraId:6,tocIndex:4},{value:"Secondary Confirmation",paraId:7,tocIndex:4}],y8={},w8={title:"UI Schema Storage",toc:"menu",filename:"docs/en-US/handbook/ui-schema-storage/index.md",lastUpdated:1732240239e3,description:"Document pending."},k8=[{id:"ui-schema-storage",depth:1,title:"UI Schema Storage"}],S8=[{value:"Document pending.",paraId:0}],U8={},P8={title:"Approval",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/approval.md",lastUpdated:1732240239e3,description:'In an approval workflow, a dedicated "Approval" node is required to configure the logic for approvers to handle (approve, reject, or return) the initiated approval request. This "Approval" node is exclusively used within approval workflows.'},T8=[{id:"approval",depth:1,title:"Approval"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"pass-modes",depth:2,title:"Pass Modes"},{id:"approvers",depth:2,title:"Approvers"},{id:"negotiation-modes",depth:2,title:"Negotiation Modes"},{id:"processing-order",depth:2,title:"Processing Order"},{id:"exit-workflow-after-rejection-branch-completion",depth:2,title:"Exit Workflow After Rejection Branch Completion"},{id:"approver-interface-configuration",depth:2,title:"Approver Interface Configuration"},{id:"related-content",depth:2,title:"Related Content"}],C8=[{value:'In an approval workflow, a dedicated "Approval" node is required to configure the logic for approvers to handle (approve, reject, or return) the initiated approval request. This "Approval" node is exclusively used within approval workflows.',paraId:0},{value:'Difference from the general "Manual" node:',paraId:1},{value:' The general "Manual" node is versatile and can be used across various workflows for manual data input, decision-making on process continuation, and other scenarios. In contrast, the "Approval" Node is specialized for approval workflows and is not applicable in other types of workflows.',paraId:1},{value:'To create an "Approval" node, click the plus sign ("+") in the workflow. Then, select one of the available pass modes to configure the approval node:',paraId:2,tocIndex:1},{value:"There are two pass modes available:",paraId:3,tocIndex:2},{value:"Direct Pass Mode: This mode is ideal for simpler workflows, where the outcome at the approval node determines whether the process ends. If the request is not approved, the process exits immediately.",paraId:4,tocIndex:2},{value:"Branching Mode: This mode is typically used for more complex workflows. After the approval node produces a result, subsequent nodes can execute within the resulting branches.",paraId:5,tocIndex:2},{value:'If the node is configured with a "Return" operation, a "Return" branch will be created, and the process will forcibly exit after the return branch is completed.',paraId:6,tocIndex:2},{value:'Once this node is "approved," the process continues through both the pass branch and the subsequent workflow. Following a "reject" operation, the default setting allows the process to continue through the subsequent workflow, although you can configure the node to end the process after executing the rejection branch.',paraId:7,tocIndex:2},{value:"The pass mode cannot be modified once the node is created.",paraId:8},{value:"Approvers are the users responsible for the approval actions at the node. They can consist of one or more users, selected from a static list or a dynamic value specified by a variable.",paraId:9,tocIndex:3},{value:"When using a variable, only primary keys or foreign keys from user data in the context and node results can be selected. If the selected variable is an array (in cases of many-to-many relationships), each user in the array will be merged into the overall approver collection.",paraId:10,tocIndex:3},{value:"If there is only one approver (including cases where multiple variables are deduplicated), the approval will be handled solely by that user, regardless of the negotiation mode chosen.",paraId:11,tocIndex:4},{value:"For multiple approvers, the selected negotiation mode determines the handling method:",paraId:12,tocIndex:4},{value:"Or: The node passes with the approval of any one person; all must reject for the node to be rejected.",paraId:13,tocIndex:4},{value:"And: The node passes only if all approvers approve; a single rejection results in rejection.",paraId:13,tocIndex:4},{value:"Voting: The node passes if a majority (as specified) of approvers approve; otherwise, the node is rejected.",paraId:13,tocIndex:4},{value:"For the return operation, if any user in the approver collection opts for a return, the node will directly exit the workflow.",paraId:14,tocIndex:4},{value:"For multiple approvers, the processing order dictates the sequence of actions:",paraId:15,tocIndex:5},{value:"Parallelly: All approvers can act in any order, with no sequence required.",paraId:16,tocIndex:5},{value:"Sequentially: Approvers act in the order defined in the approver collection, where each subsequent user can only proceed after the previous one has submitted their decision.",paraId:16,tocIndex:5},{value:'Regardless of whether "Sequentially" processing is set, the results generated will follow the rules outlined in the "Negotiation Modes" section, with the node completing execution once the conditions are met.',paraId:17,tocIndex:5},{value:'When "Branch Mode" is set for "Pass Mode," you can opt to exit the workflow after the rejection branch is completed. If selected, a "\u2717" symbol will appear at the end of the rejection branch, indicating that no further nodes will be executed after this branch concludes:',paraId:18,tocIndex:6},{value:"The approver interface configuration provides the interface for approvers when the workflow reaches this node. Click the configuration button to open the settings window:",paraId:19,tocIndex:7},{value:"In this configuration window, you can add blocks such as approval submission details, operation bars, and custom prompt text:",paraId:20,tocIndex:7},{value:"The approval content details block includes the data submitted by the initiator. Similar to a standard data block, you can freely add field components from the data table and arrange them to organize the content that the approver needs to review:",paraId:21,tocIndex:7},{value:'The operation bar can include buttons supported by this node, such as "Approve," "Reject," and "Return":',paraId:22,tocIndex:7},{value:'Additionally, the operation bar can include fields for approvers to fill out, such as a "Comment" field.',paraId:23,tocIndex:7},{value:"If you enable or disable a button in the operation bar, be sure to save the node configuration after closing the interface configuration window. Otherwise, the changes will not take effect.",paraId:24},{value:"Except for node configuration, there are also some related contents about approval that can be further understood through the ",paraId:25,tocIndex:8},{value:"plugin documentation",paraId:26,tocIndex:8},{value:".",paraId:25,tocIndex:8}],A8={},q8={title:"Parallel Branch",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/parallel.md",lastUpdated:1732240239e3,description:"Parallel branch nodes enable the division of a process into multiple branches, each configurable with distinct nodes. Depending on the selected mode of the branch, the execution approach varies. When multiple operations need to be carried out simultaneously, the parallel branch node proves highly effective."},E8=[{id:"parallel-branch",depth:1,title:"Parallel Branch"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"branch-modes",depth:4,title:"Branch Modes"},{id:"example",depth:3,title:"Example"}],D8=[{value:"Parallel branch nodes enable the division of a process into multiple branches, each configurable with distinct nodes. Depending on the selected mode of the branch, the execution approach varies. When multiple operations need to be carried out simultaneously, the parallel branch node proves highly effective.",paraId:0,tocIndex:0},{value:"This feature is a built-in plugin, so no installation is necessary.",paraId:1,tocIndex:1},{value:'In the workflow configuration interface, click the plus (\u201C+\u201D) button to add a "Parallel Branch" node to the process:',paraId:2,tocIndex:3},{value:"Once a parallel branch node is added to the process, it will automatically create two sub-branches by default. You can add more branches by clicking the appropriate button. Each branch can include as many nodes as needed, and unnecessary branches can be removed by clicking the delete button at the start of the branch.",paraId:3,tocIndex:3},{value:"Parallel branch nodes offer three modes:",paraId:4,tocIndex:5},{value:"All succeeded",paraId:5,tocIndex:5},{value:': The process continues to execute nodes following the branches only if all branches succeed. If any branch terminates early\u2014whether due to failure, error, or any non-success state\u2014the entire parallel branch node terminates in that state. This is also referred to as "All Mode."',paraId:5,tocIndex:5},{value:"Any succeeded",paraId:5,tocIndex:5},{value:': The process will proceed to execute subsequent nodes once any branch succeeds. The entire parallel branch node will only terminate early if all branches fail or terminate prematurely, regardless of the reason. This is known as "Any Mode."',paraId:5,tocIndex:5},{value:"Any succeeded or failed",paraId:5,tocIndex:5},{value:': The process will continue executing subsequent nodes once any branch succeeds. However, if any branch fails, the entire parallel branch node will terminate early in that state. This is also known as "Race Mode."',paraId:5,tocIndex:5},{value:"In all modes, branches are executed sequentially from left to right. The process continues executing subsequent nodes or terminates early once the conditions of the selected mode are met.",paraId:6,tocIndex:5},{value:"Refer to the example provided in the ",paraId:7,tocIndex:6},{value:"Delay Node",paraId:8,tocIndex:6},{value:" section.",paraId:7,tocIndex:6}],O8={},R8={title:"Custom Variable",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/variable.md",lastUpdated:1732240239e3,description:"In workflows, variables can be declared or assigned values to existing ones, typically to store temporary data during the process."},M8=[{id:"custom-variable",depth:1,title:"Custom Variable"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-nodes",depth:3,title:"Creating Nodes"},{id:"configuring-nodes",depth:3,title:"Configuring Nodes"},{id:"mode",depth:4,title:"Mode"},{id:"value",depth:4,title:"Value"},{id:"using-variable-values",depth:3,title:"Using Variable Values"},{id:"example",depth:3,title:"Example"}],L8=[{value:"In workflows, variables can be declared or assigned values to existing ones, typically to store temporary data during the process.",paraId:0},{value:'To add a "Variable" node in the workflow configuration interface, click the plus (\u201C+\u201D) button in the process:',paraId:1,tocIndex:2},{value:"Like programming variables, a variable node must first be declared before it can be used or assigned a value. When creating a variable node, you must choose its mode. There are two options:",paraId:2,tocIndex:4},{value:"Declare a new variable: This creates a new variable.",paraId:3,tocIndex:4},{value:"Assign value to an existing variable: This assigns a value to a previously declared variable, effectively updating its value.",paraId:3,tocIndex:4},{value:"If the node being created is the first variable node in the process, only the declare mode is available, as there are no pre-existing variables to assign values to.",paraId:4,tocIndex:4},{value:"When assigning a value to an existing variable, you\u2019ll need to select the target variable, which is the node where the variable was originally declared:",paraId:5,tocIndex:4},{value:"The value of a variable can be of any type\u2014such as a constant (e.g., strings, numbers, booleans, dates) or another variable within the workflow.",paraId:6,tocIndex:5},{value:"In declare mode, setting a variable value is equivalent to assigning it an initial value.",paraId:7,tocIndex:5},{value:"In assign mode, setting a variable value modifies the value of the target variable to the new value, which will be used in subsequent steps.",paraId:8,tocIndex:5},{value:'In nodes following the variable node, you can use the value of the variable by selecting it from the "Node result" group. For example, in a query node, the value of a variable can be used as a query condition:',paraId:9,tocIndex:6},{value:"Variable nodes are particularly useful in branches where new values need to be calculated or combined with existing values (similar to ",paraId:10,tocIndex:7},{value:"reduce",paraId:10,tocIndex:7},{value:" or ",paraId:10,tocIndex:7},{value:"concat",paraId:10,tocIndex:7},{value:" in programming). These values can then be used after the branch ends. The following example demonstrates how to create a concatenated recipient string using loop and variable nodes.",paraId:10,tocIndex:7},{value:'Start by creating a workflow triggered by a data table update. This workflow will be activated when "Article" data is updated, and it preloads the related "Authors" relational data (used to get recipients):',paraId:11,tocIndex:7},{value:"Next, create a variable node to store the recipient string:",paraId:12,tocIndex:7},{value:"Then, create a loop branch node to iterate over the authors of the article and concatenate their details into the recipient variable:",paraId:13,tocIndex:7},{value:"Within the loop branch, first create a Operator node to concatenate the current author with the stored author string:",paraId:14,tocIndex:7},{value:"After the Operator node, create another variable node in assign mode. Select the recipient variable node as the target, and set its value to the result of the Operator node:",paraId:15,tocIndex:7},{value:"When the loop branch ends, the recipient variable will store the concatenated recipient string of all the article's authors. You can then use an HTTP request node after the loop to call the email-sending interface, passing the recipient variable\u2019s value as the recipient parameter:",paraId:16,tocIndex:7},{value:"In this way, a simple bulk email function is implemented using loop and variable nodes.",paraId:17,tocIndex:7}],N8={},z8={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/index.md",lastUpdated:1732240239e3,description:"Triggers are the entry points for workflow execution. When an event that meets the trigger conditions occurs during the application runtime, the workflow will be triggered. The type of trigger is also the type of workflow, chosen when creating the workflow and cannot be modified afterward. The currently supported trigger types are as follows:"},F8=[{id:"overview",depth:1,title:"Overview"}],B8=[{value:"Triggers are the entry points for workflow execution. When an event that meets the trigger conditions occurs during the application runtime, the workflow will be triggered. The type of trigger is also the type of workflow, chosen when creating the workflow and cannot be modified afterward. The currently supported trigger types are as follows:",paraId:0,tocIndex:0},{value:"Collection Events",paraId:1,tocIndex:0},{value:" (built-in)",paraId:2,tocIndex:0},{value:"Scheduled Tasks",paraId:3,tocIndex:0},{value:" (built-in)",paraId:2,tocIndex:0},{value:"Pre-Action Events",paraId:4,tocIndex:0},{value:" (provided by plugin @nocobase/plugin-workflow-request-interceptor)",paraId:2,tocIndex:0},{value:"Custom Action Events",paraId:5,tocIndex:0},{value:" (provided by plugin @nocobase/plugin-workflow-custom-action-trigger)",paraId:2,tocIndex:0},{value:"Post-Action Events",paraId:6,tocIndex:0},{value:" (provided by plugin @nocobase/plugin-workflow-action-trigger)",paraId:2,tocIndex:0},{value:"Approval",paraId:7,tocIndex:0},{value:" (provided by plugin @nocobase/plugin-workflow-approval)",paraId:2,tocIndex:0},{value:"The timing of each event trigger type is shown in the following diagram:",paraId:8,tocIndex:0},{value:"For example, when a user submits a form, or data in a collection changes due to user action or program calls, or when a task reaches its scheduled time, the corresponding workflow will be triggered.",paraId:9,tocIndex:0},{value:"Triggers related to data (such as actions, collection events) usually carry trigger context data. This data can be referenced in the nodes of the workflow to achieve automated data processing. For instance, when a user submits a form bound to a workflow, the submitted data will be injected into the context environment of the execution plan, allowing subsequent nodes to use it as variables.",paraId:10,tocIndex:0},{value:"After creating a workflow, the trigger will appear as an entry node at the beginning of the flow on the workflow view page. Click the card to open the configuration drawer. Depending on the trigger type, relevant conditions can be configured.",paraId:11,tocIndex:0}],j8={},H8={title:"Approval Relevant Blocks",toc:"menu",filename:"docs/en-US/handbook/workflow-approval/block.md",lastUpdated:1732240239e3,description:"In the data details pop-up for a submitted item, an approval block can be configured to display the relevant approval records and provide entry points for processing them:"},W8=[{id:"approval-relevant-blocks",depth:1,title:"Approval Relevant Blocks"},{id:"approval-block-in-data-details",depth:2,title:"Approval Block in Data Details"},{id:"actions-by-the-initiator",depth:3,title:"Actions by the Initiator"},{id:"actions-by-the-approver",depth:3,title:"Actions by the Approver"},{id:"approval-center-block",depth:2,title:"Approval Center Block"}],$8=[{value:"In the data details pop-up for a submitted item, an approval block can be configured to display the relevant approval records and provide entry points for processing them:",paraId:0,tocIndex:1},{value:"The approval block displays the basic application information and approval history. The initiator can view the details of their submitted application within the pop-up. If retraction is enabled and the process is still in its initial approval stage\u2014before any approver has taken action\u2014the initiator can withdraw the application:",paraId:1,tocIndex:2},{value:"If the initiator withdraws the application, the withdrawal record will appear in the approval block. By clicking on it, the application pop-up will reopen:",paraId:2,tocIndex:2},{value:"The pop-up's content remains unchanged, allowing the initiator to make adjustments and resubmit:",paraId:3,tocIndex:2},{value:'Approvers can also review the approval content through this block. In the processing history, if the logged-in user is one of the persons responsible for a node, a "View" button will appear in the details column. Clicking it will open the approval pop-up:',paraId:4,tocIndex:3},{value:"The pop-up will display the approver's interface for that approval node, typically including the approval details and an action bar:",paraId:5,tocIndex:3},{value:"Approvers can take actions such as approve, reject, or return within the pop-up. After an action is taken, a corresponding record will be added to the processing history. If the action is a return, the initiator can modify the application and resubmit it:",paraId:6,tocIndex:3},{value:"Approving or rejecting will trigger the corresponding status based on the node's configured rules:",paraId:7,tocIndex:3},{value:'The approval plugin offers two global blocks for centrally managing approval processes: "Initiations" and "Todos":',paraId:8,tocIndex:4},{value:`The "Initiations" block provides the initiator's perspective, allowing the user to initiate a new approval from the block's action bar:`,paraId:9,tocIndex:4},{value:'If the approval trigger is configured "Initiate and approve in both data blocks and global approval blocks", the corresponding approval process will appear in the drop-down menu under the "Initiate" button.',paraId:10,tocIndex:4},{value:"Users can also monitor the status of approvals they have initiated:",paraId:11,tocIndex:4},{value:`Clicking "View" opens a pop-up similar to the approval block in data details. The key difference is that the initiator's submission and the approval history are displayed on separate tabs:`,paraId:12,tocIndex:4},{value:`The "Todos" block serves the approver's perspective, allowing users to view pending approvals. Clicking the corresponding "View" button opens a processing pop-up, similar to the approval block in data details, with the distinction that the approver's form and the approval history are shown on separate tabs:`,paraId:13,tocIndex:4},{value:"If the approval has already been processed, the submitted content is displayed as is and cannot be modified.",paraId:14,tocIndex:4}],G8={},V8={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow-approval/index.md",lastUpdated:1732240239e3,description:'Approval processes are tailored specifically for workflows initiated and managed by individuals to determine the status of related data. Commonly employed in office automation and other scenarios requiring human decision-making, these processes include creating and managing workflows such as "Leave Requests," "Expense Reimbursement Approvals," and "Material Procurement Approvals."'},K8=[{id:"overview",depth:1,title:"Overview"},{id:"user-manual",depth:2,title:"User Manual"}],Z8=[{value:'Approval processes are tailored specifically for workflows initiated and managed by individuals to determine the status of related data. Commonly employed in office automation and other scenarios requiring human decision-making, these processes include creating and managing workflows such as "Leave Requests," "Expense Reimbursement Approvals," and "Material Procurement Approvals."',paraId:0},{value:`The approval plugin offers a dedicated workflow type (trigger) known as "Approval (Event)" and a specialized "Approval" node. When paired with NocoBase's unique custom data tables and blocks, it enables the rapid and flexible creation and management of various approval scenarios.`,paraId:1},{value:"The approval process is organized into several key sections:",paraId:2,tocIndex:1},{value:"Trigger Configuration",paraId:3,tocIndex:1},{value:"Approval Node Configuration",paraId:4,tocIndex:1},{value:"Initiate Approval Configuration",paraId:5,tocIndex:1},{value:"Approval Relevant Blocks",paraId:6,tocIndex:1},{value:"For a deeper dive into these concepts, see ",paraId:7,tocIndex:1},{value:"Advanced",paraId:8,tocIndex:1},{value:".",paraId:7,tocIndex:1},{value:"To invoke this process from an external system, consult ",paraId:9,tocIndex:1},{value:"HTTP API",paraId:10,tocIndex:1},{value:".",paraId:9,tocIndex:1}],Y8={},Q8={title:"Example",toc:"menu",filename:"docs/en-US/handbook/workflow-manual/example.md",lastUpdated:1732240239e3,description:'Imagine a scenario where a regular user submits an article. Before this article can be published, it must be reviewed and approved by an administrator. If the article does not pass this review process, it will remain in draft form, unpublished. This entire workflow can be implemented using an "Update Form" node within a manual process.'},J8=[{id:"example",depth:1,title:"Example"},{id:"article-review",depth:3,title:"Article Review"},{id:"leave-approval",depth:3,title:"Leave Approval"}],X8=[{value:'Imagine a scenario where a regular user submits an article. Before this article can be published, it must be reviewed and approved by an administrator. If the article does not pass this review process, it will remain in draft form, unpublished. This entire workflow can be implemented using an "Update Form" node within a manual process.',paraId:0,tocIndex:1},{value:'To start, create a workflow that is triggered by the action "Add Article" and then add a manual node to it:',paraId:1,tocIndex:1},{value:` +`,paraId:14,tocIndex:1}],K7={},Z7={title:"Export Pro",toc:"menu",filename:"docs/en-US/handbook/action-export-pro/index.md",lastUpdated:173254844e4,description:"The plugin is currently under development."},Y7=[{id:"export-pro",depth:1,title:"Export Pro"},{id:"introduction",depth:2,title:"Introduction"}],Q7=[{value:"The plugin is currently under development.",paraId:0}],J7={},X7={title:"Import Pro",toc:"menu",filename:"docs/en-US/handbook/action-import-pro/index.md",lastUpdated:173254844e4,description:"The plugin is currently under development."},e9=[{id:"import-pro",depth:1,title:"Import Pro"},{id:"introduction",depth:2,title:"Introduction"}],a9=[{value:"The plugin is currently under development.",paraId:0}],t9={},n9={title:"Multi-App Manager",toc:"menu",filename:"docs/en-US/handbook/multi-app-manager/index.md",lastUpdated:173254844e4,description:"Dynamically manage multiple applications without the need for separate deployments, with each application being an independent instance."},o9=[{id:"multi-app-manager",depth:1,title:"Multi-App Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"adding-applications",depth:3,title:"Adding Applications"},{id:"starting-methods",depth:3,title:"Starting Methods"},{id:"custom-domain-name",depth:3,title:"Custom Domain Name"},{id:"display-in-the-menu",depth:3,title:"Display in the Menu"}],r9=[{value:"Dynamically manage multiple applications without the need for separate deployments, with each application being an independent instance.",paraId:0,tocIndex:1},{value:'The multi-app management plugin does not provide the capability for user sharing. It can be integrated through the "',paraId:1},{value:"Authentication plugin",paraId:2},{value:'" or handled using the "',paraId:1},{value:"App Switching plugin",paraId:3},{value:'".',paraId:1},{value:"This is a preset plugin that needs to be activated before use.",paraId:4,tocIndex:2},{value:"Two starting methods are provided:",paraId:5,tocIndex:5},{value:"Start on first visit: The sub-application starts only when a user visits the sub-application's URL for the first time;",paraId:6,tocIndex:5},{value:"Start with the main application: When the main application starts, the sub-applications start as well, which increases the startup time of the main application.",paraId:6,tocIndex:5},{value:"Sub-applications can be accessed via subpaths ",paraId:7,tocIndex:6},{value:"/apps/:appName/admin/",paraId:7,tocIndex:6},{value:", for example:",paraId:7,tocIndex:6},{value:`http://localhost:13000/apps/a_7zkxoarusnx/admin/z45sjaukasd +`,paraId:8,tocIndex:6},{value:"Additionally, sub-applications can be configured with independent subdomains, which require domain resolution to the current IP. If nginx is used, the domain also needs to be added in the nginx configuration.",paraId:9,tocIndex:6},{value:`The list of sub-applications displayed in the current right drop-down menu is only a set of quick links. Users are not shared; sub-applications require login and can only be used by the main application's root account. Full application switching capabilities will be provided in the commercial plugin "`,paraId:10},{value:"App Switching",paraId:10},{value:'".',paraId:10}],d9={},i9={title:"Delete",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/delete.md",lastUpdated:173254844e4,description:"The delete operation allows for the removal of data records. This can be done by configuring a row deletion button or utilizing the bulk action button for multiple records at once."},l9=[{id:"delete",depth:2,title:"Delete"},{id:"introduction",depth:3,title:"Introduction"},{id:"operation-configuration-items",depth:3,title:"Operation Configuration Items"}],c9=[{value:"The delete operation allows for the removal of data records. This can be done by configuring a row deletion button or utilizing the bulk action button for multiple records at once.",paraId:0,tocIndex:1},{value:"Edit Button",paraId:1,tocIndex:2},{value:"Secondary Confirmation",paraId:2,tocIndex:2},{value:"Refresh data after execution: Enabled by default, this option automatically refreshes the block data once the operation is successfully completed.",paraId:3,tocIndex:2}],s9={},u9={title:"Filter",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/filter.md",lastUpdated:173254844e4,description:"Filtering operations are commonly found within data blocks, allowing users to filter data by setting various conditions. It's essential to note that if a data block has a predefined data range, the filtering criteria will be combined with the range conditions to create the final filtering rules."},p9=[{id:"filter",depth:1,title:"Filter"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"},{id:"filterable-fields",depth:3,title:"Filterable Fields"}],I9=[{value:"Filtering operations are commonly found within data blocks, allowing users to filter data by setting various conditions. It's essential to note that if a data block has a predefined data range, the filtering criteria will be combined with the range conditions to create the final filtering rules.",paraId:0,tocIndex:1},{value:"By default, all fields in the table are enabled, and only enabled fields can be selected from the condition field list.",paraId:1,tocIndex:3},{value:"Fields from related tables can also be used as filterable fields.",paraId:2,tocIndex:3},{value:"Edit Button",paraId:3,tocIndex:3}],_9={},v9={title:"Custom Pop-up",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/pop-up.md",lastUpdated:173254844e4,description:"The custom pop-up feature functions much like the view and edit actions. It's part of the table's row buttons and uses the current record as its context. Users can set up multiple pop-up actions within the row operations of a table."},m9=[{id:"custom-pop-up",depth:1,title:"Custom Pop-up"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"}],h9=[{value:"The custom pop-up feature functions much like the view and edit actions. It's part of the table's row buttons and uses the current record as its context. Users can set up multiple pop-up actions within the row operations of a table.",paraId:0,tocIndex:1},{value:"Configure blocks as needed in the pop-up window.",paraId:1,tocIndex:1},{value:"Edit Button",paraId:2,tocIndex:2},{value:": Customize the title, color, and icon of the edit button",paraId:3,tocIndex:2},{value:"Linkage Rule",paraId:4,tocIndex:2},{value:": Dynamically control the button\u2019s state (Visible/Disabled)",paraId:3,tocIndex:2},{value:"Open Mode",paraId:5,tocIndex:2},{value:": Pop-up/Drawer",paraId:3,tocIndex:2},{value:"Pop-up Size",paraId:6,tocIndex:2},{value:": The default size is Middle(Large/Middle/Small)",paraId:3,tocIndex:2}],f9={},x9={title:"Submit",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/submit.md",lastUpdated:173254844e4,description:"The submission function is designed to save form data (unique to form blocks) and can be integrated with workflows to streamline data automation."},g9=[{id:"submit",depth:1,title:"Submit"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"},{id:"save-mode",depth:3,title:"Save Mode"},{id:"bind-workflows",depth:3,title:"Bind Workflows"}],b9=[{value:"The submission function is designed to save form data (unique to form blocks) and can be integrated with workflows to streamline data automation.",paraId:0,tocIndex:1},{value:"The submission operation for form blocks that only add new data supports configuring the save method.",paraId:1,tocIndex:3},{value:"Insert and create new records directly;",paraId:2,tocIndex:3},{value:"Insert only if the record doesn't exist (requires fields to determine the record\u2019s existence);",paraId:2,tocIndex:3},{value:"Insert if the record doesn't exist, otherwise update (requires fields to check for existing records).",paraId:2,tocIndex:3},{value:"The bound workflow will only be triggered once the data has been successfully submitted.",paraId:3,tocIndex:4},{value:"For further details, see ",paraId:4,tocIndex:4},{value:"Bind Workflows",paraId:5,tocIndex:4},{value:".",paraId:4,tocIndex:4},{value:"Edit Button",paraId:6,tocIndex:4},{value:"Secondary Confirmation",paraId:7,tocIndex:4}],y9={},w9={title:"UI Schema Storage",toc:"menu",filename:"docs/en-US/handbook/ui-schema-storage/index.md",lastUpdated:173254844e4,description:"Document pending."},k9=[{id:"ui-schema-storage",depth:1,title:"UI Schema Storage"}],S9=[{value:"Document pending.",paraId:0}],U9={},P9={title:"Approval",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/approval.md",lastUpdated:173254844e4,description:'In an approval workflow, a dedicated "Approval" node is required to configure the logic for approvers to handle (approve, reject, or return) the initiated approval request. This "Approval" node is exclusively used within approval workflows.'},T9=[{id:"approval",depth:1,title:"Approval"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"pass-modes",depth:2,title:"Pass Modes"},{id:"approvers",depth:2,title:"Approvers"},{id:"negotiation-modes",depth:2,title:"Negotiation Modes"},{id:"processing-order",depth:2,title:"Processing Order"},{id:"exit-workflow-after-rejection-branch-completion",depth:2,title:"Exit Workflow After Rejection Branch Completion"},{id:"approver-interface-configuration",depth:2,title:"Approver Interface Configuration"},{id:"related-content",depth:2,title:"Related Content"}],C9=[{value:'In an approval workflow, a dedicated "Approval" node is required to configure the logic for approvers to handle (approve, reject, or return) the initiated approval request. This "Approval" node is exclusively used within approval workflows.',paraId:0},{value:'Difference from the general "Manual" node:',paraId:1},{value:' The general "Manual" node is versatile and can be used across various workflows for manual data input, decision-making on process continuation, and other scenarios. In contrast, the "Approval" Node is specialized for approval workflows and is not applicable in other types of workflows.',paraId:1},{value:'To create an "Approval" node, click the plus sign ("+") in the workflow. Then, select one of the available pass modes to configure the approval node:',paraId:2,tocIndex:1},{value:"There are two pass modes available:",paraId:3,tocIndex:2},{value:"Direct Pass Mode: This mode is ideal for simpler workflows, where the outcome at the approval node determines whether the process ends. If the request is not approved, the process exits immediately.",paraId:4,tocIndex:2},{value:"Branching Mode: This mode is typically used for more complex workflows. After the approval node produces a result, subsequent nodes can execute within the resulting branches.",paraId:5,tocIndex:2},{value:'If the node is configured with a "Return" operation, a "Return" branch will be created, and the process will forcibly exit after the return branch is completed.',paraId:6,tocIndex:2},{value:'Once this node is "approved," the process continues through both the pass branch and the subsequent workflow. Following a "reject" operation, the default setting allows the process to continue through the subsequent workflow, although you can configure the node to end the process after executing the rejection branch.',paraId:7,tocIndex:2},{value:"The pass mode cannot be modified once the node is created.",paraId:8},{value:"Approvers are the users responsible for the approval actions at the node. They can consist of one or more users, selected from a static list or a dynamic value specified by a variable.",paraId:9,tocIndex:3},{value:"When using a variable, only primary keys or foreign keys from user data in the context and node results can be selected. If the selected variable is an array (in cases of many-to-many relationships), each user in the array will be merged into the overall approver collection.",paraId:10,tocIndex:3},{value:"If there is only one approver (including cases where multiple variables are deduplicated), the approval will be handled solely by that user, regardless of the negotiation mode chosen.",paraId:11,tocIndex:4},{value:"For multiple approvers, the selected negotiation mode determines the handling method:",paraId:12,tocIndex:4},{value:"Or: The node passes with the approval of any one person; all must reject for the node to be rejected.",paraId:13,tocIndex:4},{value:"And: The node passes only if all approvers approve; a single rejection results in rejection.",paraId:13,tocIndex:4},{value:"Voting: The node passes if a majority (as specified) of approvers approve; otherwise, the node is rejected.",paraId:13,tocIndex:4},{value:"For the return operation, if any user in the approver collection opts for a return, the node will directly exit the workflow.",paraId:14,tocIndex:4},{value:"For multiple approvers, the processing order dictates the sequence of actions:",paraId:15,tocIndex:5},{value:"Parallelly: All approvers can act in any order, with no sequence required.",paraId:16,tocIndex:5},{value:"Sequentially: Approvers act in the order defined in the approver collection, where each subsequent user can only proceed after the previous one has submitted their decision.",paraId:16,tocIndex:5},{value:'Regardless of whether "Sequentially" processing is set, the results generated will follow the rules outlined in the "Negotiation Modes" section, with the node completing execution once the conditions are met.',paraId:17,tocIndex:5},{value:'When "Branch Mode" is set for "Pass Mode," you can opt to exit the workflow after the rejection branch is completed. If selected, a "\u2717" symbol will appear at the end of the rejection branch, indicating that no further nodes will be executed after this branch concludes:',paraId:18,tocIndex:6},{value:"The approver interface configuration provides the interface for approvers when the workflow reaches this node. Click the configuration button to open the settings window:",paraId:19,tocIndex:7},{value:"In this configuration window, you can add blocks such as approval submission details, operation bars, and custom prompt text:",paraId:20,tocIndex:7},{value:"The approval content details block includes the data submitted by the initiator. Similar to a standard data block, you can freely add field components from the data table and arrange them to organize the content that the approver needs to review:",paraId:21,tocIndex:7},{value:'The operation bar can include buttons supported by this node, such as "Approve," "Reject," and "Return":',paraId:22,tocIndex:7},{value:'Additionally, the operation bar can include fields for approvers to fill out, such as a "Comment" field.',paraId:23,tocIndex:7},{value:"If you enable or disable a button in the operation bar, be sure to save the node configuration after closing the interface configuration window. Otherwise, the changes will not take effect.",paraId:24},{value:"Except for node configuration, there are also some related contents about approval that can be further understood through the ",paraId:25,tocIndex:8},{value:"plugin documentation",paraId:26,tocIndex:8},{value:".",paraId:25,tocIndex:8}],A9={},q9={title:"Parallel Branch",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/parallel.md",lastUpdated:173254844e4,description:"Parallel branch nodes enable the division of a process into multiple branches, each configurable with distinct nodes. Depending on the selected mode of the branch, the execution approach varies. When multiple operations need to be carried out simultaneously, the parallel branch node proves highly effective."},E9=[{id:"parallel-branch",depth:1,title:"Parallel Branch"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"branch-modes",depth:4,title:"Branch Modes"},{id:"example",depth:3,title:"Example"}],D9=[{value:"Parallel branch nodes enable the division of a process into multiple branches, each configurable with distinct nodes. Depending on the selected mode of the branch, the execution approach varies. When multiple operations need to be carried out simultaneously, the parallel branch node proves highly effective.",paraId:0,tocIndex:0},{value:"This feature is a built-in plugin, so no installation is necessary.",paraId:1,tocIndex:1},{value:'In the workflow configuration interface, click the plus (\u201C+\u201D) button to add a "Parallel Branch" node to the process:',paraId:2,tocIndex:3},{value:"Once a parallel branch node is added to the process, it will automatically create two sub-branches by default. You can add more branches by clicking the appropriate button. Each branch can include as many nodes as needed, and unnecessary branches can be removed by clicking the delete button at the start of the branch.",paraId:3,tocIndex:3},{value:"Parallel branch nodes offer three modes:",paraId:4,tocIndex:5},{value:"All succeeded",paraId:5,tocIndex:5},{value:': The process continues to execute nodes following the branches only if all branches succeed. If any branch terminates early\u2014whether due to failure, error, or any non-success state\u2014the entire parallel branch node terminates in that state. This is also referred to as "All Mode."',paraId:5,tocIndex:5},{value:"Any succeeded",paraId:5,tocIndex:5},{value:': The process will proceed to execute subsequent nodes once any branch succeeds. The entire parallel branch node will only terminate early if all branches fail or terminate prematurely, regardless of the reason. This is known as "Any Mode."',paraId:5,tocIndex:5},{value:"Any succeeded or failed",paraId:5,tocIndex:5},{value:': The process will continue executing subsequent nodes once any branch succeeds. However, if any branch fails, the entire parallel branch node will terminate early in that state. This is also known as "Race Mode."',paraId:5,tocIndex:5},{value:"In all modes, branches are executed sequentially from left to right. The process continues executing subsequent nodes or terminates early once the conditions of the selected mode are met.",paraId:6,tocIndex:5},{value:"Refer to the example provided in the ",paraId:7,tocIndex:6},{value:"Delay Node",paraId:8,tocIndex:6},{value:" section.",paraId:7,tocIndex:6}],O9={},R9={title:"Custom Variable",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/variable.md",lastUpdated:173254844e4,description:"In workflows, variables can be declared or assigned values to existing ones, typically to store temporary data during the process."},M9=[{id:"custom-variable",depth:1,title:"Custom Variable"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-nodes",depth:3,title:"Creating Nodes"},{id:"configuring-nodes",depth:3,title:"Configuring Nodes"},{id:"mode",depth:4,title:"Mode"},{id:"value",depth:4,title:"Value"},{id:"using-variable-values",depth:3,title:"Using Variable Values"},{id:"example",depth:3,title:"Example"}],L9=[{value:"In workflows, variables can be declared or assigned values to existing ones, typically to store temporary data during the process.",paraId:0},{value:'To add a "Variable" node in the workflow configuration interface, click the plus (\u201C+\u201D) button in the process:',paraId:1,tocIndex:2},{value:"Like programming variables, a variable node must first be declared before it can be used or assigned a value. When creating a variable node, you must choose its mode. There are two options:",paraId:2,tocIndex:4},{value:"Declare a new variable: This creates a new variable.",paraId:3,tocIndex:4},{value:"Assign value to an existing variable: This assigns a value to a previously declared variable, effectively updating its value.",paraId:3,tocIndex:4},{value:"If the node being created is the first variable node in the process, only the declare mode is available, as there are no pre-existing variables to assign values to.",paraId:4,tocIndex:4},{value:"When assigning a value to an existing variable, you\u2019ll need to select the target variable, which is the node where the variable was originally declared:",paraId:5,tocIndex:4},{value:"The value of a variable can be of any type\u2014such as a constant (e.g., strings, numbers, booleans, dates) or another variable within the workflow.",paraId:6,tocIndex:5},{value:"In declare mode, setting a variable value is equivalent to assigning it an initial value.",paraId:7,tocIndex:5},{value:"In assign mode, setting a variable value modifies the value of the target variable to the new value, which will be used in subsequent steps.",paraId:8,tocIndex:5},{value:'In nodes following the variable node, you can use the value of the variable by selecting it from the "Node result" group. For example, in a query node, the value of a variable can be used as a query condition:',paraId:9,tocIndex:6},{value:"Variable nodes are particularly useful in branches where new values need to be calculated or combined with existing values (similar to ",paraId:10,tocIndex:7},{value:"reduce",paraId:10,tocIndex:7},{value:" or ",paraId:10,tocIndex:7},{value:"concat",paraId:10,tocIndex:7},{value:" in programming). These values can then be used after the branch ends. The following example demonstrates how to create a concatenated recipient string using loop and variable nodes.",paraId:10,tocIndex:7},{value:'Start by creating a workflow triggered by a data table update. This workflow will be activated when "Article" data is updated, and it preloads the related "Authors" relational data (used to get recipients):',paraId:11,tocIndex:7},{value:"Next, create a variable node to store the recipient string:",paraId:12,tocIndex:7},{value:"Then, create a loop branch node to iterate over the authors of the article and concatenate their details into the recipient variable:",paraId:13,tocIndex:7},{value:"Within the loop branch, first create a Operator node to concatenate the current author with the stored author string:",paraId:14,tocIndex:7},{value:"After the Operator node, create another variable node in assign mode. Select the recipient variable node as the target, and set its value to the result of the Operator node:",paraId:15,tocIndex:7},{value:"When the loop branch ends, the recipient variable will store the concatenated recipient string of all the article's authors. You can then use an HTTP request node after the loop to call the email-sending interface, passing the recipient variable\u2019s value as the recipient parameter:",paraId:16,tocIndex:7},{value:"In this way, a simple bulk email function is implemented using loop and variable nodes.",paraId:17,tocIndex:7}],N9={},z9={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow/triggers/index.md",lastUpdated:173254844e4,description:"Triggers are the entry points for workflow execution. When an event that meets the trigger conditions occurs during the application runtime, the workflow will be triggered. The type of trigger is also the type of workflow, chosen when creating the workflow and cannot be modified afterward. The currently supported trigger types are as follows:"},F9=[{id:"overview",depth:1,title:"Overview"}],B9=[{value:"Triggers are the entry points for workflow execution. When an event that meets the trigger conditions occurs during the application runtime, the workflow will be triggered. The type of trigger is also the type of workflow, chosen when creating the workflow and cannot be modified afterward. The currently supported trigger types are as follows:",paraId:0,tocIndex:0},{value:"Collection Events",paraId:1,tocIndex:0},{value:" (built-in)",paraId:2,tocIndex:0},{value:"Scheduled Tasks",paraId:3,tocIndex:0},{value:" (built-in)",paraId:2,tocIndex:0},{value:"Pre-Action Events",paraId:4,tocIndex:0},{value:" (provided by plugin @nocobase/plugin-workflow-request-interceptor)",paraId:2,tocIndex:0},{value:"Custom Action Events",paraId:5,tocIndex:0},{value:" (provided by plugin @nocobase/plugin-workflow-custom-action-trigger)",paraId:2,tocIndex:0},{value:"Post-Action Events",paraId:6,tocIndex:0},{value:" (provided by plugin @nocobase/plugin-workflow-action-trigger)",paraId:2,tocIndex:0},{value:"Approval",paraId:7,tocIndex:0},{value:" (provided by plugin @nocobase/plugin-workflow-approval)",paraId:2,tocIndex:0},{value:"The timing of each event trigger type is shown in the following diagram:",paraId:8,tocIndex:0},{value:"For example, when a user submits a form, or data in a collection changes due to user action or program calls, or when a task reaches its scheduled time, the corresponding workflow will be triggered.",paraId:9,tocIndex:0},{value:"Triggers related to data (such as actions, collection events) usually carry trigger context data. This data can be referenced in the nodes of the workflow to achieve automated data processing. For instance, when a user submits a form bound to a workflow, the submitted data will be injected into the context environment of the execution plan, allowing subsequent nodes to use it as variables.",paraId:10,tocIndex:0},{value:"After creating a workflow, the trigger will appear as an entry node at the beginning of the flow on the workflow view page. Click the card to open the configuration drawer. Depending on the trigger type, relevant conditions can be configured.",paraId:11,tocIndex:0}],j9={},H9={title:"Approval Relevant Blocks",toc:"menu",filename:"docs/en-US/handbook/workflow-approval/block.md",lastUpdated:173254844e4,description:"In the data details pop-up for a submitted item, an approval block can be configured to display the relevant approval records and provide entry points for processing them:"},W9=[{id:"approval-relevant-blocks",depth:1,title:"Approval Relevant Blocks"},{id:"approval-block-in-data-details",depth:2,title:"Approval Block in Data Details"},{id:"actions-by-the-initiator",depth:3,title:"Actions by the Initiator"},{id:"actions-by-the-approver",depth:3,title:"Actions by the Approver"},{id:"approval-center-block",depth:2,title:"Approval Center Block"}],$9=[{value:"In the data details pop-up for a submitted item, an approval block can be configured to display the relevant approval records and provide entry points for processing them:",paraId:0,tocIndex:1},{value:"The approval block displays the basic application information and approval history. The initiator can view the details of their submitted application within the pop-up. If retraction is enabled and the process is still in its initial approval stage\u2014before any approver has taken action\u2014the initiator can withdraw the application:",paraId:1,tocIndex:2},{value:"If the initiator withdraws the application, the withdrawal record will appear in the approval block. By clicking on it, the application pop-up will reopen:",paraId:2,tocIndex:2},{value:"The pop-up's content remains unchanged, allowing the initiator to make adjustments and resubmit:",paraId:3,tocIndex:2},{value:'Approvers can also review the approval content through this block. In the processing history, if the logged-in user is one of the persons responsible for a node, a "View" button will appear in the details column. Clicking it will open the approval pop-up:',paraId:4,tocIndex:3},{value:"The pop-up will display the approver's interface for that approval node, typically including the approval details and an action bar:",paraId:5,tocIndex:3},{value:"Approvers can take actions such as approve, reject, or return within the pop-up. After an action is taken, a corresponding record will be added to the processing history. If the action is a return, the initiator can modify the application and resubmit it:",paraId:6,tocIndex:3},{value:"Approving or rejecting will trigger the corresponding status based on the node's configured rules:",paraId:7,tocIndex:3},{value:'The approval plugin offers two global blocks for centrally managing approval processes: "Initiations" and "Todos":',paraId:8,tocIndex:4},{value:`The "Initiations" block provides the initiator's perspective, allowing the user to initiate a new approval from the block's action bar:`,paraId:9,tocIndex:4},{value:'If the approval trigger is configured "Initiate and approve in both data blocks and global approval blocks", the corresponding approval process will appear in the drop-down menu under the "Initiate" button.',paraId:10,tocIndex:4},{value:"Users can also monitor the status of approvals they have initiated:",paraId:11,tocIndex:4},{value:`Clicking "View" opens a pop-up similar to the approval block in data details. The key difference is that the initiator's submission and the approval history are displayed on separate tabs:`,paraId:12,tocIndex:4},{value:`The "Todos" block serves the approver's perspective, allowing users to view pending approvals. Clicking the corresponding "View" button opens a processing pop-up, similar to the approval block in data details, with the distinction that the approver's form and the approval history are shown on separate tabs:`,paraId:13,tocIndex:4},{value:"If the approval has already been processed, the submitted content is displayed as is and cannot be modified.",paraId:14,tocIndex:4}],G9={},V9={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow-approval/index.md",lastUpdated:173254844e4,description:'Approval processes are tailored specifically for workflows initiated and managed by individuals to determine the status of related data. Commonly employed in office automation and other scenarios requiring human decision-making, these processes include creating and managing workflows such as "Leave Requests," "Expense Reimbursement Approvals," and "Material Procurement Approvals."'},K9=[{id:"overview",depth:1,title:"Overview"},{id:"user-manual",depth:2,title:"User Manual"}],Z9=[{value:'Approval processes are tailored specifically for workflows initiated and managed by individuals to determine the status of related data. Commonly employed in office automation and other scenarios requiring human decision-making, these processes include creating and managing workflows such as "Leave Requests," "Expense Reimbursement Approvals," and "Material Procurement Approvals."',paraId:0},{value:`The approval plugin offers a dedicated workflow type (trigger) known as "Approval (Event)" and a specialized "Approval" node. When paired with NocoBase's unique custom data tables and blocks, it enables the rapid and flexible creation and management of various approval scenarios.`,paraId:1},{value:"The approval process is organized into several key sections:",paraId:2,tocIndex:1},{value:"Trigger Configuration",paraId:3,tocIndex:1},{value:"Approval Node Configuration",paraId:4,tocIndex:1},{value:"Initiate Approval Configuration",paraId:5,tocIndex:1},{value:"Approval Relevant Blocks",paraId:6,tocIndex:1},{value:"For a deeper dive into these concepts, see ",paraId:7,tocIndex:1},{value:"Advanced",paraId:8,tocIndex:1},{value:".",paraId:7,tocIndex:1},{value:"To invoke this process from an external system, consult ",paraId:9,tocIndex:1},{value:"HTTP API",paraId:10,tocIndex:1},{value:".",paraId:9,tocIndex:1}],Y9={},Q9={title:"Example",toc:"menu",filename:"docs/en-US/handbook/workflow-manual/example.md",lastUpdated:173254844e4,description:'Imagine a scenario where a regular user submits an article. Before this article can be published, it must be reviewed and approved by an administrator. If the article does not pass this review process, it will remain in draft form, unpublished. This entire workflow can be implemented using an "Update Form" node within a manual process.'},J9=[{id:"example",depth:1,title:"Example"},{id:"article-review",depth:3,title:"Article Review"},{id:"leave-approval",depth:3,title:"Leave Approval"}],X9=[{value:'Imagine a scenario where a regular user submits an article. Before this article can be published, it must be reviewed and approved by an administrator. If the article does not pass this review process, it will remain in draft form, unpublished. This entire workflow can be implemented using an "Update Form" node within a manual process.',paraId:0,tocIndex:1},{value:'To start, create a workflow that is triggered by the action "Add Article" and then add a manual node to it:',paraId:1,tocIndex:1},{value:` `,paraId:2},{value:"Within this manual node, assign the responsibility to an administrator. Next, in the configuration interface, add a block that displays the details of the newly added article based on the trigger data:",paraId:3,tocIndex:1},{value:` `,paraId:2},{value:'Following this, add a block that utilizes the "Update Data Form" in the configuration interface. This block should be linked to the article table, allowing the administrator to decide whether the article should be approved. Once the form is added, a "Continue the process" button will be automatically generated, signaling approval if clicked. Additionally, you should add a "Terminate the process" button to handle cases where the article is rejected:',paraId:4,tocIndex:1},{value:` `,paraId:2},{value:"When the process continues, the status of the article will need to be updated. There are two primary ways to handle this. The first method involves displaying the article's status field directly within the form, giving the operator the choice. This method is particularly useful for scenarios where the form requires active input, such as providing feedback:",paraId:5,tocIndex:1},{value:` @@ -11454,13 +11506,13 @@ export default defineCollection({ `,paraId:2},{value:'Based on the article details, the administrator can then decide whether the article should be published. If approved, clicking the "Pass" button will update the article to a published status. If rejected, clicking the "Reject" button will ensure that the article remains in draft status.',paraId:10,tocIndex:1},{value:"Now, consider a scenario where an employee needs to request leave. This leave request must be approved by a supervisor before it can take effect, and the corresponding leave data for the employee will be adjusted accordingly. Regardless of whether the request is approved or rejected, a notification SMS will be sent to the employee using a request node (as detailed in the ",paraId:11,tocIndex:2},{value:"HTTP Request",paraId:12,tocIndex:2},{value:" section). This process can be efficiently managed using a custom form within a manual node.",paraId:11,tocIndex:2},{value:'Start by creating a workflow triggered by "Add Leave Request" and then add a manual node, similar to the article review process. However, in this case, the responsible person is the supervisor. Add a block based on the trigger data in the configuration interface to display the details of the newly submitted leave request. Then, add a block based on a custom form where the supervisor can decide whether to approve the request. This custom form should include fields for the approval status and reasons for rejection:',paraId:13,tocIndex:2},{value:` `,paraId:2},{value:`Unlike the article review process, because subsequent steps depend on the supervisor's decision, only a "Continue Process" button is configured here for submission purposes, omitting the "Terminate Process" button.`,paraId:14,tocIndex:2},{value:"Additionally, after the manual node, a condition node can be added to determine whether the supervisor approved the leave request. In the approved branch, you would add a data processing node to adjust the leave data, and after the branch ends, include a request node to send an SMS notification to the employee. This would complete the process as shown below:",paraId:15,tocIndex:2},{value:` `,paraId:2},{value:'The condition node should be configured with the following criteria: "',paraId:16,tocIndex:2},{value:"Node result / Supervisor / Process form / Approval",paraId:16,tocIndex:2},{value:" equals '",paraId:16,tocIndex:2},{value:"Approved",paraId:16,tocIndex:2},{value:`'":`,paraId:16,tocIndex:2},{value:` - `,paraId:2},{value:"The data within the request node can be tailored using the corresponding form variables from the manual node, allowing for different SMS content based on whether the request was approved or rejected. With this configuration, the workflow is now complete. Once the workflow is activated, supervisors can manage leave requests directly from their to-do tasks, with actions similar to those in the article review process.",paraId:17,tocIndex:2}],eU={},aU={title:"Parallel Branches",toc:"menu",filename:"docs/en-US/handbook/workflow-parallel/index.md",lastUpdated:1732240239e3,description:"Parallel branch nodes enable the division of a process into multiple branches, each configurable with distinct nodes. Depending on the selected mode of the branch, the execution approach varies. When multiple operations need to be carried out simultaneously, the parallel branch node proves highly effective."},tU=[{id:"parallel-branches",depth:1,title:"Parallel Branches"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"branch-modes",depth:4,title:"Branch Modes"},{id:"example",depth:3,title:"Example"}],nU=[{value:"Parallel branch nodes enable the division of a process into multiple branches, each configurable with distinct nodes. Depending on the selected mode of the branch, the execution approach varies. When multiple operations need to be carried out simultaneously, the parallel branch node proves highly effective.",paraId:0,tocIndex:0},{value:"This feature is a built-in plugin, so no installation is necessary.",paraId:1,tocIndex:1},{value:'In the workflow configuration interface, click the plus (\u201C+\u201D) button to add a "Parallel Branch" node to the process:',paraId:2,tocIndex:3},{value:"Once a parallel branch node is added to the process, it will automatically create two sub-branches by default. You can add more branches by clicking the appropriate button. Each branch can include as many nodes as needed, and unnecessary branches can be removed by clicking the delete button at the start of the branch.",paraId:3,tocIndex:3},{value:"Parallel branch nodes offer three modes:",paraId:4,tocIndex:5},{value:"All succeeded",paraId:5,tocIndex:5},{value:': The process continues to execute nodes following the branches only if all branches succeed. If any branch terminates early\u2014whether due to failure, error, or any non-success state\u2014the entire parallel branch node terminates in that state. This is also referred to as "All Mode."',paraId:5,tocIndex:5},{value:"Any succeeded",paraId:5,tocIndex:5},{value:': The process will proceed to execute subsequent nodes once any branch succeeds. The entire parallel branch node will only terminate early if all branches fail or terminate prematurely, regardless of the reason. This is known as "Any Mode."',paraId:5,tocIndex:5},{value:"Any succeeded or failed",paraId:5,tocIndex:5},{value:': The process will continue executing subsequent nodes once any branch succeeds. However, if any branch fails, the entire parallel branch node will terminate early in that state. This is also known as "Race Mode."',paraId:5,tocIndex:5},{value:"In all modes, branches are executed sequentially from left to right. The process continues executing subsequent nodes or terminates early once the conditions of the selected mode are met.",paraId:6,tocIndex:5},{value:"Refer to the example provided in the ",paraId:7,tocIndex:6},{value:"Delay Node",paraId:8,tocIndex:6},{value:" section.",paraId:7,tocIndex:6}],oU={},rU={title:"Custom Variables",toc:"menu",filename:"docs/en-US/handbook/workflow-variable/index.md",lastUpdated:1732240239e3,description:"In workflows, variables can be declared or assigned values to existing ones, typically to store temporary data during the process."},dU=[{id:"custom-variables",depth:1,title:"Custom Variables"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-nodes",depth:3,title:"Creating Nodes"},{id:"configuring-nodes",depth:3,title:"Configuring Nodes"},{id:"mode",depth:4,title:"Mode"},{id:"value",depth:4,title:"Value"},{id:"using-variable-values",depth:3,title:"Using Variable Values"},{id:"example",depth:3,title:"Example"}],iU=[{value:"In workflows, variables can be declared or assigned values to existing ones, typically to store temporary data during the process.",paraId:0},{value:'To add a "Variable" node in the workflow configuration interface, click the plus (\u201C+\u201D) button in the process:',paraId:1,tocIndex:2},{value:"Like programming variables, a variable node must first be declared before it can be used or assigned a value. When creating a variable node, you must choose its mode. There are two options:",paraId:2,tocIndex:4},{value:"Declare a new variable: This creates a new variable.",paraId:3,tocIndex:4},{value:"Assign value to an existing variable: This assigns a value to a previously declared variable, effectively updating its value.",paraId:3,tocIndex:4},{value:"If the node being created is the first variable node in the process, only the declare mode is available, as there are no pre-existing variables to assign values to.",paraId:4,tocIndex:4},{value:"When assigning a value to an existing variable, you\u2019ll need to select the target variable, which is the node where the variable was originally declared:",paraId:5,tocIndex:4},{value:"The value of a variable can be of any type\u2014such as a constant (e.g., strings, numbers, booleans, dates) or another variable within the workflow.",paraId:6,tocIndex:5},{value:"In declare mode, setting a variable value is equivalent to assigning it an initial value.",paraId:7,tocIndex:5},{value:"In assign mode, setting a variable value modifies the value of the target variable to the new value, which will be used in subsequent steps.",paraId:8,tocIndex:5},{value:'In nodes following the variable node, you can use the value of the variable by selecting it from the "Node result" group. For example, in a query node, the value of a variable can be used as a query condition:',paraId:9,tocIndex:6},{value:"Variable nodes are particularly useful in branches where new values need to be calculated or combined with existing values (similar to ",paraId:10,tocIndex:7},{value:"reduce",paraId:10,tocIndex:7},{value:" or ",paraId:10,tocIndex:7},{value:"concat",paraId:10,tocIndex:7},{value:" in programming). These values can then be used after the branch ends. The following example demonstrates how to create a concatenated recipient string using loop and variable nodes.",paraId:10,tocIndex:7},{value:'Start by creating a workflow triggered by a data table update. This workflow will be activated when "Article" data is updated, and it preloads the related "Authors" relational data (used to get recipients):',paraId:11,tocIndex:7},{value:"Next, create a variable node to store the recipient string:",paraId:12,tocIndex:7},{value:"Then, create a loop branch node to iterate over the authors of the article and concatenate their details into the recipient variable:",paraId:13,tocIndex:7},{value:"Within the loop branch, first create a Operator node to concatenate the current author with the stored author string:",paraId:14,tocIndex:7},{value:"After the Operator node, create another variable node in assign mode. Select the recipient variable node as the target, and set its value to the result of the Operator node:",paraId:15,tocIndex:7},{value:"When the loop branch ends, the recipient variable will store the concatenated recipient string of all the article's authors. You can then use an HTTP request node after the loop to call the email-sending interface, passing the recipient variable\u2019s value as the recipient parameter:",paraId:16,tocIndex:7},{value:"In this way, a simple bulk email function is implemented using loop and variable nodes.",paraId:17,tocIndex:7}],lU={},cU={title:"\u9009\u62E9\u7C7B\u578B",toc:"menu",filename:"docs/en-US/manual/collection/fields/choices.md",lastUpdated:1732240239e3},sU=[{id:"\u9009\u62E9\u7C7B\u578B",depth:1,title:"\u9009\u62E9\u7C7B\u578B"}],uU=[{value:"Checkbox",paraId:0,tocIndex:0},{value:"Single select",paraId:0,tocIndex:0},{value:"Multiple select",paraId:0,tocIndex:0},{value:"Radio group",paraId:0,tocIndex:0},{value:"Checkbox group",paraId:0,tocIndex:0},{value:"China region\uFF08\u63D2\u4EF6\u6269\u5C55\uFF09",paraId:0,tocIndex:0}],pU={},IU={title:"\u6570\u636E\u8868",toc:"menu",filename:"docs/en-US/manual/core-concepts/collections.md",lastUpdated:1732240239e3,description:"\u5F00\u53D1\u4E00\u4E2A\u7CFB\u7EDF\u4E4B\u524D\uFF0C\u6211\u4EEC\u901A\u5E38\u8981\u5BF9\u4E1A\u52A1\u8FDB\u884C\u62BD\u8C61\uFF0C\u5EFA\u7ACB\u6570\u636E\u6A21\u578B\u3002NocoBase \u7684\u6570\u636E\u8868\u7531\u5B57\u6BB5\uFF08\u5217\uFF09\u548C\u8BB0\u5F55\uFF08\u884C\uFF09\u7EC4\u6210\u3002\u6570\u636E\u8868\u7684\u6982\u5FF5\u4E0E\u5173\u7CFB\u578B\u6570\u636E\u5E93\u7684\u6570\u636E\u8868\u6982\u5FF5\u76F8\u8FD1\uFF0C\u4F46\u662F\u5B57\u6BB5\u7684\u6982\u5FF5\u7565\u6709\u4E0D\u540C\u3002"},_U=[{id:"\u6570\u636E\u8868",depth:1,title:"\u6570\u636E\u8868"},{id:"\u6570\u636E\u4E0E\u89C6\u56FE\u5206\u79BB",depth:2,title:"\u6570\u636E\u4E0E\u89C6\u56FE\u5206\u79BB"},{id:"\u5B57\u6BB5\u7C7B\u578B",depth:2,title:"\u5B57\u6BB5\u7C7B\u578B"}],vU=[{value:"\u5F00\u53D1\u4E00\u4E2A\u7CFB\u7EDF\u4E4B\u524D\uFF0C\u6211\u4EEC\u901A\u5E38\u8981\u5BF9\u4E1A\u52A1\u8FDB\u884C\u62BD\u8C61\uFF0C\u5EFA\u7ACB\u6570\u636E\u6A21\u578B\u3002NocoBase \u7684\u6570\u636E\u8868\u7531\u5B57\u6BB5\uFF08\u5217\uFF09\u548C\u8BB0\u5F55\uFF08\u884C\uFF09\u7EC4\u6210\u3002\u6570\u636E\u8868\u7684\u6982\u5FF5\u4E0E\u5173\u7CFB\u578B\u6570\u636E\u5E93\u7684\u6570\u636E\u8868\u6982\u5FF5\u76F8\u8FD1\uFF0C\u4F46\u662F\u5B57\u6BB5\u7684\u6982\u5FF5\u7565\u6709\u4E0D\u540C\u3002",paraId:0,tocIndex:0},{value:"\u4F8B\u5982\uFF0C\u5728\u4E00\u4E2A\u63CF\u8FF0\u8BA2\u5355\u7684\u6570\u636E\u8868\u4E2D\uFF0C\u6BCF\u5217\u5305\u542B\u7684\u662F\u8BA2\u5355\u67D0\u4E2A\u7279\u5B9A\u5C5E\u6027\u7684\u4FE1\u606F\uFF0C\u5982\u6536\u4EF6\u5730\u5740\uFF1B\u800C\u6BCF\u884C\u5219\u5305\u542B\u4E86\u67D0\u4E2A\u7279\u5B9A\u8BA2\u5355\u7684\u6240\u6709\u4FE1\u606F\uFF0C\u5982\u8BA2\u5355\u53F7\u3001\u987E\u5BA2\u59D3\u540D\u3001\u7535\u8BDD\u3001\u6536\u4EF6\u5730\u5740\u7B49\u3002",paraId:1,tocIndex:0},{value:"NocoBase \u7684",paraId:2,tocIndex:1},{value:"\u6570\u636E",paraId:2,tocIndex:1},{value:"\u548C",paraId:2,tocIndex:1},{value:"\u89C6\u56FE",paraId:2,tocIndex:1},{value:"\u662F\u5206\u79BB\u7684\uFF0C\u5206\u522B\u7531\u6570\u636E\u8868\u548C\u533A\u5757\u6765\u7BA1\u7406\u548C\u5448\u73B0\u3002",paraId:2,tocIndex:1},{value:"\u8FD9\u5C31\u610F\u5473\u7740\uFF1A",paraId:3,tocIndex:1},{value:"\u4F60\u53EF\u4EE5\u521B\u5EFA",paraId:4,tocIndex:1},{value:"\u4E00\u4E2A",paraId:4,tocIndex:1},{value:"\u6570\u636E\u8868\uFF0C\u5E76\u4E3A\u5176\u8BBE\u8BA1",paraId:4,tocIndex:1},{value:"\u4E00\u5957",paraId:4,tocIndex:1},{value:"\u754C\u9762\uFF0C\u5B9E\u73B0\u6570\u636E\u7684\u5C55\u793A\u548C\u64CD\u4F5C\uFF1B",paraId:4,tocIndex:1},{value:"\u4F60\u4E5F\u53EF\u4EE5\u521B\u5EFA",paraId:4,tocIndex:1},{value:"\u4E00\u4E2A",paraId:4,tocIndex:1},{value:"\u6570\u636E\u8868\uFF0C\u7136\u540E\u4E3A\u5176\u8BBE\u8BA1",paraId:4,tocIndex:1},{value:"\u591A\u5957",paraId:4,tocIndex:1},{value:"\u754C\u9762\uFF0C\u7528\u4E8E\u4E0D\u540C\u7684\u573A\u666F\u6216\u89D2\u8272\u4E0B\u5BF9\u6570\u636E\u7684\u5C55\u793A\u548C\u64CD\u4F5C\uFF1B",paraId:4,tocIndex:1},{value:"\u4F60\u8FD8\u53EF\u4EE5\u521B\u5EFA",paraId:4,tocIndex:1},{value:"\u591A\u4E2A",paraId:4,tocIndex:1},{value:"\u6570\u636E\u8868\uFF0C\u7136\u540E\u4E3A\u5176\u8BBE\u8BA1",paraId:4,tocIndex:1},{value:"\u4E00\u5957",paraId:4,tocIndex:1},{value:"\u754C\u9762\uFF0C\u5B9E\u73B0\u591A\u4E2A\u6570\u636E\u8868\u7684\u540C\u65F6\u5C55\u793A\u548C\u64CD\u4F5C\uFF1B",paraId:4,tocIndex:1},{value:"\u4F60\u751A\u81F3\u53EF\u4EE5\u521B\u5EFA",paraId:4,tocIndex:1},{value:"\u591A\u4E2A",paraId:4,tocIndex:1},{value:"\u6570\u636E\u8868\uFF0C\u7136\u540E\u4E3A\u5176\u8BBE\u8BA1",paraId:4,tocIndex:1},{value:"\u591A\u5957",paraId:4,tocIndex:1},{value:"\u754C\u9762\uFF0C\u6BCF\u5957\u754C\u9762\u90FD\u53EF\u4EE5\u64CD\u4F5C\u591A\u4E2A\u6570\u636E\u8868\u5E76\u5B8C\u6210\u72EC\u7279\u7684\u529F\u80FD\uFF1B",paraId:4,tocIndex:1},{value:"\u7B80\u5355\u8BF4\uFF0C\u6570\u636E\u4E0E\u754C\u9762\u7684\u5206\u79BB\u4F7F\u5F97",paraId:5,tocIndex:1},{value:"\u6570\u636E\u7684\u7EC4\u7EC7\u548C\u7BA1\u7406\u66F4\u52A0\u7075\u6D3B",paraId:5,tocIndex:1},{value:"\uFF0C\u5982\u4F55\u5448\u73B0\u6570\u636E\u5C31\u770B\u4F60\u5982\u4F55\u914D\u7F6E\u754C\u9762\u3002",paraId:5,tocIndex:1},{value:"NocoBase \u76EE\u524D\u652F\u6301\u4EE5\u4E0B\u51E0\u5341\u79CD\u5B57\u6BB5\uFF0C\u672A\u6765\u53EF\u4EE5\u901A\u8FC7\u63D2\u4EF6\u7684\u65B9\u5F0F\u652F\u6301\u66F4\u591A\u79CD\u3002",paraId:6,tocIndex:2},{value:"\u540D\u79F0",paraId:7,tocIndex:2},{value:"\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u5355\u884C\u6587\u672C",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u56FE\u6807",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u591A\u884C\u6587\u672C",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u5BC6\u7801",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u624B\u673A\u53F7\u7801",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u6570\u5B57",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u6574\u6570",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u7535\u5B50\u90AE\u7BB1",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u767E\u5206\u6BD4",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u4E0B\u62C9\u83DC\u5355\uFF08\u5355\u9009\uFF09",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u4E0B\u62C9\u83DC\u5355\uFF08\u591A\u9009\uFF09",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u4E2D\u56FD\u884C\u653F\u533A",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u52FE\u9009",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u5355\u9009\u6846",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u590D\u9009\u6846",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u5173\u8054",paraId:7,tocIndex:2},{value:"\u5173\u7CFB\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u4E00\u5BF9\u4E00\uFF08belongs to\uFF09",paraId:7,tocIndex:2},{value:"\u5173\u7CFB\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u4E00\u5BF9\u4E00\uFF08has one\uFF09",paraId:7,tocIndex:2},{value:"\u5173\u7CFB\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u4E00\u5BF9\u591A",paraId:7,tocIndex:2},{value:"\u5173\u7CFB\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u591A\u5BF9\u4E00",paraId:7,tocIndex:2},{value:"\u5173\u7CFB\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u591A\u5BF9\u591A",paraId:7,tocIndex:2},{value:"\u5173\u7CFB\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u516C\u5F0F",paraId:7,tocIndex:2},{value:"\u9AD8\u7EA7\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u81EA\u52A8\u7F16\u7801",paraId:7,tocIndex:2},{value:"\u9AD8\u7EA7\u7C7B\u578B",paraId:7,tocIndex:2},{value:"JSON",paraId:7,tocIndex:2},{value:"\u9AD8\u7EA7\u7C7B\u578B",paraId:7,tocIndex:2},{value:"Markdown",paraId:7,tocIndex:2},{value:"\u591A\u5A92\u4F53",paraId:7,tocIndex:2},{value:"\u5BCC\u6587\u672C",paraId:7,tocIndex:2},{value:"\u591A\u5A92\u4F53",paraId:7,tocIndex:2},{value:"\u9644\u4EF6",paraId:7,tocIndex:2},{value:"\u591A\u5A92\u4F53",paraId:7,tocIndex:2},{value:"\u65E5\u671F",paraId:7,tocIndex:2},{value:"\u65E5\u671F&\u65F6\u95F4",paraId:7,tocIndex:2},{value:"\u65F6\u95F4",paraId:7,tocIndex:2},{value:"\u65E5\u671F&\u65F6\u95F4",paraId:7,tocIndex:2},{value:"ID",paraId:7,tocIndex:2},{value:"\u7CFB\u7EDF\u4FE1\u606F",paraId:7,tocIndex:2},{value:"\u521B\u5EFA\u4EBA",paraId:7,tocIndex:2},{value:"\u7CFB\u7EDF\u4FE1\u606F",paraId:7,tocIndex:2},{value:"\u521B\u5EFA\u65E5\u671F",paraId:7,tocIndex:2},{value:"\u7CFB\u7EDF\u4FE1\u606F",paraId:7,tocIndex:2},{value:"\u6700\u540E\u4FEE\u6539\u4EBA",paraId:7,tocIndex:2},{value:"\u7CFB\u7EDF\u4FE1\u606F",paraId:7,tocIndex:2},{value:"\u6700\u540E\u4FEE\u6539\u65E5\u671F",paraId:7,tocIndex:2},{value:"\u7CFB\u7EDF\u4FE1\u606F",paraId:7,tocIndex:2}],mU={},hU={title:"\u7B5B\u9009\u533A\u5757",toc:"menu",filename:"docs/en-US/manual/data-visualization/filter.md",lastUpdated:1732240239e3,description:"\u56FE\u8868\u533A\u5757\u4E2D\u7684\u7B5B\u9009\u533A\u5757\uFF0C\u7528\u4E8E\u5BF9\u5F53\u524D\u56FE\u8868\u533A\u5757\u5167\u7684\u591A\u4E2A\u56FE\u8868\u8FDB\u884C\u52A8\u6001\u7B5B\u9009\u3002"},fU=[{id:"\u7B5B\u9009\u533A\u5757",depth:1,title:"\u7B5B\u9009\u533A\u5757"},{id:"\u542F\u7528\u7981\u7528",depth:2,title:"\u542F\u7528/\u7981\u7528"},{id:"\u914D\u7F6E\u7B5B\u9009\u5B57\u6BB5",depth:2,title:"\u914D\u7F6E\u7B5B\u9009\u5B57\u6BB5"},{id:"\u6570\u636E\u8868\u5B57\u6BB5",depth:3,title:"\u6570\u636E\u8868\u5B57\u6BB5"},{id:"\u81EA\u5B9A\u4E49\u5B57\u6BB5",depth:3,title:"\u81EA\u5B9A\u4E49\u5B57\u6BB5"},{id:"\u914D\u7F6E\u533A\u5757\u52A8\u4F5C",depth:2,title:"\u914D\u7F6E\u533A\u5757\u52A8\u4F5C"}],xU=[{value:"\u56FE\u8868\u533A\u5757\u4E2D\u7684\u7B5B\u9009\u533A\u5757\uFF0C\u7528\u4E8E\u5BF9\u5F53\u524D\u56FE\u8868\u533A\u5757\u5167\u7684\u591A\u4E2A\u56FE\u8868\u8FDB\u884C\u52A8\u6001\u7B5B\u9009\u3002",paraId:0,tocIndex:0},{value:"\u5728\u56FE\u8868\u533A\u5757\u4E2D\u70B9\u51FB\u201C\u6DFB\u52A0\u533A\u5757\u201D (Add block) - \u201C\u7B5B\u9009\u201D (Filter), \u53EF\u4EE5\u542F\u7528/\u7981\u7528\u7B5B\u9009\u533A\u5757\u3002",paraId:1,tocIndex:1},{value:"\u5BF9\u4E8E\u5F53\u524D\u56FE\u8868\u533A\u5757\u4E2D\u7684\u56FE\u8868\u6240\u7528\u5230\u7684\u6570\u636E\u8868\uFF0C\u76F4\u63A5\u9009\u62E9\u6570\u636E\u8868\u5BF9\u5E94\u7684\u5B57\u6BB5\uFF0C\u5373\u53EF\u521B\u5EFA\u4E00\u4E2A\u7B5B\u9009\u8868\u5355\u5B57\u6BB5\u3002",paraId:2,tocIndex:3},{value:"\u53EF\u4EE5\u5BF9\u8868\u5355\u5B57\u6BB5\u8FDB\u884C\u914D\u7F6E\uFF1A",paraId:3,tocIndex:3},{value:"\u914D\u7F6E\u5B57\u6BB5\u663E\u793A\u6807\u9898",paraId:4,tocIndex:3},{value:"\u914D\u7F6E\u5B57\u6BB5\u63CF\u8FF0",paraId:5,tocIndex:3},{value:"\u914D\u7F6E\u8BE5\u5B57\u6BB5\u5728\u7B5B\u9009\u65F6\u5E94\u7528\u7684\u64CD\u4F5C\u7B26",paraId:6,tocIndex:3},{value:`\u914D\u7F6E\u5B57\u6BB5\u9ED8\u8BA4\u503C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u53D8\u91CF\u3002\u53D8\u91CF\u7684\u6570\u636E\u7C7B\u578B\u9700\u4E0E\u5F53\u524D\u5B57\u6BB5\u6570\u636E\u7C7B\u578B\u76F8\u7B26\u3002 -`,paraId:7,tocIndex:3},{value:"\u4F8B\u5982\uFF1A",paraId:8,tocIndex:3},{value:"\u914D\u7F6E\u9ED8\u8BA4\u503C\u4E3A\u5F53\u524D\u7528\u6237ID\uFF0C\u9875\u9762\u52A0\u8F7D\u540E\u81EA\u52A8\u7B5B\u9009\u51FA\u5F53\u524D\u7528\u6237\u6570\u636E\u3002",paraId:9,tocIndex:3},{value:"\u914D\u7F6E\u9ED8\u8BA4\u503C\u4E3A\u5F53\u524D\u65E5\u671F\uFF0C\u9875\u9762\u52A0\u8F7D\u540E\u81EA\u52A8\u7B5B\u9009\u51FA\u5F53\u524D\u65E5\u671F\u6570\u636E\u3002",paraId:9,tocIndex:3},{value:"\u67D0\u4E9B\u60C5\u51B5\u4E0B\uFF0C\u53EF\u80FD\u9700\u8981\u7528\u540C\u4E00\u4E2A\u7B5B\u9009\u5B57\u6BB5\u6765\u7B5B\u9009\u4E0D\u540C\u8868\u7684\u4E0D\u540C\u5B57\u6BB5\u3002\u4F8B\u5982\uFF1A\u7528\u4E00\u4E2A\u65E5\u671F\u5B57\u6BB5\u6765\u7B5B\u9009\u4E0D\u540C\u8868\u7684\u4E0D\u540C\u65E5\u671F\u5B57\u6BB5\u3002\u8FD9\u65F6\u5019\u53EF\u4EE5\u9009\u62E9\u521B\u5EFA\u81EA\u5B9A\u4E49\u5B57\u6BB5\u3002",paraId:10,tocIndex:4},{value:"\u6DFB\u52A0\u81EA\u5B9A\u4E49\u5B57\u6BB5\u7684\u65F6\u5019\uFF0C\u9700\u8981\u8BBE\u7F6E\u5B57\u6BB5\u6807\u9898\uFF0C\u9009\u62E9\u5B57\u6BB5\u7EC4\u4EF6\u53CA\u8FDB\u884C\u76F8\u5E94\u914D\u7F6E\uFF0C\u8FD8\u53EF\u4EE5\u4ECE\u5F53\u524D\u533A\u5757\u4F7F\u7528\u7684\u6570\u636E\u8868\u4E2D\u9009\u62E9\u4E00\u4E2A\u5B57\u6BB5\uFF0C\u76F4\u63A5\u5E94\u7528\u8BE5\u5B57\u6BB5\u7684\u5143\u6570\u636E\u914D\u7F6E\uFF0C\u907F\u514D\u91CD\u590D\u914D\u7F6E\u3002",paraId:11,tocIndex:4},{value:"\u8981\u4F7F\u7528\u81EA\u5B9A\u4E49\u7B5B\u9009\u5B57\u6BB5\uFF0C\u9700\u8981\u6253\u5F00\u5BF9\u5E94\u56FE\u8868\u7684\u914D\u7F6E\uFF0C\u7136\u540E\u5728\u6570\u636E\u67E5\u8BE2\u7684\u7B5B\u9009\u914D\u7F6E\u4E2D\uFF0C\u6DFB\u52A0\u7B5B\u9009\u6761\u4EF6\u5E76\u4F7F\u7528\u201C\u5F53\u524D\u7B5B\u9009\u201D (Current filter) \u4E2D\u7684\u53D8\u91CF\u3002\u88AB\u7B5B\u9009\u5B57\u6BB5\u7684\u7C7B\u578B\u9700\u8981\u548C\u7B5B\u9009\u8868\u5355\u81EA\u5B9A\u4E49\u5B57\u6BB5\u7684\u7C7B\u578B\u76F8\u7B26\u3002",paraId:12,tocIndex:4},{value:"\u5BF9\u4E8E\u81EA\u5B9A\u4E49\u5B57\u6BB5\uFF0C\u540C\u6837\u53EF\u4EE5\u914D\u7F6E\u6807\u9898\u3001\u63CF\u8FF0\u548C\u9ED8\u8BA4\u503C\u3002",paraId:13,tocIndex:4},{value:"\u7B5B\u9009 (Filter) - \u5E94\u7528\u7B5B\u9009\u6761\u4EF6",paraId:14,tocIndex:5},{value:"\u91CD\u7F6E (Reset) - \u91CD\u7F6E\u7B5B\u9009\u8868\u5355",paraId:14,tocIndex:5},{value:"\u6298\u53E0/\u5C55\u5F00 (Collapse / Expand) - \u5C06\u6298\u53E0\u4E3A\u4E00\u884C\u6216\u5C55\u5F00\u591A\u884C",paraId:14,tocIndex:5}],gU={},bU={title:"\u7B2C\u4E00\u4E2A\u5E94\u7528",toc:"menu",filename:"docs/en-US/manual/quick-start/the-first-app.md",lastUpdated:1732240239e3,description:"\u8BA9\u6211\u4EEC\u7528 NocoBase \u642D\u5EFA\u4E00\u4E2A\u8BA2\u5355\u7BA1\u7406\u7CFB\u7EDF\u3002"},yU=[{id:"\u7B2C\u4E00\u4E2A\u5E94\u7528",depth:1,title:"\u7B2C\u4E00\u4E2A\u5E94\u7528"},{id:"1-\u521B\u5EFA\u6570\u636E\u8868\u548C\u5B57\u6BB5",depth:2,title:"1. \u521B\u5EFA\u6570\u636E\u8868\u548C\u5B57\u6BB5"},{id:"2-\u914D\u7F6E\u83DC\u5355\u548C\u9875\u9762",depth:2,title:"2. \u914D\u7F6E\u83DC\u5355\u548C\u9875\u9762"},{id:"3-\u6DFB\u52A0\u548C\u914D\u7F6E\u533A\u5757",depth:2,title:"3. \u6DFB\u52A0\u548C\u914D\u7F6E\u533A\u5757"}],wU=[{value:"\u8BA9\u6211\u4EEC\u7528 NocoBase \u642D\u5EFA\u4E00\u4E2A\u8BA2\u5355\u7BA1\u7406\u7CFB\u7EDF\u3002",paraId:0,tocIndex:0},{value:"\u5728\u8FD9\u4E2A\u8BA2\u5355\u7BA1\u7406\u7CFB\u7EDF\u4E2D\uFF0C\u6211\u4EEC\u9700\u8981\u638C\u63E1",paraId:1,tocIndex:1},{value:"Customers",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"Products",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"Orders",paraId:1,tocIndex:1},{value:"\u7684\u4FE1\u606F\uFF0C\u4ED6\u4EEC\u5F7C\u6B64\u4E4B\u95F4\u4E92\u76F8\u5173\u8054\u3002\u7ECF\u8FC7\u5206\u6790\uFF0C\u6211\u4EEC\u9700\u8981\u5EFA\u7ACB 4 \u4E2A\u6570\u636E\u8868\uFF0C\u5B83\u4EEC\u7684\u5B57\u6BB5\u5206\u522B\u4E3A\uFF1A",paraId:1,tocIndex:1},{value:`Customers + `,paraId:2},{value:"The data within the request node can be tailored using the corresponding form variables from the manual node, allowing for different SMS content based on whether the request was approved or rejected. With this configuration, the workflow is now complete. Once the workflow is activated, supervisors can manage leave requests directly from their to-do tasks, with actions similar to those in the article review process.",paraId:17,tocIndex:2}],eU={},aU={title:"Parallel Branches",toc:"menu",filename:"docs/en-US/handbook/workflow-parallel/index.md",lastUpdated:173254844e4,description:"Parallel branch nodes enable the division of a process into multiple branches, each configurable with distinct nodes. Depending on the selected mode of the branch, the execution approach varies. When multiple operations need to be carried out simultaneously, the parallel branch node proves highly effective."},tU=[{id:"parallel-branches",depth:1,title:"Parallel Branches"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"branch-modes",depth:4,title:"Branch Modes"},{id:"example",depth:3,title:"Example"}],nU=[{value:"Parallel branch nodes enable the division of a process into multiple branches, each configurable with distinct nodes. Depending on the selected mode of the branch, the execution approach varies. When multiple operations need to be carried out simultaneously, the parallel branch node proves highly effective.",paraId:0,tocIndex:0},{value:"This feature is a built-in plugin, so no installation is necessary.",paraId:1,tocIndex:1},{value:'In the workflow configuration interface, click the plus (\u201C+\u201D) button to add a "Parallel Branch" node to the process:',paraId:2,tocIndex:3},{value:"Once a parallel branch node is added to the process, it will automatically create two sub-branches by default. You can add more branches by clicking the appropriate button. Each branch can include as many nodes as needed, and unnecessary branches can be removed by clicking the delete button at the start of the branch.",paraId:3,tocIndex:3},{value:"Parallel branch nodes offer three modes:",paraId:4,tocIndex:5},{value:"All succeeded",paraId:5,tocIndex:5},{value:': The process continues to execute nodes following the branches only if all branches succeed. If any branch terminates early\u2014whether due to failure, error, or any non-success state\u2014the entire parallel branch node terminates in that state. This is also referred to as "All Mode."',paraId:5,tocIndex:5},{value:"Any succeeded",paraId:5,tocIndex:5},{value:': The process will proceed to execute subsequent nodes once any branch succeeds. The entire parallel branch node will only terminate early if all branches fail or terminate prematurely, regardless of the reason. This is known as "Any Mode."',paraId:5,tocIndex:5},{value:"Any succeeded or failed",paraId:5,tocIndex:5},{value:': The process will continue executing subsequent nodes once any branch succeeds. However, if any branch fails, the entire parallel branch node will terminate early in that state. This is also known as "Race Mode."',paraId:5,tocIndex:5},{value:"In all modes, branches are executed sequentially from left to right. The process continues executing subsequent nodes or terminates early once the conditions of the selected mode are met.",paraId:6,tocIndex:5},{value:"Refer to the example provided in the ",paraId:7,tocIndex:6},{value:"Delay Node",paraId:8,tocIndex:6},{value:" section.",paraId:7,tocIndex:6}],oU={},rU={title:"Custom Variables",toc:"menu",filename:"docs/en-US/handbook/workflow-variable/index.md",lastUpdated:173254844e4,description:"In workflows, variables can be declared or assigned values to existing ones, typically to store temporary data during the process."},dU=[{id:"custom-variables",depth:1,title:"Custom Variables"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-nodes",depth:3,title:"Creating Nodes"},{id:"configuring-nodes",depth:3,title:"Configuring Nodes"},{id:"mode",depth:4,title:"Mode"},{id:"value",depth:4,title:"Value"},{id:"using-variable-values",depth:3,title:"Using Variable Values"},{id:"example",depth:3,title:"Example"}],iU=[{value:"In workflows, variables can be declared or assigned values to existing ones, typically to store temporary data during the process.",paraId:0},{value:'To add a "Variable" node in the workflow configuration interface, click the plus (\u201C+\u201D) button in the process:',paraId:1,tocIndex:2},{value:"Like programming variables, a variable node must first be declared before it can be used or assigned a value. When creating a variable node, you must choose its mode. There are two options:",paraId:2,tocIndex:4},{value:"Declare a new variable: This creates a new variable.",paraId:3,tocIndex:4},{value:"Assign value to an existing variable: This assigns a value to a previously declared variable, effectively updating its value.",paraId:3,tocIndex:4},{value:"If the node being created is the first variable node in the process, only the declare mode is available, as there are no pre-existing variables to assign values to.",paraId:4,tocIndex:4},{value:"When assigning a value to an existing variable, you\u2019ll need to select the target variable, which is the node where the variable was originally declared:",paraId:5,tocIndex:4},{value:"The value of a variable can be of any type\u2014such as a constant (e.g., strings, numbers, booleans, dates) or another variable within the workflow.",paraId:6,tocIndex:5},{value:"In declare mode, setting a variable value is equivalent to assigning it an initial value.",paraId:7,tocIndex:5},{value:"In assign mode, setting a variable value modifies the value of the target variable to the new value, which will be used in subsequent steps.",paraId:8,tocIndex:5},{value:'In nodes following the variable node, you can use the value of the variable by selecting it from the "Node result" group. For example, in a query node, the value of a variable can be used as a query condition:',paraId:9,tocIndex:6},{value:"Variable nodes are particularly useful in branches where new values need to be calculated or combined with existing values (similar to ",paraId:10,tocIndex:7},{value:"reduce",paraId:10,tocIndex:7},{value:" or ",paraId:10,tocIndex:7},{value:"concat",paraId:10,tocIndex:7},{value:" in programming). These values can then be used after the branch ends. The following example demonstrates how to create a concatenated recipient string using loop and variable nodes.",paraId:10,tocIndex:7},{value:'Start by creating a workflow triggered by a data table update. This workflow will be activated when "Article" data is updated, and it preloads the related "Authors" relational data (used to get recipients):',paraId:11,tocIndex:7},{value:"Next, create a variable node to store the recipient string:",paraId:12,tocIndex:7},{value:"Then, create a loop branch node to iterate over the authors of the article and concatenate their details into the recipient variable:",paraId:13,tocIndex:7},{value:"Within the loop branch, first create a Operator node to concatenate the current author with the stored author string:",paraId:14,tocIndex:7},{value:"After the Operator node, create another variable node in assign mode. Select the recipient variable node as the target, and set its value to the result of the Operator node:",paraId:15,tocIndex:7},{value:"When the loop branch ends, the recipient variable will store the concatenated recipient string of all the article's authors. You can then use an HTTP request node after the loop to call the email-sending interface, passing the recipient variable\u2019s value as the recipient parameter:",paraId:16,tocIndex:7},{value:"In this way, a simple bulk email function is implemented using loop and variable nodes.",paraId:17,tocIndex:7}],lU={},cU={title:"\u9009\u62E9\u7C7B\u578B",toc:"menu",filename:"docs/en-US/manual/collection/fields/choices.md",lastUpdated:173254844e4},sU=[{id:"\u9009\u62E9\u7C7B\u578B",depth:1,title:"\u9009\u62E9\u7C7B\u578B"}],uU=[{value:"Checkbox",paraId:0,tocIndex:0},{value:"Single select",paraId:0,tocIndex:0},{value:"Multiple select",paraId:0,tocIndex:0},{value:"Radio group",paraId:0,tocIndex:0},{value:"Checkbox group",paraId:0,tocIndex:0},{value:"China region\uFF08\u63D2\u4EF6\u6269\u5C55\uFF09",paraId:0,tocIndex:0}],pU={},IU={title:"\u6570\u636E\u8868",toc:"menu",filename:"docs/en-US/manual/core-concepts/collections.md",lastUpdated:173254844e4,description:"\u5F00\u53D1\u4E00\u4E2A\u7CFB\u7EDF\u4E4B\u524D\uFF0C\u6211\u4EEC\u901A\u5E38\u8981\u5BF9\u4E1A\u52A1\u8FDB\u884C\u62BD\u8C61\uFF0C\u5EFA\u7ACB\u6570\u636E\u6A21\u578B\u3002NocoBase \u7684\u6570\u636E\u8868\u7531\u5B57\u6BB5\uFF08\u5217\uFF09\u548C\u8BB0\u5F55\uFF08\u884C\uFF09\u7EC4\u6210\u3002\u6570\u636E\u8868\u7684\u6982\u5FF5\u4E0E\u5173\u7CFB\u578B\u6570\u636E\u5E93\u7684\u6570\u636E\u8868\u6982\u5FF5\u76F8\u8FD1\uFF0C\u4F46\u662F\u5B57\u6BB5\u7684\u6982\u5FF5\u7565\u6709\u4E0D\u540C\u3002"},_U=[{id:"\u6570\u636E\u8868",depth:1,title:"\u6570\u636E\u8868"},{id:"\u6570\u636E\u4E0E\u89C6\u56FE\u5206\u79BB",depth:2,title:"\u6570\u636E\u4E0E\u89C6\u56FE\u5206\u79BB"},{id:"\u5B57\u6BB5\u7C7B\u578B",depth:2,title:"\u5B57\u6BB5\u7C7B\u578B"}],vU=[{value:"\u5F00\u53D1\u4E00\u4E2A\u7CFB\u7EDF\u4E4B\u524D\uFF0C\u6211\u4EEC\u901A\u5E38\u8981\u5BF9\u4E1A\u52A1\u8FDB\u884C\u62BD\u8C61\uFF0C\u5EFA\u7ACB\u6570\u636E\u6A21\u578B\u3002NocoBase \u7684\u6570\u636E\u8868\u7531\u5B57\u6BB5\uFF08\u5217\uFF09\u548C\u8BB0\u5F55\uFF08\u884C\uFF09\u7EC4\u6210\u3002\u6570\u636E\u8868\u7684\u6982\u5FF5\u4E0E\u5173\u7CFB\u578B\u6570\u636E\u5E93\u7684\u6570\u636E\u8868\u6982\u5FF5\u76F8\u8FD1\uFF0C\u4F46\u662F\u5B57\u6BB5\u7684\u6982\u5FF5\u7565\u6709\u4E0D\u540C\u3002",paraId:0,tocIndex:0},{value:"\u4F8B\u5982\uFF0C\u5728\u4E00\u4E2A\u63CF\u8FF0\u8BA2\u5355\u7684\u6570\u636E\u8868\u4E2D\uFF0C\u6BCF\u5217\u5305\u542B\u7684\u662F\u8BA2\u5355\u67D0\u4E2A\u7279\u5B9A\u5C5E\u6027\u7684\u4FE1\u606F\uFF0C\u5982\u6536\u4EF6\u5730\u5740\uFF1B\u800C\u6BCF\u884C\u5219\u5305\u542B\u4E86\u67D0\u4E2A\u7279\u5B9A\u8BA2\u5355\u7684\u6240\u6709\u4FE1\u606F\uFF0C\u5982\u8BA2\u5355\u53F7\u3001\u987E\u5BA2\u59D3\u540D\u3001\u7535\u8BDD\u3001\u6536\u4EF6\u5730\u5740\u7B49\u3002",paraId:1,tocIndex:0},{value:"NocoBase \u7684",paraId:2,tocIndex:1},{value:"\u6570\u636E",paraId:2,tocIndex:1},{value:"\u548C",paraId:2,tocIndex:1},{value:"\u89C6\u56FE",paraId:2,tocIndex:1},{value:"\u662F\u5206\u79BB\u7684\uFF0C\u5206\u522B\u7531\u6570\u636E\u8868\u548C\u533A\u5757\u6765\u7BA1\u7406\u548C\u5448\u73B0\u3002",paraId:2,tocIndex:1},{value:"\u8FD9\u5C31\u610F\u5473\u7740\uFF1A",paraId:3,tocIndex:1},{value:"\u4F60\u53EF\u4EE5\u521B\u5EFA",paraId:4,tocIndex:1},{value:"\u4E00\u4E2A",paraId:4,tocIndex:1},{value:"\u6570\u636E\u8868\uFF0C\u5E76\u4E3A\u5176\u8BBE\u8BA1",paraId:4,tocIndex:1},{value:"\u4E00\u5957",paraId:4,tocIndex:1},{value:"\u754C\u9762\uFF0C\u5B9E\u73B0\u6570\u636E\u7684\u5C55\u793A\u548C\u64CD\u4F5C\uFF1B",paraId:4,tocIndex:1},{value:"\u4F60\u4E5F\u53EF\u4EE5\u521B\u5EFA",paraId:4,tocIndex:1},{value:"\u4E00\u4E2A",paraId:4,tocIndex:1},{value:"\u6570\u636E\u8868\uFF0C\u7136\u540E\u4E3A\u5176\u8BBE\u8BA1",paraId:4,tocIndex:1},{value:"\u591A\u5957",paraId:4,tocIndex:1},{value:"\u754C\u9762\uFF0C\u7528\u4E8E\u4E0D\u540C\u7684\u573A\u666F\u6216\u89D2\u8272\u4E0B\u5BF9\u6570\u636E\u7684\u5C55\u793A\u548C\u64CD\u4F5C\uFF1B",paraId:4,tocIndex:1},{value:"\u4F60\u8FD8\u53EF\u4EE5\u521B\u5EFA",paraId:4,tocIndex:1},{value:"\u591A\u4E2A",paraId:4,tocIndex:1},{value:"\u6570\u636E\u8868\uFF0C\u7136\u540E\u4E3A\u5176\u8BBE\u8BA1",paraId:4,tocIndex:1},{value:"\u4E00\u5957",paraId:4,tocIndex:1},{value:"\u754C\u9762\uFF0C\u5B9E\u73B0\u591A\u4E2A\u6570\u636E\u8868\u7684\u540C\u65F6\u5C55\u793A\u548C\u64CD\u4F5C\uFF1B",paraId:4,tocIndex:1},{value:"\u4F60\u751A\u81F3\u53EF\u4EE5\u521B\u5EFA",paraId:4,tocIndex:1},{value:"\u591A\u4E2A",paraId:4,tocIndex:1},{value:"\u6570\u636E\u8868\uFF0C\u7136\u540E\u4E3A\u5176\u8BBE\u8BA1",paraId:4,tocIndex:1},{value:"\u591A\u5957",paraId:4,tocIndex:1},{value:"\u754C\u9762\uFF0C\u6BCF\u5957\u754C\u9762\u90FD\u53EF\u4EE5\u64CD\u4F5C\u591A\u4E2A\u6570\u636E\u8868\u5E76\u5B8C\u6210\u72EC\u7279\u7684\u529F\u80FD\uFF1B",paraId:4,tocIndex:1},{value:"\u7B80\u5355\u8BF4\uFF0C\u6570\u636E\u4E0E\u754C\u9762\u7684\u5206\u79BB\u4F7F\u5F97",paraId:5,tocIndex:1},{value:"\u6570\u636E\u7684\u7EC4\u7EC7\u548C\u7BA1\u7406\u66F4\u52A0\u7075\u6D3B",paraId:5,tocIndex:1},{value:"\uFF0C\u5982\u4F55\u5448\u73B0\u6570\u636E\u5C31\u770B\u4F60\u5982\u4F55\u914D\u7F6E\u754C\u9762\u3002",paraId:5,tocIndex:1},{value:"NocoBase \u76EE\u524D\u652F\u6301\u4EE5\u4E0B\u51E0\u5341\u79CD\u5B57\u6BB5\uFF0C\u672A\u6765\u53EF\u4EE5\u901A\u8FC7\u63D2\u4EF6\u7684\u65B9\u5F0F\u652F\u6301\u66F4\u591A\u79CD\u3002",paraId:6,tocIndex:2},{value:"\u540D\u79F0",paraId:7,tocIndex:2},{value:"\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u5355\u884C\u6587\u672C",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u56FE\u6807",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u591A\u884C\u6587\u672C",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u5BC6\u7801",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u624B\u673A\u53F7\u7801",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u6570\u5B57",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u6574\u6570",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u7535\u5B50\u90AE\u7BB1",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u767E\u5206\u6BD4",paraId:7,tocIndex:2},{value:"\u57FA\u672C\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u4E0B\u62C9\u83DC\u5355\uFF08\u5355\u9009\uFF09",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u4E0B\u62C9\u83DC\u5355\uFF08\u591A\u9009\uFF09",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u4E2D\u56FD\u884C\u653F\u533A",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u52FE\u9009",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u5355\u9009\u6846",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u590D\u9009\u6846",paraId:7,tocIndex:2},{value:"\u9009\u62E9\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u5173\u8054",paraId:7,tocIndex:2},{value:"\u5173\u7CFB\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u4E00\u5BF9\u4E00\uFF08belongs to\uFF09",paraId:7,tocIndex:2},{value:"\u5173\u7CFB\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u4E00\u5BF9\u4E00\uFF08has one\uFF09",paraId:7,tocIndex:2},{value:"\u5173\u7CFB\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u4E00\u5BF9\u591A",paraId:7,tocIndex:2},{value:"\u5173\u7CFB\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u591A\u5BF9\u4E00",paraId:7,tocIndex:2},{value:"\u5173\u7CFB\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u591A\u5BF9\u591A",paraId:7,tocIndex:2},{value:"\u5173\u7CFB\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u516C\u5F0F",paraId:7,tocIndex:2},{value:"\u9AD8\u7EA7\u7C7B\u578B",paraId:7,tocIndex:2},{value:"\u81EA\u52A8\u7F16\u7801",paraId:7,tocIndex:2},{value:"\u9AD8\u7EA7\u7C7B\u578B",paraId:7,tocIndex:2},{value:"JSON",paraId:7,tocIndex:2},{value:"\u9AD8\u7EA7\u7C7B\u578B",paraId:7,tocIndex:2},{value:"Markdown",paraId:7,tocIndex:2},{value:"\u591A\u5A92\u4F53",paraId:7,tocIndex:2},{value:"\u5BCC\u6587\u672C",paraId:7,tocIndex:2},{value:"\u591A\u5A92\u4F53",paraId:7,tocIndex:2},{value:"\u9644\u4EF6",paraId:7,tocIndex:2},{value:"\u591A\u5A92\u4F53",paraId:7,tocIndex:2},{value:"\u65E5\u671F",paraId:7,tocIndex:2},{value:"\u65E5\u671F&\u65F6\u95F4",paraId:7,tocIndex:2},{value:"\u65F6\u95F4",paraId:7,tocIndex:2},{value:"\u65E5\u671F&\u65F6\u95F4",paraId:7,tocIndex:2},{value:"ID",paraId:7,tocIndex:2},{value:"\u7CFB\u7EDF\u4FE1\u606F",paraId:7,tocIndex:2},{value:"\u521B\u5EFA\u4EBA",paraId:7,tocIndex:2},{value:"\u7CFB\u7EDF\u4FE1\u606F",paraId:7,tocIndex:2},{value:"\u521B\u5EFA\u65E5\u671F",paraId:7,tocIndex:2},{value:"\u7CFB\u7EDF\u4FE1\u606F",paraId:7,tocIndex:2},{value:"\u6700\u540E\u4FEE\u6539\u4EBA",paraId:7,tocIndex:2},{value:"\u7CFB\u7EDF\u4FE1\u606F",paraId:7,tocIndex:2},{value:"\u6700\u540E\u4FEE\u6539\u65E5\u671F",paraId:7,tocIndex:2},{value:"\u7CFB\u7EDF\u4FE1\u606F",paraId:7,tocIndex:2}],mU={},hU={title:"\u7B5B\u9009\u533A\u5757",toc:"menu",filename:"docs/en-US/manual/data-visualization/filter.md",lastUpdated:173254844e4,description:"\u56FE\u8868\u533A\u5757\u4E2D\u7684\u7B5B\u9009\u533A\u5757\uFF0C\u7528\u4E8E\u5BF9\u5F53\u524D\u56FE\u8868\u533A\u5757\u5167\u7684\u591A\u4E2A\u56FE\u8868\u8FDB\u884C\u52A8\u6001\u7B5B\u9009\u3002"},fU=[{id:"\u7B5B\u9009\u533A\u5757",depth:1,title:"\u7B5B\u9009\u533A\u5757"},{id:"\u542F\u7528\u7981\u7528",depth:2,title:"\u542F\u7528/\u7981\u7528"},{id:"\u914D\u7F6E\u7B5B\u9009\u5B57\u6BB5",depth:2,title:"\u914D\u7F6E\u7B5B\u9009\u5B57\u6BB5"},{id:"\u6570\u636E\u8868\u5B57\u6BB5",depth:3,title:"\u6570\u636E\u8868\u5B57\u6BB5"},{id:"\u81EA\u5B9A\u4E49\u5B57\u6BB5",depth:3,title:"\u81EA\u5B9A\u4E49\u5B57\u6BB5"},{id:"\u914D\u7F6E\u533A\u5757\u52A8\u4F5C",depth:2,title:"\u914D\u7F6E\u533A\u5757\u52A8\u4F5C"}],xU=[{value:"\u56FE\u8868\u533A\u5757\u4E2D\u7684\u7B5B\u9009\u533A\u5757\uFF0C\u7528\u4E8E\u5BF9\u5F53\u524D\u56FE\u8868\u533A\u5757\u5167\u7684\u591A\u4E2A\u56FE\u8868\u8FDB\u884C\u52A8\u6001\u7B5B\u9009\u3002",paraId:0,tocIndex:0},{value:"\u5728\u56FE\u8868\u533A\u5757\u4E2D\u70B9\u51FB\u201C\u6DFB\u52A0\u533A\u5757\u201D (Add block) - \u201C\u7B5B\u9009\u201D (Filter), \u53EF\u4EE5\u542F\u7528/\u7981\u7528\u7B5B\u9009\u533A\u5757\u3002",paraId:1,tocIndex:1},{value:"\u5BF9\u4E8E\u5F53\u524D\u56FE\u8868\u533A\u5757\u4E2D\u7684\u56FE\u8868\u6240\u7528\u5230\u7684\u6570\u636E\u8868\uFF0C\u76F4\u63A5\u9009\u62E9\u6570\u636E\u8868\u5BF9\u5E94\u7684\u5B57\u6BB5\uFF0C\u5373\u53EF\u521B\u5EFA\u4E00\u4E2A\u7B5B\u9009\u8868\u5355\u5B57\u6BB5\u3002",paraId:2,tocIndex:3},{value:"\u53EF\u4EE5\u5BF9\u8868\u5355\u5B57\u6BB5\u8FDB\u884C\u914D\u7F6E\uFF1A",paraId:3,tocIndex:3},{value:"\u914D\u7F6E\u5B57\u6BB5\u663E\u793A\u6807\u9898",paraId:4,tocIndex:3},{value:"\u914D\u7F6E\u5B57\u6BB5\u63CF\u8FF0",paraId:5,tocIndex:3},{value:"\u914D\u7F6E\u8BE5\u5B57\u6BB5\u5728\u7B5B\u9009\u65F6\u5E94\u7528\u7684\u64CD\u4F5C\u7B26",paraId:6,tocIndex:3},{value:`\u914D\u7F6E\u5B57\u6BB5\u9ED8\u8BA4\u503C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u53D8\u91CF\u3002\u53D8\u91CF\u7684\u6570\u636E\u7C7B\u578B\u9700\u4E0E\u5F53\u524D\u5B57\u6BB5\u6570\u636E\u7C7B\u578B\u76F8\u7B26\u3002 +`,paraId:7,tocIndex:3},{value:"\u4F8B\u5982\uFF1A",paraId:8,tocIndex:3},{value:"\u914D\u7F6E\u9ED8\u8BA4\u503C\u4E3A\u5F53\u524D\u7528\u6237ID\uFF0C\u9875\u9762\u52A0\u8F7D\u540E\u81EA\u52A8\u7B5B\u9009\u51FA\u5F53\u524D\u7528\u6237\u6570\u636E\u3002",paraId:9,tocIndex:3},{value:"\u914D\u7F6E\u9ED8\u8BA4\u503C\u4E3A\u5F53\u524D\u65E5\u671F\uFF0C\u9875\u9762\u52A0\u8F7D\u540E\u81EA\u52A8\u7B5B\u9009\u51FA\u5F53\u524D\u65E5\u671F\u6570\u636E\u3002",paraId:9,tocIndex:3},{value:"\u67D0\u4E9B\u60C5\u51B5\u4E0B\uFF0C\u53EF\u80FD\u9700\u8981\u7528\u540C\u4E00\u4E2A\u7B5B\u9009\u5B57\u6BB5\u6765\u7B5B\u9009\u4E0D\u540C\u8868\u7684\u4E0D\u540C\u5B57\u6BB5\u3002\u4F8B\u5982\uFF1A\u7528\u4E00\u4E2A\u65E5\u671F\u5B57\u6BB5\u6765\u7B5B\u9009\u4E0D\u540C\u8868\u7684\u4E0D\u540C\u65E5\u671F\u5B57\u6BB5\u3002\u8FD9\u65F6\u5019\u53EF\u4EE5\u9009\u62E9\u521B\u5EFA\u81EA\u5B9A\u4E49\u5B57\u6BB5\u3002",paraId:10,tocIndex:4},{value:"\u6DFB\u52A0\u81EA\u5B9A\u4E49\u5B57\u6BB5\u7684\u65F6\u5019\uFF0C\u9700\u8981\u8BBE\u7F6E\u5B57\u6BB5\u6807\u9898\uFF0C\u9009\u62E9\u5B57\u6BB5\u7EC4\u4EF6\u53CA\u8FDB\u884C\u76F8\u5E94\u914D\u7F6E\uFF0C\u8FD8\u53EF\u4EE5\u4ECE\u5F53\u524D\u533A\u5757\u4F7F\u7528\u7684\u6570\u636E\u8868\u4E2D\u9009\u62E9\u4E00\u4E2A\u5B57\u6BB5\uFF0C\u76F4\u63A5\u5E94\u7528\u8BE5\u5B57\u6BB5\u7684\u5143\u6570\u636E\u914D\u7F6E\uFF0C\u907F\u514D\u91CD\u590D\u914D\u7F6E\u3002",paraId:11,tocIndex:4},{value:"\u8981\u4F7F\u7528\u81EA\u5B9A\u4E49\u7B5B\u9009\u5B57\u6BB5\uFF0C\u9700\u8981\u6253\u5F00\u5BF9\u5E94\u56FE\u8868\u7684\u914D\u7F6E\uFF0C\u7136\u540E\u5728\u6570\u636E\u67E5\u8BE2\u7684\u7B5B\u9009\u914D\u7F6E\u4E2D\uFF0C\u6DFB\u52A0\u7B5B\u9009\u6761\u4EF6\u5E76\u4F7F\u7528\u201C\u5F53\u524D\u7B5B\u9009\u201D (Current filter) \u4E2D\u7684\u53D8\u91CF\u3002\u88AB\u7B5B\u9009\u5B57\u6BB5\u7684\u7C7B\u578B\u9700\u8981\u548C\u7B5B\u9009\u8868\u5355\u81EA\u5B9A\u4E49\u5B57\u6BB5\u7684\u7C7B\u578B\u76F8\u7B26\u3002",paraId:12,tocIndex:4},{value:"\u5BF9\u4E8E\u81EA\u5B9A\u4E49\u5B57\u6BB5\uFF0C\u540C\u6837\u53EF\u4EE5\u914D\u7F6E\u6807\u9898\u3001\u63CF\u8FF0\u548C\u9ED8\u8BA4\u503C\u3002",paraId:13,tocIndex:4},{value:"\u7B5B\u9009 (Filter) - \u5E94\u7528\u7B5B\u9009\u6761\u4EF6",paraId:14,tocIndex:5},{value:"\u91CD\u7F6E (Reset) - \u91CD\u7F6E\u7B5B\u9009\u8868\u5355",paraId:14,tocIndex:5},{value:"\u6298\u53E0/\u5C55\u5F00 (Collapse / Expand) - \u5C06\u6298\u53E0\u4E3A\u4E00\u884C\u6216\u5C55\u5F00\u591A\u884C",paraId:14,tocIndex:5}],gU={},bU={title:"\u7B2C\u4E00\u4E2A\u5E94\u7528",toc:"menu",filename:"docs/en-US/manual/quick-start/the-first-app.md",lastUpdated:173254844e4,description:"\u8BA9\u6211\u4EEC\u7528 NocoBase \u642D\u5EFA\u4E00\u4E2A\u8BA2\u5355\u7BA1\u7406\u7CFB\u7EDF\u3002"},yU=[{id:"\u7B2C\u4E00\u4E2A\u5E94\u7528",depth:1,title:"\u7B2C\u4E00\u4E2A\u5E94\u7528"},{id:"1-\u521B\u5EFA\u6570\u636E\u8868\u548C\u5B57\u6BB5",depth:2,title:"1. \u521B\u5EFA\u6570\u636E\u8868\u548C\u5B57\u6BB5"},{id:"2-\u914D\u7F6E\u83DC\u5355\u548C\u9875\u9762",depth:2,title:"2. \u914D\u7F6E\u83DC\u5355\u548C\u9875\u9762"},{id:"3-\u6DFB\u52A0\u548C\u914D\u7F6E\u533A\u5757",depth:2,title:"3. \u6DFB\u52A0\u548C\u914D\u7F6E\u533A\u5757"}],wU=[{value:"\u8BA9\u6211\u4EEC\u7528 NocoBase \u642D\u5EFA\u4E00\u4E2A\u8BA2\u5355\u7BA1\u7406\u7CFB\u7EDF\u3002",paraId:0,tocIndex:0},{value:"\u5728\u8FD9\u4E2A\u8BA2\u5355\u7BA1\u7406\u7CFB\u7EDF\u4E2D\uFF0C\u6211\u4EEC\u9700\u8981\u638C\u63E1",paraId:1,tocIndex:1},{value:"Customers",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"Products",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"Orders",paraId:1,tocIndex:1},{value:"\u7684\u4FE1\u606F\uFF0C\u4ED6\u4EEC\u5F7C\u6B64\u4E4B\u95F4\u4E92\u76F8\u5173\u8054\u3002\u7ECF\u8FC7\u5206\u6790\uFF0C\u6211\u4EEC\u9700\u8981\u5EFA\u7ACB 4 \u4E2A\u6570\u636E\u8868\uFF0C\u5B83\u4EEC\u7684\u5B57\u6BB5\u5206\u522B\u4E3A\uFF1A",paraId:1,tocIndex:1},{value:`Customers `,paraId:2,tocIndex:1},{value:"\u59D3\u540D",paraId:3,tocIndex:1},{value:"\u5730\u5740",paraId:3,tocIndex:1},{value:"\u6027\u522B",paraId:3,tocIndex:1},{value:"\u7535\u8BDD",paraId:3,tocIndex:1},{value:"\u8BA2\u5355\uFF08\u8D2D\u4E70\u8FC7\u7684\u6240\u6709\u8BA2\u5355\uFF0C\u6570\u636E\u6765\u81EA",paraId:3,tocIndex:1},{value:"Orders",paraId:3,tocIndex:1},{value:"\uFF0C\u6BCF\u6761\u987E\u5BA2\u6570\u636E\u5305\u542B\u591A\u6761\u8BA2\u5355\u6570\u636E\uFF09",paraId:3,tocIndex:1},{value:`Products `,paraId:2,tocIndex:1},{value:"\u5546\u54C1\u540D\u79F0",paraId:4,tocIndex:1},{value:"\u63CF\u8FF0",paraId:4,tocIndex:1},{value:"\u56FE\u7247",paraId:4,tocIndex:1},{value:"\u4EF7\u683C",paraId:4,tocIndex:1},{value:`Orders `,paraId:2,tocIndex:1},{value:"\u8BA2\u5355\u7F16\u53F7",paraId:5,tocIndex:1},{value:"\u603B\u4EF7",paraId:5,tocIndex:1},{value:"\u5907\u6CE8",paraId:5,tocIndex:1},{value:"\u5730\u5740",paraId:5,tocIndex:1},{value:"\u987E\u5BA2\uFF08\u8BE5\u8BA2\u5355\u6240\u5C5E\u7684\u987E\u5BA2\uFF0C\u6570\u636E\u6765\u81EA",paraId:5,tocIndex:1},{value:"Customers",paraId:5,tocIndex:1},{value:"\uFF0C\u6BCF\u6761\u8BA2\u5355\u6570\u636E\u5C5E\u4E8E\u4E00\u6761\u987E\u5BA2\u6570\u636E\uFF09",paraId:5,tocIndex:1},{value:"\u8BA2\u5355\u660E\u7EC6\uFF08\u8BE5\u8BA2\u5355\u4E2D\u7684\u5546\u54C1\uFF0C\u6570\u636E\u6765\u81EA",paraId:5,tocIndex:1},{value:"Order Details",paraId:5,tocIndex:1},{value:"\uFF0C\u6BCF\u6761\u8BA2\u5355\u6570\u636E\u5305\u542B\u591A\u6761\u8BA2\u5355\u660E\u7EC6\u6570\u636E\uFF09",paraId:5,tocIndex:1},{value:`Order list -`,paraId:2,tocIndex:1},{value:"\u8BA2\u5355\uFF08\u8BE5\u660E\u7EC6\u6240\u5C5E\u7684\u8BA2\u5355\uFF0C\u6570\u636E\u6765\u81EA",paraId:6,tocIndex:1},{value:"Orders",paraId:6,tocIndex:1},{value:"\uFF0C\u6BCF\u6761\u8BA2\u5355\u660E\u7EC6\u6570\u636E\u5C5E\u4E8E\u4E00\u6761\u8BA2\u5355\u6570\u636E\uFF09",paraId:6,tocIndex:1},{value:"\u5546\u54C1\uFF08\u8BE5\u660E\u7EC6\u6240\u5305\u542B\u7684\u5546\u54C1\uFF0C\u6570\u636E\u6765\u81EA",paraId:6,tocIndex:1},{value:"Products",paraId:6,tocIndex:1},{value:"\uFF0C\u6BCF\u6761\u8BA2\u5355\u660E\u7EC6\u6570\u636E\u5305\u542B\u4E00\u6761\u5546\u54C1\u6570\u636E\uFF09",paraId:6,tocIndex:1},{value:"\u6570\u91CF",paraId:6,tocIndex:1},{value:"\u5176\u4E2D\uFF0C\u659C\u4F53\u7684\u5B57\u6BB5\u662F\u5173\u7CFB\u5B57\u6BB5\uFF0C\u5173\u8054\u5230\u5176\u4ED6\u6570\u636E\u8868\u3002",paraId:7,tocIndex:1},{value:"\u63A5\u4E0B\u6765\uFF0C\u70B9\u51FB\u201C\u6570\u636E\u8868\u914D\u7F6E\u201D\u6309\u94AE\uFF0C\u8FDB\u5165\u6570\u636E\u8868\u914D\u7F6E\u754C\u9762\uFF0C\u521B\u5EFA\u7B2C\u4E00\u4E2A Collection ",paraId:8,tocIndex:1},{value:"Customers",paraId:8,tocIndex:1},{value:"\u3002",paraId:8,tocIndex:1},{value:"\u7136\u540E\u70B9\u51FB\u201C\u5B57\u6BB5\u914D\u7F6E\u201D\uFF0C\u4E3A",paraId:9,tocIndex:1},{value:"Customers",paraId:9,tocIndex:1},{value:" \u6DFB\u52A0 name \u5B57\u6BB5\uFF0C\u5B83\u662F\u5355\u884C\u6587\u672C\u7C7B\u578B\u3002",paraId:9,tocIndex:1},{value:"\u7528\u540C\u6837\u7684\u65B9\u6CD5\uFF0C\u4E3A",paraId:10,tocIndex:1},{value:"Customers",paraId:10,tocIndex:1},{value:" \u6DFB\u52A0 Address\u3001Gender\u3001Phone\uFF0C\u5B83\u4EEC\u5206\u522B\u662F\u5355\u884C\u6587\u672C\u3001\u5355\u9879\u9009\u62E9\u7C7B\u578B\u3001\u624B\u673A\u53F7\u7801\u7C7B\u578B\u3002",paraId:10,tocIndex:1},{value:"\u7528\u540C\u6837\u7684\u65B9\u6CD5\uFF0C\u521B\u5EFA Collection ",paraId:11,tocIndex:1},{value:"Products",paraId:11,tocIndex:1},{value:"\u3001",paraId:11,tocIndex:1},{value:"Orders",paraId:11,tocIndex:1},{value:"\u3001",paraId:11,tocIndex:1},{value:"Order list",paraId:11,tocIndex:1},{value:" \u4EE5\u53CA\u5B83\u4EEC\u7684\u5B57\u6BB5\u3002",paraId:11,tocIndex:1},{value:"\u5176\u4E2D\uFF0C\u5BF9\u4E8E\u5173\u7CFB\u5B57\u6BB5\uFF0C\u5982\u679C\u4F60\u4E0D\u719F\u6089\u4E00\u5BF9\u591A\u3001\u591A\u5BF9\u591A\u7B49\u6982\u5FF5\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 Link to \u7C7B\u578B\u6765\u5EFA\u7ACB\u6570\u636E\u8868\u4E4B\u95F4\u7684\u5173\u8054\u3002\u5982\u679C\u4F60\u719F\u6089\u8FD9\u51E0\u4E2A\u6982\u5FF5\uFF0C\u8BF7\u6B63\u786E\u4F7F\u7528 One to many, Many to one \u7B49\u7C7B\u578B\u6765\u5EFA\u7ACB\u6570\u636E\u8868\u4E4B\u95F4\u7684\u5173\u8054\u3002\u6BD4\u5982\u5728\u8FD9\u4E2A\u4F8B\u5B50\u4E2D\uFF0C\u6211\u4EEC\u5C06 ",paraId:12,tocIndex:1},{value:"Orders",paraId:12,tocIndex:1},{value:" \u4E0E ",paraId:12,tocIndex:1},{value:"Order list",paraId:12,tocIndex:1},{value:" \u5173\u8054\uFF0C\u5173\u7CFB\u4E3A One to many\u3002",paraId:12,tocIndex:1},{value:"\u5728\u56FE\u5F62\u5316\u7684\u6570\u636E\u8868\u91CC\uFF0C\u53EF\u4EE5\u5F88\u76F4\u89C2\u7684\u770B\u51FA\u5404\u4E2A\u8868\u4E4B\u95F4\u7684\u5173\u7CFB\u3002",paraId:13,tocIndex:1},{value:"\u5C06\u6570\u636E\u8868\u548C\u5B57\u6BB5\u521B\u5EFA\u5B8C\u6210\u540E\uFF0C\u6211\u4EEC\u5F00\u59CB\u5236\u4F5C\u754C\u9762\u3002",paraId:14,tocIndex:1},{value:"\u6211\u4EEC\u9700\u8981\u987E\u5BA2\u3001\u8BA2\u5355\u3001\u5546\u54C1\u4E09\u4E2A\u9875\u9762\u5C55\u793A\u548C\u7BA1\u7406\u6211\u4EEC\u7684\u6570\u636E\u3002",paraId:15,tocIndex:2},{value:"\u70B9\u51FB\u754C\u9762\u914D\u7F6E\u6309\u94AE\uFF0C\u8FDB\u5165\u754C\u9762\u914D\u7F6E\u6A21\u5F0F\u3002\u5728\u754C\u9762\u914D\u7F6E\u6A21\u5F0F\u4E0B\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6DFB\u52A0\u83DC\u5355\u9879\uFF0C\u6DFB\u52A0\u9875\u9762\uFF0C\u5728\u9875\u9762\u5185\u5E03\u7F6E\u533A\u5757\u3002",paraId:16,tocIndex:2},{value:"\u70B9\u51FB\u6DFB\u52A0\u83DC\u5355\u9879\uFF0C\u6DFB\u52A0\u83DC\u5355\u5206\u7EC4 \u201CCustomers\u201D \u548C \u201COrders & Products\u201D \uFF0C\u7136\u540E\u6DFB\u52A0\u5B50\u83DC\u5355\u9875\u9762 \u201CAll Orders\u201D \u548C \u201CProducts\u201D\u3002",paraId:17,tocIndex:2},{value:"\u6DFB\u52A0\u5B8C\u83DC\u5355\u548C\u9875\u9762\u4E4B\u540E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u5728\u9875\u9762\u5185\u6DFB\u52A0\u548C\u914D\u7F6E\u533A\u5757\u4E86\u3002",paraId:18,tocIndex:2},{value:"NocoBase \u76EE\u524D\u652F\u6301\u8868\u683C\u3001\u770B\u677F\u3001\u65E5\u5386\u3001\u8868\u5355\u3001\u8BE6\u60C5\u7B49\u7C7B\u578B\u7684\u533A\u5757\uFF0C\u5B83\u4EEC\u53EF\u4EE5\u5C06\u6570\u636E\u8868\u4E2D\u7684\u6570\u636E\u5C55\u793A\u51FA\u6765\uFF0C\u5E76\u53EF\u4EE5\u5BF9\u6570\u636E\u8FDB\u884C\u64CD\u4F5C\u3002\u663E\u7136\uFF0C\u987E\u5BA2\u3001\u8BA2\u5355\u3001\u5546\u54C1 \u90FD\u9002\u5408\u7528\u8868\u683C\u7684\u65B9\u5F0F\u5C55\u793A\u548C\u64CD\u4F5C\u3002",paraId:19,tocIndex:3},{value:"\u6211\u4EEC\u5728\u201C\u6240\u6709\u8BA2\u5355\u201D\u9875\u9762\uFF0C\u6DFB\u52A0\u4E00\u4E2A\u8868\u683C\u533A\u5757\uFF0C\u6570\u636E\u6E90\u9009\u62E9 Collection ",paraId:20,tocIndex:3},{value:"Orders",paraId:20,tocIndex:3},{value:" \uFF0C\u5E76\u4E3A\u8FD9\u4E2A\u8868\u683C\u533A\u5757\u914D\u7F6E\u9700\u8981\u663E\u793A\u7684\u5217\u3002",paraId:20,tocIndex:3},{value:"\u7ED9\u8FD9\u4E2A\u8868\u683C\u533A\u5757\u914D\u7F6E\u64CD\u4F5C\uFF0C\u5305\u62EC\u7B5B\u9009\u3001\u6DFB\u52A0\u3001\u5220\u9664\u3001\u67E5\u770B\u3001\u7F16\u8F91\u3002",paraId:21,tocIndex:3},{value:"\u4E3A\u65B0\u589E\u3001\u7F16\u8F91\u3001\u67E5\u770B\u7B49\u64CD\u4F5C\u914D\u7F6E\u8868\u5355\u548C\u8BE6\u60C5\u533A\u5757\u3002",paraId:22,tocIndex:3},{value:"\u7136\u540E\uFF0C\u7528\u540C\u6837\u7684\u65B9\u6CD5\uFF0C\u5728 Products \u548C Customers \u9875\u9762\u5E03\u7F6E\u8868\u683C\u533A\u5757\u3002\u5B8C\u6210\u540E\uFF0C\u9000\u51FA\u754C\u9762\u914D\u7F6E\u6A21\u5F0F\uFF0C\u8FDB\u5165\u4F7F\u7528\u6A21\u5F0F\uFF0C\u4E00\u4E2A\u7B80\u5355\u7684\u8BA2\u5355\u7BA1\u7406\u7CFB\u7EDF\u5C31\u5B8C\u6210\u4E86\u3002",paraId:23,tocIndex:3}],kU={},SU={title:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",toc:"menu",filename:"docs/en-US/manual/ui/actions/custom-request.md",lastUpdated:1732240239e3,description:"\u914D\u7F6E\u81EA\u5B9A\u4E49\u8BF7\u6C42\u64CD\u4F5C\u7684\u8BF7\u6C42\u5730\u5740\uFF0C\u4EE5\u6EE1\u8DB3\u7279\u5B9A\u4E1A\u52A1\u9700\u6C42\uFF0C\u8BE6\u60C5\u67E5\u770B\u81EA\u5B9A\u4E49\u8BF7\u6C42\u63D2\u4EF6\u6587\u6863"},UU=[{id:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",depth:1,title:"\u81EA\u5B9A\u4E49\u8BF7\u6C42"}],PU=[{value:"\u914D\u7F6E\u81EA\u5B9A\u4E49\u8BF7\u6C42\u64CD\u4F5C\u7684\u8BF7\u6C42\u5730\u5740\uFF0C\u4EE5\u6EE1\u8DB3\u7279\u5B9A\u4E1A\u52A1\u9700\u6C42\uFF0C\u8BE6\u60C5\u67E5\u770B\u81EA\u5B9A\u4E49\u8BF7\u6C42\u63D2\u4EF6\u6587\u6863",paraId:0,tocIndex:0}],TU={},CU={title:"Table \u533A\u5757",toc:"menu",filename:"docs/en-US/plugin-samples/block/block-table.md",lastUpdated:1732240239e3,description:"TODO"},AU=[{id:"table-\u533A\u5757",depth:1,title:"Table \u533A\u5757"}],qU=[{value:"Table",paraId:0},{value:"TODO",paraId:1,tocIndex:0}],EU={},DU={title:"\u6279\u91CF\u66F4\u65B0",toc:"menu",filename:"docs/en-US/plugins/action-bulk-update/index.md",lastUpdated:1732240239e3,description:"\u6279\u91CF\u66F4\u65B0\u64CD\u4F5C\u7528\u4E8E\u9700\u8981\u5BF9\u4E00\u7EC4\u8BB0\u5F55\u8FDB\u884C\u76F8\u540C\u66F4\u65B0\u7684\u60C5\u51B5\uFF0C\u5728\u6267\u884C\u6279\u91CF\u66F4\u65B0\u64CD\u4F5C\u4E4B\u524D\uFF0C\u7528\u6237\u9700\u8981\u9884\u5148\u5B9A\u4E49\u597D\u66F4\u65B0\u7684\u5B57\u6BB5\u8D4B\u503C\u903B\u8F91\u3002\u8FD9\u4E00\u5957\u903B\u8F91\u5C06\u5728\u7528\u6237\u70B9\u51FB\u66F4\u65B0\u6309\u94AE\u65F6\u5E94\u7528\u5230\u6240\u6709\u9009\u4E2D\u7684\u8BB0\u5F55\u4E0A"},OU=[{id:"\u6279\u91CF\u66F4\u65B0",depth:1,title:"\u6279\u91CF\u66F4\u65B0"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u4F7F\u7528\u6307\u5357",depth:2,title:"\u4F7F\u7528\u6307\u5357"}],RU=[{value:"\u6279\u91CF\u66F4\u65B0\u64CD\u4F5C\u7528\u4E8E\u9700\u8981\u5BF9\u4E00\u7EC4\u8BB0\u5F55\u8FDB\u884C\u76F8\u540C\u66F4\u65B0\u7684\u60C5\u51B5\uFF0C\u5728\u6267\u884C\u6279\u91CF\u66F4\u65B0\u64CD\u4F5C\u4E4B\u524D\uFF0C\u7528\u6237\u9700\u8981\u9884\u5148\u5B9A\u4E49\u597D\u66F4\u65B0\u7684\u5B57\u6BB5\u8D4B\u503C\u903B\u8F91\u3002\u8FD9\u4E00\u5957\u903B\u8F91\u5C06\u5728\u7528\u6237\u70B9\u51FB\u66F4\u65B0\u6309\u94AE\u65F6\u5E94\u7528\u5230\u6240\u6709\u9009\u4E2D\u7684\u8BB0\u5F55\u4E0A",paraId:0,tocIndex:1},{value:"\u8BBE\u7F6E\u66F4\u65B0\u7684\u6570\u636E\uFF1A\u9009\u4E2D/\u6240\u6709\uFF0C\u9ED8\u8BA4\u4E3A\u9009\u4E2D",paraId:1,tocIndex:2},{value:"\u5B57\u6BB5\u8D4B\u503C\uFF1A\u8BBE\u7F6E\u6279\u91CF\u66F4\u65B0\u7684\u5B57\u6BB5\uFF0C\u53EA\u6709\u8BBE\u7F6E\u7684\u5B57\u6BB5\u4F1A\u66F4\u65B0",paraId:1,tocIndex:2},{value:"\u5982\u56FE\u5728\u8FD0\u5355\u8868\u683C\u4E2D\u914D\u7F6E\u6279\u91CF\u66F4\u65B0\u64CD\u4F5C\uFF0C\u5C06\u9009\u4E2D\u7684\u6570\u636E\u6279\u91CF\u66F4\u65B0\u4E3A\u786E\u8BA4\u9001\u8FBE",paraId:2,tocIndex:2}],MU={},LU={title:"\u6570\u636E\u8868\u7BA1\u7406",toc:"menu",filename:"docs/en-US/plugins/collection-manager/index.md",lastUpdated:1732240239e3,description:"\u63D0\u4F9B\u4FBF\u6377\u7684\u6570\u636E\u8868\u7BA1\u7406\u80FD\u529B"},NU=[{id:"\u6570\u636E\u8868\u7BA1\u7406",depth:1,title:"\u6570\u636E\u8868\u7BA1\u7406"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"}],zU=[{value:"\u63D0\u4F9B\u4FBF\u6377\u7684\u6570\u636E\u8868\u7BA1\u7406\u80FD\u529B",paraId:0,tocIndex:1},{value:"\u5185\u7F6E\u63D2\u4EF6\uFF0C\u65E0\u9700\u5355\u72EC\u5B89\u88C5\u3002",paraId:1,tocIndex:2}],FU={},BU={title:"\u6570\u636E\u53EF\u89C6\u5316",toc:"menu",filename:"docs/en-US/plugins/data-visualization/index.md",lastUpdated:1732240239e3,description:"NocoBase\u7684\u6570\u636E\u53EF\u89C6\u5316\u63D2\u4EF6\u63D0\u4F9B\u4E86\u53EF\u89C6\u5316\u7684\u6570\u636E\u68C0\u7D22\u529F\u80FD\u548C\u4E30\u5BCC\u7684\u56FE\u8868\u7EC4\u4EF6\uFF0C\u57FA\u4E8E\u7CFB\u7EDFCollection\u6570\u636E\uFF0C\u7528\u6237\u53EF\u4EE5\u5FEB\u901F\u5EFA\u7ACB\u53EF\u89C6\u5316\u9762\u677F\uFF0C\u7075\u6D3B\u7EC4\u7EC7\u56FE\u8868\uFF0C\u8FDB\u884C\u4E1A\u52A1\u6570\u636E\u5206\u6790\u3002"},jU=[{id:"\u6570\u636E\u53EF\u89C6\u5316",depth:1,title:"\u6570\u636E\u53EF\u89C6\u5316"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"roadmap",depth:2,title:"RoadMap"}],HU=[{value:"NocoBase\u7684\u6570\u636E\u53EF\u89C6\u5316\u63D2\u4EF6\u63D0\u4F9B\u4E86\u53EF\u89C6\u5316\u7684\u6570\u636E\u68C0\u7D22\u529F\u80FD\u548C\u4E30\u5BCC\u7684\u56FE\u8868\u7EC4\u4EF6\uFF0C\u57FA\u4E8E\u7CFB\u7EDFCollection\u6570\u636E\uFF0C\u7528\u6237\u53EF\u4EE5\u5FEB\u901F\u5EFA\u7ACB\u53EF\u89C6\u5316\u9762\u677F\uFF0C\u7075\u6D3B\u7EC4\u7EC7\u56FE\u8868\uFF0C\u8FDB\u884C\u4E1A\u52A1\u6570\u636E\u5206\u6790\u3002",paraId:0,tocIndex:1},{value:`\u8BA1\u5212\u6216\u8FDB\u884C\u4E2D -`,paraId:1,tocIndex:3},{value:"\u5BF9\u5355\u4E2A\u56FE\u8868\u8FDB\u884C\u6570\u636E\u4E0B\u94BB\uFF0C\u4E0E\u8868\u683C\u8054\u52A8",paraId:2,tocIndex:3},{value:"\u4E0ESQL Collection\u66F4\u597D\u7ED3\u5408",paraId:2,tocIndex:3},{value:"\u56FE\u8868\u4EA4\u4E92\u914D\u7F6E\uFF0C\u5982\u94FE\u63A5\u8DF3\u8F6C",paraId:2,tocIndex:3},{value:"\u5728\u5176\u4ED6\u533A\u5757\u4E2D\u6DFB\u52A0\u56FE\u8868",paraId:1,tocIndex:3},{value:"\u66F4\u65B9\u4FBF\u7684\u6570\u636E\u5904\u7406\u548C\u8F6C\u6362",paraId:1,tocIndex:3},{value:"\u652F\u6301Having",paraId:1,tocIndex:3},{value:"\u5728\u56FE\u8868\u533A\u5757\u4E2D\u6DFB\u52A0\u5176\u4ED6\u533A\u5757\uFF0C\u6BD4\u5982Markdown",paraId:1,tocIndex:3},{value:"\u5728\u4E00\u4E2A\u56FE\u8868\u4E2D\u7EC4\u5408\u591A\u4E2AQuery",paraId:1,tocIndex:3},{value:"\u6743\u9650\u63A7\u5236\u4F18\u5316",paraId:1,tocIndex:3},{value:"...",paraId:1,tocIndex:3}],WU={},$U={title:"Tencent COS",toc:"menu",filename:"docs/en-US/plugins/file-manager/tencent-cos.md",lastUpdated:1732240239e3},GU=[{id:"tencent-cos",depth:1,title:"Tencent COS"}],VU=[],KU={},ZU={title:"API \u53C2\u8003",toc:"menu",filename:"docs/en-US/plugins/workflow/development/api.md",lastUpdated:1732240239e3,description:"\u5728\u5E94\u7528\u7684\u8FD0\u884C\u65F6\uFF0C\u4EFB\u610F\u53EF\u4EE5\u83B7\u53D6\u5E94\u7528\u5B9E\u4F8B app \u7684\u5730\u65B9\u8C03\u7528 app.getPlugin('workflow') \u4EE5\u83B7\u53D6\u63D2\u4EF6\u5B9E\u4F8B\uFF08\u4E0B\u6587\u4EE5 plugin \u6307\u4EE3\uFF09\u3002"},YU=[{id:"api-\u53C2\u8003",depth:1,title:"API \u53C2\u8003"},{id:"\u670D\u52A1\u7AEF",depth:2,title:"\u670D\u52A1\u7AEF"},{id:"plugintriggers",depth:3,title:"plugin.triggers"},{id:"plugininstructions",depth:3,title:"plugin.instructions"},{id:"plugintrigger",depth:3,title:"plugin.trigger()"},{id:"pluginresume",depth:3,title:"plugin.resume()"},{id:"\u5BA2\u6237\u7AEF",depth:2,title:"\u5BA2\u6237\u7AEF"},{id:"triggersregister",depth:3,title:"triggers.register()"},{id:"instructionsregister",depth:3,title:"instructions.register()"}],QU=[{value:"\u5728\u5E94\u7528\u7684\u8FD0\u884C\u65F6\uFF0C\u4EFB\u610F\u53EF\u4EE5\u83B7\u53D6\u5E94\u7528\u5B9E\u4F8B ",paraId:0,tocIndex:1},{value:"app",paraId:0,tocIndex:1},{value:" \u7684\u5730\u65B9\u8C03\u7528 ",paraId:0,tocIndex:1},{value:"app.getPlugin('workflow')",paraId:0,tocIndex:1},{value:" \u4EE5\u83B7\u53D6\u63D2\u4EF6\u5B9E\u4F8B\uFF08\u4E0B\u6587\u4EE5 ",paraId:0,tocIndex:1},{value:"plugin",paraId:0,tocIndex:1},{value:" \u6307\u4EE3\uFF09\u3002",paraId:0,tocIndex:1},{value:"plugin.triggers",paraId:1},{value:"\u89E6\u53D1\u5668\u6CE8\u518C\u8868\uFF0C\u7528\u4E8E\u6269\u5C55\u6CE8\u518C\u65B0\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u3002",paraId:2,tocIndex:2},{value:"\u7B7E\u540D",paraId:3,tocIndex:2},{value:"plugin.triggers.register(type: string, trigger: Trigger)",paraId:4,tocIndex:2},{value:"\u53C2\u6570",paraId:5,tocIndex:2},{value:"\u53C2\u6570",paraId:6,tocIndex:2},{value:"\u7C7B\u578B",paraId:6,tocIndex:2},{value:"\u63CF\u8FF0",paraId:6,tocIndex:2},{value:"type",paraId:6,tocIndex:2},{value:"string",paraId:6,tocIndex:2},{value:"\u89E6\u53D1\u5668\u7C7B\u578B\u6807\u8BC6\u7B26",paraId:6,tocIndex:2},{value:"trigger",paraId:6,tocIndex:2},{value:"Trigger",paraId:6,tocIndex:2},{value:"\u89E6\u53D1\u5668\u7C7B\u5B9E\u4F8B",paraId:6,tocIndex:2},{value:"\u6CE8\uFF1A",paraId:7,tocIndex:2},{value:"trigger",paraId:7,tocIndex:2},{value:" \u53C2\u6570\u5728\u5B9E\u4F8B\u5316\u81EA\u5B9A\u4E49 ",paraId:7,tocIndex:2},{value:"Trigger",paraId:7,tocIndex:2},{value:" \u7C7B\u578B\u65F6\u7B2C\u4E00\u4E2A\u53C2\u6570\u9700\u8981\u4F20\u5165\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u5B9E\u4F8B\u5BF9\u8C61\u3002",paraId:7,tocIndex:2},{value:"\u793A\u4F8B",paraId:8,tocIndex:2},{value:`import { Trigger } from '@nocobase/plugin-workflow'; +`,paraId:2,tocIndex:1},{value:"\u8BA2\u5355\uFF08\u8BE5\u660E\u7EC6\u6240\u5C5E\u7684\u8BA2\u5355\uFF0C\u6570\u636E\u6765\u81EA",paraId:6,tocIndex:1},{value:"Orders",paraId:6,tocIndex:1},{value:"\uFF0C\u6BCF\u6761\u8BA2\u5355\u660E\u7EC6\u6570\u636E\u5C5E\u4E8E\u4E00\u6761\u8BA2\u5355\u6570\u636E\uFF09",paraId:6,tocIndex:1},{value:"\u5546\u54C1\uFF08\u8BE5\u660E\u7EC6\u6240\u5305\u542B\u7684\u5546\u54C1\uFF0C\u6570\u636E\u6765\u81EA",paraId:6,tocIndex:1},{value:"Products",paraId:6,tocIndex:1},{value:"\uFF0C\u6BCF\u6761\u8BA2\u5355\u660E\u7EC6\u6570\u636E\u5305\u542B\u4E00\u6761\u5546\u54C1\u6570\u636E\uFF09",paraId:6,tocIndex:1},{value:"\u6570\u91CF",paraId:6,tocIndex:1},{value:"\u5176\u4E2D\uFF0C\u659C\u4F53\u7684\u5B57\u6BB5\u662F\u5173\u7CFB\u5B57\u6BB5\uFF0C\u5173\u8054\u5230\u5176\u4ED6\u6570\u636E\u8868\u3002",paraId:7,tocIndex:1},{value:"\u63A5\u4E0B\u6765\uFF0C\u70B9\u51FB\u201C\u6570\u636E\u8868\u914D\u7F6E\u201D\u6309\u94AE\uFF0C\u8FDB\u5165\u6570\u636E\u8868\u914D\u7F6E\u754C\u9762\uFF0C\u521B\u5EFA\u7B2C\u4E00\u4E2A Collection ",paraId:8,tocIndex:1},{value:"Customers",paraId:8,tocIndex:1},{value:"\u3002",paraId:8,tocIndex:1},{value:"\u7136\u540E\u70B9\u51FB\u201C\u5B57\u6BB5\u914D\u7F6E\u201D\uFF0C\u4E3A",paraId:9,tocIndex:1},{value:"Customers",paraId:9,tocIndex:1},{value:" \u6DFB\u52A0 name \u5B57\u6BB5\uFF0C\u5B83\u662F\u5355\u884C\u6587\u672C\u7C7B\u578B\u3002",paraId:9,tocIndex:1},{value:"\u7528\u540C\u6837\u7684\u65B9\u6CD5\uFF0C\u4E3A",paraId:10,tocIndex:1},{value:"Customers",paraId:10,tocIndex:1},{value:" \u6DFB\u52A0 Address\u3001Gender\u3001Phone\uFF0C\u5B83\u4EEC\u5206\u522B\u662F\u5355\u884C\u6587\u672C\u3001\u5355\u9879\u9009\u62E9\u7C7B\u578B\u3001\u624B\u673A\u53F7\u7801\u7C7B\u578B\u3002",paraId:10,tocIndex:1},{value:"\u7528\u540C\u6837\u7684\u65B9\u6CD5\uFF0C\u521B\u5EFA Collection ",paraId:11,tocIndex:1},{value:"Products",paraId:11,tocIndex:1},{value:"\u3001",paraId:11,tocIndex:1},{value:"Orders",paraId:11,tocIndex:1},{value:"\u3001",paraId:11,tocIndex:1},{value:"Order list",paraId:11,tocIndex:1},{value:" \u4EE5\u53CA\u5B83\u4EEC\u7684\u5B57\u6BB5\u3002",paraId:11,tocIndex:1},{value:"\u5176\u4E2D\uFF0C\u5BF9\u4E8E\u5173\u7CFB\u5B57\u6BB5\uFF0C\u5982\u679C\u4F60\u4E0D\u719F\u6089\u4E00\u5BF9\u591A\u3001\u591A\u5BF9\u591A\u7B49\u6982\u5FF5\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 Link to \u7C7B\u578B\u6765\u5EFA\u7ACB\u6570\u636E\u8868\u4E4B\u95F4\u7684\u5173\u8054\u3002\u5982\u679C\u4F60\u719F\u6089\u8FD9\u51E0\u4E2A\u6982\u5FF5\uFF0C\u8BF7\u6B63\u786E\u4F7F\u7528 One to many, Many to one \u7B49\u7C7B\u578B\u6765\u5EFA\u7ACB\u6570\u636E\u8868\u4E4B\u95F4\u7684\u5173\u8054\u3002\u6BD4\u5982\u5728\u8FD9\u4E2A\u4F8B\u5B50\u4E2D\uFF0C\u6211\u4EEC\u5C06 ",paraId:12,tocIndex:1},{value:"Orders",paraId:12,tocIndex:1},{value:" \u4E0E ",paraId:12,tocIndex:1},{value:"Order list",paraId:12,tocIndex:1},{value:" \u5173\u8054\uFF0C\u5173\u7CFB\u4E3A One to many\u3002",paraId:12,tocIndex:1},{value:"\u5728\u56FE\u5F62\u5316\u7684\u6570\u636E\u8868\u91CC\uFF0C\u53EF\u4EE5\u5F88\u76F4\u89C2\u7684\u770B\u51FA\u5404\u4E2A\u8868\u4E4B\u95F4\u7684\u5173\u7CFB\u3002",paraId:13,tocIndex:1},{value:"\u5C06\u6570\u636E\u8868\u548C\u5B57\u6BB5\u521B\u5EFA\u5B8C\u6210\u540E\uFF0C\u6211\u4EEC\u5F00\u59CB\u5236\u4F5C\u754C\u9762\u3002",paraId:14,tocIndex:1},{value:"\u6211\u4EEC\u9700\u8981\u987E\u5BA2\u3001\u8BA2\u5355\u3001\u5546\u54C1\u4E09\u4E2A\u9875\u9762\u5C55\u793A\u548C\u7BA1\u7406\u6211\u4EEC\u7684\u6570\u636E\u3002",paraId:15,tocIndex:2},{value:"\u70B9\u51FB\u754C\u9762\u914D\u7F6E\u6309\u94AE\uFF0C\u8FDB\u5165\u754C\u9762\u914D\u7F6E\u6A21\u5F0F\u3002\u5728\u754C\u9762\u914D\u7F6E\u6A21\u5F0F\u4E0B\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6DFB\u52A0\u83DC\u5355\u9879\uFF0C\u6DFB\u52A0\u9875\u9762\uFF0C\u5728\u9875\u9762\u5185\u5E03\u7F6E\u533A\u5757\u3002",paraId:16,tocIndex:2},{value:"\u70B9\u51FB\u6DFB\u52A0\u83DC\u5355\u9879\uFF0C\u6DFB\u52A0\u83DC\u5355\u5206\u7EC4 \u201CCustomers\u201D \u548C \u201COrders & Products\u201D \uFF0C\u7136\u540E\u6DFB\u52A0\u5B50\u83DC\u5355\u9875\u9762 \u201CAll Orders\u201D \u548C \u201CProducts\u201D\u3002",paraId:17,tocIndex:2},{value:"\u6DFB\u52A0\u5B8C\u83DC\u5355\u548C\u9875\u9762\u4E4B\u540E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u5728\u9875\u9762\u5185\u6DFB\u52A0\u548C\u914D\u7F6E\u533A\u5757\u4E86\u3002",paraId:18,tocIndex:2},{value:"NocoBase \u76EE\u524D\u652F\u6301\u8868\u683C\u3001\u770B\u677F\u3001\u65E5\u5386\u3001\u8868\u5355\u3001\u8BE6\u60C5\u7B49\u7C7B\u578B\u7684\u533A\u5757\uFF0C\u5B83\u4EEC\u53EF\u4EE5\u5C06\u6570\u636E\u8868\u4E2D\u7684\u6570\u636E\u5C55\u793A\u51FA\u6765\uFF0C\u5E76\u53EF\u4EE5\u5BF9\u6570\u636E\u8FDB\u884C\u64CD\u4F5C\u3002\u663E\u7136\uFF0C\u987E\u5BA2\u3001\u8BA2\u5355\u3001\u5546\u54C1 \u90FD\u9002\u5408\u7528\u8868\u683C\u7684\u65B9\u5F0F\u5C55\u793A\u548C\u64CD\u4F5C\u3002",paraId:19,tocIndex:3},{value:"\u6211\u4EEC\u5728\u201C\u6240\u6709\u8BA2\u5355\u201D\u9875\u9762\uFF0C\u6DFB\u52A0\u4E00\u4E2A\u8868\u683C\u533A\u5757\uFF0C\u6570\u636E\u6E90\u9009\u62E9 Collection ",paraId:20,tocIndex:3},{value:"Orders",paraId:20,tocIndex:3},{value:" \uFF0C\u5E76\u4E3A\u8FD9\u4E2A\u8868\u683C\u533A\u5757\u914D\u7F6E\u9700\u8981\u663E\u793A\u7684\u5217\u3002",paraId:20,tocIndex:3},{value:"\u7ED9\u8FD9\u4E2A\u8868\u683C\u533A\u5757\u914D\u7F6E\u64CD\u4F5C\uFF0C\u5305\u62EC\u7B5B\u9009\u3001\u6DFB\u52A0\u3001\u5220\u9664\u3001\u67E5\u770B\u3001\u7F16\u8F91\u3002",paraId:21,tocIndex:3},{value:"\u4E3A\u65B0\u589E\u3001\u7F16\u8F91\u3001\u67E5\u770B\u7B49\u64CD\u4F5C\u914D\u7F6E\u8868\u5355\u548C\u8BE6\u60C5\u533A\u5757\u3002",paraId:22,tocIndex:3},{value:"\u7136\u540E\uFF0C\u7528\u540C\u6837\u7684\u65B9\u6CD5\uFF0C\u5728 Products \u548C Customers \u9875\u9762\u5E03\u7F6E\u8868\u683C\u533A\u5757\u3002\u5B8C\u6210\u540E\uFF0C\u9000\u51FA\u754C\u9762\u914D\u7F6E\u6A21\u5F0F\uFF0C\u8FDB\u5165\u4F7F\u7528\u6A21\u5F0F\uFF0C\u4E00\u4E2A\u7B80\u5355\u7684\u8BA2\u5355\u7BA1\u7406\u7CFB\u7EDF\u5C31\u5B8C\u6210\u4E86\u3002",paraId:23,tocIndex:3}],kU={},SU={title:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",toc:"menu",filename:"docs/en-US/manual/ui/actions/custom-request.md",lastUpdated:173254844e4,description:"\u914D\u7F6E\u81EA\u5B9A\u4E49\u8BF7\u6C42\u64CD\u4F5C\u7684\u8BF7\u6C42\u5730\u5740\uFF0C\u4EE5\u6EE1\u8DB3\u7279\u5B9A\u4E1A\u52A1\u9700\u6C42\uFF0C\u8BE6\u60C5\u67E5\u770B\u81EA\u5B9A\u4E49\u8BF7\u6C42\u63D2\u4EF6\u6587\u6863"},UU=[{id:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",depth:1,title:"\u81EA\u5B9A\u4E49\u8BF7\u6C42"}],PU=[{value:"\u914D\u7F6E\u81EA\u5B9A\u4E49\u8BF7\u6C42\u64CD\u4F5C\u7684\u8BF7\u6C42\u5730\u5740\uFF0C\u4EE5\u6EE1\u8DB3\u7279\u5B9A\u4E1A\u52A1\u9700\u6C42\uFF0C\u8BE6\u60C5\u67E5\u770B\u81EA\u5B9A\u4E49\u8BF7\u6C42\u63D2\u4EF6\u6587\u6863",paraId:0,tocIndex:0}],TU={},CU={title:"Table \u533A\u5757",toc:"menu",filename:"docs/en-US/plugin-samples/block/block-table.md",lastUpdated:173254844e4,description:"TODO"},AU=[{id:"table-\u533A\u5757",depth:1,title:"Table \u533A\u5757"}],qU=[{value:"Table",paraId:0},{value:"TODO",paraId:1,tocIndex:0}],EU={},DU={title:"\u6279\u91CF\u66F4\u65B0",toc:"menu",filename:"docs/en-US/plugins/action-bulk-update/index.md",lastUpdated:173254844e4,description:"\u6279\u91CF\u66F4\u65B0\u64CD\u4F5C\u7528\u4E8E\u9700\u8981\u5BF9\u4E00\u7EC4\u8BB0\u5F55\u8FDB\u884C\u76F8\u540C\u66F4\u65B0\u7684\u60C5\u51B5\uFF0C\u5728\u6267\u884C\u6279\u91CF\u66F4\u65B0\u64CD\u4F5C\u4E4B\u524D\uFF0C\u7528\u6237\u9700\u8981\u9884\u5148\u5B9A\u4E49\u597D\u66F4\u65B0\u7684\u5B57\u6BB5\u8D4B\u503C\u903B\u8F91\u3002\u8FD9\u4E00\u5957\u903B\u8F91\u5C06\u5728\u7528\u6237\u70B9\u51FB\u66F4\u65B0\u6309\u94AE\u65F6\u5E94\u7528\u5230\u6240\u6709\u9009\u4E2D\u7684\u8BB0\u5F55\u4E0A"},OU=[{id:"\u6279\u91CF\u66F4\u65B0",depth:1,title:"\u6279\u91CF\u66F4\u65B0"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u4F7F\u7528\u6307\u5357",depth:2,title:"\u4F7F\u7528\u6307\u5357"}],RU=[{value:"\u6279\u91CF\u66F4\u65B0\u64CD\u4F5C\u7528\u4E8E\u9700\u8981\u5BF9\u4E00\u7EC4\u8BB0\u5F55\u8FDB\u884C\u76F8\u540C\u66F4\u65B0\u7684\u60C5\u51B5\uFF0C\u5728\u6267\u884C\u6279\u91CF\u66F4\u65B0\u64CD\u4F5C\u4E4B\u524D\uFF0C\u7528\u6237\u9700\u8981\u9884\u5148\u5B9A\u4E49\u597D\u66F4\u65B0\u7684\u5B57\u6BB5\u8D4B\u503C\u903B\u8F91\u3002\u8FD9\u4E00\u5957\u903B\u8F91\u5C06\u5728\u7528\u6237\u70B9\u51FB\u66F4\u65B0\u6309\u94AE\u65F6\u5E94\u7528\u5230\u6240\u6709\u9009\u4E2D\u7684\u8BB0\u5F55\u4E0A",paraId:0,tocIndex:1},{value:"\u8BBE\u7F6E\u66F4\u65B0\u7684\u6570\u636E\uFF1A\u9009\u4E2D/\u6240\u6709\uFF0C\u9ED8\u8BA4\u4E3A\u9009\u4E2D",paraId:1,tocIndex:2},{value:"\u5B57\u6BB5\u8D4B\u503C\uFF1A\u8BBE\u7F6E\u6279\u91CF\u66F4\u65B0\u7684\u5B57\u6BB5\uFF0C\u53EA\u6709\u8BBE\u7F6E\u7684\u5B57\u6BB5\u4F1A\u66F4\u65B0",paraId:1,tocIndex:2},{value:"\u5982\u56FE\u5728\u8FD0\u5355\u8868\u683C\u4E2D\u914D\u7F6E\u6279\u91CF\u66F4\u65B0\u64CD\u4F5C\uFF0C\u5C06\u9009\u4E2D\u7684\u6570\u636E\u6279\u91CF\u66F4\u65B0\u4E3A\u786E\u8BA4\u9001\u8FBE",paraId:2,tocIndex:2}],MU={},LU={title:"\u6570\u636E\u8868\u7BA1\u7406",toc:"menu",filename:"docs/en-US/plugins/collection-manager/index.md",lastUpdated:173254844e4,description:"\u63D0\u4F9B\u4FBF\u6377\u7684\u6570\u636E\u8868\u7BA1\u7406\u80FD\u529B"},NU=[{id:"\u6570\u636E\u8868\u7BA1\u7406",depth:1,title:"\u6570\u636E\u8868\u7BA1\u7406"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"}],zU=[{value:"\u63D0\u4F9B\u4FBF\u6377\u7684\u6570\u636E\u8868\u7BA1\u7406\u80FD\u529B",paraId:0,tocIndex:1},{value:"\u5185\u7F6E\u63D2\u4EF6\uFF0C\u65E0\u9700\u5355\u72EC\u5B89\u88C5\u3002",paraId:1,tocIndex:2}],FU={},BU={title:"\u6570\u636E\u53EF\u89C6\u5316",toc:"menu",filename:"docs/en-US/plugins/data-visualization/index.md",lastUpdated:173254844e4,description:"NocoBase\u7684\u6570\u636E\u53EF\u89C6\u5316\u63D2\u4EF6\u63D0\u4F9B\u4E86\u53EF\u89C6\u5316\u7684\u6570\u636E\u68C0\u7D22\u529F\u80FD\u548C\u4E30\u5BCC\u7684\u56FE\u8868\u7EC4\u4EF6\uFF0C\u57FA\u4E8E\u7CFB\u7EDFCollection\u6570\u636E\uFF0C\u7528\u6237\u53EF\u4EE5\u5FEB\u901F\u5EFA\u7ACB\u53EF\u89C6\u5316\u9762\u677F\uFF0C\u7075\u6D3B\u7EC4\u7EC7\u56FE\u8868\uFF0C\u8FDB\u884C\u4E1A\u52A1\u6570\u636E\u5206\u6790\u3002"},jU=[{id:"\u6570\u636E\u53EF\u89C6\u5316",depth:1,title:"\u6570\u636E\u53EF\u89C6\u5316"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"roadmap",depth:2,title:"RoadMap"}],HU=[{value:"NocoBase\u7684\u6570\u636E\u53EF\u89C6\u5316\u63D2\u4EF6\u63D0\u4F9B\u4E86\u53EF\u89C6\u5316\u7684\u6570\u636E\u68C0\u7D22\u529F\u80FD\u548C\u4E30\u5BCC\u7684\u56FE\u8868\u7EC4\u4EF6\uFF0C\u57FA\u4E8E\u7CFB\u7EDFCollection\u6570\u636E\uFF0C\u7528\u6237\u53EF\u4EE5\u5FEB\u901F\u5EFA\u7ACB\u53EF\u89C6\u5316\u9762\u677F\uFF0C\u7075\u6D3B\u7EC4\u7EC7\u56FE\u8868\uFF0C\u8FDB\u884C\u4E1A\u52A1\u6570\u636E\u5206\u6790\u3002",paraId:0,tocIndex:1},{value:`\u8BA1\u5212\u6216\u8FDB\u884C\u4E2D +`,paraId:1,tocIndex:3},{value:"\u5BF9\u5355\u4E2A\u56FE\u8868\u8FDB\u884C\u6570\u636E\u4E0B\u94BB\uFF0C\u4E0E\u8868\u683C\u8054\u52A8",paraId:2,tocIndex:3},{value:"\u4E0ESQL Collection\u66F4\u597D\u7ED3\u5408",paraId:2,tocIndex:3},{value:"\u56FE\u8868\u4EA4\u4E92\u914D\u7F6E\uFF0C\u5982\u94FE\u63A5\u8DF3\u8F6C",paraId:2,tocIndex:3},{value:"\u5728\u5176\u4ED6\u533A\u5757\u4E2D\u6DFB\u52A0\u56FE\u8868",paraId:1,tocIndex:3},{value:"\u66F4\u65B9\u4FBF\u7684\u6570\u636E\u5904\u7406\u548C\u8F6C\u6362",paraId:1,tocIndex:3},{value:"\u652F\u6301Having",paraId:1,tocIndex:3},{value:"\u5728\u56FE\u8868\u533A\u5757\u4E2D\u6DFB\u52A0\u5176\u4ED6\u533A\u5757\uFF0C\u6BD4\u5982Markdown",paraId:1,tocIndex:3},{value:"\u5728\u4E00\u4E2A\u56FE\u8868\u4E2D\u7EC4\u5408\u591A\u4E2AQuery",paraId:1,tocIndex:3},{value:"\u6743\u9650\u63A7\u5236\u4F18\u5316",paraId:1,tocIndex:3},{value:"...",paraId:1,tocIndex:3}],WU={},$U={title:"Tencent COS",toc:"menu",filename:"docs/en-US/plugins/file-manager/tencent-cos.md",lastUpdated:173254844e4},GU=[{id:"tencent-cos",depth:1,title:"Tencent COS"}],VU=[],KU={},ZU={title:"API \u53C2\u8003",toc:"menu",filename:"docs/en-US/plugins/workflow/development/api.md",lastUpdated:173254844e4,description:"\u5728\u5E94\u7528\u7684\u8FD0\u884C\u65F6\uFF0C\u4EFB\u610F\u53EF\u4EE5\u83B7\u53D6\u5E94\u7528\u5B9E\u4F8B app \u7684\u5730\u65B9\u8C03\u7528 app.getPlugin('workflow') \u4EE5\u83B7\u53D6\u63D2\u4EF6\u5B9E\u4F8B\uFF08\u4E0B\u6587\u4EE5 plugin \u6307\u4EE3\uFF09\u3002"},YU=[{id:"api-\u53C2\u8003",depth:1,title:"API \u53C2\u8003"},{id:"\u670D\u52A1\u7AEF",depth:2,title:"\u670D\u52A1\u7AEF"},{id:"plugintriggers",depth:3,title:"plugin.triggers"},{id:"plugininstructions",depth:3,title:"plugin.instructions"},{id:"plugintrigger",depth:3,title:"plugin.trigger()"},{id:"pluginresume",depth:3,title:"plugin.resume()"},{id:"\u5BA2\u6237\u7AEF",depth:2,title:"\u5BA2\u6237\u7AEF"},{id:"triggersregister",depth:3,title:"triggers.register()"},{id:"instructionsregister",depth:3,title:"instructions.register()"}],QU=[{value:"\u5728\u5E94\u7528\u7684\u8FD0\u884C\u65F6\uFF0C\u4EFB\u610F\u53EF\u4EE5\u83B7\u53D6\u5E94\u7528\u5B9E\u4F8B ",paraId:0,tocIndex:1},{value:"app",paraId:0,tocIndex:1},{value:" \u7684\u5730\u65B9\u8C03\u7528 ",paraId:0,tocIndex:1},{value:"app.getPlugin('workflow')",paraId:0,tocIndex:1},{value:" \u4EE5\u83B7\u53D6\u63D2\u4EF6\u5B9E\u4F8B\uFF08\u4E0B\u6587\u4EE5 ",paraId:0,tocIndex:1},{value:"plugin",paraId:0,tocIndex:1},{value:" \u6307\u4EE3\uFF09\u3002",paraId:0,tocIndex:1},{value:"plugin.triggers",paraId:1},{value:"\u89E6\u53D1\u5668\u6CE8\u518C\u8868\uFF0C\u7528\u4E8E\u6269\u5C55\u6CE8\u518C\u65B0\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u3002",paraId:2,tocIndex:2},{value:"\u7B7E\u540D",paraId:3,tocIndex:2},{value:"plugin.triggers.register(type: string, trigger: Trigger)",paraId:4,tocIndex:2},{value:"\u53C2\u6570",paraId:5,tocIndex:2},{value:"\u53C2\u6570",paraId:6,tocIndex:2},{value:"\u7C7B\u578B",paraId:6,tocIndex:2},{value:"\u63CF\u8FF0",paraId:6,tocIndex:2},{value:"type",paraId:6,tocIndex:2},{value:"string",paraId:6,tocIndex:2},{value:"\u89E6\u53D1\u5668\u7C7B\u578B\u6807\u8BC6\u7B26",paraId:6,tocIndex:2},{value:"trigger",paraId:6,tocIndex:2},{value:"Trigger",paraId:6,tocIndex:2},{value:"\u89E6\u53D1\u5668\u7C7B\u5B9E\u4F8B",paraId:6,tocIndex:2},{value:"\u6CE8\uFF1A",paraId:7,tocIndex:2},{value:"trigger",paraId:7,tocIndex:2},{value:" \u53C2\u6570\u5728\u5B9E\u4F8B\u5316\u81EA\u5B9A\u4E49 ",paraId:7,tocIndex:2},{value:"Trigger",paraId:7,tocIndex:2},{value:" \u7C7B\u578B\u65F6\u7B2C\u4E00\u4E2A\u53C2\u6570\u9700\u8981\u4F20\u5165\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u5B9E\u4F8B\u5BF9\u8C61\u3002",paraId:7,tocIndex:2},{value:"\u793A\u4F8B",paraId:8,tocIndex:2},{value:`import { Trigger } from '@nocobase/plugin-workflow'; class MyTrigger extends Trigger { // ... @@ -11538,7 +11590,7 @@ class MyTrigger extends Trigger { } } `,paraId:26,tocIndex:4},{value:"plugin.resume()",paraId:1},{value:"\u4EE5\u7279\u5B9A\u7684\u8282\u70B9\u4EFB\u52A1\u5C06\u505C\u7B49\u7684\u5DE5\u4F5C\u6D41\u6062\u590D\u6267\u884C\u3002",paraId:27,tocIndex:5},{value:"\u53EA\u6709\u5904\u5728\u505C\u7B49\u72B6\u6001\uFF08",paraId:28,tocIndex:5},{value:"EXECUTION_STATUS.STARTED",paraId:28,tocIndex:5},{value:"\uFF09\u7684\u5DE5\u4F5C\u6D41\u624D\u80FD\u88AB\u6062\u590D\u6267\u884C\u3002",paraId:28,tocIndex:5},{value:"\u53EA\u6709\u5904\u5728\u505C\u7B49\u72B6\u6001\uFF08",paraId:28,tocIndex:5},{value:"JOB_STATUS.PENDING",paraId:28,tocIndex:5},{value:"\uFF09\u7684\u8282\u70B9\u4EFB\u52A1\u624D\u80FD\u88AB\u6062\u590D\u6267\u884C\u3002",paraId:28,tocIndex:5},{value:"\u7B7E\u540D",paraId:29,tocIndex:5},{value:"plugin.resume(job: JobModel)",paraId:30,tocIndex:5},{value:"\u53C2\u6570",paraId:31,tocIndex:5},{value:"\u53C2\u6570",paraId:32,tocIndex:5},{value:"\u7C7B\u578B",paraId:32,tocIndex:5},{value:"\u63CF\u8FF0",paraId:32,tocIndex:5},{value:"job",paraId:32,tocIndex:5},{value:"JobModel",paraId:32,tocIndex:5},{value:"\u66F4\u65B0\u540E\u7684\u4EFB\u52A1\u5BF9\u8C61",paraId:32,tocIndex:5},{value:"\u6CE8\uFF1A\u4F20\u5165\u7684\u4EFB\u52A1\u5BF9\u8C61\u4E00\u822C\u662F\u66F4\u65B0\u540E\u7684\u5BF9\u8C61\uFF0C\u4E14\u901A\u5E38\u4F1A\u5C06 ",paraId:33,tocIndex:5},{value:"status",paraId:33,tocIndex:5},{value:" \u66F4\u65B0\u4E3A\u975E ",paraId:33,tocIndex:5},{value:"JOB_STATUS.PENDING",paraId:33,tocIndex:5},{value:" \u7684\u503C\uFF0C\u5426\u5219\u5C06\u7EE7\u7EED\u505C\u7B49\u3002",paraId:33,tocIndex:5},{value:"\u793A\u4F8B",paraId:34,tocIndex:5},{value:"\u8BE6\u89C1",paraId:35,tocIndex:5},{value:"\u6E90\u7801",paraId:35,tocIndex:5},{value:"\u3002",paraId:35,tocIndex:5},{value:"\u5BA2\u6237\u7AEF\u5305\u7ED3\u6784\u53EF\u7528\u7684 API \u5982\u4EE5\u4E0B\u4EE3\u7801\u6240\u793A\uFF1A",paraId:36,tocIndex:6},{value:`import { triggers, instructions } from '@nocobase/workflow/client'; -`,paraId:37,tocIndex:6},{value:"triggers.register()",paraId:1},{value:"\u6CE8\u518C\u89E6\u53D1\u5668\u7C7B\u578B\u5BF9\u5E94\u7684\u914D\u7F6E\u9762\u677F\u3002",paraId:38,tocIndex:7},{value:"\u7B7E\u540D",paraId:39,tocIndex:7},{value:"triggers.register(type: string, config: Trigger): void",paraId:40,tocIndex:7},{value:"\u53C2\u6570",paraId:41,tocIndex:7},{value:"\u53C2\u6570",paraId:42,tocIndex:7},{value:"\u7C7B\u578B",paraId:42,tocIndex:7},{value:"\u8BF4\u660E",paraId:42,tocIndex:7},{value:"type",paraId:42,tocIndex:7},{value:"string",paraId:42,tocIndex:7},{value:"\u89E6\u53D1\u5668\u7C7B\u578B\u6807\u8BC6\uFF0C\u4E0E\u6CE8\u518C\u4F7F\u7528\u7684\u6807\u8BC6\u4E00\u81F4",paraId:42,tocIndex:7},{value:"config.title",paraId:42,tocIndex:7},{value:"string",paraId:42,tocIndex:7},{value:"\u89E6\u53D1\u5668\u7C7B\u578B\u540D\u79F0",paraId:42,tocIndex:7},{value:"config.fieldset",paraId:42,tocIndex:7},{value:"{ [key: string]: ISchema }",paraId:42,tocIndex:7},{value:"\u89E6\u53D1\u5668\u914D\u7F6E\u9879\u96C6\u5408",paraId:42,tocIndex:7},{value:"config.scope?",paraId:42,tocIndex:7},{value:"{ [key: string]: any }",paraId:42,tocIndex:7},{value:"\u914D\u7F6E\u9879 Schema \u4E2D\u53EF\u80FD\u7528\u5230\u7684\u5BF9\u8C61\u96C6\u5408",paraId:42,tocIndex:7},{value:"config.components?",paraId:42,tocIndex:7},{value:"{ [key: string]: React.FC }",paraId:42,tocIndex:7},{value:"\u914D\u7F6E\u9879 Schema \u4E2D\u53EF\u80FD\u7528\u5230\u7684\u7EC4\u4EF6\u96C6\u5408",paraId:42,tocIndex:7},{value:"config.getter?",paraId:42,tocIndex:7},{value:"React.FC",paraId:42,tocIndex:7},{value:"\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u7684\u503C\u83B7\u53D6\u5668",paraId:42,tocIndex:7},{value:"config.view?",paraId:42,tocIndex:7},{value:"ISchema",paraId:42,tocIndex:7},{value:"\u89E6\u53D1\u5668\u914D\u7F6E\u9879\u7684\u6458\u8981\u5C55\u793A\u7EC4\u4EF6",paraId:42,tocIndex:7},{value:"config.fieldset",paraId:43,tocIndex:7},{value:" \u4E2D\u7684\u914D\u7F6E\u9879\u7684\u8868\u5355\u540D\u79F0\u6682\u65F6\u9700\u4EE5 ",paraId:43,tocIndex:7},{value:"config.",paraId:43,tocIndex:7},{value:" \u5F00\u5934\uFF08\u672A\u6765\u53EF\u80FD\u4F1A\u7701\u7565\uFF09\u3002",paraId:43,tocIndex:7},{value:"config.getter",paraId:43,tocIndex:7},{value:" \u5982\u679C\u6CA1\u6709\u8BBE\u7F6E\uFF0C\u5219\u4EE3\u8868\u8BE5\u7C7B\u578B\u89E6\u53D1\u5668\u4E0D\u63D0\u4F9B\u53D6\u503C\u529F\u80FD\uFF0C\u5728\u6D41\u7A0B\u7684\u8282\u70B9\u4E2D\u65E0\u6CD5\u9009\u53D6\u89E6\u53D1\u5668\u7684\u4E0A\u4E0B\u6587\u6570\u636E\u3002",paraId:43,tocIndex:7},{value:"instructions.register()",paraId:1},{value:"\u6CE8\u518C\u8282\u70B9\u7C7B\u578B\u5BF9\u5E94\u7684\u914D\u7F6E\u9762\u677F\u3002",paraId:44,tocIndex:8},{value:"\u7B7E\u540D",paraId:45,tocIndex:8},{value:"instructions.register(type: string, config: Instruction): void",paraId:46,tocIndex:8},{value:"\u53C2\u6570",paraId:47,tocIndex:8},{value:"\u53C2\u6570",paraId:48,tocIndex:8},{value:"\u7C7B\u578B",paraId:48,tocIndex:8},{value:"\u8BF4\u660E",paraId:48,tocIndex:8},{value:"type",paraId:48,tocIndex:8},{value:"string",paraId:48,tocIndex:8},{value:"\u8282\u70B9\u7C7B\u578B\u6807\u8BC6\uFF0C\u4E0E\u6CE8\u518C\u4F7F\u7528\u7684\u6807\u8BC6\u4E00\u81F4",paraId:48,tocIndex:8},{value:"config.title",paraId:48,tocIndex:8},{value:"string",paraId:48,tocIndex:8},{value:"\u8282\u70B9\u7C7B\u578B\u540D\u79F0",paraId:48,tocIndex:8},{value:"config.group",paraId:48,tocIndex:8},{value:"string",paraId:48,tocIndex:8},{value:"\u8282\u70B9\u7C7B\u578B\u5206\u7EC4\u6807\u8BC6\uFF0C\u76EE\u524D\u53EF\u9009\uFF1A",paraId:48,tocIndex:8},{value:"'control'",paraId:48,tocIndex:8},{value:"/",paraId:48,tocIndex:8},{value:"'collection'",paraId:48,tocIndex:8},{value:"/",paraId:48,tocIndex:8},{value:"'extended'",paraId:48,tocIndex:8},{value:"config.fieldset",paraId:48,tocIndex:8},{value:"{ [key: string]: ISchema }",paraId:48,tocIndex:8},{value:"\u8282\u70B9\u914D\u7F6E\u9879\u96C6\u5408",paraId:48,tocIndex:8},{value:"config.scope?",paraId:48,tocIndex:8},{value:"{ [key: string]: any }",paraId:48,tocIndex:8},{value:"\u914D\u7F6E\u9879 Schema \u4E2D\u53EF\u80FD\u7528\u5230\u7684\u5BF9\u8C61\u96C6\u5408",paraId:48,tocIndex:8},{value:"config.components?",paraId:48,tocIndex:8},{value:"{ [key: string]: React.FC }",paraId:48,tocIndex:8},{value:"\u914D\u7F6E\u9879 Schema \u4E2D\u53EF\u80FD\u7528\u5230\u7684\u7EC4\u4EF6\u96C6\u5408",paraId:48,tocIndex:8},{value:"config.getter?",paraId:48,tocIndex:8},{value:"React.FC",paraId:48,tocIndex:8},{value:"\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u7684\u503C\u83B7\u53D6\u5668",paraId:48,tocIndex:8},{value:"config.view?",paraId:48,tocIndex:8},{value:"ISchema",paraId:48,tocIndex:8},{value:"\u8282\u70B9\u914D\u7F6E\u9879\u7684\u6458\u8981\u5C55\u793A\u7EC4\u4EF6",paraId:48,tocIndex:8},{value:"config.render?",paraId:48,tocIndex:8},{value:"React.FC",paraId:48,tocIndex:8},{value:"\u81EA\u5B9A\u4E49\u8282\u70B9\u6E32\u67D3\u7EC4\u4EF6",paraId:48,tocIndex:8},{value:"fieldset",paraId:49,tocIndex:8},{value:" \u4E2D\u7684\u914D\u7F6E\u9879\u7684\u8868\u5355\u540D\u79F0\u6682\u65F6\u9700\u4EE5 ",paraId:49,tocIndex:8},{value:"config.",paraId:49,tocIndex:8},{value:" \u5F00\u5934\uFF08\u672A\u6765\u53EF\u80FD\u4F1A\u7701\u7565\uFF09\u3002",paraId:49,tocIndex:8},{value:"getter",paraId:49,tocIndex:8},{value:" \u5982\u679C\u6CA1\u6709\u8BBE\u7F6E\uFF0C\u5219\u4EE3\u8868\u8BE5\u8282\u70B9\u7C7B\u578B\u4E0D\u63D0\u4F9B\u53D6\u503C\u529F\u80FD\uFF0C\u5728\u6D41\u7A0B\u7684\u8282\u70B9\u4E2D\u65E0\u6CD5\u9009\u8BE5\u7C7B\u578B\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u3002\u5982\u679C\u7ED3\u679C\u503C\u662F\u5355\u4E00\u7684\uFF08\u4E0D\u53EF\u9009\uFF09\uFF0C\u5219\u8FD4\u56DE\u4E00\u4E2A\u53EF\u4EE5\u8868\u8FBE\u5BF9\u5E94\u4FE1\u606F\u7684\u9759\u6001\u5185\u5BB9\u5373\u53EF\u3002\u5982\u679C\u9700\u8981\u53EF\u9009\uFF08\u5982\u4E00\u4E2A Object \u4E2D\u7684\u67D0\u4E2A\u5C5E\u6027\uFF09\uFF0C\u5219\u53EF\u4EE5\u81EA\u5B9A\u4E49\u5BF9\u5E94\u7684\u9009\u62E9\u7EC4\u4EF6\u8F93\u51FA\u3002",paraId:49,tocIndex:8},{value:"render",paraId:49,tocIndex:8},{value:" \u65B9\u6CD5\u5F53\u9ED8\u8BA4\u8282\u70B9\u6E32\u67D3\u4E0D\u6EE1\u8DB3\u65F6\u53EF\u4EE5\u5B8C\u5168\u8986\u76D6\u66FF\u4EE3\u4F7F\u7528\uFF0C\u8FDB\u884C\u81EA\u5B9A\u4E49\u8282\u70B9\u89C6\u56FE\u6E32\u67D3\u3002\u4F8B\u5982\u8981\u9488\u5BF9\u5206\u652F\u7C7B\u578B\u7684\u5F00\u59CB\u8282\u70B9\u63D0\u4F9B\u66F4\u591A\u64CD\u4F5C\u6309\u94AE\u6216\u5176\u4ED6\u4EA4\u4E92\uFF0C\u5219\u9700\u8981\u4F7F\u7528\u8BE5\u65B9\u6CD5\uFF0C\u5177\u4F53\u53EF\u4EE5\u53C2\u8003\u5E76\u884C\u5206\u652F\u7B49\u8282\u70B9\u7684\u524D\u7AEF\u5B9E\u73B0\uFF08",paraId:49,tocIndex:8},{value:"\u76F8\u5173\u6E90\u7801",paraId:49,tocIndex:8},{value:"\uFF09\u3002",paraId:49,tocIndex:8}],JU={},XU={title:"\u8FDB\u9636\u4F7F\u7528",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/advanced.md",lastUpdated:1732240239e3,description:"\u4ECE \u5FEB\u901F\u5F00\u59CB \u4E2D\u6211\u4EEC\u5DF2\u7ECF\u4E86\u89E3\u4E86\u5DE5\u4F5C\u6D41\u6700\u57FA\u672C\u7684\u7528\u6CD5\uFF0C\u672C\u7BC7\u8FDB\u4E00\u6B65\u4ECB\u7ECD\u5176\u4E2D\u4E00\u4E9B\u66F4\u6DF1\u5165\u7684\u6982\u5FF5\u3002"},eP=[{id:"\u8FDB\u9636\u4F7F\u7528",depth:1,title:"\u8FDB\u9636\u4F7F\u7528"},{id:"\u4F7F\u7528\u53D8\u91CF",depth:2,title:"\u4F7F\u7528\u53D8\u91CF"},{id:"\u6267\u884C\u8BA1\u5212\u5386\u53F2\u8BB0\u5F55",depth:2,title:"\u6267\u884C\u8BA1\u5212\uFF08\u5386\u53F2\u8BB0\u5F55\uFF09"},{id:"\u8282\u70B9\u6267\u884C\u72B6\u6001",depth:2,title:"\u8282\u70B9\u6267\u884C\u72B6\u6001"},{id:"\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55",depth:2,title:"\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55"},{id:"\u5DE5\u4F5C\u6D41\u7684\u7248\u672C",depth:2,title:"\u5DE5\u4F5C\u6D41\u7684\u7248\u672C"}],aP=[{value:"\u4ECE ",paraId:0,tocIndex:0},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:1,tocIndex:0},{value:" \u4E2D\u6211\u4EEC\u5DF2\u7ECF\u4E86\u89E3\u4E86\u5DE5\u4F5C\u6D41\u6700\u57FA\u672C\u7684\u7528\u6CD5\uFF0C\u672C\u7BC7\u8FDB\u4E00\u6B65\u4ECB\u7ECD\u5176\u4E2D\u4E00\u4E9B\u66F4\u6DF1\u5165\u7684\u6982\u5FF5\u3002",paraId:0,tocIndex:0},{value:"\u6B63\u5982\u7A0B\u5E8F\u8BED\u8A00\u4E2D\u7684\u53D8\u91CF\uFF0C\u5728\u5DE5\u4F5C\u6D41\u4E2D",paraId:2,tocIndex:1},{value:"\u53D8\u91CF",paraId:2,tocIndex:1},{value:"\u662F\u7528\u4E8E\u4E32\u63A5\u548C\u7EC4\u7EC7\u6D41\u7A0B\u7684\u91CD\u8981\u5DE5\u5177\u3002",paraId:2,tocIndex:1},{value:"\u5728\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\u6267\u884C\u6BCF\u4E2A\u8282\u70B9\u65F6\uFF0C\u4E00\u4E9B\u914D\u7F6E\u9879\u53EF\u4EE5\u9009\u62E9\u4F7F\u7528\u53D8\u91CF\uFF0C\u53D8\u91CF\u7684\u6765\u6E90\u5373\u8BE5\u8282\u70B9\u7684\u524D\u5E8F\u6570\u636E\uFF0C\u5305\u62EC\u4EE5\u4E0B\u51E0\u7C7B\uFF1A",paraId:3,tocIndex:1},{value:"\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF1A\u8868\u5355\u89E6\u53D1\u3001\u6570\u636E\u8868\u89E6\u53D1\u7B49\u60C5\u51B5\u4E0B\uFF0C\u5355\u884C\u6570\u636E\u5BF9\u8C61\u53EF\u4EE5\u88AB\u6240\u6709\u8282\u70B9\u4F7F\u7528\u3002",paraId:4,tocIndex:1},{value:"\u4E0A\u6E38\u8282\u70B9\u6570\u636E\uFF1A\u6D41\u7A0B\u8FDB\u884C\u5230\u4EFB\u610F\u8282\u70B9\u65F6\uFF0C\u4E4B\u524D\u5DF2\u5B8C\u6210\u7684\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u3002",paraId:4,tocIndex:1},{value:"\u5C40\u57DF\u53D8\u91CF\uFF1A\u5F53\u8282\u70B9\u5904\u5728\u4E00\u4E9B\u7279\u6B8A\u5206\u652F\u7ED3\u6784\u5185\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5BF9\u5E94\u5206\u652F\u5185\u7279\u6709\u7684\u5C40\u57DF\u53D8\u91CF\uFF0C\u4F8B\u5982\u5FAA\u73AF\u7ED3\u6784\u4E2D\u53EF\u4EE5\u4F7F\u7528\u6BCF\u8F6E\u5FAA\u73AF\u7684\u6570\u636E\u5BF9\u8C61\u3002",paraId:4,tocIndex:1},{value:"\u7CFB\u7EDF\u53D8\u91CF\uFF1A\u4E00\u4E9B\u5185\u7F6E\u7684\u7CFB\u7EDF\u53C2\u6570\uFF0C\u5982\u5F53\u524D\u65F6\u95F4\u7B49\u3002",paraId:4,tocIndex:1},{value:"\u6211\u4EEC\u5728 ",paraId:5,tocIndex:1},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:6,tocIndex:1},{value:" \u4E2D\u5DF2\u7ECF\u591A\u6B21\u4F7F\u7528\u4E86\u53D8\u91CF\u7684\u529F\u80FD\uFF0C\u4F8B\u5982\u5728\u8FD0\u7B97\u8282\u70B9\u4E2D\uFF0C\u6211\u4EEC\u53EF\u4EE5\u4F7F\u7528\u53D8\u91CF\u6765\u5F15\u7528\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u6765\u8FDB\u884C\u8BA1\u7B97\uFF1A",paraId:5,tocIndex:1},{value:"\u5728\u66F4\u65B0\u8282\u70B9\u4E2D\uFF0C\u4F7F\u7528\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u4F5C\u4E3A\u7B5B\u9009\u6761\u4EF6\u7684\u53D8\u91CF\uFF0C\u5E76\u5F15\u7528\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\u4F5C\u4E3A\u66F4\u65B0\u6570\u636E\u7684\u5B57\u6BB5\u503C\u53D8\u91CF\uFF1A",paraId:7,tocIndex:1},{value:"\u53D8\u91CF\u7684\u5185\u90E8\u662F\u4E00\u4E2A JSON \u7ED3\u6784\uFF0C\u901A\u5E38\u53EF\u4EE5\u6309 JSON \u7684\u8DEF\u5F84\u4F7F\u7528\u6570\u636E\u7684\u7279\u5B9A\u90E8\u5206\u3002\u7531\u4E8E\u5F88\u591A\u53D8\u91CF\u57FA\u4E8E NocoBase \u7684\u6570\u636E\u8868\u7ED3\u6784\uFF0C\u5173\u7CFB\u6570\u636E\u5C06\u4F1A\u4F5C\u4E3A\u5BF9\u8C61\u7684\u5C5E\u6027\u6309\u5C42\u7EA7\u7EC4\u6210\u7C7B\u4F3C\u6811\u7684\u7ED3\u6784\uFF0C\u4F8B\u5982\u6211\u4EEC\u53EF\u4EE5\u9009\u62E9\u67E5\u8BE2\u5230\u6570\u636E\u7684\u5173\u7CFB\u6570\u636E\u7684\u67D0\u4E2A\u5B57\u6BB5\u7684\u503C\u3002\u53E6\u5916\u5F53\u5173\u7CFB\u6570\u636E\u662F\u5BF9\u591A\u7684\u7ED3\u6784\u65F6\uFF0C\u53D8\u91CF\u53EF\u80FD\u4F1A\u662F\u4E00\u4E2A\u6570\u7EC4\u3002",paraId:8,tocIndex:1},{value:"\u9009\u62E9\u53D8\u91CF\u5728\u5927\u591A\u6570\u65F6\u5019\u4F1A\u9700\u8981\u9009\u5230\u6700\u540E\u4E00\u5C42\u503C\u5C5E\u6027\uFF0C\u901A\u5E38\u662F\u7B80\u5355\u6570\u636E\u7C7B\u578B\uFF0C\u5982\u6570\u5B57\u3001\u5B57\u7B26\u4E32\u7B49\u3002\u4F46\u5F53\u53D8\u91CF\u5C42\u7EA7\u4E2D\u6709\u6570\u7EC4\u65F6\uFF0C\u672B\u7EA7\u7684\u5C5E\u6027\u4E5F\u4F1A\u88AB\u6620\u5C04\u6210\u4E00\u4E2A\u6570\u7EC4\uFF0C\u53EA\u6709\u5BF9\u5E94\u7684\u8282\u70B9\u652F\u6301\u6570\u7EC4\u7684\u60C5\u51B5\u4E0B\uFF0C\u624D\u80FD\u6B63\u786E\u5904\u7406\u6570\u7EC4\u6570\u636E\u3002\u4F8B\u5982\u5728\u8FD0\u7B97\u8282\u70B9\u4E2D\uFF0C\u4E00\u4E9B\u8BA1\u7B97\u5F15\u64CE\u6709\u4E13\u95E8\u5904\u7406\u6570\u7EC4\u7684\u51FD\u6570\uFF0C\u53C8\u6BD4\u5982\u5728\u5FAA\u73AF\u8282\u70B9\u4E2D\uFF0C\u5FAA\u73AF\u5BF9\u8C61\u4E5F\u53EF\u4EE5\u76F4\u63A5\u9009\u62E9\u4E00\u4E2A\u6570\u7EC4\u3002",paraId:9,tocIndex:1},{value:"\u4E3E\u4E2A\u4F8B\u5B50\uFF0C\u5F53\u4E00\u4E2A\u67E5\u8BE2\u8282\u70B9\u67E5\u8BE2\u4E86\u591A\u6761\u6570\u636E\u65F6\uFF0C\u8282\u70B9\u7ED3\u679C\u5C06\u4F1A\u662F\u4E00\u4E2A\u5305\u542B\u591A\u884C\u540C\u6784\u6570\u636E\u7684\u6570\u7EC4\uFF1A",paraId:10,tocIndex:1},{value:`[ +`,paraId:37,tocIndex:6},{value:"triggers.register()",paraId:1},{value:"\u6CE8\u518C\u89E6\u53D1\u5668\u7C7B\u578B\u5BF9\u5E94\u7684\u914D\u7F6E\u9762\u677F\u3002",paraId:38,tocIndex:7},{value:"\u7B7E\u540D",paraId:39,tocIndex:7},{value:"triggers.register(type: string, config: Trigger): void",paraId:40,tocIndex:7},{value:"\u53C2\u6570",paraId:41,tocIndex:7},{value:"\u53C2\u6570",paraId:42,tocIndex:7},{value:"\u7C7B\u578B",paraId:42,tocIndex:7},{value:"\u8BF4\u660E",paraId:42,tocIndex:7},{value:"type",paraId:42,tocIndex:7},{value:"string",paraId:42,tocIndex:7},{value:"\u89E6\u53D1\u5668\u7C7B\u578B\u6807\u8BC6\uFF0C\u4E0E\u6CE8\u518C\u4F7F\u7528\u7684\u6807\u8BC6\u4E00\u81F4",paraId:42,tocIndex:7},{value:"config.title",paraId:42,tocIndex:7},{value:"string",paraId:42,tocIndex:7},{value:"\u89E6\u53D1\u5668\u7C7B\u578B\u540D\u79F0",paraId:42,tocIndex:7},{value:"config.fieldset",paraId:42,tocIndex:7},{value:"{ [key: string]: ISchema }",paraId:42,tocIndex:7},{value:"\u89E6\u53D1\u5668\u914D\u7F6E\u9879\u96C6\u5408",paraId:42,tocIndex:7},{value:"config.scope?",paraId:42,tocIndex:7},{value:"{ [key: string]: any }",paraId:42,tocIndex:7},{value:"\u914D\u7F6E\u9879 Schema \u4E2D\u53EF\u80FD\u7528\u5230\u7684\u5BF9\u8C61\u96C6\u5408",paraId:42,tocIndex:7},{value:"config.components?",paraId:42,tocIndex:7},{value:"{ [key: string]: React.FC }",paraId:42,tocIndex:7},{value:"\u914D\u7F6E\u9879 Schema \u4E2D\u53EF\u80FD\u7528\u5230\u7684\u7EC4\u4EF6\u96C6\u5408",paraId:42,tocIndex:7},{value:"config.getter?",paraId:42,tocIndex:7},{value:"React.FC",paraId:42,tocIndex:7},{value:"\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u7684\u503C\u83B7\u53D6\u5668",paraId:42,tocIndex:7},{value:"config.view?",paraId:42,tocIndex:7},{value:"ISchema",paraId:42,tocIndex:7},{value:"\u89E6\u53D1\u5668\u914D\u7F6E\u9879\u7684\u6458\u8981\u5C55\u793A\u7EC4\u4EF6",paraId:42,tocIndex:7},{value:"config.fieldset",paraId:43,tocIndex:7},{value:" \u4E2D\u7684\u914D\u7F6E\u9879\u7684\u8868\u5355\u540D\u79F0\u6682\u65F6\u9700\u4EE5 ",paraId:43,tocIndex:7},{value:"config.",paraId:43,tocIndex:7},{value:" \u5F00\u5934\uFF08\u672A\u6765\u53EF\u80FD\u4F1A\u7701\u7565\uFF09\u3002",paraId:43,tocIndex:7},{value:"config.getter",paraId:43,tocIndex:7},{value:" \u5982\u679C\u6CA1\u6709\u8BBE\u7F6E\uFF0C\u5219\u4EE3\u8868\u8BE5\u7C7B\u578B\u89E6\u53D1\u5668\u4E0D\u63D0\u4F9B\u53D6\u503C\u529F\u80FD\uFF0C\u5728\u6D41\u7A0B\u7684\u8282\u70B9\u4E2D\u65E0\u6CD5\u9009\u53D6\u89E6\u53D1\u5668\u7684\u4E0A\u4E0B\u6587\u6570\u636E\u3002",paraId:43,tocIndex:7},{value:"instructions.register()",paraId:1},{value:"\u6CE8\u518C\u8282\u70B9\u7C7B\u578B\u5BF9\u5E94\u7684\u914D\u7F6E\u9762\u677F\u3002",paraId:44,tocIndex:8},{value:"\u7B7E\u540D",paraId:45,tocIndex:8},{value:"instructions.register(type: string, config: Instruction): void",paraId:46,tocIndex:8},{value:"\u53C2\u6570",paraId:47,tocIndex:8},{value:"\u53C2\u6570",paraId:48,tocIndex:8},{value:"\u7C7B\u578B",paraId:48,tocIndex:8},{value:"\u8BF4\u660E",paraId:48,tocIndex:8},{value:"type",paraId:48,tocIndex:8},{value:"string",paraId:48,tocIndex:8},{value:"\u8282\u70B9\u7C7B\u578B\u6807\u8BC6\uFF0C\u4E0E\u6CE8\u518C\u4F7F\u7528\u7684\u6807\u8BC6\u4E00\u81F4",paraId:48,tocIndex:8},{value:"config.title",paraId:48,tocIndex:8},{value:"string",paraId:48,tocIndex:8},{value:"\u8282\u70B9\u7C7B\u578B\u540D\u79F0",paraId:48,tocIndex:8},{value:"config.group",paraId:48,tocIndex:8},{value:"string",paraId:48,tocIndex:8},{value:"\u8282\u70B9\u7C7B\u578B\u5206\u7EC4\u6807\u8BC6\uFF0C\u76EE\u524D\u53EF\u9009\uFF1A",paraId:48,tocIndex:8},{value:"'control'",paraId:48,tocIndex:8},{value:"/",paraId:48,tocIndex:8},{value:"'collection'",paraId:48,tocIndex:8},{value:"/",paraId:48,tocIndex:8},{value:"'extended'",paraId:48,tocIndex:8},{value:"config.fieldset",paraId:48,tocIndex:8},{value:"{ [key: string]: ISchema }",paraId:48,tocIndex:8},{value:"\u8282\u70B9\u914D\u7F6E\u9879\u96C6\u5408",paraId:48,tocIndex:8},{value:"config.scope?",paraId:48,tocIndex:8},{value:"{ [key: string]: any }",paraId:48,tocIndex:8},{value:"\u914D\u7F6E\u9879 Schema \u4E2D\u53EF\u80FD\u7528\u5230\u7684\u5BF9\u8C61\u96C6\u5408",paraId:48,tocIndex:8},{value:"config.components?",paraId:48,tocIndex:8},{value:"{ [key: string]: React.FC }",paraId:48,tocIndex:8},{value:"\u914D\u7F6E\u9879 Schema \u4E2D\u53EF\u80FD\u7528\u5230\u7684\u7EC4\u4EF6\u96C6\u5408",paraId:48,tocIndex:8},{value:"config.getter?",paraId:48,tocIndex:8},{value:"React.FC",paraId:48,tocIndex:8},{value:"\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u7684\u503C\u83B7\u53D6\u5668",paraId:48,tocIndex:8},{value:"config.view?",paraId:48,tocIndex:8},{value:"ISchema",paraId:48,tocIndex:8},{value:"\u8282\u70B9\u914D\u7F6E\u9879\u7684\u6458\u8981\u5C55\u793A\u7EC4\u4EF6",paraId:48,tocIndex:8},{value:"config.render?",paraId:48,tocIndex:8},{value:"React.FC",paraId:48,tocIndex:8},{value:"\u81EA\u5B9A\u4E49\u8282\u70B9\u6E32\u67D3\u7EC4\u4EF6",paraId:48,tocIndex:8},{value:"fieldset",paraId:49,tocIndex:8},{value:" \u4E2D\u7684\u914D\u7F6E\u9879\u7684\u8868\u5355\u540D\u79F0\u6682\u65F6\u9700\u4EE5 ",paraId:49,tocIndex:8},{value:"config.",paraId:49,tocIndex:8},{value:" \u5F00\u5934\uFF08\u672A\u6765\u53EF\u80FD\u4F1A\u7701\u7565\uFF09\u3002",paraId:49,tocIndex:8},{value:"getter",paraId:49,tocIndex:8},{value:" \u5982\u679C\u6CA1\u6709\u8BBE\u7F6E\uFF0C\u5219\u4EE3\u8868\u8BE5\u8282\u70B9\u7C7B\u578B\u4E0D\u63D0\u4F9B\u53D6\u503C\u529F\u80FD\uFF0C\u5728\u6D41\u7A0B\u7684\u8282\u70B9\u4E2D\u65E0\u6CD5\u9009\u8BE5\u7C7B\u578B\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u3002\u5982\u679C\u7ED3\u679C\u503C\u662F\u5355\u4E00\u7684\uFF08\u4E0D\u53EF\u9009\uFF09\uFF0C\u5219\u8FD4\u56DE\u4E00\u4E2A\u53EF\u4EE5\u8868\u8FBE\u5BF9\u5E94\u4FE1\u606F\u7684\u9759\u6001\u5185\u5BB9\u5373\u53EF\u3002\u5982\u679C\u9700\u8981\u53EF\u9009\uFF08\u5982\u4E00\u4E2A Object \u4E2D\u7684\u67D0\u4E2A\u5C5E\u6027\uFF09\uFF0C\u5219\u53EF\u4EE5\u81EA\u5B9A\u4E49\u5BF9\u5E94\u7684\u9009\u62E9\u7EC4\u4EF6\u8F93\u51FA\u3002",paraId:49,tocIndex:8},{value:"render",paraId:49,tocIndex:8},{value:" \u65B9\u6CD5\u5F53\u9ED8\u8BA4\u8282\u70B9\u6E32\u67D3\u4E0D\u6EE1\u8DB3\u65F6\u53EF\u4EE5\u5B8C\u5168\u8986\u76D6\u66FF\u4EE3\u4F7F\u7528\uFF0C\u8FDB\u884C\u81EA\u5B9A\u4E49\u8282\u70B9\u89C6\u56FE\u6E32\u67D3\u3002\u4F8B\u5982\u8981\u9488\u5BF9\u5206\u652F\u7C7B\u578B\u7684\u5F00\u59CB\u8282\u70B9\u63D0\u4F9B\u66F4\u591A\u64CD\u4F5C\u6309\u94AE\u6216\u5176\u4ED6\u4EA4\u4E92\uFF0C\u5219\u9700\u8981\u4F7F\u7528\u8BE5\u65B9\u6CD5\uFF0C\u5177\u4F53\u53EF\u4EE5\u53C2\u8003\u5E76\u884C\u5206\u652F\u7B49\u8282\u70B9\u7684\u524D\u7AEF\u5B9E\u73B0\uFF08",paraId:49,tocIndex:8},{value:"\u76F8\u5173\u6E90\u7801",paraId:49,tocIndex:8},{value:"\uFF09\u3002",paraId:49,tocIndex:8}],JU={},XU={title:"\u8FDB\u9636\u4F7F\u7528",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/advanced.md",lastUpdated:173254844e4,description:"\u4ECE \u5FEB\u901F\u5F00\u59CB \u4E2D\u6211\u4EEC\u5DF2\u7ECF\u4E86\u89E3\u4E86\u5DE5\u4F5C\u6D41\u6700\u57FA\u672C\u7684\u7528\u6CD5\uFF0C\u672C\u7BC7\u8FDB\u4E00\u6B65\u4ECB\u7ECD\u5176\u4E2D\u4E00\u4E9B\u66F4\u6DF1\u5165\u7684\u6982\u5FF5\u3002"},eP=[{id:"\u8FDB\u9636\u4F7F\u7528",depth:1,title:"\u8FDB\u9636\u4F7F\u7528"},{id:"\u4F7F\u7528\u53D8\u91CF",depth:2,title:"\u4F7F\u7528\u53D8\u91CF"},{id:"\u6267\u884C\u8BA1\u5212\u5386\u53F2\u8BB0\u5F55",depth:2,title:"\u6267\u884C\u8BA1\u5212\uFF08\u5386\u53F2\u8BB0\u5F55\uFF09"},{id:"\u8282\u70B9\u6267\u884C\u72B6\u6001",depth:2,title:"\u8282\u70B9\u6267\u884C\u72B6\u6001"},{id:"\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55",depth:2,title:"\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55"},{id:"\u5DE5\u4F5C\u6D41\u7684\u7248\u672C",depth:2,title:"\u5DE5\u4F5C\u6D41\u7684\u7248\u672C"}],aP=[{value:"\u4ECE ",paraId:0,tocIndex:0},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:1,tocIndex:0},{value:" \u4E2D\u6211\u4EEC\u5DF2\u7ECF\u4E86\u89E3\u4E86\u5DE5\u4F5C\u6D41\u6700\u57FA\u672C\u7684\u7528\u6CD5\uFF0C\u672C\u7BC7\u8FDB\u4E00\u6B65\u4ECB\u7ECD\u5176\u4E2D\u4E00\u4E9B\u66F4\u6DF1\u5165\u7684\u6982\u5FF5\u3002",paraId:0,tocIndex:0},{value:"\u6B63\u5982\u7A0B\u5E8F\u8BED\u8A00\u4E2D\u7684\u53D8\u91CF\uFF0C\u5728\u5DE5\u4F5C\u6D41\u4E2D",paraId:2,tocIndex:1},{value:"\u53D8\u91CF",paraId:2,tocIndex:1},{value:"\u662F\u7528\u4E8E\u4E32\u63A5\u548C\u7EC4\u7EC7\u6D41\u7A0B\u7684\u91CD\u8981\u5DE5\u5177\u3002",paraId:2,tocIndex:1},{value:"\u5728\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\u6267\u884C\u6BCF\u4E2A\u8282\u70B9\u65F6\uFF0C\u4E00\u4E9B\u914D\u7F6E\u9879\u53EF\u4EE5\u9009\u62E9\u4F7F\u7528\u53D8\u91CF\uFF0C\u53D8\u91CF\u7684\u6765\u6E90\u5373\u8BE5\u8282\u70B9\u7684\u524D\u5E8F\u6570\u636E\uFF0C\u5305\u62EC\u4EE5\u4E0B\u51E0\u7C7B\uFF1A",paraId:3,tocIndex:1},{value:"\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF1A\u8868\u5355\u89E6\u53D1\u3001\u6570\u636E\u8868\u89E6\u53D1\u7B49\u60C5\u51B5\u4E0B\uFF0C\u5355\u884C\u6570\u636E\u5BF9\u8C61\u53EF\u4EE5\u88AB\u6240\u6709\u8282\u70B9\u4F7F\u7528\u3002",paraId:4,tocIndex:1},{value:"\u4E0A\u6E38\u8282\u70B9\u6570\u636E\uFF1A\u6D41\u7A0B\u8FDB\u884C\u5230\u4EFB\u610F\u8282\u70B9\u65F6\uFF0C\u4E4B\u524D\u5DF2\u5B8C\u6210\u7684\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u3002",paraId:4,tocIndex:1},{value:"\u5C40\u57DF\u53D8\u91CF\uFF1A\u5F53\u8282\u70B9\u5904\u5728\u4E00\u4E9B\u7279\u6B8A\u5206\u652F\u7ED3\u6784\u5185\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5BF9\u5E94\u5206\u652F\u5185\u7279\u6709\u7684\u5C40\u57DF\u53D8\u91CF\uFF0C\u4F8B\u5982\u5FAA\u73AF\u7ED3\u6784\u4E2D\u53EF\u4EE5\u4F7F\u7528\u6BCF\u8F6E\u5FAA\u73AF\u7684\u6570\u636E\u5BF9\u8C61\u3002",paraId:4,tocIndex:1},{value:"\u7CFB\u7EDF\u53D8\u91CF\uFF1A\u4E00\u4E9B\u5185\u7F6E\u7684\u7CFB\u7EDF\u53C2\u6570\uFF0C\u5982\u5F53\u524D\u65F6\u95F4\u7B49\u3002",paraId:4,tocIndex:1},{value:"\u6211\u4EEC\u5728 ",paraId:5,tocIndex:1},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:6,tocIndex:1},{value:" \u4E2D\u5DF2\u7ECF\u591A\u6B21\u4F7F\u7528\u4E86\u53D8\u91CF\u7684\u529F\u80FD\uFF0C\u4F8B\u5982\u5728\u8FD0\u7B97\u8282\u70B9\u4E2D\uFF0C\u6211\u4EEC\u53EF\u4EE5\u4F7F\u7528\u53D8\u91CF\u6765\u5F15\u7528\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u6765\u8FDB\u884C\u8BA1\u7B97\uFF1A",paraId:5,tocIndex:1},{value:"\u5728\u66F4\u65B0\u8282\u70B9\u4E2D\uFF0C\u4F7F\u7528\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u4F5C\u4E3A\u7B5B\u9009\u6761\u4EF6\u7684\u53D8\u91CF\uFF0C\u5E76\u5F15\u7528\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\u4F5C\u4E3A\u66F4\u65B0\u6570\u636E\u7684\u5B57\u6BB5\u503C\u53D8\u91CF\uFF1A",paraId:7,tocIndex:1},{value:"\u53D8\u91CF\u7684\u5185\u90E8\u662F\u4E00\u4E2A JSON \u7ED3\u6784\uFF0C\u901A\u5E38\u53EF\u4EE5\u6309 JSON \u7684\u8DEF\u5F84\u4F7F\u7528\u6570\u636E\u7684\u7279\u5B9A\u90E8\u5206\u3002\u7531\u4E8E\u5F88\u591A\u53D8\u91CF\u57FA\u4E8E NocoBase \u7684\u6570\u636E\u8868\u7ED3\u6784\uFF0C\u5173\u7CFB\u6570\u636E\u5C06\u4F1A\u4F5C\u4E3A\u5BF9\u8C61\u7684\u5C5E\u6027\u6309\u5C42\u7EA7\u7EC4\u6210\u7C7B\u4F3C\u6811\u7684\u7ED3\u6784\uFF0C\u4F8B\u5982\u6211\u4EEC\u53EF\u4EE5\u9009\u62E9\u67E5\u8BE2\u5230\u6570\u636E\u7684\u5173\u7CFB\u6570\u636E\u7684\u67D0\u4E2A\u5B57\u6BB5\u7684\u503C\u3002\u53E6\u5916\u5F53\u5173\u7CFB\u6570\u636E\u662F\u5BF9\u591A\u7684\u7ED3\u6784\u65F6\uFF0C\u53D8\u91CF\u53EF\u80FD\u4F1A\u662F\u4E00\u4E2A\u6570\u7EC4\u3002",paraId:8,tocIndex:1},{value:"\u9009\u62E9\u53D8\u91CF\u5728\u5927\u591A\u6570\u65F6\u5019\u4F1A\u9700\u8981\u9009\u5230\u6700\u540E\u4E00\u5C42\u503C\u5C5E\u6027\uFF0C\u901A\u5E38\u662F\u7B80\u5355\u6570\u636E\u7C7B\u578B\uFF0C\u5982\u6570\u5B57\u3001\u5B57\u7B26\u4E32\u7B49\u3002\u4F46\u5F53\u53D8\u91CF\u5C42\u7EA7\u4E2D\u6709\u6570\u7EC4\u65F6\uFF0C\u672B\u7EA7\u7684\u5C5E\u6027\u4E5F\u4F1A\u88AB\u6620\u5C04\u6210\u4E00\u4E2A\u6570\u7EC4\uFF0C\u53EA\u6709\u5BF9\u5E94\u7684\u8282\u70B9\u652F\u6301\u6570\u7EC4\u7684\u60C5\u51B5\u4E0B\uFF0C\u624D\u80FD\u6B63\u786E\u5904\u7406\u6570\u7EC4\u6570\u636E\u3002\u4F8B\u5982\u5728\u8FD0\u7B97\u8282\u70B9\u4E2D\uFF0C\u4E00\u4E9B\u8BA1\u7B97\u5F15\u64CE\u6709\u4E13\u95E8\u5904\u7406\u6570\u7EC4\u7684\u51FD\u6570\uFF0C\u53C8\u6BD4\u5982\u5728\u5FAA\u73AF\u8282\u70B9\u4E2D\uFF0C\u5FAA\u73AF\u5BF9\u8C61\u4E5F\u53EF\u4EE5\u76F4\u63A5\u9009\u62E9\u4E00\u4E2A\u6570\u7EC4\u3002",paraId:9,tocIndex:1},{value:"\u4E3E\u4E2A\u4F8B\u5B50\uFF0C\u5F53\u4E00\u4E2A\u67E5\u8BE2\u8282\u70B9\u67E5\u8BE2\u4E86\u591A\u6761\u6570\u636E\u65F6\uFF0C\u8282\u70B9\u7ED3\u679C\u5C06\u4F1A\u662F\u4E00\u4E2A\u5305\u542B\u591A\u884C\u540C\u6784\u6570\u636E\u7684\u6570\u7EC4\uFF1A",paraId:10,tocIndex:1},{value:`[ { "id": 1, "title": "\u6807\u98981" @@ -11549,7 +11601,7 @@ class MyTrigger extends Trigger { } ] `,paraId:11,tocIndex:1},{value:"\u4F46\u662F\u5728\u540E\u7EED\u8282\u70B9\u4E2D\u5C06\u5176\u4F5C\u4E3A\u53D8\u91CF\u4F7F\u7528\u65F6\uFF0C\u5982\u679C\u9009\u62E9\u7684\u53D8\u91CF\u662F ",paraId:12,tocIndex:1},{value:"\u8282\u70B9\u6570\u636E/\u67E5\u8BE2\u8282\u70B9/\u6807\u9898",paraId:12,tocIndex:1},{value:" \u7684\u5F62\u5F0F\uFF0C\u5C06\u4F1A\u5F97\u5230\u4E00\u4E2A\u88AB\u6620\u5C04\u540E\u662F\u5BF9\u5E94\u5B57\u6BB5\u503C\u7684\u6570\u7EC4\uFF1A",paraId:12,tocIndex:1},{value:`["\u6807\u98981", "\u6807\u98982"] -`,paraId:13,tocIndex:1},{value:"\u5982\u679C\u662F\u591A\u7EF4\u6570\u7EC4\uFF08\u5982\u591A\u5BF9\u591A\u5173\u7CFB\u5B57\u6BB5\uFF09\uFF0C\u5C06\u4F1A\u5F97\u5230\u4E00\u4E2A\u5BF9\u5E94\u5B57\u6BB5\u88AB\u62CD\u5E73\u540E\u7684\u4E00\u7EF4\u6570\u7EC4\u3002",paraId:14,tocIndex:1},{value:"\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\uFF0C\u4F1A\u521B\u5EFA\u5BF9\u5E94\u7684\u6267\u884C\u8BA1\u5212\uFF0C\u4EE5\u8DDF\u8E2A\u6B64\u6B21\u4EFB\u52A1\u7684\u6267\u884C\u3002\u6BCF\u4E2A\u6267\u884C\u8BA1\u5212\u90FD\u6709\u4E00\u4E2A\u72B6\u6001\u503C\u7528\u4E8E\u8868\u793A\u5F53\u524D\u7684\u6267\u884C\u72B6\u6001\uFF0C\u8BE5\u72B6\u6001\u5728\u6267\u884C\u5386\u53F2\u7684\u5217\u8868\u548C\u8BE6\u60C5\u4E2D\u90FD\u53EF\u4EE5\u67E5\u770B\u5230\uFF1A",paraId:15,tocIndex:2},{value:"\u5F53\u4E3B\u6D41\u7A0B\u5206\u652F\u4E2D\u7684\u8282\u70B9\u5168\u90E8\u90FD\u4EE5\u201C\u5B8C\u6210\u201D\u72B6\u6001\u6267\u884C\u5230\u6D41\u7A0B\u7EC8\u70B9\u65F6\uFF0C\u6574\u4E2A\u6267\u884C\u8BA1\u5212\u5C06\u4EE5\u201C\u5B8C\u6210\u201D\u72B6\u6001\u7ED3\u675F\u3002\u5F53\u4E3B\u6D41\u7A0B\u5206\u652F\u4E2D\u7684\u8282\u70B9\u51FA\u73B0\u201C\u5931\u8D25\u201D\u3001\u201C\u51FA\u9519\u201D\u3001\u201C\u53D6\u6D88\u201D\u3001\u201C\u62D2\u7EDD\u201D\u7B49\u7EC8\u6001\u65F6\uFF0C\u6574\u4E2A\u6267\u884C\u8BA1\u5212\u5C06\u4EE5\u5BF9\u5E94\u7684\u72B6\u6001",paraId:16,tocIndex:2},{value:"\u63D0\u524D\u7EC8\u6B62",paraId:16,tocIndex:2},{value:"\u3002\u5F53\u4E3B\u6D41\u7A0B\u5206\u652F\u4E2D\u7684\u8282\u70B9\u51FA\u73B0\u201C\u7B49\u5F85\u201D\u72B6\u6001\u65F6\uFF0C\u6574\u4E2A\u6267\u884C\u8BA1\u5212\u5C06\u6682\u505C\u6267\u884C\uFF0C\u4F46\u4ECD\u663E\u793A\u201C\u6267\u884C\u4E2D\u201D\u7684\u72B6\u6001\uFF0C\u76F4\u5230\u7B49\u5F85\u7684\u8282\u70B9\u88AB\u6062\u590D\u540E\u7EE7\u7EED\u6267\u884C\u3002\u4E0D\u540C\u7684\u8282\u70B9\u7C7B\u578B\u5BF9\u7B49\u5F85\u72B6\u6001\u7684\u5904\u7406\u65B9\u5F0F\u4E0D\u540C\uFF0C\u6BD4\u5982\u4EBA\u5DE5\u8282\u70B9\u9700\u8981\u7B49\u5F85\u4EBA\u5DE5\u5904\u7406\uFF0C\u800C\u5EF6\u65F6\u8282\u70B9\u9700\u8981\u7B49\u5F85\u65F6\u95F4\u5230\u8FBE\u540E\u7EE7\u7EED\u6267\u884C\u3002",paraId:16,tocIndex:2},{value:"\u6267\u884C\u8BA1\u5212\u7684\u72B6\u6001\u5982\u4E0B\u8868\uFF1A",paraId:17,tocIndex:2},{value:"\u72B6\u6001",paraId:18,tocIndex:2},{value:"\u5BF9\u5E94\u4E3B\u6D41\u7A0B\u6700\u540E\u6267\u884C\u7684\u8282\u70B9\u72B6\u6001",paraId:18,tocIndex:2},{value:"\u542B\u4E49",paraId:18,tocIndex:2},{value:"\u961F\u5217\u4E2D",paraId:18,tocIndex:2},{value:"-",paraId:18,tocIndex:2},{value:"\u6D41\u7A0B\u5DF2\u89E6\u53D1\u5E76\u751F\u6210\u6267\u884C\u8BA1\u5212\uFF0C\u6392\u961F\u7B49\u5F85\u8C03\u5EA6\u5668\u5B89\u6392\u6267\u884C",paraId:18,tocIndex:2},{value:"\u8FDB\u884C\u4E2D",paraId:18,tocIndex:2},{value:"\u7B49\u5F85",paraId:18,tocIndex:2},{value:"\u8282\u70B9\u8981\u6C42\u6682\u505C\uFF0C\u7B49\u5F85\u8FDB\u4E00\u6B65\u8F93\u5165\u6216\u56DE\u8C03\u518D\u7EE7\u7EED",paraId:18,tocIndex:2},{value:"\u5B8C\u6210",paraId:18,tocIndex:2},{value:"\u5B8C\u6210",paraId:18,tocIndex:2},{value:"\u672A\u9047\u5230\u4EFB\u4F55\u95EE\u9898\uFF0C\u6240\u6709\u8282\u70B9\u6309\u9884\u671F\u9010\u4E2A\u6267\u884C\u5B8C\u6210\u3002",paraId:18,tocIndex:2},{value:"\u5931\u8D25",paraId:18,tocIndex:2},{value:"\u5931\u8D25",paraId:18,tocIndex:2},{value:"\u7531\u4E8E\u672A\u6EE1\u8DB3\u8282\u70B9\u914D\u7F6E\uFF0C\u5BFC\u81F4\u5931\u8D25\u3002",paraId:18,tocIndex:2},{value:"\u51FA\u9519",paraId:18,tocIndex:2},{value:"\u51FA\u9519",paraId:18,tocIndex:2},{value:"\u8282\u70B9\u9047\u5230\u672A\u6355\u83B7\u7684\u7A0B\u5E8F\u9519\u8BEF\uFF0C\u63D0\u524D\u7ED3\u675F\u3002",paraId:18,tocIndex:2},{value:"\u53D6\u6D88",paraId:18,tocIndex:2},{value:"\u53D6\u6D88",paraId:18,tocIndex:2},{value:"\u7B49\u5F85\u4E2D\u7684\u8282\u70B9\u88AB\u6D41\u7A0B\u7BA1\u7406\u8005\u4ECE\u5916\u90E8\u53D6\u6D88\u6267\u884C\uFF0C\u63D0\u524D\u7ED3\u675F",paraId:18,tocIndex:2},{value:"\u62D2\u7EDD",paraId:18,tocIndex:2},{value:"\u62D2\u7EDD",paraId:18,tocIndex:2},{value:"\u5728\u4EBA\u5DE5\u5904\u7406\u7684\u8282\u70B9\u4E2D\uFF0C\u88AB\u4EBA\u5DE5\u62D2\u7EDD\u4E0D\u518D\u7EE7\u7EED\u540E\u7EED\u6D41\u7A0B",paraId:18,tocIndex:2},{value:"\u5728 ",paraId:19,tocIndex:2},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:20,tocIndex:2},{value:" \u7684\u4F8B\u5B50\u4E2D\uFF0C\u6211\u4EEC\u5DF2\u7ECF\u77E5\u9053\u67E5\u770B\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5386\u53F2\u7684\u8BE6\u60C5\u53EF\u4EE5\u68C0\u67E5\u6267\u884C\u8FC7\u7A0B\u4E2D\u6240\u6709\u8282\u70B9\u7684\u6267\u884C\u662F\u5426\u6B63\u5E38\uFF0C\u4EE5\u53CA\u6BCF\u4E2A\u5DF2\u6267\u884C\u7684\u8282\u70B9\u7684\u6267\u884C\u72B6\u6001\u548C\u7ED3\u679C\u6570\u636E\uFF0C\u5728\u4E00\u4E9B\u9AD8\u7EA7\u7684\u6D41\u7A0B\u548C\u8282\u70B9\u4E2D\uFF0C\u8282\u70B9\u7684\u7ED3\u679C\u8FD8\u53EF\u80FD\u6709\u591A\u4E2A\uFF0C\u4F8B\u5982\u5FAA\u73AF\u8282\u70B9\u7684\u7ED3\u679C\uFF1A",paraId:19,tocIndex:2},{value:"\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u88AB\u5E76\u53D1\u7684\u89E6\u53D1\uFF0C\u4F46\u6267\u884C\u662F\u9010\u4E2A\u6392\u961F\u6267\u884C\u7684\uFF0C\u5373\u4F7F\u540C\u65F6\u89E6\u53D1\u591A\u4E2A\u5DE5\u4F5C\u6D41\uFF0C\u4E5F\u4F1A\u4F9D\u6B21\u6267\u884C\uFF0C\u4E0D\u4F1A\u5E76\u884C\u6267\u884C\u3002\u6240\u4EE5\u51FA\u73B0\u201C\u961F\u5217\u4E2D\u201D\u7684\u60C5\u51B5\u65F6\uFF0C\u4EE3\u8868\u6709\u5176\u4ED6\u5DE5\u4F5C\u6D41\u6B63\u5728\u6267\u884C\uFF0C\u9700\u8981\u7B49\u5F85\u3002",paraId:21},{value:"\u201C\u8FDB\u884C\u4E2D\u201D\u7684\u72B6\u6001\u53EA\u4EE3\u8868\u8BE5\u6267\u884C\u8BA1\u5212\u5DF2\u7ECF\u5F00\u59CB\uFF0C\u4E14\u901A\u5E38\u7531\u4E8E\u5185\u90E8\u8282\u70B9\u7684\u7B49\u5F85\u72B6\u6001\u800C\u6682\u505C\uFF0C\u5E76\u4E0D\u4EE3\u8868\u8BE5\u6267\u884C\u8BA1\u5212\u62A2\u5360\u4E86\u961F\u5934\u7684\u6267\u884C\u8D44\u6E90\u3002\u6240\u4EE5\u5B58\u5728\u201C\u8FDB\u884C\u4E2D\u201D\u7684\u6267\u884C\u8BA1\u5212\u65F6\uFF0C\u5176\u4ED6\u201C\u961F\u5217\u4E2D\u201D\u7684\u6267\u884C\u8BA1\u5212\u4ECD\u53EF\u88AB\u8C03\u5EA6\u5F00\u59CB\u6267\u884C\u3002",paraId:22},{value:"\u6267\u884C\u8BA1\u5212\u7684\u72B6\u6001\u662F\u7531\u5176\u4E2D\u6BCF\u4E2A\u8282\u70B9\u7684\u6267\u884C\u51B3\u5B9A\u7684\uFF0C\u5728\u4E00\u6B21\u89E6\u53D1\u540E\u7684\u6267\u884C\u8BA1\u5212\u4E2D\uFF0C\u6BCF\u4E2A\u8282\u70B9\u6267\u884C\u540E\u4F1A\u4EA7\u751F\u4E00\u4E2A\u6267\u884C\u72B6\u6001\uFF0C\u72B6\u6001\u5219\u4F1A\u51B3\u5B9A\u540E\u7EED\u6D41\u7A0B\u662F\u5426\u7EE7\u7EED\u6267\u884C\u3002\u901A\u5E38\u60C5\u51B5\u4E0B\uFF0C\u8282\u70B9\u6267\u884C\u6210\u529F\u540E\uFF0C\u4F1A\u7EE7\u7EED\u6267\u884C\u4E0B\u4E00\u4E2A\u8282\u70B9\uFF0C\u76F4\u5230\u6240\u6709\u8282\u70B9\u4F9D\u6B21\u6267\u884C\u5B8C\u6210\uFF0C\u6216\u8005\u88AB\u4E2D\u65AD\u3002\u5F53\u9047\u5230\u6D41\u7A0B\u63A7\u5236\u76F8\u5173\u8282\u70B9\u65F6\uFF0C\u5982\u5206\u652F\u3001\u5FAA\u73AF\u3001\u5E76\u884C\u3001\u5EF6\u65F6\u7B49\uFF0C\u4F1A\u6839\u636E\u8282\u70B9\u914D\u7F6E\u7684\u6761\u4EF6\uFF0C\u4EE5\u53CA\u8FD0\u884C\u65F6\u7684\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u51B3\u5B9A\u4E0B\u4E00\u4E2A\u8282\u70B9\u7684\u6267\u884C\u6D41\u5411\u3002",paraId:23,tocIndex:3},{value:"\u6BCF\u4E2A\u8282\u70B9\u6267\u884C\u540E\u53EF\u80FD\u4EA7\u751F\u7684\u72B6\u6001\u5982\u4E0B\u8868\uFF1A",paraId:24,tocIndex:3},{value:"\u72B6\u6001",paraId:25,tocIndex:3},{value:"\u662F\u5426\u662F\u7EC8\u6001",paraId:25,tocIndex:3},{value:"\u662F\u5426\u63D0\u524D\u7EC8\u6B62",paraId:25,tocIndex:3},{value:"\u542B\u4E49",paraId:25,tocIndex:3},{value:"\u7B49\u5F85",paraId:25,tocIndex:3},{value:"\u5426",paraId:25,tocIndex:3},{value:"\u5426",paraId:25,tocIndex:3},{value:"\u8282\u70B9\u8981\u6C42\u6682\u505C\uFF0C\u7B49\u5F85\u8FDB\u4E00\u6B65\u8F93\u5165\u6216\u56DE\u8C03\u518D\u7EE7\u7EED",paraId:25,tocIndex:3},{value:"\u5B8C\u6210",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u5426",paraId:25,tocIndex:3},{value:"\u672A\u9047\u5230\u4EFB\u4F55\u95EE\u9898\uFF0C\u6267\u884C\u6210\u529F\uFF0C\u7EE7\u7EED\u6267\u884C\u4E0B\u4E00\u4E2A\u8282\u70B9\u76F4\u81F3\u7ED3\u675F\u3002",paraId:25,tocIndex:3},{value:"\u5931\u8D25",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u7531\u4E8E\u672A\u6EE1\u8DB3\u8282\u70B9\u914D\u7F6E\uFF0C\u5BFC\u81F4\u5931\u8D25\u3002",paraId:25,tocIndex:3},{value:"\u51FA\u9519",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u8282\u70B9\u9047\u5230\u672A\u6355\u83B7\u7684\u7A0B\u5E8F\u9519\u8BEF\uFF0C\u63D0\u524D\u7ED3\u675F\u3002",paraId:25,tocIndex:3},{value:"\u53D6\u6D88",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u7B49\u5F85\u4E2D\u7684\u8282\u70B9\u88AB\u6D41\u7A0B\u7BA1\u7406\u8005\u4ECE\u5916\u90E8\u53D6\u6D88\u6267\u884C\uFF0C\u63D0\u524D\u7ED3\u675F",paraId:25,tocIndex:3},{value:"\u62D2\u7EDD",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u5728\u4EBA\u5DE5\u5904\u7406\u7684\u8282\u70B9\u4E2D\uFF0C\u88AB\u4EBA\u5DE5\u62D2\u7EDD\u4E0D\u518D\u7EE7\u7EED\u540E\u7EED\u6D41\u7A0B",paraId:25,tocIndex:3},{value:"\u9664\u7B49\u5F85\u72B6\u6001\u5916\uFF0C\u5176\u4ED6\u72B6\u6001\u90FD\u662F\u8282\u70B9\u6267\u884C\u7684\u7EC8\u6001\uFF0C\u53EA\u6709\u7EC8\u6001\u662F\u201C\u5B8C\u6210\u201D\u7684\u72B6\u6001\uFF0C\u624D\u4F1A\u7EE7\u7EED\u6267\u884C\uFF0C\u5426\u5219\u90FD\u4F1A\u63D0\u524D\u7EC8\u6B62\u6574\u4E2A\u6D41\u7A0B\u7684\u6267\u884C\u3002\u5F53\u8282\u70B9\u5904\u5728\u5206\u652F\u6D41\u7A0B\u4E2D\u65F6\uFF08\u5E76\u884C\u5206\u652F\u3001\u6761\u4EF6\u5224\u65AD\u3001\u5FAA\u73AF\u7B49\uFF09\uFF0C\u8282\u70B9\u6267\u884C\u4EA7\u751F\u7684\u7EC8\u6001\u4F1A\u7531\u5F00\u542F\u5206\u652F\u7684\u8282\u70B9\u63A5\u7BA1\u5904\u7406\uFF0C\u5E76\u4EE5\u6B64\u7C7B\u63A8\u51B3\u5B9A\u6574\u4E2A\u6D41\u7A0B\u7684\u6D41\u8F6C\u3002",paraId:26,tocIndex:3},{value:"\u4F8B\u5982\u5F53\u6211\u4EEC\u4F7F\u7528\u4E86\u201C\u2018\u662F\u2019\u5219\u7EE7\u7EED\u201D\u6A21\u5F0F\u7684\u6761\u4EF6\u8282\u70B9\u65F6\uFF0C\u5F53\u6267\u884C\u65F6\u5982\u679C\u7ED3\u679C\u4E3A\u201C\u5426\u201D\uFF0C\u5219\u4F1A\u63D0\u524D\u7EC8\u6B62\u6574\u4E2A\u6D41\u7A0B\u7684\u6267\u884C\uFF0C\u5E76\u5DF2\u5931\u8D25\u72B6\u6001\u9000\u51FA\uFF0C\u4E0D\u518D\u6267\u884C\u540E\u7EED\u8282\u70B9\uFF0C\u5982\u4E0B\u56FE\u6240\u793A\uFF1A",paraId:27,tocIndex:3},{value:"\u6240\u6709\u975E\u201C\u5B8C\u6210\u201D\u7684\u7EC8\u6B62\u72B6\u6001\u90FD\u53EF\u4EE5\u88AB\u89C6\u4E3A\u5931\u8D25\uFF0C\u4F46\u5931\u8D25\u7684\u539F\u56E0\u4E0D\u540C\uFF0C\u53EF\u4EE5\u901A\u8FC7\u67E5\u770B\u8282\u70B9\u7684\u6267\u884C\u7ED3\u679C\u6765\u8FDB\u4E00\u6B65\u4E86\u89E3\u5931\u8D25\u7684\u539F\u56E0\u3002",paraId:28},{value:"\u5F53\u5DE5\u4F5C\u6D41\u7684\u89E6\u53D1\u8F83\u4E3A\u9891\u7E41\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u914D\u7F6E\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55\u6765\u51CF\u5C11\u5E72\u6270\uFF0C\u540C\u65F6\u4E5F\u5C06\u964D\u4F4E\u6570\u636E\u5E93\u7684\u5B58\u50A8\u538B\u529B\u3002",paraId:29,tocIndex:4},{value:"\u540C\u6837\u5728\u5DE5\u4F5C\u6D41\u7684\u65B0\u5EFA\u548C\u7F16\u8F91\u5F39\u7A97\u4E2D\u53EF\u4EE5\u914D\u7F6E\u5BF9\u5E94\u6D41\u7A0B\u662F\u5426\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55\uFF1A",paraId:30,tocIndex:4},{value:"\u81EA\u52A8\u5220\u9664\u53EF\u4EE5\u6839\u636E\u6267\u884C\u7ED3\u679C\u7684\u72B6\u6001\u6765\u8FDB\u884C\u914D\u7F6E\uFF0C\u5927\u90E8\u5206\u60C5\u51B5\u4E0B\uFF0C\u5EFA\u8BAE\u4EC5\u52FE\u9009\u201C\u5B8C\u6210\u201D\u72B6\u6001\uFF0C\u8FD9\u6837\u53EF\u4EE5\u4FDD\u7559\u6267\u884C\u5931\u8D25\u7684\u8BB0\u5F55\uFF0C\u4EE5\u4FBF\u540E\u7EED\u6392\u67E5\u95EE\u9898\u3002",paraId:31,tocIndex:4},{value:"\u5EFA\u8BAE\u5728\u8C03\u8BD5\u5DE5\u4F5C\u6D41\u65F6\u4E0D\u8981\u5F00\u542F\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55\uFF0C\u4EE5\u4FBF\u901A\u8FC7\u5386\u53F2\u8BB0\u5F55\u6765\u68C0\u67E5\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u903B\u8F91\u662F\u5426\u7B26\u5408\u9884\u671F\u3002",paraId:32,tocIndex:4},{value:"\u5220\u9664\u5DE5\u4F5C\u6D41\u7684\u5386\u53F2\u5E76\u4E0D\u4F1A\u51CF\u5C11\u5DE5\u4F5C\u6D41\u5DF2\u6267\u884C\u8FC7\u7684\u8BA1\u6570\u3002",paraId:33},{value:"\u5728\u5DF2\u914D\u7F6E\u7684\u5DE5\u4F5C\u6D41\u89E6\u53D1\u81F3\u5C11\u4E00\u6B21\u4EE5\u540E\uFF0C\u5982\u5E0C\u671B\u4FEE\u6539\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u6216\u5176\u4E2D\u7684\u8282\u70B9\uFF0C\u9700\u8981\u901A\u8FC7\u521B\u5EFA\u65B0\u7248\u672C\u540E\u518D\u4FEE\u6539\uFF0C\u8FD9\u6837\u540C\u65F6\u4E5F\u4FDD\u8BC1\u4E86\u5F53\u56DE\u987E\u5DF2\u89E6\u53D1\u8FC7\u7684\u5DE5\u4F5C\u6D41\u5386\u53F2\u6267\u884C\u8BB0\u5F55\u65F6\u4E0D\u53D7\u672A\u6765\u4FEE\u6539\u7684\u5F71\u54CD\u3002",paraId:34,tocIndex:5},{value:"\u5728\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u9875\u9762\uFF0C\u53EF\u4EE5\u5728\u53F3\u4E0A\u89D2\u7684\u7248\u672C\u83DC\u5355\u67E5\u770B\u5DF2\u6709\u7684\u5DE5\u4F5C\u6D41\u7248\u672C\uFF1A",paraId:35,tocIndex:5},{value:"\u5728\u5176\u53F3\u4FA7\u7684\u66F4\u591A\u64CD\u4F5C\uFF08\u201C\u2026\u201D\uFF09\u83DC\u5355\u4E2D\uFF0C\u53EF\u4EE5\u9009\u62E9\u57FA\u4E8E\u5F53\u524D\u67E5\u770B\u7684\u7248\u672C\u590D\u5236\u5230\u65B0\u7248\u672C\uFF1A",paraId:36,tocIndex:5},{value:"\u590D\u5236\u5230\u65B0\u7248\u672C\u4E4B\u540E\uFF0C\u70B9\u51FB\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\uFF0C\u5C06\u5BF9\u5E94\u7248\u672C\u5207\u6362\u5230\u542F\u7528\u72B6\u6001\u540E\uFF0C\u65B0\u7684\u5DE5\u4F5C\u6D41\u7248\u672C\u5C06\u4F1A\u751F\u6548\u3002",paraId:37,tocIndex:5},{value:"\u5982\u9700\u91CD\u65B0\u9009\u62E9\u65E7\u7248\u672C\uFF0C\u4ECE\u7248\u672C\u83DC\u5355\u4E2D\u5207\u6362\u540E\uFF0C\u518D\u6B21\u70B9\u51FB\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\u5207\u6362\u81F3\u542F\u7528\u72B6\u6001\u540E\uFF0C\u5F53\u524D\u67E5\u770B\u7684\u7248\u672C\u5C06\u751F\u6548\uFF0C\u540E\u7EED\u89E6\u53D1\u5C06\u6267\u884C\u5BF9\u5E94\u7248\u672C\u7684\u6D41\u7A0B\u3002",paraId:38,tocIndex:5},{value:"\u5F53\u9700\u8981\u505C\u7528\u5DE5\u4F5C\u6D41\u65F6\uFF0C\u70B9\u51FB\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\u5207\u6362\u81F3\u505C\u7528\u72B6\u6001\u540E\uFF0C\u8BE5\u5DE5\u4F5C\u6D41\u5C06\u4E0D\u518D\u4F1A\u88AB\u89E6\u53D1\u3002",paraId:39,tocIndex:5},{value:"\u4E0E\u5DE5\u4F5C\u6D41\u7BA1\u7406\u5217\u8868\u4E2D\u7684\u201C\u590D\u5236\u201D\u5DE5\u4F5C\u6D41\u4E0D\u540C\uFF0C\u201C\u590D\u5236\u5230\u65B0\u7248\u672C\u201D\u7684\u5DE5\u4F5C\u6D41\u4ECD\u4F1A\u5F52\u96C6\u5728\u540C\u4E00\u7EC4\u5DE5\u4F5C\u6D41\u4E2D\uFF0C\u53EA\u662F\u53EF\u4EE5\u901A\u8FC7\u7248\u672C\u533A\u5206\u3002\u4F46\u590D\u5236\u5DE5\u4F5C\u6D41\u5219\u4F1A\u88AB\u89C6\u4E3A\u4E00\u4E2A\u5168\u65B0\u7684\u5DE5\u4F5C\u6D41\uFF0C\u4E0E\u4E4B\u524D\u5DE5\u4F5C\u6D41\u7684\u7248\u672C\u65E0\u5173\uFF0C\u4E14\u6267\u884C\u6B21\u6570\u4E5F\u4F1A\u5F52\u96F6\u3002",paraId:40}],tP={},nP={title:"Workflow Aggregate",toc:"menu",filename:"docs/en-US/plugins/workflow-aggregate/index.md",lastUpdated:1732240239e3},oP=[],rP=[],dP={},iP={title:"IField",toc:"menu",filename:"docs/en-US/api/data-source-manager/i-field.md",lastUpdated:1732240239e3,description:"IField \u5B9A\u4E49\u4E86\u5B57\u6BB5\u9700\u8981\u5B9E\u73B0\u7684\u63A5\u53E3\u3002"},lP=[{id:"ifield",depth:1,title:"IField"},{id:"\u5C5E\u6027",depth:2,title:"\u5C5E\u6027"},{id:"options",depth:3,title:"options"}],cP=[{value:"IField",paraId:0,tocIndex:0},{value:" \u5B9A\u4E49\u4E86\u5B57\u6BB5\u9700\u8981\u5B9E\u73B0\u7684\u63A5\u53E3\u3002",paraId:0,tocIndex:0},{value:`export type FieldOptions = { +`,paraId:13,tocIndex:1},{value:"\u5982\u679C\u662F\u591A\u7EF4\u6570\u7EC4\uFF08\u5982\u591A\u5BF9\u591A\u5173\u7CFB\u5B57\u6BB5\uFF09\uFF0C\u5C06\u4F1A\u5F97\u5230\u4E00\u4E2A\u5BF9\u5E94\u5B57\u6BB5\u88AB\u62CD\u5E73\u540E\u7684\u4E00\u7EF4\u6570\u7EC4\u3002",paraId:14,tocIndex:1},{value:"\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\uFF0C\u4F1A\u521B\u5EFA\u5BF9\u5E94\u7684\u6267\u884C\u8BA1\u5212\uFF0C\u4EE5\u8DDF\u8E2A\u6B64\u6B21\u4EFB\u52A1\u7684\u6267\u884C\u3002\u6BCF\u4E2A\u6267\u884C\u8BA1\u5212\u90FD\u6709\u4E00\u4E2A\u72B6\u6001\u503C\u7528\u4E8E\u8868\u793A\u5F53\u524D\u7684\u6267\u884C\u72B6\u6001\uFF0C\u8BE5\u72B6\u6001\u5728\u6267\u884C\u5386\u53F2\u7684\u5217\u8868\u548C\u8BE6\u60C5\u4E2D\u90FD\u53EF\u4EE5\u67E5\u770B\u5230\uFF1A",paraId:15,tocIndex:2},{value:"\u5F53\u4E3B\u6D41\u7A0B\u5206\u652F\u4E2D\u7684\u8282\u70B9\u5168\u90E8\u90FD\u4EE5\u201C\u5B8C\u6210\u201D\u72B6\u6001\u6267\u884C\u5230\u6D41\u7A0B\u7EC8\u70B9\u65F6\uFF0C\u6574\u4E2A\u6267\u884C\u8BA1\u5212\u5C06\u4EE5\u201C\u5B8C\u6210\u201D\u72B6\u6001\u7ED3\u675F\u3002\u5F53\u4E3B\u6D41\u7A0B\u5206\u652F\u4E2D\u7684\u8282\u70B9\u51FA\u73B0\u201C\u5931\u8D25\u201D\u3001\u201C\u51FA\u9519\u201D\u3001\u201C\u53D6\u6D88\u201D\u3001\u201C\u62D2\u7EDD\u201D\u7B49\u7EC8\u6001\u65F6\uFF0C\u6574\u4E2A\u6267\u884C\u8BA1\u5212\u5C06\u4EE5\u5BF9\u5E94\u7684\u72B6\u6001",paraId:16,tocIndex:2},{value:"\u63D0\u524D\u7EC8\u6B62",paraId:16,tocIndex:2},{value:"\u3002\u5F53\u4E3B\u6D41\u7A0B\u5206\u652F\u4E2D\u7684\u8282\u70B9\u51FA\u73B0\u201C\u7B49\u5F85\u201D\u72B6\u6001\u65F6\uFF0C\u6574\u4E2A\u6267\u884C\u8BA1\u5212\u5C06\u6682\u505C\u6267\u884C\uFF0C\u4F46\u4ECD\u663E\u793A\u201C\u6267\u884C\u4E2D\u201D\u7684\u72B6\u6001\uFF0C\u76F4\u5230\u7B49\u5F85\u7684\u8282\u70B9\u88AB\u6062\u590D\u540E\u7EE7\u7EED\u6267\u884C\u3002\u4E0D\u540C\u7684\u8282\u70B9\u7C7B\u578B\u5BF9\u7B49\u5F85\u72B6\u6001\u7684\u5904\u7406\u65B9\u5F0F\u4E0D\u540C\uFF0C\u6BD4\u5982\u4EBA\u5DE5\u8282\u70B9\u9700\u8981\u7B49\u5F85\u4EBA\u5DE5\u5904\u7406\uFF0C\u800C\u5EF6\u65F6\u8282\u70B9\u9700\u8981\u7B49\u5F85\u65F6\u95F4\u5230\u8FBE\u540E\u7EE7\u7EED\u6267\u884C\u3002",paraId:16,tocIndex:2},{value:"\u6267\u884C\u8BA1\u5212\u7684\u72B6\u6001\u5982\u4E0B\u8868\uFF1A",paraId:17,tocIndex:2},{value:"\u72B6\u6001",paraId:18,tocIndex:2},{value:"\u5BF9\u5E94\u4E3B\u6D41\u7A0B\u6700\u540E\u6267\u884C\u7684\u8282\u70B9\u72B6\u6001",paraId:18,tocIndex:2},{value:"\u542B\u4E49",paraId:18,tocIndex:2},{value:"\u961F\u5217\u4E2D",paraId:18,tocIndex:2},{value:"-",paraId:18,tocIndex:2},{value:"\u6D41\u7A0B\u5DF2\u89E6\u53D1\u5E76\u751F\u6210\u6267\u884C\u8BA1\u5212\uFF0C\u6392\u961F\u7B49\u5F85\u8C03\u5EA6\u5668\u5B89\u6392\u6267\u884C",paraId:18,tocIndex:2},{value:"\u8FDB\u884C\u4E2D",paraId:18,tocIndex:2},{value:"\u7B49\u5F85",paraId:18,tocIndex:2},{value:"\u8282\u70B9\u8981\u6C42\u6682\u505C\uFF0C\u7B49\u5F85\u8FDB\u4E00\u6B65\u8F93\u5165\u6216\u56DE\u8C03\u518D\u7EE7\u7EED",paraId:18,tocIndex:2},{value:"\u5B8C\u6210",paraId:18,tocIndex:2},{value:"\u5B8C\u6210",paraId:18,tocIndex:2},{value:"\u672A\u9047\u5230\u4EFB\u4F55\u95EE\u9898\uFF0C\u6240\u6709\u8282\u70B9\u6309\u9884\u671F\u9010\u4E2A\u6267\u884C\u5B8C\u6210\u3002",paraId:18,tocIndex:2},{value:"\u5931\u8D25",paraId:18,tocIndex:2},{value:"\u5931\u8D25",paraId:18,tocIndex:2},{value:"\u7531\u4E8E\u672A\u6EE1\u8DB3\u8282\u70B9\u914D\u7F6E\uFF0C\u5BFC\u81F4\u5931\u8D25\u3002",paraId:18,tocIndex:2},{value:"\u51FA\u9519",paraId:18,tocIndex:2},{value:"\u51FA\u9519",paraId:18,tocIndex:2},{value:"\u8282\u70B9\u9047\u5230\u672A\u6355\u83B7\u7684\u7A0B\u5E8F\u9519\u8BEF\uFF0C\u63D0\u524D\u7ED3\u675F\u3002",paraId:18,tocIndex:2},{value:"\u53D6\u6D88",paraId:18,tocIndex:2},{value:"\u53D6\u6D88",paraId:18,tocIndex:2},{value:"\u7B49\u5F85\u4E2D\u7684\u8282\u70B9\u88AB\u6D41\u7A0B\u7BA1\u7406\u8005\u4ECE\u5916\u90E8\u53D6\u6D88\u6267\u884C\uFF0C\u63D0\u524D\u7ED3\u675F",paraId:18,tocIndex:2},{value:"\u62D2\u7EDD",paraId:18,tocIndex:2},{value:"\u62D2\u7EDD",paraId:18,tocIndex:2},{value:"\u5728\u4EBA\u5DE5\u5904\u7406\u7684\u8282\u70B9\u4E2D\uFF0C\u88AB\u4EBA\u5DE5\u62D2\u7EDD\u4E0D\u518D\u7EE7\u7EED\u540E\u7EED\u6D41\u7A0B",paraId:18,tocIndex:2},{value:"\u5728 ",paraId:19,tocIndex:2},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:20,tocIndex:2},{value:" \u7684\u4F8B\u5B50\u4E2D\uFF0C\u6211\u4EEC\u5DF2\u7ECF\u77E5\u9053\u67E5\u770B\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5386\u53F2\u7684\u8BE6\u60C5\u53EF\u4EE5\u68C0\u67E5\u6267\u884C\u8FC7\u7A0B\u4E2D\u6240\u6709\u8282\u70B9\u7684\u6267\u884C\u662F\u5426\u6B63\u5E38\uFF0C\u4EE5\u53CA\u6BCF\u4E2A\u5DF2\u6267\u884C\u7684\u8282\u70B9\u7684\u6267\u884C\u72B6\u6001\u548C\u7ED3\u679C\u6570\u636E\uFF0C\u5728\u4E00\u4E9B\u9AD8\u7EA7\u7684\u6D41\u7A0B\u548C\u8282\u70B9\u4E2D\uFF0C\u8282\u70B9\u7684\u7ED3\u679C\u8FD8\u53EF\u80FD\u6709\u591A\u4E2A\uFF0C\u4F8B\u5982\u5FAA\u73AF\u8282\u70B9\u7684\u7ED3\u679C\uFF1A",paraId:19,tocIndex:2},{value:"\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u88AB\u5E76\u53D1\u7684\u89E6\u53D1\uFF0C\u4F46\u6267\u884C\u662F\u9010\u4E2A\u6392\u961F\u6267\u884C\u7684\uFF0C\u5373\u4F7F\u540C\u65F6\u89E6\u53D1\u591A\u4E2A\u5DE5\u4F5C\u6D41\uFF0C\u4E5F\u4F1A\u4F9D\u6B21\u6267\u884C\uFF0C\u4E0D\u4F1A\u5E76\u884C\u6267\u884C\u3002\u6240\u4EE5\u51FA\u73B0\u201C\u961F\u5217\u4E2D\u201D\u7684\u60C5\u51B5\u65F6\uFF0C\u4EE3\u8868\u6709\u5176\u4ED6\u5DE5\u4F5C\u6D41\u6B63\u5728\u6267\u884C\uFF0C\u9700\u8981\u7B49\u5F85\u3002",paraId:21},{value:"\u201C\u8FDB\u884C\u4E2D\u201D\u7684\u72B6\u6001\u53EA\u4EE3\u8868\u8BE5\u6267\u884C\u8BA1\u5212\u5DF2\u7ECF\u5F00\u59CB\uFF0C\u4E14\u901A\u5E38\u7531\u4E8E\u5185\u90E8\u8282\u70B9\u7684\u7B49\u5F85\u72B6\u6001\u800C\u6682\u505C\uFF0C\u5E76\u4E0D\u4EE3\u8868\u8BE5\u6267\u884C\u8BA1\u5212\u62A2\u5360\u4E86\u961F\u5934\u7684\u6267\u884C\u8D44\u6E90\u3002\u6240\u4EE5\u5B58\u5728\u201C\u8FDB\u884C\u4E2D\u201D\u7684\u6267\u884C\u8BA1\u5212\u65F6\uFF0C\u5176\u4ED6\u201C\u961F\u5217\u4E2D\u201D\u7684\u6267\u884C\u8BA1\u5212\u4ECD\u53EF\u88AB\u8C03\u5EA6\u5F00\u59CB\u6267\u884C\u3002",paraId:22},{value:"\u6267\u884C\u8BA1\u5212\u7684\u72B6\u6001\u662F\u7531\u5176\u4E2D\u6BCF\u4E2A\u8282\u70B9\u7684\u6267\u884C\u51B3\u5B9A\u7684\uFF0C\u5728\u4E00\u6B21\u89E6\u53D1\u540E\u7684\u6267\u884C\u8BA1\u5212\u4E2D\uFF0C\u6BCF\u4E2A\u8282\u70B9\u6267\u884C\u540E\u4F1A\u4EA7\u751F\u4E00\u4E2A\u6267\u884C\u72B6\u6001\uFF0C\u72B6\u6001\u5219\u4F1A\u51B3\u5B9A\u540E\u7EED\u6D41\u7A0B\u662F\u5426\u7EE7\u7EED\u6267\u884C\u3002\u901A\u5E38\u60C5\u51B5\u4E0B\uFF0C\u8282\u70B9\u6267\u884C\u6210\u529F\u540E\uFF0C\u4F1A\u7EE7\u7EED\u6267\u884C\u4E0B\u4E00\u4E2A\u8282\u70B9\uFF0C\u76F4\u5230\u6240\u6709\u8282\u70B9\u4F9D\u6B21\u6267\u884C\u5B8C\u6210\uFF0C\u6216\u8005\u88AB\u4E2D\u65AD\u3002\u5F53\u9047\u5230\u6D41\u7A0B\u63A7\u5236\u76F8\u5173\u8282\u70B9\u65F6\uFF0C\u5982\u5206\u652F\u3001\u5FAA\u73AF\u3001\u5E76\u884C\u3001\u5EF6\u65F6\u7B49\uFF0C\u4F1A\u6839\u636E\u8282\u70B9\u914D\u7F6E\u7684\u6761\u4EF6\uFF0C\u4EE5\u53CA\u8FD0\u884C\u65F6\u7684\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u51B3\u5B9A\u4E0B\u4E00\u4E2A\u8282\u70B9\u7684\u6267\u884C\u6D41\u5411\u3002",paraId:23,tocIndex:3},{value:"\u6BCF\u4E2A\u8282\u70B9\u6267\u884C\u540E\u53EF\u80FD\u4EA7\u751F\u7684\u72B6\u6001\u5982\u4E0B\u8868\uFF1A",paraId:24,tocIndex:3},{value:"\u72B6\u6001",paraId:25,tocIndex:3},{value:"\u662F\u5426\u662F\u7EC8\u6001",paraId:25,tocIndex:3},{value:"\u662F\u5426\u63D0\u524D\u7EC8\u6B62",paraId:25,tocIndex:3},{value:"\u542B\u4E49",paraId:25,tocIndex:3},{value:"\u7B49\u5F85",paraId:25,tocIndex:3},{value:"\u5426",paraId:25,tocIndex:3},{value:"\u5426",paraId:25,tocIndex:3},{value:"\u8282\u70B9\u8981\u6C42\u6682\u505C\uFF0C\u7B49\u5F85\u8FDB\u4E00\u6B65\u8F93\u5165\u6216\u56DE\u8C03\u518D\u7EE7\u7EED",paraId:25,tocIndex:3},{value:"\u5B8C\u6210",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u5426",paraId:25,tocIndex:3},{value:"\u672A\u9047\u5230\u4EFB\u4F55\u95EE\u9898\uFF0C\u6267\u884C\u6210\u529F\uFF0C\u7EE7\u7EED\u6267\u884C\u4E0B\u4E00\u4E2A\u8282\u70B9\u76F4\u81F3\u7ED3\u675F\u3002",paraId:25,tocIndex:3},{value:"\u5931\u8D25",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u7531\u4E8E\u672A\u6EE1\u8DB3\u8282\u70B9\u914D\u7F6E\uFF0C\u5BFC\u81F4\u5931\u8D25\u3002",paraId:25,tocIndex:3},{value:"\u51FA\u9519",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u8282\u70B9\u9047\u5230\u672A\u6355\u83B7\u7684\u7A0B\u5E8F\u9519\u8BEF\uFF0C\u63D0\u524D\u7ED3\u675F\u3002",paraId:25,tocIndex:3},{value:"\u53D6\u6D88",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u7B49\u5F85\u4E2D\u7684\u8282\u70B9\u88AB\u6D41\u7A0B\u7BA1\u7406\u8005\u4ECE\u5916\u90E8\u53D6\u6D88\u6267\u884C\uFF0C\u63D0\u524D\u7ED3\u675F",paraId:25,tocIndex:3},{value:"\u62D2\u7EDD",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u5728\u4EBA\u5DE5\u5904\u7406\u7684\u8282\u70B9\u4E2D\uFF0C\u88AB\u4EBA\u5DE5\u62D2\u7EDD\u4E0D\u518D\u7EE7\u7EED\u540E\u7EED\u6D41\u7A0B",paraId:25,tocIndex:3},{value:"\u9664\u7B49\u5F85\u72B6\u6001\u5916\uFF0C\u5176\u4ED6\u72B6\u6001\u90FD\u662F\u8282\u70B9\u6267\u884C\u7684\u7EC8\u6001\uFF0C\u53EA\u6709\u7EC8\u6001\u662F\u201C\u5B8C\u6210\u201D\u7684\u72B6\u6001\uFF0C\u624D\u4F1A\u7EE7\u7EED\u6267\u884C\uFF0C\u5426\u5219\u90FD\u4F1A\u63D0\u524D\u7EC8\u6B62\u6574\u4E2A\u6D41\u7A0B\u7684\u6267\u884C\u3002\u5F53\u8282\u70B9\u5904\u5728\u5206\u652F\u6D41\u7A0B\u4E2D\u65F6\uFF08\u5E76\u884C\u5206\u652F\u3001\u6761\u4EF6\u5224\u65AD\u3001\u5FAA\u73AF\u7B49\uFF09\uFF0C\u8282\u70B9\u6267\u884C\u4EA7\u751F\u7684\u7EC8\u6001\u4F1A\u7531\u5F00\u542F\u5206\u652F\u7684\u8282\u70B9\u63A5\u7BA1\u5904\u7406\uFF0C\u5E76\u4EE5\u6B64\u7C7B\u63A8\u51B3\u5B9A\u6574\u4E2A\u6D41\u7A0B\u7684\u6D41\u8F6C\u3002",paraId:26,tocIndex:3},{value:"\u4F8B\u5982\u5F53\u6211\u4EEC\u4F7F\u7528\u4E86\u201C\u2018\u662F\u2019\u5219\u7EE7\u7EED\u201D\u6A21\u5F0F\u7684\u6761\u4EF6\u8282\u70B9\u65F6\uFF0C\u5F53\u6267\u884C\u65F6\u5982\u679C\u7ED3\u679C\u4E3A\u201C\u5426\u201D\uFF0C\u5219\u4F1A\u63D0\u524D\u7EC8\u6B62\u6574\u4E2A\u6D41\u7A0B\u7684\u6267\u884C\uFF0C\u5E76\u5DF2\u5931\u8D25\u72B6\u6001\u9000\u51FA\uFF0C\u4E0D\u518D\u6267\u884C\u540E\u7EED\u8282\u70B9\uFF0C\u5982\u4E0B\u56FE\u6240\u793A\uFF1A",paraId:27,tocIndex:3},{value:"\u6240\u6709\u975E\u201C\u5B8C\u6210\u201D\u7684\u7EC8\u6B62\u72B6\u6001\u90FD\u53EF\u4EE5\u88AB\u89C6\u4E3A\u5931\u8D25\uFF0C\u4F46\u5931\u8D25\u7684\u539F\u56E0\u4E0D\u540C\uFF0C\u53EF\u4EE5\u901A\u8FC7\u67E5\u770B\u8282\u70B9\u7684\u6267\u884C\u7ED3\u679C\u6765\u8FDB\u4E00\u6B65\u4E86\u89E3\u5931\u8D25\u7684\u539F\u56E0\u3002",paraId:28},{value:"\u5F53\u5DE5\u4F5C\u6D41\u7684\u89E6\u53D1\u8F83\u4E3A\u9891\u7E41\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u914D\u7F6E\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55\u6765\u51CF\u5C11\u5E72\u6270\uFF0C\u540C\u65F6\u4E5F\u5C06\u964D\u4F4E\u6570\u636E\u5E93\u7684\u5B58\u50A8\u538B\u529B\u3002",paraId:29,tocIndex:4},{value:"\u540C\u6837\u5728\u5DE5\u4F5C\u6D41\u7684\u65B0\u5EFA\u548C\u7F16\u8F91\u5F39\u7A97\u4E2D\u53EF\u4EE5\u914D\u7F6E\u5BF9\u5E94\u6D41\u7A0B\u662F\u5426\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55\uFF1A",paraId:30,tocIndex:4},{value:"\u81EA\u52A8\u5220\u9664\u53EF\u4EE5\u6839\u636E\u6267\u884C\u7ED3\u679C\u7684\u72B6\u6001\u6765\u8FDB\u884C\u914D\u7F6E\uFF0C\u5927\u90E8\u5206\u60C5\u51B5\u4E0B\uFF0C\u5EFA\u8BAE\u4EC5\u52FE\u9009\u201C\u5B8C\u6210\u201D\u72B6\u6001\uFF0C\u8FD9\u6837\u53EF\u4EE5\u4FDD\u7559\u6267\u884C\u5931\u8D25\u7684\u8BB0\u5F55\uFF0C\u4EE5\u4FBF\u540E\u7EED\u6392\u67E5\u95EE\u9898\u3002",paraId:31,tocIndex:4},{value:"\u5EFA\u8BAE\u5728\u8C03\u8BD5\u5DE5\u4F5C\u6D41\u65F6\u4E0D\u8981\u5F00\u542F\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55\uFF0C\u4EE5\u4FBF\u901A\u8FC7\u5386\u53F2\u8BB0\u5F55\u6765\u68C0\u67E5\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u903B\u8F91\u662F\u5426\u7B26\u5408\u9884\u671F\u3002",paraId:32,tocIndex:4},{value:"\u5220\u9664\u5DE5\u4F5C\u6D41\u7684\u5386\u53F2\u5E76\u4E0D\u4F1A\u51CF\u5C11\u5DE5\u4F5C\u6D41\u5DF2\u6267\u884C\u8FC7\u7684\u8BA1\u6570\u3002",paraId:33},{value:"\u5728\u5DF2\u914D\u7F6E\u7684\u5DE5\u4F5C\u6D41\u89E6\u53D1\u81F3\u5C11\u4E00\u6B21\u4EE5\u540E\uFF0C\u5982\u5E0C\u671B\u4FEE\u6539\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u6216\u5176\u4E2D\u7684\u8282\u70B9\uFF0C\u9700\u8981\u901A\u8FC7\u521B\u5EFA\u65B0\u7248\u672C\u540E\u518D\u4FEE\u6539\uFF0C\u8FD9\u6837\u540C\u65F6\u4E5F\u4FDD\u8BC1\u4E86\u5F53\u56DE\u987E\u5DF2\u89E6\u53D1\u8FC7\u7684\u5DE5\u4F5C\u6D41\u5386\u53F2\u6267\u884C\u8BB0\u5F55\u65F6\u4E0D\u53D7\u672A\u6765\u4FEE\u6539\u7684\u5F71\u54CD\u3002",paraId:34,tocIndex:5},{value:"\u5728\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u9875\u9762\uFF0C\u53EF\u4EE5\u5728\u53F3\u4E0A\u89D2\u7684\u7248\u672C\u83DC\u5355\u67E5\u770B\u5DF2\u6709\u7684\u5DE5\u4F5C\u6D41\u7248\u672C\uFF1A",paraId:35,tocIndex:5},{value:"\u5728\u5176\u53F3\u4FA7\u7684\u66F4\u591A\u64CD\u4F5C\uFF08\u201C\u2026\u201D\uFF09\u83DC\u5355\u4E2D\uFF0C\u53EF\u4EE5\u9009\u62E9\u57FA\u4E8E\u5F53\u524D\u67E5\u770B\u7684\u7248\u672C\u590D\u5236\u5230\u65B0\u7248\u672C\uFF1A",paraId:36,tocIndex:5},{value:"\u590D\u5236\u5230\u65B0\u7248\u672C\u4E4B\u540E\uFF0C\u70B9\u51FB\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\uFF0C\u5C06\u5BF9\u5E94\u7248\u672C\u5207\u6362\u5230\u542F\u7528\u72B6\u6001\u540E\uFF0C\u65B0\u7684\u5DE5\u4F5C\u6D41\u7248\u672C\u5C06\u4F1A\u751F\u6548\u3002",paraId:37,tocIndex:5},{value:"\u5982\u9700\u91CD\u65B0\u9009\u62E9\u65E7\u7248\u672C\uFF0C\u4ECE\u7248\u672C\u83DC\u5355\u4E2D\u5207\u6362\u540E\uFF0C\u518D\u6B21\u70B9\u51FB\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\u5207\u6362\u81F3\u542F\u7528\u72B6\u6001\u540E\uFF0C\u5F53\u524D\u67E5\u770B\u7684\u7248\u672C\u5C06\u751F\u6548\uFF0C\u540E\u7EED\u89E6\u53D1\u5C06\u6267\u884C\u5BF9\u5E94\u7248\u672C\u7684\u6D41\u7A0B\u3002",paraId:38,tocIndex:5},{value:"\u5F53\u9700\u8981\u505C\u7528\u5DE5\u4F5C\u6D41\u65F6\uFF0C\u70B9\u51FB\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\u5207\u6362\u81F3\u505C\u7528\u72B6\u6001\u540E\uFF0C\u8BE5\u5DE5\u4F5C\u6D41\u5C06\u4E0D\u518D\u4F1A\u88AB\u89E6\u53D1\u3002",paraId:39,tocIndex:5},{value:"\u4E0E\u5DE5\u4F5C\u6D41\u7BA1\u7406\u5217\u8868\u4E2D\u7684\u201C\u590D\u5236\u201D\u5DE5\u4F5C\u6D41\u4E0D\u540C\uFF0C\u201C\u590D\u5236\u5230\u65B0\u7248\u672C\u201D\u7684\u5DE5\u4F5C\u6D41\u4ECD\u4F1A\u5F52\u96C6\u5728\u540C\u4E00\u7EC4\u5DE5\u4F5C\u6D41\u4E2D\uFF0C\u53EA\u662F\u53EF\u4EE5\u901A\u8FC7\u7248\u672C\u533A\u5206\u3002\u4F46\u590D\u5236\u5DE5\u4F5C\u6D41\u5219\u4F1A\u88AB\u89C6\u4E3A\u4E00\u4E2A\u5168\u65B0\u7684\u5DE5\u4F5C\u6D41\uFF0C\u4E0E\u4E4B\u524D\u5DE5\u4F5C\u6D41\u7684\u7248\u672C\u65E0\u5173\uFF0C\u4E14\u6267\u884C\u6B21\u6570\u4E5F\u4F1A\u5F52\u96F6\u3002",paraId:40}],tP={},nP={title:"Workflow Aggregate",toc:"menu",filename:"docs/en-US/plugins/workflow-aggregate/index.md",lastUpdated:173254844e4},oP=[],rP=[],dP={},iP={title:"IField",toc:"menu",filename:"docs/en-US/api/data-source-manager/i-field.md",lastUpdated:173254844e4,description:"IField \u5B9A\u4E49\u4E86\u5B57\u6BB5\u9700\u8981\u5B9E\u73B0\u7684\u63A5\u53E3\u3002"},lP=[{id:"ifield",depth:1,title:"IField"},{id:"\u5C5E\u6027",depth:2,title:"\u5C5E\u6027"},{id:"options",depth:3,title:"options"}],cP=[{value:"IField",paraId:0,tocIndex:0},{value:" \u5B9A\u4E49\u4E86\u5B57\u6BB5\u9700\u8981\u5B9E\u73B0\u7684\u63A5\u53E3\u3002",paraId:0,tocIndex:0},{value:`export type FieldOptions = { name: string; field: string; rawType: string; @@ -11569,11 +11621,11 @@ class MyTrigger extends Trigger { export interface IField { options: FieldOptions; } -`,paraId:1,tocIndex:0},{value:"\u7C7B\u578B",paraId:2,tocIndex:2},{value:"\uFF1A",paraId:2,tocIndex:2},{value:"FieldOptions",paraId:2,tocIndex:2}],sP={},uP={title:"IModel",toc:"menu",filename:"docs/en-US/api/data-source-manager/i-model.md",lastUpdated:1732240239e3,description:"IModel \u63A5\u53E3\u5B9A\u4E49\u4E86\u6A21\u578B\u5BF9\u8C61\u7684\u57FA\u672C\u5C5E\u6027\u548C\u65B9\u6CD5\u3002"},pP=[{id:"imodel",depth:1,title:"IModel"},{id:"api",depth:2,title:"API"},{id:"tojson",depth:3,title:"toJSON()"}],IP=[{value:"IModel",paraId:0,tocIndex:0},{value:" \u63A5\u53E3\u5B9A\u4E49\u4E86\u6A21\u578B\u5BF9\u8C61\u7684\u57FA\u672C\u5C5E\u6027\u548C\u65B9\u6CD5\u3002",paraId:0,tocIndex:0},{value:`export interface IModel { +`,paraId:1,tocIndex:0},{value:"\u7C7B\u578B",paraId:2,tocIndex:2},{value:"\uFF1A",paraId:2,tocIndex:2},{value:"FieldOptions",paraId:2,tocIndex:2}],sP={},uP={title:"IModel",toc:"menu",filename:"docs/en-US/api/data-source-manager/i-model.md",lastUpdated:173254844e4,description:"IModel \u63A5\u53E3\u5B9A\u4E49\u4E86\u6A21\u578B\u5BF9\u8C61\u7684\u57FA\u672C\u5C5E\u6027\u548C\u65B9\u6CD5\u3002"},pP=[{id:"imodel",depth:1,title:"IModel"},{id:"api",depth:2,title:"API"},{id:"tojson",depth:3,title:"toJSON()"}],IP=[{value:"IModel",paraId:0,tocIndex:0},{value:" \u63A5\u53E3\u5B9A\u4E49\u4E86\u6A21\u578B\u5BF9\u8C61\u7684\u57FA\u672C\u5C5E\u6027\u548C\u65B9\u6CD5\u3002",paraId:0,tocIndex:0},{value:`export interface IModel { toJSON: () => any; } -`,paraId:1,tocIndex:0},{value:"\u5C06\u6A21\u578B\u5BF9\u8C61\u8F6C\u6362\u4E3A JSON \u683C\u5F0F",paraId:2,tocIndex:2}],_P={},vP={title:"SyncMessageManager",toc:"menu",filename:"docs/en-US/api/server/sync-message-manager.md",lastUpdated:1732240239e3,description:"Used to manage synchronization signals between multiple application nodes. In a distributed deployment, when the memory state changes, it is necessary to notify other nodes for synchronization. SyncMessageManager provides a common interface to be invoked, allowing it to be used in same way across different modules."},mP=[{id:"syncmessagemanager",depth:1,title:"SyncMessageManager"},{id:"syncmessagemanager-1",depth:2,title:"SyncMessageManager"},{id:"members",depth:3,title:"Members"},{id:"constructor",depth:4,title:"constructor()"},{id:"subscribechannel-string-callback-synceventcallback",depth:4,title:"subscribe(channel: string, callback: SyncEventCallback)"},{id:"unsubscribechannel-string-callback-synceventcallback",depth:4,title:"unsubscribe(channel: string, callback: SyncEventCallback)"},{id:"publishchannel-string-message-any",depth:4,title:"publish(channel: string, message: any)"},{id:"related-types",depth:3,title:"Related Types"}],hP=[{value:"Used to manage synchronization signals between multiple application nodes. In a distributed deployment, when the memory state changes, it is necessary to notify other nodes for synchronization. ",paraId:0,tocIndex:0},{value:"SyncMessageManager",paraId:0,tocIndex:0},{value:" provides a common interface to be invoked, allowing it to be used in same way across different modules.",paraId:0,tocIndex:0},{value:"The SyncMessageManager itself does not implement specific synchronization functionality, but provides a unified interface, and it will invoke the underlying ",paraId:1,tocIndex:0},{value:"pubSubManager",paraId:1,tocIndex:0},{value:" to send and receive messages.",paraId:1,tocIndex:0},{value:"SyncMessageManager",paraId:2},{value:"constructor()",paraId:2},{value:"Constructor, creates an instance of the SyncMessageManager. An instance is automatically created during application initialization and is accessible globally within the application (",paraId:3,tocIndex:3},{value:"app.syncMessageManager",paraId:3,tocIndex:3},{value:"), so there is no need to call it.",paraId:3,tocIndex:3},{value:"subscribe(channel: string, callback: SyncEventCallback)",paraId:2},{value:"Subscribes to sync events.",paraId:4,tocIndex:4},{value:"channel",paraId:5,tocIndex:4},{value:": Channel name to differentiate between different sync events.",paraId:5,tocIndex:4},{value:"callback",paraId:5,tocIndex:4},{value:": Event callback function, called when a sync event occurs.",paraId:5,tocIndex:4},{value:"unsubscribe(channel: string, callback: SyncEventCallback)",paraId:2},{value:"Unsubscribes from sync events.",paraId:6,tocIndex:5},{value:"publish(channel: string, message: any)",paraId:2},{value:"Publishes a sync message.",paraId:7,tocIndex:6},{value:"channel",paraId:8,tocIndex:6},{value:": Channel name to differentiate between different sync events.",paraId:8,tocIndex:6},{value:"message",paraId:8,tocIndex:6},{value:": Sync message data.",paraId:8,tocIndex:6},{value:`export type PubSubCallback = (message: any) => Promise; -`,paraId:9,tocIndex:7}],fP={},xP={title:"Action API",toc:"menu",filename:"docs/en-US/development/http-api/action-api.md",lastUpdated:1732240239e3,description:"Collection \u548C Association \u8D44\u6E90\u901A\u7528\u3002"},gP=[{id:"action-api",depth:1,title:"Action API"},{id:"common",depth:2,title:"Common"},{id:"create",depth:3,title:"create"},{id:"\u65B0\u589E\u7528\u6237",depth:4,title:"\u65B0\u589E\u7528\u6237"},{id:"\u65B0\u589E\u7528\u6237\u6587\u7AE0",depth:4,title:"\u65B0\u589E\u7528\u6237\u6587\u7AE0"},{id:"request-body-\u91CC\u7684-association",depth:4,title:"Request Body \u91CC\u7684 association"},{id:"update",depth:3,title:"update"},{id:"request-body-\u91CC\u7684-association-1",depth:4,title:"Request Body \u91CC\u7684 association"},{id:"list",depth:3,title:"list"},{id:"get",depth:3,title:"get"},{id:"destroy",depth:3,title:"destroy"},{id:"move",depth:3,title:"move"},{id:"association",depth:2,title:"Association"},{id:"add",depth:3,title:"add"},{id:"set",depth:3,title:"set"},{id:"remove",depth:3,title:"remove"},{id:"toggle",depth:3,title:"toggle"}],bP=[{value:"Collection \u548C Association \u8D44\u6E90\u901A\u7528\u3002",paraId:0,tocIndex:1},{value:"create",paraId:1},{value:`POST /api/users:create?whitelist=a,b&blacklist=c,d +`,paraId:1,tocIndex:0},{value:"\u5C06\u6A21\u578B\u5BF9\u8C61\u8F6C\u6362\u4E3A JSON \u683C\u5F0F",paraId:2,tocIndex:2}],_P={},vP={title:"SyncMessageManager",toc:"menu",filename:"docs/en-US/api/server/sync-message-manager.md",lastUpdated:173254844e4,description:"Used to manage synchronization signals between multiple application nodes. In a distributed deployment, when the memory state changes, it is necessary to notify other nodes for synchronization. SyncMessageManager provides a common interface to be invoked, allowing it to be used in same way across different modules."},mP=[{id:"syncmessagemanager",depth:1,title:"SyncMessageManager"},{id:"syncmessagemanager-1",depth:2,title:"SyncMessageManager"},{id:"members",depth:3,title:"Members"},{id:"constructor",depth:4,title:"constructor()"},{id:"subscribechannel-string-callback-synceventcallback",depth:4,title:"subscribe(channel: string, callback: SyncEventCallback)"},{id:"unsubscribechannel-string-callback-synceventcallback",depth:4,title:"unsubscribe(channel: string, callback: SyncEventCallback)"},{id:"publishchannel-string-message-any",depth:4,title:"publish(channel: string, message: any)"},{id:"related-types",depth:3,title:"Related Types"}],hP=[{value:"Used to manage synchronization signals between multiple application nodes. In a distributed deployment, when the memory state changes, it is necessary to notify other nodes for synchronization. ",paraId:0,tocIndex:0},{value:"SyncMessageManager",paraId:0,tocIndex:0},{value:" provides a common interface to be invoked, allowing it to be used in same way across different modules.",paraId:0,tocIndex:0},{value:"The SyncMessageManager itself does not implement specific synchronization functionality, but provides a unified interface, and it will invoke the underlying ",paraId:1,tocIndex:0},{value:"pubSubManager",paraId:1,tocIndex:0},{value:" to send and receive messages.",paraId:1,tocIndex:0},{value:"SyncMessageManager",paraId:2},{value:"constructor()",paraId:2},{value:"Constructor, creates an instance of the SyncMessageManager. An instance is automatically created during application initialization and is accessible globally within the application (",paraId:3,tocIndex:3},{value:"app.syncMessageManager",paraId:3,tocIndex:3},{value:"), so there is no need to call it.",paraId:3,tocIndex:3},{value:"subscribe(channel: string, callback: SyncEventCallback)",paraId:2},{value:"Subscribes to sync events.",paraId:4,tocIndex:4},{value:"channel",paraId:5,tocIndex:4},{value:": Channel name to differentiate between different sync events.",paraId:5,tocIndex:4},{value:"callback",paraId:5,tocIndex:4},{value:": Event callback function, called when a sync event occurs.",paraId:5,tocIndex:4},{value:"unsubscribe(channel: string, callback: SyncEventCallback)",paraId:2},{value:"Unsubscribes from sync events.",paraId:6,tocIndex:5},{value:"publish(channel: string, message: any)",paraId:2},{value:"Publishes a sync message.",paraId:7,tocIndex:6},{value:"channel",paraId:8,tocIndex:6},{value:": Channel name to differentiate between different sync events.",paraId:8,tocIndex:6},{value:"message",paraId:8,tocIndex:6},{value:": Sync message data.",paraId:8,tocIndex:6},{value:`export type PubSubCallback = (message: any) => Promise; +`,paraId:9,tocIndex:7}],fP={},xP={title:"Action API",toc:"menu",filename:"docs/en-US/development/http-api/action-api.md",lastUpdated:173254844e4,description:"Collection \u548C Association \u8D44\u6E90\u901A\u7528\u3002"},gP=[{id:"action-api",depth:1,title:"Action API"},{id:"common",depth:2,title:"Common"},{id:"create",depth:3,title:"create"},{id:"\u65B0\u589E\u7528\u6237",depth:4,title:"\u65B0\u589E\u7528\u6237"},{id:"\u65B0\u589E\u7528\u6237\u6587\u7AE0",depth:4,title:"\u65B0\u589E\u7528\u6237\u6587\u7AE0"},{id:"request-body-\u91CC\u7684-association",depth:4,title:"Request Body \u91CC\u7684 association"},{id:"update",depth:3,title:"update"},{id:"request-body-\u91CC\u7684-association-1",depth:4,title:"Request Body \u91CC\u7684 association"},{id:"list",depth:3,title:"list"},{id:"get",depth:3,title:"get"},{id:"destroy",depth:3,title:"destroy"},{id:"move",depth:3,title:"move"},{id:"association",depth:2,title:"Association"},{id:"add",depth:3,title:"add"},{id:"set",depth:3,title:"set"},{id:"remove",depth:3,title:"remove"},{id:"toggle",depth:3,title:"toggle"}],bP=[{value:"Collection \u548C Association \u8D44\u6E90\u901A\u7528\u3002",paraId:0,tocIndex:1},{value:"create",paraId:1},{value:`POST /api/users:create?whitelist=a,b&blacklist=c,d {} # Request Body `,paraId:2,tocIndex:2},{value:`Parameters @@ -11644,8 +11696,8 @@ Response 200 (application/json) } ] } -`,paraId:11,tocIndex:7},{value:"list",paraId:1},{value:"get",paraId:1},{value:"destroy",paraId:1},{value:"move",paraId:1},{value:"add",paraId:1},{value:"set",paraId:1},{value:"remove",paraId:1},{value:"toggle",paraId:1}],yP={},wP={title:"Bulk Edit",toc:"menu",filename:"docs/en-US/handbook/action-bulk-edit/index.md",lastUpdated:1732240239e3,description:"The Bulk editing feature is crafted for situations where different update logic must be applied to various groups of records, offering high flexibility in data processing tasks. When the user clicks the batch editing button, a configuration interface appears, enabling the user to define distinct assignment logic for each field. This allows for precise control over how each record is updated based on specific needs."},kP=[{id:"bulk-edit",depth:1,title:"Bulk Edit"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-guide",depth:2,title:"User Guide"}],SP=[{value:"Bulk Edit",paraId:0},{value:"The Bulk editing feature is crafted for situations where different update logic must be applied to various groups of records, offering high flexibility in data processing tasks. When the user clicks the batch editing button, a configuration interface appears, enabling the user to define distinct assignment logic for each field. This allows for precise control over how each record is updated based on specific needs.",paraId:1,tocIndex:1},{value:"Select the data for Bulk editing: either Selected or All, with the default option being Selected.",paraId:2,tocIndex:3},{value:"Define the update logic for each field, with options to:",paraId:3,tocIndex:3},{value:"Leave unchanged",paraId:4,tocIndex:3},{value:"Modify to a specified value",paraId:4,tocIndex:3},{value:"Clear the field",paraId:4,tocIndex:3},{value:"In the example shown, the Bulk editing operation is applied within the shipment table block. The selected data has the transportation mode updated to air freight, and both the delivery confirmation and actual arrival times are cleared.",paraId:5,tocIndex:3}],UP={},PP={title:"Copy",toc:"menu",filename:"docs/en-US/handbook/action-duplicate/index.md",lastUpdated:1732240239e3,description:"The copy feature allows users to create new data entries based on existing records. It supports two modes: direct copy and copy to a form for further editing."},TP=[{id:"copy",depth:1,title:"Copy"},{id:"overview",depth:2,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"copy-modes",depth:2,title:"Copy Modes"},{id:"direct-duplicate",depth:3,title:"Direct Duplicate"},{id:"copy-into-the-form-and-continue-to-fill-in",depth:3,title:"Copy Into the Form and Continue to Fill in"},{id:"sync-from-form-fields",depth:4,title:"Sync From Form Fields"},{id:"additional-information",depth:3,title:"Additional Information"},{id:"copying-referencing-and-preloading",depth:4,title:"Copying, Referencing, and Preloading"},{id:"select-all",depth:4,title:"Select All"},{id:"fields-excluded-when-selected-as-data-templates",depth:4,title:"Fields Excluded When Selected as Data Templates:"},{id:"sync-from-form-fields-1",depth:4,title:"Sync From Form Fields"}],CP=[{value:"The copy feature allows users to create new data entries based on existing records. It supports two modes: direct copy and copy to a form for further editing.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, so no additional installation is needed.",paraId:1,tocIndex:2},{value:"By default, data is copied using the direct copy mode;",paraId:2,tocIndex:4},{value:"Target collection: Specifies where the copied data will be stored(For inherited tables, the data can be copied to a sub-table. Direct copy is limited to the current table);",paraId:2,tocIndex:4},{value:"Data fields: Defines which fields to include in the copy. You can select all or specific fields, required.",paraId:2,tocIndex:4},{value:"Once configured, simply click the button to copy the data.",paraId:3,tocIndex:4},{value:"The fields defined in the template will be pre-filled as default values in a form, allowing you to modify them before submitting to complete the copy.",paraId:4,tocIndex:5},{value:"You can choose to copy the data to the current table or a sub-table (in inherited cases).",paraId:5,tocIndex:5},{value:"Template Field Configuration: Only the selected fields will be pre-filled in the form as default values.",paraId:6,tocIndex:5},{value:'The "Waybill" (o2m) relationship is copied, and its field components are set as a sub-form. The fields within the sub-form are configurable.',paraId:7,tocIndex:5},{value:"The system will automatically interpret the fields already configured in the current form block as template fields;",paraId:8,tocIndex:6},{value:'After modifying the form block fields (e.g., adjusting relationship components), you can reopen the template configuration and click the "Sync Form" button to ensure consistency between the form and the template.',paraId:8,tocIndex:6},{value:"Template data will populate the form with default values, allowing you to adjust them and submit to complete the copy operation.",paraId:9,tocIndex:6},{value:"Below is an example of setting up the copy function for an order list.",paraId:10,tocIndex:6},{value:"Different field types (with different relationships) require different handling logic, such as copying, referencing, or preloading. Modifications to relationship field components can also affect this logic (Select and Record picker components handle references, while Sub-form and Sub-table components handle copies).",paraId:11,tocIndex:8},{value:"Copying:",paraId:12,tocIndex:8},{value:"Standard fields are copied;",paraId:13,tocIndex:8},{value:`For hasOne and hasMany relationships, fields can only be copied (i.e., these types of relationships cannot use Select or Record picker as components but must use Sub-form, Sub-table, etc.); -`,paraId:13,tocIndex:8},{value:"Adjusting hasOne or hasMany field components won\u2019t change the copying logic;",paraId:14,tocIndex:8},{value:"All sub-fields of copied relationships can be selected.",paraId:14,tocIndex:8},{value:"Referencing",paraId:15,tocIndex:8},{value:"belongsTo and belongsToMany relationships are handled as references;",paraId:16,tocIndex:8},{value:"References can transform into copies. For example, if the field component changes from select to sub-form, the relationship turns from a reference to a copy. After this, all subfields become selectable.",paraId:16,tocIndex:8},{value:"Preloading: Refers to relationship fields within referenced fields.",paraId:17,tocIndex:8},{value:"Fields within referenced relationships are preloaded;",paraId:18,tocIndex:8},{value:"Adjustments to preloaded relationship fields can cause them to switch to a reference or copy logic.",paraId:18,tocIndex:8},{value:"All copy and reference fields are selected by default.",paraId:19,tocIndex:9},{value:"Primary keys of copied relationships are filtered out, but primary keys of references and preloaded data are not",paraId:20,tocIndex:10},{value:"Foreign keys",paraId:20,tocIndex:10},{value:"Fields that must remain unique",paraId:20,tocIndex:10},{value:"Sorting fields",paraId:20,tocIndex:10},{value:"Auto-generated fields",paraId:20,tocIndex:10},{value:"Password field",paraId:20,tocIndex:10},{value:"Creator",paraId:20,tocIndex:10},{value:"Creation date",paraId:20,tocIndex:10},{value:"Last updated by",paraId:20,tocIndex:10},{value:"Last update date",paraId:20,tocIndex:10},{value:"The fields already configured in the form block will be automatically parsed as template fields.",paraId:21,tocIndex:11},{value:'After modifying the form block (e.g., adjusting relationship field components), reopen the template configuration and click the "Sync Form" button to ensure the form aligns with the template.',paraId:21,tocIndex:11}],AP={},qP={title:"Main DataBase",toc:"menu",filename:"docs/en-US/handbook/data-source-main/index.md",lastUpdated:1732240239e3,description:"NocoBase's main database can be used to store both business data and the metadata of the application, including system table data and custom table data. The main database supports relational databases such as MySQL, PostgreSQL, SQLite, etc. During the installation of the NocoBase application, the main database must be installed synchronously and cannot be deleted."},EP=[{id:"main-database",depth:1,title:"Main DataBase"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"supporting-the-creation-of-various-data-tables",depth:3,title:"Supporting the creation of various data tables"},{id:"supporting-classification-management-of-collections",depth:3,title:"Supporting classification management of collections"},{id:"offering-a-wide-range-of-field-types",depth:3,title:"Offering a wide range of field types"}],DP=[{value:"NocoBase's main database can be used to store both business data and the metadata of the application, including system table data and custom table data. The main database supports relational databases such as MySQL, PostgreSQL, SQLite, etc. During the installation of the NocoBase application, the main database must be installed synchronously and cannot be deleted.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, no separate installation is required.",paraId:1,tocIndex:2},{value:"General collection",paraId:2,tocIndex:4},{value:": built-in commonly used system fields;",paraId:3,tocIndex:4},{value:"Inheritance collection",paraId:4,tocIndex:4},{value:": allows the creation of a parent table, from which child tables can be derived. Child tables will inherit the structure of the parent table, and can also define their own columns.",paraId:3,tocIndex:4},{value:"Tree collection",paraId:5,tocIndex:4},{value:": tree-structured table, currently only supports adjacent table design;",paraId:3,tocIndex:4},{value:"Calendar collection",paraId:6,tocIndex:4},{value:": for creating calendar-related event tables;",paraId:3,tocIndex:4},{value:"File collection",paraId:7,tocIndex:4},{value:": for managing file storage;",paraId:3,tocIndex:4},{value:"Expression Collection",paraId:8,tocIndex:4},{value:": for dynamic expression scenarios in workflows;",paraId:3,tocIndex:4},{value:"SQL Collection",paraId:9,tocIndex:4},{value:": Not an actual database table, but quickly presenting the SQL query in a structured manner;",paraId:3,tocIndex:4},{value:"Database View collection",paraId:10,tocIndex:4},{value:": connects to an existing database view;",paraId:3,tocIndex:4},{value:"FDW collection",paraId:11,tocIndex:4},{value:": allows the database system to directly access and query data in external data sources, based on FDW technology;",paraId:3,tocIndex:4},{value:"See more in the ",paraId:12,tocIndex:6},{value:"Data Table Fields / Overview",paraId:13,tocIndex:6},{value:" section.",paraId:12,tocIndex:6}],OP={},RP={title:"FAQ",toc:"menu",filename:"docs/en-US/handbook/data-visualization/faq.md",lastUpdated:1732240239e3,description:"Refer to the documentation or use a demo to understand the properties supported by different components through the chart component reference link. Configuration is done using JSON key-value pairs."},MP=[{id:"faq",depth:1,title:"FAQ"},{id:"how-should-json-configuration-be-used",depth:2,title:"How should JSON configuration be used?"},{id:"example-changing-the-order-of-table-columns",depth:3,title:"Example: Changing the Order of Table Columns"},{id:"can-json-configuration-support-the-use-of-functions",depth:2,title:"Can JSON configuration support the use of functions?"},{id:"what-is-the-primary-use-case-for-custom-fields-in-chart-filter-blocks",depth:2,title:"What is the primary use case for custom fields in chart filter blocks?"}],LP=[{value:"Refer to the documentation or use a demo to understand the properties supported by different components through the chart component reference link. Configuration is done using JSON key-value pairs.",paraId:0,tocIndex:1},{value:"The table component used is Antd's table component. Open the reference link ",paraId:1,tocIndex:2},{value:"Table",paraId:1,tocIndex:2},{value:". The API section corresponds to all the configurable properties supported by the component.",paraId:1,tocIndex:2},{value:"To adjust the order of table columns, modify the ",paraId:2,tocIndex:2},{value:"columns",paraId:2,tocIndex:2},{value:" configuration. Example:",paraId:2,tocIndex:2},{value:`{ +`,paraId:11,tocIndex:7},{value:"list",paraId:1},{value:"get",paraId:1},{value:"destroy",paraId:1},{value:"move",paraId:1},{value:"add",paraId:1},{value:"set",paraId:1},{value:"remove",paraId:1},{value:"toggle",paraId:1}],yP={},wP={title:"Bulk Edit",toc:"menu",filename:"docs/en-US/handbook/action-bulk-edit/index.md",lastUpdated:173254844e4,description:"The Bulk editing feature is crafted for situations where different update logic must be applied to various groups of records, offering high flexibility in data processing tasks. When the user clicks the batch editing button, a configuration interface appears, enabling the user to define distinct assignment logic for each field. This allows for precise control over how each record is updated based on specific needs."},kP=[{id:"bulk-edit",depth:1,title:"Bulk Edit"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-guide",depth:2,title:"User Guide"}],SP=[{value:"Bulk Edit",paraId:0},{value:"The Bulk editing feature is crafted for situations where different update logic must be applied to various groups of records, offering high flexibility in data processing tasks. When the user clicks the batch editing button, a configuration interface appears, enabling the user to define distinct assignment logic for each field. This allows for precise control over how each record is updated based on specific needs.",paraId:1,tocIndex:1},{value:"Select the data for Bulk editing: either Selected or All, with the default option being Selected.",paraId:2,tocIndex:3},{value:"Define the update logic for each field, with options to:",paraId:3,tocIndex:3},{value:"Leave unchanged",paraId:4,tocIndex:3},{value:"Modify to a specified value",paraId:4,tocIndex:3},{value:"Clear the field",paraId:4,tocIndex:3},{value:"In the example shown, the Bulk editing operation is applied within the shipment table block. The selected data has the transportation mode updated to air freight, and both the delivery confirmation and actual arrival times are cleared.",paraId:5,tocIndex:3}],UP={},PP={title:"Copy",toc:"menu",filename:"docs/en-US/handbook/action-duplicate/index.md",lastUpdated:173254844e4,description:"The copy feature allows users to create new data entries based on existing records. It supports two modes: direct copy and copy to a form for further editing."},TP=[{id:"copy",depth:1,title:"Copy"},{id:"overview",depth:2,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"copy-modes",depth:2,title:"Copy Modes"},{id:"direct-duplicate",depth:3,title:"Direct Duplicate"},{id:"copy-into-the-form-and-continue-to-fill-in",depth:3,title:"Copy Into the Form and Continue to Fill in"},{id:"sync-from-form-fields",depth:4,title:"Sync From Form Fields"},{id:"additional-information",depth:3,title:"Additional Information"},{id:"copying-referencing-and-preloading",depth:4,title:"Copying, Referencing, and Preloading"},{id:"select-all",depth:4,title:"Select All"},{id:"fields-excluded-when-selected-as-data-templates",depth:4,title:"Fields Excluded When Selected as Data Templates:"},{id:"sync-from-form-fields-1",depth:4,title:"Sync From Form Fields"}],CP=[{value:"The copy feature allows users to create new data entries based on existing records. It supports two modes: direct copy and copy to a form for further editing.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, so no additional installation is needed.",paraId:1,tocIndex:2},{value:"By default, data is copied using the direct copy mode;",paraId:2,tocIndex:4},{value:"Target collection: Specifies where the copied data will be stored(For inherited tables, the data can be copied to a sub-table. Direct copy is limited to the current table);",paraId:2,tocIndex:4},{value:"Data fields: Defines which fields to include in the copy. You can select all or specific fields, required.",paraId:2,tocIndex:4},{value:"Once configured, simply click the button to copy the data.",paraId:3,tocIndex:4},{value:"The fields defined in the template will be pre-filled as default values in a form, allowing you to modify them before submitting to complete the copy.",paraId:4,tocIndex:5},{value:"You can choose to copy the data to the current table or a sub-table (in inherited cases).",paraId:5,tocIndex:5},{value:"Template Field Configuration: Only the selected fields will be pre-filled in the form as default values.",paraId:6,tocIndex:5},{value:'The "Waybill" (o2m) relationship is copied, and its field components are set as a sub-form. The fields within the sub-form are configurable.',paraId:7,tocIndex:5},{value:"The system will automatically interpret the fields already configured in the current form block as template fields;",paraId:8,tocIndex:6},{value:'After modifying the form block fields (e.g., adjusting relationship components), you can reopen the template configuration and click the "Sync Form" button to ensure consistency between the form and the template.',paraId:8,tocIndex:6},{value:"Template data will populate the form with default values, allowing you to adjust them and submit to complete the copy operation.",paraId:9,tocIndex:6},{value:"Below is an example of setting up the copy function for an order list.",paraId:10,tocIndex:6},{value:"Different field types (with different relationships) require different handling logic, such as copying, referencing, or preloading. Modifications to relationship field components can also affect this logic (Select and Record picker components handle references, while Sub-form and Sub-table components handle copies).",paraId:11,tocIndex:8},{value:"Copying:",paraId:12,tocIndex:8},{value:"Standard fields are copied;",paraId:13,tocIndex:8},{value:`For hasOne and hasMany relationships, fields can only be copied (i.e., these types of relationships cannot use Select or Record picker as components but must use Sub-form, Sub-table, etc.); +`,paraId:13,tocIndex:8},{value:"Adjusting hasOne or hasMany field components won\u2019t change the copying logic;",paraId:14,tocIndex:8},{value:"All sub-fields of copied relationships can be selected.",paraId:14,tocIndex:8},{value:"Referencing",paraId:15,tocIndex:8},{value:"belongsTo and belongsToMany relationships are handled as references;",paraId:16,tocIndex:8},{value:"References can transform into copies. For example, if the field component changes from select to sub-form, the relationship turns from a reference to a copy. After this, all subfields become selectable.",paraId:16,tocIndex:8},{value:"Preloading: Refers to relationship fields within referenced fields.",paraId:17,tocIndex:8},{value:"Fields within referenced relationships are preloaded;",paraId:18,tocIndex:8},{value:"Adjustments to preloaded relationship fields can cause them to switch to a reference or copy logic.",paraId:18,tocIndex:8},{value:"All copy and reference fields are selected by default.",paraId:19,tocIndex:9},{value:"Primary keys of copied relationships are filtered out, but primary keys of references and preloaded data are not",paraId:20,tocIndex:10},{value:"Foreign keys",paraId:20,tocIndex:10},{value:"Fields that must remain unique",paraId:20,tocIndex:10},{value:"Sorting fields",paraId:20,tocIndex:10},{value:"Auto-generated fields",paraId:20,tocIndex:10},{value:"Password field",paraId:20,tocIndex:10},{value:"Creator",paraId:20,tocIndex:10},{value:"Creation date",paraId:20,tocIndex:10},{value:"Last updated by",paraId:20,tocIndex:10},{value:"Last update date",paraId:20,tocIndex:10},{value:"The fields already configured in the form block will be automatically parsed as template fields.",paraId:21,tocIndex:11},{value:'After modifying the form block (e.g., adjusting relationship field components), reopen the template configuration and click the "Sync Form" button to ensure the form aligns with the template.',paraId:21,tocIndex:11}],AP={},qP={title:"Main DataBase",toc:"menu",filename:"docs/en-US/handbook/data-source-main/index.md",lastUpdated:173254844e4,description:"NocoBase's main database can be used to store both business data and the metadata of the application, including system table data and custom table data. The main database supports relational databases such as MySQL, PostgreSQL, SQLite, etc. During the installation of the NocoBase application, the main database must be installed synchronously and cannot be deleted."},EP=[{id:"main-database",depth:1,title:"Main DataBase"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"supporting-the-creation-of-various-data-tables",depth:3,title:"Supporting the creation of various data tables"},{id:"supporting-classification-management-of-collections",depth:3,title:"Supporting classification management of collections"},{id:"offering-a-wide-range-of-field-types",depth:3,title:"Offering a wide range of field types"}],DP=[{value:"NocoBase's main database can be used to store both business data and the metadata of the application, including system table data and custom table data. The main database supports relational databases such as MySQL, PostgreSQL, SQLite, etc. During the installation of the NocoBase application, the main database must be installed synchronously and cannot be deleted.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, no separate installation is required.",paraId:1,tocIndex:2},{value:"General collection",paraId:2,tocIndex:4},{value:": built-in commonly used system fields;",paraId:3,tocIndex:4},{value:"Inheritance collection",paraId:4,tocIndex:4},{value:": allows the creation of a parent table, from which child tables can be derived. Child tables will inherit the structure of the parent table, and can also define their own columns.",paraId:3,tocIndex:4},{value:"Tree collection",paraId:5,tocIndex:4},{value:": tree-structured table, currently only supports adjacent table design;",paraId:3,tocIndex:4},{value:"Calendar collection",paraId:6,tocIndex:4},{value:": for creating calendar-related event tables;",paraId:3,tocIndex:4},{value:"File collection",paraId:7,tocIndex:4},{value:": for managing file storage;",paraId:3,tocIndex:4},{value:"Expression Collection",paraId:8,tocIndex:4},{value:": for dynamic expression scenarios in workflows;",paraId:3,tocIndex:4},{value:"SQL Collection",paraId:9,tocIndex:4},{value:": Not an actual database table, but quickly presenting the SQL query in a structured manner;",paraId:3,tocIndex:4},{value:"Database View collection",paraId:10,tocIndex:4},{value:": connects to an existing database view;",paraId:3,tocIndex:4},{value:"FDW collection",paraId:11,tocIndex:4},{value:": allows the database system to directly access and query data in external data sources, based on FDW technology;",paraId:3,tocIndex:4},{value:"See more in the ",paraId:12,tocIndex:6},{value:"Data Table Fields / Overview",paraId:13,tocIndex:6},{value:" section.",paraId:12,tocIndex:6}],OP={},RP={title:"FAQ",toc:"menu",filename:"docs/en-US/handbook/data-visualization/faq.md",lastUpdated:173254844e4,description:"Refer to the documentation or use a demo to understand the properties supported by different components through the chart component reference link. Configuration is done using JSON key-value pairs."},MP=[{id:"faq",depth:1,title:"FAQ"},{id:"how-should-json-configuration-be-used",depth:2,title:"How should JSON configuration be used?"},{id:"example-changing-the-order-of-table-columns",depth:3,title:"Example: Changing the Order of Table Columns"},{id:"can-json-configuration-support-the-use-of-functions",depth:2,title:"Can JSON configuration support the use of functions?"},{id:"what-is-the-primary-use-case-for-custom-fields-in-chart-filter-blocks",depth:2,title:"What is the primary use case for custom fields in chart filter blocks?"}],LP=[{value:"Refer to the documentation or use a demo to understand the properties supported by different components through the chart component reference link. Configuration is done using JSON key-value pairs.",paraId:0,tocIndex:1},{value:"The table component used is Antd's table component. Open the reference link ",paraId:1,tocIndex:2},{value:"Table",paraId:1,tocIndex:2},{value:". The API section corresponds to all the configurable properties supported by the component.",paraId:1,tocIndex:2},{value:"To adjust the order of table columns, modify the ",paraId:2,tocIndex:2},{value:"columns",paraId:2,tocIndex:2},{value:" configuration. Example:",paraId:2,tocIndex:2},{value:`{ "columns": [ { "key": "fieldName1", "dataIndex": "fieldName1", "title": "fieldTitle1" }, { "key": "fieldName2", "dataIndex": "fieldName2", "title": "fieldTitle2" } @@ -11657,9 +11709,9 @@ Response 200 (application/json) "content": "{{ ({ percent }) => \`\${(percent * 100).toFixed(0)}%\` }}" } } -`,paraId:5,tocIndex:3},{value:"When there are charts from different data tables within a chart block and the same filter field is needed to filter these charts, ",paraId:6,tocIndex:4},{value:"custom fields",paraId:7,tocIndex:4},{value:" can be used. For example, you might want to filter data within a specific time period.",paraId:6,tocIndex:4}],NP={},zP={title:"Encryption",toc:"menu",filename:"docs/en-US/handbook/field-encryption/index.md",lastUpdated:1732240239e3,description:"Sensitive business data, such as customer phone numbers, email addresses, and card numbers, can be encrypted to ensure privacy. Once encrypted, this data is securely stored in the database as ciphertext."},FP=[{id:"encryption",depth:1,title:"Encryption"},{id:"introduction",depth:2,title:"Introduction"},{id:"environment-variables",depth:2,title:"Environment Variables"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"filtering-limitations-after-encryption",depth:2,title:"Filtering Limitations After Encryption"},{id:"example",depth:2,title:"Example"}],BP=[{value:"Sensitive business data, such as customer phone numbers, email addresses, and card numbers, can be encrypted to ensure privacy. Once encrypted, this data is securely stored in the database as ciphertext.",paraId:0,tocIndex:1},{value:"Losing the ",paraId:1},{value:"ENCRYPTION_FIELD_KEY",paraId:1},{value:" will make it impossible to decrypt the data.",paraId:1},{value:"To enable the encryption feature, you must set up the ",paraId:2},{value:"ENCRYPTION_FIELD_KEY",paraId:2},{value:" environment variable, which acts as the encryption key. This key must be exactly 32 characters long, for example:",paraId:2},{value:`ENCRYPTION_FIELD_KEY='2%&glK;(SchemaInitializerContext); +`,paraId:0,tocIndex:1}],OC={},RC={title:"Incompatibility Changes in NocoBase 0.17",toc:"menu",filename:"docs/en-US/welcome/release/upgrade-to/v017.md",lastUpdated:173254844e4,description:"This article only covers incompatibility changes related to plugin development."},MC=[{id:"incompatibility-changes-in-nocobase-017",depth:1,title:"Incompatibility Changes in NocoBase 0.17"},{id:"changes-to-schemainitializer",depth:2,title:"Changes to SchemaInitializer"},{id:"adding-items-to-an-existing-initializer",depth:3,title:"Adding items to an existing initializer"},{id:"add-the-new-initializer-to-the-application",depth:3,title:"Add the new initializer to the application"},{id:"add-new-initializer",depth:3,title:"Add new initializer"},{id:"item-definition-and-implementation",depth:3,title:"Item definition and implementation"},{id:"changes-to-schemasettings",depth:2,title:"Changes to SchemaSettings"},{id:"settings-definition-and-implementation",depth:3,title:"Settings definition and implementation"},{id:"implementation-of-item-for-settings",depth:3,title:"Implementation of Item for Settings"},{id:"other",depth:2,title:"Other"},{id:"appaddcomponent-method-privatization",depth:3,title:"app.addComponent method privatization"},{id:"delete-the-pluginmanagercontext",depth:3,title:"Delete the PluginManagerContext."}],LC=[{value:"This article only covers incompatibility changes related to plugin development.",paraId:0},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerManager",paraId:1,tocIndex:1},{value:" for registering ",paraId:1,tocIndex:1},{value:"SchemaInitializer",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"useSchemaInitializerRender()",paraId:1,tocIndex:1},{value:" to replace the original ",paraId:1,tocIndex:1},{value:"useSchemaInitializer()",paraId:1,tocIndex:1},{value:" ",paraId:1,tocIndex:1},{value:"render()",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"useSchemaInitializerItem()",paraId:1,tocIndex:1},{value:" for obtaining the context of the current initialization item",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerItemGroup",paraId:1,tocIndex:1},{value:" component as the default component for ",paraId:1,tocIndex:1},{value:"type: 'itemGroup'",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerSubMenu",paraId:1,tocIndex:1},{value:" component as the default component for ",paraId:1,tocIndex:1},{value:"type: 'subMenu'",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerDivider",paraId:1,tocIndex:1},{value:" component as the default component for ",paraId:1,tocIndex:1},{value:"type: 'divider'",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerChildren",paraId:1,tocIndex:1},{value:" component for custom rendering of multiple list items",paraId:1,tocIndex:1},{value:"Added ",paraId:1,tocIndex:1},{value:"SchemaInitializerChild",paraId:1,tocIndex:1},{value:" component for custom rendering of a single list item",paraId:1,tocIndex:1},{value:"Changed the responsibilities of ",paraId:1,tocIndex:1},{value:"SchemaInitializerContext",paraId:1,tocIndex:1},{value:" for storing the context of the current initializer",paraId:1,tocIndex:1},{value:"Changed the responsibilities of ",paraId:1,tocIndex:1},{value:"useSchemaInitializer()",paraId:1,tocIndex:1},{value:" for obtaining the context of the current initializer",paraId:1,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"function SchemaInitializer",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"class SchemaInitializer",paraId:1,tocIndex:1},{value:" for defining initializer",paraId:1,tocIndex:1},{value:"Changed parameters of ",paraId:1,tocIndex:1},{value:"SchemaInitializer",paraId:1,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"name",paraId:2,tocIndex:1},{value:" required parameter for the value of ",paraId:2,tocIndex:1},{value:"x-initializer",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"Component",paraId:2,tocIndex:1},{value:" parameter for custom rendering of the button. Default is ",paraId:2,tocIndex:1},{value:"SchemaInitializerButton",paraId:2,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"componentProps",paraId:2,tocIndex:1},{value:", ",paraId:2,tocIndex:1},{value:"style",paraId:2,tocIndex:1},{value:" for configuring the properties and style of ",paraId:2,tocIndex:1},{value:"Component",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"ItemsComponent",paraId:2,tocIndex:1},{value:" parameter for custom rendering of the list. Default is ",paraId:2,tocIndex:1},{value:"SchemaInitializerItems",paraId:2,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"itemsComponentProps",paraId:2,tocIndex:1},{value:", ",paraId:2,tocIndex:1},{value:"itemsComponentStyle",paraId:2,tocIndex:1},{value:" for configuring the properties and style of ",paraId:2,tocIndex:1},{value:"ItemsComponent",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"popover",paraId:2,tocIndex:1},{value:" parameter for configuring whether to display the ",paraId:2,tocIndex:1},{value:"popover",paraId:2,tocIndex:1},{value:" effect",paraId:2,tocIndex:1},{value:"Added ",paraId:2,tocIndex:1},{value:"useInsert",paraId:2,tocIndex:1},{value:" parameter for when the ",paraId:2,tocIndex:1},{value:"insert",paraId:2,tocIndex:1},{value:" function needs to use hooks",paraId:2,tocIndex:1},{value:"Changed ",paraId:2,tocIndex:1},{value:"dropdown",paraId:2,tocIndex:1},{value:" parameter to ",paraId:2,tocIndex:1},{value:"popoverProps",paraId:2,tocIndex:1},{value:", using ",paraId:2,tocIndex:1},{value:"Popover",paraId:2,tocIndex:1},{value:" instead of ",paraId:2,tocIndex:1},{value:"Dropdown",paraId:2,tocIndex:1},{value:"Changed parameters of ",paraId:1,tocIndex:1},{value:"items",paraId:1,tocIndex:1},{value:" for ",paraId:1,tocIndex:1},{value:"SchemaInitializer",paraId:1,tocIndex:1},{value:"Added ",paraId:3,tocIndex:1},{value:"useChildren",paraId:3,tocIndex:1},{value:" function for dynamically controlling child items",paraId:3,tocIndex:1},{value:"Added ",paraId:3,tocIndex:1},{value:"componentProps",paraId:3,tocIndex:1},{value:" function for the properties of the component itself",paraId:3,tocIndex:1},{value:"Added ",paraId:3,tocIndex:1},{value:"useComponentProps",paraId:3,tocIndex:1},{value:" function for dynamically processing the props of the component",paraId:3,tocIndex:1},{value:"Changed ",paraId:3,tocIndex:1},{value:"key",paraId:3,tocIndex:1},{value:" parameter to ",paraId:3,tocIndex:1},{value:"name",paraId:3,tocIndex:1},{value:" for the unique identification of list items",paraId:3,tocIndex:1},{value:"Changed ",paraId:3,tocIndex:1},{value:"visible",paraId:3,tocIndex:1},{value:" parameter to ",paraId:3,tocIndex:1},{value:"useVisible",paraId:3,tocIndex:1},{value:" function for dynamically controlling whether to display",paraId:3,tocIndex:1},{value:"Changed ",paraId:3,tocIndex:1},{value:"component",paraId:3,tocIndex:1},{value:" parameter to ",paraId:3,tocIndex:1},{value:"Component",paraId:3,tocIndex:1},{value:" for rendering list items",paraId:3,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"SchemaInitializer.Button",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"SchemaInitializerButton",paraId:1,tocIndex:1},{value:", the default value for the Component parameter of SchemaInitializer",paraId:1,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"SchemaInitializer.Item",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"SchemaInitializerItem",paraId:1,tocIndex:1},{value:", with unchanged parameters",paraId:1,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"SchemaInitializer.ActionModal",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"SchemaInitializerActionModal",paraId:1,tocIndex:1},{value:", with unchanged parameters",paraId:1,tocIndex:1},{value:"Changed ",paraId:1,tocIndex:1},{value:"SchemaInitializer.SwitchItem",paraId:1,tocIndex:1},{value:" to ",paraId:1,tocIndex:1},{value:"SchemaInitializer.Switch",paraId:1,tocIndex:1},{value:", with unchanged parameters",paraId:1,tocIndex:1},{value:"Deleted ",paraId:1,tocIndex:1},{value:"SchemaInitializerProvider",paraId:1,tocIndex:1},{value:", replaced by ",paraId:1,tocIndex:1},{value:"SchemaInitializerManager",paraId:1,tocIndex:1},{value:"Deleted ",paraId:1,tocIndex:1},{value:"SchemaInitializer.itemWrap",paraId:1,tocIndex:1},{value:", no longer need to wrap the ",paraId:1,tocIndex:1},{value:"item",paraId:1,tocIndex:1},{value:" component",paraId:1,tocIndex:1},{value:"For more information, refer to the following documentation:",paraId:4,tocIndex:1},{value:"Plugin Development / Schema Initializer",paraId:5,tocIndex:1},{value:"API Documentation / SchemaInitializer",paraId:6,tocIndex:1},{value:"In the past, we used to get all the ",paraId:7,tocIndex:2},{value:"Initializers",paraId:7,tocIndex:2},{value:" through ",paraId:7,tocIndex:2},{value:"SchemaInitializerContext",paraId:7,tocIndex:2},{value:" and then add, delete or change them. For example, the following code adds ",paraId:7,tocIndex:2},{value:"Hello",paraId:7,tocIndex:2},{value:" to ",paraId:7,tocIndex:2},{value:"media",paraId:7,tocIndex:2},{value:" in ",paraId:7,tocIndex:2},{value:"BlockInitializers",paraId:7,tocIndex:2},{value:":",paraId:7,tocIndex:2},{value:`const items = useContext(SchemaInitializerContext); const mediaItems = items.BlockInitializers.items.find( (item) => item.key === 'media', ); @@ -12724,7 +12776,7 @@ return
-
} -`,paraId:59,tocIndex:11}],NC={},zC={title:"v0.4\uFF1A2021-04-07",toc:"menu",filename:"docs/en-US/welcome/release/v0040-changelog.md",lastUpdated:1732240239e3},FC=[{id:"v042021-04-07",depth:1,title:"v0.4\uFF1A2021-04-07"},{id:"merged",depth:2,title:"Merged"},{id:"fixed",depth:2,title:"Fixed"},{id:"commits",depth:2,title:"Commits"}],BC=[{value:"refactor: use boolean value instead of null #74",paraId:0,tocIndex:1},{value:"refactor: app middlewares 17362a8",paraId:0,tocIndex:1},{value:"chore(versions): publish packages 0.4.0-alpha.2 c2f1876",paraId:0,tocIndex:1},{value:"fix: minor problems ",paraId:0,tocIndex:1},{value:"#72",paraId:0,tocIndex:1},{value:"Develop ",paraId:0,tocIndex:1},{value:"#68",paraId:0,tocIndex:1},{value:"Feature: plugin-china-region ",paraId:0,tocIndex:1},{value:"#66",paraId:0,tocIndex:1},{value:"Feature: filter for linkTo field ",paraId:0,tocIndex:1},{value:"#64",paraId:0,tocIndex:1},{value:"fix: make default view/tab cannot be destroyed ",paraId:0,tocIndex:1},{value:"#63",paraId:0,tocIndex:1},{value:"Feature/plugin automations ",paraId:0,tocIndex:1},{value:"#65",paraId:0,tocIndex:1},{value:"Feature/action logs ",paraId:0,tocIndex:1},{value:"#62",paraId:0,tocIndex:1},{value:"Feature/action logs ",paraId:0,tocIndex:1},{value:"#61",paraId:0,tocIndex:1},{value:"Feature/destroy lock ",paraId:0,tocIndex:1},{value:"#60",paraId:0,tocIndex:1},{value:"fix: ignore some typescript error ",paraId:0,tocIndex:1},{value:"#59",paraId:0,tocIndex:1},{value:"feat: route permissions ",paraId:0,tocIndex:1},{value:"#58",paraId:0,tocIndex:1},{value:"Feature: add permission plugin api ",paraId:0,tocIndex:1},{value:"#57",paraId:0,tocIndex:1},{value:"fix: updatedBy foreignKey ",paraId:0,tocIndex:1},{value:"#56",paraId:0,tocIndex:1},{value:"feat: add permissions plugin ",paraId:0,tocIndex:1},{value:"#53",paraId:0,tocIndex:1},{value:"fix: updatedBy field in bulkUpdate hook ",paraId:0,tocIndex:1},{value:"#54",paraId:0,tocIndex:1},{value:"test: skip bug test cases for ci passing ",paraId:0,tocIndex:1},{value:"#52",paraId:0,tocIndex:1},{value:"fix: avoid bug when update other field ",paraId:0,tocIndex:1},{value:"#51",paraId:0,tocIndex:1},{value:"feat: date-only operators ",paraId:0,tocIndex:1},{value:"#50",paraId:0,tocIndex:1},{value:"Feature field for set default ",paraId:0,tocIndex:1},{value:"#49",paraId:0,tocIndex:1},{value:"Feature: custom operators for querying ",paraId:0,tocIndex:1},{value:"#48",paraId:0,tocIndex:1},{value:"fix: toInclude bug with nested associations ",paraId:0,tocIndex:1},{value:"#47",paraId:0,tocIndex:1},{value:"feat: make single file upload to attachment available ",paraId:0,tocIndex:1},{value:"#46",paraId:0,tocIndex:1},{value:"feature: add file manager base architecture ",paraId:0,tocIndex:1},{value:"#44",paraId:0,tocIndex:1},{value:"feat: add createdBy/updatedBy field config for table managed by collections ",paraId:0,tocIndex:1},{value:"#43",paraId:0,tocIndex:1},{value:"fix: use wrapped and logic for merging filters ",paraId:0,tocIndex:1},{value:"#42",paraId:0,tocIndex:1},{value:"fix: filterByFields should return same value when input == null (close 0) ",paraId:0,tocIndex:1},{value:"#41",paraId:0,tocIndex:1},{value:"fix: Symbol property could not be iterated in for-in ",paraId:0,tocIndex:1},{value:"#39",paraId:0,tocIndex:1},{value:"Feature/sort ",paraId:0,tocIndex:1},{value:"#38",paraId:0,tocIndex:1},{value:"refactor: change sort strategy from offset to targetId ",paraId:0,tocIndex:1},{value:"#37",paraId:0,tocIndex:1},{value:"Feature/sort ",paraId:0,tocIndex:1},{value:"#36",paraId:0,tocIndex:1},{value:"feat: add filter and transaction for destroy action ",paraId:0,tocIndex:1},{value:"#35",paraId:0,tocIndex:1},{value:"fix: field filter logic for create/update ",paraId:0,tocIndex:1},{value:"#34",paraId:0,tocIndex:1},{value:"Feature: action fields options for create/update ",paraId:0,tocIndex:1},{value:"#32",paraId:0,tocIndex:1},{value:"Fix: change strategy from add to set for updateAssociations ",paraId:0,tocIndex:1},{value:"#33",paraId:0,tocIndex:1},{value:"Test/ci ",paraId:0,tocIndex:1},{value:"#31",paraId:0,tocIndex:1},{value:"feat: improve collection hooks/fields/actions/views... ",paraId:0,tocIndex:1},{value:"#30",paraId:0,tocIndex:1},{value:"Fix/model update associations ",paraId:0,tocIndex:1},{value:"#29",paraId:0,tocIndex:1},{value:"fix: database test cases and table options ",paraId:0,tocIndex:1},{value:"#28",paraId:0,tocIndex:1},{value:"feat: add virtual attribute geter & setter support ",paraId:0,tocIndex:1},{value:"#27",paraId:0,tocIndex:1},{value:"feat: collection options & hooks ",paraId:0,tocIndex:1},{value:"#21",paraId:0,tocIndex:1},{value:"feat(users): add users module ",paraId:0,tocIndex:1},{value:"#26",paraId:0,tocIndex:1},{value:"feat: add sort action ",paraId:0,tocIndex:1},{value:"#22",paraId:0,tocIndex:1},{value:"Test/list ",paraId:0,tocIndex:1},{value:"#19",paraId:0,tocIndex:1},{value:"feat: pagination options ",paraId:0,tocIndex:1},{value:"#20",paraId:0,tocIndex:1},{value:"test: refactor test in database and add more ",paraId:0,tocIndex:1},{value:"#17",paraId:0,tocIndex:1},{value:"feat: actions & views ",paraId:0,tocIndex:1},{value:"#18",paraId:0,tocIndex:1},{value:"Test cases for database ",paraId:0,tocIndex:1},{value:"#16",paraId:0,tocIndex:1},{value:"Refactor: change global injection of test for actions package. ",paraId:0,tocIndex:1},{value:"#15",paraId:0,tocIndex:1},{value:"feat: improve plugins ",paraId:0,tocIndex:1},{value:"#14",paraId:0,tocIndex:1},{value:"Doc: add README.md for server. ",paraId:0,tocIndex:1},{value:"#12",paraId:0,tocIndex:1},{value:"fix: parseRequest & registerHandlers ",paraId:0,tocIndex:1},{value:"#10",paraId:0,tocIndex:1},{value:"fix #9 ",paraId:0,tocIndex:1},{value:"#11",paraId:0,tocIndex:1},{value:"feat: support register and call partial actions ",paraId:0,tocIndex:1},{value:"#7",paraId:0,tocIndex:1},{value:"\u53D1\u5E03\u6838\u5FC3\u6846\u67B6 ",paraId:0,tocIndex:1},{value:"#6",paraId:0,tocIndex:1},{value:"fix #9 (#11) ",paraId:1,tocIndex:2},{value:"#9",paraId:1,tocIndex:2},{value:" ",paraId:1,tocIndex:2},{value:"#9",paraId:1,tocIndex:2},{value:"fix: improve login form styles 5319000",paraId:1,tocIndex:2},{value:"fix: error message for login and registration 214b227",paraId:1,tocIndex:2},{value:"chore: adjust parameters ",paraId:2,tocIndex:3},{value:"b95e2da",paraId:2,tocIndex:3},{value:"first commit ",paraId:2,tocIndex:3},{value:"e5d30b3",paraId:2,tocIndex:3},{value:"style: code formatting ",paraId:2,tocIndex:3},{value:"ce4a22f",paraId:2,tocIndex:3}],jC={},HC={title:"v0.5\uFF1A2021-11-21",toc:"menu",filename:"docs/en-US/welcome/release/v0050-changelog.md",lastUpdated:1732240239e3},WC=[{id:"v052021-11-21",depth:1,title:"v0.5\uFF1A2021-11-21"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],$C=[{value:"fix: upgrade formily & side menu render with createPortal & use deep compare effect ",paraId:0,tocIndex:1},{value:"#103",paraId:0,tocIndex:1},{value:"fix: SchemaRenderer get schema value ",paraId:0,tocIndex:1},{value:"#102",paraId:0,tocIndex:1},{value:"fix: upgrade formily and form.setValues uses overwrite strategy ",paraId:0,tocIndex:1},{value:"#101",paraId:0,tocIndex:1},{value:"feat: support i18n ",paraId:0,tocIndex:1},{value:"#99",paraId:0,tocIndex:1},{value:"feat: new version of the documentation ",paraId:0,tocIndex:1},{value:"#95",paraId:0,tocIndex:1},{value:"option-tag style ",paraId:0,tocIndex:1},{value:"#92",paraId:0,tocIndex:1},{value:"create-nocobase-app: favicon ",paraId:0,tocIndex:1},{value:"#91",paraId:0,tocIndex:1},{value:"feat: create nocobase app with simple & quickstart option ",paraId:0,tocIndex:1},{value:"#87",paraId:0,tocIndex:1},{value:"feat: export plugin ",paraId:0,tocIndex:1},{value:"#73",paraId:0,tocIndex:1},{value:"v0.5 ",paraId:1,tocIndex:2},{value:"2cbcd08",paraId:1,tocIndex:2},{value:"refactor ",paraId:1,tocIndex:2},{value:"75cd158",paraId:1,tocIndex:2},{value:"feat: improve code ",paraId:1,tocIndex:2},{value:"c6b68f2",paraId:1,tocIndex:2}],GC={},VC={title:"v0.6\uFF1A2022-04-05",toc:"menu",filename:"docs/en-US/welcome/release/v0060-changelog.md",lastUpdated:1732240239e3,description:"fix: yarn.lock 7a7eb0c"},KC=[{id:"v062022-04-05",depth:1,title:"v0.6\uFF1A2022-04-05"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],ZC=[{value:"Feat: plugin-workflow ",paraId:0,tocIndex:1},{value:"#288",paraId:0,tocIndex:1},{value:"fix: slate style ",paraId:0,tocIndex:1},{value:"#289",paraId:0,tocIndex:1},{value:"fix: toJSON with belongsTo Assoication ",paraId:0,tocIndex:1},{value:"#287",paraId:0,tocIndex:1},{value:"feat: improve acl module ",paraId:0,tocIndex:1},{value:"#283",paraId:0,tocIndex:1},{value:"fix: destroy own records ",paraId:0,tocIndex:1},{value:"#285",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): support context variables from model trigger ",paraId:0,tocIndex:1},{value:"#284",paraId:0,tocIndex:1},{value:"fix: acl write ",paraId:0,tocIndex:1},{value:"#280",paraId:0,tocIndex:1},{value:"fix: call root server hook after insertNewSchema ",paraId:0,tocIndex:1},{value:"#282",paraId:0,tocIndex:1},{value:"Feat/plugin workflow ",paraId:0,tocIndex:1},{value:"#278",paraId:0,tocIndex:1},{value:"feat: acl provider ",paraId:0,tocIndex:1},{value:"#279",paraId:0,tocIndex:1},{value:"feat: add Slate component ",paraId:0,tocIndex:1},{value:"#272",paraId:0,tocIndex:1},{value:"Feat/plugin users with jwt ",paraId:0,tocIndex:1},{value:"#258",paraId:0,tocIndex:1},{value:"fix: modify antd style of default ",paraId:0,tocIndex:1},{value:"#277",paraId:0,tocIndex:1},{value:"fix(client): meet undefined error after clear filter cascader value ",paraId:0,tocIndex:1},{value:"#267",paraId:0,tocIndex:1},{value:"Feat(plugin workflow): refactor calculation and add filter for query ",paraId:0,tocIndex:1},{value:"#264",paraId:0,tocIndex:1},{value:"feat: block provider ",paraId:0,tocIndex:1},{value:"#261",paraId:0,tocIndex:1},{value:"fix: toJSON with null association ",paraId:0,tocIndex:1},{value:"#260",paraId:0,tocIndex:1},{value:"fix: error handle error ",paraId:0,tocIndex:1},{value:"#259",paraId:0,tocIndex:1},{value:"fix: textarea read pretty can support break line ",paraId:0,tocIndex:1},{value:"#255",paraId:0,tocIndex:1},{value:"fix: markdown support ellipsis ",paraId:0,tocIndex:1},{value:"#257",paraId:0,tocIndex:1},{value:"featPlugin multiple apps ",paraId:0,tocIndex:1},{value:"#248",paraId:0,tocIndex:1},{value:"add action log tempalte ",paraId:0,tocIndex:1},{value:"#239",paraId:0,tocIndex:1},{value:"fix some bugs ",paraId:0,tocIndex:1},{value:"#252",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix adding/removing node in parallel branches ",paraId:0,tocIndex:1},{value:"#253",paraId:0,tocIndex:1},{value:"Feat: client base entry of plugin workflow ",paraId:0,tocIndex:1},{value:"#225",paraId:0,tocIndex:1},{value:"fix: updateAt on move scope change ",paraId:0,tocIndex:1},{value:"#251",paraId:0,tocIndex:1},{value:"feat: get json schema with async node ",paraId:0,tocIndex:1},{value:"#246",paraId:0,tocIndex:1},{value:"feat: insertNewSchema ",paraId:0,tocIndex:1},{value:"#245",paraId:0,tocIndex:1},{value:"fix: transaction error ",paraId:0,tocIndex:1},{value:"#242",paraId:0,tocIndex:1},{value:"feat: block templates ",paraId:0,tocIndex:1},{value:"#240",paraId:0,tocIndex:1},{value:"feat: uiSchema clearAncestor ",paraId:0,tocIndex:1},{value:"#241",paraId:0,tocIndex:1},{value:"feat: init sort field values ",paraId:0,tocIndex:1},{value:"#236",paraId:0,tocIndex:1},{value:"fix: move action without alter updatedAt ",paraId:0,tocIndex:1},{value:"#235",paraId:0,tocIndex:1},{value:"feat: role check action ",paraId:0,tocIndex:1},{value:"#234",paraId:0,tocIndex:1},{value:"feat: ne operator ",paraId:0,tocIndex:1},{value:"#233",paraId:0,tocIndex:1},{value:"fix: user current role ",paraId:0,tocIndex:1},{value:"#232",paraId:0,tocIndex:1},{value:"featEnable permission ",paraId:0,tocIndex:1},{value:"#229",paraId:0,tocIndex:1},{value:"test: update reverseField ",paraId:0,tocIndex:1},{value:"#231",paraId:0,tocIndex:1},{value:"feat: kanban ",paraId:0,tocIndex:1},{value:"#230",paraId:0,tocIndex:1},{value:"Nocobase next kanban ",paraId:0,tocIndex:1},{value:"#223",paraId:0,tocIndex:1},{value:"add: test ",paraId:0,tocIndex:1},{value:"#224",paraId:0,tocIndex:1},{value:"Plugin error handler ",paraId:0,tocIndex:1},{value:"#222",paraId:0,tocIndex:1},{value:"fix: array $noneOf with null ",paraId:0,tocIndex:1},{value:"#220",paraId:0,tocIndex:1},{value:"fix: filter parser with number in key ",paraId:0,tocIndex:1},{value:"#219",paraId:0,tocIndex:1},{value:"feat: ui-schema-tree-path descendant index ",paraId:0,tocIndex:1},{value:"#218",paraId:0,tocIndex:1},{value:"fix: array operator query error ",paraId:0,tocIndex:1},{value:"#217",paraId:0,tocIndex:1},{value:"fix: operator query value ",paraId:0,tocIndex:1},{value:"#216",paraId:0,tocIndex:1},{value:"feat: string operators ",paraId:0,tocIndex:1},{value:"#215",paraId:0,tocIndex:1},{value:"feat: error handle middleware ",paraId:0,tocIndex:1},{value:"#214",paraId:0,tocIndex:1},{value:"refactor: filter schema component ",paraId:0,tocIndex:1},{value:"#213",paraId:0,tocIndex:1},{value:"fix: empty operator with $or filter ",paraId:0,tocIndex:1},{value:"#212",paraId:0,tocIndex:1},{value:"feat: plugin install ",paraId:0,tocIndex:1},{value:"#211",paraId:0,tocIndex:1},{value:"feat: sortBy through table value ",paraId:0,tocIndex:1},{value:"#209",paraId:0,tocIndex:1},{value:"Feat: plugin workflow ",paraId:0,tocIndex:1},{value:"#210",paraId:0,tocIndex:1},{value:"fix: collection fields sort ",paraId:0,tocIndex:1},{value:"#208",paraId:0,tocIndex:1},{value:"feat: sort in collection fields ",paraId:0,tocIndex:1},{value:"#207",paraId:0,tocIndex:1},{value:"fix Collection rest api ",paraId:0,tocIndex:1},{value:"#205",paraId:0,tocIndex:1},{value:"feat: non paged list ",paraId:0,tocIndex:1},{value:"#204",paraId:0,tocIndex:1},{value:"feat: finish calendar component develop ",paraId:0,tocIndex:1},{value:"#199",paraId:0,tocIndex:1},{value:"fix(dependencies): move json-template into original sub packages ",paraId:0,tocIndex:1},{value:"#203",paraId:0,tocIndex:1},{value:"Feat(plugin workflow): add more instructions ",paraId:0,tocIndex:1},{value:"#201",paraId:0,tocIndex:1},{value:"fix: getJsonSchema with properties ",paraId:0,tocIndex:1},{value:"#202",paraId:0,tocIndex:1},{value:"fix: postgres array operator ",paraId:0,tocIndex:1},{value:"#200",paraId:0,tocIndex:1},{value:"fix: postgres sort with appends issue ",paraId:0,tocIndex:1},{value:"#198",paraId:0,tocIndex:1},{value:"feat: uiSchema remove api ",paraId:0,tocIndex:1},{value:"#196",paraId:0,tocIndex:1},{value:"refactor: perPage to pageSize ",paraId:0,tocIndex:1},{value:"#197",paraId:0,tocIndex:1},{value:"fix: option parser test ",paraId:0,tocIndex:1},{value:"#195",paraId:0,tocIndex:1},{value:"fix: nest append ",paraId:0,tocIndex:1},{value:"#194",paraId:0,tocIndex:1},{value:"fix: test with database ",paraId:0,tocIndex:1},{value:"#193",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix dependencies in package ",paraId:0,tocIndex:1},{value:"#192",paraId:0,tocIndex:1},{value:"Fix: plugin-workflow test ",paraId:0,tocIndex:1},{value:"#191",paraId:0,tocIndex:1},{value:"Refactor(plugin-workflow): upgrade plugin to use abstract plugin class and fix types ",paraId:0,tocIndex:1},{value:"#190",paraId:0,tocIndex:1},{value:"fix: ui schema storage ",paraId:0,tocIndex:1},{value:"#188",paraId:0,tocIndex:1},{value:"fix: ui schema storage ",paraId:0,tocIndex:1},{value:"#187",paraId:0,tocIndex:1},{value:"fix: update guard with Model instance ",paraId:0,tocIndex:1},{value:"#186",paraId:0,tocIndex:1},{value:"fix: getProperties with order ",paraId:0,tocIndex:1},{value:"#183",paraId:0,tocIndex:1},{value:"feat(server): improve application ",paraId:0,tocIndex:1},{value:"#177",paraId:0,tocIndex:1},{value:"Feature: plugin-workflow MVP ",paraId:0,tocIndex:1},{value:"#171",paraId:0,tocIndex:1},{value:"fix(root): fix dependencies in packages to avoid building errors ",paraId:0,tocIndex:1},{value:"#178",paraId:0,tocIndex:1},{value:"Application ",paraId:0,tocIndex:1},{value:"#175",paraId:0,tocIndex:1},{value:"feat: add acl plugin ",paraId:0,tocIndex:1},{value:"#169",paraId:0,tocIndex:1},{value:"add Filter component into schema componens ",paraId:0,tocIndex:1},{value:"#176",paraId:0,tocIndex:1},{value:"feat: add Markdown component into schema components ",paraId:0,tocIndex:1},{value:"#173",paraId:0,tocIndex:1},{value:"feat: table related components ",paraId:0,tocIndex:1},{value:"#172",paraId:0,tocIndex:1},{value:"feat: add select component into schema component ",paraId:0,tocIndex:1},{value:"#168",paraId:0,tocIndex:1},{value:"feat: add TreeSelect component into schema components ",paraId:0,tocIndex:1},{value:"#167",paraId:0,tocIndex:1},{value:"Plugin acl ",paraId:0,tocIndex:1},{value:"#166",paraId:0,tocIndex:1},{value:"add upload component into schema components ",paraId:0,tocIndex:1},{value:"#165",paraId:0,tocIndex:1},{value:"migrate TimePicker component into schema components ",paraId:0,tocIndex:1},{value:"#164",paraId:0,tocIndex:1},{value:"Feat/plugin UI schema v0.6 ",paraId:0,tocIndex:1},{value:"#143",paraId:0,tocIndex:1},{value:"Feat/plugin collection manager ",paraId:0,tocIndex:1},{value:"#147",paraId:0,tocIndex:1},{value:"Acl ",paraId:0,tocIndex:1},{value:"#162",paraId:0,tocIndex:1},{value:"feat: acl ",paraId:0,tocIndex:1},{value:"#153",paraId:0,tocIndex:1},{value:"feat: add InputNumber Component into schema component ",paraId:0,tocIndex:1},{value:"#160",paraId:0,tocIndex:1},{value:"feature/nocobase next password ",paraId:0,tocIndex:1},{value:"#159",paraId:0,tocIndex:1},{value:"feat: add DatePicker into schema components ",paraId:0,tocIndex:1},{value:"#161",paraId:0,tocIndex:1},{value:"feat: add input into schema component ",paraId:0,tocIndex:1},{value:"#158",paraId:0,tocIndex:1},{value:"feat: add radio into schema component ",paraId:0,tocIndex:1},{value:"#154",paraId:0,tocIndex:1},{value:"optimize: rename checkbox component file ",paraId:0,tocIndex:1},{value:"#155",paraId:0,tocIndex:1},{value:"Nocobase next color select ",paraId:0,tocIndex:1},{value:"#157",paraId:0,tocIndex:1},{value:"feat: add async-data-provider component ",paraId:0,tocIndex:1},{value:"#151",paraId:0,tocIndex:1},{value:"feat: client v0.6 ",paraId:0,tocIndex:1},{value:"#150",paraId:0,tocIndex:1},{value:"Feat/GitHub actions ",paraId:0,tocIndex:1},{value:"#148",paraId:0,tocIndex:1},{value:"feat: filter by target key ",paraId:0,tocIndex:1},{value:"#146",paraId:0,tocIndex:1},{value:"refactor: actions ",paraId:0,tocIndex:1},{value:"#137",paraId:0,tocIndex:1},{value:"feat: context field type support ",paraId:0,tocIndex:1},{value:"#131",paraId:0,tocIndex:1},{value:"feat: database next ",paraId:0,tocIndex:1},{value:"#130",paraId:0,tocIndex:1},{value:"feat: rename resourceKey & associatedKey to resourceIndex & associatedIndex ",paraId:0,tocIndex:1},{value:"#126",paraId:0,tocIndex:1},{value:"refactor: table cell text overflow that show ellipsis ",paraId:0,tocIndex:1},{value:"#125",paraId:0,tocIndex:1},{value:"Add S3 storage and refactors ",paraId:0,tocIndex:1},{value:"#124",paraId:0,tocIndex:1},{value:"Fix: plugin-file-manager ",paraId:0,tocIndex:1},{value:"#111",paraId:0,tocIndex:1},{value:"refactor: code splitting of the table component ",paraId:0,tocIndex:1},{value:"#121",paraId:0,tocIndex:1},{value:"refactor: code splitting of the table component ",paraId:0,tocIndex:1},{value:"#120",paraId:0,tocIndex:1},{value:"feat: add reset button in the filter panel ",paraId:0,tocIndex:1},{value:"#110",paraId:0,tocIndex:1},{value:"feat: allow user to change password ",paraId:0,tocIndex:1},{value:"#109",paraId:0,tocIndex:1},{value:"fix: yarn.lock ",paraId:1,tocIndex:2},{value:"7a7eb0c",paraId:1,tocIndex:2},{value:"fix: yarn.lock ",paraId:2,tocIndex:2},{value:"e226f04",paraId:2,tocIndex:2},{value:"feat: rich text ",paraId:3,tocIndex:2},{value:"5b41b33",paraId:3,tocIndex:2},{value:"v0.6 ",paraId:4,tocIndex:2},{value:"732d310",paraId:4,tocIndex:2},{value:"create-nocobase-app template from [develop] ",paraId:5,tocIndex:2},{value:"9f4bea7",paraId:5,tocIndex:2},{value:"feat: improve view action schema initializer ",paraId:6,tocIndex:2},{value:"590ca26",paraId:6,tocIndex:2}],YC={},QC={title:"v0.7\uFF1A2022-04-25",toc:"menu",filename:"docs/en-US/welcome/release/v0070-changelog.md",lastUpdated:1732240239e3},JC=[{id:"v072022-04-25",depth:1,title:"v0.7\uFF1A2022-04-25"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],XC=[{value:"feat(client,sdk): improve api client ",paraId:0,tocIndex:1},{value:"#425",paraId:0,tocIndex:1},{value:"feat: add create-plugin command ",paraId:0,tocIndex:1},{value:"#423",paraId:0,tocIndex:1},{value:"feat: add button color ",paraId:0,tocIndex:1},{value:"#420",paraId:0,tocIndex:1},{value:"fix: 204 no content response ",paraId:0,tocIndex:1},{value:"#378",paraId:0,tocIndex:1},{value:"feat: destroy association field after target collection destroy ",paraId:0,tocIndex:1},{value:"#376",paraId:0,tocIndex:1},{value:"fix(type): use sequelize native Transactionable instead of TransactionAble ",paraId:0,tocIndex:1},{value:"#410",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): remove previous listeners when collection changed in config ",paraId:0,tocIndex:1},{value:"#409",paraId:0,tocIndex:1},{value:"feat: add custom action ",paraId:0,tocIndex:1},{value:"#396",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): multiple instances and event management (fix #384) ",paraId:0,tocIndex:1},{value:"#408",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix node type title in drawers ",paraId:0,tocIndex:1},{value:"#389",paraId:0,tocIndex:1},{value:"Fix(plugin workflow): fix cannot get job result properties ",paraId:0,tocIndex:1},{value:"#382",paraId:0,tocIndex:1},{value:"feat: exist on server start throw error ",paraId:0,tocIndex:1},{value:"#374",paraId:0,tocIndex:1},{value:"chore: application options ",paraId:0,tocIndex:1},{value:"#375",paraId:0,tocIndex:1},{value:"fix: not in operator with null value record ",paraId:0,tocIndex:1},{value:"#377",paraId:0,tocIndex:1},{value:"Feat(plugin workflow): revisions ",paraId:0,tocIndex:1},{value:"#379",paraId:0,tocIndex:1},{value:"fix(database): fix option-parser include list index ",paraId:0,tocIndex:1},{value:"#371",paraId:0,tocIndex:1},{value:"fix(plugin-worklfow): fix duplicated description in fields values ",paraId:0,tocIndex:1},{value:"#368",paraId:0,tocIndex:1},{value:"fix(database): fix type and transaction in repository ",paraId:0,tocIndex:1},{value:"#366",paraId:0,tocIndex:1},{value:"Fix(plugin workflow): fix transaction of execution ",paraId:0,tocIndex:1},{value:"#364",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): add document title ",paraId:0,tocIndex:1},{value:"#363",paraId:0,tocIndex:1},{value:"fix: set visible with confirm ",paraId:0,tocIndex:1},{value:"#361",paraId:0,tocIndex:1},{value:"fix: empty resource acl error ",paraId:0,tocIndex:1},{value:"#357",paraId:0,tocIndex:1},{value:"Feat: from values changed when unsaved will prompt ",paraId:0,tocIndex:1},{value:"#351",paraId:0,tocIndex:1},{value:"fix: modify filter close icon color ",paraId:0,tocIndex:1},{value:"#356",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix i18n ",paraId:0,tocIndex:1},{value:"#354",paraId:0,tocIndex:1},{value:"Fix(plugin-workflow) ",paraId:0,tocIndex:1},{value:"#353",paraId:0,tocIndex:1},{value:"fix(plugin-file-manager): upgrade multer-aliyun-oss package to fix size ",paraId:0,tocIndex:1},{value:"#352",paraId:0,tocIndex:1},{value:"feat: improve code ",paraId:0,tocIndex:1},{value:"#350",paraId:0,tocIndex:1},{value:"Fix/plugin workflow ",paraId:0,tocIndex:1},{value:"#349",paraId:0,tocIndex:1},{value:"fix: db:sync not working ",paraId:0,tocIndex:1},{value:"#348",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix trigger bind logic to avoid duplication ",paraId:0,tocIndex:1},{value:"#347",paraId:0,tocIndex:1},{value:"Fix(plugin workflow) ",paraId:0,tocIndex:1},{value:"#346",paraId:0,tocIndex:1},{value:"Fix:menu url style ",paraId:0,tocIndex:1},{value:"#344",paraId:0,tocIndex:1},{value:"chore(plugin-workflow): add translation ",paraId:0,tocIndex:1},{value:"#345",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): break cycling trigger through transaction id ",paraId:0,tocIndex:1},{value:"#341",paraId:0,tocIndex:1},{value:"fix: model.beforeCreate not called ",paraId:0,tocIndex:1},{value:"#343",paraId:0,tocIndex:1},{value:"fix: thumbnail image in kanban card ",paraId:0,tocIndex:1},{value:"#338",paraId:0,tocIndex:1},{value:"feat: db authenticate ",paraId:0,tocIndex:1},{value:"#342",paraId:0,tocIndex:1},{value:"chore: install subApp asynchronous ",paraId:0,tocIndex:1},{value:"#336",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): change collection values input ux in workflow nodes ",paraId:0,tocIndex:1},{value:"#340",paraId:0,tocIndex:1},{value:"feat: improvements ",paraId:0,tocIndex:1},{value:"#335",paraId:0,tocIndex:1},{value:"Feat(plugin workflow): add changed fields to model trigger config ",paraId:0,tocIndex:1},{value:"#332",paraId:0,tocIndex:1},{value:"fix: create-nocobase-app compatibility ",paraId:0,tocIndex:1},{value:"#323",paraId:0,tocIndex:1},{value:"fix: create-nocobase-app client package version ",paraId:0,tocIndex:1},{value:"#321",paraId:0,tocIndex:1},{value:"fix: app manager ",paraId:0,tocIndex:1},{value:"#320",paraId:0,tocIndex:1},{value:"refactor: modify default lable style ",paraId:0,tocIndex:1},{value:"#318",paraId:0,tocIndex:1},{value:"Fix multiple apps ",paraId:0,tocIndex:1},{value:"#317",paraId:0,tocIndex:1},{value:"Fix multiple apps ",paraId:0,tocIndex:1},{value:"#316",paraId:0,tocIndex:1},{value:"Fix acl target action error ",paraId:0,tocIndex:1},{value:"#311",paraId:0,tocIndex:1},{value:"feat: file storages ",paraId:0,tocIndex:1},{value:"#314",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix some ux ",paraId:0,tocIndex:1},{value:"#313",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix query node getter field ",paraId:0,tocIndex:1},{value:"#308",paraId:0,tocIndex:1},{value:"Fix create nocobase app ",paraId:0,tocIndex:1},{value:"#307",paraId:0,tocIndex:1},{value:"fix: create-nocobase-app ",paraId:0,tocIndex:1},{value:"#306",paraId:0,tocIndex:1},{value:"Fix create nocobase app ",paraId:0,tocIndex:1},{value:"#305",paraId:0,tocIndex:1},{value:"fix: block item add overflow:hidden ",paraId:0,tocIndex:1},{value:"#304",paraId:0,tocIndex:1},{value:"feat(license): replace MIT license with Apache-2.0 ",paraId:1,tocIndex:2},{value:"717efa8",paraId:1,tocIndex:2},{value:"feat: translations ",paraId:1,tocIndex:2},{value:"5c0184a",paraId:1,tocIndex:2},{value:"feat: translations ",paraId:1,tocIndex:2},{value:"1f04f90",paraId:1,tocIndex:2},{value:"feat: kanban disableCardDrag ",paraId:2,tocIndex:2},{value:"05a251b",paraId:2,tocIndex:2}],eA={},aA={title:"v0.7.1\uFF1A2022-06-26",toc:"menu",filename:"docs/en-US/welcome/release/v0071-changelog.md",lastUpdated:1732240239e3},tA=[{id:"v0712022-06-26",depth:1,title:"v0.7.1\uFF1A2022-06-26"},{id:"merged",depth:2,title:"Merged"},{id:"fixed",depth:2,title:"Fixed"},{id:"commits",depth:2,title:"Commits"}],nA=[{value:"chore(create-nocobase-app): fix some bugs ",paraId:0,tocIndex:1},{value:"#538",paraId:0,tocIndex:1},{value:"fix: destroy collection fields ",paraId:0,tocIndex:1},{value:"#536",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add delay node type ",paraId:0,tocIndex:1},{value:"#532",paraId:0,tocIndex:1},{value:"refactor: client application ",paraId:0,tocIndex:1},{value:"#533",paraId:0,tocIndex:1},{value:"fix: missing transaction ",paraId:0,tocIndex:1},{value:"#531",paraId:0,tocIndex:1},{value:"fix: add ellipsis property to record picker ",paraId:0,tocIndex:1},{value:"#527",paraId:0,tocIndex:1},{value:"fix: remove pattern without form item ",paraId:0,tocIndex:1},{value:"#528",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): set current when update ",paraId:0,tocIndex:1},{value:"#526",paraId:0,tocIndex:1},{value:"fix: order nulls last ",paraId:0,tocIndex:1},{value:"#519",paraId:0,tocIndex:1},{value:"fix: action loading, refresh context, form submit and validate ",paraId:0,tocIndex:1},{value:"#523",paraId:0,tocIndex:1},{value:"Fix field pattern ",paraId:0,tocIndex:1},{value:"#520",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix searchable select min-width ",paraId:0,tocIndex:1},{value:"#524",paraId:0,tocIndex:1},{value:"fix: template with fields only ",paraId:0,tocIndex:1},{value:"#517",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix update workflow current property ",paraId:0,tocIndex:1},{value:"#521",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): abstract to classes ",paraId:0,tocIndex:1},{value:"#515",paraId:0,tocIndex:1},{value:"feat: column sortable and form item pattern ",paraId:0,tocIndex:1},{value:"#518",paraId:0,tocIndex:1},{value:"fix(custom-request): support string/json templates ",paraId:0,tocIndex:1},{value:"#514",paraId:0,tocIndex:1},{value:"feat: add block title ",paraId:0,tocIndex:1},{value:"#513",paraId:0,tocIndex:1},{value:"fix: remove collections & fields from db ",paraId:0,tocIndex:1},{value:"#511",paraId:0,tocIndex:1},{value:"feat: improve migrations ",paraId:0,tocIndex:1},{value:"#510",paraId:0,tocIndex:1},{value:"fix(client): consolidate usage of date/time as UTC in transfering ",paraId:0,tocIndex:1},{value:"#509",paraId:0,tocIndex:1},{value:"fix: formula bug ",paraId:0,tocIndex:1},{value:"#508",paraId:0,tocIndex:1},{value:"fix: default exportable fields ",paraId:0,tocIndex:1},{value:"#506",paraId:0,tocIndex:1},{value:"feat: association field block ",paraId:0,tocIndex:1},{value:"#493",paraId:0,tocIndex:1},{value:"feat: plugin export ",paraId:0,tocIndex:1},{value:"#479",paraId:0,tocIndex:1},{value:"fix(client): package path (fix #503) ",paraId:0,tocIndex:1},{value:"#504",paraId:0,tocIndex:1},{value:"fix: create or delete collection error ",paraId:0,tocIndex:1},{value:"#501",paraId:0,tocIndex:1},{value:"feat: update collections & fields ",paraId:0,tocIndex:1},{value:"#500",paraId:0,tocIndex:1},{value:"fix: rollback when field creation fails ",paraId:0,tocIndex:1},{value:"#498",paraId:0,tocIndex:1},{value:"fix(client): set ",paraId:0,tocIndex:1},{value:"dropdownMatchSelectWidth",paraId:0,tocIndex:1},{value:" to false globally ",paraId:0,tocIndex:1},{value:"#497",paraId:0,tocIndex:1},{value:"fix(client): no-key warning in user menu items ",paraId:0,tocIndex:1},{value:"#496",paraId:0,tocIndex:1},{value:"Feat(plugin workflow): cron field for schedule trigger configuration ",paraId:0,tocIndex:1},{value:"#495",paraId:0,tocIndex:1},{value:"feat: audit logs ",paraId:0,tocIndex:1},{value:"#494",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): add revision column to execution ",paraId:0,tocIndex:1},{value:"#491",paraId:0,tocIndex:1},{value:"feat: relation field uiSchema ",paraId:0,tocIndex:1},{value:"#487",paraId:0,tocIndex:1},{value:"feat: change FK to input component ",paraId:0,tocIndex:1},{value:"#488",paraId:0,tocIndex:1},{value:"fix(plugin-multi-app-manager): fix pg cannot create database block tests ",paraId:0,tocIndex:1},{value:"#486",paraId:0,tocIndex:1},{value:"refactor(database): hook proxy ",paraId:0,tocIndex:1},{value:"#402",paraId:0,tocIndex:1},{value:"feat: chart blocks ",paraId:0,tocIndex:1},{value:"#484",paraId:0,tocIndex:1},{value:"Refactor(plugin workflow): support number in repeat config for schedule ",paraId:0,tocIndex:1},{value:"#482",paraId:0,tocIndex:1},{value:"chore(debug): add debug config ",paraId:0,tocIndex:1},{value:"#475",paraId:0,tocIndex:1},{value:"fix: has one bug ",paraId:0,tocIndex:1},{value:"#478",paraId:0,tocIndex:1},{value:"feat: relationships ",paraId:0,tocIndex:1},{value:"#473",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix collection trigger transaction ",paraId:0,tocIndex:1},{value:"#474",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): temporary solution for collection trigger conditions ",paraId:0,tocIndex:1},{value:"#472",paraId:0,tocIndex:1},{value:"fix: markdown component ",paraId:0,tocIndex:1},{value:"#469",paraId:0,tocIndex:1},{value:"fix: formula field and percent field ",paraId:0,tocIndex:1},{value:"#467",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix update workflow action ",paraId:0,tocIndex:1},{value:"#464",paraId:0,tocIndex:1},{value:"fix: update formula field and percent field ",paraId:0,tocIndex:1},{value:"#461",paraId:0,tocIndex:1},{value:"feat: add formula field type ",paraId:0,tocIndex:1},{value:"#457",paraId:0,tocIndex:1},{value:"fix: the details of the associated data in the subtable are not displayed ",paraId:0,tocIndex:1},{value:"#454",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix languages ",paraId:0,tocIndex:1},{value:"#451",paraId:0,tocIndex:1},{value:"fix: afterSync hook not triggered ",paraId:0,tocIndex:1},{value:"#450",paraId:0,tocIndex:1},{value:"docs(various): Improve readability ",paraId:0,tocIndex:1},{value:"#447",paraId:0,tocIndex:1},{value:"feat: custom request ",paraId:0,tocIndex:1},{value:"#439",paraId:0,tocIndex:1},{value:"Feat(plugin workflow): schedule trigger ",paraId:0,tocIndex:1},{value:"#438",paraId:0,tocIndex:1},{value:"feat: db migrator ",paraId:0,tocIndex:1},{value:"#432",paraId:0,tocIndex:1},{value:"fix(client): select component cannot be opened in sub-table block ",paraId:0,tocIndex:1},{value:"#431",paraId:0,tocIndex:1},{value:"docs(github): change to markdown format ",paraId:0,tocIndex:1},{value:"#430",paraId:0,tocIndex:1},{value:"fix(cli): typo ",paraId:0,tocIndex:1},{value:"#429",paraId:0,tocIndex:1},{value:"fix(client): package path (fix #503) (#504) ",paraId:1,tocIndex:2},{value:"#503",paraId:1,tocIndex:2},{value:"feat(client): update locales ",paraId:2,tocIndex:3},{value:"e57e60e",paraId:2,tocIndex:3},{value:"docs: update doc ",paraId:2,tocIndex:3},{value:"e5cb948",paraId:2,tocIndex:3},{value:"fix(client): improve datepicker component, date with time zone, gmt support ",paraId:2,tocIndex:3},{value:"1c03fbb",paraId:2,tocIndex:3}],oA={},rA={title:"v0.7.2\uFF1A2022-07-05",toc:"menu",filename:"docs/en-US/welcome/release/v0072-changelog.md",lastUpdated:1732240239e3},dA=[{id:"v0722022-07-05",depth:1,title:"v0.7.2\uFF1A2022-07-05"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],iA=[{value:"chore(versions): \u{1F60A} publish v0.7.2-alpha.1 ",paraId:0,tocIndex:1},{value:"#578",paraId:0,tocIndex:1},{value:"fix: drop all foreign keys ",paraId:0,tocIndex:1},{value:"#576",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix collection trigger config ",paraId:0,tocIndex:1},{value:"#575",paraId:0,tocIndex:1},{value:"feat: filter with variable ",paraId:0,tocIndex:1},{value:"#574",paraId:0,tocIndex:1},{value:"feat(cli): check database version before installation ",paraId:0,tocIndex:1},{value:"#572",paraId:0,tocIndex:1},{value:"fix(database): index invalid ",paraId:0,tocIndex:1},{value:"#564",paraId:0,tocIndex:1},{value:"fix: export association table data ",paraId:0,tocIndex:1},{value:"#561",paraId:0,tocIndex:1},{value:"Refactor(plugin workflow): move client files into plugin ",paraId:0,tocIndex:1},{value:"#556",paraId:0,tocIndex:1},{value:"fix(database): constraints default to false ",paraId:0,tocIndex:1},{value:"#550",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix select width ",paraId:0,tocIndex:1},{value:"#552",paraId:0,tocIndex:1},{value:"feat: compatible with old kanban ",paraId:0,tocIndex:1},{value:"#553",paraId:0,tocIndex:1},{value:"feat: display association fields ",paraId:0,tocIndex:1},{value:"#512",paraId:0,tocIndex:1},{value:"Fix(plugin workflow) ",paraId:0,tocIndex:1},{value:"#549",paraId:0,tocIndex:1},{value:"fix:update mysql port ",paraId:0,tocIndex:1},{value:"#548",paraId:0,tocIndex:1},{value:"fix: export of relation blocks ",paraId:0,tocIndex:1},{value:"#546",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): clear options when change collection ",paraId:0,tocIndex:1},{value:"#547",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add race mode ",paraId:0,tocIndex:1},{value:"#542",paraId:0,tocIndex:1},{value:"fix(client): change toArr to _.castArray in select component ",paraId:0,tocIndex:1},{value:"#543",paraId:0,tocIndex:1},{value:"chore(versions): \u{1F60A} publish v0.7.1-alpha.7 ",paraId:0,tocIndex:1},{value:"#539",paraId:0,tocIndex:1},{value:"fix(client): comment out useless code ",paraId:1,tocIndex:2},{value:"4e9384b",paraId:1,tocIndex:2},{value:"fix(workflow): merge workflow providers ",paraId:1,tocIndex:2},{value:"008a7f7",paraId:1,tocIndex:2},{value:"feat(client): integer field ",paraId:1,tocIndex:2},{value:"9928424",paraId:1,tocIndex:2}],lA={},cA={title:"v0.7.3\uFF1A2022-07-10",toc:"menu",filename:"docs/en-US/welcome/release/v0073-changelog.md",lastUpdated:1732240239e3},sA=[{id:"v0732022-07-10",depth:1,title:"v0.7.3\uFF1A2022-07-10"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],uA=[{value:"chore(versions): \u{1F60A} publish v0.7.3-alpha.1 ",paraId:0,tocIndex:1},{value:"#657",paraId:0,tocIndex:1},{value:"feat: print action ",paraId:0,tocIndex:1},{value:"#652",paraId:0,tocIndex:1},{value:"feat: restore action-hooks ",paraId:0,tocIndex:1},{value:"#655",paraId:0,tocIndex:1},{value:"feat: collections&fields pagination issue ",paraId:0,tocIndex:1},{value:"#653",paraId:0,tocIndex:1},{value:"fix(core): change proxied agent methods to native ",paraId:0,tocIndex:1},{value:"#654",paraId:0,tocIndex:1},{value:"feat: remove table field details actions ",paraId:0,tocIndex:1},{value:"#638",paraId:0,tocIndex:1},{value:"fix: link to default value ",paraId:0,tocIndex:1},{value:"#641",paraId:0,tocIndex:1},{value:"feat: support for displaying relational table fields in details or form blocks ",paraId:0,tocIndex:1},{value:"#635",paraId:0,tocIndex:1},{value:"fix: record picker cannot select from different pages ",paraId:0,tocIndex:1},{value:"#623",paraId:0,tocIndex:1},{value:"fix: dragging an element to the left, right, or bottom would cause the element to disappear ",paraId:0,tocIndex:1},{value:"#620",paraId:0,tocIndex:1},{value:"feat: table action add reload button ",paraId:0,tocIndex:1},{value:"#630",paraId:0,tocIndex:1},{value:"feat: improve language settings ",paraId:0,tocIndex:1},{value:"#627",paraId:0,tocIndex:1},{value:"feat: field assignment for custom actions supports string variables ",paraId:0,tocIndex:1},{value:"#597",paraId:0,tocIndex:1},{value:"fix: skip recursive remove on grid component ",paraId:0,tocIndex:1},{value:"#621",paraId:0,tocIndex:1},{value:"feat: fix time and collection pagination ",paraId:0,tocIndex:1},{value:"#618",paraId:0,tocIndex:1},{value:"feat: recordblockinitializers fields pick ",paraId:0,tocIndex:1},{value:"#558",paraId:0,tocIndex:1},{value:"fix: incorrectly :active background ",paraId:0,tocIndex:1},{value:"#607",paraId:0,tocIndex:1},{value:"fix: obo table selector ",paraId:0,tocIndex:1},{value:"#613",paraId:0,tocIndex:1},{value:"feat: form validator ",paraId:0,tocIndex:1},{value:"#569",paraId:0,tocIndex:1},{value:"fix: table selector ",paraId:0,tocIndex:1},{value:"#612",paraId:0,tocIndex:1},{value:"chore(versions): \u{1F60A} publish v0.7.2-alpha.7 ",paraId:0,tocIndex:1},{value:"#611",paraId:0,tocIndex:1},{value:"chore(versions): \u{1F60A} publish v0.7.2-alpha.3 ",paraId:0,tocIndex:1},{value:"#608",paraId:0,tocIndex:1},{value:"chore(versions): \u{1F60A} publish v0.7.2-alpha.2 ",paraId:0,tocIndex:1},{value:"#606",paraId:0,tocIndex:1},{value:"fix(client): build error ",paraId:1,tocIndex:2},{value:"600f13f",paraId:1,tocIndex:2},{value:"fix(client): blocks are deleted when they are dragged below the current block ",paraId:1,tocIndex:2},{value:"20ab8c1",paraId:1,tocIndex:2},{value:"feat(client): plugin toolbar icons and translations ",paraId:1,tocIndex:2},{value:"c51c6c0",paraId:1,tocIndex:2}],pA={},IA={title:"v0.7.4\uFF1A2022-08-12",toc:"menu",filename:"docs/en-US/welcome/release/v0074-changelog.md",lastUpdated:1732240239e3},_A=[{id:"v0742022-08-12",depth:1,title:"v0.7.4\uFF1A2022-08-12"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],vA=[{value:"chore(versions): \u{1F60A} publish v0.7.4-alpha.4 ",paraId:0,tocIndex:1},{value:"#727",paraId:0,tocIndex:1},{value:"fix: sync table sort to export ",paraId:0,tocIndex:1},{value:"#723",paraId:0,tocIndex:1},{value:"feat: full version of the NocoBase dockerfile ",paraId:0,tocIndex:1},{value:"#719",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix extend collection ",paraId:0,tocIndex:1},{value:"#708",paraId:0,tocIndex:1},{value:"fix: DB_TABLE_PREFIX doesn't get applied ",paraId:0,tocIndex:1},{value:"#710",paraId:0,tocIndex:1},{value:"feat: default value ",paraId:0,tocIndex:1},{value:"#679",paraId:0,tocIndex:1},{value:"fix: required field delete submit error (#688) ",paraId:0,tocIndex:1},{value:"#694",paraId:0,tocIndex:1},{value:"chore(versions): \u{1F60A} publish v0.7.4-alpha.1 ",paraId:0,tocIndex:1},{value:"#696",paraId:0,tocIndex:1},{value:"fix: append roles to current user ",paraId:0,tocIndex:1},{value:"#695",paraId:0,tocIndex:1},{value:"fix: fix date format ",paraId:0,tocIndex:1},{value:"#686",paraId:0,tocIndex:1},{value:"test(plugin-workflow): skip prompt tests ",paraId:0,tocIndex:1},{value:"#692",paraId:0,tocIndex:1},{value:"fix: fix accuracy of percent ",paraId:0,tocIndex:1},{value:"#685",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): adjust await sleep time for test cases ",paraId:0,tocIndex:1},{value:"#691",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add assignees config for prompt instruction ",paraId:0,tocIndex:1},{value:"#690",paraId:0,tocIndex:1},{value:"fix: role export button display (#616) ",paraId:0,tocIndex:1},{value:"#666",paraId:0,tocIndex:1},{value:"feat: uid validate ",paraId:0,tocIndex:1},{value:"#681",paraId:0,tocIndex:1},{value:"refactor: replace react-drag-listview with @dnd-kit/sortable ",paraId:0,tocIndex:1},{value:"#660",paraId:0,tocIndex:1},{value:"refactor(plugin-users): improve extendibility of middlewares ",paraId:0,tocIndex:1},{value:"#677",paraId:0,tocIndex:1},{value:"feat: o2m delete not refresh ",paraId:0,tocIndex:1},{value:"#646",paraId:0,tocIndex:1},{value:"feat: kanban add description ",paraId:0,tocIndex:1},{value:"#659",paraId:0,tocIndex:1},{value:"fix: field loss enum ",paraId:0,tocIndex:1},{value:"#667",paraId:0,tocIndex:1},{value:"feat: add editor hot key Ctrl+Shift+U ",paraId:0,tocIndex:1},{value:"#675",paraId:0,tocIndex:1},{value:"fix: Fix calendar change field error (#626) ",paraId:0,tocIndex:1},{value:"#671",paraId:0,tocIndex:1},{value:"chore: fix eslint not work ",paraId:0,tocIndex:1},{value:"#670",paraId:0,tocIndex:1},{value:"feat: number precision ",paraId:0,tocIndex:1},{value:"#661",paraId:0,tocIndex:1},{value:"feat: nginx config ",paraId:0,tocIndex:1},{value:"#664",paraId:0,tocIndex:1},{value:"feat: form item designer form switch issue ",paraId:0,tocIndex:1},{value:"#656",paraId:0,tocIndex:1},{value:"feat: add examples ",paraId:1,tocIndex:2},{value:"b848b9c",paraId:1,tocIndex:2},{value:"fix: record provider required for read pretty ",paraId:1,tocIndex:2},{value:"38c3e3e",paraId:1,tocIndex:2},{value:"Update README.zh-CN.md ",paraId:1,tocIndex:2},{value:"ba0e618",paraId:1,tocIndex:2},{value:"fix(client): fieldNames of RecordPicker ",paraId:1,tocIndex:2},{value:"9038d11",paraId:1,tocIndex:2},{value:"fix(client): required for the sub-table field ",paraId:1,tocIndex:2},{value:"609b0e2",paraId:1,tocIndex:2},{value:"feat(client): tab icon ",paraId:1,tocIndex:2},{value:"d9b2bf8",paraId:1,tocIndex:2}],mA={},hA={title:"v0.7.5\uFF1A2022-10-16",toc:"menu",filename:"docs/en-US/welcome/release/v0075-changelog.md",lastUpdated:1732240239e3},fA=[{id:"v0752022-10-16",depth:1,title:"v0.7.5\uFF1A2022-10-16"},{id:"merged",depth:2,title:"Merged"},{id:"fixed",depth:2,title:"Fixed"},{id:"commits",depth:2,title:"Commits"}],xA=[{value:"chore(versions): \u{1F60A} publish v0.7.5-alpha.1 ",paraId:0,tocIndex:1},{value:"#920",paraId:0,tocIndex:1},{value:"Feat: plugin workflow collection field ",paraId:0,tocIndex:1},{value:"#919",paraId:0,tocIndex:1},{value:"feat: create with array of values ",paraId:0,tocIndex:1},{value:"#912",paraId:0,tocIndex:1},{value:"fix: unbind on error throwing ",paraId:0,tocIndex:1},{value:"#914",paraId:0,tocIndex:1},{value:"fix: appends merge now using primary key ",paraId:0,tocIndex:1},{value:"#911",paraId:0,tocIndex:1},{value:"feat: limit database identifier ",paraId:0,tocIndex:1},{value:"#908",paraId:0,tocIndex:1},{value:"fix: sync collection field default value ",paraId:0,tocIndex:1},{value:"#907",paraId:0,tocIndex:1},{value:"fix: appends merge includes ",paraId:0,tocIndex:1},{value:"#905",paraId:0,tocIndex:1},{value:"fix: single relation repository appends query issue ",paraId:0,tocIndex:1},{value:"#901",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add concat calculator ",paraId:0,tocIndex:1},{value:"#894",paraId:0,tocIndex:1},{value:"fix(client/record-picker): support record-picker show format DataPicker ",paraId:0,tocIndex:1},{value:"#888",paraId:0,tocIndex:1},{value:"fix(client/block-select-collection): fix select collection menu view error ",paraId:0,tocIndex:1},{value:"#889",paraId:0,tocIndex:1},{value:"fix: unable to submit form during file upload ",paraId:0,tocIndex:1},{value:"#892",paraId:0,tocIndex:1},{value:"fix: run test by jest ",paraId:0,tocIndex:1},{value:"#891",paraId:0,tocIndex:1},{value:"feat(collection-manager): inverse fields can be configured ",paraId:0,tocIndex:1},{value:"#883",paraId:0,tocIndex:1},{value:"fix(formula): support integer and fix NaN error ",paraId:0,tocIndex:1},{value:"#879",paraId:0,tocIndex:1},{value:"fix: sort parameter is missing ",paraId:0,tocIndex:1},{value:"#849",paraId:0,tocIndex:1},{value:"fix: slow join query issued by appends field in find method of repository ",paraId:0,tocIndex:1},{value:"#845",paraId:0,tocIndex:1},{value:"feat(core/cache): support cache ",paraId:0,tocIndex:1},{value:"#876",paraId:0,tocIndex:1},{value:"feat: update option must have filter or filterByTk ",paraId:0,tocIndex:1},{value:"#847",paraId:0,tocIndex:1},{value:"added Russian translation ",paraId:0,tocIndex:1},{value:"#840",paraId:0,tocIndex:1},{value:"feat(database): add sequence field type ",paraId:0,tocIndex:1},{value:"#779",paraId:0,tocIndex:1},{value:"fix: can't access pages without permission via url ",paraId:0,tocIndex:1},{value:"#826",paraId:0,tocIndex:1},{value:"refactor(resourcer): combine middleware class ",paraId:0,tocIndex:1},{value:"#825",paraId:0,tocIndex:1},{value:"refactor(database): fix some fields and types ",paraId:0,tocIndex:1},{value:"#820",paraId:0,tocIndex:1},{value:"feat(locale): added Japanese translation ",paraId:0,tocIndex:1},{value:"#813",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix value type for DatePicker to moment (#815) ",paraId:0,tocIndex:1},{value:"#819",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): export client calculators registry ",paraId:0,tocIndex:1},{value:"#816",paraId:0,tocIndex:1},{value:"fix: number storage type changed to double ",paraId:0,tocIndex:1},{value:"#810",paraId:0,tocIndex:1},{value:"refactor(server) ",paraId:0,tocIndex:1},{value:"#795",paraId:0,tocIndex:1},{value:"fix(plugin-verification): change provider rate limit error to 429 ",paraId:0,tocIndex:1},{value:"#788",paraId:0,tocIndex:1},{value:"fix(plugin-cm): fix field disappear after failed to update ",paraId:0,tocIndex:1},{value:"#773",paraId:0,tocIndex:1},{value:"fix: fix uiSchema undefined ",paraId:0,tocIndex:1},{value:"#770",paraId:0,tocIndex:1},{value:"fix(plugin-cm): fix unique option default value to update ",paraId:0,tocIndex:1},{value:"#768",paraId:0,tocIndex:1},{value:"fix(plugin-users): fix update profile 500 (#766) ",paraId:0,tocIndex:1},{value:"#767",paraId:0,tocIndex:1},{value:"fix: mysql column in where clause is ambiguous ",paraId:0,tocIndex:1},{value:"#756",paraId:0,tocIndex:1},{value:"feat(plugin-cm): add unique option for base fields ",paraId:0,tocIndex:1},{value:"#745",paraId:0,tocIndex:1},{value:"feat(plugin-verification): add plugin-verification and phone for users ",paraId:0,tocIndex:1},{value:"#722",paraId:0,tocIndex:1},{value:"feat: resize grid columns with drag and drop ",paraId:0,tocIndex:1},{value:"#748",paraId:0,tocIndex:1},{value:"refactor(client): split schema-initializer items into multiple files ",paraId:0,tocIndex:1},{value:"#744",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): change files mode to 644 ",paraId:0,tocIndex:1},{value:"#755",paraId:0,tocIndex:1},{value:"fix: db version check ",paraId:0,tocIndex:1},{value:"#749",paraId:0,tocIndex:1},{value:"feat: add examples ",paraId:0,tocIndex:1},{value:"#718",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix value type for DatePicker to moment (#815) (#819) ",paraId:1,tocIndex:2},{value:"#815",paraId:1,tocIndex:2},{value:"fix(plugin-users): fix update profile 500 (#766) (#767) ",paraId:1,tocIndex:2},{value:"#766",paraId:1,tocIndex:2},{value:"fix: db version check (#749) ",paraId:1,tocIndex:2},{value:"#742",paraId:1,tocIndex:2},{value:"fix(client): tab pane initializers for create form block ",paraId:2,tocIndex:3},{value:"7efc4bc",paraId:2,tocIndex:3},{value:"fix: transaction cannot be rolled back because it has been finished with state: rollback ",paraId:2,tocIndex:3},{value:"6dacec4",paraId:2,tocIndex:3},{value:"fix(database): fix the index name too long error ",paraId:2,tocIndex:3},{value:"7bfe6b8",paraId:2,tocIndex:3}],gA={},bA={title:"v0.8\uFF1A2022-11-01",toc:"menu",filename:"docs/en-US/welcome/release/v0080-changelog.md",lastUpdated:1732240239e3,description:"Starting with v0.8, NocoBase begins to provide an available plugin manager and development documentation. Here are the main changes in v0.8."},yA=[{id:"v082022-11-01",depth:1,title:"v0.8\uFF1A2022-11-01"},{id:"tweaks-to-the-top-right-corner-of-the-interface",depth:2,title:"Tweaks to the top right corner of the interface"},{id:"the-new-plugin-manager",depth:2,title:"The new plugin manager"},{id:"plugin-manager-flow",depth:3,title:"Plugin manager flow"},{id:"plugin-manager-interface",depth:3,title:"Plugin Manager interface"},{id:"plugin-manager-command",depth:3,title:"Plugin Manager command"},{id:"changes-of-plugin",depth:2,title:"Changes of plugin"},{id:"plugins-directory-structure",depth:3,title:"Plugin\u2019s directory structure"},{id:"plugins-name-specification",depth:3,title:"Plugin\u2019s name specification"},{id:"plugins-lifecycle",depth:3,title:"Plugin\u2019s lifecycle"},{id:"front--and-back-end-entrance-for-plugins",depth:3,title:"Front- and back-end entrance for plugins"},{id:"custom-business-code",depth:2,title:"Custom business code"},{id:"more-complete-documentation-is-provided",depth:2,title:"More complete documentation is provided"},{id:"more-plugin-examples-are-provided",depth:2,title:"More plugin examples are provided"},{id:"other-new-features-and-functionality",depth:2,title:"Other new features and functionality"}],wA=[{value:"Starting with v0.8, NocoBase begins to provide an available plugin manager and development documentation. Here are the main changes in v0.8.",paraId:0,tocIndex:0},{value:"UI Editor",paraId:1,tocIndex:1},{value:"Plugin Manager",paraId:1,tocIndex:1},{value:"Settings Center",paraId:1,tocIndex:1},{value:"Personal Center",paraId:1,tocIndex:1},{value:"v0.8 provides a powerful plugin manager for managing plugins in a no-code way.",paraId:2,tocIndex:2},{value:"Currently it is mainly used for disabling, activating and deleting local plugins. Built-in plugins cannot be deleted.",paraId:3,tocIndex:4},{value:"In addition to being able to activate and disable plugins from the no-code interface, you can also manage plugins more completely from the command line.",paraId:4,tocIndex:5},{value:`# Create a plugin +`,paraId:59,tocIndex:11}],NC={},zC={title:"v0.4\uFF1A2021-04-07",toc:"menu",filename:"docs/en-US/welcome/release/v0040-changelog.md",lastUpdated:173254844e4},FC=[{id:"v042021-04-07",depth:1,title:"v0.4\uFF1A2021-04-07"},{id:"merged",depth:2,title:"Merged"},{id:"fixed",depth:2,title:"Fixed"},{id:"commits",depth:2,title:"Commits"}],BC=[{value:"refactor: use boolean value instead of null #74",paraId:0,tocIndex:1},{value:"refactor: app middlewares 17362a8",paraId:0,tocIndex:1},{value:"chore(versions): publish packages 0.4.0-alpha.2 c2f1876",paraId:0,tocIndex:1},{value:"fix: minor problems ",paraId:0,tocIndex:1},{value:"#72",paraId:0,tocIndex:1},{value:"Develop ",paraId:0,tocIndex:1},{value:"#68",paraId:0,tocIndex:1},{value:"Feature: plugin-china-region ",paraId:0,tocIndex:1},{value:"#66",paraId:0,tocIndex:1},{value:"Feature: filter for linkTo field ",paraId:0,tocIndex:1},{value:"#64",paraId:0,tocIndex:1},{value:"fix: make default view/tab cannot be destroyed ",paraId:0,tocIndex:1},{value:"#63",paraId:0,tocIndex:1},{value:"Feature/plugin automations ",paraId:0,tocIndex:1},{value:"#65",paraId:0,tocIndex:1},{value:"Feature/action logs ",paraId:0,tocIndex:1},{value:"#62",paraId:0,tocIndex:1},{value:"Feature/action logs ",paraId:0,tocIndex:1},{value:"#61",paraId:0,tocIndex:1},{value:"Feature/destroy lock ",paraId:0,tocIndex:1},{value:"#60",paraId:0,tocIndex:1},{value:"fix: ignore some typescript error ",paraId:0,tocIndex:1},{value:"#59",paraId:0,tocIndex:1},{value:"feat: route permissions ",paraId:0,tocIndex:1},{value:"#58",paraId:0,tocIndex:1},{value:"Feature: add permission plugin api ",paraId:0,tocIndex:1},{value:"#57",paraId:0,tocIndex:1},{value:"fix: updatedBy foreignKey ",paraId:0,tocIndex:1},{value:"#56",paraId:0,tocIndex:1},{value:"feat: add permissions plugin ",paraId:0,tocIndex:1},{value:"#53",paraId:0,tocIndex:1},{value:"fix: updatedBy field in bulkUpdate hook ",paraId:0,tocIndex:1},{value:"#54",paraId:0,tocIndex:1},{value:"test: skip bug test cases for ci passing ",paraId:0,tocIndex:1},{value:"#52",paraId:0,tocIndex:1},{value:"fix: avoid bug when update other field ",paraId:0,tocIndex:1},{value:"#51",paraId:0,tocIndex:1},{value:"feat: date-only operators ",paraId:0,tocIndex:1},{value:"#50",paraId:0,tocIndex:1},{value:"Feature field for set default ",paraId:0,tocIndex:1},{value:"#49",paraId:0,tocIndex:1},{value:"Feature: custom operators for querying ",paraId:0,tocIndex:1},{value:"#48",paraId:0,tocIndex:1},{value:"fix: toInclude bug with nested associations ",paraId:0,tocIndex:1},{value:"#47",paraId:0,tocIndex:1},{value:"feat: make single file upload to attachment available ",paraId:0,tocIndex:1},{value:"#46",paraId:0,tocIndex:1},{value:"feature: add file manager base architecture ",paraId:0,tocIndex:1},{value:"#44",paraId:0,tocIndex:1},{value:"feat: add createdBy/updatedBy field config for table managed by collections ",paraId:0,tocIndex:1},{value:"#43",paraId:0,tocIndex:1},{value:"fix: use wrapped and logic for merging filters ",paraId:0,tocIndex:1},{value:"#42",paraId:0,tocIndex:1},{value:"fix: filterByFields should return same value when input == null (close 0) ",paraId:0,tocIndex:1},{value:"#41",paraId:0,tocIndex:1},{value:"fix: Symbol property could not be iterated in for-in ",paraId:0,tocIndex:1},{value:"#39",paraId:0,tocIndex:1},{value:"Feature/sort ",paraId:0,tocIndex:1},{value:"#38",paraId:0,tocIndex:1},{value:"refactor: change sort strategy from offset to targetId ",paraId:0,tocIndex:1},{value:"#37",paraId:0,tocIndex:1},{value:"Feature/sort ",paraId:0,tocIndex:1},{value:"#36",paraId:0,tocIndex:1},{value:"feat: add filter and transaction for destroy action ",paraId:0,tocIndex:1},{value:"#35",paraId:0,tocIndex:1},{value:"fix: field filter logic for create/update ",paraId:0,tocIndex:1},{value:"#34",paraId:0,tocIndex:1},{value:"Feature: action fields options for create/update ",paraId:0,tocIndex:1},{value:"#32",paraId:0,tocIndex:1},{value:"Fix: change strategy from add to set for updateAssociations ",paraId:0,tocIndex:1},{value:"#33",paraId:0,tocIndex:1},{value:"Test/ci ",paraId:0,tocIndex:1},{value:"#31",paraId:0,tocIndex:1},{value:"feat: improve collection hooks/fields/actions/views... ",paraId:0,tocIndex:1},{value:"#30",paraId:0,tocIndex:1},{value:"Fix/model update associations ",paraId:0,tocIndex:1},{value:"#29",paraId:0,tocIndex:1},{value:"fix: database test cases and table options ",paraId:0,tocIndex:1},{value:"#28",paraId:0,tocIndex:1},{value:"feat: add virtual attribute geter & setter support ",paraId:0,tocIndex:1},{value:"#27",paraId:0,tocIndex:1},{value:"feat: collection options & hooks ",paraId:0,tocIndex:1},{value:"#21",paraId:0,tocIndex:1},{value:"feat(users): add users module ",paraId:0,tocIndex:1},{value:"#26",paraId:0,tocIndex:1},{value:"feat: add sort action ",paraId:0,tocIndex:1},{value:"#22",paraId:0,tocIndex:1},{value:"Test/list ",paraId:0,tocIndex:1},{value:"#19",paraId:0,tocIndex:1},{value:"feat: pagination options ",paraId:0,tocIndex:1},{value:"#20",paraId:0,tocIndex:1},{value:"test: refactor test in database and add more ",paraId:0,tocIndex:1},{value:"#17",paraId:0,tocIndex:1},{value:"feat: actions & views ",paraId:0,tocIndex:1},{value:"#18",paraId:0,tocIndex:1},{value:"Test cases for database ",paraId:0,tocIndex:1},{value:"#16",paraId:0,tocIndex:1},{value:"Refactor: change global injection of test for actions package. ",paraId:0,tocIndex:1},{value:"#15",paraId:0,tocIndex:1},{value:"feat: improve plugins ",paraId:0,tocIndex:1},{value:"#14",paraId:0,tocIndex:1},{value:"Doc: add README.md for server. ",paraId:0,tocIndex:1},{value:"#12",paraId:0,tocIndex:1},{value:"fix: parseRequest & registerHandlers ",paraId:0,tocIndex:1},{value:"#10",paraId:0,tocIndex:1},{value:"fix #9 ",paraId:0,tocIndex:1},{value:"#11",paraId:0,tocIndex:1},{value:"feat: support register and call partial actions ",paraId:0,tocIndex:1},{value:"#7",paraId:0,tocIndex:1},{value:"\u53D1\u5E03\u6838\u5FC3\u6846\u67B6 ",paraId:0,tocIndex:1},{value:"#6",paraId:0,tocIndex:1},{value:"fix #9 (#11) ",paraId:1,tocIndex:2},{value:"#9",paraId:1,tocIndex:2},{value:" ",paraId:1,tocIndex:2},{value:"#9",paraId:1,tocIndex:2},{value:"fix: improve login form styles 5319000",paraId:1,tocIndex:2},{value:"fix: error message for login and registration 214b227",paraId:1,tocIndex:2},{value:"chore: adjust parameters ",paraId:2,tocIndex:3},{value:"b95e2da",paraId:2,tocIndex:3},{value:"first commit ",paraId:2,tocIndex:3},{value:"e5d30b3",paraId:2,tocIndex:3},{value:"style: code formatting ",paraId:2,tocIndex:3},{value:"ce4a22f",paraId:2,tocIndex:3}],jC={},HC={title:"v0.5\uFF1A2021-11-21",toc:"menu",filename:"docs/en-US/welcome/release/v0050-changelog.md",lastUpdated:173254844e4},WC=[{id:"v052021-11-21",depth:1,title:"v0.5\uFF1A2021-11-21"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],$C=[{value:"fix: upgrade formily & side menu render with createPortal & use deep compare effect ",paraId:0,tocIndex:1},{value:"#103",paraId:0,tocIndex:1},{value:"fix: SchemaRenderer get schema value ",paraId:0,tocIndex:1},{value:"#102",paraId:0,tocIndex:1},{value:"fix: upgrade formily and form.setValues uses overwrite strategy ",paraId:0,tocIndex:1},{value:"#101",paraId:0,tocIndex:1},{value:"feat: support i18n ",paraId:0,tocIndex:1},{value:"#99",paraId:0,tocIndex:1},{value:"feat: new version of the documentation ",paraId:0,tocIndex:1},{value:"#95",paraId:0,tocIndex:1},{value:"option-tag style ",paraId:0,tocIndex:1},{value:"#92",paraId:0,tocIndex:1},{value:"create-nocobase-app: favicon ",paraId:0,tocIndex:1},{value:"#91",paraId:0,tocIndex:1},{value:"feat: create nocobase app with simple & quickstart option ",paraId:0,tocIndex:1},{value:"#87",paraId:0,tocIndex:1},{value:"feat: export plugin ",paraId:0,tocIndex:1},{value:"#73",paraId:0,tocIndex:1},{value:"v0.5 ",paraId:1,tocIndex:2},{value:"2cbcd08",paraId:1,tocIndex:2},{value:"refactor ",paraId:1,tocIndex:2},{value:"75cd158",paraId:1,tocIndex:2},{value:"feat: improve code ",paraId:1,tocIndex:2},{value:"c6b68f2",paraId:1,tocIndex:2}],GC={},VC={title:"v0.6\uFF1A2022-04-05",toc:"menu",filename:"docs/en-US/welcome/release/v0060-changelog.md",lastUpdated:173254844e4,description:"fix: yarn.lock 7a7eb0c"},KC=[{id:"v062022-04-05",depth:1,title:"v0.6\uFF1A2022-04-05"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],ZC=[{value:"Feat: plugin-workflow ",paraId:0,tocIndex:1},{value:"#288",paraId:0,tocIndex:1},{value:"fix: slate style ",paraId:0,tocIndex:1},{value:"#289",paraId:0,tocIndex:1},{value:"fix: toJSON with belongsTo Assoication ",paraId:0,tocIndex:1},{value:"#287",paraId:0,tocIndex:1},{value:"feat: improve acl module ",paraId:0,tocIndex:1},{value:"#283",paraId:0,tocIndex:1},{value:"fix: destroy own records ",paraId:0,tocIndex:1},{value:"#285",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): support context variables from model trigger ",paraId:0,tocIndex:1},{value:"#284",paraId:0,tocIndex:1},{value:"fix: acl write ",paraId:0,tocIndex:1},{value:"#280",paraId:0,tocIndex:1},{value:"fix: call root server hook after insertNewSchema ",paraId:0,tocIndex:1},{value:"#282",paraId:0,tocIndex:1},{value:"Feat/plugin workflow ",paraId:0,tocIndex:1},{value:"#278",paraId:0,tocIndex:1},{value:"feat: acl provider ",paraId:0,tocIndex:1},{value:"#279",paraId:0,tocIndex:1},{value:"feat: add Slate component ",paraId:0,tocIndex:1},{value:"#272",paraId:0,tocIndex:1},{value:"Feat/plugin users with jwt ",paraId:0,tocIndex:1},{value:"#258",paraId:0,tocIndex:1},{value:"fix: modify antd style of default ",paraId:0,tocIndex:1},{value:"#277",paraId:0,tocIndex:1},{value:"fix(client): meet undefined error after clear filter cascader value ",paraId:0,tocIndex:1},{value:"#267",paraId:0,tocIndex:1},{value:"Feat(plugin workflow): refactor calculation and add filter for query ",paraId:0,tocIndex:1},{value:"#264",paraId:0,tocIndex:1},{value:"feat: block provider ",paraId:0,tocIndex:1},{value:"#261",paraId:0,tocIndex:1},{value:"fix: toJSON with null association ",paraId:0,tocIndex:1},{value:"#260",paraId:0,tocIndex:1},{value:"fix: error handle error ",paraId:0,tocIndex:1},{value:"#259",paraId:0,tocIndex:1},{value:"fix: textarea read pretty can support break line ",paraId:0,tocIndex:1},{value:"#255",paraId:0,tocIndex:1},{value:"fix: markdown support ellipsis ",paraId:0,tocIndex:1},{value:"#257",paraId:0,tocIndex:1},{value:"featPlugin multiple apps ",paraId:0,tocIndex:1},{value:"#248",paraId:0,tocIndex:1},{value:"add action log tempalte ",paraId:0,tocIndex:1},{value:"#239",paraId:0,tocIndex:1},{value:"fix some bugs ",paraId:0,tocIndex:1},{value:"#252",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix adding/removing node in parallel branches ",paraId:0,tocIndex:1},{value:"#253",paraId:0,tocIndex:1},{value:"Feat: client base entry of plugin workflow ",paraId:0,tocIndex:1},{value:"#225",paraId:0,tocIndex:1},{value:"fix: updateAt on move scope change ",paraId:0,tocIndex:1},{value:"#251",paraId:0,tocIndex:1},{value:"feat: get json schema with async node ",paraId:0,tocIndex:1},{value:"#246",paraId:0,tocIndex:1},{value:"feat: insertNewSchema ",paraId:0,tocIndex:1},{value:"#245",paraId:0,tocIndex:1},{value:"fix: transaction error ",paraId:0,tocIndex:1},{value:"#242",paraId:0,tocIndex:1},{value:"feat: block templates ",paraId:0,tocIndex:1},{value:"#240",paraId:0,tocIndex:1},{value:"feat: uiSchema clearAncestor ",paraId:0,tocIndex:1},{value:"#241",paraId:0,tocIndex:1},{value:"feat: init sort field values ",paraId:0,tocIndex:1},{value:"#236",paraId:0,tocIndex:1},{value:"fix: move action without alter updatedAt ",paraId:0,tocIndex:1},{value:"#235",paraId:0,tocIndex:1},{value:"feat: role check action ",paraId:0,tocIndex:1},{value:"#234",paraId:0,tocIndex:1},{value:"feat: ne operator ",paraId:0,tocIndex:1},{value:"#233",paraId:0,tocIndex:1},{value:"fix: user current role ",paraId:0,tocIndex:1},{value:"#232",paraId:0,tocIndex:1},{value:"featEnable permission ",paraId:0,tocIndex:1},{value:"#229",paraId:0,tocIndex:1},{value:"test: update reverseField ",paraId:0,tocIndex:1},{value:"#231",paraId:0,tocIndex:1},{value:"feat: kanban ",paraId:0,tocIndex:1},{value:"#230",paraId:0,tocIndex:1},{value:"Nocobase next kanban ",paraId:0,tocIndex:1},{value:"#223",paraId:0,tocIndex:1},{value:"add: test ",paraId:0,tocIndex:1},{value:"#224",paraId:0,tocIndex:1},{value:"Plugin error handler ",paraId:0,tocIndex:1},{value:"#222",paraId:0,tocIndex:1},{value:"fix: array $noneOf with null ",paraId:0,tocIndex:1},{value:"#220",paraId:0,tocIndex:1},{value:"fix: filter parser with number in key ",paraId:0,tocIndex:1},{value:"#219",paraId:0,tocIndex:1},{value:"feat: ui-schema-tree-path descendant index ",paraId:0,tocIndex:1},{value:"#218",paraId:0,tocIndex:1},{value:"fix: array operator query error ",paraId:0,tocIndex:1},{value:"#217",paraId:0,tocIndex:1},{value:"fix: operator query value ",paraId:0,tocIndex:1},{value:"#216",paraId:0,tocIndex:1},{value:"feat: string operators ",paraId:0,tocIndex:1},{value:"#215",paraId:0,tocIndex:1},{value:"feat: error handle middleware ",paraId:0,tocIndex:1},{value:"#214",paraId:0,tocIndex:1},{value:"refactor: filter schema component ",paraId:0,tocIndex:1},{value:"#213",paraId:0,tocIndex:1},{value:"fix: empty operator with $or filter ",paraId:0,tocIndex:1},{value:"#212",paraId:0,tocIndex:1},{value:"feat: plugin install ",paraId:0,tocIndex:1},{value:"#211",paraId:0,tocIndex:1},{value:"feat: sortBy through table value ",paraId:0,tocIndex:1},{value:"#209",paraId:0,tocIndex:1},{value:"Feat: plugin workflow ",paraId:0,tocIndex:1},{value:"#210",paraId:0,tocIndex:1},{value:"fix: collection fields sort ",paraId:0,tocIndex:1},{value:"#208",paraId:0,tocIndex:1},{value:"feat: sort in collection fields ",paraId:0,tocIndex:1},{value:"#207",paraId:0,tocIndex:1},{value:"fix Collection rest api ",paraId:0,tocIndex:1},{value:"#205",paraId:0,tocIndex:1},{value:"feat: non paged list ",paraId:0,tocIndex:1},{value:"#204",paraId:0,tocIndex:1},{value:"feat: finish calendar component develop ",paraId:0,tocIndex:1},{value:"#199",paraId:0,tocIndex:1},{value:"fix(dependencies): move json-template into original sub packages ",paraId:0,tocIndex:1},{value:"#203",paraId:0,tocIndex:1},{value:"Feat(plugin workflow): add more instructions ",paraId:0,tocIndex:1},{value:"#201",paraId:0,tocIndex:1},{value:"fix: getJsonSchema with properties ",paraId:0,tocIndex:1},{value:"#202",paraId:0,tocIndex:1},{value:"fix: postgres array operator ",paraId:0,tocIndex:1},{value:"#200",paraId:0,tocIndex:1},{value:"fix: postgres sort with appends issue ",paraId:0,tocIndex:1},{value:"#198",paraId:0,tocIndex:1},{value:"feat: uiSchema remove api ",paraId:0,tocIndex:1},{value:"#196",paraId:0,tocIndex:1},{value:"refactor: perPage to pageSize ",paraId:0,tocIndex:1},{value:"#197",paraId:0,tocIndex:1},{value:"fix: option parser test ",paraId:0,tocIndex:1},{value:"#195",paraId:0,tocIndex:1},{value:"fix: nest append ",paraId:0,tocIndex:1},{value:"#194",paraId:0,tocIndex:1},{value:"fix: test with database ",paraId:0,tocIndex:1},{value:"#193",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix dependencies in package ",paraId:0,tocIndex:1},{value:"#192",paraId:0,tocIndex:1},{value:"Fix: plugin-workflow test ",paraId:0,tocIndex:1},{value:"#191",paraId:0,tocIndex:1},{value:"Refactor(plugin-workflow): upgrade plugin to use abstract plugin class and fix types ",paraId:0,tocIndex:1},{value:"#190",paraId:0,tocIndex:1},{value:"fix: ui schema storage ",paraId:0,tocIndex:1},{value:"#188",paraId:0,tocIndex:1},{value:"fix: ui schema storage ",paraId:0,tocIndex:1},{value:"#187",paraId:0,tocIndex:1},{value:"fix: update guard with Model instance ",paraId:0,tocIndex:1},{value:"#186",paraId:0,tocIndex:1},{value:"fix: getProperties with order ",paraId:0,tocIndex:1},{value:"#183",paraId:0,tocIndex:1},{value:"feat(server): improve application ",paraId:0,tocIndex:1},{value:"#177",paraId:0,tocIndex:1},{value:"Feature: plugin-workflow MVP ",paraId:0,tocIndex:1},{value:"#171",paraId:0,tocIndex:1},{value:"fix(root): fix dependencies in packages to avoid building errors ",paraId:0,tocIndex:1},{value:"#178",paraId:0,tocIndex:1},{value:"Application ",paraId:0,tocIndex:1},{value:"#175",paraId:0,tocIndex:1},{value:"feat: add acl plugin ",paraId:0,tocIndex:1},{value:"#169",paraId:0,tocIndex:1},{value:"add Filter component into schema componens ",paraId:0,tocIndex:1},{value:"#176",paraId:0,tocIndex:1},{value:"feat: add Markdown component into schema components ",paraId:0,tocIndex:1},{value:"#173",paraId:0,tocIndex:1},{value:"feat: table related components ",paraId:0,tocIndex:1},{value:"#172",paraId:0,tocIndex:1},{value:"feat: add select component into schema component ",paraId:0,tocIndex:1},{value:"#168",paraId:0,tocIndex:1},{value:"feat: add TreeSelect component into schema components ",paraId:0,tocIndex:1},{value:"#167",paraId:0,tocIndex:1},{value:"Plugin acl ",paraId:0,tocIndex:1},{value:"#166",paraId:0,tocIndex:1},{value:"add upload component into schema components ",paraId:0,tocIndex:1},{value:"#165",paraId:0,tocIndex:1},{value:"migrate TimePicker component into schema components ",paraId:0,tocIndex:1},{value:"#164",paraId:0,tocIndex:1},{value:"Feat/plugin UI schema v0.6 ",paraId:0,tocIndex:1},{value:"#143",paraId:0,tocIndex:1},{value:"Feat/plugin collection manager ",paraId:0,tocIndex:1},{value:"#147",paraId:0,tocIndex:1},{value:"Acl ",paraId:0,tocIndex:1},{value:"#162",paraId:0,tocIndex:1},{value:"feat: acl ",paraId:0,tocIndex:1},{value:"#153",paraId:0,tocIndex:1},{value:"feat: add InputNumber Component into schema component ",paraId:0,tocIndex:1},{value:"#160",paraId:0,tocIndex:1},{value:"feature/nocobase next password ",paraId:0,tocIndex:1},{value:"#159",paraId:0,tocIndex:1},{value:"feat: add DatePicker into schema components ",paraId:0,tocIndex:1},{value:"#161",paraId:0,tocIndex:1},{value:"feat: add input into schema component ",paraId:0,tocIndex:1},{value:"#158",paraId:0,tocIndex:1},{value:"feat: add radio into schema component ",paraId:0,tocIndex:1},{value:"#154",paraId:0,tocIndex:1},{value:"optimize: rename checkbox component file ",paraId:0,tocIndex:1},{value:"#155",paraId:0,tocIndex:1},{value:"Nocobase next color select ",paraId:0,tocIndex:1},{value:"#157",paraId:0,tocIndex:1},{value:"feat: add async-data-provider component ",paraId:0,tocIndex:1},{value:"#151",paraId:0,tocIndex:1},{value:"feat: client v0.6 ",paraId:0,tocIndex:1},{value:"#150",paraId:0,tocIndex:1},{value:"Feat/GitHub actions ",paraId:0,tocIndex:1},{value:"#148",paraId:0,tocIndex:1},{value:"feat: filter by target key ",paraId:0,tocIndex:1},{value:"#146",paraId:0,tocIndex:1},{value:"refactor: actions ",paraId:0,tocIndex:1},{value:"#137",paraId:0,tocIndex:1},{value:"feat: context field type support ",paraId:0,tocIndex:1},{value:"#131",paraId:0,tocIndex:1},{value:"feat: database next ",paraId:0,tocIndex:1},{value:"#130",paraId:0,tocIndex:1},{value:"feat: rename resourceKey & associatedKey to resourceIndex & associatedIndex ",paraId:0,tocIndex:1},{value:"#126",paraId:0,tocIndex:1},{value:"refactor: table cell text overflow that show ellipsis ",paraId:0,tocIndex:1},{value:"#125",paraId:0,tocIndex:1},{value:"Add S3 storage and refactors ",paraId:0,tocIndex:1},{value:"#124",paraId:0,tocIndex:1},{value:"Fix: plugin-file-manager ",paraId:0,tocIndex:1},{value:"#111",paraId:0,tocIndex:1},{value:"refactor: code splitting of the table component ",paraId:0,tocIndex:1},{value:"#121",paraId:0,tocIndex:1},{value:"refactor: code splitting of the table component ",paraId:0,tocIndex:1},{value:"#120",paraId:0,tocIndex:1},{value:"feat: add reset button in the filter panel ",paraId:0,tocIndex:1},{value:"#110",paraId:0,tocIndex:1},{value:"feat: allow user to change password ",paraId:0,tocIndex:1},{value:"#109",paraId:0,tocIndex:1},{value:"fix: yarn.lock ",paraId:1,tocIndex:2},{value:"7a7eb0c",paraId:1,tocIndex:2},{value:"fix: yarn.lock ",paraId:2,tocIndex:2},{value:"e226f04",paraId:2,tocIndex:2},{value:"feat: rich text ",paraId:3,tocIndex:2},{value:"5b41b33",paraId:3,tocIndex:2},{value:"v0.6 ",paraId:4,tocIndex:2},{value:"732d310",paraId:4,tocIndex:2},{value:"create-nocobase-app template from [develop] ",paraId:5,tocIndex:2},{value:"9f4bea7",paraId:5,tocIndex:2},{value:"feat: improve view action schema initializer ",paraId:6,tocIndex:2},{value:"590ca26",paraId:6,tocIndex:2}],YC={},QC={title:"v0.7\uFF1A2022-04-25",toc:"menu",filename:"docs/en-US/welcome/release/v0070-changelog.md",lastUpdated:173254844e4},JC=[{id:"v072022-04-25",depth:1,title:"v0.7\uFF1A2022-04-25"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],XC=[{value:"feat(client,sdk): improve api client ",paraId:0,tocIndex:1},{value:"#425",paraId:0,tocIndex:1},{value:"feat: add create-plugin command ",paraId:0,tocIndex:1},{value:"#423",paraId:0,tocIndex:1},{value:"feat: add button color ",paraId:0,tocIndex:1},{value:"#420",paraId:0,tocIndex:1},{value:"fix: 204 no content response ",paraId:0,tocIndex:1},{value:"#378",paraId:0,tocIndex:1},{value:"feat: destroy association field after target collection destroy ",paraId:0,tocIndex:1},{value:"#376",paraId:0,tocIndex:1},{value:"fix(type): use sequelize native Transactionable instead of TransactionAble ",paraId:0,tocIndex:1},{value:"#410",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): remove previous listeners when collection changed in config ",paraId:0,tocIndex:1},{value:"#409",paraId:0,tocIndex:1},{value:"feat: add custom action ",paraId:0,tocIndex:1},{value:"#396",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): multiple instances and event management (fix #384) ",paraId:0,tocIndex:1},{value:"#408",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix node type title in drawers ",paraId:0,tocIndex:1},{value:"#389",paraId:0,tocIndex:1},{value:"Fix(plugin workflow): fix cannot get job result properties ",paraId:0,tocIndex:1},{value:"#382",paraId:0,tocIndex:1},{value:"feat: exist on server start throw error ",paraId:0,tocIndex:1},{value:"#374",paraId:0,tocIndex:1},{value:"chore: application options ",paraId:0,tocIndex:1},{value:"#375",paraId:0,tocIndex:1},{value:"fix: not in operator with null value record ",paraId:0,tocIndex:1},{value:"#377",paraId:0,tocIndex:1},{value:"Feat(plugin workflow): revisions ",paraId:0,tocIndex:1},{value:"#379",paraId:0,tocIndex:1},{value:"fix(database): fix option-parser include list index ",paraId:0,tocIndex:1},{value:"#371",paraId:0,tocIndex:1},{value:"fix(plugin-worklfow): fix duplicated description in fields values ",paraId:0,tocIndex:1},{value:"#368",paraId:0,tocIndex:1},{value:"fix(database): fix type and transaction in repository ",paraId:0,tocIndex:1},{value:"#366",paraId:0,tocIndex:1},{value:"Fix(plugin workflow): fix transaction of execution ",paraId:0,tocIndex:1},{value:"#364",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): add document title ",paraId:0,tocIndex:1},{value:"#363",paraId:0,tocIndex:1},{value:"fix: set visible with confirm ",paraId:0,tocIndex:1},{value:"#361",paraId:0,tocIndex:1},{value:"fix: empty resource acl error ",paraId:0,tocIndex:1},{value:"#357",paraId:0,tocIndex:1},{value:"Feat: from values changed when unsaved will prompt ",paraId:0,tocIndex:1},{value:"#351",paraId:0,tocIndex:1},{value:"fix: modify filter close icon color ",paraId:0,tocIndex:1},{value:"#356",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix i18n ",paraId:0,tocIndex:1},{value:"#354",paraId:0,tocIndex:1},{value:"Fix(plugin-workflow) ",paraId:0,tocIndex:1},{value:"#353",paraId:0,tocIndex:1},{value:"fix(plugin-file-manager): upgrade multer-aliyun-oss package to fix size ",paraId:0,tocIndex:1},{value:"#352",paraId:0,tocIndex:1},{value:"feat: improve code ",paraId:0,tocIndex:1},{value:"#350",paraId:0,tocIndex:1},{value:"Fix/plugin workflow ",paraId:0,tocIndex:1},{value:"#349",paraId:0,tocIndex:1},{value:"fix: db:sync not working ",paraId:0,tocIndex:1},{value:"#348",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix trigger bind logic to avoid duplication ",paraId:0,tocIndex:1},{value:"#347",paraId:0,tocIndex:1},{value:"Fix(plugin workflow) ",paraId:0,tocIndex:1},{value:"#346",paraId:0,tocIndex:1},{value:"Fix:menu url style ",paraId:0,tocIndex:1},{value:"#344",paraId:0,tocIndex:1},{value:"chore(plugin-workflow): add translation ",paraId:0,tocIndex:1},{value:"#345",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): break cycling trigger through transaction id ",paraId:0,tocIndex:1},{value:"#341",paraId:0,tocIndex:1},{value:"fix: model.beforeCreate not called ",paraId:0,tocIndex:1},{value:"#343",paraId:0,tocIndex:1},{value:"fix: thumbnail image in kanban card ",paraId:0,tocIndex:1},{value:"#338",paraId:0,tocIndex:1},{value:"feat: db authenticate ",paraId:0,tocIndex:1},{value:"#342",paraId:0,tocIndex:1},{value:"chore: install subApp asynchronous ",paraId:0,tocIndex:1},{value:"#336",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): change collection values input ux in workflow nodes ",paraId:0,tocIndex:1},{value:"#340",paraId:0,tocIndex:1},{value:"feat: improvements ",paraId:0,tocIndex:1},{value:"#335",paraId:0,tocIndex:1},{value:"Feat(plugin workflow): add changed fields to model trigger config ",paraId:0,tocIndex:1},{value:"#332",paraId:0,tocIndex:1},{value:"fix: create-nocobase-app compatibility ",paraId:0,tocIndex:1},{value:"#323",paraId:0,tocIndex:1},{value:"fix: create-nocobase-app client package version ",paraId:0,tocIndex:1},{value:"#321",paraId:0,tocIndex:1},{value:"fix: app manager ",paraId:0,tocIndex:1},{value:"#320",paraId:0,tocIndex:1},{value:"refactor: modify default lable style ",paraId:0,tocIndex:1},{value:"#318",paraId:0,tocIndex:1},{value:"Fix multiple apps ",paraId:0,tocIndex:1},{value:"#317",paraId:0,tocIndex:1},{value:"Fix multiple apps ",paraId:0,tocIndex:1},{value:"#316",paraId:0,tocIndex:1},{value:"Fix acl target action error ",paraId:0,tocIndex:1},{value:"#311",paraId:0,tocIndex:1},{value:"feat: file storages ",paraId:0,tocIndex:1},{value:"#314",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix some ux ",paraId:0,tocIndex:1},{value:"#313",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix query node getter field ",paraId:0,tocIndex:1},{value:"#308",paraId:0,tocIndex:1},{value:"Fix create nocobase app ",paraId:0,tocIndex:1},{value:"#307",paraId:0,tocIndex:1},{value:"fix: create-nocobase-app ",paraId:0,tocIndex:1},{value:"#306",paraId:0,tocIndex:1},{value:"Fix create nocobase app ",paraId:0,tocIndex:1},{value:"#305",paraId:0,tocIndex:1},{value:"fix: block item add overflow:hidden ",paraId:0,tocIndex:1},{value:"#304",paraId:0,tocIndex:1},{value:"feat(license): replace MIT license with Apache-2.0 ",paraId:1,tocIndex:2},{value:"717efa8",paraId:1,tocIndex:2},{value:"feat: translations ",paraId:1,tocIndex:2},{value:"5c0184a",paraId:1,tocIndex:2},{value:"feat: translations ",paraId:1,tocIndex:2},{value:"1f04f90",paraId:1,tocIndex:2},{value:"feat: kanban disableCardDrag ",paraId:2,tocIndex:2},{value:"05a251b",paraId:2,tocIndex:2}],eA={},aA={title:"v0.7.1\uFF1A2022-06-26",toc:"menu",filename:"docs/en-US/welcome/release/v0071-changelog.md",lastUpdated:173254844e4},tA=[{id:"v0712022-06-26",depth:1,title:"v0.7.1\uFF1A2022-06-26"},{id:"merged",depth:2,title:"Merged"},{id:"fixed",depth:2,title:"Fixed"},{id:"commits",depth:2,title:"Commits"}],nA=[{value:"chore(create-nocobase-app): fix some bugs ",paraId:0,tocIndex:1},{value:"#538",paraId:0,tocIndex:1},{value:"fix: destroy collection fields ",paraId:0,tocIndex:1},{value:"#536",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add delay node type ",paraId:0,tocIndex:1},{value:"#532",paraId:0,tocIndex:1},{value:"refactor: client application ",paraId:0,tocIndex:1},{value:"#533",paraId:0,tocIndex:1},{value:"fix: missing transaction ",paraId:0,tocIndex:1},{value:"#531",paraId:0,tocIndex:1},{value:"fix: add ellipsis property to record picker ",paraId:0,tocIndex:1},{value:"#527",paraId:0,tocIndex:1},{value:"fix: remove pattern without form item ",paraId:0,tocIndex:1},{value:"#528",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): set current when update ",paraId:0,tocIndex:1},{value:"#526",paraId:0,tocIndex:1},{value:"fix: order nulls last ",paraId:0,tocIndex:1},{value:"#519",paraId:0,tocIndex:1},{value:"fix: action loading, refresh context, form submit and validate ",paraId:0,tocIndex:1},{value:"#523",paraId:0,tocIndex:1},{value:"Fix field pattern ",paraId:0,tocIndex:1},{value:"#520",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix searchable select min-width ",paraId:0,tocIndex:1},{value:"#524",paraId:0,tocIndex:1},{value:"fix: template with fields only ",paraId:0,tocIndex:1},{value:"#517",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix update workflow current property ",paraId:0,tocIndex:1},{value:"#521",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): abstract to classes ",paraId:0,tocIndex:1},{value:"#515",paraId:0,tocIndex:1},{value:"feat: column sortable and form item pattern ",paraId:0,tocIndex:1},{value:"#518",paraId:0,tocIndex:1},{value:"fix(custom-request): support string/json templates ",paraId:0,tocIndex:1},{value:"#514",paraId:0,tocIndex:1},{value:"feat: add block title ",paraId:0,tocIndex:1},{value:"#513",paraId:0,tocIndex:1},{value:"fix: remove collections & fields from db ",paraId:0,tocIndex:1},{value:"#511",paraId:0,tocIndex:1},{value:"feat: improve migrations ",paraId:0,tocIndex:1},{value:"#510",paraId:0,tocIndex:1},{value:"fix(client): consolidate usage of date/time as UTC in transfering ",paraId:0,tocIndex:1},{value:"#509",paraId:0,tocIndex:1},{value:"fix: formula bug ",paraId:0,tocIndex:1},{value:"#508",paraId:0,tocIndex:1},{value:"fix: default exportable fields ",paraId:0,tocIndex:1},{value:"#506",paraId:0,tocIndex:1},{value:"feat: association field block ",paraId:0,tocIndex:1},{value:"#493",paraId:0,tocIndex:1},{value:"feat: plugin export ",paraId:0,tocIndex:1},{value:"#479",paraId:0,tocIndex:1},{value:"fix(client): package path (fix #503) ",paraId:0,tocIndex:1},{value:"#504",paraId:0,tocIndex:1},{value:"fix: create or delete collection error ",paraId:0,tocIndex:1},{value:"#501",paraId:0,tocIndex:1},{value:"feat: update collections & fields ",paraId:0,tocIndex:1},{value:"#500",paraId:0,tocIndex:1},{value:"fix: rollback when field creation fails ",paraId:0,tocIndex:1},{value:"#498",paraId:0,tocIndex:1},{value:"fix(client): set ",paraId:0,tocIndex:1},{value:"dropdownMatchSelectWidth",paraId:0,tocIndex:1},{value:" to false globally ",paraId:0,tocIndex:1},{value:"#497",paraId:0,tocIndex:1},{value:"fix(client): no-key warning in user menu items ",paraId:0,tocIndex:1},{value:"#496",paraId:0,tocIndex:1},{value:"Feat(plugin workflow): cron field for schedule trigger configuration ",paraId:0,tocIndex:1},{value:"#495",paraId:0,tocIndex:1},{value:"feat: audit logs ",paraId:0,tocIndex:1},{value:"#494",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): add revision column to execution ",paraId:0,tocIndex:1},{value:"#491",paraId:0,tocIndex:1},{value:"feat: relation field uiSchema ",paraId:0,tocIndex:1},{value:"#487",paraId:0,tocIndex:1},{value:"feat: change FK to input component ",paraId:0,tocIndex:1},{value:"#488",paraId:0,tocIndex:1},{value:"fix(plugin-multi-app-manager): fix pg cannot create database block tests ",paraId:0,tocIndex:1},{value:"#486",paraId:0,tocIndex:1},{value:"refactor(database): hook proxy ",paraId:0,tocIndex:1},{value:"#402",paraId:0,tocIndex:1},{value:"feat: chart blocks ",paraId:0,tocIndex:1},{value:"#484",paraId:0,tocIndex:1},{value:"Refactor(plugin workflow): support number in repeat config for schedule ",paraId:0,tocIndex:1},{value:"#482",paraId:0,tocIndex:1},{value:"chore(debug): add debug config ",paraId:0,tocIndex:1},{value:"#475",paraId:0,tocIndex:1},{value:"fix: has one bug ",paraId:0,tocIndex:1},{value:"#478",paraId:0,tocIndex:1},{value:"feat: relationships ",paraId:0,tocIndex:1},{value:"#473",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix collection trigger transaction ",paraId:0,tocIndex:1},{value:"#474",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): temporary solution for collection trigger conditions ",paraId:0,tocIndex:1},{value:"#472",paraId:0,tocIndex:1},{value:"fix: markdown component ",paraId:0,tocIndex:1},{value:"#469",paraId:0,tocIndex:1},{value:"fix: formula field and percent field ",paraId:0,tocIndex:1},{value:"#467",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix update workflow action ",paraId:0,tocIndex:1},{value:"#464",paraId:0,tocIndex:1},{value:"fix: update formula field and percent field ",paraId:0,tocIndex:1},{value:"#461",paraId:0,tocIndex:1},{value:"feat: add formula field type ",paraId:0,tocIndex:1},{value:"#457",paraId:0,tocIndex:1},{value:"fix: the details of the associated data in the subtable are not displayed ",paraId:0,tocIndex:1},{value:"#454",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix languages ",paraId:0,tocIndex:1},{value:"#451",paraId:0,tocIndex:1},{value:"fix: afterSync hook not triggered ",paraId:0,tocIndex:1},{value:"#450",paraId:0,tocIndex:1},{value:"docs(various): Improve readability ",paraId:0,tocIndex:1},{value:"#447",paraId:0,tocIndex:1},{value:"feat: custom request ",paraId:0,tocIndex:1},{value:"#439",paraId:0,tocIndex:1},{value:"Feat(plugin workflow): schedule trigger ",paraId:0,tocIndex:1},{value:"#438",paraId:0,tocIndex:1},{value:"feat: db migrator ",paraId:0,tocIndex:1},{value:"#432",paraId:0,tocIndex:1},{value:"fix(client): select component cannot be opened in sub-table block ",paraId:0,tocIndex:1},{value:"#431",paraId:0,tocIndex:1},{value:"docs(github): change to markdown format ",paraId:0,tocIndex:1},{value:"#430",paraId:0,tocIndex:1},{value:"fix(cli): typo ",paraId:0,tocIndex:1},{value:"#429",paraId:0,tocIndex:1},{value:"fix(client): package path (fix #503) (#504) ",paraId:1,tocIndex:2},{value:"#503",paraId:1,tocIndex:2},{value:"feat(client): update locales ",paraId:2,tocIndex:3},{value:"e57e60e",paraId:2,tocIndex:3},{value:"docs: update doc ",paraId:2,tocIndex:3},{value:"e5cb948",paraId:2,tocIndex:3},{value:"fix(client): improve datepicker component, date with time zone, gmt support ",paraId:2,tocIndex:3},{value:"1c03fbb",paraId:2,tocIndex:3}],oA={},rA={title:"v0.7.2\uFF1A2022-07-05",toc:"menu",filename:"docs/en-US/welcome/release/v0072-changelog.md",lastUpdated:173254844e4},dA=[{id:"v0722022-07-05",depth:1,title:"v0.7.2\uFF1A2022-07-05"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],iA=[{value:"chore(versions): \u{1F60A} publish v0.7.2-alpha.1 ",paraId:0,tocIndex:1},{value:"#578",paraId:0,tocIndex:1},{value:"fix: drop all foreign keys ",paraId:0,tocIndex:1},{value:"#576",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix collection trigger config ",paraId:0,tocIndex:1},{value:"#575",paraId:0,tocIndex:1},{value:"feat: filter with variable ",paraId:0,tocIndex:1},{value:"#574",paraId:0,tocIndex:1},{value:"feat(cli): check database version before installation ",paraId:0,tocIndex:1},{value:"#572",paraId:0,tocIndex:1},{value:"fix(database): index invalid ",paraId:0,tocIndex:1},{value:"#564",paraId:0,tocIndex:1},{value:"fix: export association table data ",paraId:0,tocIndex:1},{value:"#561",paraId:0,tocIndex:1},{value:"Refactor(plugin workflow): move client files into plugin ",paraId:0,tocIndex:1},{value:"#556",paraId:0,tocIndex:1},{value:"fix(database): constraints default to false ",paraId:0,tocIndex:1},{value:"#550",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix select width ",paraId:0,tocIndex:1},{value:"#552",paraId:0,tocIndex:1},{value:"feat: compatible with old kanban ",paraId:0,tocIndex:1},{value:"#553",paraId:0,tocIndex:1},{value:"feat: display association fields ",paraId:0,tocIndex:1},{value:"#512",paraId:0,tocIndex:1},{value:"Fix(plugin workflow) ",paraId:0,tocIndex:1},{value:"#549",paraId:0,tocIndex:1},{value:"fix:update mysql port ",paraId:0,tocIndex:1},{value:"#548",paraId:0,tocIndex:1},{value:"fix: export of relation blocks ",paraId:0,tocIndex:1},{value:"#546",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): clear options when change collection ",paraId:0,tocIndex:1},{value:"#547",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add race mode ",paraId:0,tocIndex:1},{value:"#542",paraId:0,tocIndex:1},{value:"fix(client): change toArr to _.castArray in select component ",paraId:0,tocIndex:1},{value:"#543",paraId:0,tocIndex:1},{value:"chore(versions): \u{1F60A} publish v0.7.1-alpha.7 ",paraId:0,tocIndex:1},{value:"#539",paraId:0,tocIndex:1},{value:"fix(client): comment out useless code ",paraId:1,tocIndex:2},{value:"4e9384b",paraId:1,tocIndex:2},{value:"fix(workflow): merge workflow providers ",paraId:1,tocIndex:2},{value:"008a7f7",paraId:1,tocIndex:2},{value:"feat(client): integer field ",paraId:1,tocIndex:2},{value:"9928424",paraId:1,tocIndex:2}],lA={},cA={title:"v0.7.3\uFF1A2022-07-10",toc:"menu",filename:"docs/en-US/welcome/release/v0073-changelog.md",lastUpdated:173254844e4},sA=[{id:"v0732022-07-10",depth:1,title:"v0.7.3\uFF1A2022-07-10"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],uA=[{value:"chore(versions): \u{1F60A} publish v0.7.3-alpha.1 ",paraId:0,tocIndex:1},{value:"#657",paraId:0,tocIndex:1},{value:"feat: print action ",paraId:0,tocIndex:1},{value:"#652",paraId:0,tocIndex:1},{value:"feat: restore action-hooks ",paraId:0,tocIndex:1},{value:"#655",paraId:0,tocIndex:1},{value:"feat: collections&fields pagination issue ",paraId:0,tocIndex:1},{value:"#653",paraId:0,tocIndex:1},{value:"fix(core): change proxied agent methods to native ",paraId:0,tocIndex:1},{value:"#654",paraId:0,tocIndex:1},{value:"feat: remove table field details actions ",paraId:0,tocIndex:1},{value:"#638",paraId:0,tocIndex:1},{value:"fix: link to default value ",paraId:0,tocIndex:1},{value:"#641",paraId:0,tocIndex:1},{value:"feat: support for displaying relational table fields in details or form blocks ",paraId:0,tocIndex:1},{value:"#635",paraId:0,tocIndex:1},{value:"fix: record picker cannot select from different pages ",paraId:0,tocIndex:1},{value:"#623",paraId:0,tocIndex:1},{value:"fix: dragging an element to the left, right, or bottom would cause the element to disappear ",paraId:0,tocIndex:1},{value:"#620",paraId:0,tocIndex:1},{value:"feat: table action add reload button ",paraId:0,tocIndex:1},{value:"#630",paraId:0,tocIndex:1},{value:"feat: improve language settings ",paraId:0,tocIndex:1},{value:"#627",paraId:0,tocIndex:1},{value:"feat: field assignment for custom actions supports string variables ",paraId:0,tocIndex:1},{value:"#597",paraId:0,tocIndex:1},{value:"fix: skip recursive remove on grid component ",paraId:0,tocIndex:1},{value:"#621",paraId:0,tocIndex:1},{value:"feat: fix time and collection pagination ",paraId:0,tocIndex:1},{value:"#618",paraId:0,tocIndex:1},{value:"feat: recordblockinitializers fields pick ",paraId:0,tocIndex:1},{value:"#558",paraId:0,tocIndex:1},{value:"fix: incorrectly :active background ",paraId:0,tocIndex:1},{value:"#607",paraId:0,tocIndex:1},{value:"fix: obo table selector ",paraId:0,tocIndex:1},{value:"#613",paraId:0,tocIndex:1},{value:"feat: form validator ",paraId:0,tocIndex:1},{value:"#569",paraId:0,tocIndex:1},{value:"fix: table selector ",paraId:0,tocIndex:1},{value:"#612",paraId:0,tocIndex:1},{value:"chore(versions): \u{1F60A} publish v0.7.2-alpha.7 ",paraId:0,tocIndex:1},{value:"#611",paraId:0,tocIndex:1},{value:"chore(versions): \u{1F60A} publish v0.7.2-alpha.3 ",paraId:0,tocIndex:1},{value:"#608",paraId:0,tocIndex:1},{value:"chore(versions): \u{1F60A} publish v0.7.2-alpha.2 ",paraId:0,tocIndex:1},{value:"#606",paraId:0,tocIndex:1},{value:"fix(client): build error ",paraId:1,tocIndex:2},{value:"600f13f",paraId:1,tocIndex:2},{value:"fix(client): blocks are deleted when they are dragged below the current block ",paraId:1,tocIndex:2},{value:"20ab8c1",paraId:1,tocIndex:2},{value:"feat(client): plugin toolbar icons and translations ",paraId:1,tocIndex:2},{value:"c51c6c0",paraId:1,tocIndex:2}],pA={},IA={title:"v0.7.4\uFF1A2022-08-12",toc:"menu",filename:"docs/en-US/welcome/release/v0074-changelog.md",lastUpdated:173254844e4},_A=[{id:"v0742022-08-12",depth:1,title:"v0.7.4\uFF1A2022-08-12"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],vA=[{value:"chore(versions): \u{1F60A} publish v0.7.4-alpha.4 ",paraId:0,tocIndex:1},{value:"#727",paraId:0,tocIndex:1},{value:"fix: sync table sort to export ",paraId:0,tocIndex:1},{value:"#723",paraId:0,tocIndex:1},{value:"feat: full version of the NocoBase dockerfile ",paraId:0,tocIndex:1},{value:"#719",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix extend collection ",paraId:0,tocIndex:1},{value:"#708",paraId:0,tocIndex:1},{value:"fix: DB_TABLE_PREFIX doesn't get applied ",paraId:0,tocIndex:1},{value:"#710",paraId:0,tocIndex:1},{value:"feat: default value ",paraId:0,tocIndex:1},{value:"#679",paraId:0,tocIndex:1},{value:"fix: required field delete submit error (#688) ",paraId:0,tocIndex:1},{value:"#694",paraId:0,tocIndex:1},{value:"chore(versions): \u{1F60A} publish v0.7.4-alpha.1 ",paraId:0,tocIndex:1},{value:"#696",paraId:0,tocIndex:1},{value:"fix: append roles to current user ",paraId:0,tocIndex:1},{value:"#695",paraId:0,tocIndex:1},{value:"fix: fix date format ",paraId:0,tocIndex:1},{value:"#686",paraId:0,tocIndex:1},{value:"test(plugin-workflow): skip prompt tests ",paraId:0,tocIndex:1},{value:"#692",paraId:0,tocIndex:1},{value:"fix: fix accuracy of percent ",paraId:0,tocIndex:1},{value:"#685",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): adjust await sleep time for test cases ",paraId:0,tocIndex:1},{value:"#691",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add assignees config for prompt instruction ",paraId:0,tocIndex:1},{value:"#690",paraId:0,tocIndex:1},{value:"fix: role export button display (#616) ",paraId:0,tocIndex:1},{value:"#666",paraId:0,tocIndex:1},{value:"feat: uid validate ",paraId:0,tocIndex:1},{value:"#681",paraId:0,tocIndex:1},{value:"refactor: replace react-drag-listview with @dnd-kit/sortable ",paraId:0,tocIndex:1},{value:"#660",paraId:0,tocIndex:1},{value:"refactor(plugin-users): improve extendibility of middlewares ",paraId:0,tocIndex:1},{value:"#677",paraId:0,tocIndex:1},{value:"feat: o2m delete not refresh ",paraId:0,tocIndex:1},{value:"#646",paraId:0,tocIndex:1},{value:"feat: kanban add description ",paraId:0,tocIndex:1},{value:"#659",paraId:0,tocIndex:1},{value:"fix: field loss enum ",paraId:0,tocIndex:1},{value:"#667",paraId:0,tocIndex:1},{value:"feat: add editor hot key Ctrl+Shift+U ",paraId:0,tocIndex:1},{value:"#675",paraId:0,tocIndex:1},{value:"fix: Fix calendar change field error (#626) ",paraId:0,tocIndex:1},{value:"#671",paraId:0,tocIndex:1},{value:"chore: fix eslint not work ",paraId:0,tocIndex:1},{value:"#670",paraId:0,tocIndex:1},{value:"feat: number precision ",paraId:0,tocIndex:1},{value:"#661",paraId:0,tocIndex:1},{value:"feat: nginx config ",paraId:0,tocIndex:1},{value:"#664",paraId:0,tocIndex:1},{value:"feat: form item designer form switch issue ",paraId:0,tocIndex:1},{value:"#656",paraId:0,tocIndex:1},{value:"feat: add examples ",paraId:1,tocIndex:2},{value:"b848b9c",paraId:1,tocIndex:2},{value:"fix: record provider required for read pretty ",paraId:1,tocIndex:2},{value:"38c3e3e",paraId:1,tocIndex:2},{value:"Update README.zh-CN.md ",paraId:1,tocIndex:2},{value:"ba0e618",paraId:1,tocIndex:2},{value:"fix(client): fieldNames of RecordPicker ",paraId:1,tocIndex:2},{value:"9038d11",paraId:1,tocIndex:2},{value:"fix(client): required for the sub-table field ",paraId:1,tocIndex:2},{value:"609b0e2",paraId:1,tocIndex:2},{value:"feat(client): tab icon ",paraId:1,tocIndex:2},{value:"d9b2bf8",paraId:1,tocIndex:2}],mA={},hA={title:"v0.7.5\uFF1A2022-10-16",toc:"menu",filename:"docs/en-US/welcome/release/v0075-changelog.md",lastUpdated:173254844e4},fA=[{id:"v0752022-10-16",depth:1,title:"v0.7.5\uFF1A2022-10-16"},{id:"merged",depth:2,title:"Merged"},{id:"fixed",depth:2,title:"Fixed"},{id:"commits",depth:2,title:"Commits"}],xA=[{value:"chore(versions): \u{1F60A} publish v0.7.5-alpha.1 ",paraId:0,tocIndex:1},{value:"#920",paraId:0,tocIndex:1},{value:"Feat: plugin workflow collection field ",paraId:0,tocIndex:1},{value:"#919",paraId:0,tocIndex:1},{value:"feat: create with array of values ",paraId:0,tocIndex:1},{value:"#912",paraId:0,tocIndex:1},{value:"fix: unbind on error throwing ",paraId:0,tocIndex:1},{value:"#914",paraId:0,tocIndex:1},{value:"fix: appends merge now using primary key ",paraId:0,tocIndex:1},{value:"#911",paraId:0,tocIndex:1},{value:"feat: limit database identifier ",paraId:0,tocIndex:1},{value:"#908",paraId:0,tocIndex:1},{value:"fix: sync collection field default value ",paraId:0,tocIndex:1},{value:"#907",paraId:0,tocIndex:1},{value:"fix: appends merge includes ",paraId:0,tocIndex:1},{value:"#905",paraId:0,tocIndex:1},{value:"fix: single relation repository appends query issue ",paraId:0,tocIndex:1},{value:"#901",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add concat calculator ",paraId:0,tocIndex:1},{value:"#894",paraId:0,tocIndex:1},{value:"fix(client/record-picker): support record-picker show format DataPicker ",paraId:0,tocIndex:1},{value:"#888",paraId:0,tocIndex:1},{value:"fix(client/block-select-collection): fix select collection menu view error ",paraId:0,tocIndex:1},{value:"#889",paraId:0,tocIndex:1},{value:"fix: unable to submit form during file upload ",paraId:0,tocIndex:1},{value:"#892",paraId:0,tocIndex:1},{value:"fix: run test by jest ",paraId:0,tocIndex:1},{value:"#891",paraId:0,tocIndex:1},{value:"feat(collection-manager): inverse fields can be configured ",paraId:0,tocIndex:1},{value:"#883",paraId:0,tocIndex:1},{value:"fix(formula): support integer and fix NaN error ",paraId:0,tocIndex:1},{value:"#879",paraId:0,tocIndex:1},{value:"fix: sort parameter is missing ",paraId:0,tocIndex:1},{value:"#849",paraId:0,tocIndex:1},{value:"fix: slow join query issued by appends field in find method of repository ",paraId:0,tocIndex:1},{value:"#845",paraId:0,tocIndex:1},{value:"feat(core/cache): support cache ",paraId:0,tocIndex:1},{value:"#876",paraId:0,tocIndex:1},{value:"feat: update option must have filter or filterByTk ",paraId:0,tocIndex:1},{value:"#847",paraId:0,tocIndex:1},{value:"added Russian translation ",paraId:0,tocIndex:1},{value:"#840",paraId:0,tocIndex:1},{value:"feat(database): add sequence field type ",paraId:0,tocIndex:1},{value:"#779",paraId:0,tocIndex:1},{value:"fix: can't access pages without permission via url ",paraId:0,tocIndex:1},{value:"#826",paraId:0,tocIndex:1},{value:"refactor(resourcer): combine middleware class ",paraId:0,tocIndex:1},{value:"#825",paraId:0,tocIndex:1},{value:"refactor(database): fix some fields and types ",paraId:0,tocIndex:1},{value:"#820",paraId:0,tocIndex:1},{value:"feat(locale): added Japanese translation ",paraId:0,tocIndex:1},{value:"#813",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix value type for DatePicker to moment (#815) ",paraId:0,tocIndex:1},{value:"#819",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): export client calculators registry ",paraId:0,tocIndex:1},{value:"#816",paraId:0,tocIndex:1},{value:"fix: number storage type changed to double ",paraId:0,tocIndex:1},{value:"#810",paraId:0,tocIndex:1},{value:"refactor(server) ",paraId:0,tocIndex:1},{value:"#795",paraId:0,tocIndex:1},{value:"fix(plugin-verification): change provider rate limit error to 429 ",paraId:0,tocIndex:1},{value:"#788",paraId:0,tocIndex:1},{value:"fix(plugin-cm): fix field disappear after failed to update ",paraId:0,tocIndex:1},{value:"#773",paraId:0,tocIndex:1},{value:"fix: fix uiSchema undefined ",paraId:0,tocIndex:1},{value:"#770",paraId:0,tocIndex:1},{value:"fix(plugin-cm): fix unique option default value to update ",paraId:0,tocIndex:1},{value:"#768",paraId:0,tocIndex:1},{value:"fix(plugin-users): fix update profile 500 (#766) ",paraId:0,tocIndex:1},{value:"#767",paraId:0,tocIndex:1},{value:"fix: mysql column in where clause is ambiguous ",paraId:0,tocIndex:1},{value:"#756",paraId:0,tocIndex:1},{value:"feat(plugin-cm): add unique option for base fields ",paraId:0,tocIndex:1},{value:"#745",paraId:0,tocIndex:1},{value:"feat(plugin-verification): add plugin-verification and phone for users ",paraId:0,tocIndex:1},{value:"#722",paraId:0,tocIndex:1},{value:"feat: resize grid columns with drag and drop ",paraId:0,tocIndex:1},{value:"#748",paraId:0,tocIndex:1},{value:"refactor(client): split schema-initializer items into multiple files ",paraId:0,tocIndex:1},{value:"#744",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): change files mode to 644 ",paraId:0,tocIndex:1},{value:"#755",paraId:0,tocIndex:1},{value:"fix: db version check ",paraId:0,tocIndex:1},{value:"#749",paraId:0,tocIndex:1},{value:"feat: add examples ",paraId:0,tocIndex:1},{value:"#718",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix value type for DatePicker to moment (#815) (#819) ",paraId:1,tocIndex:2},{value:"#815",paraId:1,tocIndex:2},{value:"fix(plugin-users): fix update profile 500 (#766) (#767) ",paraId:1,tocIndex:2},{value:"#766",paraId:1,tocIndex:2},{value:"fix: db version check (#749) ",paraId:1,tocIndex:2},{value:"#742",paraId:1,tocIndex:2},{value:"fix(client): tab pane initializers for create form block ",paraId:2,tocIndex:3},{value:"7efc4bc",paraId:2,tocIndex:3},{value:"fix: transaction cannot be rolled back because it has been finished with state: rollback ",paraId:2,tocIndex:3},{value:"6dacec4",paraId:2,tocIndex:3},{value:"fix(database): fix the index name too long error ",paraId:2,tocIndex:3},{value:"7bfe6b8",paraId:2,tocIndex:3}],gA={},bA={title:"v0.8\uFF1A2022-11-01",toc:"menu",filename:"docs/en-US/welcome/release/v0080-changelog.md",lastUpdated:173254844e4,description:"Starting with v0.8, NocoBase begins to provide an available plugin manager and development documentation. Here are the main changes in v0.8."},yA=[{id:"v082022-11-01",depth:1,title:"v0.8\uFF1A2022-11-01"},{id:"tweaks-to-the-top-right-corner-of-the-interface",depth:2,title:"Tweaks to the top right corner of the interface"},{id:"the-new-plugin-manager",depth:2,title:"The new plugin manager"},{id:"plugin-manager-flow",depth:3,title:"Plugin manager flow"},{id:"plugin-manager-interface",depth:3,title:"Plugin Manager interface"},{id:"plugin-manager-command",depth:3,title:"Plugin Manager command"},{id:"changes-of-plugin",depth:2,title:"Changes of plugin"},{id:"plugins-directory-structure",depth:3,title:"Plugin\u2019s directory structure"},{id:"plugins-name-specification",depth:3,title:"Plugin\u2019s name specification"},{id:"plugins-lifecycle",depth:3,title:"Plugin\u2019s lifecycle"},{id:"front--and-back-end-entrance-for-plugins",depth:3,title:"Front- and back-end entrance for plugins"},{id:"custom-business-code",depth:2,title:"Custom business code"},{id:"more-complete-documentation-is-provided",depth:2,title:"More complete documentation is provided"},{id:"more-plugin-examples-are-provided",depth:2,title:"More plugin examples are provided"},{id:"other-new-features-and-functionality",depth:2,title:"Other new features and functionality"}],wA=[{value:"Starting with v0.8, NocoBase begins to provide an available plugin manager and development documentation. Here are the main changes in v0.8.",paraId:0,tocIndex:0},{value:"UI Editor",paraId:1,tocIndex:1},{value:"Plugin Manager",paraId:1,tocIndex:1},{value:"Settings Center",paraId:1,tocIndex:1},{value:"Personal Center",paraId:1,tocIndex:1},{value:"v0.8 provides a powerful plugin manager for managing plugins in a no-code way.",paraId:2,tocIndex:2},{value:"Currently it is mainly used for disabling, activating and deleting local plugins. Built-in plugins cannot be deleted.",paraId:3,tocIndex:4},{value:"In addition to being able to activate and disable plugins from the no-code interface, you can also manage plugins more completely from the command line.",paraId:4,tocIndex:5},{value:`# Create a plugin yarn pm create hello # Register the plugin yarn pm add hello @@ -12828,7 +12880,7 @@ HelloProvider.displayName = 'HelloProvider' app.use(HelloProvider); -`,paraId:22,tocIndex:10},{value:"v0.7 plugins are not complete, custom business code may be scattered in ",paraId:23,tocIndex:11},{value:"packages/app/client",paraId:23,tocIndex:11},{value:" and ",paraId:23,tocIndex:11},{value:"packages/app/server",paraId:23,tocIndex:11},{value:", which is not conducive to upgrade and maintenance. v0.8 recommends organizing as a plugin package and using ",paraId:23,tocIndex:11},{value:"yarn pm",paraId:23,tocIndex:11},{value:" to manage plugins.",paraId:23,tocIndex:11},{value:"Welcome",paraId:24,tocIndex:12},{value:": a quick look at NocoBase",paraId:24,tocIndex:12},{value:"Manual",paraId:24,tocIndex:12},{value:": learn more about the core features provided by the NocoBase platform",paraId:24,tocIndex:12},{value:"Plugin Development Tutorial",paraId:24,tocIndex:12},{value:": Advanced dive into plugin development",paraId:24,tocIndex:12},{value:"API Reference",paraId:24,tocIndex:12},{value:": Check the API usage during plugin development",paraId:24,tocIndex:12},{value:"Client Components Library",paraId:24,tocIndex:12},{value:" (in preparation): provides examples and usage of NocoBase components",paraId:24,tocIndex:12},{value:"command",paraId:25,tocIndex:13},{value:"custom-block",paraId:25,tocIndex:13},{value:"custom-page",paraId:25,tocIndex:13},{value:"custom-signup-page",paraId:25,tocIndex:13},{value:"hello",paraId:25,tocIndex:13},{value:"ratelimit",paraId:25,tocIndex:13},{value:"shop-actions",paraId:25,tocIndex:13},{value:"shop-events",paraId:25,tocIndex:13},{value:"shop-i18n",paraId:25,tocIndex:13},{value:"shop-modeling",paraId:25,tocIndex:13},{value:"Import from Excel",paraId:26,tocIndex:14},{value:"Bulk Update & Edit",paraId:26,tocIndex:14},{value:"Graphical collection",paraId:26,tocIndex:14},{value:"Workflow support for viewing execution history",paraId:26,tocIndex:14},{value:"JSON field",paraId:26,tocIndex:14}],kA={},SA={title:"v0.9.1\uFF1A2023-03-09",toc:"menu",filename:"docs/en-US/welcome/release/v0091-changelog.md",lastUpdated:1732240239e3},UA=[{id:"v0912023-03-09",depth:1,title:"v0.9.1\uFF1A2023-03-09"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],PA=[{value:"fix(plugin-workflow): fix module import (#1550) ",paraId:0,tocIndex:1},{value:"#1552",paraId:0,tocIndex:1},{value:"chore: relation repository response when source model not found ",paraId:0,tocIndex:1},{value:"#1546",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix assignees config component in manual node ",paraId:0,tocIndex:1},{value:"#1547",paraId:0,tocIndex:1},{value:"feat: stopped state in application ",paraId:0,tocIndex:1},{value:"#1543",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix AssociationInput field path ",paraId:0,tocIndex:1},{value:"#1542",paraId:0,tocIndex:1},{value:"fix: cache with index.html ",paraId:0,tocIndex:1},{value:"#1541",paraId:0,tocIndex:1},{value:"fix: belongs to many through table with custom schema ",paraId:0,tocIndex:1},{value:"#1539",paraId:0,tocIndex:1},{value:"fix(plugin-formula): expose formula field result in form ",paraId:0,tocIndex:1},{value:"#1534",paraId:0,tocIndex:1},{value:"test: with collection_manager_schema env ",paraId:0,tocIndex:1},{value:"#1532",paraId:0,tocIndex:1},{value:"fix: filter by association field with underscored ",paraId:0,tocIndex:1},{value:"#1537",paraId:0,tocIndex:1},{value:"fix(charts): fix copy ",paraId:0,tocIndex:1},{value:"#1533",paraId:0,tocIndex:1},{value:"feat: add chart plugin ",paraId:0,tocIndex:1},{value:"#1477",paraId:0,tocIndex:1},{value:"feat: support add new in block for inheritance collection ",paraId:0,tocIndex:1},{value:"#1518",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): change canvas card and adjust styles ",paraId:0,tocIndex:1},{value:"#1529",paraId:0,tocIndex:1},{value:"fix: test with nocobase plugin ",paraId:0,tocIndex:1},{value:"#1525",paraId:0,tocIndex:1},{value:"fix: nginx cache ",paraId:0,tocIndex:1},{value:"#1523",paraId:0,tocIndex:1},{value:"fix: remove field when collection has difference schema with database ",paraId:0,tocIndex:1},{value:"#1524",paraId:0,tocIndex:1},{value:"refactor: audit logs block ",paraId:0,tocIndex:1},{value:"#1517",paraId:0,tocIndex:1},{value:"fix(evaluators): fix preprocessing and add test cases ",paraId:0,tocIndex:1},{value:"#1519",paraId:0,tocIndex:1},{value:"chore(debug): fix debug filename when run test ",paraId:0,tocIndex:1},{value:"#1520",paraId:0,tocIndex:1},{value:"feat: collection manager schema env ",paraId:0,tocIndex:1},{value:"#1506",paraId:0,tocIndex:1},{value:"fix(client): fix checkbox unchecked display ",paraId:0,tocIndex:1},{value:"#1508",paraId:0,tocIndex:1},{value:"feat(snapshot-field): improve transition ",paraId:0,tocIndex:1},{value:"#1513",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix CollectionField validation when using variable ",paraId:0,tocIndex:1},{value:"#1512",paraId:0,tocIndex:1},{value:"feat(plugin-formula): calculation with snapshot field ",paraId:0,tocIndex:1},{value:"#1498",paraId:0,tocIndex:1},{value:"fix(association-select): filter without data scope not work ",paraId:0,tocIndex:1},{value:"#1509",paraId:0,tocIndex:1},{value:"feat: fallback sort field init to createdAt field ",paraId:0,tocIndex:1},{value:"#1507",paraId:0,tocIndex:1},{value:"fix(graphical-interface): collection category does not display title ",paraId:0,tocIndex:1},{value:"#1503",paraId:0,tocIndex:1},{value:"fix(association-select): data is incorrect when use data scope ",paraId:0,tocIndex:1},{value:"#1491",paraId:0,tocIndex:1},{value:"feat: dialect version accessors ",paraId:0,tocIndex:1},{value:"#1502",paraId:0,tocIndex:1},{value:"fix: collection schema updated but model _schema not change ",paraId:0,tocIndex:1},{value:"#1500",paraId:0,tocIndex:1},{value:"Update zh_CN.ts ",paraId:0,tocIndex:1},{value:"#1481",paraId:0,tocIndex:1},{value:"fix(linkageRules): support empty condiction ",paraId:0,tocIndex:1},{value:"#1496",paraId:0,tocIndex:1},{value:"feat: form/button linkage rules ",paraId:0,tocIndex:1},{value:"#1456",paraId:0,tocIndex:1},{value:"fix: collection importer has incorrect reference ",paraId:0,tocIndex:1},{value:"#1495",paraId:0,tocIndex:1},{value:"feat: support custom plugin deployment in dockerfile ",paraId:0,tocIndex:1},{value:"#1494",paraId:0,tocIndex:1},{value:"fix: environment variables ",paraId:0,tocIndex:1},{value:"#1490",paraId:0,tocIndex:1},{value:"feat: prepare database method ",paraId:0,tocIndex:1},{value:"#1492",paraId:0,tocIndex:1},{value:"Fix/multiple schema query ",paraId:0,tocIndex:1},{value:"#1488",paraId:0,tocIndex:1},{value:"fix: string violation ",paraId:0,tocIndex:1},{value:"#1487",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): migrate evaluators ",paraId:0,tocIndex:1},{value:"#1485",paraId:0,tocIndex:1},{value:"docs: fix typo ",paraId:0,tocIndex:1},{value:"#1482",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix customized job status ",paraId:0,tocIndex:1},{value:"#1484",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix condition config param ",paraId:0,tocIndex:1},{value:"#1483",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix migration ",paraId:0,tocIndex:1},{value:"#1479",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix migration on table prefix ",paraId:0,tocIndex:1},{value:"#1478",paraId:0,tocIndex:1},{value:"refactor(plugin-formula): combine 2 formula field type into 1 ",paraId:0,tocIndex:1},{value:"#1457",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix migration for calculation ",paraId:0,tocIndex:1},{value:"#1476",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix schedule trigger number type repeat ",paraId:0,tocIndex:1},{value:"#1475",paraId:0,tocIndex:1},{value:"Feat(plugin-workflow) manual instruction ",paraId:0,tocIndex:1},{value:"#1339",paraId:0,tocIndex:1},{value:"feat: support for importing attachments ",paraId:0,tocIndex:1},{value:"#1466",paraId:0,tocIndex:1},{value:"fix: column not exists error after destory relation field ",paraId:0,tocIndex:1},{value:"#1465",paraId:0,tocIndex:1},{value:"fix: add schema ",paraId:0,tocIndex:1},{value:"#1464",paraId:0,tocIndex:1},{value:"fix: avoid o2o, o2m can select the data already selected ",paraId:0,tocIndex:1},{value:"#1462",paraId:0,tocIndex:1},{value:"feat: add test cases ",paraId:0,tocIndex:1},{value:"#1463",paraId:0,tocIndex:1},{value:"feat: update zh_CN.ts ",paraId:0,tocIndex:1},{value:"#1458",paraId:0,tocIndex:1},{value:"refactor: export plugin ",paraId:0,tocIndex:1},{value:"#1460",paraId:0,tocIndex:1},{value:"Fix/pg schema with inherit ",paraId:0,tocIndex:1},{value:"#1446",paraId:0,tocIndex:1},{value:"feat: multiple apps admin ",paraId:0,tocIndex:1},{value:"#1431",paraId:0,tocIndex:1},{value:"chore: fix build plugin error ",paraId:0,tocIndex:1},{value:"#1454",paraId:0,tocIndex:1},{value:"feat: provide the underscored option for the database ",paraId:0,tocIndex:1},{value:"#1366",paraId:0,tocIndex:1},{value:'Revert "fix(table): make filed overflow behavior right (#1392)" ',paraId:0,tocIndex:1},{value:"#1452",paraId:0,tocIndex:1},{value:"fix(collection category): zh_cn locale defect ",paraId:0,tocIndex:1},{value:"#1451",paraId:0,tocIndex:1},{value:"feat: add namespace and duplicator parameters for collection options ",paraId:0,tocIndex:1},{value:"#1449",paraId:0,tocIndex:1},{value:"fix(snapshot-field): remove depth limit ",paraId:0,tocIndex:1},{value:"#1450",paraId:0,tocIndex:1},{value:"chore: update licenses url ",paraId:0,tocIndex:1},{value:"#1285",paraId:0,tocIndex:1},{value:"feat: association snapshot ",paraId:0,tocIndex:1},{value:"#1438",paraId:0,tocIndex:1},{value:"fix(table): make filed overflow behavior right ",paraId:0,tocIndex:1},{value:"#1392",paraId:0,tocIndex:1},{value:"fix(plugin-sequence): fix missed createdAt field in bulk hook ",paraId:0,tocIndex:1},{value:"#1448",paraId:0,tocIndex:1},{value:"fix: error:0308010C:digital envelope routines::unsupported ",paraId:0,tocIndex:1},{value:"#1447",paraId:0,tocIndex:1},{value:"feat: collection categories ",paraId:0,tocIndex:1},{value:"#1327",paraId:0,tocIndex:1},{value:"fix(plugin-fm): fix path config for storages ",paraId:0,tocIndex:1},{value:"#1445",paraId:0,tocIndex:1},{value:"fix: node.js 17+, add openssl-legacy-provider ",paraId:0,tocIndex:1},{value:"#1434",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix schedule on field null value ",paraId:0,tocIndex:1},{value:"#1442",paraId:0,tocIndex:1},{value:"feat: pg schema support ",paraId:0,tocIndex:1},{value:"#1439",paraId:0,tocIndex:1},{value:"fix(i18n): set key and ns separator default to false ",paraId:0,tocIndex:1},{value:"#1432",paraId:0,tocIndex:1},{value:"feat: disable trigger when import collection ",paraId:0,tocIndex:1},{value:"#1417",paraId:0,tocIndex:1},{value:"chore: translate 'Add tab' in page header ",paraId:0,tocIndex:1},{value:"#1424",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): use promise to request ",paraId:0,tocIndex:1},{value:"#1426",paraId:0,tocIndex:1},{value:"fix(acl): custom appends merge strategy ",paraId:0,tocIndex:1},{value:"#1416",paraId:0,tocIndex:1},{value:"docs: update G2Plot example url ",paraId:0,tocIndex:1},{value:"#1408",paraId:0,tocIndex:1},{value:"docs: fix typo ",paraId:0,tocIndex:1},{value:"#1412",paraId:0,tocIndex:1},{value:"fix(FixedBlock): using both association filters and FixedBlock does not show the complete table ",paraId:0,tocIndex:1},{value:"#1405",paraId:0,tocIndex:1},{value:"feat(calendar): startDate and endDate support the use of association fields ",paraId:0,tocIndex:1},{value:"#1397",paraId:0,tocIndex:1},{value:"fix: load through collection before belongsToMany field bind ",paraId:0,tocIndex:1},{value:"#1409",paraId:0,tocIndex:1},{value:"feat(verification-plugin): support tencent sms ",paraId:0,tocIndex:1},{value:"#1382",paraId:0,tocIndex:1},{value:"fix: foreign keys are editable when adding fields ",paraId:0,tocIndex:1},{value:"#1404",paraId:0,tocIndex:1},{value:"fix: navbar_ui style ",paraId:0,tocIndex:1},{value:"#1398",paraId:0,tocIndex:1},{value:"fix: inherit startup sort ",paraId:0,tocIndex:1},{value:"#1402",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix url input width for request config ",paraId:0,tocIndex:1},{value:"#1401",paraId:0,tocIndex:1},{value:"Fix/snapshot ",paraId:0,tocIndex:1},{value:"#1396",paraId:0,tocIndex:1},{value:"feat: fix through collections inherits filter ",paraId:0,tocIndex:1},{value:"#1394",paraId:0,tocIndex:1},{value:"Fix(plugin-sequence): support sequence field in m2m through table ",paraId:0,tocIndex:1},{value:"#1383",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): adjust executed alert position ",paraId:0,tocIndex:1},{value:"#1381",paraId:0,tocIndex:1},{value:"fix: through collection individual hooks ",paraId:0,tocIndex:1},{value:"#1378",paraId:0,tocIndex:1},{value:"fix: through collection records should not be reset ",paraId:0,tocIndex:1},{value:"#1377",paraId:0,tocIndex:1},{value:"feat(client): add form disabled context ",paraId:0,tocIndex:1},{value:"#1374",paraId:0,tocIndex:1},{value:"Fix(plugin-workflow): request node ",paraId:0,tocIndex:1},{value:"#1367",paraId:0,tocIndex:1},{value:"docs: add plug-in documentation ",paraId:1,tocIndex:2},{value:"68511f0",paraId:1,tocIndex:2},{value:"feat(db): field value parser ",paraId:1,tocIndex:2},{value:"5805b69",paraId:1,tocIndex:2},{value:"chore(versions): \u{1F60A} publish v0.9.1-alpha.1 ",paraId:1,tocIndex:2},{value:"946c8f2",paraId:1,tocIndex:2}],TA={},CA={title:"v0.9.2\uFF1A2023-04-19",toc:"menu",filename:"docs/en-US/welcome/release/v0092-changelog.md",lastUpdated:1732240239e3},AA=[{id:"v0922023-04-19",depth:1,title:"v0.9.2\uFF1A2023-04-19"},{id:"merged",depth:2,title:"Merged"},{id:"fixed",depth:2,title:"Fixed"},{id:"commits",depth:2,title:"Commits"}],qA=[{value:"refactor(plugin-workflow): change single form to custom form block ",paraId:0,tocIndex:1},{value:"#1707",paraId:0,tocIndex:1},{value:"chore(ci): add timeout config for jobs ",paraId:0,tocIndex:1},{value:"#1725",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): migrate menu items to options ",paraId:0,tocIndex:1},{value:"#1724",paraId:0,tocIndex:1},{value:"fix(client): fix error on clear value in variable input ",paraId:0,tocIndex:1},{value:"#1723",paraId:0,tocIndex:1},{value:"fix(record-picker): fix the table paging problem ",paraId:0,tocIndex:1},{value:"#1718",paraId:0,tocIndex:1},{value:"fix(map-plugin): some data is incorrect ",paraId:0,tocIndex:1},{value:"#1717",paraId:0,tocIndex:1},{value:"fix: data scope not effect in gantt ",paraId:0,tocIndex:1},{value:"#1716",paraId:0,tocIndex:1},{value:"fix: button loading does not disappear when the operation submit failed ",paraId:0,tocIndex:1},{value:"#1698",paraId:0,tocIndex:1},{value:"fix(linkage rule):multiple select condition judgment failed ",paraId:0,tocIndex:1},{value:"#1715",paraId:0,tocIndex:1},{value:"Fix/save through table data ",paraId:0,tocIndex:1},{value:"#1714",paraId:0,tocIndex:1},{value:"feat: improve ui design for linkage action ",paraId:0,tocIndex:1},{value:"#1659",paraId:0,tocIndex:1},{value:"feat(map): support to filter other blocks ",paraId:0,tocIndex:1},{value:"#1691",paraId:0,tocIndex:1},{value:"refactor: improve linkage rule enable ",paraId:0,tocIndex:1},{value:"#1700",paraId:0,tocIndex:1},{value:"fix: find fields arg ",paraId:0,tocIndex:1},{value:"#1710",paraId:0,tocIndex:1},{value:"feat(form-block): data templates ",paraId:0,tocIndex:1},{value:"#1704",paraId:0,tocIndex:1},{value:"fix: linkage relationship data condition judgment failed ",paraId:0,tocIndex:1},{value:"#1681",paraId:0,tocIndex:1},{value:"fix(gantt): update permission check in gantt block ",paraId:0,tocIndex:1},{value:"#1701",paraId:0,tocIndex:1},{value:"fix: clearFormGraph ",paraId:0,tocIndex:1},{value:"#1706",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix request body variable component ",paraId:0,tocIndex:1},{value:"#1703",paraId:0,tocIndex:1},{value:"fix(gantt): improve task bar text ",paraId:0,tocIndex:1},{value:"#1696",paraId:0,tocIndex:1},{value:"fix: long text should be line feed ",paraId:0,tocIndex:1},{value:"#1686",paraId:0,tocIndex:1},{value:"fix: cannot display data when remove last page and the page only just one item ",paraId:0,tocIndex:1},{value:"#1685",paraId:0,tocIndex:1},{value:"fix: meta acl with association query ",paraId:0,tocIndex:1},{value:"#1695",paraId:0,tocIndex:1},{value:"fix: linkage rule title can not set empty ",paraId:0,tocIndex:1},{value:"#1688",paraId:0,tocIndex:1},{value:"feat: improve plugin manager ui ",paraId:0,tocIndex:1},{value:"#1650",paraId:0,tocIndex:1},{value:"feat: gantt block ",paraId:0,tocIndex:1},{value:"#1393",paraId:0,tocIndex:1},{value:"fix(client): fix constant input lose focus in variable ",paraId:0,tocIndex:1},{value:"#1689",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add workflow specific logger ",paraId:0,tocIndex:1},{value:"#1677",paraId:0,tocIndex:1},{value:"fix: remove designer ",paraId:0,tocIndex:1},{value:"#1684",paraId:0,tocIndex:1},{value:"test: should load the .env.test ",paraId:0,tocIndex:1},{value:"#1678",paraId:0,tocIndex:1},{value:"fix: incorrect language after logout ",paraId:0,tocIndex:1},{value:"#1679",paraId:0,tocIndex:1},{value:"feat: optimize file collection ",paraId:0,tocIndex:1},{value:"#1666",paraId:0,tocIndex:1},{value:"fix: sort field init performance ",paraId:0,tocIndex:1},{value:"#1675",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix null collection fields ",paraId:0,tocIndex:1},{value:"#1674",paraId:0,tocIndex:1},{value:"fix(client): fix variable component read pretty mode ",paraId:0,tocIndex:1},{value:"#1673",paraId:0,tocIndex:1},{value:"fix: ui problem of compact theme ",paraId:0,tocIndex:1},{value:"#1670",paraId:0,tocIndex:1},{value:"fix: linkage rule enable effect in form ",paraId:0,tocIndex:1},{value:"#1669",paraId:0,tocIndex:1},{value:"feat: collection template summary ",paraId:0,tocIndex:1},{value:"#1672",paraId:0,tocIndex:1},{value:"feat: (plugin-workflow) dynamic expression ",paraId:0,tocIndex:1},{value:"#1560",paraId:0,tocIndex:1},{value:"chore: find inherit collection warn ",paraId:0,tocIndex:1},{value:"#1663",paraId:0,tocIndex:1},{value:"fix: linkage rule title config clear exception ",paraId:0,tocIndex:1},{value:"#1665",paraId:0,tocIndex:1},{value:"feat: support tableoid filter ",paraId:0,tocIndex:1},{value:"#1657",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add array mapping support in processor ",paraId:0,tocIndex:1},{value:"#1662",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix appends null to collection trigger ",paraId:0,tocIndex:1},{value:"#1661",paraId:0,tocIndex:1},{value:"feat(filter-operators): eq and ne operators support array ",paraId:0,tocIndex:1},{value:"#1658",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix todo drawer data load ",paraId:0,tocIndex:1},{value:"#1656",paraId:0,tocIndex:1},{value:"refactor(client): improve translation ",paraId:0,tocIndex:1},{value:"#1654",paraId:0,tocIndex:1},{value:"fix: fix the 'Add menu item' button disappears ",paraId:0,tocIndex:1},{value:"#1655",paraId:0,tocIndex:1},{value:"chore: add new allowAddtoCurrent config ",paraId:0,tocIndex:1},{value:"#1652",paraId:0,tocIndex:1},{value:"feat: support file collection ",paraId:0,tocIndex:1},{value:"#1636",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix manual node drawer ",paraId:0,tocIndex:1},{value:"#1653",paraId:0,tocIndex:1},{value:"chore: inhertis api with difference schema ",paraId:0,tocIndex:1},{value:"#1545",paraId:0,tocIndex:1},{value:"fix: select record can not enable child collection ",paraId:0,tocIndex:1},{value:"#1649",paraId:0,tocIndex:1},{value:"feat: plugin before enable hook ",paraId:0,tocIndex:1},{value:"#1648",paraId:0,tocIndex:1},{value:"chore: add transaction in set field action ",paraId:0,tocIndex:1},{value:"#1647",paraId:0,tocIndex:1},{value:"fix(linkage rule):linkage rule not display in action ",paraId:0,tocIndex:1},{value:"#1644",paraId:0,tocIndex:1},{value:"refactor: view collection options ",paraId:0,tocIndex:1},{value:"#1643",paraId:0,tocIndex:1},{value:"fix: update field error ",paraId:0,tocIndex:1},{value:"#1645",paraId:0,tocIndex:1},{value:"feat(Table): column action support linkage rules ",paraId:0,tocIndex:1},{value:"#1638",paraId:0,tocIndex:1},{value:"fix(view-collection): field name cannot be edited when there with field source ",paraId:0,tocIndex:1},{value:"#1642",paraId:0,tocIndex:1},{value:"fix: linkage rule config closing rules require reopening the form to take effect ",paraId:0,tocIndex:1},{value:"#1640",paraId:0,tocIndex:1},{value:"refactor(client): change Variable.TextArea to controlled component ",paraId:0,tocIndex:1},{value:"#1605",paraId:0,tocIndex:1},{value:"fix: get pg view def ",paraId:0,tocIndex:1},{value:"#1641",paraId:0,tocIndex:1},{value:"fix: infer view column type with alias ",paraId:0,tocIndex:1},{value:"#1634",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix minors ui issues ",paraId:0,tocIndex:1},{value:"#1635",paraId:0,tocIndex:1},{value:"chore: disabled underscored in view collection. ",paraId:0,tocIndex:1},{value:"#1633",paraId:0,tocIndex:1},{value:"fix: form action dragging area is too large ",paraId:0,tocIndex:1},{value:"#1628",paraId:0,tocIndex:1},{value:"fix: FixedBlock related ui ",paraId:0,tocIndex:1},{value:"#1632",paraId:0,tocIndex:1},{value:"feat: database view collection ",paraId:0,tocIndex:1},{value:"#1587",paraId:0,tocIndex:1},{value:"fix: init sort value in sort field with scopeKey ",paraId:0,tocIndex:1},{value:"#1626",paraId:0,tocIndex:1},{value:"style: linkage rule style improve ",paraId:0,tocIndex:1},{value:"#1625",paraId:0,tocIndex:1},{value:"fix: find with attributes and group ",paraId:0,tocIndex:1},{value:"#1411",paraId:0,tocIndex:1},{value:"docs: transform video link to video tag ",paraId:0,tocIndex:1},{value:"#1414",paraId:0,tocIndex:1},{value:"feat(parse-variables): support to parse variables in filter params ",paraId:0,tocIndex:1},{value:"#1558",paraId:0,tocIndex:1},{value:"fix(linkage rules) : support naming, enabling and disabling, copying, and assigning null values ",paraId:0,tocIndex:1},{value:"#1511",paraId:0,tocIndex:1},{value:"chore: update test ci ",paraId:0,tocIndex:1},{value:"#1622",paraId:0,tocIndex:1},{value:"fix: history add new button does not support enabling child collection ",paraId:0,tocIndex:1},{value:"#1536",paraId:0,tocIndex:1},{value:"fix/(linkages-action): detail block actions does not support linkage rules ",paraId:0,tocIndex:1},{value:"#1504",paraId:0,tocIndex:1},{value:"fix: avoid fixedblock height working in popup ",paraId:0,tocIndex:1},{value:"#1621",paraId:0,tocIndex:1},{value:"fix: when the page has FixedBlock, the table of popup is not displayed ",paraId:0,tocIndex:1},{value:"#1619",paraId:0,tocIndex:1},{value:"feat: association-filter-improve ",paraId:0,tocIndex:1},{value:"#1606",paraId:0,tocIndex:1},{value:"fix(Table): cannot display table data ",paraId:0,tocIndex:1},{value:"#1617",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix todo list form read-pretty for non-assigneed user ",paraId:0,tocIndex:1},{value:"#1615",paraId:0,tocIndex:1},{value:"feat(table): hidden pagination when only one page is available ",paraId:0,tocIndex:1},{value:"#1614",paraId:0,tocIndex:1},{value:"refactor: improve FixedBlock performance ",paraId:0,tocIndex:1},{value:"#1593",paraId:0,tocIndex:1},{value:"fix(collection-manager): infinite recursion ",paraId:0,tocIndex:1},{value:"#1608",paraId:0,tocIndex:1},{value:"fix(audit-logs): Add ellipsis feature to table columns ",paraId:0,tocIndex:1},{value:"#1603",paraId:0,tocIndex:1},{value:"feat: improve the non-link ui of association data ",paraId:0,tocIndex:1},{value:"#1602",paraId:0,tocIndex:1},{value:"feat(Kanban): the card support open mode ",paraId:0,tocIndex:1},{value:"#1601",paraId:0,tocIndex:1},{value:"fix( importable-field): incorrect display when moving sort handle ",paraId:0,tocIndex:1},{value:"#1613",paraId:0,tocIndex:1},{value:"fix: enable child collections remain after deleting a child collection ",paraId:0,tocIndex:1},{value:"#1610",paraId:0,tocIndex:1},{value:"fix: destroy through table record referencing collections table ",paraId:0,tocIndex:1},{value:"#1611",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): add default actions value of manual node ",paraId:0,tocIndex:1},{value:"#1600",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add failOnEmpty option for query node ",paraId:0,tocIndex:1},{value:"#1599",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): use toJSON instead of get to get valid result ",paraId:0,tocIndex:1},{value:"#1596",paraId:0,tocIndex:1},{value:"Translation pt-BR (Brazilian Portuguese) ",paraId:0,tocIndex:1},{value:"#1591",paraId:0,tocIndex:1},{value:"fix: role permission add new scope display blank ",paraId:0,tocIndex:1},{value:"#1592",paraId:0,tocIndex:1},{value:"fix(FixedBlock): avoid kanban triggering programmatic scrolling ",paraId:0,tocIndex:1},{value:"#1406",paraId:0,tocIndex:1},{value:"fix: repeat request categories when switching between graph interface and collection&fields ",paraId:0,tocIndex:1},{value:"#1590",paraId:0,tocIndex:1},{value:"fix: collectionFieldsOptions cannot get all fields ",paraId:0,tocIndex:1},{value:"#1588",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix input width in request node config ",paraId:0,tocIndex:1},{value:"#1585",paraId:0,tocIndex:1},{value:"feat(filter-blocks): support filter-blocks ",paraId:0,tocIndex:1},{value:"#1505",paraId:0,tocIndex:1},{value:"refactor: multi-app ",paraId:0,tocIndex:1},{value:"#1578",paraId:0,tocIndex:1},{value:"feat: compact theme ",paraId:0,tocIndex:1},{value:"#1574",paraId:0,tocIndex:1},{value:"feat: support cron field ",paraId:0,tocIndex:1},{value:"#1421",paraId:0,tocIndex:1},{value:"fix(Calendar): ensur to get correct gridInitializer when adding a new\u2026 ",paraId:0,tocIndex:1},{value:"#1425",paraId:0,tocIndex:1},{value:"feat(markdown): support mermaid and better style ",paraId:0,tocIndex:1},{value:"#1583",paraId:0,tocIndex:1},{value:"fix(plugin-map): map block repeats ",paraId:0,tocIndex:1},{value:"#1582",paraId:0,tocIndex:1},{value:"feat: tree collection ",paraId:0,tocIndex:1},{value:"#1561",paraId:0,tocIndex:1},{value:"feat(plugin-map): add map block ",paraId:0,tocIndex:1},{value:"#1486",paraId:0,tocIndex:1},{value:"chore: lazy load sub app in share collection ",paraId:0,tocIndex:1},{value:"#1569",paraId:0,tocIndex:1},{value:"fix(record-picker): supports adding sub-collection records ",paraId:0,tocIndex:1},{value:"#1573",paraId:0,tocIndex:1},{value:"fix: app manager reload ",paraId:0,tocIndex:1},{value:"#1565",paraId:0,tocIndex:1},{value:"feat: multi-app-share-collection plugin ",paraId:0,tocIndex:1},{value:"#1562",paraId:0,tocIndex:1},{value:"feat: record picker support to enable links ",paraId:0,tocIndex:1},{value:"#1515",paraId:0,tocIndex:1},{value:"feat: multiple apps ",paraId:0,tocIndex:1},{value:"#1540",paraId:0,tocIndex:1},{value:"docs(client): add variable docs ",paraId:0,tocIndex:1},{value:"#1556",paraId:0,tocIndex:1},{value:"fix(charts): improve chart table preview with object type ",paraId:0,tocIndex:1},{value:"#1555",paraId:0,tocIndex:1},{value:"feat(plugin-workflow) config preload associations in triggers and nodes ",paraId:0,tocIndex:1},{value:"#1548",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix todo list form read-pretty for non-assigneed user (#1615) ",paraId:1,tocIndex:2},{value:"#1572",paraId:1,tocIndex:2},{value:"chore(versions): \u{1F60A} publish v0.9.2-alpha.1 ",paraId:2,tocIndex:3},{value:"d1adc9d",paraId:2,tocIndex:3},{value:"fix(file-manager): upgrade s3 version ",paraId:2,tocIndex:3},{value:"50183b0",paraId:2,tocIndex:3},{value:"fix: linkage rule ",paraId:2,tocIndex:3},{value:"b8776fe",paraId:2,tocIndex:3}],EA={},DA={title:"v0.9.3\uFF1A2023-05-11",toc:"menu",filename:"docs/en-US/welcome/release/v0093-changelog.md",lastUpdated:1732240239e3},OA=[{id:"v0932023-05-11",depth:1,title:"v0.9.3\uFF1A2023-05-11"},{id:"merged",depth:2,title:"Merged"},{id:"fixed",depth:2,title:"Fixed"},{id:"commits",depth:2,title:"Commits"}],RA=[{value:"refactor(plugin-workflow): change single form to custom form block ",paraId:0,tocIndex:1},{value:"#1707",paraId:0,tocIndex:1},{value:"chore(ci): add timeout config for jobs ",paraId:0,tocIndex:1},{value:"#1725",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): migrate menu items to options ",paraId:0,tocIndex:1},{value:"#1724",paraId:0,tocIndex:1},{value:"fix(client): fix error on clear value in variable input ",paraId:0,tocIndex:1},{value:"#1723",paraId:0,tocIndex:1},{value:"fix(record-picker): fix the table paging problem ",paraId:0,tocIndex:1},{value:"#1718",paraId:0,tocIndex:1},{value:"fix(map-plugin): some data is incorrect ",paraId:0,tocIndex:1},{value:"#1717",paraId:0,tocIndex:1},{value:"fix: data scope not effect in gantt ",paraId:0,tocIndex:1},{value:"#1716",paraId:0,tocIndex:1},{value:"fix: button loading does not disappear when the operation submit failed ",paraId:0,tocIndex:1},{value:"#1698",paraId:0,tocIndex:1},{value:"fix(linkage rule):multiple select condition judgment failed ",paraId:0,tocIndex:1},{value:"#1715",paraId:0,tocIndex:1},{value:"Fix/save through table data ",paraId:0,tocIndex:1},{value:"#1714",paraId:0,tocIndex:1},{value:"feat: improve ui design for linkage action ",paraId:0,tocIndex:1},{value:"#1659",paraId:0,tocIndex:1},{value:"feat(map): support to filter other blocks ",paraId:0,tocIndex:1},{value:"#1691",paraId:0,tocIndex:1},{value:"refactor: improve linkage rule enable ",paraId:0,tocIndex:1},{value:"#1700",paraId:0,tocIndex:1},{value:"fix: find fields arg ",paraId:0,tocIndex:1},{value:"#1710",paraId:0,tocIndex:1},{value:"feat(form-block): data templates ",paraId:0,tocIndex:1},{value:"#1704",paraId:0,tocIndex:1},{value:"fix: linkage relationship data condition judgment failed ",paraId:0,tocIndex:1},{value:"#1681",paraId:0,tocIndex:1},{value:"fix(gantt): update permission check in gantt block ",paraId:0,tocIndex:1},{value:"#1701",paraId:0,tocIndex:1},{value:"fix: clearFormGraph ",paraId:0,tocIndex:1},{value:"#1706",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix request body variable component ",paraId:0,tocIndex:1},{value:"#1703",paraId:0,tocIndex:1},{value:"fix(gantt): improve task bar text ",paraId:0,tocIndex:1},{value:"#1696",paraId:0,tocIndex:1},{value:"fix: long text should be line feed ",paraId:0,tocIndex:1},{value:"#1686",paraId:0,tocIndex:1},{value:"fix: cannot display data when remove last page and the page only just one item ",paraId:0,tocIndex:1},{value:"#1685",paraId:0,tocIndex:1},{value:"fix: meta acl with association query ",paraId:0,tocIndex:1},{value:"#1695",paraId:0,tocIndex:1},{value:"fix: linkage rule title can not set empty ",paraId:0,tocIndex:1},{value:"#1688",paraId:0,tocIndex:1},{value:"feat: improve plugin manager ui ",paraId:0,tocIndex:1},{value:"#1650",paraId:0,tocIndex:1},{value:"feat: gantt block ",paraId:0,tocIndex:1},{value:"#1393",paraId:0,tocIndex:1},{value:"fix(client): fix constant input lose focus in variable ",paraId:0,tocIndex:1},{value:"#1689",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add workflow specific logger ",paraId:0,tocIndex:1},{value:"#1677",paraId:0,tocIndex:1},{value:"fix: remove designer ",paraId:0,tocIndex:1},{value:"#1684",paraId:0,tocIndex:1},{value:"test: should load the .env.test ",paraId:0,tocIndex:1},{value:"#1678",paraId:0,tocIndex:1},{value:"fix: incorrect language after logout ",paraId:0,tocIndex:1},{value:"#1679",paraId:0,tocIndex:1},{value:"feat: optimize file collection ",paraId:0,tocIndex:1},{value:"#1666",paraId:0,tocIndex:1},{value:"fix: sort field init performance ",paraId:0,tocIndex:1},{value:"#1675",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix null collection fields ",paraId:0,tocIndex:1},{value:"#1674",paraId:0,tocIndex:1},{value:"fix(client): fix variable component read pretty mode ",paraId:0,tocIndex:1},{value:"#1673",paraId:0,tocIndex:1},{value:"fix: ui problem of compact theme ",paraId:0,tocIndex:1},{value:"#1670",paraId:0,tocIndex:1},{value:"fix: linkage rule enable effect in form ",paraId:0,tocIndex:1},{value:"#1669",paraId:0,tocIndex:1},{value:"feat: collection template summary ",paraId:0,tocIndex:1},{value:"#1672",paraId:0,tocIndex:1},{value:"feat: (plugin-workflow) dynamic expression ",paraId:0,tocIndex:1},{value:"#1560",paraId:0,tocIndex:1},{value:"chore: find inherit collection warn ",paraId:0,tocIndex:1},{value:"#1663",paraId:0,tocIndex:1},{value:"fix: linkage rule title config clear exception ",paraId:0,tocIndex:1},{value:"#1665",paraId:0,tocIndex:1},{value:"feat: support tableoid filter ",paraId:0,tocIndex:1},{value:"#1657",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add array mapping support in processor ",paraId:0,tocIndex:1},{value:"#1662",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix appends null to collection trigger ",paraId:0,tocIndex:1},{value:"#1661",paraId:0,tocIndex:1},{value:"feat(filter-operators): eq and ne operators support array ",paraId:0,tocIndex:1},{value:"#1658",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix todo drawer data load ",paraId:0,tocIndex:1},{value:"#1656",paraId:0,tocIndex:1},{value:"refactor(client): improve translation ",paraId:0,tocIndex:1},{value:"#1654",paraId:0,tocIndex:1},{value:"fix: fix the 'Add menu item' button disappears ",paraId:0,tocIndex:1},{value:"#1655",paraId:0,tocIndex:1},{value:"chore: add new allowAddtoCurrent config ",paraId:0,tocIndex:1},{value:"#1652",paraId:0,tocIndex:1},{value:"feat: support file collection ",paraId:0,tocIndex:1},{value:"#1636",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix manual node drawer ",paraId:0,tocIndex:1},{value:"#1653",paraId:0,tocIndex:1},{value:"chore: inhertis api with difference schema ",paraId:0,tocIndex:1},{value:"#1545",paraId:0,tocIndex:1},{value:"fix: select record can not enable child collection ",paraId:0,tocIndex:1},{value:"#1649",paraId:0,tocIndex:1},{value:"feat: plugin before enable hook ",paraId:0,tocIndex:1},{value:"#1648",paraId:0,tocIndex:1},{value:"chore: add transaction in set field action ",paraId:0,tocIndex:1},{value:"#1647",paraId:0,tocIndex:1},{value:"fix(linkage rule):linkage rule not display in action ",paraId:0,tocIndex:1},{value:"#1644",paraId:0,tocIndex:1},{value:"refactor: view collection options ",paraId:0,tocIndex:1},{value:"#1643",paraId:0,tocIndex:1},{value:"fix: update field error ",paraId:0,tocIndex:1},{value:"#1645",paraId:0,tocIndex:1},{value:"feat(Table): column action support linkage rules ",paraId:0,tocIndex:1},{value:"#1638",paraId:0,tocIndex:1},{value:"fix(view-collection): field name cannot be edited when there with field source ",paraId:0,tocIndex:1},{value:"#1642",paraId:0,tocIndex:1},{value:"fix: linkage rule config closing rules require reopening the form to take effect ",paraId:0,tocIndex:1},{value:"#1640",paraId:0,tocIndex:1},{value:"refactor(client): change Variable.TextArea to controlled component ",paraId:0,tocIndex:1},{value:"#1605",paraId:0,tocIndex:1},{value:"fix: get pg view def ",paraId:0,tocIndex:1},{value:"#1641",paraId:0,tocIndex:1},{value:"fix: infer view column type with alias ",paraId:0,tocIndex:1},{value:"#1634",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix minors ui issues ",paraId:0,tocIndex:1},{value:"#1635",paraId:0,tocIndex:1},{value:"chore: disabled underscored in view collection. ",paraId:0,tocIndex:1},{value:"#1633",paraId:0,tocIndex:1},{value:"fix: form action dragging area is too large ",paraId:0,tocIndex:1},{value:"#1628",paraId:0,tocIndex:1},{value:"fix: FixedBlock related ui ",paraId:0,tocIndex:1},{value:"#1632",paraId:0,tocIndex:1},{value:"feat: database view collection ",paraId:0,tocIndex:1},{value:"#1587",paraId:0,tocIndex:1},{value:"fix: init sort value in sort field with scopeKey ",paraId:0,tocIndex:1},{value:"#1626",paraId:0,tocIndex:1},{value:"style: linkage rule style improve ",paraId:0,tocIndex:1},{value:"#1625",paraId:0,tocIndex:1},{value:"fix: find with attributes and group ",paraId:0,tocIndex:1},{value:"#1411",paraId:0,tocIndex:1},{value:"docs: transform video link to video tag ",paraId:0,tocIndex:1},{value:"#1414",paraId:0,tocIndex:1},{value:"feat(parse-variables): support to parse variables in filter params ",paraId:0,tocIndex:1},{value:"#1558",paraId:0,tocIndex:1},{value:"fix(linkage rules) : support naming, enabling and disabling, copying, and assigning null values ",paraId:0,tocIndex:1},{value:"#1511",paraId:0,tocIndex:1},{value:"chore: update test ci ",paraId:0,tocIndex:1},{value:"#1622",paraId:0,tocIndex:1},{value:"fix: history add new button does not support enabling child collection ",paraId:0,tocIndex:1},{value:"#1536",paraId:0,tocIndex:1},{value:"fix/(linkages-action): detail block actions does not support linkage rules ",paraId:0,tocIndex:1},{value:"#1504",paraId:0,tocIndex:1},{value:"fix: avoid fixedblock height working in popup ",paraId:0,tocIndex:1},{value:"#1621",paraId:0,tocIndex:1},{value:"fix: when the page has FixedBlock, the table of popup is not displayed ",paraId:0,tocIndex:1},{value:"#1619",paraId:0,tocIndex:1},{value:"feat: association-filter-improve ",paraId:0,tocIndex:1},{value:"#1606",paraId:0,tocIndex:1},{value:"fix(Table): cannot display table data ",paraId:0,tocIndex:1},{value:"#1617",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix todo list form read-pretty for non-assigneed user ",paraId:0,tocIndex:1},{value:"#1615",paraId:0,tocIndex:1},{value:"feat(table): hidden pagination when only one page is available ",paraId:0,tocIndex:1},{value:"#1614",paraId:0,tocIndex:1},{value:"refactor: improve FixedBlock performance ",paraId:0,tocIndex:1},{value:"#1593",paraId:0,tocIndex:1},{value:"fix(collection-manager): infinite recursion ",paraId:0,tocIndex:1},{value:"#1608",paraId:0,tocIndex:1},{value:"fix(audit-logs): Add ellipsis feature to table columns ",paraId:0,tocIndex:1},{value:"#1603",paraId:0,tocIndex:1},{value:"feat: improve the non-link ui of association data ",paraId:0,tocIndex:1},{value:"#1602",paraId:0,tocIndex:1},{value:"feat(Kanban): the card support open mode ",paraId:0,tocIndex:1},{value:"#1601",paraId:0,tocIndex:1},{value:"fix( importable-field): incorrect display when moving sort handle ",paraId:0,tocIndex:1},{value:"#1613",paraId:0,tocIndex:1},{value:"fix: enable child collections remain after deleting a child collection ",paraId:0,tocIndex:1},{value:"#1610",paraId:0,tocIndex:1},{value:"fix: destroy through table record referencing collections table ",paraId:0,tocIndex:1},{value:"#1611",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): add default actions value of manual node ",paraId:0,tocIndex:1},{value:"#1600",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add failOnEmpty option for query node ",paraId:0,tocIndex:1},{value:"#1599",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): use toJSON instead of get to get valid result ",paraId:0,tocIndex:1},{value:"#1596",paraId:0,tocIndex:1},{value:"Translation pt-BR (Brazilian Portuguese) ",paraId:0,tocIndex:1},{value:"#1591",paraId:0,tocIndex:1},{value:"fix: role permission add new scope display blank ",paraId:0,tocIndex:1},{value:"#1592",paraId:0,tocIndex:1},{value:"fix(FixedBlock): avoid kanban triggering programmatic scrolling ",paraId:0,tocIndex:1},{value:"#1406",paraId:0,tocIndex:1},{value:"fix: repeat request categories when switching between graph interface and collection&fields ",paraId:0,tocIndex:1},{value:"#1590",paraId:0,tocIndex:1},{value:"fix: collectionFieldsOptions cannot get all fields ",paraId:0,tocIndex:1},{value:"#1588",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix input width in request node config ",paraId:0,tocIndex:1},{value:"#1585",paraId:0,tocIndex:1},{value:"feat(filter-blocks): support filter-blocks ",paraId:0,tocIndex:1},{value:"#1505",paraId:0,tocIndex:1},{value:"refactor: multi-app ",paraId:0,tocIndex:1},{value:"#1578",paraId:0,tocIndex:1},{value:"feat: compact theme ",paraId:0,tocIndex:1},{value:"#1574",paraId:0,tocIndex:1},{value:"feat: support cron field ",paraId:0,tocIndex:1},{value:"#1421",paraId:0,tocIndex:1},{value:"fix(Calendar): ensur to get correct gridInitializer when adding a new\u2026 ",paraId:0,tocIndex:1},{value:"#1425",paraId:0,tocIndex:1},{value:"feat(markdown): support mermaid and better style ",paraId:0,tocIndex:1},{value:"#1583",paraId:0,tocIndex:1},{value:"fix(plugin-map): map block repeats ",paraId:0,tocIndex:1},{value:"#1582",paraId:0,tocIndex:1},{value:"feat: tree collection ",paraId:0,tocIndex:1},{value:"#1561",paraId:0,tocIndex:1},{value:"feat(plugin-map): add map block ",paraId:0,tocIndex:1},{value:"#1486",paraId:0,tocIndex:1},{value:"chore: lazy load sub app in share collection ",paraId:0,tocIndex:1},{value:"#1569",paraId:0,tocIndex:1},{value:"fix(record-picker): supports adding sub-collection records ",paraId:0,tocIndex:1},{value:"#1573",paraId:0,tocIndex:1},{value:"fix: app manager reload ",paraId:0,tocIndex:1},{value:"#1565",paraId:0,tocIndex:1},{value:"feat: multi-app-share-collection plugin ",paraId:0,tocIndex:1},{value:"#1562",paraId:0,tocIndex:1},{value:"feat: record picker support to enable links ",paraId:0,tocIndex:1},{value:"#1515",paraId:0,tocIndex:1},{value:"feat: multiple apps ",paraId:0,tocIndex:1},{value:"#1540",paraId:0,tocIndex:1},{value:"docs(client): add variable docs ",paraId:0,tocIndex:1},{value:"#1556",paraId:0,tocIndex:1},{value:"fix(charts): improve chart table preview with object type ",paraId:0,tocIndex:1},{value:"#1555",paraId:0,tocIndex:1},{value:"feat(plugin-workflow) config preload associations in triggers and nodes ",paraId:0,tocIndex:1},{value:"#1548",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix todo list form read-pretty for non-assigneed user (#1615) ",paraId:1,tocIndex:2},{value:"#1572",paraId:1,tocIndex:2},{value:"chore(versions): \u{1F60A} publish v0.9.2-alpha.1 ",paraId:2,tocIndex:3},{value:"d1adc9d",paraId:2,tocIndex:3},{value:"fix(file-manager): upgrade s3 version ",paraId:2,tocIndex:3},{value:"50183b0",paraId:2,tocIndex:3},{value:"fix: linkage rule ",paraId:2,tocIndex:3},{value:"b8776fe",paraId:2,tocIndex:3}],MA={},LA={title:"v0.9.4\uFF1A2023-05-25",toc:"menu",filename:"docs/en-US/welcome/release/v0094-changelog.md",lastUpdated:1732240239e3},NA=[{id:"v0942023-05-25",depth:1,title:"v0.9.4\uFF1A2023-05-25"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],zA=[{value:"chore: load view collection when source not found ",paraId:0,tocIndex:1},{value:"#1930",paraId:0,tocIndex:1},{value:"feat(data-template): support to set data scope and title field ",paraId:0,tocIndex:1},{value:"#1918",paraId:0,tocIndex:1},{value:"feat(data-template): support for unlimited levels of fields selection ",paraId:0,tocIndex:1},{value:"#1910",paraId:0,tocIndex:1},{value:"chore: when using association field by picker mode,it's open size can be changed ",paraId:0,tocIndex:1},{value:"#1926",paraId:0,tocIndex:1},{value:"fix(ConfigurationTabs): avoid error ",paraId:0,tocIndex:1},{value:"#1782",paraId:0,tocIndex:1},{value:"fix: tableField query data in add child action ",paraId:0,tocIndex:1},{value:"#1876",paraId:0,tocIndex:1},{value:"refactor: front-end testing with vitest ",paraId:0,tocIndex:1},{value:"#1900",paraId:0,tocIndex:1},{value:"fix: disable popup button in add-modal ",paraId:0,tocIndex:1},{value:"#1808",paraId:0,tocIndex:1},{value:"fix: append acl resource params ",paraId:0,tocIndex:1},{value:"#1923",paraId:0,tocIndex:1},{value:"chore: update guard with array contains null ",paraId:0,tocIndex:1},{value:"#1922",paraId:0,tocIndex:1},{value:"refactor: initialization when switching field components ",paraId:0,tocIndex:1},{value:"#1915",paraId:0,tocIndex:1},{value:"fix(association-field): only when the new data is successfully created can the data be associated ",paraId:0,tocIndex:1},{value:"#1884",paraId:0,tocIndex:1},{value:"fix: eager load with belongs to many with custom source key ",paraId:0,tocIndex:1},{value:"#1913",paraId:0,tocIndex:1},{value:"fix: hiding the title of a subform will hide all embedded titles ",paraId:0,tocIndex:1},{value:"#1904",paraId:0,tocIndex:1},{value:"fix: updateAssociationValues ",paraId:0,tocIndex:1},{value:"#1903",paraId:0,tocIndex:1},{value:"fix(plugin-formula): use read-pretty component in result ",paraId:0,tocIndex:1},{value:"#1911",paraId:0,tocIndex:1},{value:"fix: can't set default value when turn on the form field required ",paraId:0,tocIndex:1},{value:"#1887",paraId:0,tocIndex:1},{value:"fix(Data-template): fix bug when deleting fields ",paraId:0,tocIndex:1},{value:"#1907",paraId:0,tocIndex:1},{value:"feat(app): add clear cache button ",paraId:0,tocIndex:1},{value:"#1909",paraId:0,tocIndex:1},{value:"fix: eager load belongs to many association ",paraId:0,tocIndex:1},{value:"#1906",paraId:0,tocIndex:1},{value:"feat: support to-multi field variables ",paraId:0,tocIndex:1},{value:"#1680",paraId:0,tocIndex:1},{value:"fix: append belongs to association with fields ",paraId:0,tocIndex:1},{value:"#1894",paraId:0,tocIndex:1},{value:"fix: appends belongs to association ",paraId:0,tocIndex:1},{value:"#1893",paraId:0,tocIndex:1},{value:"fix: preload relational data ",paraId:0,tocIndex:1},{value:"#1847",paraId:0,tocIndex:1},{value:"feat: support reboot application manually ",paraId:0,tocIndex:1},{value:"#1889",paraId:0,tocIndex:1},{value:"Refactor/append fields ",paraId:0,tocIndex:1},{value:"#1883",paraId:0,tocIndex:1},{value:"chore: pg sql parser ",paraId:0,tocIndex:1},{value:"#1890",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix language ",paraId:0,tocIndex:1},{value:"#1886",paraId:0,tocIndex:1},{value:"fix: field required when setting sorting rules ",paraId:0,tocIndex:1},{value:"#1885",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add node description to drawer when edit node ",paraId:0,tocIndex:1},{value:"#1882",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix variable api caller in loop ",paraId:0,tocIndex:1},{value:"#1877",paraId:0,tocIndex:1},{value:"chore(github-template): clean comments and format ",paraId:0,tocIndex:1},{value:"#1878",paraId:0,tocIndex:1},{value:"feat(association-field): default one data for to-many association ",paraId:0,tocIndex:1},{value:"#1873",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix trigger title when workflow not loaded ",paraId:0,tocIndex:1},{value:"#1875",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): aggregate ",paraId:0,tocIndex:1},{value:"#1852",paraId:0,tocIndex:1},{value:"Feat/translation es_ES ",paraId:0,tocIndex:1},{value:"#1801",paraId:0,tocIndex:1},{value:"fix: data is not updated when appends are changed ",paraId:0,tocIndex:1},{value:"#1872",paraId:0,tocIndex:1},{value:"fix:association select no options when clearing filter ",paraId:0,tocIndex:1},{value:"#1866",paraId:0,tocIndex:1},{value:"fix(acl): issue with repeated createdById field ",paraId:0,tocIndex:1},{value:"#1871",paraId:0,tocIndex:1},{value:"feat(client): allow search by title in collection select ",paraId:0,tocIndex:1},{value:"#1869",paraId:0,tocIndex:1},{value:"chore: skip get standalone deployment sub application ",paraId:0,tocIndex:1},{value:"#1868",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): remove useless context option ",paraId:0,tocIndex:1},{value:"#1867",paraId:0,tocIndex:1},{value:"fix: inherit fields filter Foreign Key fields ",paraId:0,tocIndex:1},{value:"#1864",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): loop ",paraId:0,tocIndex:1},{value:"#1787",paraId:0,tocIndex:1},{value:"fix: insertAdjacent not find ",paraId:0,tocIndex:1},{value:"#1861",paraId:0,tocIndex:1},{value:"refactor(add-new):association field add new support button edit ",paraId:0,tocIndex:1},{value:"#1854",paraId:0,tocIndex:1},{value:"feat: support List and Grid Card block ",paraId:0,tocIndex:1},{value:"#1753",paraId:0,tocIndex:1},{value:"fix: fix multi-select field not show 'Allow multiple' switch ",paraId:0,tocIndex:1},{value:"#1857",paraId:0,tocIndex:1},{value:"fix: field for attachment interface type without appends ",paraId:0,tocIndex:1},{value:"#1856",paraId:0,tocIndex:1},{value:"fix: action error when field deleted ",paraId:0,tocIndex:1},{value:"#1849",paraId:0,tocIndex:1},{value:"feat: support running single sub app ",paraId:0,tocIndex:1},{value:"#1853",paraId:0,tocIndex:1},{value:"fix: assign field with delete field ",paraId:0,tocIndex:1},{value:"#1850",paraId:0,tocIndex:1},{value:"fix: title field in assign fields value ",paraId:0,tocIndex:1},{value:"#1848",paraId:0,tocIndex:1},{value:"fix:association appends ",paraId:0,tocIndex:1},{value:"#1842",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add delete button in workflow canvas page ",paraId:0,tocIndex:1},{value:"#1844",paraId:0,tocIndex:1},{value:"fix(block-provider): getNesterAppends filter fix ",paraId:0,tocIndex:1},{value:"#1839",paraId:0,tocIndex:1},{value:"feat: repository aggregate method ",paraId:0,tocIndex:1},{value:"#1829",paraId:0,tocIndex:1},{value:"feat(docs): update docs ",paraId:1,tocIndex:2},{value:"0b0a8d2",paraId:1,tocIndex:2},{value:"chore(versions): \u{1F60A} publish v0.9.4-alpha.1 ",paraId:1,tocIndex:2},{value:"9c94840",paraId:1,tocIndex:2},{value:"chore: update changelog ",paraId:1,tocIndex:2},{value:"a6c7b41",paraId:1,tocIndex:2}],FA={},BA={title:"v0.10: 2023-06-20",toc:"menu",filename:"docs/en-US/welcome/release/v0100-changelog.md",lastUpdated:1732240239e3,description:"No change, upgrade reference Upgrading for Docker compose"},jA=[{id:"v010-2023-06-20",depth:1,title:"v0.10: 2023-06-20"},{id:"new-features-in-the-second-quarter",depth:2,title:"New features in the second quarter"},{id:"upgrading-applications",depth:2,title:"Upgrading applications"},{id:"upgrading-for-docker-compose",depth:3,title:"Upgrading for Docker compose"},{id:"upgrading-for-git-source-code",depth:3,title:"Upgrading for Git source code"},{id:"upgrading-for-create-nocobase-app",depth:3,title:"Upgrading for create-nocobase-app"},{id:"upcoming-deprecated-and-potentially-incompatible-changes",depth:2,title:"Upcoming deprecated and potentially incompatible changes"},{id:"sub-table-field-component",depth:3,title:"Sub-table field component"},{id:"attachment-upload-api-changes",depth:3,title:"Attachment upload api changes"},{id:"signinsignup-api-changes",depth:3,title:"signin/signup api changes"},{id:"adjustments-to-date-field-filtering",depth:3,title:"Adjustments to date field filtering"},{id:"third-party-plugin-upgrade-guide",depth:2,title:"Third-party plugin upgrade guide"},{id:"dependencies-upgrade",depth:3,title:"Dependencies upgrade"},{id:"code-changes",depth:3,title:"Code changes"},{id:"layout-component",depth:3,title:"Layout Component"},{id:"redirect",depth:3,title:"Redirect"},{id:"usehistory",depth:3,title:"useHistory"},{id:"uselocation",depth:3,title:"useLocation"},{id:"path",depth:3,title:"path"}],HA=[{value:`Association field component improvements, support for multiple component switching +`,paraId:22,tocIndex:10},{value:"v0.7 plugins are not complete, custom business code may be scattered in ",paraId:23,tocIndex:11},{value:"packages/app/client",paraId:23,tocIndex:11},{value:" and ",paraId:23,tocIndex:11},{value:"packages/app/server",paraId:23,tocIndex:11},{value:", which is not conducive to upgrade and maintenance. v0.8 recommends organizing as a plugin package and using ",paraId:23,tocIndex:11},{value:"yarn pm",paraId:23,tocIndex:11},{value:" to manage plugins.",paraId:23,tocIndex:11},{value:"Welcome",paraId:24,tocIndex:12},{value:": a quick look at NocoBase",paraId:24,tocIndex:12},{value:"Manual",paraId:24,tocIndex:12},{value:": learn more about the core features provided by the NocoBase platform",paraId:24,tocIndex:12},{value:"Plugin Development Tutorial",paraId:24,tocIndex:12},{value:": Advanced dive into plugin development",paraId:24,tocIndex:12},{value:"API Reference",paraId:24,tocIndex:12},{value:": Check the API usage during plugin development",paraId:24,tocIndex:12},{value:"Client Components Library",paraId:24,tocIndex:12},{value:" (in preparation): provides examples and usage of NocoBase components",paraId:24,tocIndex:12},{value:"command",paraId:25,tocIndex:13},{value:"custom-block",paraId:25,tocIndex:13},{value:"custom-page",paraId:25,tocIndex:13},{value:"custom-signup-page",paraId:25,tocIndex:13},{value:"hello",paraId:25,tocIndex:13},{value:"ratelimit",paraId:25,tocIndex:13},{value:"shop-actions",paraId:25,tocIndex:13},{value:"shop-events",paraId:25,tocIndex:13},{value:"shop-i18n",paraId:25,tocIndex:13},{value:"shop-modeling",paraId:25,tocIndex:13},{value:"Import from Excel",paraId:26,tocIndex:14},{value:"Bulk Update & Edit",paraId:26,tocIndex:14},{value:"Graphical collection",paraId:26,tocIndex:14},{value:"Workflow support for viewing execution history",paraId:26,tocIndex:14},{value:"JSON field",paraId:26,tocIndex:14}],kA={},SA={title:"v0.9.1\uFF1A2023-03-09",toc:"menu",filename:"docs/en-US/welcome/release/v0091-changelog.md",lastUpdated:173254844e4},UA=[{id:"v0912023-03-09",depth:1,title:"v0.9.1\uFF1A2023-03-09"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],PA=[{value:"fix(plugin-workflow): fix module import (#1550) ",paraId:0,tocIndex:1},{value:"#1552",paraId:0,tocIndex:1},{value:"chore: relation repository response when source model not found ",paraId:0,tocIndex:1},{value:"#1546",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix assignees config component in manual node ",paraId:0,tocIndex:1},{value:"#1547",paraId:0,tocIndex:1},{value:"feat: stopped state in application ",paraId:0,tocIndex:1},{value:"#1543",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix AssociationInput field path ",paraId:0,tocIndex:1},{value:"#1542",paraId:0,tocIndex:1},{value:"fix: cache with index.html ",paraId:0,tocIndex:1},{value:"#1541",paraId:0,tocIndex:1},{value:"fix: belongs to many through table with custom schema ",paraId:0,tocIndex:1},{value:"#1539",paraId:0,tocIndex:1},{value:"fix(plugin-formula): expose formula field result in form ",paraId:0,tocIndex:1},{value:"#1534",paraId:0,tocIndex:1},{value:"test: with collection_manager_schema env ",paraId:0,tocIndex:1},{value:"#1532",paraId:0,tocIndex:1},{value:"fix: filter by association field with underscored ",paraId:0,tocIndex:1},{value:"#1537",paraId:0,tocIndex:1},{value:"fix(charts): fix copy ",paraId:0,tocIndex:1},{value:"#1533",paraId:0,tocIndex:1},{value:"feat: add chart plugin ",paraId:0,tocIndex:1},{value:"#1477",paraId:0,tocIndex:1},{value:"feat: support add new in block for inheritance collection ",paraId:0,tocIndex:1},{value:"#1518",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): change canvas card and adjust styles ",paraId:0,tocIndex:1},{value:"#1529",paraId:0,tocIndex:1},{value:"fix: test with nocobase plugin ",paraId:0,tocIndex:1},{value:"#1525",paraId:0,tocIndex:1},{value:"fix: nginx cache ",paraId:0,tocIndex:1},{value:"#1523",paraId:0,tocIndex:1},{value:"fix: remove field when collection has difference schema with database ",paraId:0,tocIndex:1},{value:"#1524",paraId:0,tocIndex:1},{value:"refactor: audit logs block ",paraId:0,tocIndex:1},{value:"#1517",paraId:0,tocIndex:1},{value:"fix(evaluators): fix preprocessing and add test cases ",paraId:0,tocIndex:1},{value:"#1519",paraId:0,tocIndex:1},{value:"chore(debug): fix debug filename when run test ",paraId:0,tocIndex:1},{value:"#1520",paraId:0,tocIndex:1},{value:"feat: collection manager schema env ",paraId:0,tocIndex:1},{value:"#1506",paraId:0,tocIndex:1},{value:"fix(client): fix checkbox unchecked display ",paraId:0,tocIndex:1},{value:"#1508",paraId:0,tocIndex:1},{value:"feat(snapshot-field): improve transition ",paraId:0,tocIndex:1},{value:"#1513",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix CollectionField validation when using variable ",paraId:0,tocIndex:1},{value:"#1512",paraId:0,tocIndex:1},{value:"feat(plugin-formula): calculation with snapshot field ",paraId:0,tocIndex:1},{value:"#1498",paraId:0,tocIndex:1},{value:"fix(association-select): filter without data scope not work ",paraId:0,tocIndex:1},{value:"#1509",paraId:0,tocIndex:1},{value:"feat: fallback sort field init to createdAt field ",paraId:0,tocIndex:1},{value:"#1507",paraId:0,tocIndex:1},{value:"fix(graphical-interface): collection category does not display title ",paraId:0,tocIndex:1},{value:"#1503",paraId:0,tocIndex:1},{value:"fix(association-select): data is incorrect when use data scope ",paraId:0,tocIndex:1},{value:"#1491",paraId:0,tocIndex:1},{value:"feat: dialect version accessors ",paraId:0,tocIndex:1},{value:"#1502",paraId:0,tocIndex:1},{value:"fix: collection schema updated but model _schema not change ",paraId:0,tocIndex:1},{value:"#1500",paraId:0,tocIndex:1},{value:"Update zh_CN.ts ",paraId:0,tocIndex:1},{value:"#1481",paraId:0,tocIndex:1},{value:"fix(linkageRules): support empty condiction ",paraId:0,tocIndex:1},{value:"#1496",paraId:0,tocIndex:1},{value:"feat: form/button linkage rules ",paraId:0,tocIndex:1},{value:"#1456",paraId:0,tocIndex:1},{value:"fix: collection importer has incorrect reference ",paraId:0,tocIndex:1},{value:"#1495",paraId:0,tocIndex:1},{value:"feat: support custom plugin deployment in dockerfile ",paraId:0,tocIndex:1},{value:"#1494",paraId:0,tocIndex:1},{value:"fix: environment variables ",paraId:0,tocIndex:1},{value:"#1490",paraId:0,tocIndex:1},{value:"feat: prepare database method ",paraId:0,tocIndex:1},{value:"#1492",paraId:0,tocIndex:1},{value:"Fix/multiple schema query ",paraId:0,tocIndex:1},{value:"#1488",paraId:0,tocIndex:1},{value:"fix: string violation ",paraId:0,tocIndex:1},{value:"#1487",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): migrate evaluators ",paraId:0,tocIndex:1},{value:"#1485",paraId:0,tocIndex:1},{value:"docs: fix typo ",paraId:0,tocIndex:1},{value:"#1482",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix customized job status ",paraId:0,tocIndex:1},{value:"#1484",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix condition config param ",paraId:0,tocIndex:1},{value:"#1483",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix migration ",paraId:0,tocIndex:1},{value:"#1479",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix migration on table prefix ",paraId:0,tocIndex:1},{value:"#1478",paraId:0,tocIndex:1},{value:"refactor(plugin-formula): combine 2 formula field type into 1 ",paraId:0,tocIndex:1},{value:"#1457",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix migration for calculation ",paraId:0,tocIndex:1},{value:"#1476",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix schedule trigger number type repeat ",paraId:0,tocIndex:1},{value:"#1475",paraId:0,tocIndex:1},{value:"Feat(plugin-workflow) manual instruction ",paraId:0,tocIndex:1},{value:"#1339",paraId:0,tocIndex:1},{value:"feat: support for importing attachments ",paraId:0,tocIndex:1},{value:"#1466",paraId:0,tocIndex:1},{value:"fix: column not exists error after destory relation field ",paraId:0,tocIndex:1},{value:"#1465",paraId:0,tocIndex:1},{value:"fix: add schema ",paraId:0,tocIndex:1},{value:"#1464",paraId:0,tocIndex:1},{value:"fix: avoid o2o, o2m can select the data already selected ",paraId:0,tocIndex:1},{value:"#1462",paraId:0,tocIndex:1},{value:"feat: add test cases ",paraId:0,tocIndex:1},{value:"#1463",paraId:0,tocIndex:1},{value:"feat: update zh_CN.ts ",paraId:0,tocIndex:1},{value:"#1458",paraId:0,tocIndex:1},{value:"refactor: export plugin ",paraId:0,tocIndex:1},{value:"#1460",paraId:0,tocIndex:1},{value:"Fix/pg schema with inherit ",paraId:0,tocIndex:1},{value:"#1446",paraId:0,tocIndex:1},{value:"feat: multiple apps admin ",paraId:0,tocIndex:1},{value:"#1431",paraId:0,tocIndex:1},{value:"chore: fix build plugin error ",paraId:0,tocIndex:1},{value:"#1454",paraId:0,tocIndex:1},{value:"feat: provide the underscored option for the database ",paraId:0,tocIndex:1},{value:"#1366",paraId:0,tocIndex:1},{value:'Revert "fix(table): make filed overflow behavior right (#1392)" ',paraId:0,tocIndex:1},{value:"#1452",paraId:0,tocIndex:1},{value:"fix(collection category): zh_cn locale defect ",paraId:0,tocIndex:1},{value:"#1451",paraId:0,tocIndex:1},{value:"feat: add namespace and duplicator parameters for collection options ",paraId:0,tocIndex:1},{value:"#1449",paraId:0,tocIndex:1},{value:"fix(snapshot-field): remove depth limit ",paraId:0,tocIndex:1},{value:"#1450",paraId:0,tocIndex:1},{value:"chore: update licenses url ",paraId:0,tocIndex:1},{value:"#1285",paraId:0,tocIndex:1},{value:"feat: association snapshot ",paraId:0,tocIndex:1},{value:"#1438",paraId:0,tocIndex:1},{value:"fix(table): make filed overflow behavior right ",paraId:0,tocIndex:1},{value:"#1392",paraId:0,tocIndex:1},{value:"fix(plugin-sequence): fix missed createdAt field in bulk hook ",paraId:0,tocIndex:1},{value:"#1448",paraId:0,tocIndex:1},{value:"fix: error:0308010C:digital envelope routines::unsupported ",paraId:0,tocIndex:1},{value:"#1447",paraId:0,tocIndex:1},{value:"feat: collection categories ",paraId:0,tocIndex:1},{value:"#1327",paraId:0,tocIndex:1},{value:"fix(plugin-fm): fix path config for storages ",paraId:0,tocIndex:1},{value:"#1445",paraId:0,tocIndex:1},{value:"fix: node.js 17+, add openssl-legacy-provider ",paraId:0,tocIndex:1},{value:"#1434",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix schedule on field null value ",paraId:0,tocIndex:1},{value:"#1442",paraId:0,tocIndex:1},{value:"feat: pg schema support ",paraId:0,tocIndex:1},{value:"#1439",paraId:0,tocIndex:1},{value:"fix(i18n): set key and ns separator default to false ",paraId:0,tocIndex:1},{value:"#1432",paraId:0,tocIndex:1},{value:"feat: disable trigger when import collection ",paraId:0,tocIndex:1},{value:"#1417",paraId:0,tocIndex:1},{value:"chore: translate 'Add tab' in page header ",paraId:0,tocIndex:1},{value:"#1424",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): use promise to request ",paraId:0,tocIndex:1},{value:"#1426",paraId:0,tocIndex:1},{value:"fix(acl): custom appends merge strategy ",paraId:0,tocIndex:1},{value:"#1416",paraId:0,tocIndex:1},{value:"docs: update G2Plot example url ",paraId:0,tocIndex:1},{value:"#1408",paraId:0,tocIndex:1},{value:"docs: fix typo ",paraId:0,tocIndex:1},{value:"#1412",paraId:0,tocIndex:1},{value:"fix(FixedBlock): using both association filters and FixedBlock does not show the complete table ",paraId:0,tocIndex:1},{value:"#1405",paraId:0,tocIndex:1},{value:"feat(calendar): startDate and endDate support the use of association fields ",paraId:0,tocIndex:1},{value:"#1397",paraId:0,tocIndex:1},{value:"fix: load through collection before belongsToMany field bind ",paraId:0,tocIndex:1},{value:"#1409",paraId:0,tocIndex:1},{value:"feat(verification-plugin): support tencent sms ",paraId:0,tocIndex:1},{value:"#1382",paraId:0,tocIndex:1},{value:"fix: foreign keys are editable when adding fields ",paraId:0,tocIndex:1},{value:"#1404",paraId:0,tocIndex:1},{value:"fix: navbar_ui style ",paraId:0,tocIndex:1},{value:"#1398",paraId:0,tocIndex:1},{value:"fix: inherit startup sort ",paraId:0,tocIndex:1},{value:"#1402",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix url input width for request config ",paraId:0,tocIndex:1},{value:"#1401",paraId:0,tocIndex:1},{value:"Fix/snapshot ",paraId:0,tocIndex:1},{value:"#1396",paraId:0,tocIndex:1},{value:"feat: fix through collections inherits filter ",paraId:0,tocIndex:1},{value:"#1394",paraId:0,tocIndex:1},{value:"Fix(plugin-sequence): support sequence field in m2m through table ",paraId:0,tocIndex:1},{value:"#1383",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): adjust executed alert position ",paraId:0,tocIndex:1},{value:"#1381",paraId:0,tocIndex:1},{value:"fix: through collection individual hooks ",paraId:0,tocIndex:1},{value:"#1378",paraId:0,tocIndex:1},{value:"fix: through collection records should not be reset ",paraId:0,tocIndex:1},{value:"#1377",paraId:0,tocIndex:1},{value:"feat(client): add form disabled context ",paraId:0,tocIndex:1},{value:"#1374",paraId:0,tocIndex:1},{value:"Fix(plugin-workflow): request node ",paraId:0,tocIndex:1},{value:"#1367",paraId:0,tocIndex:1},{value:"docs: add plug-in documentation ",paraId:1,tocIndex:2},{value:"68511f0",paraId:1,tocIndex:2},{value:"feat(db): field value parser ",paraId:1,tocIndex:2},{value:"5805b69",paraId:1,tocIndex:2},{value:"chore(versions): \u{1F60A} publish v0.9.1-alpha.1 ",paraId:1,tocIndex:2},{value:"946c8f2",paraId:1,tocIndex:2}],TA={},CA={title:"v0.9.2\uFF1A2023-04-19",toc:"menu",filename:"docs/en-US/welcome/release/v0092-changelog.md",lastUpdated:173254844e4},AA=[{id:"v0922023-04-19",depth:1,title:"v0.9.2\uFF1A2023-04-19"},{id:"merged",depth:2,title:"Merged"},{id:"fixed",depth:2,title:"Fixed"},{id:"commits",depth:2,title:"Commits"}],qA=[{value:"refactor(plugin-workflow): change single form to custom form block ",paraId:0,tocIndex:1},{value:"#1707",paraId:0,tocIndex:1},{value:"chore(ci): add timeout config for jobs ",paraId:0,tocIndex:1},{value:"#1725",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): migrate menu items to options ",paraId:0,tocIndex:1},{value:"#1724",paraId:0,tocIndex:1},{value:"fix(client): fix error on clear value in variable input ",paraId:0,tocIndex:1},{value:"#1723",paraId:0,tocIndex:1},{value:"fix(record-picker): fix the table paging problem ",paraId:0,tocIndex:1},{value:"#1718",paraId:0,tocIndex:1},{value:"fix(map-plugin): some data is incorrect ",paraId:0,tocIndex:1},{value:"#1717",paraId:0,tocIndex:1},{value:"fix: data scope not effect in gantt ",paraId:0,tocIndex:1},{value:"#1716",paraId:0,tocIndex:1},{value:"fix: button loading does not disappear when the operation submit failed ",paraId:0,tocIndex:1},{value:"#1698",paraId:0,tocIndex:1},{value:"fix(linkage rule):multiple select condition judgment failed ",paraId:0,tocIndex:1},{value:"#1715",paraId:0,tocIndex:1},{value:"Fix/save through table data ",paraId:0,tocIndex:1},{value:"#1714",paraId:0,tocIndex:1},{value:"feat: improve ui design for linkage action ",paraId:0,tocIndex:1},{value:"#1659",paraId:0,tocIndex:1},{value:"feat(map): support to filter other blocks ",paraId:0,tocIndex:1},{value:"#1691",paraId:0,tocIndex:1},{value:"refactor: improve linkage rule enable ",paraId:0,tocIndex:1},{value:"#1700",paraId:0,tocIndex:1},{value:"fix: find fields arg ",paraId:0,tocIndex:1},{value:"#1710",paraId:0,tocIndex:1},{value:"feat(form-block): data templates ",paraId:0,tocIndex:1},{value:"#1704",paraId:0,tocIndex:1},{value:"fix: linkage relationship data condition judgment failed ",paraId:0,tocIndex:1},{value:"#1681",paraId:0,tocIndex:1},{value:"fix(gantt): update permission check in gantt block ",paraId:0,tocIndex:1},{value:"#1701",paraId:0,tocIndex:1},{value:"fix: clearFormGraph ",paraId:0,tocIndex:1},{value:"#1706",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix request body variable component ",paraId:0,tocIndex:1},{value:"#1703",paraId:0,tocIndex:1},{value:"fix(gantt): improve task bar text ",paraId:0,tocIndex:1},{value:"#1696",paraId:0,tocIndex:1},{value:"fix: long text should be line feed ",paraId:0,tocIndex:1},{value:"#1686",paraId:0,tocIndex:1},{value:"fix: cannot display data when remove last page and the page only just one item ",paraId:0,tocIndex:1},{value:"#1685",paraId:0,tocIndex:1},{value:"fix: meta acl with association query ",paraId:0,tocIndex:1},{value:"#1695",paraId:0,tocIndex:1},{value:"fix: linkage rule title can not set empty ",paraId:0,tocIndex:1},{value:"#1688",paraId:0,tocIndex:1},{value:"feat: improve plugin manager ui ",paraId:0,tocIndex:1},{value:"#1650",paraId:0,tocIndex:1},{value:"feat: gantt block ",paraId:0,tocIndex:1},{value:"#1393",paraId:0,tocIndex:1},{value:"fix(client): fix constant input lose focus in variable ",paraId:0,tocIndex:1},{value:"#1689",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add workflow specific logger ",paraId:0,tocIndex:1},{value:"#1677",paraId:0,tocIndex:1},{value:"fix: remove designer ",paraId:0,tocIndex:1},{value:"#1684",paraId:0,tocIndex:1},{value:"test: should load the .env.test ",paraId:0,tocIndex:1},{value:"#1678",paraId:0,tocIndex:1},{value:"fix: incorrect language after logout ",paraId:0,tocIndex:1},{value:"#1679",paraId:0,tocIndex:1},{value:"feat: optimize file collection ",paraId:0,tocIndex:1},{value:"#1666",paraId:0,tocIndex:1},{value:"fix: sort field init performance ",paraId:0,tocIndex:1},{value:"#1675",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix null collection fields ",paraId:0,tocIndex:1},{value:"#1674",paraId:0,tocIndex:1},{value:"fix(client): fix variable component read pretty mode ",paraId:0,tocIndex:1},{value:"#1673",paraId:0,tocIndex:1},{value:"fix: ui problem of compact theme ",paraId:0,tocIndex:1},{value:"#1670",paraId:0,tocIndex:1},{value:"fix: linkage rule enable effect in form ",paraId:0,tocIndex:1},{value:"#1669",paraId:0,tocIndex:1},{value:"feat: collection template summary ",paraId:0,tocIndex:1},{value:"#1672",paraId:0,tocIndex:1},{value:"feat: (plugin-workflow) dynamic expression ",paraId:0,tocIndex:1},{value:"#1560",paraId:0,tocIndex:1},{value:"chore: find inherit collection warn ",paraId:0,tocIndex:1},{value:"#1663",paraId:0,tocIndex:1},{value:"fix: linkage rule title config clear exception ",paraId:0,tocIndex:1},{value:"#1665",paraId:0,tocIndex:1},{value:"feat: support tableoid filter ",paraId:0,tocIndex:1},{value:"#1657",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add array mapping support in processor ",paraId:0,tocIndex:1},{value:"#1662",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix appends null to collection trigger ",paraId:0,tocIndex:1},{value:"#1661",paraId:0,tocIndex:1},{value:"feat(filter-operators): eq and ne operators support array ",paraId:0,tocIndex:1},{value:"#1658",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix todo drawer data load ",paraId:0,tocIndex:1},{value:"#1656",paraId:0,tocIndex:1},{value:"refactor(client): improve translation ",paraId:0,tocIndex:1},{value:"#1654",paraId:0,tocIndex:1},{value:"fix: fix the 'Add menu item' button disappears ",paraId:0,tocIndex:1},{value:"#1655",paraId:0,tocIndex:1},{value:"chore: add new allowAddtoCurrent config ",paraId:0,tocIndex:1},{value:"#1652",paraId:0,tocIndex:1},{value:"feat: support file collection ",paraId:0,tocIndex:1},{value:"#1636",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix manual node drawer ",paraId:0,tocIndex:1},{value:"#1653",paraId:0,tocIndex:1},{value:"chore: inhertis api with difference schema ",paraId:0,tocIndex:1},{value:"#1545",paraId:0,tocIndex:1},{value:"fix: select record can not enable child collection ",paraId:0,tocIndex:1},{value:"#1649",paraId:0,tocIndex:1},{value:"feat: plugin before enable hook ",paraId:0,tocIndex:1},{value:"#1648",paraId:0,tocIndex:1},{value:"chore: add transaction in set field action ",paraId:0,tocIndex:1},{value:"#1647",paraId:0,tocIndex:1},{value:"fix(linkage rule):linkage rule not display in action ",paraId:0,tocIndex:1},{value:"#1644",paraId:0,tocIndex:1},{value:"refactor: view collection options ",paraId:0,tocIndex:1},{value:"#1643",paraId:0,tocIndex:1},{value:"fix: update field error ",paraId:0,tocIndex:1},{value:"#1645",paraId:0,tocIndex:1},{value:"feat(Table): column action support linkage rules ",paraId:0,tocIndex:1},{value:"#1638",paraId:0,tocIndex:1},{value:"fix(view-collection): field name cannot be edited when there with field source ",paraId:0,tocIndex:1},{value:"#1642",paraId:0,tocIndex:1},{value:"fix: linkage rule config closing rules require reopening the form to take effect ",paraId:0,tocIndex:1},{value:"#1640",paraId:0,tocIndex:1},{value:"refactor(client): change Variable.TextArea to controlled component ",paraId:0,tocIndex:1},{value:"#1605",paraId:0,tocIndex:1},{value:"fix: get pg view def ",paraId:0,tocIndex:1},{value:"#1641",paraId:0,tocIndex:1},{value:"fix: infer view column type with alias ",paraId:0,tocIndex:1},{value:"#1634",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix minors ui issues ",paraId:0,tocIndex:1},{value:"#1635",paraId:0,tocIndex:1},{value:"chore: disabled underscored in view collection. ",paraId:0,tocIndex:1},{value:"#1633",paraId:0,tocIndex:1},{value:"fix: form action dragging area is too large ",paraId:0,tocIndex:1},{value:"#1628",paraId:0,tocIndex:1},{value:"fix: FixedBlock related ui ",paraId:0,tocIndex:1},{value:"#1632",paraId:0,tocIndex:1},{value:"feat: database view collection ",paraId:0,tocIndex:1},{value:"#1587",paraId:0,tocIndex:1},{value:"fix: init sort value in sort field with scopeKey ",paraId:0,tocIndex:1},{value:"#1626",paraId:0,tocIndex:1},{value:"style: linkage rule style improve ",paraId:0,tocIndex:1},{value:"#1625",paraId:0,tocIndex:1},{value:"fix: find with attributes and group ",paraId:0,tocIndex:1},{value:"#1411",paraId:0,tocIndex:1},{value:"docs: transform video link to video tag ",paraId:0,tocIndex:1},{value:"#1414",paraId:0,tocIndex:1},{value:"feat(parse-variables): support to parse variables in filter params ",paraId:0,tocIndex:1},{value:"#1558",paraId:0,tocIndex:1},{value:"fix(linkage rules) : support naming, enabling and disabling, copying, and assigning null values ",paraId:0,tocIndex:1},{value:"#1511",paraId:0,tocIndex:1},{value:"chore: update test ci ",paraId:0,tocIndex:1},{value:"#1622",paraId:0,tocIndex:1},{value:"fix: history add new button does not support enabling child collection ",paraId:0,tocIndex:1},{value:"#1536",paraId:0,tocIndex:1},{value:"fix/(linkages-action): detail block actions does not support linkage rules ",paraId:0,tocIndex:1},{value:"#1504",paraId:0,tocIndex:1},{value:"fix: avoid fixedblock height working in popup ",paraId:0,tocIndex:1},{value:"#1621",paraId:0,tocIndex:1},{value:"fix: when the page has FixedBlock, the table of popup is not displayed ",paraId:0,tocIndex:1},{value:"#1619",paraId:0,tocIndex:1},{value:"feat: association-filter-improve ",paraId:0,tocIndex:1},{value:"#1606",paraId:0,tocIndex:1},{value:"fix(Table): cannot display table data ",paraId:0,tocIndex:1},{value:"#1617",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix todo list form read-pretty for non-assigneed user ",paraId:0,tocIndex:1},{value:"#1615",paraId:0,tocIndex:1},{value:"feat(table): hidden pagination when only one page is available ",paraId:0,tocIndex:1},{value:"#1614",paraId:0,tocIndex:1},{value:"refactor: improve FixedBlock performance ",paraId:0,tocIndex:1},{value:"#1593",paraId:0,tocIndex:1},{value:"fix(collection-manager): infinite recursion ",paraId:0,tocIndex:1},{value:"#1608",paraId:0,tocIndex:1},{value:"fix(audit-logs): Add ellipsis feature to table columns ",paraId:0,tocIndex:1},{value:"#1603",paraId:0,tocIndex:1},{value:"feat: improve the non-link ui of association data ",paraId:0,tocIndex:1},{value:"#1602",paraId:0,tocIndex:1},{value:"feat(Kanban): the card support open mode ",paraId:0,tocIndex:1},{value:"#1601",paraId:0,tocIndex:1},{value:"fix( importable-field): incorrect display when moving sort handle ",paraId:0,tocIndex:1},{value:"#1613",paraId:0,tocIndex:1},{value:"fix: enable child collections remain after deleting a child collection ",paraId:0,tocIndex:1},{value:"#1610",paraId:0,tocIndex:1},{value:"fix: destroy through table record referencing collections table ",paraId:0,tocIndex:1},{value:"#1611",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): add default actions value of manual node ",paraId:0,tocIndex:1},{value:"#1600",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add failOnEmpty option for query node ",paraId:0,tocIndex:1},{value:"#1599",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): use toJSON instead of get to get valid result ",paraId:0,tocIndex:1},{value:"#1596",paraId:0,tocIndex:1},{value:"Translation pt-BR (Brazilian Portuguese) ",paraId:0,tocIndex:1},{value:"#1591",paraId:0,tocIndex:1},{value:"fix: role permission add new scope display blank ",paraId:0,tocIndex:1},{value:"#1592",paraId:0,tocIndex:1},{value:"fix(FixedBlock): avoid kanban triggering programmatic scrolling ",paraId:0,tocIndex:1},{value:"#1406",paraId:0,tocIndex:1},{value:"fix: repeat request categories when switching between graph interface and collection&fields ",paraId:0,tocIndex:1},{value:"#1590",paraId:0,tocIndex:1},{value:"fix: collectionFieldsOptions cannot get all fields ",paraId:0,tocIndex:1},{value:"#1588",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix input width in request node config ",paraId:0,tocIndex:1},{value:"#1585",paraId:0,tocIndex:1},{value:"feat(filter-blocks): support filter-blocks ",paraId:0,tocIndex:1},{value:"#1505",paraId:0,tocIndex:1},{value:"refactor: multi-app ",paraId:0,tocIndex:1},{value:"#1578",paraId:0,tocIndex:1},{value:"feat: compact theme ",paraId:0,tocIndex:1},{value:"#1574",paraId:0,tocIndex:1},{value:"feat: support cron field ",paraId:0,tocIndex:1},{value:"#1421",paraId:0,tocIndex:1},{value:"fix(Calendar): ensur to get correct gridInitializer when adding a new\u2026 ",paraId:0,tocIndex:1},{value:"#1425",paraId:0,tocIndex:1},{value:"feat(markdown): support mermaid and better style ",paraId:0,tocIndex:1},{value:"#1583",paraId:0,tocIndex:1},{value:"fix(plugin-map): map block repeats ",paraId:0,tocIndex:1},{value:"#1582",paraId:0,tocIndex:1},{value:"feat: tree collection ",paraId:0,tocIndex:1},{value:"#1561",paraId:0,tocIndex:1},{value:"feat(plugin-map): add map block ",paraId:0,tocIndex:1},{value:"#1486",paraId:0,tocIndex:1},{value:"chore: lazy load sub app in share collection ",paraId:0,tocIndex:1},{value:"#1569",paraId:0,tocIndex:1},{value:"fix(record-picker): supports adding sub-collection records ",paraId:0,tocIndex:1},{value:"#1573",paraId:0,tocIndex:1},{value:"fix: app manager reload ",paraId:0,tocIndex:1},{value:"#1565",paraId:0,tocIndex:1},{value:"feat: multi-app-share-collection plugin ",paraId:0,tocIndex:1},{value:"#1562",paraId:0,tocIndex:1},{value:"feat: record picker support to enable links ",paraId:0,tocIndex:1},{value:"#1515",paraId:0,tocIndex:1},{value:"feat: multiple apps ",paraId:0,tocIndex:1},{value:"#1540",paraId:0,tocIndex:1},{value:"docs(client): add variable docs ",paraId:0,tocIndex:1},{value:"#1556",paraId:0,tocIndex:1},{value:"fix(charts): improve chart table preview with object type ",paraId:0,tocIndex:1},{value:"#1555",paraId:0,tocIndex:1},{value:"feat(plugin-workflow) config preload associations in triggers and nodes ",paraId:0,tocIndex:1},{value:"#1548",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix todo list form read-pretty for non-assigneed user (#1615) ",paraId:1,tocIndex:2},{value:"#1572",paraId:1,tocIndex:2},{value:"chore(versions): \u{1F60A} publish v0.9.2-alpha.1 ",paraId:2,tocIndex:3},{value:"d1adc9d",paraId:2,tocIndex:3},{value:"fix(file-manager): upgrade s3 version ",paraId:2,tocIndex:3},{value:"50183b0",paraId:2,tocIndex:3},{value:"fix: linkage rule ",paraId:2,tocIndex:3},{value:"b8776fe",paraId:2,tocIndex:3}],EA={},DA={title:"v0.9.3\uFF1A2023-05-11",toc:"menu",filename:"docs/en-US/welcome/release/v0093-changelog.md",lastUpdated:173254844e4},OA=[{id:"v0932023-05-11",depth:1,title:"v0.9.3\uFF1A2023-05-11"},{id:"merged",depth:2,title:"Merged"},{id:"fixed",depth:2,title:"Fixed"},{id:"commits",depth:2,title:"Commits"}],RA=[{value:"refactor(plugin-workflow): change single form to custom form block ",paraId:0,tocIndex:1},{value:"#1707",paraId:0,tocIndex:1},{value:"chore(ci): add timeout config for jobs ",paraId:0,tocIndex:1},{value:"#1725",paraId:0,tocIndex:1},{value:"refactor(plugin-workflow): migrate menu items to options ",paraId:0,tocIndex:1},{value:"#1724",paraId:0,tocIndex:1},{value:"fix(client): fix error on clear value in variable input ",paraId:0,tocIndex:1},{value:"#1723",paraId:0,tocIndex:1},{value:"fix(record-picker): fix the table paging problem ",paraId:0,tocIndex:1},{value:"#1718",paraId:0,tocIndex:1},{value:"fix(map-plugin): some data is incorrect ",paraId:0,tocIndex:1},{value:"#1717",paraId:0,tocIndex:1},{value:"fix: data scope not effect in gantt ",paraId:0,tocIndex:1},{value:"#1716",paraId:0,tocIndex:1},{value:"fix: button loading does not disappear when the operation submit failed ",paraId:0,tocIndex:1},{value:"#1698",paraId:0,tocIndex:1},{value:"fix(linkage rule):multiple select condition judgment failed ",paraId:0,tocIndex:1},{value:"#1715",paraId:0,tocIndex:1},{value:"Fix/save through table data ",paraId:0,tocIndex:1},{value:"#1714",paraId:0,tocIndex:1},{value:"feat: improve ui design for linkage action ",paraId:0,tocIndex:1},{value:"#1659",paraId:0,tocIndex:1},{value:"feat(map): support to filter other blocks ",paraId:0,tocIndex:1},{value:"#1691",paraId:0,tocIndex:1},{value:"refactor: improve linkage rule enable ",paraId:0,tocIndex:1},{value:"#1700",paraId:0,tocIndex:1},{value:"fix: find fields arg ",paraId:0,tocIndex:1},{value:"#1710",paraId:0,tocIndex:1},{value:"feat(form-block): data templates ",paraId:0,tocIndex:1},{value:"#1704",paraId:0,tocIndex:1},{value:"fix: linkage relationship data condition judgment failed ",paraId:0,tocIndex:1},{value:"#1681",paraId:0,tocIndex:1},{value:"fix(gantt): update permission check in gantt block ",paraId:0,tocIndex:1},{value:"#1701",paraId:0,tocIndex:1},{value:"fix: clearFormGraph ",paraId:0,tocIndex:1},{value:"#1706",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix request body variable component ",paraId:0,tocIndex:1},{value:"#1703",paraId:0,tocIndex:1},{value:"fix(gantt): improve task bar text ",paraId:0,tocIndex:1},{value:"#1696",paraId:0,tocIndex:1},{value:"fix: long text should be line feed ",paraId:0,tocIndex:1},{value:"#1686",paraId:0,tocIndex:1},{value:"fix: cannot display data when remove last page and the page only just one item ",paraId:0,tocIndex:1},{value:"#1685",paraId:0,tocIndex:1},{value:"fix: meta acl with association query ",paraId:0,tocIndex:1},{value:"#1695",paraId:0,tocIndex:1},{value:"fix: linkage rule title can not set empty ",paraId:0,tocIndex:1},{value:"#1688",paraId:0,tocIndex:1},{value:"feat: improve plugin manager ui ",paraId:0,tocIndex:1},{value:"#1650",paraId:0,tocIndex:1},{value:"feat: gantt block ",paraId:0,tocIndex:1},{value:"#1393",paraId:0,tocIndex:1},{value:"fix(client): fix constant input lose focus in variable ",paraId:0,tocIndex:1},{value:"#1689",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add workflow specific logger ",paraId:0,tocIndex:1},{value:"#1677",paraId:0,tocIndex:1},{value:"fix: remove designer ",paraId:0,tocIndex:1},{value:"#1684",paraId:0,tocIndex:1},{value:"test: should load the .env.test ",paraId:0,tocIndex:1},{value:"#1678",paraId:0,tocIndex:1},{value:"fix: incorrect language after logout ",paraId:0,tocIndex:1},{value:"#1679",paraId:0,tocIndex:1},{value:"feat: optimize file collection ",paraId:0,tocIndex:1},{value:"#1666",paraId:0,tocIndex:1},{value:"fix: sort field init performance ",paraId:0,tocIndex:1},{value:"#1675",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix null collection fields ",paraId:0,tocIndex:1},{value:"#1674",paraId:0,tocIndex:1},{value:"fix(client): fix variable component read pretty mode ",paraId:0,tocIndex:1},{value:"#1673",paraId:0,tocIndex:1},{value:"fix: ui problem of compact theme ",paraId:0,tocIndex:1},{value:"#1670",paraId:0,tocIndex:1},{value:"fix: linkage rule enable effect in form ",paraId:0,tocIndex:1},{value:"#1669",paraId:0,tocIndex:1},{value:"feat: collection template summary ",paraId:0,tocIndex:1},{value:"#1672",paraId:0,tocIndex:1},{value:"feat: (plugin-workflow) dynamic expression ",paraId:0,tocIndex:1},{value:"#1560",paraId:0,tocIndex:1},{value:"chore: find inherit collection warn ",paraId:0,tocIndex:1},{value:"#1663",paraId:0,tocIndex:1},{value:"fix: linkage rule title config clear exception ",paraId:0,tocIndex:1},{value:"#1665",paraId:0,tocIndex:1},{value:"feat: support tableoid filter ",paraId:0,tocIndex:1},{value:"#1657",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add array mapping support in processor ",paraId:0,tocIndex:1},{value:"#1662",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix appends null to collection trigger ",paraId:0,tocIndex:1},{value:"#1661",paraId:0,tocIndex:1},{value:"feat(filter-operators): eq and ne operators support array ",paraId:0,tocIndex:1},{value:"#1658",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix todo drawer data load ",paraId:0,tocIndex:1},{value:"#1656",paraId:0,tocIndex:1},{value:"refactor(client): improve translation ",paraId:0,tocIndex:1},{value:"#1654",paraId:0,tocIndex:1},{value:"fix: fix the 'Add menu item' button disappears ",paraId:0,tocIndex:1},{value:"#1655",paraId:0,tocIndex:1},{value:"chore: add new allowAddtoCurrent config ",paraId:0,tocIndex:1},{value:"#1652",paraId:0,tocIndex:1},{value:"feat: support file collection ",paraId:0,tocIndex:1},{value:"#1636",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix manual node drawer ",paraId:0,tocIndex:1},{value:"#1653",paraId:0,tocIndex:1},{value:"chore: inhertis api with difference schema ",paraId:0,tocIndex:1},{value:"#1545",paraId:0,tocIndex:1},{value:"fix: select record can not enable child collection ",paraId:0,tocIndex:1},{value:"#1649",paraId:0,tocIndex:1},{value:"feat: plugin before enable hook ",paraId:0,tocIndex:1},{value:"#1648",paraId:0,tocIndex:1},{value:"chore: add transaction in set field action ",paraId:0,tocIndex:1},{value:"#1647",paraId:0,tocIndex:1},{value:"fix(linkage rule):linkage rule not display in action ",paraId:0,tocIndex:1},{value:"#1644",paraId:0,tocIndex:1},{value:"refactor: view collection options ",paraId:0,tocIndex:1},{value:"#1643",paraId:0,tocIndex:1},{value:"fix: update field error ",paraId:0,tocIndex:1},{value:"#1645",paraId:0,tocIndex:1},{value:"feat(Table): column action support linkage rules ",paraId:0,tocIndex:1},{value:"#1638",paraId:0,tocIndex:1},{value:"fix(view-collection): field name cannot be edited when there with field source ",paraId:0,tocIndex:1},{value:"#1642",paraId:0,tocIndex:1},{value:"fix: linkage rule config closing rules require reopening the form to take effect ",paraId:0,tocIndex:1},{value:"#1640",paraId:0,tocIndex:1},{value:"refactor(client): change Variable.TextArea to controlled component ",paraId:0,tocIndex:1},{value:"#1605",paraId:0,tocIndex:1},{value:"fix: get pg view def ",paraId:0,tocIndex:1},{value:"#1641",paraId:0,tocIndex:1},{value:"fix: infer view column type with alias ",paraId:0,tocIndex:1},{value:"#1634",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix minors ui issues ",paraId:0,tocIndex:1},{value:"#1635",paraId:0,tocIndex:1},{value:"chore: disabled underscored in view collection. ",paraId:0,tocIndex:1},{value:"#1633",paraId:0,tocIndex:1},{value:"fix: form action dragging area is too large ",paraId:0,tocIndex:1},{value:"#1628",paraId:0,tocIndex:1},{value:"fix: FixedBlock related ui ",paraId:0,tocIndex:1},{value:"#1632",paraId:0,tocIndex:1},{value:"feat: database view collection ",paraId:0,tocIndex:1},{value:"#1587",paraId:0,tocIndex:1},{value:"fix: init sort value in sort field with scopeKey ",paraId:0,tocIndex:1},{value:"#1626",paraId:0,tocIndex:1},{value:"style: linkage rule style improve ",paraId:0,tocIndex:1},{value:"#1625",paraId:0,tocIndex:1},{value:"fix: find with attributes and group ",paraId:0,tocIndex:1},{value:"#1411",paraId:0,tocIndex:1},{value:"docs: transform video link to video tag ",paraId:0,tocIndex:1},{value:"#1414",paraId:0,tocIndex:1},{value:"feat(parse-variables): support to parse variables in filter params ",paraId:0,tocIndex:1},{value:"#1558",paraId:0,tocIndex:1},{value:"fix(linkage rules) : support naming, enabling and disabling, copying, and assigning null values ",paraId:0,tocIndex:1},{value:"#1511",paraId:0,tocIndex:1},{value:"chore: update test ci ",paraId:0,tocIndex:1},{value:"#1622",paraId:0,tocIndex:1},{value:"fix: history add new button does not support enabling child collection ",paraId:0,tocIndex:1},{value:"#1536",paraId:0,tocIndex:1},{value:"fix/(linkages-action): detail block actions does not support linkage rules ",paraId:0,tocIndex:1},{value:"#1504",paraId:0,tocIndex:1},{value:"fix: avoid fixedblock height working in popup ",paraId:0,tocIndex:1},{value:"#1621",paraId:0,tocIndex:1},{value:"fix: when the page has FixedBlock, the table of popup is not displayed ",paraId:0,tocIndex:1},{value:"#1619",paraId:0,tocIndex:1},{value:"feat: association-filter-improve ",paraId:0,tocIndex:1},{value:"#1606",paraId:0,tocIndex:1},{value:"fix(Table): cannot display table data ",paraId:0,tocIndex:1},{value:"#1617",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix todo list form read-pretty for non-assigneed user ",paraId:0,tocIndex:1},{value:"#1615",paraId:0,tocIndex:1},{value:"feat(table): hidden pagination when only one page is available ",paraId:0,tocIndex:1},{value:"#1614",paraId:0,tocIndex:1},{value:"refactor: improve FixedBlock performance ",paraId:0,tocIndex:1},{value:"#1593",paraId:0,tocIndex:1},{value:"fix(collection-manager): infinite recursion ",paraId:0,tocIndex:1},{value:"#1608",paraId:0,tocIndex:1},{value:"fix(audit-logs): Add ellipsis feature to table columns ",paraId:0,tocIndex:1},{value:"#1603",paraId:0,tocIndex:1},{value:"feat: improve the non-link ui of association data ",paraId:0,tocIndex:1},{value:"#1602",paraId:0,tocIndex:1},{value:"feat(Kanban): the card support open mode ",paraId:0,tocIndex:1},{value:"#1601",paraId:0,tocIndex:1},{value:"fix( importable-field): incorrect display when moving sort handle ",paraId:0,tocIndex:1},{value:"#1613",paraId:0,tocIndex:1},{value:"fix: enable child collections remain after deleting a child collection ",paraId:0,tocIndex:1},{value:"#1610",paraId:0,tocIndex:1},{value:"fix: destroy through table record referencing collections table ",paraId:0,tocIndex:1},{value:"#1611",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): add default actions value of manual node ",paraId:0,tocIndex:1},{value:"#1600",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add failOnEmpty option for query node ",paraId:0,tocIndex:1},{value:"#1599",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): use toJSON instead of get to get valid result ",paraId:0,tocIndex:1},{value:"#1596",paraId:0,tocIndex:1},{value:"Translation pt-BR (Brazilian Portuguese) ",paraId:0,tocIndex:1},{value:"#1591",paraId:0,tocIndex:1},{value:"fix: role permission add new scope display blank ",paraId:0,tocIndex:1},{value:"#1592",paraId:0,tocIndex:1},{value:"fix(FixedBlock): avoid kanban triggering programmatic scrolling ",paraId:0,tocIndex:1},{value:"#1406",paraId:0,tocIndex:1},{value:"fix: repeat request categories when switching between graph interface and collection&fields ",paraId:0,tocIndex:1},{value:"#1590",paraId:0,tocIndex:1},{value:"fix: collectionFieldsOptions cannot get all fields ",paraId:0,tocIndex:1},{value:"#1588",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix input width in request node config ",paraId:0,tocIndex:1},{value:"#1585",paraId:0,tocIndex:1},{value:"feat(filter-blocks): support filter-blocks ",paraId:0,tocIndex:1},{value:"#1505",paraId:0,tocIndex:1},{value:"refactor: multi-app ",paraId:0,tocIndex:1},{value:"#1578",paraId:0,tocIndex:1},{value:"feat: compact theme ",paraId:0,tocIndex:1},{value:"#1574",paraId:0,tocIndex:1},{value:"feat: support cron field ",paraId:0,tocIndex:1},{value:"#1421",paraId:0,tocIndex:1},{value:"fix(Calendar): ensur to get correct gridInitializer when adding a new\u2026 ",paraId:0,tocIndex:1},{value:"#1425",paraId:0,tocIndex:1},{value:"feat(markdown): support mermaid and better style ",paraId:0,tocIndex:1},{value:"#1583",paraId:0,tocIndex:1},{value:"fix(plugin-map): map block repeats ",paraId:0,tocIndex:1},{value:"#1582",paraId:0,tocIndex:1},{value:"feat: tree collection ",paraId:0,tocIndex:1},{value:"#1561",paraId:0,tocIndex:1},{value:"feat(plugin-map): add map block ",paraId:0,tocIndex:1},{value:"#1486",paraId:0,tocIndex:1},{value:"chore: lazy load sub app in share collection ",paraId:0,tocIndex:1},{value:"#1569",paraId:0,tocIndex:1},{value:"fix(record-picker): supports adding sub-collection records ",paraId:0,tocIndex:1},{value:"#1573",paraId:0,tocIndex:1},{value:"fix: app manager reload ",paraId:0,tocIndex:1},{value:"#1565",paraId:0,tocIndex:1},{value:"feat: multi-app-share-collection plugin ",paraId:0,tocIndex:1},{value:"#1562",paraId:0,tocIndex:1},{value:"feat: record picker support to enable links ",paraId:0,tocIndex:1},{value:"#1515",paraId:0,tocIndex:1},{value:"feat: multiple apps ",paraId:0,tocIndex:1},{value:"#1540",paraId:0,tocIndex:1},{value:"docs(client): add variable docs ",paraId:0,tocIndex:1},{value:"#1556",paraId:0,tocIndex:1},{value:"fix(charts): improve chart table preview with object type ",paraId:0,tocIndex:1},{value:"#1555",paraId:0,tocIndex:1},{value:"feat(plugin-workflow) config preload associations in triggers and nodes ",paraId:0,tocIndex:1},{value:"#1548",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix todo list form read-pretty for non-assigneed user (#1615) ",paraId:1,tocIndex:2},{value:"#1572",paraId:1,tocIndex:2},{value:"chore(versions): \u{1F60A} publish v0.9.2-alpha.1 ",paraId:2,tocIndex:3},{value:"d1adc9d",paraId:2,tocIndex:3},{value:"fix(file-manager): upgrade s3 version ",paraId:2,tocIndex:3},{value:"50183b0",paraId:2,tocIndex:3},{value:"fix: linkage rule ",paraId:2,tocIndex:3},{value:"b8776fe",paraId:2,tocIndex:3}],MA={},LA={title:"v0.9.4\uFF1A2023-05-25",toc:"menu",filename:"docs/en-US/welcome/release/v0094-changelog.md",lastUpdated:173254844e4},NA=[{id:"v0942023-05-25",depth:1,title:"v0.9.4\uFF1A2023-05-25"},{id:"merged",depth:2,title:"Merged"},{id:"commits",depth:2,title:"Commits"}],zA=[{value:"chore: load view collection when source not found ",paraId:0,tocIndex:1},{value:"#1930",paraId:0,tocIndex:1},{value:"feat(data-template): support to set data scope and title field ",paraId:0,tocIndex:1},{value:"#1918",paraId:0,tocIndex:1},{value:"feat(data-template): support for unlimited levels of fields selection ",paraId:0,tocIndex:1},{value:"#1910",paraId:0,tocIndex:1},{value:"chore: when using association field by picker mode,it's open size can be changed ",paraId:0,tocIndex:1},{value:"#1926",paraId:0,tocIndex:1},{value:"fix(ConfigurationTabs): avoid error ",paraId:0,tocIndex:1},{value:"#1782",paraId:0,tocIndex:1},{value:"fix: tableField query data in add child action ",paraId:0,tocIndex:1},{value:"#1876",paraId:0,tocIndex:1},{value:"refactor: front-end testing with vitest ",paraId:0,tocIndex:1},{value:"#1900",paraId:0,tocIndex:1},{value:"fix: disable popup button in add-modal ",paraId:0,tocIndex:1},{value:"#1808",paraId:0,tocIndex:1},{value:"fix: append acl resource params ",paraId:0,tocIndex:1},{value:"#1923",paraId:0,tocIndex:1},{value:"chore: update guard with array contains null ",paraId:0,tocIndex:1},{value:"#1922",paraId:0,tocIndex:1},{value:"refactor: initialization when switching field components ",paraId:0,tocIndex:1},{value:"#1915",paraId:0,tocIndex:1},{value:"fix(association-field): only when the new data is successfully created can the data be associated ",paraId:0,tocIndex:1},{value:"#1884",paraId:0,tocIndex:1},{value:"fix: eager load with belongs to many with custom source key ",paraId:0,tocIndex:1},{value:"#1913",paraId:0,tocIndex:1},{value:"fix: hiding the title of a subform will hide all embedded titles ",paraId:0,tocIndex:1},{value:"#1904",paraId:0,tocIndex:1},{value:"fix: updateAssociationValues ",paraId:0,tocIndex:1},{value:"#1903",paraId:0,tocIndex:1},{value:"fix(plugin-formula): use read-pretty component in result ",paraId:0,tocIndex:1},{value:"#1911",paraId:0,tocIndex:1},{value:"fix: can't set default value when turn on the form field required ",paraId:0,tocIndex:1},{value:"#1887",paraId:0,tocIndex:1},{value:"fix(Data-template): fix bug when deleting fields ",paraId:0,tocIndex:1},{value:"#1907",paraId:0,tocIndex:1},{value:"feat(app): add clear cache button ",paraId:0,tocIndex:1},{value:"#1909",paraId:0,tocIndex:1},{value:"fix: eager load belongs to many association ",paraId:0,tocIndex:1},{value:"#1906",paraId:0,tocIndex:1},{value:"feat: support to-multi field variables ",paraId:0,tocIndex:1},{value:"#1680",paraId:0,tocIndex:1},{value:"fix: append belongs to association with fields ",paraId:0,tocIndex:1},{value:"#1894",paraId:0,tocIndex:1},{value:"fix: appends belongs to association ",paraId:0,tocIndex:1},{value:"#1893",paraId:0,tocIndex:1},{value:"fix: preload relational data ",paraId:0,tocIndex:1},{value:"#1847",paraId:0,tocIndex:1},{value:"feat: support reboot application manually ",paraId:0,tocIndex:1},{value:"#1889",paraId:0,tocIndex:1},{value:"Refactor/append fields ",paraId:0,tocIndex:1},{value:"#1883",paraId:0,tocIndex:1},{value:"chore: pg sql parser ",paraId:0,tocIndex:1},{value:"#1890",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix language ",paraId:0,tocIndex:1},{value:"#1886",paraId:0,tocIndex:1},{value:"fix: field required when setting sorting rules ",paraId:0,tocIndex:1},{value:"#1885",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add node description to drawer when edit node ",paraId:0,tocIndex:1},{value:"#1882",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix variable api caller in loop ",paraId:0,tocIndex:1},{value:"#1877",paraId:0,tocIndex:1},{value:"chore(github-template): clean comments and format ",paraId:0,tocIndex:1},{value:"#1878",paraId:0,tocIndex:1},{value:"feat(association-field): default one data for to-many association ",paraId:0,tocIndex:1},{value:"#1873",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): fix trigger title when workflow not loaded ",paraId:0,tocIndex:1},{value:"#1875",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): aggregate ",paraId:0,tocIndex:1},{value:"#1852",paraId:0,tocIndex:1},{value:"Feat/translation es_ES ",paraId:0,tocIndex:1},{value:"#1801",paraId:0,tocIndex:1},{value:"fix: data is not updated when appends are changed ",paraId:0,tocIndex:1},{value:"#1872",paraId:0,tocIndex:1},{value:"fix:association select no options when clearing filter ",paraId:0,tocIndex:1},{value:"#1866",paraId:0,tocIndex:1},{value:"fix(acl): issue with repeated createdById field ",paraId:0,tocIndex:1},{value:"#1871",paraId:0,tocIndex:1},{value:"feat(client): allow search by title in collection select ",paraId:0,tocIndex:1},{value:"#1869",paraId:0,tocIndex:1},{value:"chore: skip get standalone deployment sub application ",paraId:0,tocIndex:1},{value:"#1868",paraId:0,tocIndex:1},{value:"fix(plugin-workflow): remove useless context option ",paraId:0,tocIndex:1},{value:"#1867",paraId:0,tocIndex:1},{value:"fix: inherit fields filter Foreign Key fields ",paraId:0,tocIndex:1},{value:"#1864",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): loop ",paraId:0,tocIndex:1},{value:"#1787",paraId:0,tocIndex:1},{value:"fix: insertAdjacent not find ",paraId:0,tocIndex:1},{value:"#1861",paraId:0,tocIndex:1},{value:"refactor(add-new):association field add new support button edit ",paraId:0,tocIndex:1},{value:"#1854",paraId:0,tocIndex:1},{value:"feat: support List and Grid Card block ",paraId:0,tocIndex:1},{value:"#1753",paraId:0,tocIndex:1},{value:"fix: fix multi-select field not show 'Allow multiple' switch ",paraId:0,tocIndex:1},{value:"#1857",paraId:0,tocIndex:1},{value:"fix: field for attachment interface type without appends ",paraId:0,tocIndex:1},{value:"#1856",paraId:0,tocIndex:1},{value:"fix: action error when field deleted ",paraId:0,tocIndex:1},{value:"#1849",paraId:0,tocIndex:1},{value:"feat: support running single sub app ",paraId:0,tocIndex:1},{value:"#1853",paraId:0,tocIndex:1},{value:"fix: assign field with delete field ",paraId:0,tocIndex:1},{value:"#1850",paraId:0,tocIndex:1},{value:"fix: title field in assign fields value ",paraId:0,tocIndex:1},{value:"#1848",paraId:0,tocIndex:1},{value:"fix:association appends ",paraId:0,tocIndex:1},{value:"#1842",paraId:0,tocIndex:1},{value:"feat(plugin-workflow): add delete button in workflow canvas page ",paraId:0,tocIndex:1},{value:"#1844",paraId:0,tocIndex:1},{value:"fix(block-provider): getNesterAppends filter fix ",paraId:0,tocIndex:1},{value:"#1839",paraId:0,tocIndex:1},{value:"feat: repository aggregate method ",paraId:0,tocIndex:1},{value:"#1829",paraId:0,tocIndex:1},{value:"feat(docs): update docs ",paraId:1,tocIndex:2},{value:"0b0a8d2",paraId:1,tocIndex:2},{value:"chore(versions): \u{1F60A} publish v0.9.4-alpha.1 ",paraId:1,tocIndex:2},{value:"9c94840",paraId:1,tocIndex:2},{value:"chore: update changelog ",paraId:1,tocIndex:2},{value:"a6c7b41",paraId:1,tocIndex:2}],FA={},BA={title:"v0.10: 2023-06-20",toc:"menu",filename:"docs/en-US/welcome/release/v0100-changelog.md",lastUpdated:173254844e4,description:"No change, upgrade reference Upgrading for Docker compose"},jA=[{id:"v010-2023-06-20",depth:1,title:"v0.10: 2023-06-20"},{id:"new-features-in-the-second-quarter",depth:2,title:"New features in the second quarter"},{id:"upgrading-applications",depth:2,title:"Upgrading applications"},{id:"upgrading-for-docker-compose",depth:3,title:"Upgrading for Docker compose"},{id:"upgrading-for-git-source-code",depth:3,title:"Upgrading for Git source code"},{id:"upgrading-for-create-nocobase-app",depth:3,title:"Upgrading for create-nocobase-app"},{id:"upcoming-deprecated-and-potentially-incompatible-changes",depth:2,title:"Upcoming deprecated and potentially incompatible changes"},{id:"sub-table-field-component",depth:3,title:"Sub-table field component"},{id:"attachment-upload-api-changes",depth:3,title:"Attachment upload api changes"},{id:"signinsignup-api-changes",depth:3,title:"signin/signup api changes"},{id:"adjustments-to-date-field-filtering",depth:3,title:"Adjustments to date field filtering"},{id:"third-party-plugin-upgrade-guide",depth:2,title:"Third-party plugin upgrade guide"},{id:"dependencies-upgrade",depth:3,title:"Dependencies upgrade"},{id:"code-changes",depth:3,title:"Code changes"},{id:"layout-component",depth:3,title:"Layout Component"},{id:"redirect",depth:3,title:"Redirect"},{id:"usehistory",depth:3,title:"useHistory"},{id:"uselocation",depth:3,title:"useLocation"},{id:"path",depth:3,title:"path"}],HA=[{value:`Association field component improvements, support for multiple component switching `,paraId:0,tocIndex:1},{value:"Select",paraId:1,tocIndex:1},{value:"Record picker",paraId:1,tocIndex:1},{value:"Sub-form/Sub-details",paraId:1,tocIndex:1},{value:"Sub-table",paraId:1,tocIndex:1},{value:"File manager",paraId:1,tocIndex:1},{value:"Title(read only)",paraId:1,tocIndex:1},{value:`Quick creation of relational data, supports two quick creation modes `,paraId:0,tocIndex:1},{value:"Add in drop-down menu to quickly create a new record based on the title field",paraId:2,tocIndex:1},{value:"Add in pop-up window to configure complex add forms",paraId:2,tocIndex:1},{value:`Duplicate action, supports two modes `,paraId:0,tocIndex:1},{value:"Direct duplicate",paraId:3,tocIndex:1},{value:"Copy into the form and continue to fill in",paraId:3,tocIndex:1},{value:"Form data templates",paraId:0,tocIndex:1},{value:"Filter data scope support variables",paraId:0,tocIndex:1},{value:"List block",paraId:0,tocIndex:1},{value:"Grid card block",paraId:0,tocIndex:1},{value:"Mobile client plugin",paraId:0,tocIndex:1},{value:`User authentication plugin, support for different authentication methods @@ -12913,7 +12965,7 @@ export default function RouteComponent(props) { `,paraId:41,tocIndex:18},{value:"The following RegExp-style route paths are not valid in v6:",paraId:42,tocIndex:18},{value:`/tweets/:id(\\d+) /files/*/cat.jpg /files-* -`,paraId:43,tocIndex:18},{value:"For more api changes, please refer to ",paraId:44,tocIndex:18},{value:"react-router@6",paraId:44,tocIndex:18},{value:"\u3002",paraId:44,tocIndex:18}],WA={},$A={title:"v0.11: 2023-07-08",toc:"menu",filename:"docs/en-US/welcome/release/v0110-changelog.md",lastUpdated:1732240239e3,description:"before you had to pass a component and the component needed to pass props.children, for example:"},GA=[{id:"v011-2023-07-08",depth:1,title:"v0.11: 2023-07-08"},{id:"new-features",depth:2,title:"New features"},{id:"incompatible-changes",depth:2,title:"Incompatible changes"},{id:"new-client-application-plugin-and-router",depth:3,title:"New client application, plugin and router"},{id:"plugin-changes",depth:4,title:"Plugin changes"},{id:"routing-changes",depth:4,title:"Routing changes"},{id:"antd-upgrade-to-v5",depth:3,title:"antd upgrade to v5"}],VA=[{value:"New client application, plugin and router",paraId:0,tocIndex:1},{value:"Ant design upgrade to v5",paraId:0,tocIndex:1},{value:`New plugin +`,paraId:43,tocIndex:18},{value:"For more api changes, please refer to ",paraId:44,tocIndex:18},{value:"react-router@6",paraId:44,tocIndex:18},{value:"\u3002",paraId:44,tocIndex:18}],WA={},$A={title:"v0.11: 2023-07-08",toc:"menu",filename:"docs/en-US/welcome/release/v0110-changelog.md",lastUpdated:173254844e4,description:"before you had to pass a component and the component needed to pass props.children, for example:"},GA=[{id:"v011-2023-07-08",depth:1,title:"v0.11: 2023-07-08"},{id:"new-features",depth:2,title:"New features"},{id:"incompatible-changes",depth:2,title:"Incompatible changes"},{id:"new-client-application-plugin-and-router",depth:3,title:"New client application, plugin and router"},{id:"plugin-changes",depth:4,title:"Plugin changes"},{id:"routing-changes",depth:4,title:"Routing changes"},{id:"antd-upgrade-to-v5",depth:3,title:"antd upgrade to v5"}],VA=[{value:"New client application, plugin and router",paraId:0,tocIndex:1},{value:"Ant design upgrade to v5",paraId:0,tocIndex:1},{value:`New plugin `,paraId:0,tocIndex:1},{value:"Data visualization",paraId:1,tocIndex:1},{value:"API keys",paraId:1,tocIndex:1},{value:"Google map",paraId:1,tocIndex:1},{value:"before you had to pass a component and the component needed to pass ",paraId:2,tocIndex:4},{value:"props.children",paraId:2,tocIndex:4},{value:", for example:",paraId:2,tocIndex:4},{value:`const HelloProvider = (props) => { // do something logic return
{props.children}
; @@ -12981,7 +13033,7 @@ const HelloProvider = (props) => { + } + } + export default HelloPlugin; -`,paraId:11,tocIndex:5},{value:"more details can be found in ",paraId:12,tocIndex:5},{value:"packages/core/client/src/application/index.md",paraId:12,tocIndex:5},{value:"antd related details view the official website ",paraId:13,tocIndex:6},{value:"V4 to V5",paraId:13,tocIndex:6},{value:"@formily/antd",paraId:13,tocIndex:6},{value:" replace with ",paraId:13,tocIndex:6},{value:"@formily/antd-v5",paraId:13,tocIndex:6}],KA={},ZA={title:"v0.12: 2023-08-02",toc:"menu",filename:"docs/en-US/welcome/release/v0120-changelog.md",lastUpdated:1732240239e3,description:"No change, refer to Docker Image Upgrade Guide for upgrade."},YA=[{id:"v012-2023-08-02",depth:1,title:"v0.12: 2023-08-02"},{id:"new-features",depth:2,title:"New Features"},{id:"application-upgrades",depth:2,title:"Application upgrades"},{id:"upgrade-of-docker-installation",depth:3,title:"Upgrade of Docker installation"},{id:"upgrading-source-code-installation",depth:3,title:"Upgrading source code installation"},{id:"upgrading-a-create-nocobase-app-installation",depth:3,title:"Upgrading a create-nocobase-app installation"},{id:"incompatible-changes",depth:2,title:"Incompatible changes"},{id:"nocobaseapp-client-and-nocobaseapp-server-merged-into-nocobase-app",depth:3,title:"@nocobase/app-client and @nocobase/app-server merged into @nocobase-app"},{id:"the-distclient-path-of-the-app-has-changed",depth:3,title:"The dist/client path of the app has changed."},{id:"third-party-plugins-need-to-be-rebuilt",depth:3,title:"Third party plugins need to be rebuilt"},{id:"third-party-plugin-upgrade-guide",depth:2,title:"Third-party plugin upgrade guide"},{id:"the-plugin-directory-must-have-both-srcclient-and-srcserver-directories",depth:3,title:"The plugin directory must have both src/client and src/server directories."},{id:"plugins-multilingual-placement-srclocale-directory",depth:3,title:"Plugin's multilingual placement src/locale directory"},{id:"adjustment-of-plugin-dependencies",depth:3,title:"Adjustment of plugin dependencies"},{id:"the-output-path-of-the-plugin-has-been-changed-from-lib-to-dist",depth:3,title:"The output path of the plugin has been changed from lib to dist"}],QA=[{value:"New plugin build tool. The built plugins will be able to be used directly on the production environment without the need for a second build.",paraId:0,tocIndex:1},{value:"No change, refer to ",paraId:1,tocIndex:3},{value:"Docker Image Upgrade Guide",paraId:2,tocIndex:3},{value:" for upgrade.",paraId:1,tocIndex:3},{value:"The plugin build tool has been freshly upgraded, and the cache needs to be cleared after pulling new sources.",paraId:3,tocIndex:4},{value:`git pull # Pull the new source code. +`,paraId:11,tocIndex:5},{value:"more details can be found in ",paraId:12,tocIndex:5},{value:"packages/core/client/src/application/index.md",paraId:12,tocIndex:5},{value:"antd related details view the official website ",paraId:13,tocIndex:6},{value:"V4 to V5",paraId:13,tocIndex:6},{value:"@formily/antd",paraId:13,tocIndex:6},{value:" replace with ",paraId:13,tocIndex:6},{value:"@formily/antd-v5",paraId:13,tocIndex:6}],KA={},ZA={title:"v0.12: 2023-08-02",toc:"menu",filename:"docs/en-US/welcome/release/v0120-changelog.md",lastUpdated:173254844e4,description:"No change, refer to Docker Image Upgrade Guide for upgrade."},YA=[{id:"v012-2023-08-02",depth:1,title:"v0.12: 2023-08-02"},{id:"new-features",depth:2,title:"New Features"},{id:"application-upgrades",depth:2,title:"Application upgrades"},{id:"upgrade-of-docker-installation",depth:3,title:"Upgrade of Docker installation"},{id:"upgrading-source-code-installation",depth:3,title:"Upgrading source code installation"},{id:"upgrading-a-create-nocobase-app-installation",depth:3,title:"Upgrading a create-nocobase-app installation"},{id:"incompatible-changes",depth:2,title:"Incompatible changes"},{id:"nocobaseapp-client-and-nocobaseapp-server-merged-into-nocobase-app",depth:3,title:"@nocobase/app-client and @nocobase/app-server merged into @nocobase-app"},{id:"the-distclient-path-of-the-app-has-changed",depth:3,title:"The dist/client path of the app has changed."},{id:"third-party-plugins-need-to-be-rebuilt",depth:3,title:"Third party plugins need to be rebuilt"},{id:"third-party-plugin-upgrade-guide",depth:2,title:"Third-party plugin upgrade guide"},{id:"the-plugin-directory-must-have-both-srcclient-and-srcserver-directories",depth:3,title:"The plugin directory must have both src/client and src/server directories."},{id:"plugins-multilingual-placement-srclocale-directory",depth:3,title:"Plugin's multilingual placement src/locale directory"},{id:"adjustment-of-plugin-dependencies",depth:3,title:"Adjustment of plugin dependencies"},{id:"the-output-path-of-the-plugin-has-been-changed-from-lib-to-dist",depth:3,title:"The output path of the plugin has been changed from lib to dist"}],QA=[{value:"New plugin build tool. The built plugins will be able to be used directly on the production environment without the need for a second build.",paraId:0,tocIndex:1},{value:"No change, refer to ",paraId:1,tocIndex:3},{value:"Docker Image Upgrade Guide",paraId:2,tocIndex:3},{value:" for upgrade.",paraId:1,tocIndex:3},{value:"The plugin build tool has been freshly upgraded, and the cache needs to be cleared after pulling new sources.",paraId:3,tocIndex:4},{value:`git pull # Pull the new source code. yarn clean # Clear the cache. `,paraId:4,tocIndex:4},{value:"For more details, see ",paraId:5,tocIndex:4},{value:"Git source upgrade guide",paraId:6,tocIndex:4},{value:".",paraId:5,tocIndex:4},{value:"Redownload the new version via ",paraId:7,tocIndex:5},{value:"yarn create",paraId:7,tocIndex:5},{value:" and update the .env configuration, see [major version upgrade guide](/welcome/getting-started/upgrading/create-nocobase-app#Major version upgrade) for more details.",paraId:7,tocIndex:5},{value:"Apps installed via create-nocobase-app no longer have a packages/app directory, and custom code in packages/app needs to be moved to the custom plugin.",paraId:8,tocIndex:7},{value:"If you are configuring nginx yourself, you will need to make a similar adjustment",paraId:9,tocIndex:8},{value:`server { - root /app/nocobase/packages/app/client/dist; @@ -13060,8 +13112,8 @@ export { default } from './dist/client'; `,paraId:28,tocIndex:14},{value:"server.d.ts",paraId:29,tocIndex:14},{value:`export * from './dist/server'; export { default } from './dist/server'; `,paraId:30,tocIndex:14},{value:"server.js",paraId:31,tocIndex:14},{value:`module.exports = require('./dist/server/index.js'); -`,paraId:32,tocIndex:14}],JA={},XA={title:"v0.13: 2023-08-24",toc:"menu",filename:"docs/en-US/welcome/release/v0130-changelog.md",lastUpdated:1732240239e3},eq=[{id:"v013-2023-08-24",depth:1,title:"v0.13: 2023-08-24"},{id:"new-features",depth:2,title:"New Features"},{id:"application-status-flow",depth:3,title:"Application status flow"},{id:"demo-video",depth:3,title:"Demo video"},{id:"upgrading",depth:2,title:"Upgrading"}],aq=[{value:` - `,paraId:0},{value:"Upgrading for Docker compose",paraId:1,tocIndex:4},{value:"Upgrading for create-nocobase-app",paraId:2,tocIndex:4},{value:"Upgrading for Git source code",paraId:3,tocIndex:4}],tq={},nq={title:"v0.14: 2023-09-12",toc:"menu",filename:"docs/en-US/welcome/release/v0140-changelog.md",lastUpdated:1732240239e3,description:"This release enables plug-and-play plugins in production environments. You can now add plugins directly through the UI, and support downloading from the npm registry (which can be private), local uploads, and URL downloads."},oq=[{id:"v014-2023-09-12",depth:1,title:"v0.14: 2023-09-12"},{id:"new-features",depth:2,title:"New features"},{id:"new-plugin-manager-interface",depth:3,title:"New plugin manager interface"},{id:"uploaded-plugins-are-located-in-the-storageplugins-directory",depth:3,title:"Uploaded plugins are located in the storage/plugins directory."},{id:"plugin-updates",depth:3,title:"Plugin updates"},{id:"incompatible-changes",depth:2,title:"Incompatible changes"},{id:"changes-to-plugin-names",depth:3,title:"Changes to plugin names"},{id:"improvements-to-pmadd",depth:3,title:"Improvements to pm.add"},{id:"nginx-configuration-changes",depth:3,title:"Nginx configuration changes"},{id:"plugin-development-guide",depth:2,title:"Plugin development guide"}],rq=[{value:"This release enables plug-and-play plugins in production environments. You can now add plugins directly through the UI, and support downloading from the npm registry (which can be private), local uploads, and URL downloads.",paraId:0,tocIndex:0},{value:"The storage/plugins directory is used to upload plugins, and is organized as npm packages.",paraId:1,tocIndex:3},{value:`|- /storage/ +`,paraId:32,tocIndex:14}],JA={},XA={title:"v0.13: 2023-08-24",toc:"menu",filename:"docs/en-US/welcome/release/v0130-changelog.md",lastUpdated:173254844e4},eq=[{id:"v013-2023-08-24",depth:1,title:"v0.13: 2023-08-24"},{id:"new-features",depth:2,title:"New Features"},{id:"application-status-flow",depth:3,title:"Application status flow"},{id:"demo-video",depth:3,title:"Demo video"},{id:"upgrading",depth:2,title:"Upgrading"}],aq=[{value:` + `,paraId:0},{value:"Upgrading for Docker compose",paraId:1,tocIndex:4},{value:"Upgrading for create-nocobase-app",paraId:2,tocIndex:4},{value:"Upgrading for Git source code",paraId:3,tocIndex:4}],tq={},nq={title:"v0.14: 2023-09-12",toc:"menu",filename:"docs/en-US/welcome/release/v0140-changelog.md",lastUpdated:173254844e4,description:"This release enables plug-and-play plugins in production environments. You can now add plugins directly through the UI, and support downloading from the npm registry (which can be private), local uploads, and URL downloads."},oq=[{id:"v014-2023-09-12",depth:1,title:"v0.14: 2023-09-12"},{id:"new-features",depth:2,title:"New features"},{id:"new-plugin-manager-interface",depth:3,title:"New plugin manager interface"},{id:"uploaded-plugins-are-located-in-the-storageplugins-directory",depth:3,title:"Uploaded plugins are located in the storage/plugins directory."},{id:"plugin-updates",depth:3,title:"Plugin updates"},{id:"incompatible-changes",depth:2,title:"Incompatible changes"},{id:"changes-to-plugin-names",depth:3,title:"Changes to plugin names"},{id:"improvements-to-pmadd",depth:3,title:"Improvements to pm.add"},{id:"nginx-configuration-changes",depth:3,title:"Nginx configuration changes"},{id:"plugin-development-guide",depth:2,title:"Plugin development guide"}],rq=[{value:"This release enables plug-and-play plugins in production environments. You can now add plugins directly through the UI, and support downloading from the npm registry (which can be private), local uploads, and URL downloads.",paraId:0,tocIndex:0},{value:"The storage/plugins directory is used to upload plugins, and is organized as npm packages.",paraId:1,tocIndex:3},{value:`|- /storage/ |- /plugins/ |- /@nocobase/ |- /plugin-hello1/ @@ -13140,7 +13192,7 @@ class HelloPlugin extends Plugin { }`},"react-router-dom":{type:"NPM",value:"6.3.0"}}}},"docs-en-us-welcome-release-v-0150-changelog-demo-3":{component:n.memo(n.lazy(io()(Ct()().mark(function Vt(){var Ga,va;return Ct()().wrap(function(lt){for(;;)switch(lt.prev=lt.next){case 0:Ga=app.pluginSettingsManager.getRouteName("hello"),va=app.pluginSettingsManager.getRoutePath("hello");case 2:case"end":return lt.stop()}},Vt)})))),asset:{type:"BLOCK",id:"docs-en-us-welcome-release-v-0150-changelog-demo-3",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:`const baseName = app.pluginSettingsManager.getRouteName("hello"); // admin.settings.hello const basePath = app.pluginSettingsManager.getRoutePath("hello"); // /admin/settings. -// /admin/settings/hello`}}}}},cq={title:"v0.15\uFF1A2023-11-13",toc:"menu",filename:"docs/en-US/welcome/release/v0150-changelog.md",lastUpdated:1732240239e3,description:"\u4EE5\u524D\u4F7F\u7528 SettingsCenterProvider \u6CE8\u518C\u63D2\u4EF6\u914D\u7F6E\u9875\u9762\uFF0C\u73B0\u5728\u9700\u8981\u901A\u8FC7\u63D2\u4EF6\u6CE8\u518C\u3002"},sq=[{id:"v0152023-11-13",depth:1,title:"v0.15\uFF1A2023-11-13"},{id:"features",depth:2,title:"Features"},{id:"breaking-changes",depth:2,title:"Breaking changes"},{id:"plugin-configuration-page-registration-api",depth:3,title:"Plugin configuration page registration API"},{id:"changelog",depth:2,title:"Changelog"}],uq=[{value:"\u4EE5\u524D\u4F7F\u7528 ",paraId:0,tocIndex:3},{value:"SettingsCenterProvider",paraId:0,tocIndex:3},{value:" \u6CE8\u518C\u63D2\u4EF6\u914D\u7F6E\u9875\u9762\uFF0C\u73B0\u5728\u9700\u8981\u901A\u8FC7\u63D2\u4EF6\u6CE8\u518C\u3002",paraId:0,tocIndex:3},{value:"Previously, the plugin configuration page was registered using ",paraId:1,tocIndex:3},{value:"SettingsCenterProvider",paraId:1,tocIndex:3},{value:", and now it needs to be registered through the plugin.",paraId:1,tocIndex:3},{value:"Case 1: There is only one Tab on the original page",paraId:2,tocIndex:3},{value:"When there is only one Tab on the page, the new version of the Tab will be deleted, leaving only the title and icon of the page.",paraId:3,tocIndex:3},{value:`const HelloProvider = React.memo(props => { +// /admin/settings/hello`}}}}},cq={title:"v0.15\uFF1A2023-11-13",toc:"menu",filename:"docs/en-US/welcome/release/v0150-changelog.md",lastUpdated:173254844e4,description:"\u4EE5\u524D\u4F7F\u7528 SettingsCenterProvider \u6CE8\u518C\u63D2\u4EF6\u914D\u7F6E\u9875\u9762\uFF0C\u73B0\u5728\u9700\u8981\u901A\u8FC7\u63D2\u4EF6\u6CE8\u518C\u3002"},sq=[{id:"v0152023-11-13",depth:1,title:"v0.15\uFF1A2023-11-13"},{id:"features",depth:2,title:"Features"},{id:"breaking-changes",depth:2,title:"Breaking changes"},{id:"plugin-configuration-page-registration-api",depth:3,title:"Plugin configuration page registration API"},{id:"changelog",depth:2,title:"Changelog"}],uq=[{value:"\u4EE5\u524D\u4F7F\u7528 ",paraId:0,tocIndex:3},{value:"SettingsCenterProvider",paraId:0,tocIndex:3},{value:" \u6CE8\u518C\u63D2\u4EF6\u914D\u7F6E\u9875\u9762\uFF0C\u73B0\u5728\u9700\u8981\u901A\u8FC7\u63D2\u4EF6\u6CE8\u518C\u3002",paraId:0,tocIndex:3},{value:"Previously, the plugin configuration page was registered using ",paraId:1,tocIndex:3},{value:"SettingsCenterProvider",paraId:1,tocIndex:3},{value:", and now it needs to be registered through the plugin.",paraId:1,tocIndex:3},{value:"Case 1: There is only one Tab on the original page",paraId:2,tocIndex:3},{value:"When there is only one Tab on the page, the new version of the Tab will be deleted, leaving only the title and icon of the page.",paraId:3,tocIndex:3},{value:`const HelloProvider = React.memo(props => { return ( =18" } @@ -13193,7 +13245,7 @@ CACHE_DEFAULT_STORE=memory CACHE_MEMORY_MAX=2000 # Redis\uFF0Coptional CACHE_REDIS_URL=redis://localhost:6379 -`,paraId:10,tocIndex:5},{value:"refactor(cache): improve cache ",paraId:11,tocIndex:6},{value:"#3004",paraId:11,tocIndex:6},{value:"fix: local storage base url ",paraId:11,tocIndex:6},{value:"#3063",paraId:11,tocIndex:6},{value:"feat: show table definition ",paraId:11,tocIndex:6},{value:"#3061",paraId:11,tocIndex:6},{value:"feat: mariadb support ",paraId:11,tocIndex:6},{value:"#3052",paraId:11,tocIndex:6},{value:"fix(plugin-workflow): client minor fixes ",paraId:11,tocIndex:6},{value:"#3062",paraId:11,tocIndex:6},{value:"chore: view inference ",paraId:11,tocIndex:6},{value:"#3060",paraId:11,tocIndex:6},{value:"fix: sort by association collection ",paraId:11,tocIndex:6},{value:"#3058",paraId:11,tocIndex:6},{value:"feat: node >= 18 ",paraId:11,tocIndex:6},{value:"#3066",paraId:11,tocIndex:6}],mq={},hq={title:"v0.17\uFF1A2023-12-04",toc:"menu",filename:"docs/en-US/welcome/release/v0170-changelog.md",lastUpdated:1732240239e3,description:"To reduce development learning costs and provide a better frontend development experience, we have phased a reconstruction of the frontend core over the past few months, including:"},fq=[{id:"v0172023-12-04",depth:1,title:"v0.17\uFF1A2023-12-04"},{id:"new-features",depth:2,title:"New Features"},{id:"incompatible-changes",depth:2,title:"Incompatible Changes"},{id:"changes-to-schemainitializer",depth:3,title:"Changes to SchemaInitializer"},{id:"changes-to-schemasettings",depth:3,title:"Changes to SchemaSettings"}],xq=[{value:"To reduce development learning costs and provide a better frontend development experience, we have phased a reconstruction of the frontend core over the past few months, including:",paraId:0,tocIndex:1},{value:"This time, v0.17 has refactored the UI Schema designer-related SchemaInitializer and SchemaSettings.",paraId:1,tocIndex:1},{value:"To address the difficulty for users to get started, we have also reorganized various sections of the documentation:",paraId:2,tocIndex:1},{value:"Plugin Development",paraId:3,tocIndex:1},{value:" (completely revised and published)",paraId:3,tocIndex:1},{value:"API Reference / Client",paraId:3,tocIndex:1},{value:" (new section, already published)",paraId:3,tocIndex:1},{value:"User Manual (completely revised, will be released in the next one to two weeks)",paraId:3,tocIndex:1},{value:"Plugin List (new section, including introductions, usage, and extension development instructions for all existing plugins, will be released in the next one to two weeks)",paraId:3,tocIndex:1},{value:"Added ",paraId:4,tocIndex:3},{value:"SchemaInitializerManager",paraId:4,tocIndex:3},{value:" for registering ",paraId:4,tocIndex:3},{value:"SchemaInitializer",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"useSchemaInitializerRender()",paraId:4,tocIndex:3},{value:" to replace the original ",paraId:4,tocIndex:3},{value:"useSchemaInitializer()",paraId:4,tocIndex:3},{value:" ",paraId:4,tocIndex:3},{value:"render()",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"useSchemaInitializerItem()",paraId:4,tocIndex:3},{value:" for obtaining the context of the current initialization item",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"SchemaInitializerItemGroup",paraId:4,tocIndex:3},{value:" component as the default component for ",paraId:4,tocIndex:3},{value:"type: 'itemGroup'",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"SchemaInitializerSubMenu",paraId:4,tocIndex:3},{value:" component as the default component for ",paraId:4,tocIndex:3},{value:"type: 'subMenu'",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"SchemaInitializerDivider",paraId:4,tocIndex:3},{value:" component as the default component for ",paraId:4,tocIndex:3},{value:"type: 'divider'",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"SchemaInitializerChildren",paraId:4,tocIndex:3},{value:" component for custom rendering of multiple list items",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"SchemaInitializerChild",paraId:4,tocIndex:3},{value:" component for custom rendering of a single list item",paraId:4,tocIndex:3},{value:"Changed the responsibilities of ",paraId:4,tocIndex:3},{value:"SchemaInitializerContext",paraId:4,tocIndex:3},{value:" for storing the context of the current initializer",paraId:4,tocIndex:3},{value:"Changed the responsibilities of ",paraId:4,tocIndex:3},{value:"useSchemaInitializer()",paraId:4,tocIndex:3},{value:" for obtaining the context of the current initializer",paraId:4,tocIndex:3},{value:"Changed ",paraId:4,tocIndex:3},{value:"function SchemaInitializer",paraId:4,tocIndex:3},{value:" to ",paraId:4,tocIndex:3},{value:"class SchemaInitializer",paraId:4,tocIndex:3},{value:" for defining initializer",paraId:4,tocIndex:3},{value:"Changed parameters of ",paraId:4,tocIndex:3},{value:"SchemaInitializer",paraId:4,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"name",paraId:5,tocIndex:3},{value:" required parameter for the value of ",paraId:5,tocIndex:3},{value:"x-initializer",paraId:5,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"Component",paraId:5,tocIndex:3},{value:" parameter for custom rendering of the button. Default is ",paraId:5,tocIndex:3},{value:"SchemaInitializerButton",paraId:5,tocIndex:3},{value:".",paraId:5,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"componentProps",paraId:5,tocIndex:3},{value:", ",paraId:5,tocIndex:3},{value:"style",paraId:5,tocIndex:3},{value:" for configuring the properties and style of ",paraId:5,tocIndex:3},{value:"Component",paraId:5,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"ItemsComponent",paraId:5,tocIndex:3},{value:" parameter for custom rendering of the list. Default is ",paraId:5,tocIndex:3},{value:"SchemaInitializerItems",paraId:5,tocIndex:3},{value:".",paraId:5,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"itemsComponentProps",paraId:5,tocIndex:3},{value:", ",paraId:5,tocIndex:3},{value:"itemsComponentStyle",paraId:5,tocIndex:3},{value:" for configuring the properties and style of ",paraId:5,tocIndex:3},{value:"ItemsComponent",paraId:5,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"popover",paraId:5,tocIndex:3},{value:" parameter for configuring whether to display the ",paraId:5,tocIndex:3},{value:"popover",paraId:5,tocIndex:3},{value:" effect",paraId:5,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"useInsert",paraId:5,tocIndex:3},{value:" parameter for when the ",paraId:5,tocIndex:3},{value:"insert",paraId:5,tocIndex:3},{value:" function needs to use hooks",paraId:5,tocIndex:3},{value:"Changed ",paraId:5,tocIndex:3},{value:"dropdown",paraId:5,tocIndex:3},{value:" parameter to ",paraId:5,tocIndex:3},{value:"popoverProps",paraId:5,tocIndex:3},{value:", using ",paraId:5,tocIndex:3},{value:"Popover",paraId:5,tocIndex:3},{value:" instead of ",paraId:5,tocIndex:3},{value:"Dropdown",paraId:5,tocIndex:3},{value:"Changed parameters of ",paraId:4,tocIndex:3},{value:"items",paraId:4,tocIndex:3},{value:" for ",paraId:4,tocIndex:3},{value:"SchemaInitializer",paraId:4,tocIndex:3},{value:"Added ",paraId:6,tocIndex:3},{value:"useChildren",paraId:6,tocIndex:3},{value:" function for dynamically controlling child items",paraId:6,tocIndex:3},{value:"Added ",paraId:6,tocIndex:3},{value:"componentProps",paraId:6,tocIndex:3},{value:" function for the properties of the component itself",paraId:6,tocIndex:3},{value:"Added ",paraId:6,tocIndex:3},{value:"useComponentProps",paraId:6,tocIndex:3},{value:" function for dynamically processing the props of the component",paraId:6,tocIndex:3},{value:"Changed ",paraId:6,tocIndex:3},{value:"key",paraId:6,tocIndex:3},{value:" parameter to ",paraId:6,tocIndex:3},{value:"name",paraId:6,tocIndex:3},{value:" for the unique identification of list items",paraId:6,tocIndex:3},{value:"Changed ",paraId:6,tocIndex:3},{value:"visible",paraId:6,tocIndex:3},{value:" parameter to ",paraId:6,tocIndex:3},{value:"useVisible",paraId:6,tocIndex:3},{value:" function for dynamically controlling whether to display",paraId:6,tocIndex:3},{value:"Changed ",paraId:6,tocIndex:3},{value:"component",paraId:6,tocIndex:3},{value:" parameter to ",paraId:6,tocIndex:3},{value:"Component",paraId:6,tocIndex:3},{value:" for rendering list items",paraId:6,tocIndex:3},{value:"Changed ",paraId:4,tocIndex:3},{value:"SchemaInitializer.Button",paraId:4,tocIndex:3},{value:" to ",paraId:4,tocIndex:3},{value:"SchemaInitializerButton",paraId:4,tocIndex:3},{value:", the default value for the Component parameter of SchemaInitializer",paraId:4,tocIndex:3},{value:"Changed ",paraId:4,tocIndex:3},{value:"SchemaInitializer.Item",paraId:4,tocIndex:3},{value:" to ",paraId:4,tocIndex:3},{value:"SchemaInitializerItem",paraId:4,tocIndex:3},{value:", with unchanged parameters",paraId:4,tocIndex:3},{value:"Changed ",paraId:4,tocIndex:3},{value:"SchemaInitializer.ActionModal",paraId:4,tocIndex:3},{value:" to ",paraId:4,tocIndex:3},{value:"SchemaInitializerActionModal",paraId:4,tocIndex:3},{value:", with unchanged parameters",paraId:4,tocIndex:3},{value:"Changed ",paraId:4,tocIndex:3},{value:"SchemaInitializer.SwitchItem",paraId:4,tocIndex:3},{value:" to ",paraId:4,tocIndex:3},{value:"SchemaInitializer.Switch",paraId:4,tocIndex:3},{value:", with unchanged parameters",paraId:4,tocIndex:3},{value:"Deleted ",paraId:4,tocIndex:3},{value:"SchemaInitializerProvider",paraId:4,tocIndex:3},{value:", replaced by ",paraId:4,tocIndex:3},{value:"SchemaInitializerManager",paraId:4,tocIndex:3},{value:"Deleted ",paraId:4,tocIndex:3},{value:"SchemaInitializer.itemWrap",paraId:4,tocIndex:3},{value:", no longer need to wrap the ",paraId:4,tocIndex:3},{value:"item",paraId:4,tocIndex:3},{value:" component",paraId:4,tocIndex:3},{value:"Added ",paraId:7,tocIndex:4},{value:"SchemaSettingsManager",paraId:7,tocIndex:4},{value:" for registering ",paraId:7,tocIndex:4},{value:"SchemaSettings",paraId:7,tocIndex:4},{value:"Added ",paraId:7,tocIndex:4},{value:"useSchemaSettingsItem()",paraId:7,tocIndex:4},{value:"Added ",paraId:7,tocIndex:4},{value:"useSchemaSettingsRender()",paraId:7,tocIndex:4},{value:"Added ",paraId:7,tocIndex:4},{value:"x-settings",paraId:7,tocIndex:4},{value:" parameter for configuring schema settings",paraId:7,tocIndex:4},{value:"Added ",paraId:7,tocIndex:4},{value:"x-toolbar",paraId:7,tocIndex:4},{value:" parameter for configuring schema toolbar",paraId:7,tocIndex:4},{value:"Added ",paraId:7,tocIndex:4},{value:"SchemaToolbar",paraId:7,tocIndex:4},{value:" component for customizing schema toolbar",paraId:7,tocIndex:4},{value:"Added ",paraId:7,tocIndex:4},{value:"useSchemaToolbarRender()",paraId:7,tocIndex:4},{value:" to replace the original ",paraId:7,tocIndex:4},{value:"useDesigner()",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"function SchemaSettings",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"class SchemaSettings",paraId:7,tocIndex:4},{value:" for defining settings",paraId:7,tocIndex:4},{value:"Changed the original ",paraId:7,tocIndex:4},{value:"SchemaSettings",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsDropdown",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.Item",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsItem",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.ItemGroup",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsItemGroup",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.SubMenu",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsSubMenu",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.Divider",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsDivider",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.Remove",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsRemove",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.SelectItem",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsSelectItem",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.CascaderItem",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsCascaderItem",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.SwitchItem",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsSwitchItem",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.ModalItem",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsModalItem",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.ActionModalItem",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsActionModalItem",paraId:7,tocIndex:4},{value:"Deleted ",paraId:7,tocIndex:4},{value:"x-designer",paraId:7,tocIndex:4},{value:" parameter, deprecated, will be removed in the future, use ",paraId:7,tocIndex:4},{value:"x-toolbar",paraId:7,tocIndex:4},{value:" instead",paraId:7,tocIndex:4},{value:"Deleted ",paraId:7,tocIndex:4},{value:"useDesigner()",paraId:7,tocIndex:4},{value:", deprecated, will be removed in the future, use ",paraId:7,tocIndex:4},{value:"useSchemaToolbarRender()",paraId:7,tocIndex:4},{value:" instead",paraId:7,tocIndex:4},{value:"For more details, see ",paraId:8,tocIndex:4},{value:"Incompatible Changes in NocoBase 0.17",paraId:8,tocIndex:4}],gq={},bq={title:"v0.18\uFF1A2023-12-21",toc:"menu",filename:"docs/en-US/welcome/release/v0180-changelog.md",lastUpdated:1732240239e3,description:"To enhance the robustness of NocoBase, we have been supplementing E2E (end-to-end) testing throughout the fourth quarter. Concurrently, we have also been refining the entire testing system."},yq=[{id:"v0182023-12-21",depth:1,title:"v0.18\uFF1A2023-12-21"},{id:"new-features",depth:2,title:"New Features"},{id:"nocobasetest",depth:3,title:"@nocobase/test"},{id:"testing-framework",depth:3,title:"Testing framework"},{id:"writing-tests",depth:3,title:"Writing tests"},{id:"server-side-testing",depth:4,title:"Server-side testing"},{id:"client-side-testing",depth:4,title:"Client-side testing"},{id:"e2e-testing",depth:4,title:"E2E testing"},{id:"run-the-vitest-test",depth:3,title:"Run the Vitest test"},{id:"run-the-playwright-test",depth:3,title:"Run the Playwright test"},{id:"other-changes",depth:2,title:"Other changes"},{id:"optimization-of-auth-plugin",depth:3,title:"Optimization of auth plugin"},{id:"modular-decomposition-into-plugins",depth:3,title:"Modular decomposition into plugins"}],wq=[{value:"To enhance the robustness of NocoBase, we have been supplementing E2E (end-to-end) testing throughout the fourth quarter. Concurrently, we have also been refining the entire testing system.",paraId:0,tocIndex:1},{value:"NocoBase test kit, include:",paraId:1,tocIndex:2},{value:"@nocobase/test/server",paraId:2,tocIndex:2},{value:` server-side testing +`,paraId:10,tocIndex:5},{value:"refactor(cache): improve cache ",paraId:11,tocIndex:6},{value:"#3004",paraId:11,tocIndex:6},{value:"fix: local storage base url ",paraId:11,tocIndex:6},{value:"#3063",paraId:11,tocIndex:6},{value:"feat: show table definition ",paraId:11,tocIndex:6},{value:"#3061",paraId:11,tocIndex:6},{value:"feat: mariadb support ",paraId:11,tocIndex:6},{value:"#3052",paraId:11,tocIndex:6},{value:"fix(plugin-workflow): client minor fixes ",paraId:11,tocIndex:6},{value:"#3062",paraId:11,tocIndex:6},{value:"chore: view inference ",paraId:11,tocIndex:6},{value:"#3060",paraId:11,tocIndex:6},{value:"fix: sort by association collection ",paraId:11,tocIndex:6},{value:"#3058",paraId:11,tocIndex:6},{value:"feat: node >= 18 ",paraId:11,tocIndex:6},{value:"#3066",paraId:11,tocIndex:6}],mq={},hq={title:"v0.17\uFF1A2023-12-04",toc:"menu",filename:"docs/en-US/welcome/release/v0170-changelog.md",lastUpdated:173254844e4,description:"To reduce development learning costs and provide a better frontend development experience, we have phased a reconstruction of the frontend core over the past few months, including:"},fq=[{id:"v0172023-12-04",depth:1,title:"v0.17\uFF1A2023-12-04"},{id:"new-features",depth:2,title:"New Features"},{id:"incompatible-changes",depth:2,title:"Incompatible Changes"},{id:"changes-to-schemainitializer",depth:3,title:"Changes to SchemaInitializer"},{id:"changes-to-schemasettings",depth:3,title:"Changes to SchemaSettings"}],xq=[{value:"To reduce development learning costs and provide a better frontend development experience, we have phased a reconstruction of the frontend core over the past few months, including:",paraId:0,tocIndex:1},{value:"This time, v0.17 has refactored the UI Schema designer-related SchemaInitializer and SchemaSettings.",paraId:1,tocIndex:1},{value:"To address the difficulty for users to get started, we have also reorganized various sections of the documentation:",paraId:2,tocIndex:1},{value:"Plugin Development",paraId:3,tocIndex:1},{value:" (completely revised and published)",paraId:3,tocIndex:1},{value:"API Reference / Client",paraId:3,tocIndex:1},{value:" (new section, already published)",paraId:3,tocIndex:1},{value:"User Manual (completely revised, will be released in the next one to two weeks)",paraId:3,tocIndex:1},{value:"Plugin List (new section, including introductions, usage, and extension development instructions for all existing plugins, will be released in the next one to two weeks)",paraId:3,tocIndex:1},{value:"Added ",paraId:4,tocIndex:3},{value:"SchemaInitializerManager",paraId:4,tocIndex:3},{value:" for registering ",paraId:4,tocIndex:3},{value:"SchemaInitializer",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"useSchemaInitializerRender()",paraId:4,tocIndex:3},{value:" to replace the original ",paraId:4,tocIndex:3},{value:"useSchemaInitializer()",paraId:4,tocIndex:3},{value:" ",paraId:4,tocIndex:3},{value:"render()",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"useSchemaInitializerItem()",paraId:4,tocIndex:3},{value:" for obtaining the context of the current initialization item",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"SchemaInitializerItemGroup",paraId:4,tocIndex:3},{value:" component as the default component for ",paraId:4,tocIndex:3},{value:"type: 'itemGroup'",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"SchemaInitializerSubMenu",paraId:4,tocIndex:3},{value:" component as the default component for ",paraId:4,tocIndex:3},{value:"type: 'subMenu'",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"SchemaInitializerDivider",paraId:4,tocIndex:3},{value:" component as the default component for ",paraId:4,tocIndex:3},{value:"type: 'divider'",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"SchemaInitializerChildren",paraId:4,tocIndex:3},{value:" component for custom rendering of multiple list items",paraId:4,tocIndex:3},{value:"Added ",paraId:4,tocIndex:3},{value:"SchemaInitializerChild",paraId:4,tocIndex:3},{value:" component for custom rendering of a single list item",paraId:4,tocIndex:3},{value:"Changed the responsibilities of ",paraId:4,tocIndex:3},{value:"SchemaInitializerContext",paraId:4,tocIndex:3},{value:" for storing the context of the current initializer",paraId:4,tocIndex:3},{value:"Changed the responsibilities of ",paraId:4,tocIndex:3},{value:"useSchemaInitializer()",paraId:4,tocIndex:3},{value:" for obtaining the context of the current initializer",paraId:4,tocIndex:3},{value:"Changed ",paraId:4,tocIndex:3},{value:"function SchemaInitializer",paraId:4,tocIndex:3},{value:" to ",paraId:4,tocIndex:3},{value:"class SchemaInitializer",paraId:4,tocIndex:3},{value:" for defining initializer",paraId:4,tocIndex:3},{value:"Changed parameters of ",paraId:4,tocIndex:3},{value:"SchemaInitializer",paraId:4,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"name",paraId:5,tocIndex:3},{value:" required parameter for the value of ",paraId:5,tocIndex:3},{value:"x-initializer",paraId:5,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"Component",paraId:5,tocIndex:3},{value:" parameter for custom rendering of the button. Default is ",paraId:5,tocIndex:3},{value:"SchemaInitializerButton",paraId:5,tocIndex:3},{value:".",paraId:5,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"componentProps",paraId:5,tocIndex:3},{value:", ",paraId:5,tocIndex:3},{value:"style",paraId:5,tocIndex:3},{value:" for configuring the properties and style of ",paraId:5,tocIndex:3},{value:"Component",paraId:5,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"ItemsComponent",paraId:5,tocIndex:3},{value:" parameter for custom rendering of the list. Default is ",paraId:5,tocIndex:3},{value:"SchemaInitializerItems",paraId:5,tocIndex:3},{value:".",paraId:5,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"itemsComponentProps",paraId:5,tocIndex:3},{value:", ",paraId:5,tocIndex:3},{value:"itemsComponentStyle",paraId:5,tocIndex:3},{value:" for configuring the properties and style of ",paraId:5,tocIndex:3},{value:"ItemsComponent",paraId:5,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"popover",paraId:5,tocIndex:3},{value:" parameter for configuring whether to display the ",paraId:5,tocIndex:3},{value:"popover",paraId:5,tocIndex:3},{value:" effect",paraId:5,tocIndex:3},{value:"Added ",paraId:5,tocIndex:3},{value:"useInsert",paraId:5,tocIndex:3},{value:" parameter for when the ",paraId:5,tocIndex:3},{value:"insert",paraId:5,tocIndex:3},{value:" function needs to use hooks",paraId:5,tocIndex:3},{value:"Changed ",paraId:5,tocIndex:3},{value:"dropdown",paraId:5,tocIndex:3},{value:" parameter to ",paraId:5,tocIndex:3},{value:"popoverProps",paraId:5,tocIndex:3},{value:", using ",paraId:5,tocIndex:3},{value:"Popover",paraId:5,tocIndex:3},{value:" instead of ",paraId:5,tocIndex:3},{value:"Dropdown",paraId:5,tocIndex:3},{value:"Changed parameters of ",paraId:4,tocIndex:3},{value:"items",paraId:4,tocIndex:3},{value:" for ",paraId:4,tocIndex:3},{value:"SchemaInitializer",paraId:4,tocIndex:3},{value:"Added ",paraId:6,tocIndex:3},{value:"useChildren",paraId:6,tocIndex:3},{value:" function for dynamically controlling child items",paraId:6,tocIndex:3},{value:"Added ",paraId:6,tocIndex:3},{value:"componentProps",paraId:6,tocIndex:3},{value:" function for the properties of the component itself",paraId:6,tocIndex:3},{value:"Added ",paraId:6,tocIndex:3},{value:"useComponentProps",paraId:6,tocIndex:3},{value:" function for dynamically processing the props of the component",paraId:6,tocIndex:3},{value:"Changed ",paraId:6,tocIndex:3},{value:"key",paraId:6,tocIndex:3},{value:" parameter to ",paraId:6,tocIndex:3},{value:"name",paraId:6,tocIndex:3},{value:" for the unique identification of list items",paraId:6,tocIndex:3},{value:"Changed ",paraId:6,tocIndex:3},{value:"visible",paraId:6,tocIndex:3},{value:" parameter to ",paraId:6,tocIndex:3},{value:"useVisible",paraId:6,tocIndex:3},{value:" function for dynamically controlling whether to display",paraId:6,tocIndex:3},{value:"Changed ",paraId:6,tocIndex:3},{value:"component",paraId:6,tocIndex:3},{value:" parameter to ",paraId:6,tocIndex:3},{value:"Component",paraId:6,tocIndex:3},{value:" for rendering list items",paraId:6,tocIndex:3},{value:"Changed ",paraId:4,tocIndex:3},{value:"SchemaInitializer.Button",paraId:4,tocIndex:3},{value:" to ",paraId:4,tocIndex:3},{value:"SchemaInitializerButton",paraId:4,tocIndex:3},{value:", the default value for the Component parameter of SchemaInitializer",paraId:4,tocIndex:3},{value:"Changed ",paraId:4,tocIndex:3},{value:"SchemaInitializer.Item",paraId:4,tocIndex:3},{value:" to ",paraId:4,tocIndex:3},{value:"SchemaInitializerItem",paraId:4,tocIndex:3},{value:", with unchanged parameters",paraId:4,tocIndex:3},{value:"Changed ",paraId:4,tocIndex:3},{value:"SchemaInitializer.ActionModal",paraId:4,tocIndex:3},{value:" to ",paraId:4,tocIndex:3},{value:"SchemaInitializerActionModal",paraId:4,tocIndex:3},{value:", with unchanged parameters",paraId:4,tocIndex:3},{value:"Changed ",paraId:4,tocIndex:3},{value:"SchemaInitializer.SwitchItem",paraId:4,tocIndex:3},{value:" to ",paraId:4,tocIndex:3},{value:"SchemaInitializer.Switch",paraId:4,tocIndex:3},{value:", with unchanged parameters",paraId:4,tocIndex:3},{value:"Deleted ",paraId:4,tocIndex:3},{value:"SchemaInitializerProvider",paraId:4,tocIndex:3},{value:", replaced by ",paraId:4,tocIndex:3},{value:"SchemaInitializerManager",paraId:4,tocIndex:3},{value:"Deleted ",paraId:4,tocIndex:3},{value:"SchemaInitializer.itemWrap",paraId:4,tocIndex:3},{value:", no longer need to wrap the ",paraId:4,tocIndex:3},{value:"item",paraId:4,tocIndex:3},{value:" component",paraId:4,tocIndex:3},{value:"Added ",paraId:7,tocIndex:4},{value:"SchemaSettingsManager",paraId:7,tocIndex:4},{value:" for registering ",paraId:7,tocIndex:4},{value:"SchemaSettings",paraId:7,tocIndex:4},{value:"Added ",paraId:7,tocIndex:4},{value:"useSchemaSettingsItem()",paraId:7,tocIndex:4},{value:"Added ",paraId:7,tocIndex:4},{value:"useSchemaSettingsRender()",paraId:7,tocIndex:4},{value:"Added ",paraId:7,tocIndex:4},{value:"x-settings",paraId:7,tocIndex:4},{value:" parameter for configuring schema settings",paraId:7,tocIndex:4},{value:"Added ",paraId:7,tocIndex:4},{value:"x-toolbar",paraId:7,tocIndex:4},{value:" parameter for configuring schema toolbar",paraId:7,tocIndex:4},{value:"Added ",paraId:7,tocIndex:4},{value:"SchemaToolbar",paraId:7,tocIndex:4},{value:" component for customizing schema toolbar",paraId:7,tocIndex:4},{value:"Added ",paraId:7,tocIndex:4},{value:"useSchemaToolbarRender()",paraId:7,tocIndex:4},{value:" to replace the original ",paraId:7,tocIndex:4},{value:"useDesigner()",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"function SchemaSettings",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"class SchemaSettings",paraId:7,tocIndex:4},{value:" for defining settings",paraId:7,tocIndex:4},{value:"Changed the original ",paraId:7,tocIndex:4},{value:"SchemaSettings",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsDropdown",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.Item",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsItem",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.ItemGroup",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsItemGroup",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.SubMenu",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsSubMenu",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.Divider",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsDivider",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.Remove",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsRemove",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.SelectItem",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsSelectItem",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.CascaderItem",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsCascaderItem",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.SwitchItem",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsSwitchItem",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.ModalItem",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsModalItem",paraId:7,tocIndex:4},{value:"Changed ",paraId:7,tocIndex:4},{value:"SchemaSettings.ActionModalItem",paraId:7,tocIndex:4},{value:" to ",paraId:7,tocIndex:4},{value:"SchemaSettingsActionModalItem",paraId:7,tocIndex:4},{value:"Deleted ",paraId:7,tocIndex:4},{value:"x-designer",paraId:7,tocIndex:4},{value:" parameter, deprecated, will be removed in the future, use ",paraId:7,tocIndex:4},{value:"x-toolbar",paraId:7,tocIndex:4},{value:" instead",paraId:7,tocIndex:4},{value:"Deleted ",paraId:7,tocIndex:4},{value:"useDesigner()",paraId:7,tocIndex:4},{value:", deprecated, will be removed in the future, use ",paraId:7,tocIndex:4},{value:"useSchemaToolbarRender()",paraId:7,tocIndex:4},{value:" instead",paraId:7,tocIndex:4},{value:"For more details, see ",paraId:8,tocIndex:4},{value:"Incompatible Changes in NocoBase 0.17",paraId:8,tocIndex:4}],gq={},bq={title:"v0.18\uFF1A2023-12-21",toc:"menu",filename:"docs/en-US/welcome/release/v0180-changelog.md",lastUpdated:173254844e4,description:"To enhance the robustness of NocoBase, we have been supplementing E2E (end-to-end) testing throughout the fourth quarter. Concurrently, we have also been refining the entire testing system."},yq=[{id:"v0182023-12-21",depth:1,title:"v0.18\uFF1A2023-12-21"},{id:"new-features",depth:2,title:"New Features"},{id:"nocobasetest",depth:3,title:"@nocobase/test"},{id:"testing-framework",depth:3,title:"Testing framework"},{id:"writing-tests",depth:3,title:"Writing tests"},{id:"server-side-testing",depth:4,title:"Server-side testing"},{id:"client-side-testing",depth:4,title:"Client-side testing"},{id:"e2e-testing",depth:4,title:"E2E testing"},{id:"run-the-vitest-test",depth:3,title:"Run the Vitest test"},{id:"run-the-playwright-test",depth:3,title:"Run the Playwright test"},{id:"other-changes",depth:2,title:"Other changes"},{id:"optimization-of-auth-plugin",depth:3,title:"Optimization of auth plugin"},{id:"modular-decomposition-into-plugins",depth:3,title:"Modular decomposition into plugins"}],wq=[{value:"To enhance the robustness of NocoBase, we have been supplementing E2E (end-to-end) testing throughout the fourth quarter. Concurrently, we have also been refining the entire testing system.",paraId:0,tocIndex:1},{value:"NocoBase test kit, include:",paraId:1,tocIndex:2},{value:"@nocobase/test/server",paraId:2,tocIndex:2},{value:` server-side testing `,paraId:2,tocIndex:2},{value:"Integrated ",paraId:3,tocIndex:2},{value:"supertest",paraId:3,tocIndex:2},{value:" for interface testing.",paraId:3,tocIndex:2},{value:"mockDatabase",paraId:3,tocIndex:2},{value:" and ",paraId:3,tocIndex:2},{value:"mockServer",paraId:3,tocIndex:2},{value:" are built in.",paraId:3,tocIndex:2},{value:"@nocobase/test/client",paraId:2,tocIndex:2},{value:` Client-side testing `,paraId:2,tocIndex:2},{value:"@testing-library/react",paraId:4,tocIndex:2},{value:" and ",paraId:4,tocIndex:2},{value:"@testing-library/user-event",paraId:4,tocIndex:2},{value:" are integrated.",paraId:4,tocIndex:2},{value:"@nocobase/test/e2e",paraId:2,tocIndex:2},{value:` E2E testing `,paraId:2,tocIndex:2},{value:"Integration of ",paraId:5,tocIndex:2},{value:"@playwright/test",paraId:5,tocIndex:2},{value:".",paraId:5,tocIndex:2},{value:"Built-in common mock methods",paraId:5,tocIndex:2},{value:"Server-side testing, using the Vitest framework",paraId:6,tocIndex:3},{value:"Client-side testing, using the Vitest framework",paraId:6,tocIndex:3},{value:"E2E testing, using the Playwright framework",paraId:6,tocIndex:3},{value:`import { mockDatabase } from '@nocobase/test/server'; @@ -13284,7 +13336,7 @@ yarn e2e test --url=http://localhost:20000 # Start an app. It reinstalls every time. yarn e2e start-app -`,paraId:13,tocIndex:9},{value:"Auth extension development guide ",paraId:14,tocIndex:11},{value:"https://docs.nocobase.com/plugins/auth/dev/guide",paraId:14,tocIndex:11},{value:"Breaking changes ",paraId:14,tocIndex:11},{value:"https://docs.nocobase.com/breaking-changes/v0-18-0-alpha-1",paraId:14,tocIndex:11},{value:"In order to refine the kernel and make it more streamlined, certain functionalities have undergone a modularized separation. Recently, the plugins that have undergone this modularization include:",paraId:15,tocIndex:12},{value:"Plugin name",paraId:16,tocIndex:12},{value:"Package name",paraId:16,tocIndex:12},{value:"Action - Bulk edit",paraId:16,tocIndex:12},{value:"@nocobase/plugin-action-bulk-edit",paraId:16,tocIndex:12},{value:"Action - Bulk update",paraId:16,tocIndex:12},{value:"@nocobase/plugin-action-bulk-update",paraId:16,tocIndex:12},{value:"Action - Duplicate",paraId:16,tocIndex:12},{value:"@nocobase/plugin-action-duplicate",paraId:16,tocIndex:12},{value:"Kanban",paraId:16,tocIndex:12},{value:"@nocobase/plugin-kanban",paraId:16,tocIndex:12},{value:"Gantt",paraId:16,tocIndex:12},{value:"@nocobase/plugin-gantt",paraId:16,tocIndex:12},{value:"Workflow - Aggregate",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-aggregate",paraId:16,tocIndex:12},{value:"Workflow - Approval",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-approval",paraId:16,tocIndex:12},{value:"Workflow - Delay",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-delay",paraId:16,tocIndex:12},{value:"Workflow - Dynamic calculation",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-dynamic-calculation",paraId:16,tocIndex:12},{value:"Workflow - Form trigger",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-form-trigger",paraId:16,tocIndex:12},{value:"Workflow - JSON query",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-json-query",paraId:16,tocIndex:12},{value:"Workflow - Loop",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-loop",paraId:16,tocIndex:12},{value:"Workflow - Manual",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-manual",paraId:16,tocIndex:12},{value:"Workflow - Parallel",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-parallel",paraId:16,tocIndex:12},{value:"Workflow - Request",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-request",paraId:16,tocIndex:12},{value:"Workflow - SQL",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-sql",paraId:16,tocIndex:12},{value:"See ",paraId:17,tocIndex:12},{value:"complete list of plugins",paraId:17,tocIndex:12},{value:" for details. The document is currently under construction, with some content possibly missing or awaiting translation. You can follow ",paraId:17,tocIndex:12},{value:"nocobase/docs",paraId:17,tocIndex:12},{value:" for updates.",paraId:17,tocIndex:12}],kq={},Sq={title:"v0.19\uFF1A2024-01-08",toc:"menu",filename:"docs/en-US/welcome/release/v0190-changelog.md",lastUpdated:1732240239e3,description:"For NocoBase 0.19 and above, plugin customized commands must be placed in the plugin's src/server/commands/*.ts directory with the following contents:"},Uq=[{id:"v0192024-01-08",depth:1,title:"v0.19\uFF1A2024-01-08"},{id:"new-features",depth:2,title:"New features"},{id:"telemetry",depth:3,title:"Telemetry"},{id:"application-backup-and-restore",depth:3,title:"Application backup and restore"},{id:"kernel-optimizations",depth:2,title:"Kernel optimizations"},{id:"command-line-optimizations",depth:3,title:"Command line optimizations"},{id:"installation-process-optimization",depth:3,title:"Installation process optimization"},{id:"startup-process-optimization",depth:3,title:"Startup process optimization"},{id:"upgrade-process-optimization",depth:3,title:"Upgrade process optimization"},{id:"add-the-create-migration-command",depth:3,title:"Add the create-migration command"},{id:"the-plugins-convention-based-directories",depth:3,title:"The plugin's convention-based directories"},{id:"breaking-changes",depth:2,title:"Breaking changes"},{id:"collections-commands-migrations-configuration-changes-to-convention-based-directories",depth:3,title:"Collections, commands, migrations configuration changes to convention-based directories"}],Pq=[{value:"Development documentation: ",paraId:0,tocIndex:2},{value:"https://docs.nocobase.com/development/server/telemetry",paraId:0,tocIndex:2},{value:"Kernel API: ",paraId:0,tocIndex:2},{value:"https://docs.nocobase.com/api/telemetry/telemetry",paraId:0,tocIndex:2},{value:"Prometheus plugin: ",paraId:0,tocIndex:2},{value:"https://docs.nocobase.com/plugins/telemetry-prometheus",paraId:0,tocIndex:2},{value:"Plugin documentation: ",paraId:1,tocIndex:3},{value:"https://docs.nocobase.com/plugins/backup-restore",paraId:1,tocIndex:3},{value:"For NocoBase 0.19 and above, plugin customized commands must be placed in the plugin's ",paraId:2,tocIndex:5},{value:"src/server/commands/*.ts",paraId:2,tocIndex:5},{value:" directory with the following contents:",paraId:2,tocIndex:5},{value:`export default function(app) { +`,paraId:13,tocIndex:9},{value:"Auth extension development guide ",paraId:14,tocIndex:11},{value:"https://docs.nocobase.com/plugins/auth/dev/guide",paraId:14,tocIndex:11},{value:"Breaking changes ",paraId:14,tocIndex:11},{value:"https://docs.nocobase.com/breaking-changes/v0-18-0-alpha-1",paraId:14,tocIndex:11},{value:"In order to refine the kernel and make it more streamlined, certain functionalities have undergone a modularized separation. Recently, the plugins that have undergone this modularization include:",paraId:15,tocIndex:12},{value:"Plugin name",paraId:16,tocIndex:12},{value:"Package name",paraId:16,tocIndex:12},{value:"Action - Bulk edit",paraId:16,tocIndex:12},{value:"@nocobase/plugin-action-bulk-edit",paraId:16,tocIndex:12},{value:"Action - Bulk update",paraId:16,tocIndex:12},{value:"@nocobase/plugin-action-bulk-update",paraId:16,tocIndex:12},{value:"Action - Duplicate",paraId:16,tocIndex:12},{value:"@nocobase/plugin-action-duplicate",paraId:16,tocIndex:12},{value:"Kanban",paraId:16,tocIndex:12},{value:"@nocobase/plugin-kanban",paraId:16,tocIndex:12},{value:"Gantt",paraId:16,tocIndex:12},{value:"@nocobase/plugin-gantt",paraId:16,tocIndex:12},{value:"Workflow - Aggregate",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-aggregate",paraId:16,tocIndex:12},{value:"Workflow - Approval",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-approval",paraId:16,tocIndex:12},{value:"Workflow - Delay",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-delay",paraId:16,tocIndex:12},{value:"Workflow - Dynamic calculation",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-dynamic-calculation",paraId:16,tocIndex:12},{value:"Workflow - Form trigger",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-form-trigger",paraId:16,tocIndex:12},{value:"Workflow - JSON query",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-json-query",paraId:16,tocIndex:12},{value:"Workflow - Loop",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-loop",paraId:16,tocIndex:12},{value:"Workflow - Manual",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-manual",paraId:16,tocIndex:12},{value:"Workflow - Parallel",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-parallel",paraId:16,tocIndex:12},{value:"Workflow - Request",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-request",paraId:16,tocIndex:12},{value:"Workflow - SQL",paraId:16,tocIndex:12},{value:"@nocobase/plugin-workflow-sql",paraId:16,tocIndex:12},{value:"See ",paraId:17,tocIndex:12},{value:"complete list of plugins",paraId:17,tocIndex:12},{value:" for details. The document is currently under construction, with some content possibly missing or awaiting translation. You can follow ",paraId:17,tocIndex:12},{value:"nocobase/docs",paraId:17,tocIndex:12},{value:" for updates.",paraId:17,tocIndex:12}],kq={},Sq={title:"v0.19\uFF1A2024-01-08",toc:"menu",filename:"docs/en-US/welcome/release/v0190-changelog.md",lastUpdated:173254844e4,description:"For NocoBase 0.19 and above, plugin customized commands must be placed in the plugin's src/server/commands/*.ts directory with the following contents:"},Uq=[{id:"v0192024-01-08",depth:1,title:"v0.19\uFF1A2024-01-08"},{id:"new-features",depth:2,title:"New features"},{id:"telemetry",depth:3,title:"Telemetry"},{id:"application-backup-and-restore",depth:3,title:"Application backup and restore"},{id:"kernel-optimizations",depth:2,title:"Kernel optimizations"},{id:"command-line-optimizations",depth:3,title:"Command line optimizations"},{id:"installation-process-optimization",depth:3,title:"Installation process optimization"},{id:"startup-process-optimization",depth:3,title:"Startup process optimization"},{id:"upgrade-process-optimization",depth:3,title:"Upgrade process optimization"},{id:"add-the-create-migration-command",depth:3,title:"Add the create-migration command"},{id:"the-plugins-convention-based-directories",depth:3,title:"The plugin's convention-based directories"},{id:"breaking-changes",depth:2,title:"Breaking changes"},{id:"collections-commands-migrations-configuration-changes-to-convention-based-directories",depth:3,title:"Collections, commands, migrations configuration changes to convention-based directories"}],Pq=[{value:"Development documentation: ",paraId:0,tocIndex:2},{value:"https://docs.nocobase.com/development/server/telemetry",paraId:0,tocIndex:2},{value:"Kernel API: ",paraId:0,tocIndex:2},{value:"https://docs.nocobase.com/api/telemetry/telemetry",paraId:0,tocIndex:2},{value:"Prometheus plugin: ",paraId:0,tocIndex:2},{value:"https://docs.nocobase.com/plugins/telemetry-prometheus",paraId:0,tocIndex:2},{value:"Plugin documentation: ",paraId:1,tocIndex:3},{value:"https://docs.nocobase.com/plugins/backup-restore",paraId:1,tocIndex:3},{value:"For NocoBase 0.19 and above, plugin customized commands must be placed in the plugin's ",paraId:2,tocIndex:5},{value:"src/server/commands/*.ts",paraId:2,tocIndex:5},{value:" directory with the following contents:",paraId:2,tocIndex:5},{value:`export default function(app) { app.command('custom1').action(); } `,paraId:3,tocIndex:5},{value:"The execution flow of the command line:",paraId:4,tocIndex:5},{value:"Special configuration of Command",paraId:5,tocIndex:5},{value:"ipc()",paraId:6,tocIndex:5},{value:" When the app is running, the command line sends commands via ipc to operate the running app instance, when ipc() is not configured, a new app instance will be created and then the operation will be executed (it will not interfere with the running app instance)",paraId:6,tocIndex:5},{value:"auth()",paraId:6,tocIndex:5},{value:" performs database verification, if the database configuration is incorrect, this command will not be executed.",paraId:6,tocIndex:5},{value:"preload()",paraId:6,tocIndex:5},{value:" whether to preload the application configuration, that is, execute app.load()",paraId:6,tocIndex:5},{value:"This can be configured according to the actual usage of the command, examples are as follows:",paraId:7,tocIndex:5},{value:`app.command('a').ipc().action() @@ -13422,7 +13474,7 @@ export default defineCollection({ } }); } -`,paraId:40,tocIndex:12}],Tq={},Cq={title:"v1.0\uFF1A2024-04-28",toc:"menu",filename:"docs/en-US/welcome/release/v1001-changelog.md",lastUpdated:1732240239e3,description:"After 3 years of development, NocoBase has reached its first major version upgrade, transitioning from version 0.x to 1.0. This marks a significant milestone."},Aq=[{id:"v102024-04-28",depth:1,title:"v1.0\uFF1A2024-04-28"},{id:"v10-milestone",depth:2,title:"v1.0 Milestone"},{id:"new-features",depth:2,title:"New Features"},{id:"new-plugins",depth:2,title:"New Plugins"},{id:"full-changelog",depth:2,title:"Full Changelog"},{id:"plugin-changes",depth:2,title:"Plugin Changes"},{id:"code-comments",depth:2,title:"Code Comments"},{id:"license-agreement",depth:2,title:"License Agreement"},{id:"upgrade-guide",depth:2,title:"Upgrade Guide"},{id:"if-you-are-not-using-sso-plugins",depth:3,title:"If you are not using SSO plugins"},{id:"if-you-are-using-sso-plugins",depth:3,title:"If you are using SSO plugins"},{id:"1-upgrade-the-application",depth:4,title:"1. Upgrade the Application"},{id:"2-remove-plugins-or-obtain-plugin-version-10",depth:4,title:"2. Remove Plugins or Obtain Plugin Version 1.0?"},{id:"3-cas-oidc-saml-plugin-upgrade-process",depth:4,title:"3. CAS, OIDC, SAML Plugin Upgrade Process"}],qq=[{value:"After 3 years of development, NocoBase has reached its first major version upgrade, transitioning from version 0.x to 1.0. This marks a significant milestone.",paraId:0,tocIndex:1},{value:"During the 0.x phase: The core API and features underwent rapid changes, with each new version potentially introducing incompatible changes.",paraId:1,tocIndex:1},{value:"During the 1.x phase: The core API has stabilized, and NocoBase will focus on adding new plugins, optimizing security, and enhancing performance while maintaining stability.",paraId:1,tocIndex:1},{value:"Theme editor can configure page and modal padding, block spacing, and block corner radius.",paraId:2,tocIndex:2},{value:"When adding blocks, collections support filtering.",paraId:2,tocIndex:2},{value:"Relationship records supports sorting.",paraId:2,tocIndex:2},{value:"Improved interactivity of data visualization.",paraId:2,tocIndex:2},{value:"Support for adding chart blocks on mobile devices.",paraId:2,tocIndex:2},{value:"Chart filter blocks support setting field data scope.",paraId:2,tocIndex:2},{value:"Add more variables, ",paraId:2,tocIndex:2},{value:"see details",paraId:2,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"Blocks from any collections can be added in popups.",paraId:2,tocIndex:2},{value:'Workflows: "Post-action event" can be triggered by buttons inside association blocks.',paraId:2,tocIndex:2},{value:"Automatic refresh of data in the parent container when data changes within a popup.",paraId:2,tocIndex:2},{value:"Significant performance improvements in table blocks.",paraId:2,tocIndex:2},{value:"Substantial increase in test coverage.",paraId:2,tocIndex:2},{value:"Field: Markdown (Vditor)",paraId:3,tocIndex:3},{value:"Used to store Markdown and render it using Vditor editor, supports common Markdown syntax and supports uploading images, recordings, etc.It also allows for instant rendering, where what you see is what you get.",paraId:4,tocIndex:3},{value:"Comments",paraId:5,tocIndex:3},{value:"Provides comment collection template and block to add commenting functionality for any collection.",paraId:6,tocIndex:3},{value:"View the full changelog",paraId:7},{value:"feat(plugin-workflow): refresh the list after sync ",paraId:8,tocIndex:4},{value:"#4177",paraId:8,tocIndex:4},{value:"feat(plugin-workflow): show workflow key as tooltip on title ",paraId:8,tocIndex:4},{value:"#4178",paraId:8,tocIndex:4},{value:"test(plugin-workflow): add test cases ",paraId:8,tocIndex:4},{value:"#4199",paraId:8,tocIndex:4},{value:"chore: api cache control header ",paraId:8,tocIndex:4},{value:"#4203",paraId:8,tocIndex:4},{value:"feat: load vditor dep from local ",paraId:8,tocIndex:4},{value:"#4190",paraId:8,tocIndex:4},{value:"test: input number separator test ",paraId:8,tocIndex:4},{value:"#4204",paraId:8,tocIndex:4},{value:"fix: number field shuold support separator setting ",paraId:8,tocIndex:4},{value:"#4197",paraId:8,tocIndex:4},{value:"fix(plugin-workflow): refine experience ",paraId:8,tocIndex:4},{value:"#4195",paraId:8,tocIndex:4},{value:"chore: optimize warning wordings of import & export ",paraId:8,tocIndex:4},{value:"#4196",paraId:8,tocIndex:4},{value:"refactor: external data source collection manager ",paraId:8,tocIndex:4},{value:"#4193",paraId:8,tocIndex:4},{value:"fix: env bug ",paraId:8,tocIndex:4},{value:"#4191",paraId:8,tocIndex:4},{value:"fix: empty operator with association field ",paraId:8,tocIndex:4},{value:"#4189",paraId:8,tocIndex:4},{value:"chore: add e2e ",paraId:8,tocIndex:4},{value:"#4184",paraId:8,tocIndex:4},{value:"fix: vditor version ",paraId:8,tocIndex:4},{value:"#4183",paraId:8,tocIndex:4},{value:"refactor: form data template locale improve ",paraId:8,tocIndex:4},{value:"#4188",paraId:8,tocIndex:4},{value:"test: add automated testing ",paraId:8,tocIndex:4},{value:"#4098",paraId:8,tocIndex:4},{value:"chore: data source logger instance ",paraId:8,tocIndex:4},{value:"#4181",paraId:8,tocIndex:4},{value:"chore: get database instance in relation repository ",paraId:8,tocIndex:4},{value:"#4179",paraId:8,tocIndex:4},{value:"chore: add e2e for variables ",paraId:8,tocIndex:4},{value:"#4152",paraId:8,tocIndex:4},{value:"chore: define collection debug message ",paraId:8,tocIndex:4},{value:"#4176",paraId:8,tocIndex:4},{value:"chore: unsupportedFields in view collection ",paraId:8,tocIndex:4},{value:"#4155",paraId:8,tocIndex:4},{value:"feat: add plugin-field-markdown-vditor ",paraId:8,tocIndex:4},{value:"#4065",paraId:8,tocIndex:4},{value:"fix: bulk edit form acl action error ",paraId:8,tocIndex:4},{value:"#4166",paraId:8,tocIndex:4},{value:"fix: auto create uuid foreign key in relation field ",paraId:8,tocIndex:4},{value:"#4160",paraId:8,tocIndex:4},{value:"fix(plugin-fm): fix confusing size limit hint ",paraId:8,tocIndex:4},{value:"#4153",paraId:8,tocIndex:4},{value:"fix(users): improve users:updateProfile ",paraId:8,tocIndex:4},{value:"#4162",paraId:8,tocIndex:4},{value:"fix(client): get api url ",paraId:8,tocIndex:4},{value:"#4161",paraId:8,tocIndex:4},{value:"feat: remove plugin-ui-routes-storage ",paraId:8,tocIndex:4},{value:"#4140",paraId:8,tocIndex:4},{value:"fix: lock cytoscape version ",paraId:8,tocIndex:4},{value:"#4158",paraId:8,tocIndex:4},{value:"refactor: collection template support presetFieldsDisabled ",paraId:8,tocIndex:4},{value:"#4159",paraId:8,tocIndex:4},{value:"fix: grid schema ",paraId:8,tocIndex:4},{value:"#4157",paraId:8,tocIndex:4},{value:"client unit test ",paraId:8,tocIndex:4},{value:"#4150",paraId:8,tocIndex:4},{value:"fix: update belongs to many association that target key is not primary key ",paraId:8,tocIndex:4},{value:"#4146",paraId:8,tocIndex:4},{value:"refactor: form data template locale improve ",paraId:8,tocIndex:4},{value:"#4148",paraId:8,tocIndex:4},{value:"fix(database): column name in array field ",paraId:8,tocIndex:4},{value:"#4110",paraId:8,tocIndex:4},{value:"test: refresh on action e2e test ",paraId:8,tocIndex:4},{value:"#4147",paraId:8,tocIndex:4},{value:"fix(custom-request): support configuring content type ",paraId:8,tocIndex:4},{value:"#4144",paraId:8,tocIndex:4},{value:"chore: deprecate the current record variable from the form ",paraId:8,tocIndex:4},{value:"#4063",paraId:8,tocIndex:4},{value:"feat(Theme): add some tokens ",paraId:8,tocIndex:4},{value:"#4137",paraId:8,tocIndex:4},{value:"fix(client): fix some warnings ",paraId:8,tocIndex:4},{value:"#4143",paraId:8,tocIndex:4},{value:"style: tableActionColumn style improve ",paraId:8,tocIndex:4},{value:"#4138",paraId:8,tocIndex:4},{value:"fix: actionBar style improve ",paraId:8,tocIndex:4},{value:"#4123",paraId:8,tocIndex:4},{value:"chore: warning message if on delete conflict ",paraId:8,tocIndex:4},{value:"#4141",paraId:8,tocIndex:4},{value:"fix(plugin-workflow-manual): allow pass node when no assignee ",paraId:8,tocIndex:4},{value:"#4139",paraId:8,tocIndex:4},{value:"chore: datasource manager api ",paraId:8,tocIndex:4},{value:"#4124",paraId:8,tocIndex:4},{value:"fix(plugin-workflow-manual): fix assignees parsing bug ",paraId:8,tocIndex:4},{value:"#4125",paraId:8,tocIndex:4},{value:"fix: load association field in collection ",paraId:8,tocIndex:4},{value:"#4122",paraId:8,tocIndex:4},{value:"perf: remove all Skeleton animation ",paraId:8,tocIndex:4},{value:"#4113",paraId:8,tocIndex:4},{value:"test: add e2e ",paraId:8,tocIndex:4},{value:"#4121",paraId:8,tocIndex:4},{value:"chore(data-vi): adjust api ",paraId:8,tocIndex:4},{value:"#4116",paraId:8,tocIndex:4},{value:"fix: scheduleEventTrigger ",paraId:8,tocIndex:4},{value:"#4114",paraId:8,tocIndex:4},{value:"feat(plugin-workflow): add checker for intervally dispatching ",paraId:8,tocIndex:4},{value:"#4119",paraId:8,tocIndex:4},{value:"feat: add filterOtherRecordsCollection for DataBlockInitializer ",paraId:8,tocIndex:4},{value:"#4117",paraId:8,tocIndex:4},{value:"refactor: optimize CollectionField ",paraId:8,tocIndex:4},{value:"#4111",paraId:8,tocIndex:4},{value:"fix: improve sort field migration ",paraId:8,tocIndex:4},{value:"#4112",paraId:8,tocIndex:4},{value:"fix: field component ",paraId:8,tocIndex:4},{value:"#4102",paraId:8,tocIndex:4},{value:"fix: association select support add mode ",paraId:8,tocIndex:4},{value:"#4108",paraId:8,tocIndex:4},{value:"fix: createdBy & updatedBy target option ",paraId:8,tocIndex:4},{value:"#4109",paraId:8,tocIndex:4},{value:"fix(linkage-rule): linkage rule support empty condiction ",paraId:8,tocIndex:4},{value:"#4103",paraId:8,tocIndex:4},{value:"fix: add SanitizedCollectionProvider ",paraId:8,tocIndex:4},{value:"#4100",paraId:8,tocIndex:4},{value:"fix: tree collection target error ",paraId:8,tocIndex:4},{value:"#4105",paraId:8,tocIndex:4},{value:"fix: add ClearCollectionFieldContext ",paraId:8,tocIndex:4},{value:"#4101",paraId:8,tocIndex:4},{value:"feat: improve form block ",paraId:8,tocIndex:4},{value:"#4099",paraId:8,tocIndex:4},{value:"chore: migrate sortable options to sort field ",paraId:8,tocIndex:4},{value:"#4011",paraId:8,tocIndex:4},{value:"feat: support sort option in appends ",paraId:8,tocIndex:4},{value:"#4056",paraId:8,tocIndex:4},{value:"feat(data-vi): allows pie chart to accept negative numbers, fix T-4075 ",paraId:8,tocIndex:4},{value:"#4094",paraId:8,tocIndex:4},{value:"fix(data-vi): number becomes string after precision transformation ",paraId:8,tocIndex:4},{value:"#4092",paraId:8,tocIndex:4},{value:"fix: encode url params ",paraId:8,tocIndex:4},{value:"#4055",paraId:8,tocIndex:4},{value:"test(plugin-workflow): add test case for duplicated triggering schedule workflow ",paraId:8,tocIndex:4},{value:"#3817",paraId:8,tocIndex:4},{value:"perf(LinkageRules): solve lagging problems ",paraId:8,tocIndex:4},{value:"#4090",paraId:8,tocIndex:4},{value:"fix(subTable): should not display Allow add new data option ",paraId:8,tocIndex:4},{value:"#4086",paraId:8,tocIndex:4},{value:"fix: missing fields ",paraId:8,tocIndex:4},{value:"#4083",paraId:8,tocIndex:4},{value:"fix: table select pagination error ",paraId:8,tocIndex:4},{value:"#4078",paraId:8,tocIndex:4},{value:"fix: reset page when setting block data scope ",paraId:8,tocIndex:4},{value:"#4081",paraId:8,tocIndex:4},{value:"fix: custom request role list ",paraId:8,tocIndex:4},{value:"#4074",paraId:8,tocIndex:4},{value:"fix: parse iso week ",paraId:8,tocIndex:4},{value:"#4068",paraId:8,tocIndex:4},{value:"fix(sourceId): avoid error ",paraId:8,tocIndex:4},{value:"#4077",paraId:8,tocIndex:4},{value:"fix(sql-collection): can't select interface when setting fields ",paraId:8,tocIndex:4},{value:"#4079",paraId:8,tocIndex:4},{value:"fix: load with source field ",paraId:8,tocIndex:4},{value:"#4075",paraId:8,tocIndex:4},{value:"fix: deletion of operation linkage rules does not take effect in real time ",paraId:8,tocIndex:4},{value:"#4058",paraId:8,tocIndex:4},{value:"fix(core): fix round bug in formula evaluator ",paraId:8,tocIndex:4},{value:"#4070",paraId:8,tocIndex:4},{value:"test: add e2e for data loading mode ",paraId:8,tocIndex:4},{value:"#4069",paraId:8,tocIndex:4},{value:"fix(filterForm): avoid duplicate names ",paraId:8,tocIndex:4},{value:"#4071",paraId:8,tocIndex:4},{value:"chore: optimize block title ",paraId:8,tocIndex:4},{value:"#4040",paraId:8,tocIndex:4},{value:"fix: sync default value in view ",paraId:8,tocIndex:4},{value:"#4067",paraId:8,tocIndex:4},{value:"fix(defaultValue): fix the issue of default values disappearing after refreshing the page ",paraId:8,tocIndex:4},{value:"#4066",paraId:8,tocIndex:4},{value:"refactor: gantt block ",paraId:8,tocIndex:4},{value:"#4059",paraId:8,tocIndex:4},{value:"fix: sub-table big field should support variable default value ",paraId:8,tocIndex:4},{value:"#4062",paraId:8,tocIndex:4},{value:"chore(Theme): set the default font size of the Compact theme to 16 ",paraId:8,tocIndex:4},{value:"#4064",paraId:8,tocIndex:4},{value:"test: add e2e for actions ",paraId:8,tocIndex:4},{value:"#4053",paraId:8,tocIndex:4},{value:"fix(variable): missing variables and invalid translations ",paraId:8,tocIndex:4},{value:"#4054",paraId:8,tocIndex:4},{value:"test: add backend unit tests ",paraId:8,tocIndex:4},{value:"#4000",paraId:8,tocIndex:4},{value:"fix: improve card item ",paraId:8,tocIndex:4},{value:"#4036",paraId:8,tocIndex:4},{value:"chore(acl): disable register association fields actions ",paraId:8,tocIndex:4},{value:"#4014",paraId:8,tocIndex:4},{value:"fix(variable): fix parent record variable reporting errors in data scope ",paraId:8,tocIndex:4},{value:"#4039",paraId:8,tocIndex:4},{value:"test(e2e): add assertions on field values ",paraId:8,tocIndex:4},{value:"#4034",paraId:8,tocIndex:4},{value:"feat(Variable): add a new variable ",paraId:8,tocIndex:4},{value:"#4025",paraId:8,tocIndex:4},{value:"feat: run e2e with pro plugins ",paraId:8,tocIndex:4},{value:"#3890",paraId:8,tocIndex:4},{value:"fix: bug ",paraId:8,tocIndex:4},{value:"#4038",paraId:8,tocIndex:4},{value:"fix: array operator with camel case field ",paraId:8,tocIndex:4},{value:"#4032",paraId:8,tocIndex:4},{value:"fix: scopeKeyOptions should be obtained in real-time ",paraId:8,tocIndex:4},{value:"#4029",paraId:8,tocIndex:4},{value:"fix(addText): should use FormItemSchemaToolbar instead of BlockSchema\u2026 ",paraId:8,tocIndex:4},{value:"#3963",paraId:8,tocIndex:4},{value:"feat: register once hook in datasource manager ",paraId:8,tocIndex:4},{value:"#4024",paraId:8,tocIndex:4},{value:"fix: snippets ",paraId:8,tocIndex:4},{value:"#4030",paraId:8,tocIndex:4},{value:"fix: vitest single bug ",paraId:8,tocIndex:4},{value:"#4031",paraId:8,tocIndex:4},{value:"feat(data-vi): improved user experiences (refer to pr) ",paraId:8,tocIndex:4},{value:"#4013",paraId:8,tocIndex:4},{value:"test: add frontend unit test ",paraId:8,tocIndex:4},{value:"#3991",paraId:8,tocIndex:4},{value:"feat: support Others option in popup ",paraId:8,tocIndex:4},{value:"#4015",paraId:8,tocIndex:4},{value:"fix(collection-manager): no refresh after override the field ",paraId:8,tocIndex:4},{value:"#4022",paraId:8,tocIndex:4},{value:"chore: add export & import warnings ",paraId:8,tocIndex:4},{value:"#4027",paraId:8,tocIndex:4},{value:"refactor: third party data source support sort field grouped sorting edit ",paraId:8,tocIndex:4},{value:"#4023",paraId:8,tocIndex:4},{value:"fix(plugin-acl): pm.acl.roles snippet ",paraId:8,tocIndex:4},{value:"#4026",paraId:8,tocIndex:4},{value:"test: association name block e2e test ",paraId:8,tocIndex:4},{value:"#4021",paraId:8,tocIndex:4},{value:"fix: get api url ",paraId:8,tocIndex:4},{value:"#4020",paraId:8,tocIndex:4},{value:"fix(Sub-details): the initializer button is not displayed when the field value is empty ",paraId:8,tocIndex:4},{value:"#4019",paraId:8,tocIndex:4},{value:"fix: initializer use useAassociationName ",paraId:8,tocIndex:4},{value:"#4018",paraId:8,tocIndex:4},{value:"fix(auth): cas login bug when use subdirectory deployment ",paraId:8,tocIndex:4},{value:"#4017",paraId:8,tocIndex:4},{value:"fix(TreeTable): add child error ",paraId:8,tocIndex:4},{value:"#4008",paraId:8,tocIndex:4},{value:"fix: remove active field should not clear value ",paraId:8,tocIndex:4},{value:"#4012",paraId:8,tocIndex:4},{value:"fix(plugin-acl): datasource roles snippet ",paraId:8,tocIndex:4},{value:"#4016",paraId:8,tocIndex:4},{value:"fix: after selecting all, bulk update prompts for unselected data ",paraId:8,tocIndex:4},{value:"#4010",paraId:8,tocIndex:4},{value:"refactor: tree table is not enabled by default ",paraId:8,tocIndex:4},{value:"#4001",paraId:8,tocIndex:4},{value:"feat(plugin-workflow-action-trigger): support association actions to trigger ",paraId:8,tocIndex:4},{value:"#4007",paraId:8,tocIndex:4},{value:"Update application.ts ",paraId:8,tocIndex:4},{value:"#4006",paraId:8,tocIndex:4},{value:"fix: tag filed setting ",paraId:8,tocIndex:4},{value:"#4009",paraId:8,tocIndex:4},{value:"fix(users): remove phone validation due to incorrect check of foreign phone numebrs ",paraId:8,tocIndex:4},{value:"#4005",paraId:8,tocIndex:4},{value:"fix: association block action permission verification failed ",paraId:8,tocIndex:4},{value:"#3994",paraId:8,tocIndex:4},{value:"refactor: fields for table sorting cannot select sorting fields with scopekey ",paraId:8,tocIndex:4},{value:"#3984",paraId:8,tocIndex:4},{value:"fix(Form): invalid parentRecord ",paraId:8,tocIndex:4},{value:"#3998",paraId:8,tocIndex:4},{value:"fix(plugin-workflow): adjust locale ",paraId:8,tocIndex:4},{value:"#3993",paraId:8,tocIndex:4},{value:"fix: sub -table support allowSelectExistingRecord setting ",paraId:8,tocIndex:4},{value:"#4004",paraId:8,tocIndex:4},{value:"fix(auth): sign up page not found when entering with url directly ",paraId:8,tocIndex:4},{value:"#4002",paraId:8,tocIndex:4},{value:"chore(database): set null value when field is unique and value is empty string ",paraId:8,tocIndex:4},{value:"#3997",paraId:8,tocIndex:4},{value:"chore(gateway): report error with cause message ",paraId:8,tocIndex:4},{value:"#3999",paraId:8,tocIndex:4},{value:"chore(error-handler): display message cause the error ",paraId:8,tocIndex:4},{value:"#3996",paraId:8,tocIndex:4},{value:"fix: restore with table name in camel case ",paraId:8,tocIndex:4},{value:"#3995",paraId:8,tocIndex:4},{value:"refactor(plugin-workflow): adjust comments ",paraId:8,tocIndex:4},{value:"#3990",paraId:8,tocIndex:4},{value:"fix: gantt collapse & expand ",paraId:8,tocIndex:4},{value:"#3982",paraId:8,tocIndex:4},{value:"fix(BulkForm): should be required when switching to 'Changed to' ",paraId:8,tocIndex:4},{value:"#3965",paraId:8,tocIndex:4},{value:"fix: move action ",paraId:8,tocIndex:4},{value:"#3985",paraId:8,tocIndex:4},{value:"refactor: sort field should not has defaultValue ",paraId:8,tocIndex:4},{value:"#3986",paraId:8,tocIndex:4},{value:"chore: update class names of plugins ",paraId:8,tocIndex:4},{value:"#3981",paraId:8,tocIndex:4},{value:"feat(plugin-workflow-sync): add sync when multi-app-share-collection enabled ",paraId:8,tocIndex:4},{value:"#3969",paraId:8,tocIndex:4},{value:"fix(localization): incorrect locale when first entering ",paraId:8,tocIndex:4},{value:"#3968",paraId:8,tocIndex:4},{value:"chore: adjust and add api comments ",paraId:8,tocIndex:4},{value:"#3951",paraId:8,tocIndex:4},{value:"refactor: select options configuration ",paraId:8,tocIndex:4},{value:"#3964",paraId:8,tocIndex:4},{value:"fix(GridCard): set the count of columns displayed in a row ",paraId:8,tocIndex:4},{value:"#3960",paraId:8,tocIndex:4},{value:"refactor: only numerical formula fields support format ",paraId:8,tocIndex:4},{value:"#3962",paraId:8,tocIndex:4},{value:"chore(plugin-workflow): add comments ",paraId:8,tocIndex:4},{value:"#3959",paraId:8,tocIndex:4},{value:"chore: remove legacy formula plugins ",paraId:8,tocIndex:4},{value:"#3939",paraId:8,tocIndex:4},{value:"fix(LinkageRules): should be effective immediately ",paraId:8,tocIndex:4},{value:"#3958",paraId:8,tocIndex:4},{value:"fix(Picker): should display Allow add new data option ",paraId:8,tocIndex:4},{value:"#3957",paraId:8,tocIndex:4},{value:"fix(connect-data-blocks): should immediately show in the drop-down menu ",paraId:8,tocIndex:4},{value:"#3953",paraId:8,tocIndex:4},{value:"fix: left menu title modify ",paraId:8,tocIndex:4},{value:"#3956",paraId:8,tocIndex:4},{value:"fix: template list provider bug ",paraId:8,tocIndex:4},{value:"#3950",paraId:8,tocIndex:4},{value:"refactor: nanoid &uuid autoFill ",paraId:8,tocIndex:4},{value:"#3955",paraId:8,tocIndex:4},{value:"feat: getParentJsonSchema in ui schema repository ",paraId:8,tocIndex:4},{value:"#3690",paraId:8,tocIndex:4},{value:"fix: save uuid & nano id field value with sequelize validation ",paraId:8,tocIndex:4},{value:"#3952",paraId:8,tocIndex:4},{value:"fix: throughCollection support fuzzy search ",paraId:8,tocIndex:4},{value:"#3949",paraId:8,tocIndex:4},{value:"fix: getSourceKeyByAssocation ",paraId:8,tocIndex:4},{value:"#3947",paraId:8,tocIndex:4},{value:"fix(RichText): unify style ",paraId:8,tocIndex:4},{value:"#3946",paraId:8,tocIndex:4},{value:"fix(connectDataBlocks): should add FilterBlockProvider to Grid ",paraId:8,tocIndex:4},{value:"#3944",paraId:8,tocIndex:4},{value:"chore: add appVersion to Schema ",paraId:8,tocIndex:4},{value:"#3936",paraId:8,tocIndex:4},{value:"fix: collectionFieldInterfaceSelect ",paraId:8,tocIndex:4},{value:"#3945",paraId:8,tocIndex:4},{value:"fix: fix sourceId of templates ",paraId:8,tocIndex:4},{value:"#3941",paraId:8,tocIndex:4},{value:"fix(collection manager): collection manager primarykey & nanoid & uuid suport index setting ",paraId:8,tocIndex:4},{value:"#3943",paraId:8,tocIndex:4},{value:"fix(plugin-formula-field): fix component context ",paraId:8,tocIndex:4},{value:"#3937",paraId:8,tocIndex:4},{value:"fix: nanoid availableTypes ",paraId:8,tocIndex:4},{value:"#3942",paraId:8,tocIndex:4},{value:"fix: automatically generate default values ",paraId:8,tocIndex:4},{value:"#3940",paraId:8,tocIndex:4},{value:"fix: formula field caluation error ",paraId:8,tocIndex:4},{value:"#3938",paraId:8,tocIndex:4},{value:"fix: formula field support format ",paraId:8,tocIndex:4},{value:"#3928",paraId:8,tocIndex:4},{value:"refactor: unify tab initailizer naming ",paraId:8,tocIndex:4},{value:"#3932",paraId:8,tocIndex:4},{value:"fix: add zIndex to Lightbox overlay style ",paraId:8,tocIndex:4},{value:"#3934",paraId:8,tocIndex:4},{value:"fix(Table): fix the problem that the content of the association field is not displayed ",paraId:8,tocIndex:4},{value:"#3930",paraId:8,tocIndex:4},{value:"fix(evaluators): fix array flatten ",paraId:8,tocIndex:4},{value:"#3931",paraId:8,tocIndex:4},{value:"refactor: main data source view collection support filterTargetKey ",paraId:8,tocIndex:4},{value:"#3818",paraId:8,tocIndex:4},{value:"fix: formula field calculation error ",paraId:8,tocIndex:4},{value:"#3929",paraId:8,tocIndex:4},{value:"fix: load view collection belongs to association with source options ",paraId:8,tocIndex:4},{value:"#3912",paraId:8,tocIndex:4},{value:"fix: edit form unchanged should not appear unSaveed warning when cloas modal ",paraId:8,tocIndex:4},{value:"#3920",paraId:8,tocIndex:4},{value:"fix(Collapse): fix error for chinaRegions ",paraId:8,tocIndex:4},{value:"#3925",paraId:8,tocIndex:4},{value:"fix: number display format ",paraId:8,tocIndex:4},{value:"#3924",paraId:8,tocIndex:4},{value:"fix(defaultValue): should immediate effect when set default value ",paraId:8,tocIndex:4},{value:"#3923",paraId:8,tocIndex:4},{value:"feat: action support refreshDataBlockRequest configuration ",paraId:8,tocIndex:4},{value:"#3882",paraId:8,tocIndex:4},{value:"refactor: formBlockProvider & detailBlockProvider ",paraId:8,tocIndex:4},{value:"#3898",paraId:8,tocIndex:4},{value:"feat(data-vi): allows to add charts for mobile client ",paraId:8,tocIndex:4},{value:"#3922",paraId:8,tocIndex:4},{value:"chore: add API comments ",paraId:8,tocIndex:4},{value:"#3919",paraId:8,tocIndex:4},{value:"fix: fix Pagination ",paraId:8,tocIndex:4},{value:"#3921",paraId:8,tocIndex:4},{value:"test(plugin-error-handler): middleware ",paraId:8,tocIndex:4},{value:"#3909",paraId:8,tocIndex:4},{value:"fix: update plugin ",paraId:8,tocIndex:4},{value:"#3895",paraId:8,tocIndex:4},{value:"fix: gantt block pagination ",paraId:8,tocIndex:4},{value:"#3918",paraId:8,tocIndex:4},{value:"fix: source id null ",paraId:8,tocIndex:4},{value:"#3917",paraId:8,tocIndex:4},{value:"fix(Table): fix Pagination ",paraId:8,tocIndex:4},{value:"#3916",paraId:8,tocIndex:4},{value:"fix: get the correct sourceId ",paraId:8,tocIndex:4},{value:"#3897",paraId:8,tocIndex:4},{value:"fix(DataScope): fix no immediate effect issue after saving ",paraId:8,tocIndex:4},{value:"#3910",paraId:8,tocIndex:4},{value:"fix: select field options initialValue ",paraId:8,tocIndex:4},{value:"#3911",paraId:8,tocIndex:4},{value:"fix: external link click ",paraId:8,tocIndex:4},{value:"#3908",paraId:8,tocIndex:4},{value:"fix(inputNumber): loss of accuracy in inputNumber ",paraId:8,tocIndex:4},{value:"#3902",paraId:8,tocIndex:4},{value:"feat(plugin-workflow-action-trigger): add global action events ",paraId:8,tocIndex:4},{value:"#3883",paraId:8,tocIndex:4},{value:"docs: add api comment ",paraId:8,tocIndex:4},{value:"#3868",paraId:8,tocIndex:4},{value:"fix: vitest config bug ",paraId:8,tocIndex:4},{value:"#3907",paraId:8,tocIndex:4},{value:"fix: table fixed bug ",paraId:8,tocIndex:4},{value:"#3901",paraId:8,tocIndex:4},{value:"fix: list data undefined error ",paraId:8,tocIndex:4},{value:"#3905",paraId:8,tocIndex:4},{value:"fix: lazy render bug ",paraId:8,tocIndex:4},{value:"#3886",paraId:8,tocIndex:4},{value:"fix: sort params missing ",paraId:8,tocIndex:4},{value:"#3906",paraId:8,tocIndex:4},{value:"refactor: change useProps to x-use-component-props ",paraId:8,tocIndex:4},{value:"#3853",paraId:8,tocIndex:4},{value:"fix(withDynamicSchemaProps): change deep merge to shallow merge ",paraId:8,tocIndex:4},{value:"#3899",paraId:8,tocIndex:4},{value:"fix: history block add print button, click print button to report error ",paraId:8,tocIndex:4},{value:"#3900",paraId:8,tocIndex:4},{value:"fix: tar bug ",paraId:8,tocIndex:4},{value:"#3891",paraId:8,tocIndex:4},{value:"chore: return bigInt as string type ",paraId:8,tocIndex:4},{value:"#3887",paraId:8,tocIndex:4},{value:"feat(data-vi): data scope for chart filter fields ",paraId:8,tocIndex:4},{value:"#3894",paraId:8,tocIndex:4},{value:"feat: adjust menu of add new ",paraId:8,tocIndex:4},{value:"#3884",paraId:8,tocIndex:4},{value:"fix(plugin-custom-request): fix edit button dialog ",paraId:8,tocIndex:4},{value:"#3893",paraId:8,tocIndex:4},{value:"fix: fieldNames missing when setting data scope ",paraId:8,tocIndex:4},{value:"#3892",paraId:8,tocIndex:4},{value:"fix: deps check error when dev add production plugin ",paraId:8,tocIndex:4},{value:"#3848",paraId:8,tocIndex:4},{value:"fix: workflow tabs not exists ",paraId:8,tocIndex:4},{value:"#3889",paraId:8,tocIndex:4},{value:"fix: association field support data scope linkage ",paraId:8,tocIndex:4},{value:"#3888",paraId:8,tocIndex:4},{value:"fix: templateBlockProvider support association field append ",paraId:8,tocIndex:4},{value:"#3866",paraId:8,tocIndex:4},{value:"chore: main datasource api ",paraId:8,tocIndex:4},{value:"#3880",paraId:8,tocIndex:4},{value:"feat: run vitest with coverage ",paraId:8,tocIndex:4},{value:"#3802",paraId:8,tocIndex:4},{value:"fix: avoid duplicate menu keys ",paraId:8,tocIndex:4},{value:"#3885",paraId:8,tocIndex:4},{value:"fix(data-vi): dual axes chart displays abnormally ",paraId:8,tocIndex:4},{value:"#3881",paraId:8,tocIndex:4},{value:"fix: reject update when filter is empty object ",paraId:8,tocIndex:4},{value:"#3777",paraId:8,tocIndex:4},{value:"chore: update field with primary key attribute ",paraId:8,tocIndex:4},{value:"#3852",paraId:8,tocIndex:4},{value:"refactor: uuid & nanoid support default value configuration ",paraId:8,tocIndex:4},{value:"#3830",paraId:8,tocIndex:4},{value:"feat: table performance ",paraId:8,tocIndex:4},{value:"#3791",paraId:8,tocIndex:4},{value:"fix: setFormValueChanged undefined ",paraId:8,tocIndex:4},{value:"#3879",paraId:8,tocIndex:4},{value:"fix(client): fix diabled in filter dynamic component ",paraId:8,tocIndex:4},{value:"#3874",paraId:8,tocIndex:4},{value:"fix(plugin-workflow-parallel): fix locale ",paraId:8,tocIndex:4},{value:"#3876",paraId:8,tocIndex:4},{value:"fix(formula-field): formula field set form value change ",paraId:8,tocIndex:4},{value:"#3873",paraId:8,tocIndex:4},{value:"fix: formBlockProvider block display ",paraId:8,tocIndex:4},{value:"#3877",paraId:8,tocIndex:4},{value:"refactor(plugin-workflow): change to ",paraId:8,tocIndex:4},{value:"#3871",paraId:8,tocIndex:4},{value:"fix: kanban card modal display abnormal ",paraId:8,tocIndex:4},{value:"#3863",paraId:8,tocIndex:4},{value:"fix: filterTargetKey only support view collection ",paraId:8,tocIndex:4},{value:"#3872",paraId:8,tocIndex:4},{value:"The following plugins are no longer provided as open-source version (users who have been using them in production environments, please contact us for upgrades):",paraId:9,tocIndex:5},{value:"@nocobase/plugin-auth-cas: Authenticates identity via the CAS protocol.",paraId:10,tocIndex:5},{value:"@nocobase/plugin-auth-odic: Authenticates identity via OIDC (OpenID Connect) protocol.",paraId:10,tocIndex:5},{value:"@nocobase/plugin-auth-saml: Authenticates identity via SAML 2.0.",paraId:10,tocIndex:5},{value:"The following plugins have been deprecated and will be removed in upcoming versions:",paraId:11,tocIndex:5},{value:"@nocobase/plugin-audit-logs: Deprecated, temporarily not removed, won't be installed in the new version.",paraId:12,tocIndex:5},{value:"@nocobase/plugin-snapshot-field: Deprecated, temporarily not removed, won't be installed in the new version.",paraId:12,tocIndex:5},{value:"@nocobase/plugin-charts: Use @nocobase/plugin-data-visualization instead.",paraId:12,tocIndex:5},{value:"@nocobase/plugin-excel-formula-field: Use @nocobase/plugin-field-formula instead.",paraId:12,tocIndex:5},{value:"@nocobase/plugin-math-formula-field: Use @nocobase/plugin-field-formula instead.",paraId:12,tocIndex:5},{value:"@nocobase/plugin-ui-routes-storage: Deprecated, frontend routes can be extended directly in the frontend.",paraId:12,tocIndex:5},{value:"For the complete list of plugins, please refer to: ",paraId:13,tocIndex:5},{value:"https://www.nocobase.com/plugins.html",paraId:13,tocIndex:5},{value:"To provide a better development experience, we've added comments to some special APIs:",paraId:14,tocIndex:6},{value:"@internal",paraId:15,tocIndex:6},{value:": Typically used to identify internal implementation details or methods that are not designed for public use but exist for internal use within the code.",paraId:15,tocIndex:6},{value:"@experimental",paraId:15,tocIndex:6},{value:": Used to identify experimental features or APIs. These APIs are still in development and testing phases, may undergo significant changes, or even be removed or replaced in future versions.",paraId:15,tocIndex:6},{value:"@deprecated",paraId:15,tocIndex:6},{value:": Used to identify deprecated features, methods, or APIs in the code. Although they are still available, they may be removed in future versions, or there may be better alternative solutions available.",paraId:15,tocIndex:6},{value:"NocoBase is dual-licensed under AGPL-3.0 and commercial licenses. For details, please refer to the ",paraId:16,tocIndex:7},{value:"NocoBase License Agreement",paraId:16,tocIndex:7},{value:".",paraId:16,tocIndex:7},{value:"Always backup your database before upgrading! Always backup your database! Always backup your database!",paraId:17,tocIndex:8},{value:"You can also backup the entire project code.",paraId:17,tocIndex:8},{value:"Since the Auth: CAS, Auth: OIDC, Auth: SAML three SSO plugins are removed from the open-source code, the upgrade will be divided into two cases.",paraId:18,tocIndex:8},{value:"Please follow the ",paraId:19,tocIndex:9},{value:"conventional method",paraId:19,tocIndex:9},{value:" for upgrading.",paraId:19,tocIndex:9},{value:"Please follow these steps to upgrade:",paraId:20,tocIndex:10},{value:"Refer to ",paraId:21,tocIndex:11},{value:"NocoBase Upgrade Overview",paraId:22,tocIndex:11},{value:", and upgrade NocoBase to the latest version.",paraId:21,tocIndex:11},{value:"If you previously enabled CAS, OIDC, SAML plugins, you will see the following prompts during the upgrade:",paraId:23,tocIndex:11},{value:"Command line upgrade terminal prompt:",paraId:24,tocIndex:11},{value:"Docker version interface prompt:",paraId:25,tocIndex:11},{value:"If you choose to remove the plugins and continue upgrading:",paraId:26,tocIndex:12},{value:"Remove the plugins according to the prompts",paraId:27,tocIndex:12},{value:`# Main application +`,paraId:40,tocIndex:12}],Tq={},Cq={title:"v1.0\uFF1A2024-04-28",toc:"menu",filename:"docs/en-US/welcome/release/v1001-changelog.md",lastUpdated:173254844e4,description:"After 3 years of development, NocoBase has reached its first major version upgrade, transitioning from version 0.x to 1.0. This marks a significant milestone."},Aq=[{id:"v102024-04-28",depth:1,title:"v1.0\uFF1A2024-04-28"},{id:"v10-milestone",depth:2,title:"v1.0 Milestone"},{id:"new-features",depth:2,title:"New Features"},{id:"new-plugins",depth:2,title:"New Plugins"},{id:"full-changelog",depth:2,title:"Full Changelog"},{id:"plugin-changes",depth:2,title:"Plugin Changes"},{id:"code-comments",depth:2,title:"Code Comments"},{id:"license-agreement",depth:2,title:"License Agreement"},{id:"upgrade-guide",depth:2,title:"Upgrade Guide"},{id:"if-you-are-not-using-sso-plugins",depth:3,title:"If you are not using SSO plugins"},{id:"if-you-are-using-sso-plugins",depth:3,title:"If you are using SSO plugins"},{id:"1-upgrade-the-application",depth:4,title:"1. Upgrade the Application"},{id:"2-remove-plugins-or-obtain-plugin-version-10",depth:4,title:"2. Remove Plugins or Obtain Plugin Version 1.0?"},{id:"3-cas-oidc-saml-plugin-upgrade-process",depth:4,title:"3. CAS, OIDC, SAML Plugin Upgrade Process"}],qq=[{value:"After 3 years of development, NocoBase has reached its first major version upgrade, transitioning from version 0.x to 1.0. This marks a significant milestone.",paraId:0,tocIndex:1},{value:"During the 0.x phase: The core API and features underwent rapid changes, with each new version potentially introducing incompatible changes.",paraId:1,tocIndex:1},{value:"During the 1.x phase: The core API has stabilized, and NocoBase will focus on adding new plugins, optimizing security, and enhancing performance while maintaining stability.",paraId:1,tocIndex:1},{value:"Theme editor can configure page and modal padding, block spacing, and block corner radius.",paraId:2,tocIndex:2},{value:"When adding blocks, collections support filtering.",paraId:2,tocIndex:2},{value:"Relationship records supports sorting.",paraId:2,tocIndex:2},{value:"Improved interactivity of data visualization.",paraId:2,tocIndex:2},{value:"Support for adding chart blocks on mobile devices.",paraId:2,tocIndex:2},{value:"Chart filter blocks support setting field data scope.",paraId:2,tocIndex:2},{value:"Add more variables, ",paraId:2,tocIndex:2},{value:"see details",paraId:2,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"Blocks from any collections can be added in popups.",paraId:2,tocIndex:2},{value:'Workflows: "Post-action event" can be triggered by buttons inside association blocks.',paraId:2,tocIndex:2},{value:"Automatic refresh of data in the parent container when data changes within a popup.",paraId:2,tocIndex:2},{value:"Significant performance improvements in table blocks.",paraId:2,tocIndex:2},{value:"Substantial increase in test coverage.",paraId:2,tocIndex:2},{value:"Field: Markdown (Vditor)",paraId:3,tocIndex:3},{value:"Used to store Markdown and render it using Vditor editor, supports common Markdown syntax and supports uploading images, recordings, etc.It also allows for instant rendering, where what you see is what you get.",paraId:4,tocIndex:3},{value:"Comments",paraId:5,tocIndex:3},{value:"Provides comment collection template and block to add commenting functionality for any collection.",paraId:6,tocIndex:3},{value:"View the full changelog",paraId:7},{value:"feat(plugin-workflow): refresh the list after sync ",paraId:8,tocIndex:4},{value:"#4177",paraId:8,tocIndex:4},{value:"feat(plugin-workflow): show workflow key as tooltip on title ",paraId:8,tocIndex:4},{value:"#4178",paraId:8,tocIndex:4},{value:"test(plugin-workflow): add test cases ",paraId:8,tocIndex:4},{value:"#4199",paraId:8,tocIndex:4},{value:"chore: api cache control header ",paraId:8,tocIndex:4},{value:"#4203",paraId:8,tocIndex:4},{value:"feat: load vditor dep from local ",paraId:8,tocIndex:4},{value:"#4190",paraId:8,tocIndex:4},{value:"test: input number separator test ",paraId:8,tocIndex:4},{value:"#4204",paraId:8,tocIndex:4},{value:"fix: number field shuold support separator setting ",paraId:8,tocIndex:4},{value:"#4197",paraId:8,tocIndex:4},{value:"fix(plugin-workflow): refine experience ",paraId:8,tocIndex:4},{value:"#4195",paraId:8,tocIndex:4},{value:"chore: optimize warning wordings of import & export ",paraId:8,tocIndex:4},{value:"#4196",paraId:8,tocIndex:4},{value:"refactor: external data source collection manager ",paraId:8,tocIndex:4},{value:"#4193",paraId:8,tocIndex:4},{value:"fix: env bug ",paraId:8,tocIndex:4},{value:"#4191",paraId:8,tocIndex:4},{value:"fix: empty operator with association field ",paraId:8,tocIndex:4},{value:"#4189",paraId:8,tocIndex:4},{value:"chore: add e2e ",paraId:8,tocIndex:4},{value:"#4184",paraId:8,tocIndex:4},{value:"fix: vditor version ",paraId:8,tocIndex:4},{value:"#4183",paraId:8,tocIndex:4},{value:"refactor: form data template locale improve ",paraId:8,tocIndex:4},{value:"#4188",paraId:8,tocIndex:4},{value:"test: add automated testing ",paraId:8,tocIndex:4},{value:"#4098",paraId:8,tocIndex:4},{value:"chore: data source logger instance ",paraId:8,tocIndex:4},{value:"#4181",paraId:8,tocIndex:4},{value:"chore: get database instance in relation repository ",paraId:8,tocIndex:4},{value:"#4179",paraId:8,tocIndex:4},{value:"chore: add e2e for variables ",paraId:8,tocIndex:4},{value:"#4152",paraId:8,tocIndex:4},{value:"chore: define collection debug message ",paraId:8,tocIndex:4},{value:"#4176",paraId:8,tocIndex:4},{value:"chore: unsupportedFields in view collection ",paraId:8,tocIndex:4},{value:"#4155",paraId:8,tocIndex:4},{value:"feat: add plugin-field-markdown-vditor ",paraId:8,tocIndex:4},{value:"#4065",paraId:8,tocIndex:4},{value:"fix: bulk edit form acl action error ",paraId:8,tocIndex:4},{value:"#4166",paraId:8,tocIndex:4},{value:"fix: auto create uuid foreign key in relation field ",paraId:8,tocIndex:4},{value:"#4160",paraId:8,tocIndex:4},{value:"fix(plugin-fm): fix confusing size limit hint ",paraId:8,tocIndex:4},{value:"#4153",paraId:8,tocIndex:4},{value:"fix(users): improve users:updateProfile ",paraId:8,tocIndex:4},{value:"#4162",paraId:8,tocIndex:4},{value:"fix(client): get api url ",paraId:8,tocIndex:4},{value:"#4161",paraId:8,tocIndex:4},{value:"feat: remove plugin-ui-routes-storage ",paraId:8,tocIndex:4},{value:"#4140",paraId:8,tocIndex:4},{value:"fix: lock cytoscape version ",paraId:8,tocIndex:4},{value:"#4158",paraId:8,tocIndex:4},{value:"refactor: collection template support presetFieldsDisabled ",paraId:8,tocIndex:4},{value:"#4159",paraId:8,tocIndex:4},{value:"fix: grid schema ",paraId:8,tocIndex:4},{value:"#4157",paraId:8,tocIndex:4},{value:"client unit test ",paraId:8,tocIndex:4},{value:"#4150",paraId:8,tocIndex:4},{value:"fix: update belongs to many association that target key is not primary key ",paraId:8,tocIndex:4},{value:"#4146",paraId:8,tocIndex:4},{value:"refactor: form data template locale improve ",paraId:8,tocIndex:4},{value:"#4148",paraId:8,tocIndex:4},{value:"fix(database): column name in array field ",paraId:8,tocIndex:4},{value:"#4110",paraId:8,tocIndex:4},{value:"test: refresh on action e2e test ",paraId:8,tocIndex:4},{value:"#4147",paraId:8,tocIndex:4},{value:"fix(custom-request): support configuring content type ",paraId:8,tocIndex:4},{value:"#4144",paraId:8,tocIndex:4},{value:"chore: deprecate the current record variable from the form ",paraId:8,tocIndex:4},{value:"#4063",paraId:8,tocIndex:4},{value:"feat(Theme): add some tokens ",paraId:8,tocIndex:4},{value:"#4137",paraId:8,tocIndex:4},{value:"fix(client): fix some warnings ",paraId:8,tocIndex:4},{value:"#4143",paraId:8,tocIndex:4},{value:"style: tableActionColumn style improve ",paraId:8,tocIndex:4},{value:"#4138",paraId:8,tocIndex:4},{value:"fix: actionBar style improve ",paraId:8,tocIndex:4},{value:"#4123",paraId:8,tocIndex:4},{value:"chore: warning message if on delete conflict ",paraId:8,tocIndex:4},{value:"#4141",paraId:8,tocIndex:4},{value:"fix(plugin-workflow-manual): allow pass node when no assignee ",paraId:8,tocIndex:4},{value:"#4139",paraId:8,tocIndex:4},{value:"chore: datasource manager api ",paraId:8,tocIndex:4},{value:"#4124",paraId:8,tocIndex:4},{value:"fix(plugin-workflow-manual): fix assignees parsing bug ",paraId:8,tocIndex:4},{value:"#4125",paraId:8,tocIndex:4},{value:"fix: load association field in collection ",paraId:8,tocIndex:4},{value:"#4122",paraId:8,tocIndex:4},{value:"perf: remove all Skeleton animation ",paraId:8,tocIndex:4},{value:"#4113",paraId:8,tocIndex:4},{value:"test: add e2e ",paraId:8,tocIndex:4},{value:"#4121",paraId:8,tocIndex:4},{value:"chore(data-vi): adjust api ",paraId:8,tocIndex:4},{value:"#4116",paraId:8,tocIndex:4},{value:"fix: scheduleEventTrigger ",paraId:8,tocIndex:4},{value:"#4114",paraId:8,tocIndex:4},{value:"feat(plugin-workflow): add checker for intervally dispatching ",paraId:8,tocIndex:4},{value:"#4119",paraId:8,tocIndex:4},{value:"feat: add filterOtherRecordsCollection for DataBlockInitializer ",paraId:8,tocIndex:4},{value:"#4117",paraId:8,tocIndex:4},{value:"refactor: optimize CollectionField ",paraId:8,tocIndex:4},{value:"#4111",paraId:8,tocIndex:4},{value:"fix: improve sort field migration ",paraId:8,tocIndex:4},{value:"#4112",paraId:8,tocIndex:4},{value:"fix: field component ",paraId:8,tocIndex:4},{value:"#4102",paraId:8,tocIndex:4},{value:"fix: association select support add mode ",paraId:8,tocIndex:4},{value:"#4108",paraId:8,tocIndex:4},{value:"fix: createdBy & updatedBy target option ",paraId:8,tocIndex:4},{value:"#4109",paraId:8,tocIndex:4},{value:"fix(linkage-rule): linkage rule support empty condiction ",paraId:8,tocIndex:4},{value:"#4103",paraId:8,tocIndex:4},{value:"fix: add SanitizedCollectionProvider ",paraId:8,tocIndex:4},{value:"#4100",paraId:8,tocIndex:4},{value:"fix: tree collection target error ",paraId:8,tocIndex:4},{value:"#4105",paraId:8,tocIndex:4},{value:"fix: add ClearCollectionFieldContext ",paraId:8,tocIndex:4},{value:"#4101",paraId:8,tocIndex:4},{value:"feat: improve form block ",paraId:8,tocIndex:4},{value:"#4099",paraId:8,tocIndex:4},{value:"chore: migrate sortable options to sort field ",paraId:8,tocIndex:4},{value:"#4011",paraId:8,tocIndex:4},{value:"feat: support sort option in appends ",paraId:8,tocIndex:4},{value:"#4056",paraId:8,tocIndex:4},{value:"feat(data-vi): allows pie chart to accept negative numbers, fix T-4075 ",paraId:8,tocIndex:4},{value:"#4094",paraId:8,tocIndex:4},{value:"fix(data-vi): number becomes string after precision transformation ",paraId:8,tocIndex:4},{value:"#4092",paraId:8,tocIndex:4},{value:"fix: encode url params ",paraId:8,tocIndex:4},{value:"#4055",paraId:8,tocIndex:4},{value:"test(plugin-workflow): add test case for duplicated triggering schedule workflow ",paraId:8,tocIndex:4},{value:"#3817",paraId:8,tocIndex:4},{value:"perf(LinkageRules): solve lagging problems ",paraId:8,tocIndex:4},{value:"#4090",paraId:8,tocIndex:4},{value:"fix(subTable): should not display Allow add new data option ",paraId:8,tocIndex:4},{value:"#4086",paraId:8,tocIndex:4},{value:"fix: missing fields ",paraId:8,tocIndex:4},{value:"#4083",paraId:8,tocIndex:4},{value:"fix: table select pagination error ",paraId:8,tocIndex:4},{value:"#4078",paraId:8,tocIndex:4},{value:"fix: reset page when setting block data scope ",paraId:8,tocIndex:4},{value:"#4081",paraId:8,tocIndex:4},{value:"fix: custom request role list ",paraId:8,tocIndex:4},{value:"#4074",paraId:8,tocIndex:4},{value:"fix: parse iso week ",paraId:8,tocIndex:4},{value:"#4068",paraId:8,tocIndex:4},{value:"fix(sourceId): avoid error ",paraId:8,tocIndex:4},{value:"#4077",paraId:8,tocIndex:4},{value:"fix(sql-collection): can't select interface when setting fields ",paraId:8,tocIndex:4},{value:"#4079",paraId:8,tocIndex:4},{value:"fix: load with source field ",paraId:8,tocIndex:4},{value:"#4075",paraId:8,tocIndex:4},{value:"fix: deletion of operation linkage rules does not take effect in real time ",paraId:8,tocIndex:4},{value:"#4058",paraId:8,tocIndex:4},{value:"fix(core): fix round bug in formula evaluator ",paraId:8,tocIndex:4},{value:"#4070",paraId:8,tocIndex:4},{value:"test: add e2e for data loading mode ",paraId:8,tocIndex:4},{value:"#4069",paraId:8,tocIndex:4},{value:"fix(filterForm): avoid duplicate names ",paraId:8,tocIndex:4},{value:"#4071",paraId:8,tocIndex:4},{value:"chore: optimize block title ",paraId:8,tocIndex:4},{value:"#4040",paraId:8,tocIndex:4},{value:"fix: sync default value in view ",paraId:8,tocIndex:4},{value:"#4067",paraId:8,tocIndex:4},{value:"fix(defaultValue): fix the issue of default values disappearing after refreshing the page ",paraId:8,tocIndex:4},{value:"#4066",paraId:8,tocIndex:4},{value:"refactor: gantt block ",paraId:8,tocIndex:4},{value:"#4059",paraId:8,tocIndex:4},{value:"fix: sub-table big field should support variable default value ",paraId:8,tocIndex:4},{value:"#4062",paraId:8,tocIndex:4},{value:"chore(Theme): set the default font size of the Compact theme to 16 ",paraId:8,tocIndex:4},{value:"#4064",paraId:8,tocIndex:4},{value:"test: add e2e for actions ",paraId:8,tocIndex:4},{value:"#4053",paraId:8,tocIndex:4},{value:"fix(variable): missing variables and invalid translations ",paraId:8,tocIndex:4},{value:"#4054",paraId:8,tocIndex:4},{value:"test: add backend unit tests ",paraId:8,tocIndex:4},{value:"#4000",paraId:8,tocIndex:4},{value:"fix: improve card item ",paraId:8,tocIndex:4},{value:"#4036",paraId:8,tocIndex:4},{value:"chore(acl): disable register association fields actions ",paraId:8,tocIndex:4},{value:"#4014",paraId:8,tocIndex:4},{value:"fix(variable): fix parent record variable reporting errors in data scope ",paraId:8,tocIndex:4},{value:"#4039",paraId:8,tocIndex:4},{value:"test(e2e): add assertions on field values ",paraId:8,tocIndex:4},{value:"#4034",paraId:8,tocIndex:4},{value:"feat(Variable): add a new variable ",paraId:8,tocIndex:4},{value:"#4025",paraId:8,tocIndex:4},{value:"feat: run e2e with pro plugins ",paraId:8,tocIndex:4},{value:"#3890",paraId:8,tocIndex:4},{value:"fix: bug ",paraId:8,tocIndex:4},{value:"#4038",paraId:8,tocIndex:4},{value:"fix: array operator with camel case field ",paraId:8,tocIndex:4},{value:"#4032",paraId:8,tocIndex:4},{value:"fix: scopeKeyOptions should be obtained in real-time ",paraId:8,tocIndex:4},{value:"#4029",paraId:8,tocIndex:4},{value:"fix(addText): should use FormItemSchemaToolbar instead of BlockSchema\u2026 ",paraId:8,tocIndex:4},{value:"#3963",paraId:8,tocIndex:4},{value:"feat: register once hook in datasource manager ",paraId:8,tocIndex:4},{value:"#4024",paraId:8,tocIndex:4},{value:"fix: snippets ",paraId:8,tocIndex:4},{value:"#4030",paraId:8,tocIndex:4},{value:"fix: vitest single bug ",paraId:8,tocIndex:4},{value:"#4031",paraId:8,tocIndex:4},{value:"feat(data-vi): improved user experiences (refer to pr) ",paraId:8,tocIndex:4},{value:"#4013",paraId:8,tocIndex:4},{value:"test: add frontend unit test ",paraId:8,tocIndex:4},{value:"#3991",paraId:8,tocIndex:4},{value:"feat: support Others option in popup ",paraId:8,tocIndex:4},{value:"#4015",paraId:8,tocIndex:4},{value:"fix(collection-manager): no refresh after override the field ",paraId:8,tocIndex:4},{value:"#4022",paraId:8,tocIndex:4},{value:"chore: add export & import warnings ",paraId:8,tocIndex:4},{value:"#4027",paraId:8,tocIndex:4},{value:"refactor: third party data source support sort field grouped sorting edit ",paraId:8,tocIndex:4},{value:"#4023",paraId:8,tocIndex:4},{value:"fix(plugin-acl): pm.acl.roles snippet ",paraId:8,tocIndex:4},{value:"#4026",paraId:8,tocIndex:4},{value:"test: association name block e2e test ",paraId:8,tocIndex:4},{value:"#4021",paraId:8,tocIndex:4},{value:"fix: get api url ",paraId:8,tocIndex:4},{value:"#4020",paraId:8,tocIndex:4},{value:"fix(Sub-details): the initializer button is not displayed when the field value is empty ",paraId:8,tocIndex:4},{value:"#4019",paraId:8,tocIndex:4},{value:"fix: initializer use useAassociationName ",paraId:8,tocIndex:4},{value:"#4018",paraId:8,tocIndex:4},{value:"fix(auth): cas login bug when use subdirectory deployment ",paraId:8,tocIndex:4},{value:"#4017",paraId:8,tocIndex:4},{value:"fix(TreeTable): add child error ",paraId:8,tocIndex:4},{value:"#4008",paraId:8,tocIndex:4},{value:"fix: remove active field should not clear value ",paraId:8,tocIndex:4},{value:"#4012",paraId:8,tocIndex:4},{value:"fix(plugin-acl): datasource roles snippet ",paraId:8,tocIndex:4},{value:"#4016",paraId:8,tocIndex:4},{value:"fix: after selecting all, bulk update prompts for unselected data ",paraId:8,tocIndex:4},{value:"#4010",paraId:8,tocIndex:4},{value:"refactor: tree table is not enabled by default ",paraId:8,tocIndex:4},{value:"#4001",paraId:8,tocIndex:4},{value:"feat(plugin-workflow-action-trigger): support association actions to trigger ",paraId:8,tocIndex:4},{value:"#4007",paraId:8,tocIndex:4},{value:"Update application.ts ",paraId:8,tocIndex:4},{value:"#4006",paraId:8,tocIndex:4},{value:"fix: tag filed setting ",paraId:8,tocIndex:4},{value:"#4009",paraId:8,tocIndex:4},{value:"fix(users): remove phone validation due to incorrect check of foreign phone numebrs ",paraId:8,tocIndex:4},{value:"#4005",paraId:8,tocIndex:4},{value:"fix: association block action permission verification failed ",paraId:8,tocIndex:4},{value:"#3994",paraId:8,tocIndex:4},{value:"refactor: fields for table sorting cannot select sorting fields with scopekey ",paraId:8,tocIndex:4},{value:"#3984",paraId:8,tocIndex:4},{value:"fix(Form): invalid parentRecord ",paraId:8,tocIndex:4},{value:"#3998",paraId:8,tocIndex:4},{value:"fix(plugin-workflow): adjust locale ",paraId:8,tocIndex:4},{value:"#3993",paraId:8,tocIndex:4},{value:"fix: sub -table support allowSelectExistingRecord setting ",paraId:8,tocIndex:4},{value:"#4004",paraId:8,tocIndex:4},{value:"fix(auth): sign up page not found when entering with url directly ",paraId:8,tocIndex:4},{value:"#4002",paraId:8,tocIndex:4},{value:"chore(database): set null value when field is unique and value is empty string ",paraId:8,tocIndex:4},{value:"#3997",paraId:8,tocIndex:4},{value:"chore(gateway): report error with cause message ",paraId:8,tocIndex:4},{value:"#3999",paraId:8,tocIndex:4},{value:"chore(error-handler): display message cause the error ",paraId:8,tocIndex:4},{value:"#3996",paraId:8,tocIndex:4},{value:"fix: restore with table name in camel case ",paraId:8,tocIndex:4},{value:"#3995",paraId:8,tocIndex:4},{value:"refactor(plugin-workflow): adjust comments ",paraId:8,tocIndex:4},{value:"#3990",paraId:8,tocIndex:4},{value:"fix: gantt collapse & expand ",paraId:8,tocIndex:4},{value:"#3982",paraId:8,tocIndex:4},{value:"fix(BulkForm): should be required when switching to 'Changed to' ",paraId:8,tocIndex:4},{value:"#3965",paraId:8,tocIndex:4},{value:"fix: move action ",paraId:8,tocIndex:4},{value:"#3985",paraId:8,tocIndex:4},{value:"refactor: sort field should not has defaultValue ",paraId:8,tocIndex:4},{value:"#3986",paraId:8,tocIndex:4},{value:"chore: update class names of plugins ",paraId:8,tocIndex:4},{value:"#3981",paraId:8,tocIndex:4},{value:"feat(plugin-workflow-sync): add sync when multi-app-share-collection enabled ",paraId:8,tocIndex:4},{value:"#3969",paraId:8,tocIndex:4},{value:"fix(localization): incorrect locale when first entering ",paraId:8,tocIndex:4},{value:"#3968",paraId:8,tocIndex:4},{value:"chore: adjust and add api comments ",paraId:8,tocIndex:4},{value:"#3951",paraId:8,tocIndex:4},{value:"refactor: select options configuration ",paraId:8,tocIndex:4},{value:"#3964",paraId:8,tocIndex:4},{value:"fix(GridCard): set the count of columns displayed in a row ",paraId:8,tocIndex:4},{value:"#3960",paraId:8,tocIndex:4},{value:"refactor: only numerical formula fields support format ",paraId:8,tocIndex:4},{value:"#3962",paraId:8,tocIndex:4},{value:"chore(plugin-workflow): add comments ",paraId:8,tocIndex:4},{value:"#3959",paraId:8,tocIndex:4},{value:"chore: remove legacy formula plugins ",paraId:8,tocIndex:4},{value:"#3939",paraId:8,tocIndex:4},{value:"fix(LinkageRules): should be effective immediately ",paraId:8,tocIndex:4},{value:"#3958",paraId:8,tocIndex:4},{value:"fix(Picker): should display Allow add new data option ",paraId:8,tocIndex:4},{value:"#3957",paraId:8,tocIndex:4},{value:"fix(connect-data-blocks): should immediately show in the drop-down menu ",paraId:8,tocIndex:4},{value:"#3953",paraId:8,tocIndex:4},{value:"fix: left menu title modify ",paraId:8,tocIndex:4},{value:"#3956",paraId:8,tocIndex:4},{value:"fix: template list provider bug ",paraId:8,tocIndex:4},{value:"#3950",paraId:8,tocIndex:4},{value:"refactor: nanoid &uuid autoFill ",paraId:8,tocIndex:4},{value:"#3955",paraId:8,tocIndex:4},{value:"feat: getParentJsonSchema in ui schema repository ",paraId:8,tocIndex:4},{value:"#3690",paraId:8,tocIndex:4},{value:"fix: save uuid & nano id field value with sequelize validation ",paraId:8,tocIndex:4},{value:"#3952",paraId:8,tocIndex:4},{value:"fix: throughCollection support fuzzy search ",paraId:8,tocIndex:4},{value:"#3949",paraId:8,tocIndex:4},{value:"fix: getSourceKeyByAssocation ",paraId:8,tocIndex:4},{value:"#3947",paraId:8,tocIndex:4},{value:"fix(RichText): unify style ",paraId:8,tocIndex:4},{value:"#3946",paraId:8,tocIndex:4},{value:"fix(connectDataBlocks): should add FilterBlockProvider to Grid ",paraId:8,tocIndex:4},{value:"#3944",paraId:8,tocIndex:4},{value:"chore: add appVersion to Schema ",paraId:8,tocIndex:4},{value:"#3936",paraId:8,tocIndex:4},{value:"fix: collectionFieldInterfaceSelect ",paraId:8,tocIndex:4},{value:"#3945",paraId:8,tocIndex:4},{value:"fix: fix sourceId of templates ",paraId:8,tocIndex:4},{value:"#3941",paraId:8,tocIndex:4},{value:"fix(collection manager): collection manager primarykey & nanoid & uuid suport index setting ",paraId:8,tocIndex:4},{value:"#3943",paraId:8,tocIndex:4},{value:"fix(plugin-formula-field): fix component context ",paraId:8,tocIndex:4},{value:"#3937",paraId:8,tocIndex:4},{value:"fix: nanoid availableTypes ",paraId:8,tocIndex:4},{value:"#3942",paraId:8,tocIndex:4},{value:"fix: automatically generate default values ",paraId:8,tocIndex:4},{value:"#3940",paraId:8,tocIndex:4},{value:"fix: formula field caluation error ",paraId:8,tocIndex:4},{value:"#3938",paraId:8,tocIndex:4},{value:"fix: formula field support format ",paraId:8,tocIndex:4},{value:"#3928",paraId:8,tocIndex:4},{value:"refactor: unify tab initailizer naming ",paraId:8,tocIndex:4},{value:"#3932",paraId:8,tocIndex:4},{value:"fix: add zIndex to Lightbox overlay style ",paraId:8,tocIndex:4},{value:"#3934",paraId:8,tocIndex:4},{value:"fix(Table): fix the problem that the content of the association field is not displayed ",paraId:8,tocIndex:4},{value:"#3930",paraId:8,tocIndex:4},{value:"fix(evaluators): fix array flatten ",paraId:8,tocIndex:4},{value:"#3931",paraId:8,tocIndex:4},{value:"refactor: main data source view collection support filterTargetKey ",paraId:8,tocIndex:4},{value:"#3818",paraId:8,tocIndex:4},{value:"fix: formula field calculation error ",paraId:8,tocIndex:4},{value:"#3929",paraId:8,tocIndex:4},{value:"fix: load view collection belongs to association with source options ",paraId:8,tocIndex:4},{value:"#3912",paraId:8,tocIndex:4},{value:"fix: edit form unchanged should not appear unSaveed warning when cloas modal ",paraId:8,tocIndex:4},{value:"#3920",paraId:8,tocIndex:4},{value:"fix(Collapse): fix error for chinaRegions ",paraId:8,tocIndex:4},{value:"#3925",paraId:8,tocIndex:4},{value:"fix: number display format ",paraId:8,tocIndex:4},{value:"#3924",paraId:8,tocIndex:4},{value:"fix(defaultValue): should immediate effect when set default value ",paraId:8,tocIndex:4},{value:"#3923",paraId:8,tocIndex:4},{value:"feat: action support refreshDataBlockRequest configuration ",paraId:8,tocIndex:4},{value:"#3882",paraId:8,tocIndex:4},{value:"refactor: formBlockProvider & detailBlockProvider ",paraId:8,tocIndex:4},{value:"#3898",paraId:8,tocIndex:4},{value:"feat(data-vi): allows to add charts for mobile client ",paraId:8,tocIndex:4},{value:"#3922",paraId:8,tocIndex:4},{value:"chore: add API comments ",paraId:8,tocIndex:4},{value:"#3919",paraId:8,tocIndex:4},{value:"fix: fix Pagination ",paraId:8,tocIndex:4},{value:"#3921",paraId:8,tocIndex:4},{value:"test(plugin-error-handler): middleware ",paraId:8,tocIndex:4},{value:"#3909",paraId:8,tocIndex:4},{value:"fix: update plugin ",paraId:8,tocIndex:4},{value:"#3895",paraId:8,tocIndex:4},{value:"fix: gantt block pagination ",paraId:8,tocIndex:4},{value:"#3918",paraId:8,tocIndex:4},{value:"fix: source id null ",paraId:8,tocIndex:4},{value:"#3917",paraId:8,tocIndex:4},{value:"fix(Table): fix Pagination ",paraId:8,tocIndex:4},{value:"#3916",paraId:8,tocIndex:4},{value:"fix: get the correct sourceId ",paraId:8,tocIndex:4},{value:"#3897",paraId:8,tocIndex:4},{value:"fix(DataScope): fix no immediate effect issue after saving ",paraId:8,tocIndex:4},{value:"#3910",paraId:8,tocIndex:4},{value:"fix: select field options initialValue ",paraId:8,tocIndex:4},{value:"#3911",paraId:8,tocIndex:4},{value:"fix: external link click ",paraId:8,tocIndex:4},{value:"#3908",paraId:8,tocIndex:4},{value:"fix(inputNumber): loss of accuracy in inputNumber ",paraId:8,tocIndex:4},{value:"#3902",paraId:8,tocIndex:4},{value:"feat(plugin-workflow-action-trigger): add global action events ",paraId:8,tocIndex:4},{value:"#3883",paraId:8,tocIndex:4},{value:"docs: add api comment ",paraId:8,tocIndex:4},{value:"#3868",paraId:8,tocIndex:4},{value:"fix: vitest config bug ",paraId:8,tocIndex:4},{value:"#3907",paraId:8,tocIndex:4},{value:"fix: table fixed bug ",paraId:8,tocIndex:4},{value:"#3901",paraId:8,tocIndex:4},{value:"fix: list data undefined error ",paraId:8,tocIndex:4},{value:"#3905",paraId:8,tocIndex:4},{value:"fix: lazy render bug ",paraId:8,tocIndex:4},{value:"#3886",paraId:8,tocIndex:4},{value:"fix: sort params missing ",paraId:8,tocIndex:4},{value:"#3906",paraId:8,tocIndex:4},{value:"refactor: change useProps to x-use-component-props ",paraId:8,tocIndex:4},{value:"#3853",paraId:8,tocIndex:4},{value:"fix(withDynamicSchemaProps): change deep merge to shallow merge ",paraId:8,tocIndex:4},{value:"#3899",paraId:8,tocIndex:4},{value:"fix: history block add print button, click print button to report error ",paraId:8,tocIndex:4},{value:"#3900",paraId:8,tocIndex:4},{value:"fix: tar bug ",paraId:8,tocIndex:4},{value:"#3891",paraId:8,tocIndex:4},{value:"chore: return bigInt as string type ",paraId:8,tocIndex:4},{value:"#3887",paraId:8,tocIndex:4},{value:"feat(data-vi): data scope for chart filter fields ",paraId:8,tocIndex:4},{value:"#3894",paraId:8,tocIndex:4},{value:"feat: adjust menu of add new ",paraId:8,tocIndex:4},{value:"#3884",paraId:8,tocIndex:4},{value:"fix(plugin-custom-request): fix edit button dialog ",paraId:8,tocIndex:4},{value:"#3893",paraId:8,tocIndex:4},{value:"fix: fieldNames missing when setting data scope ",paraId:8,tocIndex:4},{value:"#3892",paraId:8,tocIndex:4},{value:"fix: deps check error when dev add production plugin ",paraId:8,tocIndex:4},{value:"#3848",paraId:8,tocIndex:4},{value:"fix: workflow tabs not exists ",paraId:8,tocIndex:4},{value:"#3889",paraId:8,tocIndex:4},{value:"fix: association field support data scope linkage ",paraId:8,tocIndex:4},{value:"#3888",paraId:8,tocIndex:4},{value:"fix: templateBlockProvider support association field append ",paraId:8,tocIndex:4},{value:"#3866",paraId:8,tocIndex:4},{value:"chore: main datasource api ",paraId:8,tocIndex:4},{value:"#3880",paraId:8,tocIndex:4},{value:"feat: run vitest with coverage ",paraId:8,tocIndex:4},{value:"#3802",paraId:8,tocIndex:4},{value:"fix: avoid duplicate menu keys ",paraId:8,tocIndex:4},{value:"#3885",paraId:8,tocIndex:4},{value:"fix(data-vi): dual axes chart displays abnormally ",paraId:8,tocIndex:4},{value:"#3881",paraId:8,tocIndex:4},{value:"fix: reject update when filter is empty object ",paraId:8,tocIndex:4},{value:"#3777",paraId:8,tocIndex:4},{value:"chore: update field with primary key attribute ",paraId:8,tocIndex:4},{value:"#3852",paraId:8,tocIndex:4},{value:"refactor: uuid & nanoid support default value configuration ",paraId:8,tocIndex:4},{value:"#3830",paraId:8,tocIndex:4},{value:"feat: table performance ",paraId:8,tocIndex:4},{value:"#3791",paraId:8,tocIndex:4},{value:"fix: setFormValueChanged undefined ",paraId:8,tocIndex:4},{value:"#3879",paraId:8,tocIndex:4},{value:"fix(client): fix diabled in filter dynamic component ",paraId:8,tocIndex:4},{value:"#3874",paraId:8,tocIndex:4},{value:"fix(plugin-workflow-parallel): fix locale ",paraId:8,tocIndex:4},{value:"#3876",paraId:8,tocIndex:4},{value:"fix(formula-field): formula field set form value change ",paraId:8,tocIndex:4},{value:"#3873",paraId:8,tocIndex:4},{value:"fix: formBlockProvider block display ",paraId:8,tocIndex:4},{value:"#3877",paraId:8,tocIndex:4},{value:"refactor(plugin-workflow): change to ",paraId:8,tocIndex:4},{value:"#3871",paraId:8,tocIndex:4},{value:"fix: kanban card modal display abnormal ",paraId:8,tocIndex:4},{value:"#3863",paraId:8,tocIndex:4},{value:"fix: filterTargetKey only support view collection ",paraId:8,tocIndex:4},{value:"#3872",paraId:8,tocIndex:4},{value:"The following plugins are no longer provided as open-source version (users who have been using them in production environments, please contact us for upgrades):",paraId:9,tocIndex:5},{value:"@nocobase/plugin-auth-cas: Authenticates identity via the CAS protocol.",paraId:10,tocIndex:5},{value:"@nocobase/plugin-auth-odic: Authenticates identity via OIDC (OpenID Connect) protocol.",paraId:10,tocIndex:5},{value:"@nocobase/plugin-auth-saml: Authenticates identity via SAML 2.0.",paraId:10,tocIndex:5},{value:"The following plugins have been deprecated and will be removed in upcoming versions:",paraId:11,tocIndex:5},{value:"@nocobase/plugin-audit-logs: Deprecated, temporarily not removed, won't be installed in the new version.",paraId:12,tocIndex:5},{value:"@nocobase/plugin-snapshot-field: Deprecated, temporarily not removed, won't be installed in the new version.",paraId:12,tocIndex:5},{value:"@nocobase/plugin-charts: Use @nocobase/plugin-data-visualization instead.",paraId:12,tocIndex:5},{value:"@nocobase/plugin-excel-formula-field: Use @nocobase/plugin-field-formula instead.",paraId:12,tocIndex:5},{value:"@nocobase/plugin-math-formula-field: Use @nocobase/plugin-field-formula instead.",paraId:12,tocIndex:5},{value:"@nocobase/plugin-ui-routes-storage: Deprecated, frontend routes can be extended directly in the frontend.",paraId:12,tocIndex:5},{value:"For the complete list of plugins, please refer to: ",paraId:13,tocIndex:5},{value:"https://www.nocobase.com/plugins.html",paraId:13,tocIndex:5},{value:"To provide a better development experience, we've added comments to some special APIs:",paraId:14,tocIndex:6},{value:"@internal",paraId:15,tocIndex:6},{value:": Typically used to identify internal implementation details or methods that are not designed for public use but exist for internal use within the code.",paraId:15,tocIndex:6},{value:"@experimental",paraId:15,tocIndex:6},{value:": Used to identify experimental features or APIs. These APIs are still in development and testing phases, may undergo significant changes, or even be removed or replaced in future versions.",paraId:15,tocIndex:6},{value:"@deprecated",paraId:15,tocIndex:6},{value:": Used to identify deprecated features, methods, or APIs in the code. Although they are still available, they may be removed in future versions, or there may be better alternative solutions available.",paraId:15,tocIndex:6},{value:"NocoBase is dual-licensed under AGPL-3.0 and commercial licenses. For details, please refer to the ",paraId:16,tocIndex:7},{value:"NocoBase License Agreement",paraId:16,tocIndex:7},{value:".",paraId:16,tocIndex:7},{value:"Always backup your database before upgrading! Always backup your database! Always backup your database!",paraId:17,tocIndex:8},{value:"You can also backup the entire project code.",paraId:17,tocIndex:8},{value:"Since the Auth: CAS, Auth: OIDC, Auth: SAML three SSO plugins are removed from the open-source code, the upgrade will be divided into two cases.",paraId:18,tocIndex:8},{value:"Please follow the ",paraId:19,tocIndex:9},{value:"conventional method",paraId:19,tocIndex:9},{value:" for upgrading.",paraId:19,tocIndex:9},{value:"Please follow these steps to upgrade:",paraId:20,tocIndex:10},{value:"Refer to ",paraId:21,tocIndex:11},{value:"NocoBase Upgrade Overview",paraId:22,tocIndex:11},{value:", and upgrade NocoBase to the latest version.",paraId:21,tocIndex:11},{value:"If you previously enabled CAS, OIDC, SAML plugins, you will see the following prompts during the upgrade:",paraId:23,tocIndex:11},{value:"Command line upgrade terminal prompt:",paraId:24,tocIndex:11},{value:"Docker version interface prompt:",paraId:25,tocIndex:11},{value:"If you choose to remove the plugins and continue upgrading:",paraId:26,tocIndex:12},{value:"Remove the plugins according to the prompts",paraId:27,tocIndex:12},{value:`# Main application yarn pm remove cas oidc saml --force # If it's a sub-application, add the --app parameter yarn pm remove cas oidc saml --force --app=sub-app1 @@ -13430,7 +13482,7 @@ yarn pm remove cas oidc saml --force --app=sub-app1 `,paraId:30,tocIndex:12},{value:"If you choose to update the plugins to version 1.0",paraId:31,tocIndex:12},{value:"Contact the NocoBase team to obtain version 1.0 of the plugins and continue with the upgrade.",paraId:32,tocIndex:12},{value:"At this point, the application interface is no longer accessible, so we need to upgrade manually.",paraId:33,tocIndex:13},{value:"Log in with your account at Business User Services Platform to download the latest version of the plugins.",paraId:34,tocIndex:13},{value:`Unzip the plugins to the specified directory `,paraId:34,tocIndex:13},{value:"CAS plugin unzip to ",paraId:35,tocIndex:13},{value:"./storage/plugins/@nocobase/plugin-auth-cas",paraId:35,tocIndex:13},{value:"OIDC plugin unzip to ",paraId:35,tocIndex:13},{value:"./storage/plugins/@nocobase/plugin-auth-oidc",paraId:35,tocIndex:13},{value:"SAML plugin unzip to ",paraId:35,tocIndex:13},{value:"./storage/plugins/@nocobase/plugin-auth-saml",paraId:35,tocIndex:13},{value:`Upgrade the application `,paraId:34,tocIndex:13},{value:"For Docker version, simply restart the container",paraId:36,tocIndex:13},{value:`For source code or create-nocobase-app version -`,paraId:36,tocIndex:13},{value:"Download dependencies ",paraId:37,tocIndex:13},{value:"yarn install",paraId:37,tocIndex:13},{value:"Execute upgrade command ",paraId:37,tocIndex:13},{value:"yarn nocobase upgrade",paraId:37,tocIndex:13},{value:"Restart the application",paraId:37,tocIndex:13}],Eq={},Dq={title:"ResourceManager",toc:"menu",filename:"docs/en-US/api/resourcer/resource-manager.md",lastUpdated:1732240239e3,description:"ResourceManager is the resource management module of NocoBase, used to define resources and register operation methods for resources."},Oq=[{id:"resourcemanager",depth:1,title:"ResourceManager"},{id:"overview",depth:2,title:"Overview"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"define",depth:3,title:"define()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"resourceoptions",depth:5,title:"ResourceOptions"},{id:"actiontype",depth:5,title:"ActionType"},{id:"registeractionhandlers",depth:3,title:"registerActionHandlers()"},{id:"signature-1",depth:4,title:"Signature"},{id:"type-1",depth:4,title:"Type"},{id:"details-1",depth:4,title:"Details"},{id:"isdefined",depth:3,title:"isDefined()"},{id:"signature-2",depth:4,title:"Signature"},{id:"details-2",depth:4,title:"Details"},{id:"import",depth:3,title:"import()"},{id:"signature-3",depth:4,title:"Signature"},{id:"type-2",depth:4,title:"Type"},{id:"details-3",depth:4,title:"Details"},{id:"use",depth:3,title:"use()"},{id:"signature-4",depth:4,title:"Signature"},{id:"details-4",depth:4,title:"Details"},{id:"middleware",depth:3,title:"middleware()"}],Rq=[{value:"ResourceManager",paraId:0,tocIndex:1},{value:" is the resource management module of NocoBase, used to define resources and register operation methods for resources.",paraId:0,tocIndex:1},{value:"define()",paraId:1},{value:"Defines a resource.",paraId:2,tocIndex:3},{value:`app.resourceManager.define({ +`,paraId:36,tocIndex:13},{value:"Download dependencies ",paraId:37,tocIndex:13},{value:"yarn install",paraId:37,tocIndex:13},{value:"Execute upgrade command ",paraId:37,tocIndex:13},{value:"yarn nocobase upgrade",paraId:37,tocIndex:13},{value:"Restart the application",paraId:37,tocIndex:13}],Eq={},Dq={title:"ResourceManager",toc:"menu",filename:"docs/en-US/api/resourcer/resource-manager.md",lastUpdated:173254844e4,description:"ResourceManager is the resource management module of NocoBase, used to define resources and register operation methods for resources."},Oq=[{id:"resourcemanager",depth:1,title:"ResourceManager"},{id:"overview",depth:2,title:"Overview"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"define",depth:3,title:"define()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"resourceoptions",depth:5,title:"ResourceOptions"},{id:"actiontype",depth:5,title:"ActionType"},{id:"registeractionhandlers",depth:3,title:"registerActionHandlers()"},{id:"signature-1",depth:4,title:"Signature"},{id:"type-1",depth:4,title:"Type"},{id:"details-1",depth:4,title:"Details"},{id:"isdefined",depth:3,title:"isDefined()"},{id:"signature-2",depth:4,title:"Signature"},{id:"details-2",depth:4,title:"Details"},{id:"import",depth:3,title:"import()"},{id:"signature-3",depth:4,title:"Signature"},{id:"type-2",depth:4,title:"Type"},{id:"details-3",depth:4,title:"Details"},{id:"use",depth:3,title:"use()"},{id:"signature-4",depth:4,title:"Signature"},{id:"details-4",depth:4,title:"Details"},{id:"middleware",depth:3,title:"middleware()"}],Rq=[{value:"ResourceManager",paraId:0,tocIndex:1},{value:" is the resource management module of NocoBase, used to define resources and register operation methods for resources.",paraId:0,tocIndex:1},{value:"define()",paraId:1},{value:"Defines a resource.",paraId:2,tocIndex:3},{value:`app.resourceManager.define({ name: 'auth', actions: { check: async (ctx, next) => { @@ -13539,12 +13591,12 @@ await resourceManager.import({ await next(); }; }); -`,paraId:30,tocIndex:20},{value:"use(middlewares: HandlerType | HandlerType[], options: ToposortOptions = {})",paraId:31,tocIndex:21},{value:"Refer to ",paraId:32,tocIndex:22},{value:"Middleware",paraId:33,tocIndex:22},{value:".",paraId:32,tocIndex:22},{value:"middleware()",paraId:1},{value:"Middleware for ",paraId:34,tocIndex:23},{value:"ResourceManager",paraId:34,tocIndex:23},{value:", parses request parameters (refer to ",paraId:34,tocIndex:23},{value:"ctx.action",paraId:35,tocIndex:23},{value:") and executes operation methods.",paraId:34,tocIndex:23}],Mq={},Lq={title:"Workbench Block",toc:"menu",filename:"docs/en-US/handbook/block-workbench/index.md",lastUpdated:1732240239e3,description:"It is used for placing various quick actions. Currently, it supports"},Nq=[{id:"workbench-block",depth:1,title:"Workbench Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"action-types",depth:2,title:"Action Types"},{id:"link",depth:3,title:"Link"},{id:"scan-qr-code",depth:3,title:"Scan QR Code"},{id:"popup",depth:3,title:"Popup"},{id:"custom-request",depth:3,title:"Custom request"}],zq=[{value:"It is used for placing various quick actions. Currently, it supports",paraId:0,tocIndex:1},{value:"link",paraId:1,tocIndex:1},{value:"Scan QR code",paraId:2,tocIndex:1},{value:"Popup action",paraId:3,tocIndex:1},{value:"Custom request",paraId:4,tocIndex:1},{value:"The workbench supports the following action types:",paraId:5,tocIndex:2},{value:` +`,paraId:30,tocIndex:20},{value:"use(middlewares: HandlerType | HandlerType[], options: ToposortOptions = {})",paraId:31,tocIndex:21},{value:"Refer to ",paraId:32,tocIndex:22},{value:"Middleware",paraId:33,tocIndex:22},{value:".",paraId:32,tocIndex:22},{value:"middleware()",paraId:1},{value:"Middleware for ",paraId:34,tocIndex:23},{value:"ResourceManager",paraId:34,tocIndex:23},{value:", parses request parameters (refer to ",paraId:34,tocIndex:23},{value:"ctx.action",paraId:35,tocIndex:23},{value:") and executes operation methods.",paraId:34,tocIndex:23}],Mq={},Lq={title:"Workbench Block",toc:"menu",filename:"docs/en-US/handbook/block-workbench/index.md",lastUpdated:173254844e4,description:"It is used for placing various quick actions. Currently, it supports"},Nq=[{id:"workbench-block",depth:1,title:"Workbench Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"action-types",depth:2,title:"Action Types"},{id:"link",depth:3,title:"Link"},{id:"scan-qr-code",depth:3,title:"Scan QR Code"},{id:"popup",depth:3,title:"Popup"},{id:"custom-request",depth:3,title:"Custom request"}],zq=[{value:"It is used for placing various quick actions. Currently, it supports",paraId:0,tocIndex:1},{value:"link",paraId:1,tocIndex:1},{value:"Scan QR code",paraId:2,tocIndex:1},{value:"Popup action",paraId:3,tocIndex:1},{value:"Custom request",paraId:4,tocIndex:1},{value:"The workbench supports the following action types:",paraId:5,tocIndex:2},{value:` `,paraId:6},{value:` `,paraId:6},{value:"Consistent with the configured blocks on the page",paraId:7,tocIndex:5},{value:` `,paraId:6},{value:` - `,paraId:6}],Fq={},Bq={title:"Tree Collection",toc:"menu",filename:"docs/en-US/handbook/collection-tree/index.md",lastUpdated:1732240239e3,description:"A tree structure collection is a data collection design pattern used for organizing hierarchical data. This collection structure mirrors a tree, where each data item may have one or more child items, and those child items can, in turn, have their own descendants."},jq=[{id:"tree-collection",depth:1,title:"Tree Collection"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"}],Hq=[{value:"A tree structure collection is a data collection design pattern used for organizing hierarchical data. This collection structure mirrors a tree, where each data item may have one or more child items, and those child items can, in turn, have their own descendants.",paraId:0,tocIndex:1}],Wq={},$q={title:"Database view",toc:"menu",filename:"docs/en-US/handbook/collection-view/index.md",lastUpdated:1732240239e3},Gq=[{id:"database-view",depth:1,title:"Database view"},{id:"introduction",depth:2,title:"Introduction"},{id:"manu-book",depth:2,title:"Manu book"}],Vq=[],Kq={},Zq={title:"Many-to-Many (Array)",toc:"menu",filename:"docs/en-US/handbook/field-m2m-array/index.md",lastUpdated:1732240239e3,description:"This feature allows you to use array fields in a data Collection to store multiple unique keys from the target table, thereby creating a many-to-many relationship between the two tables. For instance, consider the entities Articles and Tags. An article can be linked to multiple tags, with the article table storing the IDs of the corresponding records from the tags table in an array field."},Yq=[{id:"many-to-many-array",depth:1,title:"Many-to-Many (Array)"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:3,title:"Field Configuration"},{id:"parameter-description",depth:2,title:"Parameter Description"},{id:"source-collection",depth:3,title:"Source Collection"},{id:"target-collection",depth:3,title:"Target Collection"},{id:"foreign-key",depth:3,title:"Foreign Key"},{id:"target-key",depth:3,title:"Target Key"}],Qq=[{value:"This feature allows you to use array fields in a data Collection to store multiple unique keys from the target table, thereby creating a many-to-many relationship between the two tables. For instance, consider the entities Articles and Tags. An article can be linked to multiple tags, with the article table storing the IDs of the corresponding records from the tags table in an array field.",paraId:0,tocIndex:1},{value:"Whenever possible, it's recommended to use a junction Collection to establish a standard ",paraId:1},{value:"many-to-many",paraId:2},{value:" relationship instead of relying on this method.",paraId:1},{value:"Currently, only PostgreSQL supports filtering source Collection data using fields from the target table for many-to-many relationships established with array fields. For example, in the scenario above, you can filter articles based on other fields in the tags table, such as the title.",paraId:1},{value:"The source Collection, where the current field resides.",paraId:3,tocIndex:4},{value:"The target Collection with which the relationship is established.",paraId:4,tocIndex:5},{value:"The array field in the source Collection that stores the target key from the target table.",paraId:5,tocIndex:6},{value:"The corresponding relationships for array field types are as follows:",paraId:6,tocIndex:6},{value:"NocoBase",paraId:7,tocIndex:6},{value:"PostgreSQL",paraId:7,tocIndex:6},{value:"MySQL",paraId:7,tocIndex:6},{value:"SQLite",paraId:7,tocIndex:6},{value:"set",paraId:7,tocIndex:6},{value:"array",paraId:7,tocIndex:6},{value:"JSON",paraId:7,tocIndex:6},{value:"JSON",paraId:7,tocIndex:6},{value:"The field in the target Collection that corresponds to the values stored in the source table's array field. This field must be unique.",paraId:8,tocIndex:7}],Jq={},Xq={title:"Amazon S3",toc:"menu",filename:"docs/en-US/handbook/file-storage-s3/index.md",lastUpdated:1732240239e3},eE=[{id:"amazon-s3",depth:1,title:"Amazon S3"},{id:"introduction",depth:2,title:"Introduction"},{id:"hand-book",depth:2,title:"Hand book"}],aE=[],tE={},nE={title:"System Settings",toc:"menu",filename:"docs/en-US/handbook/system-settings/index.md",lastUpdated:1732240239e3,description:"To set the global information of the system, such as system name, main LOGO, enabled language, etc."},oE=[{id:"system-settings",depth:1,title:"System Settings"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"}],rE=[{value:"To set the global information of the system, such as system name, main LOGO, enabled language, etc.",paraId:0,tocIndex:1}],dE={},iE={title:"\u5B57\u7B26\u4E32\u6A21\u677F",toc:"menu",filename:"docs/en-US/handbook/template-string/index.md",lastUpdated:1732240239e3},lE=[{id:"\u5B57\u7B26\u4E32\u6A21\u677F",depth:1,title:"\u5B57\u7B26\u4E32\u6A21\u677F"}],cE=[],sE={},uE={title:"Edit",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/edit.md",lastUpdated:1732240239e3,description:"The edit function is part of the row actions, with the current record serving as its context. It opens in a popup window, allowing users to configure and customize various blocks as needed."},pE=[{id:"edit",depth:1,title:"Edit"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"},{id:"linkage-rules",depth:3,title:"Linkage Rules"}],IE=[{value:"The edit function is part of the row actions, with the current record serving as its context. It opens in a popup window, allowing users to configure and customize various blocks as needed.",paraId:0,tocIndex:1},{value:"Configure data blocks according to your requirements.",paraId:1,tocIndex:1},{value:"Example: Editing is disabled for orders that have been received.",paraId:2,tocIndex:3},{value:"For more information, see ",paraId:3,tocIndex:3},{value:"Linkage Rule",paraId:4,tocIndex:3},{value:".",paraId:3,tocIndex:3},{value:"Edit Button",paraId:5,tocIndex:3},{value:": Customize the title, color, and icon of the edit button.",paraId:6,tocIndex:3},{value:"Open Mode",paraId:7,tocIndex:3},{value:": Choose between Pop-up or Drawer.",paraId:6,tocIndex:3},{value:"Popup Size",paraId:8,tocIndex:3},{value:": The default size is Middle (available sizes: Large/Middle/Small).",paraId:6,tocIndex:3}],_E={},vE={title:"Link",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/link.md",lastUpdated:1732240239e3,description:"The link operation, which functions via route navigation, supports the passing of variables. The target page can dynamically adjust its content based on the provided data, making it configurable for use within data blocks."},mE=[{id:"link",depth:1,title:"Link"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration",depth:2,title:"Operation Configuration"},{id:"edit-link",depth:3,title:"Edit Link"},{id:"usage-scenarios",depth:3,title:"Usage Scenarios"},{id:"open-in-new-window",depth:3,title:"Open in New Window"}],hE=[{value:"The link operation, which functions via route navigation, supports the passing of variables. The target page can dynamically adjust its content based on the provided data, making it configurable for use within data blocks.",paraId:0,tocIndex:1},{value:`Example: The author and article tables have a one-to-many relationship. In the author table, you can configure the "View posts" link operation. By clicking this link, the author's ID is passed as a parameter to the article table, allowing the target page to filter the articles based on the specified author's ID.`,paraId:1,tocIndex:4},{value:'When the "Open in new window" option is selected, the link will open in a new window.',paraId:2,tocIndex:5},{value:"Here is a complete configuration example:",paraId:3,tocIndex:5},{value:"Edit Button",paraId:4,tocIndex:5},{value:": Customize the button's title, color, and icon.",paraId:5,tocIndex:5},{value:"Linkage Rule",paraId:6,tocIndex:5},{value:": Dynamically control the button's state.",paraId:5,tocIndex:5}],fE={},xE={title:"View",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/view.md",lastUpdated:1732240239e3,description:'The "View" operation is a row-level button, utilizing the current record as its context. Displayed within a pop-up window, it offers users the ability to customize configuration blocks, enhancing flexibility in the interface.'},gE=[{id:"view",depth:1,title:"View"},{id:"overview",depth:2,title:"Overview"},{id:"operation-configuration-items",depth:3,title:"Operation Configuration Items"}],bE=[{value:'The "View" operation is a row-level button, utilizing the current record as its context. Displayed within a pop-up window, it offers users the ability to customize configuration blocks, enhancing flexibility in the interface.',paraId:0,tocIndex:1},{value:"Edit Button",paraId:1,tocIndex:2},{value:"Linkage Rule",paraId:2,tocIndex:2},{value:"Open Mode",paraId:3,tocIndex:2},{value:"Popup Size",paraId:4,tocIndex:2}],yE={},wE={title:"Create record",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/create.md",lastUpdated:1732240239e3,description:"Used to add a new row of data to a specific collection."},kE=[{id:"create-record",depth:1,title:"Create record"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"collection",depth:3,title:"Collection"},{id:"field-values",depth:3,title:"Field Values"},{id:"preload-related-data",depth:3,title:"Preload Related Data"},{id:"example",depth:2,title:"Example"}],SE=[{value:"Used to add a new row of data to a specific collection.",paraId:0,tocIndex:0},{value:"The field values \u200B\u200Bof the new record can use variables from the workflow context. Assigning values to association fields can directly reference the corresponding data variables in the context, which can be objects or foreign key values. If variables are not used, you need to manually enter the values \u200B\u200Bof the foreign keys, and for multiple association fields, multiple foreign key values \u200B\u200Bneed to be separated by commas.",paraId:1,tocIndex:0},{value:'In the workflow configuration UI, click the plus ("+") button in the flow to add a "Create record" node:',paraId:2,tocIndex:1},{value:"Select the collection to which the new record will be added.",paraId:3,tocIndex:3},{value:"Assign values \u200B\u200Bto the fields of the collection. Variables from the workflow context can be used, or static values \u200B\u200Bcan be manually entered.",paraId:4,tocIndex:4},{value:'Record added by the create node in the workflow will not automatically handle fields such as "Creator" and "Last Modifier", and you need to configure the values \u200B\u200Bof these two fields according to the situation.',paraId:5},{value:"If the fields of the new record include association fields, and you want to use the corresponding related data in subsequent workflows, you can check the corresponding association fields in the preload configuration. In this way, after adding the new record, the corresponding association data will be automatically loaded and stored together in the result data of the node.",paraId:6,tocIndex:5},{value:'For example, when a record is added or updated in the "Posts" collection, it is required to automatically add a "Post Versions" row to record the change history of the post. This can be achieved using the create node:',paraId:7,tocIndex:6},{value:'With this configuration enabled, when data changes in the "Posts" collection, a "Post Version" row will be automatically added to record the change history of the article.',paraId:8,tocIndex:6}],UE={},PE={title:"Manual Process",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/manual.md",lastUpdated:1732240239e3,description:'In the workflow configuration interface, click the plus (\u201C+\u201D) button within the process to add a "Manual" node:'},TE=[{id:"manual-process",depth:1,title:"Manual Process"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"configuring-the-node",depth:2,title:"Configuring the Node"},{id:"assignees",depth:3,title:"Assignees"},{id:"configuring-the-user-interface",depth:3,title:"Configuring the User Interface"},{id:"tabs",depth:4,title:"Tabs"},{id:"blocks",depth:4,title:"Blocks"},{id:"data-blocks",depth:5,title:"Data Blocks"},{id:"form-blocks",depth:5,title:"Form Blocks"},{id:"related-content",depth:2,title:"Related Content"}],CE=[{value:'In the workflow configuration interface, click the plus (\u201C+\u201D) button within the process to add a "Manual" node:',paraId:0,tocIndex:1},{value:"A manual node requires assigning a user who will be responsible for executing the pending task. You can add a list of pending tasks when setting up blocks on the page. Additionally, the content of each node's task pop-up window needs to be configured within the node\u2019s interface.",paraId:1,tocIndex:3},{value:"You can either select a specific user or use variables to choose the primary or foreign key of user data from the context.",paraId:2,tocIndex:3},{value:"At present, the assignee option for manual nodes does not support multi-user processing, though this feature is planned for future versions.",paraId:3},{value:"The interface setup for the to-do list is central to configuring the manual node. By clicking the \u201CConfigure\u201D button, you can open a separate pop-up window for configuration. This interface works like a regular page, allowing you to design it using a WYSIWYG (What You See Is What You Get) editor:",paraId:4,tocIndex:4},{value:"Tabs can be utilized to differentiate between various content types. For example, one tab might be used for approved form submissions, another for rejected submissions, or you might use them to display details of related data. These tabs can be configured freely according to your needs.",paraId:5,tocIndex:5},{value:"The blocks you can use primarily fall into two categories: Data Blocks and Form Blocks. In addition, Markdown blocks are available for informational prompts and other static content.",paraId:6,tocIndex:6},{value:"Data blocks allow you to display information from triggers or the results of any node processing, providing necessary context for the task assignee. For example, if the workflow is triggered by a form event, a data block can be created to show the details of the triggered data. This setup is similar to configuring details on a regular page, where you can select any fields from the triggered data for display:",paraId:7,tocIndex:7},{value:"Similarly, node data blocks can be configured to display data results from upstream nodes as reference information for the task assignee. For example, if an upstream calculation node generates results, these can be displayed as contextual data:",paraId:8,tocIndex:7},{value:"Since the workflow is in a non-executing state during interface configuration, data blocks won\u2019t display specific data. The relevant data will only appear in the to-do pop-up interface once the workflow is triggered and executed.",paraId:9},{value:"Form blocks are crucial in the to-do interface, as they determine whether the workflow continues. Failing to configure a form block will cause the workflow to halt. There are three types of form blocks available:",paraId:10,tocIndex:8},{value:"Custom Form",paraId:11,tocIndex:8},{value:"Create record form",paraId:11,tocIndex:8},{value:"Update record form",paraId:11,tocIndex:8},{value:"For Create record forms and Update record forms, you'll need to select the data table they are based on. When the assignee submits the form, the values entered will be used to add or update data in the selected table. The Custom Form allows you to create a temporary form not linked to any data table, with the submitted values available for use in subsequent nodes.",paraId:12,tocIndex:8},{value:"You can configure the form submission button with one of three options:",paraId:13,tocIndex:8},{value:"Continue the process",paraId:14,tocIndex:8},{value:"Terminate the process",paraId:14,tocIndex:8},{value:"Save temporarily",paraId:14,tocIndex:8},{value:'These three button options correspond to different node states in the workflow: "Complete," "Reject," or "Waiting." At least one of the first two options must be configured to determine how the workflow proceeds.',paraId:15,tocIndex:8},{value:'On the "Continue the process" button, you can configure specific values for form fields:',paraId:16,tocIndex:8},{value:'In the pop-up window, you can assign values to any field in the form. Once the form is submitted, these values will be used as the final values for those fields. This feature is particularly useful when reviewing data. You can configure multiple "Continue the process" buttons in the form, each setting different enumeration values for similar fields, allowing the workflow to continue with varying outcomes based on these values.',paraId:17,tocIndex:8},{value:"Except for node configuration, there are also some related contents about manual process that can be further understood through the ",paraId:18,tocIndex:9},{value:"plugin documentation",paraId:19,tocIndex:9},{value:".",paraId:18,tocIndex:9}],AE={},qE={title:"Update Record",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/update.md",lastUpdated:1732240239e3,description:"Used to update data records that meet certain conditions in a collection."},EE=[{id:"update-record",depth:1,title:"Update Record"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"collection",depth:3,title:"Collection"},{id:"update-mode",depth:3,title:"Update Mode"},{id:"filter-conditions",depth:3,title:"Filter Conditions"},{id:"field-values",depth:3,title:"Field Values"},{id:"example",depth:2,title:"Example"}],DE=[{value:"Used to update data records that meet certain conditions in a collection.",paraId:0,tocIndex:0},{value:'The collection and field assignment sections are the same as in the "Create Record" node. The main difference between "Update Record" node and "Create record" node is the filter conditions, and the need to select an update mode. In addition, the update node will return the number of rows of successfully updated data, which can only be viewed in the execution history and cannot be used as a variable in subsequent nodes.',paraId:1,tocIndex:0},{value:'In the workflow configuration UI, click the plus ("+") button in the workflow and add an "Update Record" node:',paraId:2,tocIndex:1},{value:"Select the collection to update record in.",paraId:3,tocIndex:3},{value:'There are "Batch" and "Individual" modes for updating. In batch mode, each record updating will not trigger the collection events; whereas, in individual mode, each record updating could trigger the collection events. However, there may be performance issues with individual updates, especially with large amounts of data, so use with caution. Typically, choose based on the target data to be updated and whether other workflow events need to be triggered. If updating a single data record based on a primary key, it is recommended to use individual updates; if updating multiple data records based on conditions, it is recommended to use batch updates.',paraId:4,tocIndex:4},{value:"Similar to the filter conditions when querying a normal collection, you can use context variables of the workflow.",paraId:5,tocIndex:5},{value:'Similar to the field assignment in the "Create Record" node, you can use variables from the workflow context or manually enter static values.',paraId:6,tocIndex:6},{value:'Note: The update node in the workflow does not automatically handle the "Last Modified By" data; you need to configure the value of this field based on the situation.',paraId:7,tocIndex:6},{value:'For example, when a "Post" created, the "Post Category" collection needs to be automatically updated with the "Post Count" field. This can be achieved using an update node:',paraId:8,tocIndex:7},{value:'When the workflow is triggered, the "Post Count" field in the "Post Category" collection will automatically be updated to the current post count +1.',paraId:9,tocIndex:7}],OE={},RE={title:"Todo Block",toc:"menu",filename:"docs/en-US/handbook/workflow-manual/block.md",lastUpdated:1732240239e3,description:"To facilitate manual processing, a todo list should be added to the page. This list will display tasks that require attention, allowing relevant personnel to easily access and manage specific tasks within the manual node."},ME=[{id:"todo-block",depth:1,title:"Todo Block"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"todo-details",depth:2,title:"Todo Details"}],LE=[{value:"To facilitate manual processing, a todo list should be added to the page. This list will display tasks that require attention, allowing relevant personnel to easily access and manage specific tasks within the manual node.",paraId:0,tocIndex:0},{value:'To add a todo list block, select "Workflow Todo" from the available blocks on the page:',paraId:1,tocIndex:1},{value:"Here is an example of a todo list block:",paraId:2,tocIndex:1},{value:"Personnel can click on the relevant todo task to open a pop-up window for manual processing:",paraId:3,tocIndex:2}],NE={},zE={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow-manual/index.md",lastUpdated:1732240239e3,description:"When a business process cannot be fully automated, a manual node can be implemented to transfer part of the decision-making authority to a human operator."},FE=[{id:"overview",depth:1,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"}],BE=[{value:"When a business process cannot be fully automated, a manual node can be implemented to transfer part of the decision-making authority to a human operator.",paraId:0},{value:"Upon reaching a manual node, the process will pause and generate a task for the assigned user. Based on the status selected by the user during submission, the process will either resume, remain on hold, or be terminated. This functionality is particularly valuable in scenarios requiring process approval.",paraId:1},{value:"This is a built-in plugin, requiring no installation.",paraId:2,tocIndex:1},{value:"The use of manual nodes is divided into two parts:",paraId:3,tocIndex:2},{value:"Node Configuration",paraId:4,tocIndex:2},{value:"ToDo Block",paraId:5,tocIndex:2},{value:"For further insight into practical applications, you can refer to the ",paraId:6,tocIndex:2},{value:"Examples",paraId:7,tocIndex:2},{value:" section.",paraId:6,tocIndex:2}],jE={},HE={title:"\u57FA\u672C\u7C7B\u578B",toc:"menu",filename:"docs/en-US/manual/collection/fields/basic.md",lastUpdated:1732240239e3},WE=[{id:"\u57FA\u672C\u7C7B\u578B",depth:1,title:"\u57FA\u672C\u7C7B\u578B"}],$E=[{value:"Single line text",paraId:0,tocIndex:0},{value:"Username",paraId:0,tocIndex:0},{value:"Long text",paraId:0,tocIndex:0},{value:"Phone",paraId:0,tocIndex:0},{value:"Email",paraId:0,tocIndex:0},{value:"URL",paraId:0,tocIndex:0},{value:"Integer",paraId:0,tocIndex:0},{value:"Number",paraId:0,tocIndex:0},{value:"Percent",paraId:0,tocIndex:0},{value:"Password",paraId:0,tocIndex:0},{value:"Color",paraId:0,tocIndex:0},{value:"Icon",paraId:0,tocIndex:0}],GE={},VE={title:"Overview",toc:"menu",filename:"docs/en-US/manual/collection/fields/index.md",lastUpdated:1732240239e3},KE=[{id:"overview",depth:1,title:"Overview"}],ZE=[],YE={},QE={title:"\u591A\u5A92\u4F53",toc:"menu",filename:"docs/en-US/manual/collection/fields/media.md",lastUpdated:1732240239e3},JE=[{id:"\u591A\u5A92\u4F53",depth:1,title:"\u591A\u5A92\u4F53"}],XE=[{value:"Markdown",paraId:0,tocIndex:0},{value:"Rich Text",paraId:0,tocIndex:0},{value:"Attachment",paraId:0,tocIndex:0}],eD={},aD={title:"Aliyun OSS",toc:"menu",filename:"docs/en-US/manual/file-manager/aliyun-oss.md",lastUpdated:1732240239e3},tD=[{id:"aliyun-oss",depth:1,title:"Aliyun OSS"}],nD=[],oD={},rD={title:"\u5E76\u884C\u5206\u652F",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/parallel.md",lastUpdated:1732240239e3,description:"\u5E76\u884C\u5206\u652F\u8282\u70B9\u53EF\u4EE5\u5C06\u6D41\u7A0B\u5206\u4E3A\u591A\u4E2A\u5206\u652F\uFF0C\u6BCF\u4E2A\u5206\u652F\u53EF\u4EE5\u914D\u7F6E\u4E0D\u540C\u7684\u8282\u70B9\uFF0C\u6839\u636E\u5206\u652F\u7684\u6A21\u5F0F\u4E0D\u540C\uFF0C\u5206\u652F\u7684\u6267\u884C\u65B9\u5F0F\u4E5F\u4E0D\u540C\u3002\u5728\u9700\u8981\u5728\u540C\u65F6\u6267\u884C\u591A\u4E2A\u64CD\u4F5C\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5E76\u884C\u5206\u652F\u8282\u70B9\u3002"},dD=[{id:"\u5E76\u884C\u5206\u652F",depth:1,title:"\u5E76\u884C\u5206\u652F"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u5206\u652F\u6A21\u5F0F",depth:3,title:"\u5206\u652F\u6A21\u5F0F"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],iD=[{value:"\u5E76\u884C\u5206\u652F\u8282\u70B9\u53EF\u4EE5\u5C06\u6D41\u7A0B\u5206\u4E3A\u591A\u4E2A\u5206\u652F\uFF0C\u6BCF\u4E2A\u5206\u652F\u53EF\u4EE5\u914D\u7F6E\u4E0D\u540C\u7684\u8282\u70B9\uFF0C\u6839\u636E\u5206\u652F\u7684\u6A21\u5F0F\u4E0D\u540C\uFF0C\u5206\u652F\u7684\u6267\u884C\u65B9\u5F0F\u4E5F\u4E0D\u540C\u3002\u5728\u9700\u8981\u5728\u540C\u65F6\u6267\u884C\u591A\u4E2A\u64CD\u4F5C\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5E76\u884C\u5206\u652F\u8282\u70B9\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5E76\u884C\u5206\u652F\u201D\u8282\u70B9\uFF1A",paraId:1,tocIndex:1},{value:"\u5728\u6D41\u7A0B\u4E2D\u589E\u52A0\u5E76\u884C\u5206\u652F\u8282\u70B9\u540E\uFF0C\u4F1A\u9ED8\u8BA4\u589E\u52A0\u4E24\u4E2A\u5B50\u5206\u652F\uFF0C\u540C\u65F6\u4E5F\u53EF\u4EE5\u70B9\u51FB\u589E\u52A0\u5206\u652F\u7684\u6309\u94AE\u589E\u52A0\u4EFB\u610F\u591A\u4E2A\u5206\u652F\uFF0C\u6BCF\u4E2A\u5206\u652F\u90FD\u53EF\u4EE5\u589E\u52A0\u4EFB\u610F\u7684\u8282\u70B9\uFF0C\u4E0D\u9700\u8981\u7684\u5206\u652F\u53EF\u4EE5\u70B9\u51FB\u5206\u652F\u5F00\u59CB\u5904\u7684\u5220\u9664\u6309\u94AE\u5220\u9664\u3002",paraId:2,tocIndex:1},{value:"\u5E76\u884C\u5206\u652F\u8282\u70B9\u6709\u4EE5\u4E0B\u4E09\u79CD\u6A21\u5F0F\uFF1A",paraId:3,tocIndex:3},{value:"\u5168\u90E8\u6210\u529F",paraId:4,tocIndex:3},{value:"\uFF1A\u6240\u6709\u5206\u652F\u90FD\u6267\u884C\u6210\u529F\uFF0C\u6D41\u7A0B\u624D\u4F1A\u7EE7\u7EED\u6267\u884C\u5206\u652F\u7ED3\u675F\u540E\u7684\u8282\u70B9\u3002\u5426\u5219\u4EFB\u610F\u5206\u652F\u63D0\u524D\u7EC8\u6B62\uFF0C\u65E0\u8BBA\u662F\u5931\u8D25\u3001\u51FA\u9519\u8FD8\u662F\u5176\u4ED6\u975E\u6210\u529F\u72B6\u6001\uFF0C\u90FD\u5BFC\u81F4\u6574\u4E2A\u5E76\u884C\u5206\u652F\u8282\u70B9\u4EE5\u8BE5\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\uFF0C\u4E5F\u79F0\u4F5C\u201CAll \u6A21\u5F0F\u201D\u3002",paraId:4,tocIndex:3},{value:"\u4EFB\u610F\u6210\u529F",paraId:4,tocIndex:3},{value:"\uFF1A\u4EFB\u610F\u5206\u652F\u6267\u884C\u6210\u529F\uFF0C\u6D41\u7A0B\u5C31\u4F1A\u7EE7\u7EED\u6267\u884C\u5206\u652F\u7ED3\u675F\u540E\u7684\u8282\u70B9\u3002\u9664\u975E\u6240\u6709\u5206\u652F\u90FD\u63D0\u524D\u7EC8\u6B62\uFF0C\u65E0\u8BBA\u662F\u5931\u8D25\u3001\u51FA\u9519\u8FD8\u662F\u5176\u4ED6\u975E\u6210\u529F\u72B6\u6001\uFF0C\u624D\u4F1A\u5BFC\u81F4\u6574\u4E2A\u5E76\u884C\u5206\u652F\u8282\u70B9\u4EE5\u8BE5\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\uFF0C\u4E5F\u79F0\u4F5C\u201CAny \u6A21\u5F0F\u201D\u3002",paraId:4,tocIndex:3},{value:"\u4EFB\u610F\u6210\u529F\u548C\u5931\u8D25",paraId:4,tocIndex:3},{value:"\uFF1A\u4EFB\u610F\u5206\u652F\u6267\u884C\u6210\u529F\u540E\u6D41\u7A0B\u5C31\u4F1A\u7EE7\u7EED\u6267\u884C\u5206\u652F\u7ED3\u675F\u540E\u7684\u8282\u70B9\uFF0C\u4F46\u4EFB\u610F\u8282\u70B9\u5931\u8D25\u540E\uFF0C\u4F1A\u5BFC\u81F4\u6574\u4E2A\u5E76\u884C\u4EE5\u8BE5\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\uFF0C\u4E5F\u79F0\u4F5C\u201CRace \u6A21\u5F0F\u201D\u3002",paraId:4,tocIndex:3},{value:"\u4E0D\u8BBA\u54EA\u79CD\u6A21\u5F0F\uFF0C\u90FD\u4F1A\u4ECE\u5DE6\u5230\u53F3\u4F9D\u6B21\u5C1D\u8BD5\u6267\u884C\u6BCF\u4E2A\u5206\u652F\uFF0C\u76F4\u5230\u6EE1\u8DB3\u5206\u652F\u9884\u8BBE\u6A21\u5F0F\u7684\u76F8\u5173\u6761\u4EF6\u540E\uFF0C\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u8282\u70B9\u6216\u63D0\u524D\u9000\u51FA\u3002",paraId:5,tocIndex:3},{value:"\u53C2\u8003 ",paraId:6,tocIndex:4},{value:"\u5EF6\u65F6\u8282\u70B9",paraId:7,tocIndex:4},{value:" \u4E2D\u7684\u4F8B\u5B50\u3002",paraId:6,tocIndex:4}],lD={},cD={title:"\u6982\u8FF0",toc:"menu",filename:"docs/en-US/manual/workflow/triggers/index.md",lastUpdated:1732240239e3,description:"\u89E6\u53D1\u5668\u662F\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5165\u53E3\uFF0C\u5F53\u5E94\u7528\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u6EE1\u8DB3\u89E6\u53D1\u5668\u6761\u4EF6\u7684\u4E8B\u4EF6\u4EA7\u751F\u65F6\uFF0C\u5DE5\u4F5C\u6D41\u5C06\u4F1A\u88AB\u89E6\u53D1\u6267\u884C\u3002\u89E6\u53D1\u5668\u7684\u7C7B\u578B\u4E5F\u5C31\u662F\u5DE5\u4F5C\u6D41\u7684\u7C7B\u578B\uFF0C\u5728\u521B\u5EFA\u5DE5\u4F5C\u6D41\u65F6\u9009\u62E9\uFF0C\u521B\u5EFA\u540E\u4E0D\u53EF\u4FEE\u6539\u3002\u76EE\u524D\u5185\u7F6E\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u5982\u4E0B\uFF1A"},sD=[{id:"\u6982\u8FF0",depth:1,title:"\u6982\u8FF0"}],uD=[{value:"\u89E6\u53D1\u5668\u662F\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5165\u53E3\uFF0C\u5F53\u5E94\u7528\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u6EE1\u8DB3\u89E6\u53D1\u5668\u6761\u4EF6\u7684\u4E8B\u4EF6\u4EA7\u751F\u65F6\uFF0C\u5DE5\u4F5C\u6D41\u5C06\u4F1A\u88AB\u89E6\u53D1\u6267\u884C\u3002\u89E6\u53D1\u5668\u7684\u7C7B\u578B\u4E5F\u5C31\u662F\u5DE5\u4F5C\u6D41\u7684\u7C7B\u578B\uFF0C\u5728\u521B\u5EFA\u5DE5\u4F5C\u6D41\u65F6\u9009\u62E9\uFF0C\u521B\u5EFA\u540E\u4E0D\u53EF\u4FEE\u6539\u3002\u76EE\u524D\u5185\u7F6E\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u5982\u4E0B\uFF1A",paraId:0,tocIndex:0},{value:"\u8868\u5355\u4E8B\u4EF6",paraId:1,tocIndex:0},{value:"\u6570\u636E\u8868\u4E8B\u4EF6",paraId:1,tocIndex:0},{value:"\u5B9A\u65F6\u4EFB\u52A1",paraId:1,tocIndex:0},{value:"\u6BD4\u5982\u7528\u6237\u63D0\u4EA4\u4E00\u4E2A\u8868\u5355\uFF0C\u6216\u8005\u6570\u636E\u8868\u4E2D\u7684\u6570\u636E\u7531\u4E8E\u7528\u6237\u64CD\u4F5C\u6216\u7A0B\u5E8F\u8C03\u7528\u53D1\u751F\u53D8\u5316\uFF0C\u6216\u8005\u5B9A\u65F6\u4EFB\u52A1\u5230\u8FBE\u6267\u884C\u65F6\u95F4\uFF0C\u90FD\u4F1A\u89E6\u53D1\u5BF9\u5E94\u7684\u5DE5\u4F5C\u6D41\u6267\u884C\u3002",paraId:2,tocIndex:0},{value:"\u4E0E\u6570\u636E\u6709\u5173\u7684\u89E6\u53D1\u5668\uFF08\u5982\u8868\u5355\u3001\u6570\u636E\u8868\u4E8B\u4EF6\uFF09\u901A\u5E38\u4F1A\u643A\u5E26\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u8FD9\u4E9B\u6570\u636E\u53EF\u4EE5\u5728\u5DE5\u4F5C\u6D41\u7684\u8282\u70B9\u4E2D\u88AB\u5F15\u7528\uFF0C\u7528\u4EE5\u5B9E\u73B0\u6570\u636E\u7684\u81EA\u52A8\u5316\u5904\u7406\u3002\u4F8B\u5982\u5F53\u7528\u6237\u63D0\u4EA4\u4E00\u4E2A\u7ED1\u5B9A\u4E86\u5DE5\u4F5C\u6D41\u7684\u8868\u5355\u65F6\uFF0C\u8868\u5355\u63D0\u4EA4\u7684\u6570\u636E\u4F1A\u88AB\u6CE8\u5165\u5230\u6267\u884C\u8BA1\u5212\u7684\u4E0A\u4E0B\u6587\u73AF\u5883\u4E2D\uFF0C\u4EE5\u4F9B\u540E\u7EED\u8282\u70B9\u4F5C\u4E3A\u53D8\u91CF\u4F7F\u7528\u3002",paraId:3,tocIndex:0},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\u4EE5\u540E\uFF0C\u5728\u5DE5\u4F5C\u6D41\u67E5\u770B\u9875\u9762\u4E2D\uFF0C\u89E6\u53D1\u5668\u4F1A\u4EE5\u5165\u53E3\u8282\u70B9\u7684\u6837\u5F0F\u663E\u793A\u5728\u6D41\u7A0B\u7684\u5F00\u59CB\u4F4D\u7F6E\uFF0C\u70B9\u51FB\u8BE5\u5361\u7247\u5373\u53EF\u6253\u5F00\u914D\u7F6E\u5F39\u7A97\u3002\u6839\u636E\u89E6\u53D1\u5668\u7684\u7C7B\u578B\u4E0D\u540C\uFF0C\u53EF\u4EE5\u914D\u7F6E\u89E6\u53D1\u5668\u7684\u76F8\u5173\u6761\u4EF6\u3002",paraId:4,tocIndex:0},{value:` - `,paraId:5}],pD={},ID={title:"Field Interface",toc:"menu",filename:"docs/en-US/plugin-samples/field/interface.md",lastUpdated:1732240239e3,description:"\u524D\u9762\u5DF2\u7ECF\u4ECB\u7ECD\u4E86\u57FA\u4E8E\u5DF2\u6709\u7684 Field interface \u589E\u52A0\u7EC4\u4EF6\u7C7B\u578B\u7684\u65B9\u5F0F\u5B9E\u73B0\u5B57\u6BB5\u7EC4\u4EF6\u7684\u66FF\u6362\uFF0C\u4F46\u662F\u67D0\u4E9B\u573A\u666F\u4E0B\u65B0\u589E\u7684\u7EC4\u4EF6\u4E0D\u5C5E\u4E8E\u5DF2\u6709\u7684 Field interface\uFF0C\u8FD9\u65F6\u5019\u6211\u4EEC\u5C31\u9700\u8981\u81EA\u5B9A\u4E49 Field interface\u3002"},_D=[{id:"field-interface",depth:1,title:"Field Interface"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u6587\u6863\u77E5\u8BC6\u548C\u76EE\u5F55\u7ED3\u6784",depth:2,title:"\u6587\u6863\u77E5\u8BC6\u548C\u76EE\u5F55\u7ED3\u6784"},{id:"\u524D\u7AEF\u5B9E\u73B0",depth:2,title:"\u524D\u7AEF\u5B9E\u73B0"},{id:"1-\u7EC4\u4EF6",depth:3,title:"1. \u7EC4\u4EF6"},{id:"2-field-interface",depth:3,title:"2. Field Interface"},{id:"21-\u5B9A\u4E49",depth:4,title:"2.1 \u5B9A\u4E49"},{id:"22-\u6CE8\u518C",depth:4,title:"2.2 \u6CE8\u518C"},{id:"\u540E\u7AEF\u5B9E\u73B0",depth:2,title:"\u540E\u7AEF\u5B9E\u73B0"},{id:"1-\u5B9E\u73B0\u52A0\u89E3\u5BC6",depth:3,title:"1. \u5B9E\u73B0\u52A0\u89E3\u5BC6"},{id:"2-\u5B9E\u73B0-field",depth:3,title:"2. \u5B9E\u73B0 Field"},{id:"21-\u5B9A\u4E49-1",depth:4,title:"2.1 \u5B9A\u4E49"},{id:"22-\u6CE8\u518C-1",depth:4,title:"2.2 \u6CE8\u518C"},{id:"3-\u5B9E\u73B0\u64CD\u4F5C\u7B26",depth:3,title:"3. \u5B9E\u73B0\u64CD\u4F5C\u7B26"},{id:"31-\u5B9A\u4E49",depth:4,title:"3.1 \u5B9A\u4E49"},{id:"311-\u5C01\u88C5\u516C\u5171\u65B9\u6CD5",depth:5,title:"3.1.1 \u5C01\u88C5\u516C\u5171\u65B9\u6CD5"},{id:"312-\u5B9E\u73B0-encryptioneq",depth:5,title:"3.1.2 \u5B9E\u73B0 $encryptionEq"},{id:"313-\u5B9E\u73B0-encryptionne",depth:5,title:"3.1.3 \u5B9E\u73B0 $encryptionNe"},{id:"32-\u6CE8\u518C\u64CD\u4F5C\u7B26",depth:4,title:"3.2 \u6CE8\u518C\u64CD\u4F5C\u7B26"},{id:"\u591A\u8BED\u8A00",depth:2,title:"\u591A\u8BED\u8A00"},{id:"\u82F1\u8BED",depth:3,title:"\u82F1\u8BED"},{id:"\u4E2D\u6587",depth:3,title:"\u4E2D\u6587"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],vD=[{value:"\u524D\u9762\u5DF2\u7ECF\u4ECB\u7ECD\u4E86\u57FA\u4E8E\u5DF2\u6709\u7684 ",paraId:0,tocIndex:0},{value:"Field interface",paraId:0,tocIndex:0},{value:" \u589E\u52A0\u7EC4\u4EF6\u7C7B\u578B\u7684\u65B9\u5F0F\u5B9E\u73B0\u5B57\u6BB5\u7EC4\u4EF6\u7684\u66FF\u6362\uFF0C\u4F46\u662F\u67D0\u4E9B\u573A\u666F\u4E0B\u65B0\u589E\u7684\u7EC4\u4EF6\u4E0D\u5C5E\u4E8E\u5DF2\u6709\u7684 ",paraId:0,tocIndex:0},{value:"Field interface",paraId:0,tocIndex:0},{value:"\uFF0C\u8FD9\u65F6\u5019\u6211\u4EEC\u5C31\u9700\u8981\u81EA\u5B9A\u4E49 ",paraId:0,tocIndex:0},{value:"Field interface",paraId:0,tocIndex:0},{value:"\u3002",paraId:0,tocIndex:0},{value:"\u672C\u6587\u4F1A\u65B0\u589E\u4E00\u4E2A ",paraId:1,tocIndex:1},{value:"Encryption",paraId:1,tocIndex:1},{value:" interface \u7C7B\u578B\u5373\u52A0\u89E3\u5BC6\u5B57\u6BB5\u3002\u5177\u4F53\u9700\u6C42\u5982\u4E0B\uFF1A",paraId:1,tocIndex:1},{value:"\u4F7F\u7528\u5BF9\u79F0\u52A0\u5BC6\u7B97\u6CD5\u5BF9\u5B57\u6BB5\u8FDB\u884C\u52A0\u5BC6\u548C\u89E3\u5BC6",paraId:2,tocIndex:1},{value:"\u52A0\u5BC6\u540E\uFF0C\u4EE5\u5BC6\u6587\u7684\u65B9\u5F0F\u88AB\u5B58\u50A8\u81F3\u6570\u636E\u5E93\u4E2D\uFF0C\u5728\u67E5\u770B\u6570\u636E\u65F6\u8FDB\u884C\u89E3\u5BC6\u660E\u6587\u663E\u793A",paraId:2,tocIndex:1},{value:"\u52A0\u5BC6\u540E\u7684\u5B57\u6BB5\u4E0D\u652F\u6301\u6A21\u7CCA\u641C\u7D22\uFF0C\u53EA\u652F\u6301\u7B49\u4E8E\u3001\u4E0D\u7B49\u4E8E\u3001\u4E3A\u7A7A\u3001\u4E0D\u4E3A\u7A7A\u7B49\u64CD\u4F5C",paraId:2,tocIndex:1},{value:"\u6B64\u529F\u80FD\u9700\u8981\u524D\u540E\u7AEF\u914D\u5408\u5B9E\u73B0\uFF0C\u524D\u7AEF\u9700\u8981\u5B9E\u73B0\u52A0\u5BC6\u548C\u89E3\u5BC6\u7684 Field interface\uFF0C\u540E\u7AEF\u9700\u8981\u5B9E\u73B0\u52A0\u5BC6\u548C\u89E3\u5BC6\u7684\u903B\u8F91\u3002",paraId:3,tocIndex:1},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:4,tocIndex:1},{value:"plugin-samples",paraId:4,tocIndex:1},{value:" \u4E2D\u67E5\u770B\u3002",paraId:4,tocIndex:1},{value:` + `,paraId:6}],Fq={},Bq={title:"Tree Collection",toc:"menu",filename:"docs/en-US/handbook/collection-tree/index.md",lastUpdated:173254844e4,description:"A tree structure collection is a data collection design pattern used for organizing hierarchical data. This collection structure mirrors a tree, where each data item may have one or more child items, and those child items can, in turn, have their own descendants."},jq=[{id:"tree-collection",depth:1,title:"Tree Collection"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"}],Hq=[{value:"A tree structure collection is a data collection design pattern used for organizing hierarchical data. This collection structure mirrors a tree, where each data item may have one or more child items, and those child items can, in turn, have their own descendants.",paraId:0,tocIndex:1}],Wq={},$q={title:"Database view",toc:"menu",filename:"docs/en-US/handbook/collection-view/index.md",lastUpdated:173254844e4},Gq=[{id:"database-view",depth:1,title:"Database view"},{id:"introduction",depth:2,title:"Introduction"},{id:"manu-book",depth:2,title:"Manu book"}],Vq=[],Kq={},Zq={title:"Many-to-Many (Array)",toc:"menu",filename:"docs/en-US/handbook/field-m2m-array/index.md",lastUpdated:173254844e4,description:"This feature allows you to use array fields in a data Collection to store multiple unique keys from the target table, thereby creating a many-to-many relationship between the two tables. For instance, consider the entities Articles and Tags. An article can be linked to multiple tags, with the article table storing the IDs of the corresponding records from the tags table in an array field."},Yq=[{id:"many-to-many-array",depth:1,title:"Many-to-Many (Array)"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:3,title:"Field Configuration"},{id:"parameter-description",depth:2,title:"Parameter Description"},{id:"source-collection",depth:3,title:"Source Collection"},{id:"target-collection",depth:3,title:"Target Collection"},{id:"foreign-key",depth:3,title:"Foreign Key"},{id:"target-key",depth:3,title:"Target Key"}],Qq=[{value:"This feature allows you to use array fields in a data Collection to store multiple unique keys from the target table, thereby creating a many-to-many relationship between the two tables. For instance, consider the entities Articles and Tags. An article can be linked to multiple tags, with the article table storing the IDs of the corresponding records from the tags table in an array field.",paraId:0,tocIndex:1},{value:"Whenever possible, it's recommended to use a junction Collection to establish a standard ",paraId:1},{value:"many-to-many",paraId:2},{value:" relationship instead of relying on this method.",paraId:1},{value:"Currently, only PostgreSQL supports filtering source Collection data using fields from the target table for many-to-many relationships established with array fields. For example, in the scenario above, you can filter articles based on other fields in the tags table, such as the title.",paraId:1},{value:"The source Collection, where the current field resides.",paraId:3,tocIndex:4},{value:"The target Collection with which the relationship is established.",paraId:4,tocIndex:5},{value:"The array field in the source Collection that stores the target key from the target table.",paraId:5,tocIndex:6},{value:"The corresponding relationships for array field types are as follows:",paraId:6,tocIndex:6},{value:"NocoBase",paraId:7,tocIndex:6},{value:"PostgreSQL",paraId:7,tocIndex:6},{value:"MySQL",paraId:7,tocIndex:6},{value:"SQLite",paraId:7,tocIndex:6},{value:"set",paraId:7,tocIndex:6},{value:"array",paraId:7,tocIndex:6},{value:"JSON",paraId:7,tocIndex:6},{value:"JSON",paraId:7,tocIndex:6},{value:"The field in the target Collection that corresponds to the values stored in the source table's array field. This field must be unique.",paraId:8,tocIndex:7}],Jq={},Xq={title:"Amazon S3",toc:"menu",filename:"docs/en-US/handbook/file-storage-s3/index.md",lastUpdated:173254844e4},eE=[{id:"amazon-s3",depth:1,title:"Amazon S3"},{id:"introduction",depth:2,title:"Introduction"},{id:"hand-book",depth:2,title:"Hand book"}],aE=[],tE={},nE={title:"System Settings",toc:"menu",filename:"docs/en-US/handbook/system-settings/index.md",lastUpdated:173254844e4,description:"To set the global information of the system, such as system name, main LOGO, enabled language, etc."},oE=[{id:"system-settings",depth:1,title:"System Settings"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"}],rE=[{value:"To set the global information of the system, such as system name, main LOGO, enabled language, etc.",paraId:0,tocIndex:1}],dE={},iE={title:"\u5B57\u7B26\u4E32\u6A21\u677F",toc:"menu",filename:"docs/en-US/handbook/template-string/index.md",lastUpdated:173254844e4},lE=[{id:"\u5B57\u7B26\u4E32\u6A21\u677F",depth:1,title:"\u5B57\u7B26\u4E32\u6A21\u677F"}],cE=[],sE={},uE={title:"Edit",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/edit.md",lastUpdated:173254844e4,description:"The edit function is part of the row actions, with the current record serving as its context. It opens in a popup window, allowing users to configure and customize various blocks as needed."},pE=[{id:"edit",depth:1,title:"Edit"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"},{id:"linkage-rules",depth:3,title:"Linkage Rules"}],IE=[{value:"The edit function is part of the row actions, with the current record serving as its context. It opens in a popup window, allowing users to configure and customize various blocks as needed.",paraId:0,tocIndex:1},{value:"Configure data blocks according to your requirements.",paraId:1,tocIndex:1},{value:"Example: Editing is disabled for orders that have been received.",paraId:2,tocIndex:3},{value:"For more information, see ",paraId:3,tocIndex:3},{value:"Linkage Rule",paraId:4,tocIndex:3},{value:".",paraId:3,tocIndex:3},{value:"Edit Button",paraId:5,tocIndex:3},{value:": Customize the title, color, and icon of the edit button.",paraId:6,tocIndex:3},{value:"Open Mode",paraId:7,tocIndex:3},{value:": Choose between Pop-up or Drawer.",paraId:6,tocIndex:3},{value:"Popup Size",paraId:8,tocIndex:3},{value:": The default size is Middle (available sizes: Large/Middle/Small).",paraId:6,tocIndex:3}],_E={},vE={title:"Link",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/link.md",lastUpdated:173254844e4,description:"The link operation, which functions via route navigation, supports the passing of variables. The target page can dynamically adjust its content based on the provided data, making it configurable for use within data blocks."},mE=[{id:"link",depth:1,title:"Link"},{id:"introduction",depth:2,title:"Introduction"},{id:"operation-configuration",depth:2,title:"Operation Configuration"},{id:"edit-link",depth:3,title:"Edit Link"},{id:"usage-scenarios",depth:3,title:"Usage Scenarios"},{id:"open-in-new-window",depth:3,title:"Open in New Window"}],hE=[{value:"The link operation, which functions via route navigation, supports the passing of variables. The target page can dynamically adjust its content based on the provided data, making it configurable for use within data blocks.",paraId:0,tocIndex:1},{value:`Example: The author and article tables have a one-to-many relationship. In the author table, you can configure the "View posts" link operation. By clicking this link, the author's ID is passed as a parameter to the article table, allowing the target page to filter the articles based on the specified author's ID.`,paraId:1,tocIndex:4},{value:'When the "Open in new window" option is selected, the link will open in a new window.',paraId:2,tocIndex:5},{value:"Here is a complete configuration example:",paraId:3,tocIndex:5},{value:"Edit Button",paraId:4,tocIndex:5},{value:": Customize the button's title, color, and icon.",paraId:5,tocIndex:5},{value:"Linkage Rule",paraId:6,tocIndex:5},{value:": Dynamically control the button's state.",paraId:5,tocIndex:5}],fE={},xE={title:"View",toc:"menu",filename:"docs/en-US/handbook/ui/actions/types/view.md",lastUpdated:173254844e4,description:'The "View" operation is a row-level button, utilizing the current record as its context. Displayed within a pop-up window, it offers users the ability to customize configuration blocks, enhancing flexibility in the interface.'},gE=[{id:"view",depth:1,title:"View"},{id:"overview",depth:2,title:"Overview"},{id:"operation-configuration-items",depth:3,title:"Operation Configuration Items"}],bE=[{value:'The "View" operation is a row-level button, utilizing the current record as its context. Displayed within a pop-up window, it offers users the ability to customize configuration blocks, enhancing flexibility in the interface.',paraId:0,tocIndex:1},{value:"Edit Button",paraId:1,tocIndex:2},{value:"Linkage Rule",paraId:2,tocIndex:2},{value:"Open Mode",paraId:3,tocIndex:2},{value:"Popup Size",paraId:4,tocIndex:2}],yE={},wE={title:"Create record",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/create.md",lastUpdated:173254844e4,description:"Used to add a new row of data to a specific collection."},kE=[{id:"create-record",depth:1,title:"Create record"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"collection",depth:3,title:"Collection"},{id:"field-values",depth:3,title:"Field Values"},{id:"preload-related-data",depth:3,title:"Preload Related Data"},{id:"example",depth:2,title:"Example"}],SE=[{value:"Used to add a new row of data to a specific collection.",paraId:0,tocIndex:0},{value:"The field values \u200B\u200Bof the new record can use variables from the workflow context. Assigning values to association fields can directly reference the corresponding data variables in the context, which can be objects or foreign key values. If variables are not used, you need to manually enter the values \u200B\u200Bof the foreign keys, and for multiple association fields, multiple foreign key values \u200B\u200Bneed to be separated by commas.",paraId:1,tocIndex:0},{value:'In the workflow configuration UI, click the plus ("+") button in the flow to add a "Create record" node:',paraId:2,tocIndex:1},{value:"Select the collection to which the new record will be added.",paraId:3,tocIndex:3},{value:"Assign values \u200B\u200Bto the fields of the collection. Variables from the workflow context can be used, or static values \u200B\u200Bcan be manually entered.",paraId:4,tocIndex:4},{value:'Record added by the create node in the workflow will not automatically handle fields such as "Creator" and "Last Modifier", and you need to configure the values \u200B\u200Bof these two fields according to the situation.',paraId:5},{value:"If the fields of the new record include association fields, and you want to use the corresponding related data in subsequent workflows, you can check the corresponding association fields in the preload configuration. In this way, after adding the new record, the corresponding association data will be automatically loaded and stored together in the result data of the node.",paraId:6,tocIndex:5},{value:'For example, when a record is added or updated in the "Posts" collection, it is required to automatically add a "Post Versions" row to record the change history of the post. This can be achieved using the create node:',paraId:7,tocIndex:6},{value:'With this configuration enabled, when data changes in the "Posts" collection, a "Post Version" row will be automatically added to record the change history of the article.',paraId:8,tocIndex:6}],UE={},PE={title:"Manual Process",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/manual.md",lastUpdated:173254844e4,description:'In the workflow configuration interface, click the plus (\u201C+\u201D) button within the process to add a "Manual" node:'},TE=[{id:"manual-process",depth:1,title:"Manual Process"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"configuring-the-node",depth:2,title:"Configuring the Node"},{id:"assignees",depth:3,title:"Assignees"},{id:"configuring-the-user-interface",depth:3,title:"Configuring the User Interface"},{id:"tabs",depth:4,title:"Tabs"},{id:"blocks",depth:4,title:"Blocks"},{id:"data-blocks",depth:5,title:"Data Blocks"},{id:"form-blocks",depth:5,title:"Form Blocks"},{id:"related-content",depth:2,title:"Related Content"}],CE=[{value:'In the workflow configuration interface, click the plus (\u201C+\u201D) button within the process to add a "Manual" node:',paraId:0,tocIndex:1},{value:"A manual node requires assigning a user who will be responsible for executing the pending task. You can add a list of pending tasks when setting up blocks on the page. Additionally, the content of each node's task pop-up window needs to be configured within the node\u2019s interface.",paraId:1,tocIndex:3},{value:"You can either select a specific user or use variables to choose the primary or foreign key of user data from the context.",paraId:2,tocIndex:3},{value:"At present, the assignee option for manual nodes does not support multi-user processing, though this feature is planned for future versions.",paraId:3},{value:"The interface setup for the to-do list is central to configuring the manual node. By clicking the \u201CConfigure\u201D button, you can open a separate pop-up window for configuration. This interface works like a regular page, allowing you to design it using a WYSIWYG (What You See Is What You Get) editor:",paraId:4,tocIndex:4},{value:"Tabs can be utilized to differentiate between various content types. For example, one tab might be used for approved form submissions, another for rejected submissions, or you might use them to display details of related data. These tabs can be configured freely according to your needs.",paraId:5,tocIndex:5},{value:"The blocks you can use primarily fall into two categories: Data Blocks and Form Blocks. In addition, Markdown blocks are available for informational prompts and other static content.",paraId:6,tocIndex:6},{value:"Data blocks allow you to display information from triggers or the results of any node processing, providing necessary context for the task assignee. For example, if the workflow is triggered by a form event, a data block can be created to show the details of the triggered data. This setup is similar to configuring details on a regular page, where you can select any fields from the triggered data for display:",paraId:7,tocIndex:7},{value:"Similarly, node data blocks can be configured to display data results from upstream nodes as reference information for the task assignee. For example, if an upstream calculation node generates results, these can be displayed as contextual data:",paraId:8,tocIndex:7},{value:"Since the workflow is in a non-executing state during interface configuration, data blocks won\u2019t display specific data. The relevant data will only appear in the to-do pop-up interface once the workflow is triggered and executed.",paraId:9},{value:"Form blocks are crucial in the to-do interface, as they determine whether the workflow continues. Failing to configure a form block will cause the workflow to halt. There are three types of form blocks available:",paraId:10,tocIndex:8},{value:"Custom Form",paraId:11,tocIndex:8},{value:"Create record form",paraId:11,tocIndex:8},{value:"Update record form",paraId:11,tocIndex:8},{value:"For Create record forms and Update record forms, you'll need to select the data table they are based on. When the assignee submits the form, the values entered will be used to add or update data in the selected table. The Custom Form allows you to create a temporary form not linked to any data table, with the submitted values available for use in subsequent nodes.",paraId:12,tocIndex:8},{value:"You can configure the form submission button with one of three options:",paraId:13,tocIndex:8},{value:"Continue the process",paraId:14,tocIndex:8},{value:"Terminate the process",paraId:14,tocIndex:8},{value:"Save temporarily",paraId:14,tocIndex:8},{value:'These three button options correspond to different node states in the workflow: "Complete," "Reject," or "Waiting." At least one of the first two options must be configured to determine how the workflow proceeds.',paraId:15,tocIndex:8},{value:'On the "Continue the process" button, you can configure specific values for form fields:',paraId:16,tocIndex:8},{value:'In the pop-up window, you can assign values to any field in the form. Once the form is submitted, these values will be used as the final values for those fields. This feature is particularly useful when reviewing data. You can configure multiple "Continue the process" buttons in the form, each setting different enumeration values for similar fields, allowing the workflow to continue with varying outcomes based on these values.',paraId:17,tocIndex:8},{value:"Except for node configuration, there are also some related contents about manual process that can be further understood through the ",paraId:18,tocIndex:9},{value:"plugin documentation",paraId:19,tocIndex:9},{value:".",paraId:18,tocIndex:9}],AE={},qE={title:"Update Record",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/update.md",lastUpdated:173254844e4,description:"Used to update data records that meet certain conditions in a collection."},EE=[{id:"update-record",depth:1,title:"Update Record"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"collection",depth:3,title:"Collection"},{id:"update-mode",depth:3,title:"Update Mode"},{id:"filter-conditions",depth:3,title:"Filter Conditions"},{id:"field-values",depth:3,title:"Field Values"},{id:"example",depth:2,title:"Example"}],DE=[{value:"Used to update data records that meet certain conditions in a collection.",paraId:0,tocIndex:0},{value:'The collection and field assignment sections are the same as in the "Create Record" node. The main difference between "Update Record" node and "Create record" node is the filter conditions, and the need to select an update mode. In addition, the update node will return the number of rows of successfully updated data, which can only be viewed in the execution history and cannot be used as a variable in subsequent nodes.',paraId:1,tocIndex:0},{value:'In the workflow configuration UI, click the plus ("+") button in the workflow and add an "Update Record" node:',paraId:2,tocIndex:1},{value:"Select the collection to update record in.",paraId:3,tocIndex:3},{value:'There are "Batch" and "Individual" modes for updating. In batch mode, each record updating will not trigger the collection events; whereas, in individual mode, each record updating could trigger the collection events. However, there may be performance issues with individual updates, especially with large amounts of data, so use with caution. Typically, choose based on the target data to be updated and whether other workflow events need to be triggered. If updating a single data record based on a primary key, it is recommended to use individual updates; if updating multiple data records based on conditions, it is recommended to use batch updates.',paraId:4,tocIndex:4},{value:"Similar to the filter conditions when querying a normal collection, you can use context variables of the workflow.",paraId:5,tocIndex:5},{value:'Similar to the field assignment in the "Create Record" node, you can use variables from the workflow context or manually enter static values.',paraId:6,tocIndex:6},{value:'Note: The update node in the workflow does not automatically handle the "Last Modified By" data; you need to configure the value of this field based on the situation.',paraId:7,tocIndex:6},{value:'For example, when a "Post" created, the "Post Category" collection needs to be automatically updated with the "Post Count" field. This can be achieved using an update node:',paraId:8,tocIndex:7},{value:'When the workflow is triggered, the "Post Count" field in the "Post Category" collection will automatically be updated to the current post count +1.',paraId:9,tocIndex:7}],OE={},RE={title:"Todo Block",toc:"menu",filename:"docs/en-US/handbook/workflow-manual/block.md",lastUpdated:173254844e4,description:"To facilitate manual processing, a todo list should be added to the page. This list will display tasks that require attention, allowing relevant personnel to easily access and manage specific tasks within the manual node."},ME=[{id:"todo-block",depth:1,title:"Todo Block"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"todo-details",depth:2,title:"Todo Details"}],LE=[{value:"To facilitate manual processing, a todo list should be added to the page. This list will display tasks that require attention, allowing relevant personnel to easily access and manage specific tasks within the manual node.",paraId:0,tocIndex:0},{value:'To add a todo list block, select "Workflow Todo" from the available blocks on the page:',paraId:1,tocIndex:1},{value:"Here is an example of a todo list block:",paraId:2,tocIndex:1},{value:"Personnel can click on the relevant todo task to open a pop-up window for manual processing:",paraId:3,tocIndex:2}],NE={},zE={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow-manual/index.md",lastUpdated:173254844e4,description:"When a business process cannot be fully automated, a manual node can be implemented to transfer part of the decision-making authority to a human operator."},FE=[{id:"overview",depth:1,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"}],BE=[{value:"When a business process cannot be fully automated, a manual node can be implemented to transfer part of the decision-making authority to a human operator.",paraId:0},{value:"Upon reaching a manual node, the process will pause and generate a task for the assigned user. Based on the status selected by the user during submission, the process will either resume, remain on hold, or be terminated. This functionality is particularly valuable in scenarios requiring process approval.",paraId:1},{value:"This is a built-in plugin, requiring no installation.",paraId:2,tocIndex:1},{value:"The use of manual nodes is divided into two parts:",paraId:3,tocIndex:2},{value:"Node Configuration",paraId:4,tocIndex:2},{value:"ToDo Block",paraId:5,tocIndex:2},{value:"For further insight into practical applications, you can refer to the ",paraId:6,tocIndex:2},{value:"Examples",paraId:7,tocIndex:2},{value:" section.",paraId:6,tocIndex:2}],jE={},HE={title:"\u57FA\u672C\u7C7B\u578B",toc:"menu",filename:"docs/en-US/manual/collection/fields/basic.md",lastUpdated:173254844e4},WE=[{id:"\u57FA\u672C\u7C7B\u578B",depth:1,title:"\u57FA\u672C\u7C7B\u578B"}],$E=[{value:"Single line text",paraId:0,tocIndex:0},{value:"Username",paraId:0,tocIndex:0},{value:"Long text",paraId:0,tocIndex:0},{value:"Phone",paraId:0,tocIndex:0},{value:"Email",paraId:0,tocIndex:0},{value:"URL",paraId:0,tocIndex:0},{value:"Integer",paraId:0,tocIndex:0},{value:"Number",paraId:0,tocIndex:0},{value:"Percent",paraId:0,tocIndex:0},{value:"Password",paraId:0,tocIndex:0},{value:"Color",paraId:0,tocIndex:0},{value:"Icon",paraId:0,tocIndex:0}],GE={},VE={title:"Overview",toc:"menu",filename:"docs/en-US/manual/collection/fields/index.md",lastUpdated:173254844e4},KE=[{id:"overview",depth:1,title:"Overview"}],ZE=[],YE={},QE={title:"\u591A\u5A92\u4F53",toc:"menu",filename:"docs/en-US/manual/collection/fields/media.md",lastUpdated:173254844e4},JE=[{id:"\u591A\u5A92\u4F53",depth:1,title:"\u591A\u5A92\u4F53"}],XE=[{value:"Markdown",paraId:0,tocIndex:0},{value:"Rich Text",paraId:0,tocIndex:0},{value:"Attachment",paraId:0,tocIndex:0}],eD={},aD={title:"Aliyun OSS",toc:"menu",filename:"docs/en-US/manual/file-manager/aliyun-oss.md",lastUpdated:173254844e4},tD=[{id:"aliyun-oss",depth:1,title:"Aliyun OSS"}],nD=[],oD={},rD={title:"\u5E76\u884C\u5206\u652F",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/parallel.md",lastUpdated:173254844e4,description:"\u5E76\u884C\u5206\u652F\u8282\u70B9\u53EF\u4EE5\u5C06\u6D41\u7A0B\u5206\u4E3A\u591A\u4E2A\u5206\u652F\uFF0C\u6BCF\u4E2A\u5206\u652F\u53EF\u4EE5\u914D\u7F6E\u4E0D\u540C\u7684\u8282\u70B9\uFF0C\u6839\u636E\u5206\u652F\u7684\u6A21\u5F0F\u4E0D\u540C\uFF0C\u5206\u652F\u7684\u6267\u884C\u65B9\u5F0F\u4E5F\u4E0D\u540C\u3002\u5728\u9700\u8981\u5728\u540C\u65F6\u6267\u884C\u591A\u4E2A\u64CD\u4F5C\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5E76\u884C\u5206\u652F\u8282\u70B9\u3002"},dD=[{id:"\u5E76\u884C\u5206\u652F",depth:1,title:"\u5E76\u884C\u5206\u652F"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u5206\u652F\u6A21\u5F0F",depth:3,title:"\u5206\u652F\u6A21\u5F0F"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],iD=[{value:"\u5E76\u884C\u5206\u652F\u8282\u70B9\u53EF\u4EE5\u5C06\u6D41\u7A0B\u5206\u4E3A\u591A\u4E2A\u5206\u652F\uFF0C\u6BCF\u4E2A\u5206\u652F\u53EF\u4EE5\u914D\u7F6E\u4E0D\u540C\u7684\u8282\u70B9\uFF0C\u6839\u636E\u5206\u652F\u7684\u6A21\u5F0F\u4E0D\u540C\uFF0C\u5206\u652F\u7684\u6267\u884C\u65B9\u5F0F\u4E5F\u4E0D\u540C\u3002\u5728\u9700\u8981\u5728\u540C\u65F6\u6267\u884C\u591A\u4E2A\u64CD\u4F5C\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5E76\u884C\u5206\u652F\u8282\u70B9\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5E76\u884C\u5206\u652F\u201D\u8282\u70B9\uFF1A",paraId:1,tocIndex:1},{value:"\u5728\u6D41\u7A0B\u4E2D\u589E\u52A0\u5E76\u884C\u5206\u652F\u8282\u70B9\u540E\uFF0C\u4F1A\u9ED8\u8BA4\u589E\u52A0\u4E24\u4E2A\u5B50\u5206\u652F\uFF0C\u540C\u65F6\u4E5F\u53EF\u4EE5\u70B9\u51FB\u589E\u52A0\u5206\u652F\u7684\u6309\u94AE\u589E\u52A0\u4EFB\u610F\u591A\u4E2A\u5206\u652F\uFF0C\u6BCF\u4E2A\u5206\u652F\u90FD\u53EF\u4EE5\u589E\u52A0\u4EFB\u610F\u7684\u8282\u70B9\uFF0C\u4E0D\u9700\u8981\u7684\u5206\u652F\u53EF\u4EE5\u70B9\u51FB\u5206\u652F\u5F00\u59CB\u5904\u7684\u5220\u9664\u6309\u94AE\u5220\u9664\u3002",paraId:2,tocIndex:1},{value:"\u5E76\u884C\u5206\u652F\u8282\u70B9\u6709\u4EE5\u4E0B\u4E09\u79CD\u6A21\u5F0F\uFF1A",paraId:3,tocIndex:3},{value:"\u5168\u90E8\u6210\u529F",paraId:4,tocIndex:3},{value:"\uFF1A\u6240\u6709\u5206\u652F\u90FD\u6267\u884C\u6210\u529F\uFF0C\u6D41\u7A0B\u624D\u4F1A\u7EE7\u7EED\u6267\u884C\u5206\u652F\u7ED3\u675F\u540E\u7684\u8282\u70B9\u3002\u5426\u5219\u4EFB\u610F\u5206\u652F\u63D0\u524D\u7EC8\u6B62\uFF0C\u65E0\u8BBA\u662F\u5931\u8D25\u3001\u51FA\u9519\u8FD8\u662F\u5176\u4ED6\u975E\u6210\u529F\u72B6\u6001\uFF0C\u90FD\u5BFC\u81F4\u6574\u4E2A\u5E76\u884C\u5206\u652F\u8282\u70B9\u4EE5\u8BE5\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\uFF0C\u4E5F\u79F0\u4F5C\u201CAll \u6A21\u5F0F\u201D\u3002",paraId:4,tocIndex:3},{value:"\u4EFB\u610F\u6210\u529F",paraId:4,tocIndex:3},{value:"\uFF1A\u4EFB\u610F\u5206\u652F\u6267\u884C\u6210\u529F\uFF0C\u6D41\u7A0B\u5C31\u4F1A\u7EE7\u7EED\u6267\u884C\u5206\u652F\u7ED3\u675F\u540E\u7684\u8282\u70B9\u3002\u9664\u975E\u6240\u6709\u5206\u652F\u90FD\u63D0\u524D\u7EC8\u6B62\uFF0C\u65E0\u8BBA\u662F\u5931\u8D25\u3001\u51FA\u9519\u8FD8\u662F\u5176\u4ED6\u975E\u6210\u529F\u72B6\u6001\uFF0C\u624D\u4F1A\u5BFC\u81F4\u6574\u4E2A\u5E76\u884C\u5206\u652F\u8282\u70B9\u4EE5\u8BE5\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\uFF0C\u4E5F\u79F0\u4F5C\u201CAny \u6A21\u5F0F\u201D\u3002",paraId:4,tocIndex:3},{value:"\u4EFB\u610F\u6210\u529F\u548C\u5931\u8D25",paraId:4,tocIndex:3},{value:"\uFF1A\u4EFB\u610F\u5206\u652F\u6267\u884C\u6210\u529F\u540E\u6D41\u7A0B\u5C31\u4F1A\u7EE7\u7EED\u6267\u884C\u5206\u652F\u7ED3\u675F\u540E\u7684\u8282\u70B9\uFF0C\u4F46\u4EFB\u610F\u8282\u70B9\u5931\u8D25\u540E\uFF0C\u4F1A\u5BFC\u81F4\u6574\u4E2A\u5E76\u884C\u4EE5\u8BE5\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\uFF0C\u4E5F\u79F0\u4F5C\u201CRace \u6A21\u5F0F\u201D\u3002",paraId:4,tocIndex:3},{value:"\u4E0D\u8BBA\u54EA\u79CD\u6A21\u5F0F\uFF0C\u90FD\u4F1A\u4ECE\u5DE6\u5230\u53F3\u4F9D\u6B21\u5C1D\u8BD5\u6267\u884C\u6BCF\u4E2A\u5206\u652F\uFF0C\u76F4\u5230\u6EE1\u8DB3\u5206\u652F\u9884\u8BBE\u6A21\u5F0F\u7684\u76F8\u5173\u6761\u4EF6\u540E\uFF0C\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u8282\u70B9\u6216\u63D0\u524D\u9000\u51FA\u3002",paraId:5,tocIndex:3},{value:"\u53C2\u8003 ",paraId:6,tocIndex:4},{value:"\u5EF6\u65F6\u8282\u70B9",paraId:7,tocIndex:4},{value:" \u4E2D\u7684\u4F8B\u5B50\u3002",paraId:6,tocIndex:4}],lD={},cD={title:"\u6982\u8FF0",toc:"menu",filename:"docs/en-US/manual/workflow/triggers/index.md",lastUpdated:173254844e4,description:"\u89E6\u53D1\u5668\u662F\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5165\u53E3\uFF0C\u5F53\u5E94\u7528\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u6EE1\u8DB3\u89E6\u53D1\u5668\u6761\u4EF6\u7684\u4E8B\u4EF6\u4EA7\u751F\u65F6\uFF0C\u5DE5\u4F5C\u6D41\u5C06\u4F1A\u88AB\u89E6\u53D1\u6267\u884C\u3002\u89E6\u53D1\u5668\u7684\u7C7B\u578B\u4E5F\u5C31\u662F\u5DE5\u4F5C\u6D41\u7684\u7C7B\u578B\uFF0C\u5728\u521B\u5EFA\u5DE5\u4F5C\u6D41\u65F6\u9009\u62E9\uFF0C\u521B\u5EFA\u540E\u4E0D\u53EF\u4FEE\u6539\u3002\u76EE\u524D\u5185\u7F6E\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u5982\u4E0B\uFF1A"},sD=[{id:"\u6982\u8FF0",depth:1,title:"\u6982\u8FF0"}],uD=[{value:"\u89E6\u53D1\u5668\u662F\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5165\u53E3\uFF0C\u5F53\u5E94\u7528\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u6EE1\u8DB3\u89E6\u53D1\u5668\u6761\u4EF6\u7684\u4E8B\u4EF6\u4EA7\u751F\u65F6\uFF0C\u5DE5\u4F5C\u6D41\u5C06\u4F1A\u88AB\u89E6\u53D1\u6267\u884C\u3002\u89E6\u53D1\u5668\u7684\u7C7B\u578B\u4E5F\u5C31\u662F\u5DE5\u4F5C\u6D41\u7684\u7C7B\u578B\uFF0C\u5728\u521B\u5EFA\u5DE5\u4F5C\u6D41\u65F6\u9009\u62E9\uFF0C\u521B\u5EFA\u540E\u4E0D\u53EF\u4FEE\u6539\u3002\u76EE\u524D\u5185\u7F6E\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u5982\u4E0B\uFF1A",paraId:0,tocIndex:0},{value:"\u8868\u5355\u4E8B\u4EF6",paraId:1,tocIndex:0},{value:"\u6570\u636E\u8868\u4E8B\u4EF6",paraId:1,tocIndex:0},{value:"\u5B9A\u65F6\u4EFB\u52A1",paraId:1,tocIndex:0},{value:"\u6BD4\u5982\u7528\u6237\u63D0\u4EA4\u4E00\u4E2A\u8868\u5355\uFF0C\u6216\u8005\u6570\u636E\u8868\u4E2D\u7684\u6570\u636E\u7531\u4E8E\u7528\u6237\u64CD\u4F5C\u6216\u7A0B\u5E8F\u8C03\u7528\u53D1\u751F\u53D8\u5316\uFF0C\u6216\u8005\u5B9A\u65F6\u4EFB\u52A1\u5230\u8FBE\u6267\u884C\u65F6\u95F4\uFF0C\u90FD\u4F1A\u89E6\u53D1\u5BF9\u5E94\u7684\u5DE5\u4F5C\u6D41\u6267\u884C\u3002",paraId:2,tocIndex:0},{value:"\u4E0E\u6570\u636E\u6709\u5173\u7684\u89E6\u53D1\u5668\uFF08\u5982\u8868\u5355\u3001\u6570\u636E\u8868\u4E8B\u4EF6\uFF09\u901A\u5E38\u4F1A\u643A\u5E26\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u8FD9\u4E9B\u6570\u636E\u53EF\u4EE5\u5728\u5DE5\u4F5C\u6D41\u7684\u8282\u70B9\u4E2D\u88AB\u5F15\u7528\uFF0C\u7528\u4EE5\u5B9E\u73B0\u6570\u636E\u7684\u81EA\u52A8\u5316\u5904\u7406\u3002\u4F8B\u5982\u5F53\u7528\u6237\u63D0\u4EA4\u4E00\u4E2A\u7ED1\u5B9A\u4E86\u5DE5\u4F5C\u6D41\u7684\u8868\u5355\u65F6\uFF0C\u8868\u5355\u63D0\u4EA4\u7684\u6570\u636E\u4F1A\u88AB\u6CE8\u5165\u5230\u6267\u884C\u8BA1\u5212\u7684\u4E0A\u4E0B\u6587\u73AF\u5883\u4E2D\uFF0C\u4EE5\u4F9B\u540E\u7EED\u8282\u70B9\u4F5C\u4E3A\u53D8\u91CF\u4F7F\u7528\u3002",paraId:3,tocIndex:0},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\u4EE5\u540E\uFF0C\u5728\u5DE5\u4F5C\u6D41\u67E5\u770B\u9875\u9762\u4E2D\uFF0C\u89E6\u53D1\u5668\u4F1A\u4EE5\u5165\u53E3\u8282\u70B9\u7684\u6837\u5F0F\u663E\u793A\u5728\u6D41\u7A0B\u7684\u5F00\u59CB\u4F4D\u7F6E\uFF0C\u70B9\u51FB\u8BE5\u5361\u7247\u5373\u53EF\u6253\u5F00\u914D\u7F6E\u5F39\u7A97\u3002\u6839\u636E\u89E6\u53D1\u5668\u7684\u7C7B\u578B\u4E0D\u540C\uFF0C\u53EF\u4EE5\u914D\u7F6E\u89E6\u53D1\u5668\u7684\u76F8\u5173\u6761\u4EF6\u3002",paraId:4,tocIndex:0},{value:` + `,paraId:5}],pD={},ID={title:"Field Interface",toc:"menu",filename:"docs/en-US/plugin-samples/field/interface.md",lastUpdated:173254844e4,description:"\u524D\u9762\u5DF2\u7ECF\u4ECB\u7ECD\u4E86\u57FA\u4E8E\u5DF2\u6709\u7684 Field interface \u589E\u52A0\u7EC4\u4EF6\u7C7B\u578B\u7684\u65B9\u5F0F\u5B9E\u73B0\u5B57\u6BB5\u7EC4\u4EF6\u7684\u66FF\u6362\uFF0C\u4F46\u662F\u67D0\u4E9B\u573A\u666F\u4E0B\u65B0\u589E\u7684\u7EC4\u4EF6\u4E0D\u5C5E\u4E8E\u5DF2\u6709\u7684 Field interface\uFF0C\u8FD9\u65F6\u5019\u6211\u4EEC\u5C31\u9700\u8981\u81EA\u5B9A\u4E49 Field interface\u3002"},_D=[{id:"field-interface",depth:1,title:"Field Interface"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u6587\u6863\u77E5\u8BC6\u548C\u76EE\u5F55\u7ED3\u6784",depth:2,title:"\u6587\u6863\u77E5\u8BC6\u548C\u76EE\u5F55\u7ED3\u6784"},{id:"\u524D\u7AEF\u5B9E\u73B0",depth:2,title:"\u524D\u7AEF\u5B9E\u73B0"},{id:"1-\u7EC4\u4EF6",depth:3,title:"1. \u7EC4\u4EF6"},{id:"2-field-interface",depth:3,title:"2. Field Interface"},{id:"21-\u5B9A\u4E49",depth:4,title:"2.1 \u5B9A\u4E49"},{id:"22-\u6CE8\u518C",depth:4,title:"2.2 \u6CE8\u518C"},{id:"\u540E\u7AEF\u5B9E\u73B0",depth:2,title:"\u540E\u7AEF\u5B9E\u73B0"},{id:"1-\u5B9E\u73B0\u52A0\u89E3\u5BC6",depth:3,title:"1. \u5B9E\u73B0\u52A0\u89E3\u5BC6"},{id:"2-\u5B9E\u73B0-field",depth:3,title:"2. \u5B9E\u73B0 Field"},{id:"21-\u5B9A\u4E49-1",depth:4,title:"2.1 \u5B9A\u4E49"},{id:"22-\u6CE8\u518C-1",depth:4,title:"2.2 \u6CE8\u518C"},{id:"3-\u5B9E\u73B0\u64CD\u4F5C\u7B26",depth:3,title:"3. \u5B9E\u73B0\u64CD\u4F5C\u7B26"},{id:"31-\u5B9A\u4E49",depth:4,title:"3.1 \u5B9A\u4E49"},{id:"311-\u5C01\u88C5\u516C\u5171\u65B9\u6CD5",depth:5,title:"3.1.1 \u5C01\u88C5\u516C\u5171\u65B9\u6CD5"},{id:"312-\u5B9E\u73B0-encryptioneq",depth:5,title:"3.1.2 \u5B9E\u73B0 $encryptionEq"},{id:"313-\u5B9E\u73B0-encryptionne",depth:5,title:"3.1.3 \u5B9E\u73B0 $encryptionNe"},{id:"32-\u6CE8\u518C\u64CD\u4F5C\u7B26",depth:4,title:"3.2 \u6CE8\u518C\u64CD\u4F5C\u7B26"},{id:"\u591A\u8BED\u8A00",depth:2,title:"\u591A\u8BED\u8A00"},{id:"\u82F1\u8BED",depth:3,title:"\u82F1\u8BED"},{id:"\u4E2D\u6587",depth:3,title:"\u4E2D\u6587"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],vD=[{value:"\u524D\u9762\u5DF2\u7ECF\u4ECB\u7ECD\u4E86\u57FA\u4E8E\u5DF2\u6709\u7684 ",paraId:0,tocIndex:0},{value:"Field interface",paraId:0,tocIndex:0},{value:" \u589E\u52A0\u7EC4\u4EF6\u7C7B\u578B\u7684\u65B9\u5F0F\u5B9E\u73B0\u5B57\u6BB5\u7EC4\u4EF6\u7684\u66FF\u6362\uFF0C\u4F46\u662F\u67D0\u4E9B\u573A\u666F\u4E0B\u65B0\u589E\u7684\u7EC4\u4EF6\u4E0D\u5C5E\u4E8E\u5DF2\u6709\u7684 ",paraId:0,tocIndex:0},{value:"Field interface",paraId:0,tocIndex:0},{value:"\uFF0C\u8FD9\u65F6\u5019\u6211\u4EEC\u5C31\u9700\u8981\u81EA\u5B9A\u4E49 ",paraId:0,tocIndex:0},{value:"Field interface",paraId:0,tocIndex:0},{value:"\u3002",paraId:0,tocIndex:0},{value:"\u672C\u6587\u4F1A\u65B0\u589E\u4E00\u4E2A ",paraId:1,tocIndex:1},{value:"Encryption",paraId:1,tocIndex:1},{value:" interface \u7C7B\u578B\u5373\u52A0\u89E3\u5BC6\u5B57\u6BB5\u3002\u5177\u4F53\u9700\u6C42\u5982\u4E0B\uFF1A",paraId:1,tocIndex:1},{value:"\u4F7F\u7528\u5BF9\u79F0\u52A0\u5BC6\u7B97\u6CD5\u5BF9\u5B57\u6BB5\u8FDB\u884C\u52A0\u5BC6\u548C\u89E3\u5BC6",paraId:2,tocIndex:1},{value:"\u52A0\u5BC6\u540E\uFF0C\u4EE5\u5BC6\u6587\u7684\u65B9\u5F0F\u88AB\u5B58\u50A8\u81F3\u6570\u636E\u5E93\u4E2D\uFF0C\u5728\u67E5\u770B\u6570\u636E\u65F6\u8FDB\u884C\u89E3\u5BC6\u660E\u6587\u663E\u793A",paraId:2,tocIndex:1},{value:"\u52A0\u5BC6\u540E\u7684\u5B57\u6BB5\u4E0D\u652F\u6301\u6A21\u7CCA\u641C\u7D22\uFF0C\u53EA\u652F\u6301\u7B49\u4E8E\u3001\u4E0D\u7B49\u4E8E\u3001\u4E3A\u7A7A\u3001\u4E0D\u4E3A\u7A7A\u7B49\u64CD\u4F5C",paraId:2,tocIndex:1},{value:"\u6B64\u529F\u80FD\u9700\u8981\u524D\u540E\u7AEF\u914D\u5408\u5B9E\u73B0\uFF0C\u524D\u7AEF\u9700\u8981\u5B9E\u73B0\u52A0\u5BC6\u548C\u89E3\u5BC6\u7684 Field interface\uFF0C\u540E\u7AEF\u9700\u8981\u5B9E\u73B0\u52A0\u5BC6\u548C\u89E3\u5BC6\u7684\u903B\u8F91\u3002",paraId:3,tocIndex:1},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:4,tocIndex:1},{value:"plugin-samples",paraId:4,tocIndex:1},{value:" \u4E2D\u67E5\u770B\u3002",paraId:4,tocIndex:1},{value:` `,paraId:5},{value:"\u6211\u4EEC\u6309\u7167 ",paraId:6,tocIndex:2},{value:"\u7F16\u5199\u7B2C\u4E00\u4E2A\u63D2\u4EF6",paraId:7,tocIndex:2},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u5982\u679C\u6CA1\u6709\u4E00\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u5148\u521B\u5EFA\u4E00\u4E2A\u9879\u76EE\uFF0C\u5982\u679C\u5DF2\u7ECF\u6709\u4E86\u6216\u8005\u662F clone \u7684\u6E90\u7801\uFF0C\u5219\u8DF3\u8FC7\u8FD9\u4E00\u6B65\u3002",paraId:6,tocIndex:2},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -13743,8 +13795,8 @@ export default PluginFieldInterfaceServer; } `,paraId:74,tocIndex:22},{value:"\u6309\u7167 ",paraId:75,tocIndex:23},{value:"\u6784\u5EFA\u5E76\u6253\u5305\u63D2\u4EF6",paraId:76,tocIndex:23},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6253\u5305\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883\u3002",paraId:75,tocIndex:23},{value:"\u5982\u679C\u662F clone \u7684\u6E90\u7801\uFF0C\u9700\u8981\u5148\u6267\u884C\u4E00\u6B21\u5168\u91CF build\uFF0C\u5C06\u63D2\u4EF6\u7684\u4F9D\u8D56\u4E5F\u6784\u5EFA\u597D\u3002",paraId:77,tocIndex:23},{value:`yarn build `,paraId:78,tocIndex:23},{value:"\u5982\u679C\u662F\u4F7F\u7528\u7684 ",paraId:79,tocIndex:23},{value:"create-nocobase-app",paraId:79,tocIndex:23},{value:" \u521B\u5EFA\u7684\u9879\u76EE\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A",paraId:79,tocIndex:23},{value:`yarn build @nocobase-sample/plugin-field-interface --tar -`,paraId:80,tocIndex:23},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:81,tocIndex:23},{value:"storage/tar/@nocobase-sample/plugin-field-interface.tar.gz",paraId:81,tocIndex:23},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:81,tocIndex:23},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:82,tocIndex:23},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:81,tocIndex:23}],mD={},hD={title:"\u5B50\u8282\u70B9\u7EC4\u4EF6",toc:"menu",filename:"docs/en-US/plugin-samples/field/sub-field.md",lastUpdated:1732240239e3},fD=[{id:"\u5B50\u8282\u70B9\u7EC4\u4EF6",depth:1,title:"\u5B50\u8282\u70B9\u7EC4\u4EF6"}],xD=[],gD={},bD={title:"\u6279\u91CF\u7F16\u8F91",toc:"menu",filename:"docs/en-US/plugins/action-bulk-edit/index.md",lastUpdated:1732240239e3,description:"\u6279\u91CF\u7F16\u8F91\u64CD\u4F5C\u7528\u4E8E\u9700\u8981\u4E3A\u4E0D\u540C\u8BB0\u5F55\u7EC4\u914D\u7F6E\u4E0D\u540C\u66F4\u65B0\u903B\u8F91\u7684\u60C5\u51B5\uFF0C\u9002\u7528\u4E8E\u7075\u6D3B\u6027\u8981\u6C42\u8F83\u9AD8\u7684\u6570\u636E\u5904\u7406\u573A\u666F\u3002\u7528\u6237\u70B9\u51FB\u6279\u91CF\u7F16\u8F91\u6309\u94AE\u540E\uFF0C\u7CFB\u7EDF\u4F1A\u5F39\u51FA\u4E00\u4E2A\u914D\u7F6E\u754C\u9762\uFF0C\u5141\u8BB8\u7528\u6237\u4E3A\u6BCF\u4E2A\u5B57\u6BB5\u6307\u5B9A\u4E0D\u540C\u7684\u8D4B\u503C\u903B\u8F91\u3002\u7528\u6237\u53EF\u4EE5\u6839\u636E\u9700\u8981\u4E3A\u6BCF\u4E2A\u8BB0\u5F55\u6307\u5B9A\u7279\u5B9A\u7684\u66F4\u65B0\u65B9\u5F0F"},yD=[{id:"\u6279\u91CF\u7F16\u8F91",depth:1,title:"\u6279\u91CF\u7F16\u8F91"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u6307\u5357",depth:2,title:"\u4F7F\u7528\u6307\u5357"}],wD=[{value:"\u6279\u91CF\u7F16\u8F91\u64CD\u4F5C\u7528\u4E8E\u9700\u8981\u4E3A\u4E0D\u540C\u8BB0\u5F55\u7EC4\u914D\u7F6E\u4E0D\u540C\u66F4\u65B0\u903B\u8F91\u7684\u60C5\u51B5\uFF0C\u9002\u7528\u4E8E\u7075\u6D3B\u6027\u8981\u6C42\u8F83\u9AD8\u7684\u6570\u636E\u5904\u7406\u573A\u666F\u3002\u7528\u6237\u70B9\u51FB\u6279\u91CF\u7F16\u8F91\u6309\u94AE\u540E\uFF0C\u7CFB\u7EDF\u4F1A\u5F39\u51FA\u4E00\u4E2A\u914D\u7F6E\u754C\u9762\uFF0C\u5141\u8BB8\u7528\u6237\u4E3A\u6BCF\u4E2A\u5B57\u6BB5\u6307\u5B9A\u4E0D\u540C\u7684\u8D4B\u503C\u903B\u8F91\u3002\u7528\u6237\u53EF\u4EE5\u6839\u636E\u9700\u8981\u4E3A\u6BCF\u4E2A\u8BB0\u5F55\u6307\u5B9A\u7279\u5B9A\u7684\u66F4\u65B0\u65B9\u5F0F",paraId:0,tocIndex:1},{value:"\u8BBE\u7F6E\u6279\u91CF\u7F16\u8F91\u7684\u6570\u636E\uFF1A\u9009\u4E2D/\u6240\u6709\uFF0C\u9ED8\u8BA4\u4E3A\u9009\u4E2D",paraId:1,tocIndex:3},{value:"\u4E3A\u5B57\u6BB5\u8BBE\u7F6E\u66F4\u65B0\u903B\u8F91\uFF0C\u652F\u6301\u4E3A\u7279\u5B9A\u5B57\u6BB5\u8BBE\u7F6E\u903B\u8F91",paraId:2,tocIndex:3},{value:"\u4E0D\u66F4\u65B0",paraId:3,tocIndex:3},{value:"\u4FEE\u6539\u4E3A\u6307\u5B9A\u503C",paraId:3,tocIndex:3},{value:"\u6E05\u7A7A",paraId:3,tocIndex:3},{value:"\u5982\u56FE\u5728\u8FD0\u5355\u8868\u683C\u533A\u5757\u4E2D\u914D\u7F6E\u6279\u91CF\u7F16\u8F91\u64CD\u4F5C\uFF0C\u9009\u4E2D\u7684\u6570\u636E\uFF0C\u5C06\u8FD0\u8F93\u6A21\u5F0F\u4FEE\u6539\u4E3A\u7A7A\u8FD0\uFF0C\u786E\u8BA4\u9001\u8FBE\u548C\u5B9E\u9645\u5230\u8FBE\u65F6\u95F4\u6E05\u7A7A",paraId:4,tocIndex:3}],kD={},SD={title:"\u590D\u5236",toc:"menu",filename:"docs/en-US/plugins/action-duplicate/index.md",lastUpdated:1732240239e3,description:"\u590D\u5236\u64CD\u4F5C\u662F\u4E00\u79CD\u4FBF\u6377\u7684\u65B9\u5F0F\uFF0C\u5141\u8BB8\u7528\u6237\u57FA\u4E8E\u5DF2\u5B58\u5728\u7684\u6570\u636E\u521B\u5EFA\u65B0\u7684\u6570\u636E\u8BB0\u5F55\u3002\u63D0\u4F9B\u4E86\u4E24\u79CD\u64CD\u4F5C\u65B9\u5F0F\uFF1A\u76F4\u63A5\u590D\u5236\u548C\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199\uFF0C\u6309\u94AE\u6743\u9650\u4E0E\u65B0\u5EFA\u64CD\u4F5C\u4E00\u81F4"},UD=[{id:"\u590D\u5236",depth:1,title:"\u590D\u5236"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u4F7F\u7528\u6307\u5357",depth:2,title:"\u4F7F\u7528\u6307\u5357"},{id:"\u76F4\u63A5\u590D\u5236",depth:4,title:"\u76F4\u63A5\u590D\u5236"},{id:"\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199",depth:4,title:"\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199"},{id:"\u8865\u5145\u8BF4\u660E",depth:2,title:"\u8865\u5145\u8BF4\u660E"},{id:"\u590D\u5236\u5F15\u7528\u9884\u52A0\u8F7D\u7684\u8BF4\u660E",depth:4,title:"\u590D\u5236\u3001\u5F15\u7528\u3001\u9884\u52A0\u8F7D\u7684\u8BF4\u660E"},{id:"\u5168\u9009",depth:4,title:"\u5168\u9009"},{id:"\u6A21\u677F\u6570\u636E\u7684\u5904\u7406\u903B\u8F91",depth:4,title:"\u6A21\u677F\u6570\u636E\u7684\u5904\u7406\u903B\u8F91"},{id:"\u5982\u4F55\u7406\u89E3\u540C\u6B65\u8868\u5355\u5B57\u6BB5",depth:4,title:"\u5982\u4F55\u7406\u89E3\u540C\u6B65\u8868\u5355\u5B57\u6BB5"}],PD=[{value:"\u590D\u5236\u64CD\u4F5C\u662F\u4E00\u79CD\u4FBF\u6377\u7684\u65B9\u5F0F\uFF0C\u5141\u8BB8\u7528\u6237\u57FA\u4E8E\u5DF2\u5B58\u5728\u7684\u6570\u636E\u521B\u5EFA\u65B0\u7684\u6570\u636E\u8BB0\u5F55\u3002\u63D0\u4F9B\u4E86\u4E24\u79CD\u64CD\u4F5C\u65B9\u5F0F\uFF1A\u76F4\u63A5\u590D\u5236\u548C\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199\uFF0C\u6309\u94AE\u6743\u9650\u4E0E\u65B0\u5EFA\u64CD\u4F5C\u4E00\u81F4",paraId:0,tocIndex:1},{value:"\u9ED8\u8BA4\u4EE5\u76F4\u63A5\u590D\u5236\u7684\u65B9\u5F0F\u590D\u5236\u6570\u636E",paraId:1,tocIndex:3},{value:"\u76EE\u6807\u6570\u636E\u8868\uFF1A\u662F\u6307\u590D\u5236\u6DFB\u52A0\u7684\u76EE\u6807\u6570\u636E\u8868\uFF08\u5728\u7EE7\u627F\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u590D\u5236\u7ED9\u5B50\u8868\uFF0C\u76F4\u63A5\u590D\u5236\u53EA\u80FD\u590D\u5236\u6DFB\u52A0\u5230\u672C\u8868\uFF09",paraId:1,tocIndex:3},{value:"\u6A21\u7248\u5B57\u6BB5\uFF1A\u7528\u4E8E\u6307\u5B9A\u8981\u590D\u5236\u7684\u5B57\u6BB5\uFF0C\u53EF\u5168\u9009\uFF0C\u5FC5\u586B",paraId:1,tocIndex:3},{value:"\u5B8C\u6210\u914D\u7F6E\u540E\u70B9\u51FB\u6309\u94AE\u5373\u590D\u5236\u6570\u636E",paraId:2,tocIndex:3},{value:"\u914D\u7F6E\u7684\u6A21\u677F\u5B57\u6BB5\u4F5C\u4E3A\u5C06\u9ED8\u8BA4\u503C\u586B\u5145\u5230\u8868\u5355\u4E2D\uFF0C\u53EF\u4FEE\u6539\u540E\u63D0\u4EA4",paraId:3,tocIndex:4},{value:"\u53EF\u4EE5\u8BBE\u7F6E\u672C\u8868\u6216\u5B50\u8868\u4E3A\u590D\u5236\u6DFB\u52A0\u7684\u76EE\u6807\u8868\uFF08\u7EE7\u627F\u7684\u573A\u666F\u4E0B\uFF09",paraId:4,tocIndex:4},{value:"\u914D\u7F6E\u6A21\u677F\u5B57\u6BB5\uFF1A\u6A21\u677F\u5B57\u6BB5\u5C06\u4F5C\u4E3A\u9ED8\u8BA4\u503C\u586B\u5145\u5230\u8868\u5355\u4E2D\uFF0C\u53EA\u4F1A\u5E26\u51FA\u6709\u52FE\u9009\u7684\u5B57\u6BB5\u503C",paraId:5,tocIndex:4},{value:"\u300C\u8FD0\u5355\u300D\uFF08o2m\uFF09\u662F\u590D\u5236\u7684\u5173\u7CFB\uFF0C\u8C03\u6574\u5176\u5B57\u6BB5\u7EC4\u4EF6\u4E3A\u5B50\u8868\u5355\uFF0C\u53EF\u914D\u7F6E\u5B50\u8868\u5355\u4E2D\u7684\u5B57\u6BB5",paraId:6,tocIndex:4},{value:"\u540C\u6B65\u8868\u5355\u5B57\u6BB5\uFF1A\u5B8C\u6210\u8868\u5355\u914D\u7F6E\u540E\u53EF\u70B9\u51FB\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\uFF0C\u4F1A\u81EA\u52A8\u89E3\u6790\u5C06\u8868\u5355\u4E2D\u5DF2\u914D\u7F6E\u7684\u5B57\u6BB5\u5747\u52FE\u9009\u4E0A\uFF08\u6BCF\u6B21\u8868\u5355\u5B57\u6BB5\u914D\u7F6E\u4FEE\u6539\u4E4B\u540E\u9700\u8981\u624B\u52A8\u518D\u540C\u6B65\u4E00\u6B21\uFF09\uFF0C\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u540E\u53EF\u81EA\u5B9A\u4E49\u8C03\u6574\u6A21\u677F\u5B57\u6BB5",paraId:7,tocIndex:4},{value:"\u70B9\u51FB\u590D\u5236\u64CD\u4F5C\u4F1A\u6253\u5F00\u5F39\u7A97\uFF0C\u5E76\u6309\u7167\u6A21\u677F\u5B57\u6BB5\u5E26\u51FA\u6A21\u677F\u6570\u636E\u4F5C\u4E3A\u8868\u5355\u9ED8\u8BA4\u503C\u586B\u5145\uFF0C\u53EF\u4FEE\u6539\u6570\u636E\u540E\u63D0\u4EA4\u5B8C\u6210\u6570\u636E\u590D\u5236",paraId:8,tocIndex:4},{value:"\u5982\u4E0B\u56FE\u5B8C\u6574\u793A\u4F8B\u4E3A\u8BA2\u5355\u5217\u8868\u914D\u7F6E\u590D\u5236\u64CD\u4F5C",paraId:9,tocIndex:4},{value:"\u5BF9\u4E8E\u4E0D\u540C\u5B57\u6BB5\uFF08\u4E0D\u540C\u5173\u7CFB\u7C7B\u578B\uFF09\u6709\u4E0D\u540C\u7684\u5904\u7406\u903B\u8F91\uFF08\u590D\u5236\u3001\u5F15\u7528\u3001\u9884\u52A0\u8F7D\uFF09\uFF0C\u5176\u4E2D\u8C03\u6574\u5173\u7CFB\u5B57\u6BB5\u7684\u5B57\u6BB5\u7EC4\u4EF6\u4E2D\u4E5F\u4F1A\u5F71\u54CD\u5904\u7406\u903B\u8F91\uFF08Select \u548C Record pikcer \u7528\u4E8E\u5904\u7406\u5F15\u7528\u5173\u7CFB\uFF0CSub-form \u548C Sub-table \u7528\u4E8E\u5904\u7406\u590D\u5236\u5173\u7CFB\uFF09",paraId:10,tocIndex:6},{value:"\u590D\u5236",paraId:11,tocIndex:6},{value:"\u666E\u901A\u5B57\u6BB5\u662F\u590D\u5236",paraId:12,tocIndex:6},{value:`hasOne \u548C hasMany \u7684\u5173\u7CFB\u5B57\u6BB5\u53EA\u80FD\u662F\u590D\u5236\uFF08\u5373\u8BE5\u7C7B\u578B\u7684\u5173\u7CFB\u5B57\u6BB5\u4E0D\u80FD\u7528 Select\u3001Record picker \u4F5C\u4E3A\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u5E94\u4F7F\u7528 Sub-form\u3001Sub-table \u7B49\uFF09 -`,paraId:12,tocIndex:6},{value:"hasOne \u548C hasMany \u5B57\u6BB5\u7EC4\u4EF6\u7684\u53D8\u66F4\u4E0D\u4F1A\u6539\u53D8\u5904\u7406\u903B\u8F91\uFF08\u590D\u5236\uFF09",paraId:13,tocIndex:6},{value:"\u590D\u5236\u7684\u5173\u7CFB\u5B57\u6BB5\uFF0C\u6240\u6709\u7684\u5B50\u5B57\u6BB5\u90FD\u53EF\u4EE5\u88AB\u9009\u62E9",paraId:13,tocIndex:6},{value:"\u5F15\u7528",paraId:14,tocIndex:6},{value:"belongsTo \u548C belongsToMany \u662F\u5F15\u7528",paraId:15,tocIndex:6},{value:"\u5F15\u7528\u662F\u53EF\u80FD\u53D8\u6210\u590D\u5236\u7684\uFF0C\u6BD4\u5982\u5B57\u6BB5\u7EC4\u4EF6\u4ECE select \u8C03\u6574\u4E3A sub-form \u540E\uFF0C\u5173\u7CFB\u5C31\u4ECE\u5F15\u7528\u53D8\u6210\u4E86\u590D\u5236\uFF08\u53D8\u6210\u590D\u5236\u4E4B\u540E\uFF0C\u6240\u6709\u7684\u5B50\u5B57\u6BB5\u90FD\u662F\u53EF\u9009\u7684\uFF09",paraId:15,tocIndex:6},{value:"\u9884\u52A0\u8F7D\uFF1A\u5F15\u7528\u5B57\u6BB5\u91CC\u7684\u5173\u7CFB\u5B57\u6BB5",paraId:16,tocIndex:6},{value:"\u5F15\u7528\u7684\u5173\u7CFB\u5B57\u6BB5\u4E0B\u7684\u5173\u7CFB\u5B57\u6BB5\u4E3A\u9884\u52A0\u8F7D",paraId:17,tocIndex:6},{value:"\u9884\u52A0\u8F7D\u7684\u5173\u7CFB\u5B57\u6BB5\u5728\u5B57\u6BB5\u7EC4\u4EF6\u53D8\u66F4\u540E\u53EF\u80FD\u53D8\u6210\u5F15\u7528\u6216\u8005\u590D\u5236",paraId:17,tocIndex:6},{value:"\u6240\u6709\u7684\u590D\u5236\u5B57\u6BB5\u548C\u5F15\u7528\u5B57\u6BB5\u90FD\u52FE\u9009\u4E0A",paraId:18,tocIndex:7},{value:"\u6240\u6709\u7684\u5173\u7CFB\u7684 fk \u90FD\u4F1A\u8FC7\u6EE4\u6389",paraId:19,tocIndex:8},{value:"\u5982\u679C\u662F\u590D\u5236\u7684\u5173\u7CFB\u6570\u636E pk \u4E5F\u4F1A\u8FC7\u6EE4\u6389",paraId:19,tocIndex:8},{value:"\u5F15\u7528\u548C\u9884\u52A0\u8F7D\u6709 pk \u5B57\u6BB5",paraId:19,tocIndex:8},{value:"\u5728\u5927\u591A\u6570\u573A\u666F\u4E0B\uFF0C\u8868\u5355\u914D\u7F6E\u6D89\u53CA\u7684\u5B57\u6BB5\u975E\u5E38\u7E41\u591A\u3002\u5728\u5904\u7406\u8FD9\u79CD\u590D\u6742\u8868\u5355\u573A\u666F\u65F6\uFF0C\u624B\u52A8\u914D\u7F6E\u6A21\u677F\u5B57\u6BB5\u901A\u5E38\u4F1A\u53D8\u5F97\u975E\u5E38\u7E41\u7410\u3002\u4E3A\u4E86\u89E3\u51B3\u8FD9\u4E2A\u95EE\u9898\uFF0C\u5F15\u5165\u4E86\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\u3002\u8FD9\u4E2A\u6309\u94AE\u7684\u4F5C\u7528\u662F\u81EA\u52A8\u89E3\u6790\u8868\u5355\u5B57\u6BB5\u7684\u914D\u7F6E\uFF0C\u6839\u636E\u5B57\u6BB5\u7C7B\u578B\u548C\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u7684\u914D\u7F6E\u6765\u5904\u7406\u5B57\u6BB5\u590D\u5236\u903B\u8F91\uFF0C\u5305\u62EC\u590D\u5236\u3001\u5F15\u7528\u548C\u9884\u52A0\u8F7D\u3002\u5728\u8FD9\u4E2A\u8FC7\u7A0B\u4E2D\uFF0C\u5DF2\u7ECF\u914D\u7F6E\u51FA\u6765\u7684\u5B57\u6BB5\u4F1A\u9ED8\u8BA4\u88AB\u52FE\u9009\u4E0A",paraId:20,tocIndex:9},{value:"\u6BCF\u5F53\u7528\u6237\u4FEE\u6539\u8868\u5355\u5B57\u6BB5\u914D\u7F6E\u4E4B\u540E\uFF0C\u7CFB\u7EDF\u4E0D\u4F1A\u81EA\u52A8\u540C\u6B65\u8FD9\u4E9B\u53D8\u5316\u3002\u56E0\u6B64\uFF0C\u7528\u6237\u9700\u8981\u624B\u52A8\u70B9\u51FB\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\uFF0C\u4EE5\u4FBF\u5C06\u6700\u65B0\u7684\u914D\u7F6E\u4FE1\u606F\u5E94\u7528\u5230\u6A21\u677F\u914D\u7F6E\u4E2D\u3002",paraId:21,tocIndex:9}],TD={},CD={title:"Amazon S3",toc:"menu",filename:"docs/en-US/plugins/file-manager/amazon-s3.md",lastUpdated:1732240239e3},AD=[{id:"amazon-s3",depth:1,title:"Amazon S3"}],qD=[],ED={},DD={title:"Workflow Request",toc:"menu",filename:"docs/en-US/plugins/workflow-request/index.md",lastUpdated:1732240239e3},OD=[],RD=[],MD={},LD={title:"Contributing",toc:"menu",filename:"docs/en-US/welcome/community/contributing.md",lastUpdated:1732240239e3,description:"The documentation is in the docs directory and follows Markdown syntax"},ND=[{id:"contributing",depth:1,title:"Contributing"},{id:"download",depth:2,title:"Download"},{id:"development-and-testing",depth:2,title:"Development and Testing"},{id:"documentation-preview",depth:2,title:"Documentation preview"},{id:"others",depth:2,title:"Others"}],zD=[{value:"Fork the source code to your own repository",paraId:0,tocIndex:0},{value:"Modify source code",paraId:0,tocIndex:0},{value:"Submit pull request",paraId:0,tocIndex:0},{value:"Sign the CLA",paraId:0,tocIndex:0},{value:`# Replace the following git address with your own repo +`,paraId:80,tocIndex:23},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:81,tocIndex:23},{value:"storage/tar/@nocobase-sample/plugin-field-interface.tar.gz",paraId:81,tocIndex:23},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:81,tocIndex:23},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:82,tocIndex:23},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:81,tocIndex:23}],mD={},hD={title:"\u5B50\u8282\u70B9\u7EC4\u4EF6",toc:"menu",filename:"docs/en-US/plugin-samples/field/sub-field.md",lastUpdated:173254844e4},fD=[{id:"\u5B50\u8282\u70B9\u7EC4\u4EF6",depth:1,title:"\u5B50\u8282\u70B9\u7EC4\u4EF6"}],xD=[],gD={},bD={title:"\u6279\u91CF\u7F16\u8F91",toc:"menu",filename:"docs/en-US/plugins/action-bulk-edit/index.md",lastUpdated:173254844e4,description:"\u6279\u91CF\u7F16\u8F91\u64CD\u4F5C\u7528\u4E8E\u9700\u8981\u4E3A\u4E0D\u540C\u8BB0\u5F55\u7EC4\u914D\u7F6E\u4E0D\u540C\u66F4\u65B0\u903B\u8F91\u7684\u60C5\u51B5\uFF0C\u9002\u7528\u4E8E\u7075\u6D3B\u6027\u8981\u6C42\u8F83\u9AD8\u7684\u6570\u636E\u5904\u7406\u573A\u666F\u3002\u7528\u6237\u70B9\u51FB\u6279\u91CF\u7F16\u8F91\u6309\u94AE\u540E\uFF0C\u7CFB\u7EDF\u4F1A\u5F39\u51FA\u4E00\u4E2A\u914D\u7F6E\u754C\u9762\uFF0C\u5141\u8BB8\u7528\u6237\u4E3A\u6BCF\u4E2A\u5B57\u6BB5\u6307\u5B9A\u4E0D\u540C\u7684\u8D4B\u503C\u903B\u8F91\u3002\u7528\u6237\u53EF\u4EE5\u6839\u636E\u9700\u8981\u4E3A\u6BCF\u4E2A\u8BB0\u5F55\u6307\u5B9A\u7279\u5B9A\u7684\u66F4\u65B0\u65B9\u5F0F"},yD=[{id:"\u6279\u91CF\u7F16\u8F91",depth:1,title:"\u6279\u91CF\u7F16\u8F91"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u6307\u5357",depth:2,title:"\u4F7F\u7528\u6307\u5357"}],wD=[{value:"\u6279\u91CF\u7F16\u8F91\u64CD\u4F5C\u7528\u4E8E\u9700\u8981\u4E3A\u4E0D\u540C\u8BB0\u5F55\u7EC4\u914D\u7F6E\u4E0D\u540C\u66F4\u65B0\u903B\u8F91\u7684\u60C5\u51B5\uFF0C\u9002\u7528\u4E8E\u7075\u6D3B\u6027\u8981\u6C42\u8F83\u9AD8\u7684\u6570\u636E\u5904\u7406\u573A\u666F\u3002\u7528\u6237\u70B9\u51FB\u6279\u91CF\u7F16\u8F91\u6309\u94AE\u540E\uFF0C\u7CFB\u7EDF\u4F1A\u5F39\u51FA\u4E00\u4E2A\u914D\u7F6E\u754C\u9762\uFF0C\u5141\u8BB8\u7528\u6237\u4E3A\u6BCF\u4E2A\u5B57\u6BB5\u6307\u5B9A\u4E0D\u540C\u7684\u8D4B\u503C\u903B\u8F91\u3002\u7528\u6237\u53EF\u4EE5\u6839\u636E\u9700\u8981\u4E3A\u6BCF\u4E2A\u8BB0\u5F55\u6307\u5B9A\u7279\u5B9A\u7684\u66F4\u65B0\u65B9\u5F0F",paraId:0,tocIndex:1},{value:"\u8BBE\u7F6E\u6279\u91CF\u7F16\u8F91\u7684\u6570\u636E\uFF1A\u9009\u4E2D/\u6240\u6709\uFF0C\u9ED8\u8BA4\u4E3A\u9009\u4E2D",paraId:1,tocIndex:3},{value:"\u4E3A\u5B57\u6BB5\u8BBE\u7F6E\u66F4\u65B0\u903B\u8F91\uFF0C\u652F\u6301\u4E3A\u7279\u5B9A\u5B57\u6BB5\u8BBE\u7F6E\u903B\u8F91",paraId:2,tocIndex:3},{value:"\u4E0D\u66F4\u65B0",paraId:3,tocIndex:3},{value:"\u4FEE\u6539\u4E3A\u6307\u5B9A\u503C",paraId:3,tocIndex:3},{value:"\u6E05\u7A7A",paraId:3,tocIndex:3},{value:"\u5982\u56FE\u5728\u8FD0\u5355\u8868\u683C\u533A\u5757\u4E2D\u914D\u7F6E\u6279\u91CF\u7F16\u8F91\u64CD\u4F5C\uFF0C\u9009\u4E2D\u7684\u6570\u636E\uFF0C\u5C06\u8FD0\u8F93\u6A21\u5F0F\u4FEE\u6539\u4E3A\u7A7A\u8FD0\uFF0C\u786E\u8BA4\u9001\u8FBE\u548C\u5B9E\u9645\u5230\u8FBE\u65F6\u95F4\u6E05\u7A7A",paraId:4,tocIndex:3}],kD={},SD={title:"\u590D\u5236",toc:"menu",filename:"docs/en-US/plugins/action-duplicate/index.md",lastUpdated:173254844e4,description:"\u590D\u5236\u64CD\u4F5C\u662F\u4E00\u79CD\u4FBF\u6377\u7684\u65B9\u5F0F\uFF0C\u5141\u8BB8\u7528\u6237\u57FA\u4E8E\u5DF2\u5B58\u5728\u7684\u6570\u636E\u521B\u5EFA\u65B0\u7684\u6570\u636E\u8BB0\u5F55\u3002\u63D0\u4F9B\u4E86\u4E24\u79CD\u64CD\u4F5C\u65B9\u5F0F\uFF1A\u76F4\u63A5\u590D\u5236\u548C\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199\uFF0C\u6309\u94AE\u6743\u9650\u4E0E\u65B0\u5EFA\u64CD\u4F5C\u4E00\u81F4"},UD=[{id:"\u590D\u5236",depth:1,title:"\u590D\u5236"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u4F7F\u7528\u6307\u5357",depth:2,title:"\u4F7F\u7528\u6307\u5357"},{id:"\u76F4\u63A5\u590D\u5236",depth:4,title:"\u76F4\u63A5\u590D\u5236"},{id:"\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199",depth:4,title:"\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199"},{id:"\u8865\u5145\u8BF4\u660E",depth:2,title:"\u8865\u5145\u8BF4\u660E"},{id:"\u590D\u5236\u5F15\u7528\u9884\u52A0\u8F7D\u7684\u8BF4\u660E",depth:4,title:"\u590D\u5236\u3001\u5F15\u7528\u3001\u9884\u52A0\u8F7D\u7684\u8BF4\u660E"},{id:"\u5168\u9009",depth:4,title:"\u5168\u9009"},{id:"\u6A21\u677F\u6570\u636E\u7684\u5904\u7406\u903B\u8F91",depth:4,title:"\u6A21\u677F\u6570\u636E\u7684\u5904\u7406\u903B\u8F91"},{id:"\u5982\u4F55\u7406\u89E3\u540C\u6B65\u8868\u5355\u5B57\u6BB5",depth:4,title:"\u5982\u4F55\u7406\u89E3\u540C\u6B65\u8868\u5355\u5B57\u6BB5"}],PD=[{value:"\u590D\u5236\u64CD\u4F5C\u662F\u4E00\u79CD\u4FBF\u6377\u7684\u65B9\u5F0F\uFF0C\u5141\u8BB8\u7528\u6237\u57FA\u4E8E\u5DF2\u5B58\u5728\u7684\u6570\u636E\u521B\u5EFA\u65B0\u7684\u6570\u636E\u8BB0\u5F55\u3002\u63D0\u4F9B\u4E86\u4E24\u79CD\u64CD\u4F5C\u65B9\u5F0F\uFF1A\u76F4\u63A5\u590D\u5236\u548C\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199\uFF0C\u6309\u94AE\u6743\u9650\u4E0E\u65B0\u5EFA\u64CD\u4F5C\u4E00\u81F4",paraId:0,tocIndex:1},{value:"\u9ED8\u8BA4\u4EE5\u76F4\u63A5\u590D\u5236\u7684\u65B9\u5F0F\u590D\u5236\u6570\u636E",paraId:1,tocIndex:3},{value:"\u76EE\u6807\u6570\u636E\u8868\uFF1A\u662F\u6307\u590D\u5236\u6DFB\u52A0\u7684\u76EE\u6807\u6570\u636E\u8868\uFF08\u5728\u7EE7\u627F\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u590D\u5236\u7ED9\u5B50\u8868\uFF0C\u76F4\u63A5\u590D\u5236\u53EA\u80FD\u590D\u5236\u6DFB\u52A0\u5230\u672C\u8868\uFF09",paraId:1,tocIndex:3},{value:"\u6A21\u7248\u5B57\u6BB5\uFF1A\u7528\u4E8E\u6307\u5B9A\u8981\u590D\u5236\u7684\u5B57\u6BB5\uFF0C\u53EF\u5168\u9009\uFF0C\u5FC5\u586B",paraId:1,tocIndex:3},{value:"\u5B8C\u6210\u914D\u7F6E\u540E\u70B9\u51FB\u6309\u94AE\u5373\u590D\u5236\u6570\u636E",paraId:2,tocIndex:3},{value:"\u914D\u7F6E\u7684\u6A21\u677F\u5B57\u6BB5\u4F5C\u4E3A\u5C06\u9ED8\u8BA4\u503C\u586B\u5145\u5230\u8868\u5355\u4E2D\uFF0C\u53EF\u4FEE\u6539\u540E\u63D0\u4EA4",paraId:3,tocIndex:4},{value:"\u53EF\u4EE5\u8BBE\u7F6E\u672C\u8868\u6216\u5B50\u8868\u4E3A\u590D\u5236\u6DFB\u52A0\u7684\u76EE\u6807\u8868\uFF08\u7EE7\u627F\u7684\u573A\u666F\u4E0B\uFF09",paraId:4,tocIndex:4},{value:"\u914D\u7F6E\u6A21\u677F\u5B57\u6BB5\uFF1A\u6A21\u677F\u5B57\u6BB5\u5C06\u4F5C\u4E3A\u9ED8\u8BA4\u503C\u586B\u5145\u5230\u8868\u5355\u4E2D\uFF0C\u53EA\u4F1A\u5E26\u51FA\u6709\u52FE\u9009\u7684\u5B57\u6BB5\u503C",paraId:5,tocIndex:4},{value:"\u300C\u8FD0\u5355\u300D\uFF08o2m\uFF09\u662F\u590D\u5236\u7684\u5173\u7CFB\uFF0C\u8C03\u6574\u5176\u5B57\u6BB5\u7EC4\u4EF6\u4E3A\u5B50\u8868\u5355\uFF0C\u53EF\u914D\u7F6E\u5B50\u8868\u5355\u4E2D\u7684\u5B57\u6BB5",paraId:6,tocIndex:4},{value:"\u540C\u6B65\u8868\u5355\u5B57\u6BB5\uFF1A\u5B8C\u6210\u8868\u5355\u914D\u7F6E\u540E\u53EF\u70B9\u51FB\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\uFF0C\u4F1A\u81EA\u52A8\u89E3\u6790\u5C06\u8868\u5355\u4E2D\u5DF2\u914D\u7F6E\u7684\u5B57\u6BB5\u5747\u52FE\u9009\u4E0A\uFF08\u6BCF\u6B21\u8868\u5355\u5B57\u6BB5\u914D\u7F6E\u4FEE\u6539\u4E4B\u540E\u9700\u8981\u624B\u52A8\u518D\u540C\u6B65\u4E00\u6B21\uFF09\uFF0C\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u540E\u53EF\u81EA\u5B9A\u4E49\u8C03\u6574\u6A21\u677F\u5B57\u6BB5",paraId:7,tocIndex:4},{value:"\u70B9\u51FB\u590D\u5236\u64CD\u4F5C\u4F1A\u6253\u5F00\u5F39\u7A97\uFF0C\u5E76\u6309\u7167\u6A21\u677F\u5B57\u6BB5\u5E26\u51FA\u6A21\u677F\u6570\u636E\u4F5C\u4E3A\u8868\u5355\u9ED8\u8BA4\u503C\u586B\u5145\uFF0C\u53EF\u4FEE\u6539\u6570\u636E\u540E\u63D0\u4EA4\u5B8C\u6210\u6570\u636E\u590D\u5236",paraId:8,tocIndex:4},{value:"\u5982\u4E0B\u56FE\u5B8C\u6574\u793A\u4F8B\u4E3A\u8BA2\u5355\u5217\u8868\u914D\u7F6E\u590D\u5236\u64CD\u4F5C",paraId:9,tocIndex:4},{value:"\u5BF9\u4E8E\u4E0D\u540C\u5B57\u6BB5\uFF08\u4E0D\u540C\u5173\u7CFB\u7C7B\u578B\uFF09\u6709\u4E0D\u540C\u7684\u5904\u7406\u903B\u8F91\uFF08\u590D\u5236\u3001\u5F15\u7528\u3001\u9884\u52A0\u8F7D\uFF09\uFF0C\u5176\u4E2D\u8C03\u6574\u5173\u7CFB\u5B57\u6BB5\u7684\u5B57\u6BB5\u7EC4\u4EF6\u4E2D\u4E5F\u4F1A\u5F71\u54CD\u5904\u7406\u903B\u8F91\uFF08Select \u548C Record pikcer \u7528\u4E8E\u5904\u7406\u5F15\u7528\u5173\u7CFB\uFF0CSub-form \u548C Sub-table \u7528\u4E8E\u5904\u7406\u590D\u5236\u5173\u7CFB\uFF09",paraId:10,tocIndex:6},{value:"\u590D\u5236",paraId:11,tocIndex:6},{value:"\u666E\u901A\u5B57\u6BB5\u662F\u590D\u5236",paraId:12,tocIndex:6},{value:`hasOne \u548C hasMany \u7684\u5173\u7CFB\u5B57\u6BB5\u53EA\u80FD\u662F\u590D\u5236\uFF08\u5373\u8BE5\u7C7B\u578B\u7684\u5173\u7CFB\u5B57\u6BB5\u4E0D\u80FD\u7528 Select\u3001Record picker \u4F5C\u4E3A\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u5E94\u4F7F\u7528 Sub-form\u3001Sub-table \u7B49\uFF09 +`,paraId:12,tocIndex:6},{value:"hasOne \u548C hasMany \u5B57\u6BB5\u7EC4\u4EF6\u7684\u53D8\u66F4\u4E0D\u4F1A\u6539\u53D8\u5904\u7406\u903B\u8F91\uFF08\u590D\u5236\uFF09",paraId:13,tocIndex:6},{value:"\u590D\u5236\u7684\u5173\u7CFB\u5B57\u6BB5\uFF0C\u6240\u6709\u7684\u5B50\u5B57\u6BB5\u90FD\u53EF\u4EE5\u88AB\u9009\u62E9",paraId:13,tocIndex:6},{value:"\u5F15\u7528",paraId:14,tocIndex:6},{value:"belongsTo \u548C belongsToMany \u662F\u5F15\u7528",paraId:15,tocIndex:6},{value:"\u5F15\u7528\u662F\u53EF\u80FD\u53D8\u6210\u590D\u5236\u7684\uFF0C\u6BD4\u5982\u5B57\u6BB5\u7EC4\u4EF6\u4ECE select \u8C03\u6574\u4E3A sub-form \u540E\uFF0C\u5173\u7CFB\u5C31\u4ECE\u5F15\u7528\u53D8\u6210\u4E86\u590D\u5236\uFF08\u53D8\u6210\u590D\u5236\u4E4B\u540E\uFF0C\u6240\u6709\u7684\u5B50\u5B57\u6BB5\u90FD\u662F\u53EF\u9009\u7684\uFF09",paraId:15,tocIndex:6},{value:"\u9884\u52A0\u8F7D\uFF1A\u5F15\u7528\u5B57\u6BB5\u91CC\u7684\u5173\u7CFB\u5B57\u6BB5",paraId:16,tocIndex:6},{value:"\u5F15\u7528\u7684\u5173\u7CFB\u5B57\u6BB5\u4E0B\u7684\u5173\u7CFB\u5B57\u6BB5\u4E3A\u9884\u52A0\u8F7D",paraId:17,tocIndex:6},{value:"\u9884\u52A0\u8F7D\u7684\u5173\u7CFB\u5B57\u6BB5\u5728\u5B57\u6BB5\u7EC4\u4EF6\u53D8\u66F4\u540E\u53EF\u80FD\u53D8\u6210\u5F15\u7528\u6216\u8005\u590D\u5236",paraId:17,tocIndex:6},{value:"\u6240\u6709\u7684\u590D\u5236\u5B57\u6BB5\u548C\u5F15\u7528\u5B57\u6BB5\u90FD\u52FE\u9009\u4E0A",paraId:18,tocIndex:7},{value:"\u6240\u6709\u7684\u5173\u7CFB\u7684 fk \u90FD\u4F1A\u8FC7\u6EE4\u6389",paraId:19,tocIndex:8},{value:"\u5982\u679C\u662F\u590D\u5236\u7684\u5173\u7CFB\u6570\u636E pk \u4E5F\u4F1A\u8FC7\u6EE4\u6389",paraId:19,tocIndex:8},{value:"\u5F15\u7528\u548C\u9884\u52A0\u8F7D\u6709 pk \u5B57\u6BB5",paraId:19,tocIndex:8},{value:"\u5728\u5927\u591A\u6570\u573A\u666F\u4E0B\uFF0C\u8868\u5355\u914D\u7F6E\u6D89\u53CA\u7684\u5B57\u6BB5\u975E\u5E38\u7E41\u591A\u3002\u5728\u5904\u7406\u8FD9\u79CD\u590D\u6742\u8868\u5355\u573A\u666F\u65F6\uFF0C\u624B\u52A8\u914D\u7F6E\u6A21\u677F\u5B57\u6BB5\u901A\u5E38\u4F1A\u53D8\u5F97\u975E\u5E38\u7E41\u7410\u3002\u4E3A\u4E86\u89E3\u51B3\u8FD9\u4E2A\u95EE\u9898\uFF0C\u5F15\u5165\u4E86\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\u3002\u8FD9\u4E2A\u6309\u94AE\u7684\u4F5C\u7528\u662F\u81EA\u52A8\u89E3\u6790\u8868\u5355\u5B57\u6BB5\u7684\u914D\u7F6E\uFF0C\u6839\u636E\u5B57\u6BB5\u7C7B\u578B\u548C\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u7684\u914D\u7F6E\u6765\u5904\u7406\u5B57\u6BB5\u590D\u5236\u903B\u8F91\uFF0C\u5305\u62EC\u590D\u5236\u3001\u5F15\u7528\u548C\u9884\u52A0\u8F7D\u3002\u5728\u8FD9\u4E2A\u8FC7\u7A0B\u4E2D\uFF0C\u5DF2\u7ECF\u914D\u7F6E\u51FA\u6765\u7684\u5B57\u6BB5\u4F1A\u9ED8\u8BA4\u88AB\u52FE\u9009\u4E0A",paraId:20,tocIndex:9},{value:"\u6BCF\u5F53\u7528\u6237\u4FEE\u6539\u8868\u5355\u5B57\u6BB5\u914D\u7F6E\u4E4B\u540E\uFF0C\u7CFB\u7EDF\u4E0D\u4F1A\u81EA\u52A8\u540C\u6B65\u8FD9\u4E9B\u53D8\u5316\u3002\u56E0\u6B64\uFF0C\u7528\u6237\u9700\u8981\u624B\u52A8\u70B9\u51FB\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\uFF0C\u4EE5\u4FBF\u5C06\u6700\u65B0\u7684\u914D\u7F6E\u4FE1\u606F\u5E94\u7528\u5230\u6A21\u677F\u914D\u7F6E\u4E2D\u3002",paraId:21,tocIndex:9}],TD={},CD={title:"Amazon S3",toc:"menu",filename:"docs/en-US/plugins/file-manager/amazon-s3.md",lastUpdated:173254844e4},AD=[{id:"amazon-s3",depth:1,title:"Amazon S3"}],qD=[],ED={},DD={title:"Workflow Request",toc:"menu",filename:"docs/en-US/plugins/workflow-request/index.md",lastUpdated:173254844e4},OD=[],RD=[],MD={},LD={title:"Contributing",toc:"menu",filename:"docs/en-US/welcome/community/contributing.md",lastUpdated:173254844e4,description:"The documentation is in the docs directory and follows Markdown syntax"},ND=[{id:"contributing",depth:1,title:"Contributing"},{id:"download",depth:2,title:"Download"},{id:"development-and-testing",depth:2,title:"Development and Testing"},{id:"documentation-preview",depth:2,title:"Documentation preview"},{id:"others",depth:2,title:"Others"}],zD=[{value:"Fork the source code to your own repository",paraId:0,tocIndex:0},{value:"Modify source code",paraId:0,tocIndex:0},{value:"Submit pull request",paraId:0,tocIndex:0},{value:"Sign the CLA",paraId:0,tocIndex:0},{value:`# Replace the following git address with your own repo git clone https://github.com/nocobase/nocobase.git cd nocobase yarn install @@ -13762,21 +13814,21 @@ yarn doc --lang=en-US `,paraId:3,tocIndex:3},{value:"The documentation is in the docs directory and follows Markdown syntax",paraId:4,tocIndex:3},{value:`|- /docs/ |- en-US |- zh-CN -`,paraId:5,tocIndex:3},{value:"For more CLI instructions, please ",paraId:6,tocIndex:4},{value:"refer to the NocoBase CLI chapter",paraId:6,tocIndex:4},{value:".",paraId:6,tocIndex:4}],FD={},BD={title:"Translations",toc:"menu",filename:"docs/en-US/welcome/community/translations.md",lastUpdated:1732240239e3,description:"The default language of NocoBase is English, currently English, Simplified Chinese, Japanese, Russian, Turkish are supported. You can help NocoBase to translate into your language."},jD=[{id:"translations",depth:1,title:"Translations"}],HD=[{value:"The default language of NocoBase is English, currently English, Simplified Chinese, Japanese, Russian, Turkish are supported. You can help NocoBase to translate into your language.",paraId:0,tocIndex:0},{value:"The NocoBase language files are located at the following locations.",paraId:1,tocIndex:0},{value:`packages/core/**/src/locale +`,paraId:5,tocIndex:3},{value:"For more CLI instructions, please ",paraId:6,tocIndex:4},{value:"refer to the NocoBase CLI chapter",paraId:6,tocIndex:4},{value:".",paraId:6,tocIndex:4}],FD={},BD={title:"Translations",toc:"menu",filename:"docs/en-US/welcome/community/translations.md",lastUpdated:173254844e4,description:"The default language of NocoBase is English, currently English, Simplified Chinese, Japanese, Russian, Turkish are supported. You can help NocoBase to translate into your language."},jD=[{id:"translations",depth:1,title:"Translations"}],HD=[{value:"The default language of NocoBase is English, currently English, Simplified Chinese, Japanese, Russian, Turkish are supported. You can help NocoBase to translate into your language.",paraId:0,tocIndex:0},{value:"The NocoBase language files are located at the following locations.",paraId:1,tocIndex:0},{value:`packages/core/**/src/locale packages/plugins/**/src/locale -`,paraId:2,tocIndex:0},{value:"Among other things, the translation of the NocoBase core is mainly located here",paraId:3,tocIndex:0},{value:"https://github.com/nocobase/nocobase/tree/main/packages/core/client/src/locale",paraId:4,tocIndex:0},{value:"Please copy en_US.ts, name it with the name of the language you want to add, and then translate the strings in it. Once the translation is done, please submit it to NocoBase via pull request and we will add it to the list of languages. Then you will see the new languages in the system configuration, where you can configure which languages you want to display for users to choose.",paraId:5,tocIndex:0},{value:"The following table lists the Language Culture Name, Locale File Name, Display Name.",paraId:6,tocIndex:0},{value:"Language Culture Name",paraId:7,tocIndex:0},{value:"Locale File Name",paraId:7,tocIndex:0},{value:"Display Name",paraId:7,tocIndex:0},{value:"af-ZA",paraId:7,tocIndex:0},{value:"af_ZA.ts",paraId:7,tocIndex:0},{value:"Afrikaans - South Africa",paraId:7,tocIndex:0},{value:"sq-AL",paraId:7,tocIndex:0},{value:"sq_AL.ts",paraId:7,tocIndex:0},{value:"Albanian - Albania",paraId:7,tocIndex:0},{value:"ar-DZ",paraId:7,tocIndex:0},{value:"ar_DZ.ts",paraId:7,tocIndex:0},{value:"Arabic - Algeria",paraId:7,tocIndex:0},{value:"ar-BH",paraId:7,tocIndex:0},{value:"ar_BH.ts",paraId:7,tocIndex:0},{value:"Arabic - Bahrain",paraId:7,tocIndex:0},{value:"ar-EG",paraId:7,tocIndex:0},{value:"ar_EG.ts",paraId:7,tocIndex:0},{value:"Arabic - Egypt",paraId:7,tocIndex:0},{value:"ar-IQ",paraId:7,tocIndex:0},{value:"ar_IQ.ts",paraId:7,tocIndex:0},{value:"Arabic - Iraq",paraId:7,tocIndex:0},{value:"ar-JO",paraId:7,tocIndex:0},{value:"ar_JO.ts",paraId:7,tocIndex:0},{value:"Arabic - Jordan",paraId:7,tocIndex:0},{value:"ar-KW",paraId:7,tocIndex:0},{value:"ar_KW.ts",paraId:7,tocIndex:0},{value:"Arabic - Kuwait",paraId:7,tocIndex:0},{value:"ar-LB",paraId:7,tocIndex:0},{value:"ar_LB.ts",paraId:7,tocIndex:0},{value:"Arabic - Lebanon",paraId:7,tocIndex:0},{value:"ar-LY",paraId:7,tocIndex:0},{value:"ar_LY.ts",paraId:7,tocIndex:0},{value:"Arabic - Libya",paraId:7,tocIndex:0},{value:"ar-MA",paraId:7,tocIndex:0},{value:"ar_MA.ts",paraId:7,tocIndex:0},{value:"Arabic - Morocco",paraId:7,tocIndex:0},{value:"ar-OM",paraId:7,tocIndex:0},{value:"ar_OM.ts",paraId:7,tocIndex:0},{value:"Arabic - Oman",paraId:7,tocIndex:0},{value:"ar-QA",paraId:7,tocIndex:0},{value:"ar_QA.ts",paraId:7,tocIndex:0},{value:"Arabic - Qatar",paraId:7,tocIndex:0},{value:"ar-SA",paraId:7,tocIndex:0},{value:"ar_SA.ts",paraId:7,tocIndex:0},{value:"Arabic - Saudi Arabia",paraId:7,tocIndex:0},{value:"ar-SY",paraId:7,tocIndex:0},{value:"ar_SY.ts",paraId:7,tocIndex:0},{value:"Arabic - Syria",paraId:7,tocIndex:0},{value:"ar-TN",paraId:7,tocIndex:0},{value:"ar_TN.ts",paraId:7,tocIndex:0},{value:"Arabic - Tunisia",paraId:7,tocIndex:0},{value:"ar-AE",paraId:7,tocIndex:0},{value:"ar_AE.ts",paraId:7,tocIndex:0},{value:"Arabic - United Arab Emirates",paraId:7,tocIndex:0},{value:"ar-YE",paraId:7,tocIndex:0},{value:"ar_YE.ts",paraId:7,tocIndex:0},{value:"Arabic - Yemen",paraId:7,tocIndex:0},{value:"hy-AM",paraId:7,tocIndex:0},{value:"hy_AM.ts",paraId:7,tocIndex:0},{value:"Armenian - Armenia",paraId:7,tocIndex:0},{value:"Cy-az-AZ",paraId:7,tocIndex:0},{value:"Cy_az_AZ.ts",paraId:7,tocIndex:0},{value:"Azeri (Cyrillic) - Azerbaijan",paraId:7,tocIndex:0},{value:"Lt-az-AZ",paraId:7,tocIndex:0},{value:"Lt_az_AZ.ts",paraId:7,tocIndex:0},{value:"Azeri (Latin) - Azerbaijan",paraId:7,tocIndex:0},{value:"eu-ES",paraId:7,tocIndex:0},{value:"eu_ES.ts",paraId:7,tocIndex:0},{value:"Basque - Basque",paraId:7,tocIndex:0},{value:"be-BY",paraId:7,tocIndex:0},{value:"be_BY.ts",paraId:7,tocIndex:0},{value:"Belarusian - Belarus",paraId:7,tocIndex:0},{value:"bg-BG",paraId:7,tocIndex:0},{value:"bg_BG.ts",paraId:7,tocIndex:0},{value:"Bulgarian - Bulgaria",paraId:7,tocIndex:0},{value:"ca-ES",paraId:7,tocIndex:0},{value:"ca_ES.ts",paraId:7,tocIndex:0},{value:"Catalan - Catalan",paraId:7,tocIndex:0},{value:"zh-CN",paraId:7,tocIndex:0},{value:"zh_CN.ts",paraId:7,tocIndex:0},{value:"Chinese - China",paraId:7,tocIndex:0},{value:"zh-HK",paraId:7,tocIndex:0},{value:"zh_HK.ts",paraId:7,tocIndex:0},{value:"Chinese - Hong Kong SAR",paraId:7,tocIndex:0},{value:"zh-MO",paraId:7,tocIndex:0},{value:"zh_MO.ts",paraId:7,tocIndex:0},{value:"Chinese - Macau SAR",paraId:7,tocIndex:0},{value:"zh-SG",paraId:7,tocIndex:0},{value:"zh_SG.ts",paraId:7,tocIndex:0},{value:"Chinese - Singapore",paraId:7,tocIndex:0},{value:"zh-TW",paraId:7,tocIndex:0},{value:"zh_TW.ts",paraId:7,tocIndex:0},{value:"Chinese - Taiwan",paraId:7,tocIndex:0},{value:"zh-CHS",paraId:7,tocIndex:0},{value:"zh_CHS.ts",paraId:7,tocIndex:0},{value:"Chinese (Simplified)",paraId:7,tocIndex:0},{value:"zh-CHT",paraId:7,tocIndex:0},{value:"zh_CHT.ts",paraId:7,tocIndex:0},{value:"Chinese (Traditional)",paraId:7,tocIndex:0},{value:"hr-HR",paraId:7,tocIndex:0},{value:"hr_HR.ts",paraId:7,tocIndex:0},{value:"Croatian - Croatia",paraId:7,tocIndex:0},{value:"cs-CZ",paraId:7,tocIndex:0},{value:"cs_CZ.ts",paraId:7,tocIndex:0},{value:"Czech - Czech Republic",paraId:7,tocIndex:0},{value:"da-DK",paraId:7,tocIndex:0},{value:"da_DK.ts",paraId:7,tocIndex:0},{value:"Danish - Denmark",paraId:7,tocIndex:0},{value:"div-MV",paraId:7,tocIndex:0},{value:"div_MV.ts",paraId:7,tocIndex:0},{value:"Dhivehi - Maldives",paraId:7,tocIndex:0},{value:"nl-BE",paraId:7,tocIndex:0},{value:"nl_BE.ts",paraId:7,tocIndex:0},{value:"Dutch - Belgium",paraId:7,tocIndex:0},{value:"nl-NL",paraId:7,tocIndex:0},{value:"nl_NL.ts",paraId:7,tocIndex:0},{value:"Dutch - The Netherlands",paraId:7,tocIndex:0},{value:"en-AU",paraId:7,tocIndex:0},{value:"en_AU.ts",paraId:7,tocIndex:0},{value:"English - Australia",paraId:7,tocIndex:0},{value:"en-BZ",paraId:7,tocIndex:0},{value:"en_BZ.ts",paraId:7,tocIndex:0},{value:"English - Belize",paraId:7,tocIndex:0},{value:"en-CA",paraId:7,tocIndex:0},{value:"en_CA.ts",paraId:7,tocIndex:0},{value:"English - Canada",paraId:7,tocIndex:0},{value:"en-CB",paraId:7,tocIndex:0},{value:"en_CB.ts",paraId:7,tocIndex:0},{value:"English - Caribbean",paraId:7,tocIndex:0},{value:"en-IE",paraId:7,tocIndex:0},{value:"en_IE.ts",paraId:7,tocIndex:0},{value:"English - Ireland",paraId:7,tocIndex:0},{value:"en-JM",paraId:7,tocIndex:0},{value:"en_JM.ts",paraId:7,tocIndex:0},{value:"English - Jamaica",paraId:7,tocIndex:0},{value:"en-NZ",paraId:7,tocIndex:0},{value:"en_NZ.ts",paraId:7,tocIndex:0},{value:"English - New Zealand",paraId:7,tocIndex:0},{value:"en-PH",paraId:7,tocIndex:0},{value:"en_PH.ts",paraId:7,tocIndex:0},{value:"English - Philippines",paraId:7,tocIndex:0},{value:"en-ZA",paraId:7,tocIndex:0},{value:"en_ZA.ts",paraId:7,tocIndex:0},{value:"English - South Africa",paraId:7,tocIndex:0},{value:"en-TT",paraId:7,tocIndex:0},{value:"en_TT.ts",paraId:7,tocIndex:0},{value:"English - Trinidad and Tobago",paraId:7,tocIndex:0},{value:"en-GB",paraId:7,tocIndex:0},{value:"en_GB.ts",paraId:7,tocIndex:0},{value:"English - United Kingdom",paraId:7,tocIndex:0},{value:"en-US",paraId:7,tocIndex:0},{value:"en_US.ts",paraId:7,tocIndex:0},{value:"English - United States",paraId:7,tocIndex:0},{value:"en-ZW",paraId:7,tocIndex:0},{value:"en_ZW.ts",paraId:7,tocIndex:0},{value:"English - Zimbabwe",paraId:7,tocIndex:0},{value:"et-EE",paraId:7,tocIndex:0},{value:"et_EE.ts",paraId:7,tocIndex:0},{value:"Estonian - Estonia",paraId:7,tocIndex:0},{value:"fo-FO",paraId:7,tocIndex:0},{value:"fo_FO.ts",paraId:7,tocIndex:0},{value:"Faroese - Faroe Islands",paraId:7,tocIndex:0},{value:"fa-IR",paraId:7,tocIndex:0},{value:"fa_IR.ts",paraId:7,tocIndex:0},{value:"Farsi - Iran",paraId:7,tocIndex:0},{value:"fi-FI",paraId:7,tocIndex:0},{value:"fi_FI.ts",paraId:7,tocIndex:0},{value:"Finnish - Finland",paraId:7,tocIndex:0},{value:"fr-BE",paraId:7,tocIndex:0},{value:"fr_BE.ts",paraId:7,tocIndex:0},{value:"French - Belgium",paraId:7,tocIndex:0},{value:"fr-CA",paraId:7,tocIndex:0},{value:"fr_CA.ts",paraId:7,tocIndex:0},{value:"French - Canada",paraId:7,tocIndex:0},{value:"fr-FR",paraId:7,tocIndex:0},{value:"fr_FR.ts",paraId:7,tocIndex:0},{value:"French - France",paraId:7,tocIndex:0},{value:"fr-LU",paraId:7,tocIndex:0},{value:"fr_LU.ts",paraId:7,tocIndex:0},{value:"French - Luxembourg",paraId:7,tocIndex:0},{value:"fr-MC",paraId:7,tocIndex:0},{value:"fr_MC.ts",paraId:7,tocIndex:0},{value:"French - Monaco",paraId:7,tocIndex:0},{value:"fr-CH",paraId:7,tocIndex:0},{value:"fr_CH.ts",paraId:7,tocIndex:0},{value:"French - Switzerland",paraId:7,tocIndex:0},{value:"gl-ES",paraId:7,tocIndex:0},{value:"gl_ES.ts",paraId:7,tocIndex:0},{value:"Galician - Galician",paraId:7,tocIndex:0},{value:"ka-GE",paraId:7,tocIndex:0},{value:"ka_GE.ts",paraId:7,tocIndex:0},{value:"Georgian - Georgia",paraId:7,tocIndex:0},{value:"de-AT",paraId:7,tocIndex:0},{value:"de_AT.ts",paraId:7,tocIndex:0},{value:"German - Austria",paraId:7,tocIndex:0},{value:"de-DE",paraId:7,tocIndex:0},{value:"de_DE.ts",paraId:7,tocIndex:0},{value:"German - Germany",paraId:7,tocIndex:0},{value:"de-LI",paraId:7,tocIndex:0},{value:"de_LI.ts",paraId:7,tocIndex:0},{value:"German - Liechtenstein",paraId:7,tocIndex:0},{value:"de-LU",paraId:7,tocIndex:0},{value:"de_LU.ts",paraId:7,tocIndex:0},{value:"German - Luxembourg",paraId:7,tocIndex:0},{value:"de-CH",paraId:7,tocIndex:0},{value:"de_CH.ts",paraId:7,tocIndex:0},{value:"German - Switzerland",paraId:7,tocIndex:0},{value:"el-GR",paraId:7,tocIndex:0},{value:"el_GR.ts",paraId:7,tocIndex:0},{value:"Greek - Greece",paraId:7,tocIndex:0},{value:"gu-IN",paraId:7,tocIndex:0},{value:"gu_IN.ts",paraId:7,tocIndex:0},{value:"Gujarati - India",paraId:7,tocIndex:0},{value:"he-IL",paraId:7,tocIndex:0},{value:"he_IL.ts",paraId:7,tocIndex:0},{value:"Hebrew - Israel",paraId:7,tocIndex:0},{value:"hi-IN",paraId:7,tocIndex:0},{value:"hi_IN.ts",paraId:7,tocIndex:0},{value:"Hindi - India",paraId:7,tocIndex:0},{value:"hu-HU",paraId:7,tocIndex:0},{value:"hu_HU.ts",paraId:7,tocIndex:0},{value:"Hungarian - Hungary",paraId:7,tocIndex:0},{value:"is-IS",paraId:7,tocIndex:0},{value:"is_IS.ts",paraId:7,tocIndex:0},{value:"Icelandic - Iceland",paraId:7,tocIndex:0},{value:"id-ID",paraId:7,tocIndex:0},{value:"id_ID.ts",paraId:7,tocIndex:0},{value:"Indonesian - Indonesia",paraId:7,tocIndex:0},{value:"it-IT",paraId:7,tocIndex:0},{value:"it_IT.ts",paraId:7,tocIndex:0},{value:"Italian - Italy",paraId:7,tocIndex:0},{value:"it-CH",paraId:7,tocIndex:0},{value:"it_CH.ts",paraId:7,tocIndex:0},{value:"Italian - Switzerland",paraId:7,tocIndex:0},{value:"ja-JP",paraId:7,tocIndex:0},{value:"ja_JP.ts",paraId:7,tocIndex:0},{value:"Japanese - Japan",paraId:7,tocIndex:0},{value:"kn-IN",paraId:7,tocIndex:0},{value:"kn_IN.ts",paraId:7,tocIndex:0},{value:"Kannada - India",paraId:7,tocIndex:0},{value:"kk-KZ",paraId:7,tocIndex:0},{value:"kk_KZ.ts",paraId:7,tocIndex:0},{value:"Kazakh - Kazakhstan",paraId:7,tocIndex:0},{value:"kok-IN",paraId:7,tocIndex:0},{value:"kok_IN.ts",paraId:7,tocIndex:0},{value:"Konkani - India",paraId:7,tocIndex:0},{value:"ko-KR",paraId:7,tocIndex:0},{value:"ko_KR.ts",paraId:7,tocIndex:0},{value:"Korean - Korea",paraId:7,tocIndex:0},{value:"ky-KZ",paraId:7,tocIndex:0},{value:"ky_KZ.ts",paraId:7,tocIndex:0},{value:"Kyrgyz - Kazakhstan",paraId:7,tocIndex:0},{value:"lv-LV",paraId:7,tocIndex:0},{value:"lv_LV.ts",paraId:7,tocIndex:0},{value:"Latvian - Latvia",paraId:7,tocIndex:0},{value:"lt-LT",paraId:7,tocIndex:0},{value:"lt_LT.ts",paraId:7,tocIndex:0},{value:"Lithuanian - Lithuania",paraId:7,tocIndex:0},{value:"mk-MK",paraId:7,tocIndex:0},{value:"mk_MK.ts",paraId:7,tocIndex:0},{value:"Macedonian (FYROM)",paraId:7,tocIndex:0},{value:"ms-BN",paraId:7,tocIndex:0},{value:"ms_BN.ts",paraId:7,tocIndex:0},{value:"Malay - Brunei",paraId:7,tocIndex:0},{value:"ms-MY",paraId:7,tocIndex:0},{value:"ms_MY.ts",paraId:7,tocIndex:0},{value:"Malay - Malaysia",paraId:7,tocIndex:0},{value:"mr-IN",paraId:7,tocIndex:0},{value:"mr_IN.ts",paraId:7,tocIndex:0},{value:"Marathi - India",paraId:7,tocIndex:0},{value:"mn-MN",paraId:7,tocIndex:0},{value:"mn_MN.ts",paraId:7,tocIndex:0},{value:"Mongolian - Mongolia",paraId:7,tocIndex:0},{value:"nb-NO",paraId:7,tocIndex:0},{value:"nb_NO.ts",paraId:7,tocIndex:0},{value:"Norwegian (Bokm\xC3\xA5l) - Norway",paraId:7,tocIndex:0},{value:"nn-NO",paraId:7,tocIndex:0},{value:"nn_NO.ts",paraId:7,tocIndex:0},{value:"Norwegian (Nynorsk) - Norway",paraId:7,tocIndex:0},{value:"pl-PL",paraId:7,tocIndex:0},{value:"pl_PL.ts",paraId:7,tocIndex:0},{value:"Polish - Poland",paraId:7,tocIndex:0},{value:"pt-BR",paraId:7,tocIndex:0},{value:"pt_BR.ts",paraId:7,tocIndex:0},{value:"Portuguese - Brazil",paraId:7,tocIndex:0},{value:"pt-PT",paraId:7,tocIndex:0},{value:"pt_PT.ts",paraId:7,tocIndex:0},{value:"Portuguese - Portugal",paraId:7,tocIndex:0},{value:"pa-IN",paraId:7,tocIndex:0},{value:"pa_IN.ts",paraId:7,tocIndex:0},{value:"Punjabi - India",paraId:7,tocIndex:0},{value:"ro-RO",paraId:7,tocIndex:0},{value:"ro_RO.ts",paraId:7,tocIndex:0},{value:"Romanian - Romania",paraId:7,tocIndex:0},{value:"ru-RU",paraId:7,tocIndex:0},{value:"ru_RU.ts",paraId:7,tocIndex:0},{value:"Russian - Russia",paraId:7,tocIndex:0},{value:"sa-IN",paraId:7,tocIndex:0},{value:"sa_IN.ts",paraId:7,tocIndex:0},{value:"Sanskrit - India",paraId:7,tocIndex:0},{value:"Cy-sr-SP",paraId:7,tocIndex:0},{value:"Cy_sr_SP.ts",paraId:7,tocIndex:0},{value:"Serbian (Cyrillic) - Serbia",paraId:7,tocIndex:0},{value:"Lt-sr-SP",paraId:7,tocIndex:0},{value:"Lt_sr_SP.ts",paraId:7,tocIndex:0},{value:"Serbian (Latin) - Serbia",paraId:7,tocIndex:0},{value:"sk-SK",paraId:7,tocIndex:0},{value:"sk_SK.ts",paraId:7,tocIndex:0},{value:"Slovak - Slovakia",paraId:7,tocIndex:0},{value:"sl-SI",paraId:7,tocIndex:0},{value:"sl_SI.ts",paraId:7,tocIndex:0},{value:"Slovenian - Slovenia",paraId:7,tocIndex:0},{value:"es-AR",paraId:7,tocIndex:0},{value:"es_AR.ts",paraId:7,tocIndex:0},{value:"Spanish - Argentina",paraId:7,tocIndex:0},{value:"es-BO",paraId:7,tocIndex:0},{value:"es_BO.ts",paraId:7,tocIndex:0},{value:"Spanish - Bolivia",paraId:7,tocIndex:0},{value:"es-CL",paraId:7,tocIndex:0},{value:"es_CL.ts",paraId:7,tocIndex:0},{value:"Spanish - Chile",paraId:7,tocIndex:0},{value:"es-CO",paraId:7,tocIndex:0},{value:"es_CO.ts",paraId:7,tocIndex:0},{value:"Spanish - Colombia",paraId:7,tocIndex:0},{value:"es-CR",paraId:7,tocIndex:0},{value:"es_CR.ts",paraId:7,tocIndex:0},{value:"Spanish - Costa Rica",paraId:7,tocIndex:0},{value:"es-DO",paraId:7,tocIndex:0},{value:"es_DO.ts",paraId:7,tocIndex:0},{value:"Spanish - Dominican Republic",paraId:7,tocIndex:0},{value:"es-EC",paraId:7,tocIndex:0},{value:"es_EC.ts",paraId:7,tocIndex:0},{value:"Spanish - Ecuador",paraId:7,tocIndex:0},{value:"es-SV",paraId:7,tocIndex:0},{value:"es_SV.ts",paraId:7,tocIndex:0},{value:"Spanish - El Salvador",paraId:7,tocIndex:0},{value:"es-GT",paraId:7,tocIndex:0},{value:"es_GT.ts",paraId:7,tocIndex:0},{value:"Spanish - Guatemala",paraId:7,tocIndex:0},{value:"es-HN",paraId:7,tocIndex:0},{value:"es_HN.ts",paraId:7,tocIndex:0},{value:"Spanish - Honduras",paraId:7,tocIndex:0},{value:"es-MX",paraId:7,tocIndex:0},{value:"es_MX.ts",paraId:7,tocIndex:0},{value:"Spanish - Mexico",paraId:7,tocIndex:0},{value:"es-NI",paraId:7,tocIndex:0},{value:"es_NI.ts",paraId:7,tocIndex:0},{value:"Spanish - Nicaragua",paraId:7,tocIndex:0},{value:"es-PA",paraId:7,tocIndex:0},{value:"es_PA.ts",paraId:7,tocIndex:0},{value:"Spanish - Panama",paraId:7,tocIndex:0},{value:"es-PY",paraId:7,tocIndex:0},{value:"es_PY.ts",paraId:7,tocIndex:0},{value:"Spanish - Paraguay",paraId:7,tocIndex:0},{value:"es-PE",paraId:7,tocIndex:0},{value:"es_PE.ts",paraId:7,tocIndex:0},{value:"Spanish - Peru",paraId:7,tocIndex:0},{value:"es-PR",paraId:7,tocIndex:0},{value:"es_PR.ts",paraId:7,tocIndex:0},{value:"Spanish - Puerto Rico",paraId:7,tocIndex:0},{value:"es-ES",paraId:7,tocIndex:0},{value:"es_ES.ts",paraId:7,tocIndex:0},{value:"Spanish - Spain",paraId:7,tocIndex:0},{value:"es-UY",paraId:7,tocIndex:0},{value:"es_UY.ts",paraId:7,tocIndex:0},{value:"Spanish - Uruguay",paraId:7,tocIndex:0},{value:"es-VE",paraId:7,tocIndex:0},{value:"es_VE.ts",paraId:7,tocIndex:0},{value:"Spanish - Venezuela",paraId:7,tocIndex:0},{value:"sw-KE",paraId:7,tocIndex:0},{value:"sw_KE.ts",paraId:7,tocIndex:0},{value:"Swahili - Kenya",paraId:7,tocIndex:0},{value:"sv-FI",paraId:7,tocIndex:0},{value:"sv_FI.ts",paraId:7,tocIndex:0},{value:"Swedish - Finland",paraId:7,tocIndex:0},{value:"sv-SE",paraId:7,tocIndex:0},{value:"sv_SE.ts",paraId:7,tocIndex:0},{value:"Swedish - Sweden",paraId:7,tocIndex:0},{value:"syr-SY",paraId:7,tocIndex:0},{value:"syr_SY.ts",paraId:7,tocIndex:0},{value:"Syriac - Syria",paraId:7,tocIndex:0},{value:"ta-IN",paraId:7,tocIndex:0},{value:"ta_IN.ts",paraId:7,tocIndex:0},{value:"Tamil - India",paraId:7,tocIndex:0},{value:"tt-RU",paraId:7,tocIndex:0},{value:"tt_RU.ts",paraId:7,tocIndex:0},{value:"Tatar - Russia",paraId:7,tocIndex:0},{value:"te-IN",paraId:7,tocIndex:0},{value:"te_IN.ts",paraId:7,tocIndex:0},{value:"Telugu - India",paraId:7,tocIndex:0},{value:"th-TH",paraId:7,tocIndex:0},{value:"th_TH.ts",paraId:7,tocIndex:0},{value:"Thai - Thailand",paraId:7,tocIndex:0},{value:"tr-TR",paraId:7,tocIndex:0},{value:"tr_TR.ts",paraId:7,tocIndex:0},{value:"Turkish - Turkey",paraId:7,tocIndex:0},{value:"uk-UA",paraId:7,tocIndex:0},{value:"uk_UA.ts",paraId:7,tocIndex:0},{value:"Ukrainian - Ukraine",paraId:7,tocIndex:0},{value:"ur-PK",paraId:7,tocIndex:0},{value:"ur_PK.ts",paraId:7,tocIndex:0},{value:"Urdu - Pakistan",paraId:7,tocIndex:0},{value:"Cy-uz-UZ",paraId:7,tocIndex:0},{value:"Cy_uz_UZ.ts",paraId:7,tocIndex:0},{value:"Uzbek (Cyrillic) - Uzbekistan",paraId:7,tocIndex:0},{value:"Lt-uz-UZ",paraId:7,tocIndex:0},{value:"Lt_uz_UZ.ts",paraId:7,tocIndex:0},{value:"Uzbek (Latin) - Uzbekistan",paraId:7,tocIndex:0},{value:"vi-VN",paraId:7,tocIndex:0},{value:"vi_VN.ts",paraId:7,tocIndex:0},{value:"Vietnamese - Vietnam",paraId:7,tocIndex:0}],WD={},$D={title:"Installation and Upgrade of Plugins",toc:"menu",filename:"docs/en-US/welcome/getting-started/plugin.md",lastUpdated:1732240239e3,description:"This method is very simple but requires adding, activating, and updating one by one."},GD=[{id:"installation-and-upgrade-of-plugins",depth:1,title:"Installation and Upgrade of Plugins"},{id:"installing-and-updating-plugins-via-interface",depth:2,title:"Installing and Updating Plugins via Interface"},{id:"1-get-the-plugin-package",depth:3,title:"1. Get the Plugin Package"},{id:"2-add-the-plugin",depth:3,title:"2. Add the Plugin"},{id:"3-activate-the-plugin",depth:3,title:"3. Activate the Plugin"},{id:"4-update-the-plugin",depth:3,title:"4. Update the Plugin"},{id:"installing-and-updating-plugins-via-command-line",depth:2,title:"Installing and Updating Plugins via Command Line"},{id:"0-enter-the-docker-container-for-docker-versions-first",depth:3,title:"0. Enter the Docker container for Docker versions first"},{id:"1-log-in-to-the-npm-registry-where-the-plugin-is-located",depth:3,title:"1. Log in to the npm registry where the plugin is located"},{id:"2-add-the-plugin-1",depth:3,title:"2. Add the Plugin"},{id:"3-activate-the-plugin-1",depth:3,title:"3. Activate the Plugin"},{id:"4-update-the-plugin-1",depth:3,title:"4. Update the Plugin"}],VD=[{value:"This method is very simple but requires adding, activating, and updating one by one.",paraId:0,tocIndex:1},{value:"If it's a commercial plugin provided by NocoBase, please go to Business User Services Platform to download.",paraId:1,tocIndex:2},{value:"If it's a custom-developed plugin, refer to the process of ",paraId:1,tocIndex:2},{value:"Writing Your First Plugin",paraId:2,tocIndex:2},{value:", build and package the plugin.",paraId:1,tocIndex:2},{value:"Upload and add the plugin package.",paraId:3,tocIndex:3},{value:"Activate the uploaded plugin.",paraId:4,tocIndex:4},{value:"Upload the downloaded plugin and submit the update.",paraId:5,tocIndex:5},{value:'Pre-installed plugins will be upgraded along with the main application without a separate "update" operation.',paraId:6},{value:'Click on the "update" operation of the plugin to upgrade it; do not upgrade the plugin by deleting and then adding it again.',paraId:6},{value:"Supports batch processing. If an application update renders a plugin incompatible and unable to start, you can also use the command line to handle it.",paraId:7,tocIndex:6},{value:`docker-compose exec app bash +`,paraId:2,tocIndex:0},{value:"Among other things, the translation of the NocoBase core is mainly located here",paraId:3,tocIndex:0},{value:"https://github.com/nocobase/nocobase/tree/main/packages/core/client/src/locale",paraId:4,tocIndex:0},{value:"Please copy en_US.ts, name it with the name of the language you want to add, and then translate the strings in it. Once the translation is done, please submit it to NocoBase via pull request and we will add it to the list of languages. Then you will see the new languages in the system configuration, where you can configure which languages you want to display for users to choose.",paraId:5,tocIndex:0},{value:"The following table lists the Language Culture Name, Locale File Name, Display Name.",paraId:6,tocIndex:0},{value:"Language Culture Name",paraId:7,tocIndex:0},{value:"Locale File Name",paraId:7,tocIndex:0},{value:"Display Name",paraId:7,tocIndex:0},{value:"af-ZA",paraId:7,tocIndex:0},{value:"af_ZA.ts",paraId:7,tocIndex:0},{value:"Afrikaans - South Africa",paraId:7,tocIndex:0},{value:"sq-AL",paraId:7,tocIndex:0},{value:"sq_AL.ts",paraId:7,tocIndex:0},{value:"Albanian - Albania",paraId:7,tocIndex:0},{value:"ar-DZ",paraId:7,tocIndex:0},{value:"ar_DZ.ts",paraId:7,tocIndex:0},{value:"Arabic - Algeria",paraId:7,tocIndex:0},{value:"ar-BH",paraId:7,tocIndex:0},{value:"ar_BH.ts",paraId:7,tocIndex:0},{value:"Arabic - Bahrain",paraId:7,tocIndex:0},{value:"ar-EG",paraId:7,tocIndex:0},{value:"ar_EG.ts",paraId:7,tocIndex:0},{value:"Arabic - Egypt",paraId:7,tocIndex:0},{value:"ar-IQ",paraId:7,tocIndex:0},{value:"ar_IQ.ts",paraId:7,tocIndex:0},{value:"Arabic - Iraq",paraId:7,tocIndex:0},{value:"ar-JO",paraId:7,tocIndex:0},{value:"ar_JO.ts",paraId:7,tocIndex:0},{value:"Arabic - Jordan",paraId:7,tocIndex:0},{value:"ar-KW",paraId:7,tocIndex:0},{value:"ar_KW.ts",paraId:7,tocIndex:0},{value:"Arabic - Kuwait",paraId:7,tocIndex:0},{value:"ar-LB",paraId:7,tocIndex:0},{value:"ar_LB.ts",paraId:7,tocIndex:0},{value:"Arabic - Lebanon",paraId:7,tocIndex:0},{value:"ar-LY",paraId:7,tocIndex:0},{value:"ar_LY.ts",paraId:7,tocIndex:0},{value:"Arabic - Libya",paraId:7,tocIndex:0},{value:"ar-MA",paraId:7,tocIndex:0},{value:"ar_MA.ts",paraId:7,tocIndex:0},{value:"Arabic - Morocco",paraId:7,tocIndex:0},{value:"ar-OM",paraId:7,tocIndex:0},{value:"ar_OM.ts",paraId:7,tocIndex:0},{value:"Arabic - Oman",paraId:7,tocIndex:0},{value:"ar-QA",paraId:7,tocIndex:0},{value:"ar_QA.ts",paraId:7,tocIndex:0},{value:"Arabic - Qatar",paraId:7,tocIndex:0},{value:"ar-SA",paraId:7,tocIndex:0},{value:"ar_SA.ts",paraId:7,tocIndex:0},{value:"Arabic - Saudi Arabia",paraId:7,tocIndex:0},{value:"ar-SY",paraId:7,tocIndex:0},{value:"ar_SY.ts",paraId:7,tocIndex:0},{value:"Arabic - Syria",paraId:7,tocIndex:0},{value:"ar-TN",paraId:7,tocIndex:0},{value:"ar_TN.ts",paraId:7,tocIndex:0},{value:"Arabic - Tunisia",paraId:7,tocIndex:0},{value:"ar-AE",paraId:7,tocIndex:0},{value:"ar_AE.ts",paraId:7,tocIndex:0},{value:"Arabic - United Arab Emirates",paraId:7,tocIndex:0},{value:"ar-YE",paraId:7,tocIndex:0},{value:"ar_YE.ts",paraId:7,tocIndex:0},{value:"Arabic - Yemen",paraId:7,tocIndex:0},{value:"hy-AM",paraId:7,tocIndex:0},{value:"hy_AM.ts",paraId:7,tocIndex:0},{value:"Armenian - Armenia",paraId:7,tocIndex:0},{value:"Cy-az-AZ",paraId:7,tocIndex:0},{value:"Cy_az_AZ.ts",paraId:7,tocIndex:0},{value:"Azeri (Cyrillic) - Azerbaijan",paraId:7,tocIndex:0},{value:"Lt-az-AZ",paraId:7,tocIndex:0},{value:"Lt_az_AZ.ts",paraId:7,tocIndex:0},{value:"Azeri (Latin) - Azerbaijan",paraId:7,tocIndex:0},{value:"eu-ES",paraId:7,tocIndex:0},{value:"eu_ES.ts",paraId:7,tocIndex:0},{value:"Basque - Basque",paraId:7,tocIndex:0},{value:"be-BY",paraId:7,tocIndex:0},{value:"be_BY.ts",paraId:7,tocIndex:0},{value:"Belarusian - Belarus",paraId:7,tocIndex:0},{value:"bg-BG",paraId:7,tocIndex:0},{value:"bg_BG.ts",paraId:7,tocIndex:0},{value:"Bulgarian - Bulgaria",paraId:7,tocIndex:0},{value:"ca-ES",paraId:7,tocIndex:0},{value:"ca_ES.ts",paraId:7,tocIndex:0},{value:"Catalan - Catalan",paraId:7,tocIndex:0},{value:"zh-CN",paraId:7,tocIndex:0},{value:"zh_CN.ts",paraId:7,tocIndex:0},{value:"Chinese - China",paraId:7,tocIndex:0},{value:"zh-HK",paraId:7,tocIndex:0},{value:"zh_HK.ts",paraId:7,tocIndex:0},{value:"Chinese - Hong Kong SAR",paraId:7,tocIndex:0},{value:"zh-MO",paraId:7,tocIndex:0},{value:"zh_MO.ts",paraId:7,tocIndex:0},{value:"Chinese - Macau SAR",paraId:7,tocIndex:0},{value:"zh-SG",paraId:7,tocIndex:0},{value:"zh_SG.ts",paraId:7,tocIndex:0},{value:"Chinese - Singapore",paraId:7,tocIndex:0},{value:"zh-TW",paraId:7,tocIndex:0},{value:"zh_TW.ts",paraId:7,tocIndex:0},{value:"Chinese - Taiwan",paraId:7,tocIndex:0},{value:"zh-CHS",paraId:7,tocIndex:0},{value:"zh_CHS.ts",paraId:7,tocIndex:0},{value:"Chinese (Simplified)",paraId:7,tocIndex:0},{value:"zh-CHT",paraId:7,tocIndex:0},{value:"zh_CHT.ts",paraId:7,tocIndex:0},{value:"Chinese (Traditional)",paraId:7,tocIndex:0},{value:"hr-HR",paraId:7,tocIndex:0},{value:"hr_HR.ts",paraId:7,tocIndex:0},{value:"Croatian - Croatia",paraId:7,tocIndex:0},{value:"cs-CZ",paraId:7,tocIndex:0},{value:"cs_CZ.ts",paraId:7,tocIndex:0},{value:"Czech - Czech Republic",paraId:7,tocIndex:0},{value:"da-DK",paraId:7,tocIndex:0},{value:"da_DK.ts",paraId:7,tocIndex:0},{value:"Danish - Denmark",paraId:7,tocIndex:0},{value:"div-MV",paraId:7,tocIndex:0},{value:"div_MV.ts",paraId:7,tocIndex:0},{value:"Dhivehi - Maldives",paraId:7,tocIndex:0},{value:"nl-BE",paraId:7,tocIndex:0},{value:"nl_BE.ts",paraId:7,tocIndex:0},{value:"Dutch - Belgium",paraId:7,tocIndex:0},{value:"nl-NL",paraId:7,tocIndex:0},{value:"nl_NL.ts",paraId:7,tocIndex:0},{value:"Dutch - The Netherlands",paraId:7,tocIndex:0},{value:"en-AU",paraId:7,tocIndex:0},{value:"en_AU.ts",paraId:7,tocIndex:0},{value:"English - Australia",paraId:7,tocIndex:0},{value:"en-BZ",paraId:7,tocIndex:0},{value:"en_BZ.ts",paraId:7,tocIndex:0},{value:"English - Belize",paraId:7,tocIndex:0},{value:"en-CA",paraId:7,tocIndex:0},{value:"en_CA.ts",paraId:7,tocIndex:0},{value:"English - Canada",paraId:7,tocIndex:0},{value:"en-CB",paraId:7,tocIndex:0},{value:"en_CB.ts",paraId:7,tocIndex:0},{value:"English - Caribbean",paraId:7,tocIndex:0},{value:"en-IE",paraId:7,tocIndex:0},{value:"en_IE.ts",paraId:7,tocIndex:0},{value:"English - Ireland",paraId:7,tocIndex:0},{value:"en-JM",paraId:7,tocIndex:0},{value:"en_JM.ts",paraId:7,tocIndex:0},{value:"English - Jamaica",paraId:7,tocIndex:0},{value:"en-NZ",paraId:7,tocIndex:0},{value:"en_NZ.ts",paraId:7,tocIndex:0},{value:"English - New Zealand",paraId:7,tocIndex:0},{value:"en-PH",paraId:7,tocIndex:0},{value:"en_PH.ts",paraId:7,tocIndex:0},{value:"English - Philippines",paraId:7,tocIndex:0},{value:"en-ZA",paraId:7,tocIndex:0},{value:"en_ZA.ts",paraId:7,tocIndex:0},{value:"English - South Africa",paraId:7,tocIndex:0},{value:"en-TT",paraId:7,tocIndex:0},{value:"en_TT.ts",paraId:7,tocIndex:0},{value:"English - Trinidad and Tobago",paraId:7,tocIndex:0},{value:"en-GB",paraId:7,tocIndex:0},{value:"en_GB.ts",paraId:7,tocIndex:0},{value:"English - United Kingdom",paraId:7,tocIndex:0},{value:"en-US",paraId:7,tocIndex:0},{value:"en_US.ts",paraId:7,tocIndex:0},{value:"English - United States",paraId:7,tocIndex:0},{value:"en-ZW",paraId:7,tocIndex:0},{value:"en_ZW.ts",paraId:7,tocIndex:0},{value:"English - Zimbabwe",paraId:7,tocIndex:0},{value:"et-EE",paraId:7,tocIndex:0},{value:"et_EE.ts",paraId:7,tocIndex:0},{value:"Estonian - Estonia",paraId:7,tocIndex:0},{value:"fo-FO",paraId:7,tocIndex:0},{value:"fo_FO.ts",paraId:7,tocIndex:0},{value:"Faroese - Faroe Islands",paraId:7,tocIndex:0},{value:"fa-IR",paraId:7,tocIndex:0},{value:"fa_IR.ts",paraId:7,tocIndex:0},{value:"Farsi - Iran",paraId:7,tocIndex:0},{value:"fi-FI",paraId:7,tocIndex:0},{value:"fi_FI.ts",paraId:7,tocIndex:0},{value:"Finnish - Finland",paraId:7,tocIndex:0},{value:"fr-BE",paraId:7,tocIndex:0},{value:"fr_BE.ts",paraId:7,tocIndex:0},{value:"French - Belgium",paraId:7,tocIndex:0},{value:"fr-CA",paraId:7,tocIndex:0},{value:"fr_CA.ts",paraId:7,tocIndex:0},{value:"French - Canada",paraId:7,tocIndex:0},{value:"fr-FR",paraId:7,tocIndex:0},{value:"fr_FR.ts",paraId:7,tocIndex:0},{value:"French - France",paraId:7,tocIndex:0},{value:"fr-LU",paraId:7,tocIndex:0},{value:"fr_LU.ts",paraId:7,tocIndex:0},{value:"French - Luxembourg",paraId:7,tocIndex:0},{value:"fr-MC",paraId:7,tocIndex:0},{value:"fr_MC.ts",paraId:7,tocIndex:0},{value:"French - Monaco",paraId:7,tocIndex:0},{value:"fr-CH",paraId:7,tocIndex:0},{value:"fr_CH.ts",paraId:7,tocIndex:0},{value:"French - Switzerland",paraId:7,tocIndex:0},{value:"gl-ES",paraId:7,tocIndex:0},{value:"gl_ES.ts",paraId:7,tocIndex:0},{value:"Galician - Galician",paraId:7,tocIndex:0},{value:"ka-GE",paraId:7,tocIndex:0},{value:"ka_GE.ts",paraId:7,tocIndex:0},{value:"Georgian - Georgia",paraId:7,tocIndex:0},{value:"de-AT",paraId:7,tocIndex:0},{value:"de_AT.ts",paraId:7,tocIndex:0},{value:"German - Austria",paraId:7,tocIndex:0},{value:"de-DE",paraId:7,tocIndex:0},{value:"de_DE.ts",paraId:7,tocIndex:0},{value:"German - Germany",paraId:7,tocIndex:0},{value:"de-LI",paraId:7,tocIndex:0},{value:"de_LI.ts",paraId:7,tocIndex:0},{value:"German - Liechtenstein",paraId:7,tocIndex:0},{value:"de-LU",paraId:7,tocIndex:0},{value:"de_LU.ts",paraId:7,tocIndex:0},{value:"German - Luxembourg",paraId:7,tocIndex:0},{value:"de-CH",paraId:7,tocIndex:0},{value:"de_CH.ts",paraId:7,tocIndex:0},{value:"German - Switzerland",paraId:7,tocIndex:0},{value:"el-GR",paraId:7,tocIndex:0},{value:"el_GR.ts",paraId:7,tocIndex:0},{value:"Greek - Greece",paraId:7,tocIndex:0},{value:"gu-IN",paraId:7,tocIndex:0},{value:"gu_IN.ts",paraId:7,tocIndex:0},{value:"Gujarati - India",paraId:7,tocIndex:0},{value:"he-IL",paraId:7,tocIndex:0},{value:"he_IL.ts",paraId:7,tocIndex:0},{value:"Hebrew - Israel",paraId:7,tocIndex:0},{value:"hi-IN",paraId:7,tocIndex:0},{value:"hi_IN.ts",paraId:7,tocIndex:0},{value:"Hindi - India",paraId:7,tocIndex:0},{value:"hu-HU",paraId:7,tocIndex:0},{value:"hu_HU.ts",paraId:7,tocIndex:0},{value:"Hungarian - Hungary",paraId:7,tocIndex:0},{value:"is-IS",paraId:7,tocIndex:0},{value:"is_IS.ts",paraId:7,tocIndex:0},{value:"Icelandic - Iceland",paraId:7,tocIndex:0},{value:"id-ID",paraId:7,tocIndex:0},{value:"id_ID.ts",paraId:7,tocIndex:0},{value:"Indonesian - Indonesia",paraId:7,tocIndex:0},{value:"it-IT",paraId:7,tocIndex:0},{value:"it_IT.ts",paraId:7,tocIndex:0},{value:"Italian - Italy",paraId:7,tocIndex:0},{value:"it-CH",paraId:7,tocIndex:0},{value:"it_CH.ts",paraId:7,tocIndex:0},{value:"Italian - Switzerland",paraId:7,tocIndex:0},{value:"ja-JP",paraId:7,tocIndex:0},{value:"ja_JP.ts",paraId:7,tocIndex:0},{value:"Japanese - Japan",paraId:7,tocIndex:0},{value:"kn-IN",paraId:7,tocIndex:0},{value:"kn_IN.ts",paraId:7,tocIndex:0},{value:"Kannada - India",paraId:7,tocIndex:0},{value:"kk-KZ",paraId:7,tocIndex:0},{value:"kk_KZ.ts",paraId:7,tocIndex:0},{value:"Kazakh - Kazakhstan",paraId:7,tocIndex:0},{value:"kok-IN",paraId:7,tocIndex:0},{value:"kok_IN.ts",paraId:7,tocIndex:0},{value:"Konkani - India",paraId:7,tocIndex:0},{value:"ko-KR",paraId:7,tocIndex:0},{value:"ko_KR.ts",paraId:7,tocIndex:0},{value:"Korean - Korea",paraId:7,tocIndex:0},{value:"ky-KZ",paraId:7,tocIndex:0},{value:"ky_KZ.ts",paraId:7,tocIndex:0},{value:"Kyrgyz - Kazakhstan",paraId:7,tocIndex:0},{value:"lv-LV",paraId:7,tocIndex:0},{value:"lv_LV.ts",paraId:7,tocIndex:0},{value:"Latvian - Latvia",paraId:7,tocIndex:0},{value:"lt-LT",paraId:7,tocIndex:0},{value:"lt_LT.ts",paraId:7,tocIndex:0},{value:"Lithuanian - Lithuania",paraId:7,tocIndex:0},{value:"mk-MK",paraId:7,tocIndex:0},{value:"mk_MK.ts",paraId:7,tocIndex:0},{value:"Macedonian (FYROM)",paraId:7,tocIndex:0},{value:"ms-BN",paraId:7,tocIndex:0},{value:"ms_BN.ts",paraId:7,tocIndex:0},{value:"Malay - Brunei",paraId:7,tocIndex:0},{value:"ms-MY",paraId:7,tocIndex:0},{value:"ms_MY.ts",paraId:7,tocIndex:0},{value:"Malay - Malaysia",paraId:7,tocIndex:0},{value:"mr-IN",paraId:7,tocIndex:0},{value:"mr_IN.ts",paraId:7,tocIndex:0},{value:"Marathi - India",paraId:7,tocIndex:0},{value:"mn-MN",paraId:7,tocIndex:0},{value:"mn_MN.ts",paraId:7,tocIndex:0},{value:"Mongolian - Mongolia",paraId:7,tocIndex:0},{value:"nb-NO",paraId:7,tocIndex:0},{value:"nb_NO.ts",paraId:7,tocIndex:0},{value:"Norwegian (Bokm\xC3\xA5l) - Norway",paraId:7,tocIndex:0},{value:"nn-NO",paraId:7,tocIndex:0},{value:"nn_NO.ts",paraId:7,tocIndex:0},{value:"Norwegian (Nynorsk) - Norway",paraId:7,tocIndex:0},{value:"pl-PL",paraId:7,tocIndex:0},{value:"pl_PL.ts",paraId:7,tocIndex:0},{value:"Polish - Poland",paraId:7,tocIndex:0},{value:"pt-BR",paraId:7,tocIndex:0},{value:"pt_BR.ts",paraId:7,tocIndex:0},{value:"Portuguese - Brazil",paraId:7,tocIndex:0},{value:"pt-PT",paraId:7,tocIndex:0},{value:"pt_PT.ts",paraId:7,tocIndex:0},{value:"Portuguese - Portugal",paraId:7,tocIndex:0},{value:"pa-IN",paraId:7,tocIndex:0},{value:"pa_IN.ts",paraId:7,tocIndex:0},{value:"Punjabi - India",paraId:7,tocIndex:0},{value:"ro-RO",paraId:7,tocIndex:0},{value:"ro_RO.ts",paraId:7,tocIndex:0},{value:"Romanian - Romania",paraId:7,tocIndex:0},{value:"ru-RU",paraId:7,tocIndex:0},{value:"ru_RU.ts",paraId:7,tocIndex:0},{value:"Russian - Russia",paraId:7,tocIndex:0},{value:"sa-IN",paraId:7,tocIndex:0},{value:"sa_IN.ts",paraId:7,tocIndex:0},{value:"Sanskrit - India",paraId:7,tocIndex:0},{value:"Cy-sr-SP",paraId:7,tocIndex:0},{value:"Cy_sr_SP.ts",paraId:7,tocIndex:0},{value:"Serbian (Cyrillic) - Serbia",paraId:7,tocIndex:0},{value:"Lt-sr-SP",paraId:7,tocIndex:0},{value:"Lt_sr_SP.ts",paraId:7,tocIndex:0},{value:"Serbian (Latin) - Serbia",paraId:7,tocIndex:0},{value:"sk-SK",paraId:7,tocIndex:0},{value:"sk_SK.ts",paraId:7,tocIndex:0},{value:"Slovak - Slovakia",paraId:7,tocIndex:0},{value:"sl-SI",paraId:7,tocIndex:0},{value:"sl_SI.ts",paraId:7,tocIndex:0},{value:"Slovenian - Slovenia",paraId:7,tocIndex:0},{value:"es-AR",paraId:7,tocIndex:0},{value:"es_AR.ts",paraId:7,tocIndex:0},{value:"Spanish - Argentina",paraId:7,tocIndex:0},{value:"es-BO",paraId:7,tocIndex:0},{value:"es_BO.ts",paraId:7,tocIndex:0},{value:"Spanish - Bolivia",paraId:7,tocIndex:0},{value:"es-CL",paraId:7,tocIndex:0},{value:"es_CL.ts",paraId:7,tocIndex:0},{value:"Spanish - Chile",paraId:7,tocIndex:0},{value:"es-CO",paraId:7,tocIndex:0},{value:"es_CO.ts",paraId:7,tocIndex:0},{value:"Spanish - Colombia",paraId:7,tocIndex:0},{value:"es-CR",paraId:7,tocIndex:0},{value:"es_CR.ts",paraId:7,tocIndex:0},{value:"Spanish - Costa Rica",paraId:7,tocIndex:0},{value:"es-DO",paraId:7,tocIndex:0},{value:"es_DO.ts",paraId:7,tocIndex:0},{value:"Spanish - Dominican Republic",paraId:7,tocIndex:0},{value:"es-EC",paraId:7,tocIndex:0},{value:"es_EC.ts",paraId:7,tocIndex:0},{value:"Spanish - Ecuador",paraId:7,tocIndex:0},{value:"es-SV",paraId:7,tocIndex:0},{value:"es_SV.ts",paraId:7,tocIndex:0},{value:"Spanish - El Salvador",paraId:7,tocIndex:0},{value:"es-GT",paraId:7,tocIndex:0},{value:"es_GT.ts",paraId:7,tocIndex:0},{value:"Spanish - Guatemala",paraId:7,tocIndex:0},{value:"es-HN",paraId:7,tocIndex:0},{value:"es_HN.ts",paraId:7,tocIndex:0},{value:"Spanish - Honduras",paraId:7,tocIndex:0},{value:"es-MX",paraId:7,tocIndex:0},{value:"es_MX.ts",paraId:7,tocIndex:0},{value:"Spanish - Mexico",paraId:7,tocIndex:0},{value:"es-NI",paraId:7,tocIndex:0},{value:"es_NI.ts",paraId:7,tocIndex:0},{value:"Spanish - Nicaragua",paraId:7,tocIndex:0},{value:"es-PA",paraId:7,tocIndex:0},{value:"es_PA.ts",paraId:7,tocIndex:0},{value:"Spanish - Panama",paraId:7,tocIndex:0},{value:"es-PY",paraId:7,tocIndex:0},{value:"es_PY.ts",paraId:7,tocIndex:0},{value:"Spanish - Paraguay",paraId:7,tocIndex:0},{value:"es-PE",paraId:7,tocIndex:0},{value:"es_PE.ts",paraId:7,tocIndex:0},{value:"Spanish - Peru",paraId:7,tocIndex:0},{value:"es-PR",paraId:7,tocIndex:0},{value:"es_PR.ts",paraId:7,tocIndex:0},{value:"Spanish - Puerto Rico",paraId:7,tocIndex:0},{value:"es-ES",paraId:7,tocIndex:0},{value:"es_ES.ts",paraId:7,tocIndex:0},{value:"Spanish - Spain",paraId:7,tocIndex:0},{value:"es-UY",paraId:7,tocIndex:0},{value:"es_UY.ts",paraId:7,tocIndex:0},{value:"Spanish - Uruguay",paraId:7,tocIndex:0},{value:"es-VE",paraId:7,tocIndex:0},{value:"es_VE.ts",paraId:7,tocIndex:0},{value:"Spanish - Venezuela",paraId:7,tocIndex:0},{value:"sw-KE",paraId:7,tocIndex:0},{value:"sw_KE.ts",paraId:7,tocIndex:0},{value:"Swahili - Kenya",paraId:7,tocIndex:0},{value:"sv-FI",paraId:7,tocIndex:0},{value:"sv_FI.ts",paraId:7,tocIndex:0},{value:"Swedish - Finland",paraId:7,tocIndex:0},{value:"sv-SE",paraId:7,tocIndex:0},{value:"sv_SE.ts",paraId:7,tocIndex:0},{value:"Swedish - Sweden",paraId:7,tocIndex:0},{value:"syr-SY",paraId:7,tocIndex:0},{value:"syr_SY.ts",paraId:7,tocIndex:0},{value:"Syriac - Syria",paraId:7,tocIndex:0},{value:"ta-IN",paraId:7,tocIndex:0},{value:"ta_IN.ts",paraId:7,tocIndex:0},{value:"Tamil - India",paraId:7,tocIndex:0},{value:"tt-RU",paraId:7,tocIndex:0},{value:"tt_RU.ts",paraId:7,tocIndex:0},{value:"Tatar - Russia",paraId:7,tocIndex:0},{value:"te-IN",paraId:7,tocIndex:0},{value:"te_IN.ts",paraId:7,tocIndex:0},{value:"Telugu - India",paraId:7,tocIndex:0},{value:"th-TH",paraId:7,tocIndex:0},{value:"th_TH.ts",paraId:7,tocIndex:0},{value:"Thai - Thailand",paraId:7,tocIndex:0},{value:"tr-TR",paraId:7,tocIndex:0},{value:"tr_TR.ts",paraId:7,tocIndex:0},{value:"Turkish - Turkey",paraId:7,tocIndex:0},{value:"uk-UA",paraId:7,tocIndex:0},{value:"uk_UA.ts",paraId:7,tocIndex:0},{value:"Ukrainian - Ukraine",paraId:7,tocIndex:0},{value:"ur-PK",paraId:7,tocIndex:0},{value:"ur_PK.ts",paraId:7,tocIndex:0},{value:"Urdu - Pakistan",paraId:7,tocIndex:0},{value:"Cy-uz-UZ",paraId:7,tocIndex:0},{value:"Cy_uz_UZ.ts",paraId:7,tocIndex:0},{value:"Uzbek (Cyrillic) - Uzbekistan",paraId:7,tocIndex:0},{value:"Lt-uz-UZ",paraId:7,tocIndex:0},{value:"Lt_uz_UZ.ts",paraId:7,tocIndex:0},{value:"Uzbek (Latin) - Uzbekistan",paraId:7,tocIndex:0},{value:"vi-VN",paraId:7,tocIndex:0},{value:"vi_VN.ts",paraId:7,tocIndex:0},{value:"Vietnamese - Vietnam",paraId:7,tocIndex:0}],WD={},$D={title:"Installation and Upgrade of Plugins",toc:"menu",filename:"docs/en-US/welcome/getting-started/plugin.md",lastUpdated:173254844e4,description:"This method is very simple but requires adding, activating, and updating one by one."},GD=[{id:"installation-and-upgrade-of-plugins",depth:1,title:"Installation and Upgrade of Plugins"},{id:"installing-and-updating-plugins-via-interface",depth:2,title:"Installing and Updating Plugins via Interface"},{id:"1-get-the-plugin-package",depth:3,title:"1. Get the Plugin Package"},{id:"2-add-the-plugin",depth:3,title:"2. Add the Plugin"},{id:"3-activate-the-plugin",depth:3,title:"3. Activate the Plugin"},{id:"4-update-the-plugin",depth:3,title:"4. Update the Plugin"},{id:"installing-and-updating-plugins-via-command-line",depth:2,title:"Installing and Updating Plugins via Command Line"},{id:"0-enter-the-docker-container-for-docker-versions-first",depth:3,title:"0. Enter the Docker container for Docker versions first"},{id:"1-log-in-to-the-npm-registry-where-the-plugin-is-located",depth:3,title:"1. Log in to the npm registry where the plugin is located"},{id:"2-add-the-plugin-1",depth:3,title:"2. Add the Plugin"},{id:"3-activate-the-plugin-1",depth:3,title:"3. Activate the Plugin"},{id:"4-update-the-plugin-1",depth:3,title:"4. Update the Plugin"}],VD=[{value:"This method is very simple but requires adding, activating, and updating one by one.",paraId:0,tocIndex:1},{value:"If it's a commercial plugin provided by NocoBase, please go to Business User Services Platform to download.",paraId:1,tocIndex:2},{value:"If it's a custom-developed plugin, refer to the process of ",paraId:1,tocIndex:2},{value:"Writing Your First Plugin",paraId:2,tocIndex:2},{value:", build and package the plugin.",paraId:1,tocIndex:2},{value:"Upload and add the plugin package.",paraId:3,tocIndex:3},{value:"Activate the uploaded plugin.",paraId:4,tocIndex:4},{value:"Upload the downloaded plugin and submit the update.",paraId:5,tocIndex:5},{value:'Pre-installed plugins will be upgraded along with the main application without a separate "update" operation.',paraId:6},{value:'Click on the "update" operation of the plugin to upgrade it; do not upgrade the plugin by deleting and then adding it again.',paraId:6},{value:"Supports batch processing. If an application update renders a plugin incompatible and unable to start, you can also use the command line to handle it.",paraId:7,tocIndex:6},{value:`docker-compose exec app bash `,paraId:8,tocIndex:7},{value:"In command-line mode, it's recommended to add and update plugins via npm registry. For example, the npm registry for NocoBase commercial plugins is ",paraId:9,tocIndex:8},{value:"https://pkg.nocobase.com/",paraId:9,tocIndex:8},{value:`npm login --registry=https://pkg.nocobase.com/ `,paraId:10,tocIndex:8},{value:`yarn pm add @nocobase/plugin-data-source-external-mysql @nocobase/plugin-embed --registry=https://pkg.nocobase.com/ `,paraId:11,tocIndex:9},{value:"For more usage, refer to ",paraId:12,tocIndex:9},{value:"pm add",paraId:13,tocIndex:9},{value:`yarn pm enable @nocobase/plugin-data-source-external-mysql @nocobase/plugin-embed `,paraId:14,tocIndex:10},{value:"If you need to upgrade both the application and the plugins simultaneously, please refer to the ",paraId:15},{value:"NocoBase Upgrade Overview",paraId:16},{value:", upgrade NocoBase to the latest version first, and then execute the ",paraId:15},{value:"pm update",paraId:15},{value:" command.",paraId:15},{value:`yarn pm update @nocobase/plugin-data-source-external-mysql @nocobase/plugin-embed --registry=https://pkg.nocobase.com/ -`,paraId:17},{value:"For more usage, refer to ",paraId:18},{value:"pm update",paraId:19}],KD={},ZD={title:"DataSourceManager",toc:"menu",filename:"docs/en-US/api/data-source-manager/index.md",lastUpdated:1732240239e3,description:"DataSourceManager \u662F\u591A dataSource \u5B9E\u4F8B\u7684\u7BA1\u7406\u7C7B\u3002"},YD=[{id:"datasourcemanager",depth:1,title:"DataSourceManager"},{id:"api",depth:2,title:"API"},{id:"add",depth:3,title:"add()"},{id:"\u7B7E\u540D",depth:4,title:"\u7B7E\u540D"},{id:"use",depth:3,title:"use()"},{id:"middleware",depth:3,title:"middleware()"},{id:"afteradddatasource",depth:3,title:"afterAddDataSource()"},{id:"\u7B7E\u540D-1",depth:4,title:"\u7B7E\u540D"},{id:"registerdatasourcetype",depth:3,title:"registerDataSourceType()"},{id:"\u7B7E\u540D-2",depth:4,title:"\u7B7E\u540D"},{id:"getdatasourcetype",depth:3,title:"getDataSourceType()"},{id:"\u7B7E\u540D-3",depth:4,title:"\u7B7E\u540D"},{id:"builddatasourcebytype",depth:3,title:"buildDataSourceByType()"},{id:"\u7B7E\u540D-4",depth:4,title:"\u7B7E\u540D"}],QD=[{value:"DataSourceManager",paraId:0,tocIndex:0},{value:" \u662F\u591A ",paraId:0,tocIndex:0},{value:"dataSource",paraId:0,tocIndex:0},{value:" \u5B9E\u4F8B\u7684\u7BA1\u7406\u7C7B\u3002",paraId:0,tocIndex:0},{value:"\u6DFB\u52A0\u4E00\u4E2A ",paraId:1,tocIndex:2},{value:"dataSource",paraId:1,tocIndex:2},{value:" \u5B9E\u4F8B\u3002",paraId:1,tocIndex:2},{value:"add(dataSource: DataSource, options: any = {}): Promise",paraId:2,tocIndex:3},{value:"\u7ED9 ",paraId:3,tocIndex:4},{value:"dataSource",paraId:3,tocIndex:4},{value:" \u5B9E\u4F8B\u6DFB\u52A0\u5168\u5C40\u4E2D\u95F4\u4EF6\u3002",paraId:3,tocIndex:4},{value:"\u83B7\u53D6\u5F53\u524D ",paraId:4,tocIndex:5},{value:"dataSourceManager",paraId:4,tocIndex:5},{value:" \u5B9E\u4F8B\u7684\u4E2D\u95F4\u4EF6\uFF0C\u53EF\u7528\u4E8E\u54CD\u5E94 http \u8BF7\u6C42\u3002",paraId:4,tocIndex:5},{value:"\u65B0\u589E",paraId:5,tocIndex:6},{value:"dataSource",paraId:5,tocIndex:6},{value:" \u6DFB\u52A0\u540E\u7684\u94A9\u5B50\u51FD\u6570\u3002",paraId:5,tocIndex:6},{value:"afterAddDataSource(hook: DataSourceHook)",paraId:6,tocIndex:7},{value:`type DataSourceHook = (dataSource: DataSource) => void; -`,paraId:7,tocIndex:7},{value:"\u6CE8\u518C\u6570\u636E\u6E90\u7C7B\u578B\u53CA\u5176\u7C7B\u3002",paraId:8,tocIndex:8},{value:"registerDataSourceType(type: string, dataSourceClass: typeof DataSource)",paraId:9,tocIndex:9},{value:"\u83B7\u53D6\u6570\u636E\u6E90\u7C7B\u3002",paraId:10,tocIndex:10},{value:"getDataSourceType(type: string): typeof DataSource",paraId:11,tocIndex:11},{value:"\u6839\u636E\u6CE8\u518C\u7684\u6570\u636E\u6E90\u7C7B\u578B\u548C\u5B9E\u4F8B\u53C2\u6570\uFF0C\u521B\u5EFA\u6570\u636E\u6E90\u5B9E\u4F8B\u3002",paraId:12,tocIndex:12},{value:"buildDataSourceByType(type: string, options: any): DataSource",paraId:13,tocIndex:13}],JD={},XD={title:"Number",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/number.md",lastUpdated:1732240239e3,description:"Format a number to it's equivalent in bytes. If a string is passed, it's length will be formatted and returned."},eO=[{id:"number",depth:1,title:"Number"},{id:"bytes",depth:2,title:"{{bytes}}"},{id:"addcommas",depth:2,title:"{{addCommas}}"},{id:"phonenumber",depth:2,title:"{{phoneNumber}}"},{id:"toabbr",depth:2,title:"{{toAbbr}}"},{id:"toexponential",depth:2,title:"{{toExponential}}"},{id:"tofixed",depth:2,title:"{{toFixed}}"},{id:"tofloat",depth:2,title:"{{toFloat}}"},{id:"toint",depth:2,title:"{{toInt}}"},{id:"toprecision",depth:2,title:"{{toPrecision}}"}],aO=[{value:"Format a number to it's equivalent in bytes. If a string is passed, it's length will be formatted and returned.",paraId:0,tocIndex:1},{value:"Examples:",paraId:1,tocIndex:1},{value:"'foo' => 3 B",paraId:2,tocIndex:1},{value:"13661855 => 13.66 MB",paraId:2,tocIndex:1},{value:"825399 => 825.39 kB",paraId:2,tocIndex:1},{value:"1396 => 1.4 kB",paraId:2,tocIndex:1},{value:"Params",paraId:3,tocIndex:1},{value:"number",paraId:4,tocIndex:1},{value:" ",paraId:4,tocIndex:1},{value:"{Number|String}",paraId:4,tocIndex:1},{value:"returns",paraId:4,tocIndex:1},{value:" ",paraId:4,tocIndex:1},{value:"{String}",paraId:4,tocIndex:1},{value:"Add commas to numbers",paraId:5,tocIndex:2},{value:"Params",paraId:6,tocIndex:2},{value:"num",paraId:7,tocIndex:2},{value:" ",paraId:7,tocIndex:2},{value:"{Number}",paraId:7,tocIndex:2},{value:"returns",paraId:7,tocIndex:2},{value:" ",paraId:7,tocIndex:2},{value:"{Number}",paraId:7,tocIndex:2},{value:"Convert a string or number to a formatted phone number.",paraId:8,tocIndex:3},{value:"Params",paraId:9,tocIndex:3},{value:"num",paraId:10,tocIndex:3},{value:" ",paraId:10,tocIndex:3},{value:"{Number|String}",paraId:10,tocIndex:3},{value:": The phone number to format, e.g. ",paraId:10,tocIndex:3},{value:"8005551212",paraId:10,tocIndex:3},{value:"returns",paraId:10,tocIndex:3},{value:" ",paraId:10,tocIndex:3},{value:"{Number}",paraId:10,tocIndex:3},{value:": Formatted phone number: ",paraId:10,tocIndex:3},{value:"(800) 555-1212",paraId:10,tocIndex:3},{value:"Abbreviate numbers to the given number of ",paraId:11,tocIndex:4},{value:"precision",paraId:11,tocIndex:4},{value:`. This is for +`,paraId:17},{value:"For more usage, refer to ",paraId:18},{value:"pm update",paraId:19}],KD={},ZD={title:"DataSourceManager",toc:"menu",filename:"docs/en-US/api/data-source-manager/index.md",lastUpdated:173254844e4,description:"DataSourceManager \u662F\u591A dataSource \u5B9E\u4F8B\u7684\u7BA1\u7406\u7C7B\u3002"},YD=[{id:"datasourcemanager",depth:1,title:"DataSourceManager"},{id:"api",depth:2,title:"API"},{id:"add",depth:3,title:"add()"},{id:"\u7B7E\u540D",depth:4,title:"\u7B7E\u540D"},{id:"use",depth:3,title:"use()"},{id:"middleware",depth:3,title:"middleware()"},{id:"afteradddatasource",depth:3,title:"afterAddDataSource()"},{id:"\u7B7E\u540D-1",depth:4,title:"\u7B7E\u540D"},{id:"registerdatasourcetype",depth:3,title:"registerDataSourceType()"},{id:"\u7B7E\u540D-2",depth:4,title:"\u7B7E\u540D"},{id:"getdatasourcetype",depth:3,title:"getDataSourceType()"},{id:"\u7B7E\u540D-3",depth:4,title:"\u7B7E\u540D"},{id:"builddatasourcebytype",depth:3,title:"buildDataSourceByType()"},{id:"\u7B7E\u540D-4",depth:4,title:"\u7B7E\u540D"}],QD=[{value:"DataSourceManager",paraId:0,tocIndex:0},{value:" \u662F\u591A ",paraId:0,tocIndex:0},{value:"dataSource",paraId:0,tocIndex:0},{value:" \u5B9E\u4F8B\u7684\u7BA1\u7406\u7C7B\u3002",paraId:0,tocIndex:0},{value:"\u6DFB\u52A0\u4E00\u4E2A ",paraId:1,tocIndex:2},{value:"dataSource",paraId:1,tocIndex:2},{value:" \u5B9E\u4F8B\u3002",paraId:1,tocIndex:2},{value:"add(dataSource: DataSource, options: any = {}): Promise",paraId:2,tocIndex:3},{value:"\u7ED9 ",paraId:3,tocIndex:4},{value:"dataSource",paraId:3,tocIndex:4},{value:" \u5B9E\u4F8B\u6DFB\u52A0\u5168\u5C40\u4E2D\u95F4\u4EF6\u3002",paraId:3,tocIndex:4},{value:"\u83B7\u53D6\u5F53\u524D ",paraId:4,tocIndex:5},{value:"dataSourceManager",paraId:4,tocIndex:5},{value:" \u5B9E\u4F8B\u7684\u4E2D\u95F4\u4EF6\uFF0C\u53EF\u7528\u4E8E\u54CD\u5E94 http \u8BF7\u6C42\u3002",paraId:4,tocIndex:5},{value:"\u65B0\u589E",paraId:5,tocIndex:6},{value:"dataSource",paraId:5,tocIndex:6},{value:" \u6DFB\u52A0\u540E\u7684\u94A9\u5B50\u51FD\u6570\u3002",paraId:5,tocIndex:6},{value:"afterAddDataSource(hook: DataSourceHook)",paraId:6,tocIndex:7},{value:`type DataSourceHook = (dataSource: DataSource) => void; +`,paraId:7,tocIndex:7},{value:"\u6CE8\u518C\u6570\u636E\u6E90\u7C7B\u578B\u53CA\u5176\u7C7B\u3002",paraId:8,tocIndex:8},{value:"registerDataSourceType(type: string, dataSourceClass: typeof DataSource)",paraId:9,tocIndex:9},{value:"\u83B7\u53D6\u6570\u636E\u6E90\u7C7B\u3002",paraId:10,tocIndex:10},{value:"getDataSourceType(type: string): typeof DataSource",paraId:11,tocIndex:11},{value:"\u6839\u636E\u6CE8\u518C\u7684\u6570\u636E\u6E90\u7C7B\u578B\u548C\u5B9E\u4F8B\u53C2\u6570\uFF0C\u521B\u5EFA\u6570\u636E\u6E90\u5B9E\u4F8B\u3002",paraId:12,tocIndex:12},{value:"buildDataSourceByType(type: string, options: any): DataSource",paraId:13,tocIndex:13}],JD={},XD={title:"Number",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/number.md",lastUpdated:173254844e4,description:"Format a number to it's equivalent in bytes. If a string is passed, it's length will be formatted and returned."},eO=[{id:"number",depth:1,title:"Number"},{id:"bytes",depth:2,title:"{{bytes}}"},{id:"addcommas",depth:2,title:"{{addCommas}}"},{id:"phonenumber",depth:2,title:"{{phoneNumber}}"},{id:"toabbr",depth:2,title:"{{toAbbr}}"},{id:"toexponential",depth:2,title:"{{toExponential}}"},{id:"tofixed",depth:2,title:"{{toFixed}}"},{id:"tofloat",depth:2,title:"{{toFloat}}"},{id:"toint",depth:2,title:"{{toInt}}"},{id:"toprecision",depth:2,title:"{{toPrecision}}"}],aO=[{value:"Format a number to it's equivalent in bytes. If a string is passed, it's length will be formatted and returned.",paraId:0,tocIndex:1},{value:"Examples:",paraId:1,tocIndex:1},{value:"'foo' => 3 B",paraId:2,tocIndex:1},{value:"13661855 => 13.66 MB",paraId:2,tocIndex:1},{value:"825399 => 825.39 kB",paraId:2,tocIndex:1},{value:"1396 => 1.4 kB",paraId:2,tocIndex:1},{value:"Params",paraId:3,tocIndex:1},{value:"number",paraId:4,tocIndex:1},{value:" ",paraId:4,tocIndex:1},{value:"{Number|String}",paraId:4,tocIndex:1},{value:"returns",paraId:4,tocIndex:1},{value:" ",paraId:4,tocIndex:1},{value:"{String}",paraId:4,tocIndex:1},{value:"Add commas to numbers",paraId:5,tocIndex:2},{value:"Params",paraId:6,tocIndex:2},{value:"num",paraId:7,tocIndex:2},{value:" ",paraId:7,tocIndex:2},{value:"{Number}",paraId:7,tocIndex:2},{value:"returns",paraId:7,tocIndex:2},{value:" ",paraId:7,tocIndex:2},{value:"{Number}",paraId:7,tocIndex:2},{value:"Convert a string or number to a formatted phone number.",paraId:8,tocIndex:3},{value:"Params",paraId:9,tocIndex:3},{value:"num",paraId:10,tocIndex:3},{value:" ",paraId:10,tocIndex:3},{value:"{Number|String}",paraId:10,tocIndex:3},{value:": The phone number to format, e.g. ",paraId:10,tocIndex:3},{value:"8005551212",paraId:10,tocIndex:3},{value:"returns",paraId:10,tocIndex:3},{value:" ",paraId:10,tocIndex:3},{value:"{Number}",paraId:10,tocIndex:3},{value:": Formatted phone number: ",paraId:10,tocIndex:3},{value:"(800) 555-1212",paraId:10,tocIndex:3},{value:"Abbreviate numbers to the given number of ",paraId:11,tocIndex:4},{value:"precision",paraId:11,tocIndex:4},{value:`. This is for general numbers, not size in bytes.`,paraId:11,tocIndex:4},{value:"Params",paraId:12,tocIndex:4},{value:"number",paraId:13,tocIndex:4},{value:" ",paraId:13,tocIndex:4},{value:"{Number}",paraId:13,tocIndex:4},{value:"precision",paraId:13,tocIndex:4},{value:" ",paraId:13,tocIndex:4},{value:"{Number}",paraId:13,tocIndex:4},{value:"returns",paraId:13,tocIndex:4},{value:" ",paraId:13,tocIndex:4},{value:"{String}",paraId:13,tocIndex:4},{value:"Returns a string representing the given number in exponential notation.",paraId:14,tocIndex:5},{value:"Params",paraId:15,tocIndex:5},{value:"number",paraId:16,tocIndex:5},{value:" ",paraId:16,tocIndex:5},{value:"{Number}",paraId:16,tocIndex:5},{value:"fractionDigits",paraId:16,tocIndex:5},{value:" ",paraId:16,tocIndex:5},{value:"{Number}",paraId:16,tocIndex:5},{value:": Optional. An integer specifying the number of digits to use after the decimal point. Defaults to as many digits as necessary to specify the number.",paraId:16,tocIndex:5},{value:"returns",paraId:16,tocIndex:5},{value:" ",paraId:16,tocIndex:5},{value:"{Number}",paraId:16,tocIndex:5},{value:"Example",paraId:17,tocIndex:5},{value:`{{toExponential number digits}}; `,paraId:18,tocIndex:5},{value:"Formats the given number using fixed-point notation.",paraId:19,tocIndex:6},{value:"Params",paraId:20,tocIndex:6},{value:"number",paraId:21,tocIndex:6},{value:" ",paraId:21,tocIndex:6},{value:"{Number}",paraId:21,tocIndex:6},{value:"digits",paraId:21,tocIndex:6},{value:" ",paraId:21,tocIndex:6},{value:"{Number}",paraId:21,tocIndex:6},{value:": (Optional) The number of digits to appear after the decimal point; this may be a value between 0 and 20. If this argument is omitted, it is treated as 0.",paraId:21,tocIndex:6},{value:"returns",paraId:21,tocIndex:6},{value:" ",paraId:21,tocIndex:6},{value:"{String}",paraId:21,tocIndex:6},{value:": A string representing the given number using fixed-point notation.",paraId:21,tocIndex:6},{value:"Example",paraId:22,tocIndex:6},{value:`{{toFixed "1.1234" 2}} //=> '1.12' `,paraId:23,tocIndex:6},{value:"Params",paraId:24,tocIndex:7},{value:"number",paraId:25,tocIndex:7},{value:" ",paraId:25,tocIndex:7},{value:"{Number}",paraId:25,tocIndex:7},{value:"returns",paraId:25,tocIndex:7},{value:" ",paraId:25,tocIndex:7},{value:"{Number}",paraId:25,tocIndex:7},{value:"Params",paraId:26,tocIndex:8},{value:"number",paraId:27,tocIndex:8},{value:" ",paraId:27,tocIndex:8},{value:"{Number}",paraId:27,tocIndex:8},{value:"returns",paraId:27,tocIndex:8},{value:" ",paraId:27,tocIndex:8},{value:"{Number}",paraId:27,tocIndex:8},{value:"Returns a string representing the ",paraId:28,tocIndex:9},{value:"Number",paraId:28,tocIndex:9},{value:" object to the specified precision.",paraId:28,tocIndex:9},{value:"Params",paraId:29,tocIndex:9},{value:"number",paraId:30,tocIndex:9},{value:" ",paraId:30,tocIndex:9},{value:"{Number}",paraId:30,tocIndex:9},{value:"precision",paraId:30,tocIndex:9},{value:" ",paraId:30,tocIndex:9},{value:"{Number}",paraId:30,tocIndex:9},{value:": (Optional) An integer specifying the number of significant digits. If precison is not between 1 and 100 (inclusive), it will be coerced to ",paraId:30,tocIndex:9},{value:"0",paraId:30,tocIndex:9},{value:".",paraId:30,tocIndex:9},{value:"returns",paraId:30,tocIndex:9},{value:" ",paraId:30,tocIndex:9},{value:"{String}",paraId:30,tocIndex:9},{value:": A string representing a Number object in fixed-point or exponential notation rounded to precision significant digits.",paraId:30,tocIndex:9},{value:"Example",paraId:31,tocIndex:9},{value:`{{toPrecision "1.1234" 2}} //=> '1.1' -`,paraId:32,tocIndex:9}],tO={},nO={title:"Object",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/object.md",lastUpdated:1732240239e3,description:`Extend the context with the properties of other objects. +`,paraId:32,tocIndex:9}],tO={},nO={title:"Object",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/object.md",lastUpdated:173254844e4,description:`Extend the context with the properties of other objects. A shallow merge is performed to avoid mutating the context.`},oO=[{id:"object",depth:1,title:"Object"},{id:"extend",depth:2,title:"{{extend}}"},{id:"forin",depth:2,title:"{{forIn}}"},{id:"forown",depth:2,title:"{{forOwn}}"},{id:"topath",depth:2,title:"{{toPath}}"},{id:"get",depth:2,title:"{{get}}"},{id:"getobject",depth:2,title:"{{getObject}}"},{id:"hasown",depth:2,title:"{{hasOwn}}"},{id:"isobject",depth:2,title:"{{isObject}}"},{id:"jsonparse",depth:2,title:"{{JSONparse}}"},{id:"jsonstringify",depth:2,title:"{{JSONstringify}}"},{id:"merge",depth:2,title:"{{merge}}"},{id:"pick",depth:2,title:"{{pick}}"}],rO=[{value:`Extend the context with the properties of other objects. A shallow merge is performed to avoid mutating the context.`,paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"objects",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{Object}",paraId:2,tocIndex:1},{value:": One or more objects to extend.",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{Object}",paraId:2,tocIndex:1},{value:`Block helper that iterates over the properties of an object, exposing each key and value on the context.`,paraId:3,tocIndex:2},{value:"Params",paraId:4,tocIndex:2},{value:"context",paraId:5,tocIndex:2},{value:" ",paraId:5,tocIndex:2},{value:"{Object}",paraId:5,tocIndex:2},{value:"options",paraId:5,tocIndex:2},{value:" ",paraId:5,tocIndex:2},{value:"{Object}",paraId:5,tocIndex:2},{value:"returns",paraId:5,tocIndex:2},{value:" ",paraId:5,tocIndex:2},{value:"{String}",paraId:5,tocIndex:2},{value:"Block helper that iterates over the ",paraId:6,tocIndex:3},{value:"own",paraId:6,tocIndex:3},{value:` properties of @@ -13795,7 +13847,7 @@ block helper.`,paraId:15,tocIndex:6},{value:"Params",paraId:16,tocIndex:6},{valu {{JSONstringify object}} `,paraId:37,tocIndex:10},{value:"Deeply merge the properties of the given ",paraId:38,tocIndex:11},{value:"objects",paraId:38,tocIndex:11},{value:` with the -context object.`,paraId:38,tocIndex:11},{value:"Params",paraId:39,tocIndex:11},{value:"object",paraId:40,tocIndex:11},{value:" ",paraId:40,tocIndex:11},{value:"{Object}",paraId:40,tocIndex:11},{value:": The target object. Pass an empty object to shallow clone.",paraId:40,tocIndex:11},{value:"objects",paraId:40,tocIndex:11},{value:" ",paraId:40,tocIndex:11},{value:"{Object}",paraId:40,tocIndex:11},{value:"returns",paraId:40,tocIndex:11},{value:" ",paraId:40,tocIndex:11},{value:"{Object}",paraId:40,tocIndex:11},{value:"Pick properties from the context object.",paraId:41,tocIndex:12},{value:"Params",paraId:42,tocIndex:12},{value:"properties",paraId:43,tocIndex:12},{value:" ",paraId:43,tocIndex:12},{value:"{Array|String}",paraId:43,tocIndex:12},{value:": One or more properties to pick.",paraId:43,tocIndex:12},{value:"context",paraId:43,tocIndex:12},{value:" ",paraId:43,tocIndex:12},{value:"{Object}",paraId:43,tocIndex:12},{value:"options",paraId:43,tocIndex:12},{value:" ",paraId:43,tocIndex:12},{value:"{Object}",paraId:43,tocIndex:12},{value:": Handlebars options object.",paraId:43,tocIndex:12},{value:"returns",paraId:43,tocIndex:12},{value:" ",paraId:43,tocIndex:12},{value:"{Object}",paraId:43,tocIndex:12},{value:": Returns an object with the picked values. If used as a block helper, the values are passed as context to the inner block. If no values are found, the context is passed to the inverse block.",paraId:43,tocIndex:12}],dO={},iO={title:"String",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/string.md",lastUpdated:1732240239e3,description:"Append the specified suffix to the given string."},lO=[{id:"string",depth:1,title:"String"},{id:"append",depth:2,title:"{{append}}"},{id:"camelcase",depth:2,title:"{{camelcase}}"},{id:"capitalize",depth:2,title:"{{capitalize}}"},{id:"capitalizeall",depth:2,title:"{{capitalizeAll}}"},{id:"center",depth:2,title:"{{center}}"},{id:"chop",depth:2,title:"{{chop}}"},{id:"dashcase",depth:2,title:"{{dashcase}}"},{id:"dotcase",depth:2,title:"{{dotcase}}"},{id:"downcase",depth:2,title:"{{downcase}}"},{id:"ellipsis",depth:2,title:"{{ellipsis}}"},{id:"hyphenate",depth:2,title:"{{hyphenate}}"},{id:"isstring",depth:2,title:"{{isString}}"},{id:"lowercase",depth:2,title:"{{lowercase}}"},{id:"occurrences",depth:2,title:"{{occurrences}}"},{id:"pascalcase",depth:2,title:"{{pascalcase}}"},{id:"pathcase",depth:2,title:"{{pathcase}}"},{id:"plusify",depth:2,title:"{{plusify}}"},{id:"prepend",depth:2,title:"{{prepend}}"},{id:"raw",depth:2,title:"{{raw}}"},{id:"remove",depth:2,title:"{{remove}}"},{id:"removefirst",depth:2,title:"{{removeFirst}}"},{id:"replace",depth:2,title:"{{replace}}"},{id:"replacefirst",depth:2,title:"{{replaceFirst}}"},{id:"reverse",depth:2,title:"{{reverse}}"},{id:"sentence",depth:2,title:"{{sentence}}"},{id:"snakecase",depth:2,title:"{{snakecase}}"},{id:"split",depth:2,title:"{{split}}"},{id:"startswith",depth:2,title:"{{startsWith}}"},{id:"titleize",depth:2,title:"{{titleize}}"},{id:"trim",depth:2,title:"{{trim}}"},{id:"trimleft",depth:2,title:"{{trimLeft}}"},{id:"trimright",depth:2,title:"{{trimRight}}"},{id:"truncate",depth:2,title:"{{truncate}}"},{id:"truncatewords",depth:2,title:"{{truncateWords}}"},{id:"upcase",depth:2,title:"{{upcase}}"},{id:"uppercase",depth:2,title:"{{uppercase}}"}],cO=[{value:"Append the specified ",paraId:0,tocIndex:1},{value:"suffix",paraId:0,tocIndex:1},{value:" to the given string.",paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"str",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"suffix",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"Example",paraId:3,tocIndex:1},{value:` +context object.`,paraId:38,tocIndex:11},{value:"Params",paraId:39,tocIndex:11},{value:"object",paraId:40,tocIndex:11},{value:" ",paraId:40,tocIndex:11},{value:"{Object}",paraId:40,tocIndex:11},{value:": The target object. Pass an empty object to shallow clone.",paraId:40,tocIndex:11},{value:"objects",paraId:40,tocIndex:11},{value:" ",paraId:40,tocIndex:11},{value:"{Object}",paraId:40,tocIndex:11},{value:"returns",paraId:40,tocIndex:11},{value:" ",paraId:40,tocIndex:11},{value:"{Object}",paraId:40,tocIndex:11},{value:"Pick properties from the context object.",paraId:41,tocIndex:12},{value:"Params",paraId:42,tocIndex:12},{value:"properties",paraId:43,tocIndex:12},{value:" ",paraId:43,tocIndex:12},{value:"{Array|String}",paraId:43,tocIndex:12},{value:": One or more properties to pick.",paraId:43,tocIndex:12},{value:"context",paraId:43,tocIndex:12},{value:" ",paraId:43,tocIndex:12},{value:"{Object}",paraId:43,tocIndex:12},{value:"options",paraId:43,tocIndex:12},{value:" ",paraId:43,tocIndex:12},{value:"{Object}",paraId:43,tocIndex:12},{value:": Handlebars options object.",paraId:43,tocIndex:12},{value:"returns",paraId:43,tocIndex:12},{value:" ",paraId:43,tocIndex:12},{value:"{Object}",paraId:43,tocIndex:12},{value:": Returns an object with the picked values. If used as a block helper, the values are passed as context to the inner block. If no values are found, the context is passed to the inverse block.",paraId:43,tocIndex:12}],dO={},iO={title:"String",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/string.md",lastUpdated:173254844e4,description:"Append the specified suffix to the given string."},lO=[{id:"string",depth:1,title:"String"},{id:"append",depth:2,title:"{{append}}"},{id:"camelcase",depth:2,title:"{{camelcase}}"},{id:"capitalize",depth:2,title:"{{capitalize}}"},{id:"capitalizeall",depth:2,title:"{{capitalizeAll}}"},{id:"center",depth:2,title:"{{center}}"},{id:"chop",depth:2,title:"{{chop}}"},{id:"dashcase",depth:2,title:"{{dashcase}}"},{id:"dotcase",depth:2,title:"{{dotcase}}"},{id:"downcase",depth:2,title:"{{downcase}}"},{id:"ellipsis",depth:2,title:"{{ellipsis}}"},{id:"hyphenate",depth:2,title:"{{hyphenate}}"},{id:"isstring",depth:2,title:"{{isString}}"},{id:"lowercase",depth:2,title:"{{lowercase}}"},{id:"occurrences",depth:2,title:"{{occurrences}}"},{id:"pascalcase",depth:2,title:"{{pascalcase}}"},{id:"pathcase",depth:2,title:"{{pathcase}}"},{id:"plusify",depth:2,title:"{{plusify}}"},{id:"prepend",depth:2,title:"{{prepend}}"},{id:"raw",depth:2,title:"{{raw}}"},{id:"remove",depth:2,title:"{{remove}}"},{id:"removefirst",depth:2,title:"{{removeFirst}}"},{id:"replace",depth:2,title:"{{replace}}"},{id:"replacefirst",depth:2,title:"{{replaceFirst}}"},{id:"reverse",depth:2,title:"{{reverse}}"},{id:"sentence",depth:2,title:"{{sentence}}"},{id:"snakecase",depth:2,title:"{{snakecase}}"},{id:"split",depth:2,title:"{{split}}"},{id:"startswith",depth:2,title:"{{startsWith}}"},{id:"titleize",depth:2,title:"{{titleize}}"},{id:"trim",depth:2,title:"{{trim}}"},{id:"trimleft",depth:2,title:"{{trimLeft}}"},{id:"trimright",depth:2,title:"{{trimRight}}"},{id:"truncate",depth:2,title:"{{truncate}}"},{id:"truncatewords",depth:2,title:"{{truncateWords}}"},{id:"upcase",depth:2,title:"{{upcase}}"},{id:"uppercase",depth:2,title:"{{uppercase}}"}],cO=[{value:"Append the specified ",paraId:0,tocIndex:1},{value:"suffix",paraId:0,tocIndex:1},{value:" to the given string.",paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"str",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"suffix",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"Example",paraId:3,tocIndex:1},{value:` {{append item.stem ".html"}} `,paraId:4,tocIndex:1},{value:"camelCase the characters in the given ",paraId:5,tocIndex:2},{value:"string",paraId:5,tocIndex:2},{value:".",paraId:5,tocIndex:2},{value:"Params",paraId:6,tocIndex:2},{value:"string",paraId:7,tocIndex:2},{value:" ",paraId:7,tocIndex:2},{value:"{String}",paraId:7,tocIndex:2},{value:": The string to camelcase.",paraId:7,tocIndex:2},{value:"returns",paraId:7,tocIndex:2},{value:" ",paraId:7,tocIndex:2},{value:"{String}",paraId:7,tocIndex:2},{value:"Example",paraId:8,tocIndex:2},{value:`{{camelcase "foo bar baz"}}; @@ -13886,7 +13938,7 @@ truncateWords("foo bar baz", 3); `,paraId:176,tocIndex:35},{value:"Uppercase all of the characters in the given string. If used as a block helper it will uppercase the entire block. This helper does not support inverse blocks.",paraId:177,tocIndex:36},{value:"Params",paraId:178,tocIndex:36},{value:"str",paraId:179,tocIndex:36},{value:" ",paraId:179,tocIndex:36},{value:"{String}",paraId:179,tocIndex:36},{value:": The string to uppercase",paraId:179,tocIndex:36},{value:"options",paraId:179,tocIndex:36},{value:" ",paraId:179,tocIndex:36},{value:"{Object}",paraId:179,tocIndex:36},{value:": Handlebars options object",paraId:179,tocIndex:36},{value:"returns",paraId:179,tocIndex:36},{value:" ",paraId:179,tocIndex:36},{value:"{String}",paraId:179,tocIndex:36},{value:"Example",paraId:180,tocIndex:36},{value:`{{uppercase "aBcDeF"}} -`,paraId:181,tocIndex:36}],sO={},uO={title:"HTTP Request",toc:"menu",filename:"docs/en-US/development/client/api-client.md",lastUpdated:1732240239e3,description:"NocoBase provides an APIClient for making HTTP requests. Within the plugin lifecycle of a client-side application, you can use app.apiClient to make client-side requests. Inside components, you can use useAPIClient() and useRequest()."},pO=[{id:"http-request",depth:1,title:"HTTP Request"},{id:"appapiclient",depth:2,title:"app.apiClient"},{id:"apiclientrequest",depth:3,title:"apiClient.request()"},{id:"apiclientaxios",depth:3,title:"apiClient.axios"},{id:"custom-request-headers-in-nocobase-server",depth:3,title:"Custom Request Headers in NocoBase Server"},{id:"useapiclient",depth:2,title:"useAPIClient()"},{id:"userequest",depth:2,title:"useRequest()"}],IO=[{value:"NocoBase provides an ",paraId:0,tocIndex:0},{value:"APIClient",paraId:0,tocIndex:0},{value:" for making HTTP requests. Within the ",paraId:0,tocIndex:0},{value:"plugin lifecycle",paraId:1,tocIndex:0},{value:" of a client-side application, you can use ",paraId:0,tocIndex:0},{value:"app.apiClient",paraId:0,tocIndex:0},{value:" to make client-side requests. Inside components, you can use ",paraId:0,tocIndex:0},{value:"useAPIClient()",paraId:0,tocIndex:0},{value:" and ",paraId:0,tocIndex:0},{value:"useRequest()",paraId:0,tocIndex:0},{value:".",paraId:0,tocIndex:0},{value:`class PluginSampleAPIClient extends Plugin { +`,paraId:181,tocIndex:36}],sO={},uO={title:"HTTP Request",toc:"menu",filename:"docs/en-US/development/client/api-client.md",lastUpdated:173254844e4,description:"NocoBase provides an APIClient for making HTTP requests. Within the plugin lifecycle of a client-side application, you can use app.apiClient to make client-side requests. Inside components, you can use useAPIClient() and useRequest()."},pO=[{id:"http-request",depth:1,title:"HTTP Request"},{id:"appapiclient",depth:2,title:"app.apiClient"},{id:"apiclientrequest",depth:3,title:"apiClient.request()"},{id:"apiclientaxios",depth:3,title:"apiClient.axios"},{id:"custom-request-headers-in-nocobase-server",depth:3,title:"Custom Request Headers in NocoBase Server"},{id:"useapiclient",depth:2,title:"useAPIClient()"},{id:"userequest",depth:2,title:"useRequest()"}],IO=[{value:"NocoBase provides an ",paraId:0,tocIndex:0},{value:"APIClient",paraId:0,tocIndex:0},{value:" for making HTTP requests. Within the ",paraId:0,tocIndex:0},{value:"plugin lifecycle",paraId:1,tocIndex:0},{value:" of a client-side application, you can use ",paraId:0,tocIndex:0},{value:"app.apiClient",paraId:0,tocIndex:0},{value:" to make client-side requests. Inside components, you can use ",paraId:0,tocIndex:0},{value:"useAPIClient()",paraId:0,tocIndex:0},{value:" and ",paraId:0,tocIndex:0},{value:"useRequest()",paraId:0,tocIndex:0},{value:".",paraId:0,tocIndex:0},{value:`class PluginSampleAPIClient extends Plugin { async load() { const { data } = await this.app.apiClient.request({ url: 'test' }); } @@ -13946,7 +13998,7 @@ run({ pageSize: 20, }, }); -`,paraId:17,tocIndex:6}],_O={},vO={title:"\u63D2\u4EF6\u7684\u751F\u547D\u5468\u671F",toc:"menu",filename:"docs/en-US/development/client/life-cycle.md",lastUpdated:1732240239e3,description:"\u4EE5\u4E0B\u662F Plugin \u7C7B\u7684\u5B9A\u4E49\uFF0C\u6211\u4EEC\u770B\u5230\u5B83\u63D0\u4F9B\u4E86\u4E09\u4E2A\u751F\u547D\u5468\u671F\u65B9\u6CD5 afterAdd\u3001beforeLoad\u3001load\u3002"},mO=[{id:"\u63D2\u4EF6\u7684\u751F\u547D\u5468\u671F",depth:1,title:"\u63D2\u4EF6\u7684\u751F\u547D\u5468\u671F"},{id:"\u751F\u547D\u5468\u671F",depth:2,title:"\u751F\u547D\u5468\u671F"},{id:"afteradd",depth:3,title:"afterAdd"},{id:"beforeload",depth:3,title:"beforeLoad"},{id:"load",depth:3,title:"load"},{id:"\u63D2\u4EF6\u7BA1\u7406\u5668",depth:2,title:"\u63D2\u4EF6\u7BA1\u7406\u5668"},{id:"\u83B7\u53D6\u63D2\u4EF6",depth:3,title:"\u83B7\u53D6\u63D2\u4EF6"},{id:"\u6DFB\u52A0\u63D2\u4EF6",depth:3,title:"\u6DFB\u52A0\u63D2\u4EF6"}],hO=[{value:"\u4EE5\u4E0B\u662F ",paraId:0,tocIndex:1},{value:"Plugin",paraId:0,tocIndex:1},{value:" \u7C7B\u7684\u5B9A\u4E49\uFF0C\u6211\u4EEC\u770B\u5230\u5B83\u63D0\u4F9B\u4E86\u4E09\u4E2A\u751F\u547D\u5468\u671F\u65B9\u6CD5 ",paraId:0,tocIndex:1},{value:"afterAdd",paraId:0,tocIndex:1},{value:"\u3001",paraId:0,tocIndex:1},{value:"beforeLoad",paraId:0,tocIndex:1},{value:"\u3001",paraId:0,tocIndex:1},{value:"load",paraId:0,tocIndex:1},{value:"\u3002",paraId:0,tocIndex:1},{value:`export class Pluginany> { +`,paraId:17,tocIndex:6}],_O={},vO={title:"\u63D2\u4EF6\u7684\u751F\u547D\u5468\u671F",toc:"menu",filename:"docs/en-US/development/client/life-cycle.md",lastUpdated:173254844e4,description:"\u4EE5\u4E0B\u662F Plugin \u7C7B\u7684\u5B9A\u4E49\uFF0C\u6211\u4EEC\u770B\u5230\u5B83\u63D0\u4F9B\u4E86\u4E09\u4E2A\u751F\u547D\u5468\u671F\u65B9\u6CD5 afterAdd\u3001beforeLoad\u3001load\u3002"},mO=[{id:"\u63D2\u4EF6\u7684\u751F\u547D\u5468\u671F",depth:1,title:"\u63D2\u4EF6\u7684\u751F\u547D\u5468\u671F"},{id:"\u751F\u547D\u5468\u671F",depth:2,title:"\u751F\u547D\u5468\u671F"},{id:"afteradd",depth:3,title:"afterAdd"},{id:"beforeload",depth:3,title:"beforeLoad"},{id:"load",depth:3,title:"load"},{id:"\u63D2\u4EF6\u7BA1\u7406\u5668",depth:2,title:"\u63D2\u4EF6\u7BA1\u7406\u5668"},{id:"\u83B7\u53D6\u63D2\u4EF6",depth:3,title:"\u83B7\u53D6\u63D2\u4EF6"},{id:"\u6DFB\u52A0\u63D2\u4EF6",depth:3,title:"\u6DFB\u52A0\u63D2\u4EF6"}],hO=[{value:"\u4EE5\u4E0B\u662F ",paraId:0,tocIndex:1},{value:"Plugin",paraId:0,tocIndex:1},{value:" \u7C7B\u7684\u5B9A\u4E49\uFF0C\u6211\u4EEC\u770B\u5230\u5B83\u63D0\u4F9B\u4E86\u4E09\u4E2A\u751F\u547D\u5468\u671F\u65B9\u6CD5 ",paraId:0,tocIndex:1},{value:"afterAdd",paraId:0,tocIndex:1},{value:"\u3001",paraId:0,tocIndex:1},{value:"beforeLoad",paraId:0,tocIndex:1},{value:"\u3001",paraId:0,tocIndex:1},{value:"load",paraId:0,tocIndex:1},{value:"\u3002",paraId:0,tocIndex:1},{value:`export class Pluginany> { constructor( protected options: T, protected app: Application, @@ -14012,7 +14064,7 @@ const Demo = () => { this.app.pluginManager.add(DemoPlugin, { name: 'DemoPlugin' }); } } -`,paraId:18,tocIndex:7}],fO={},xO={title:"REST API",toc:"menu",filename:"docs/en-US/development/http-api/rest-api.md",lastUpdated:1732240239e3,description:"NocoBase \u7684 HTTP API \u662F REST API \u7684\u8D85\u96C6\uFF0C\u6807\u51C6\u7684 CRUD API \u4E5F\u652F\u6301 RESTful \u98CE\u683C\u3002"},gO=[{id:"rest-api",depth:1,title:"REST API"},{id:"collection-\u8D44\u6E90",depth:2,title:"Collection \u8D44\u6E90"},{id:"\u521B\u5EFA-collection",depth:3,title:"\u521B\u5EFA collection"},{id:"\u67E5\u770B-collection-\u5217\u8868",depth:3,title:"\u67E5\u770B collection \u5217\u8868"},{id:"\u67E5\u770B-collection-\u8BE6\u60C5",depth:3,title:"\u67E5\u770B collection \u8BE6\u60C5"},{id:"\u66F4\u65B0-collection",depth:3,title:"\u66F4\u65B0 collection"},{id:"\u5220\u9664-collection",depth:3,title:"\u5220\u9664 collection"},{id:"association-\u8D44\u6E90",depth:2,title:"Association \u8D44\u6E90"},{id:"\u521B\u5EFA-association",depth:3,title:"\u521B\u5EFA Association"},{id:"\u67E5\u770B-association-\u5217\u8868",depth:3,title:"\u67E5\u770B Association \u5217\u8868"},{id:"\u67E5\u770B-association-\u8BE6\u60C5",depth:3,title:"\u67E5\u770B Association \u8BE6\u60C5"},{id:"\u66F4\u65B0-association",depth:3,title:"\u66F4\u65B0 Association"},{id:"\u5220\u9664-association",depth:3,title:"\u5220\u9664 Association"}],bO=[{value:"NocoBase \u7684 HTTP API \u662F REST API \u7684\u8D85\u96C6\uFF0C\u6807\u51C6\u7684 CRUD API \u4E5F\u652F\u6301 RESTful \u98CE\u683C\u3002",paraId:0,tocIndex:0},{value:"HTTP API",paraId:1,tocIndex:2},{value:`POST /api/:create +`,paraId:18,tocIndex:7}],fO={},xO={title:"REST API",toc:"menu",filename:"docs/en-US/development/http-api/rest-api.md",lastUpdated:173254844e4,description:"NocoBase \u7684 HTTP API \u662F REST API \u7684\u8D85\u96C6\uFF0C\u6807\u51C6\u7684 CRUD API \u4E5F\u652F\u6301 RESTful \u98CE\u683C\u3002"},gO=[{id:"rest-api",depth:1,title:"REST API"},{id:"collection-\u8D44\u6E90",depth:2,title:"Collection \u8D44\u6E90"},{id:"\u521B\u5EFA-collection",depth:3,title:"\u521B\u5EFA collection"},{id:"\u67E5\u770B-collection-\u5217\u8868",depth:3,title:"\u67E5\u770B collection \u5217\u8868"},{id:"\u67E5\u770B-collection-\u8BE6\u60C5",depth:3,title:"\u67E5\u770B collection \u8BE6\u60C5"},{id:"\u66F4\u65B0-collection",depth:3,title:"\u66F4\u65B0 collection"},{id:"\u5220\u9664-collection",depth:3,title:"\u5220\u9664 collection"},{id:"association-\u8D44\u6E90",depth:2,title:"Association \u8D44\u6E90"},{id:"\u521B\u5EFA-association",depth:3,title:"\u521B\u5EFA Association"},{id:"\u67E5\u770B-association-\u5217\u8868",depth:3,title:"\u67E5\u770B Association \u5217\u8868"},{id:"\u67E5\u770B-association-\u8BE6\u60C5",depth:3,title:"\u67E5\u770B Association \u8BE6\u60C5"},{id:"\u66F4\u65B0-association",depth:3,title:"\u66F4\u65B0 Association"},{id:"\u5220\u9664-association",depth:3,title:"\u5220\u9664 Association"}],bO=[{value:"NocoBase \u7684 HTTP API \u662F REST API \u7684\u8D85\u96C6\uFF0C\u6807\u51C6\u7684 CRUD API \u4E5F\u652F\u6301 RESTful \u98CE\u683C\u3002",paraId:0,tocIndex:0},{value:"HTTP API",paraId:1,tocIndex:2},{value:`POST /api/:create {} # JSON body `,paraId:2,tocIndex:2},{value:"REST API",paraId:3,tocIndex:2},{value:`POST /api/ @@ -14065,7 +14117,7 @@ POST /api///:update///:destroy/ `,paraId:38,tocIndex:12},{value:"REST API",paraId:39,tocIndex:12},{value:`DELETE /api//// -`,paraId:40,tocIndex:12}],yO={},wO={title:"\u6280\u672F\u6808",toc:"menu",filename:"docs/en-US/development/others/tech-stack.md",lastUpdated:1732240239e3},kO=[{id:"\u6280\u672F\u6808",depth:1,title:"\u6280\u672F\u6808"}],SO=[{value:"NPM \u5305\u548C\u7248\u672C",paraId:0,tocIndex:0},{value:"\u4F5C\u7528",paraId:0,tocIndex:0},{value:"react\u3001react-dom\uFF0818.x\uFF09",paraId:0,tocIndex:0},{value:"\u6846\u67B6",paraId:0,tocIndex:0},{value:"react-router\uFF086.x\uFF09",paraId:0,tocIndex:0},{value:"\u8DEF\u7531",paraId:0,tocIndex:0},{value:"i18next\uFF0822.x\uFF09\u3001react-i18next\uFF0811.x\uFF09",paraId:0,tocIndex:0},{value:"\u56FD\u9645\u5316",paraId:0,tocIndex:0},{value:"ant-design\uFF085.x\uFF09",paraId:0,tocIndex:0},{value:"UI \u7EC4\u4EF6\u5E93",paraId:0,tocIndex:0},{value:"antd-style\uFF083.x\uFF09",paraId:0,tocIndex:0},{value:"\u52A8\u6001\u4E3B\u9898",paraId:0,tocIndex:0},{value:"axios\uFF080.26.x\uFF09\u3001useRequest\uFF083.x\uFF09",paraId:0,tocIndex:0},{value:"API \u8BF7\u6C42",paraId:0,tocIndex:0},{value:"Formily\uFF082.x\uFF09",paraId:0,tocIndex:0},{value:"UI Schema",paraId:0,tocIndex:0},{value:"dayjs\uFF081.11.x\uFF09",paraId:0,tocIndex:0},{value:"\u65E5\u671F\u683C\u5F0F\u5316",paraId:0,tocIndex:0},{value:"dnd-kit\uFF085.x\uFF09",paraId:0,tocIndex:0},{value:"\u62D6\u62FD",paraId:0,tocIndex:0},{value:"umi\uFF084.x\uFF09",paraId:0,tocIndex:0},{value:"\u5E94\u7528\u5F00\u53D1\u6846\u67B6",paraId:0,tocIndex:0},{value:"dumi\uFF082.x\uFF09",paraId:0,tocIndex:0},{value:"\u6587\u6863\u5DE5\u5177",paraId:0,tocIndex:0},{value:"vite\uFF084.x\uFF09\u3001tsup\uFF087.x\uFF09",paraId:0,tocIndex:0},{value:"\u6784\u5EFA\u5DE5\u5177",paraId:0,tocIndex:0},{value:"vitest\uFF080.34.x\uFF09",paraId:0,tocIndex:0},{value:"\u5355\u6D4B\u5DE5\u5177",paraId:0,tocIndex:0},{value:"playwright\uFF081.x\uFF09",paraId:0,tocIndex:0},{value:"E2E \u6D4B\u8BD5\u5DE5\u5177",paraId:0,tocIndex:0}],UO={},PO={title:"Middleware",toc:"menu",filename:"docs/en-US/development/server/middleware.md",lastUpdated:1732240239e3,description:"The registration method for middleware is usually written in the load method"},TO=[{id:"middleware",depth:1,title:"Middleware"},{id:"how-to-register-middleware",depth:2,title:"How to register middleware?"},{id:"onion-circle-model",depth:2,title:"Onion Circle Model"},{id:"built-in-middlewares-and-execution-order",depth:2,title:"Built-in middlewares and execution order"},{id:"resource-undefined-middlewares-added-by-resourceruse-will-not-be-executed",depth:3,title:"Resource undefined, middlewares added by resourcer.use() will not be executed"},{id:"middleware-usage",depth:2,title:"Middleware Usage"},{id:"example",depth:2,title:"Example"}],CO=[{value:"The registration method for middleware is usually written in the load method",paraId:0,tocIndex:1},{value:`export class MyPlugin extends Plugin { +`,paraId:40,tocIndex:12}],yO={},wO={title:"\u6280\u672F\u6808",toc:"menu",filename:"docs/en-US/development/others/tech-stack.md",lastUpdated:173254844e4},kO=[{id:"\u6280\u672F\u6808",depth:1,title:"\u6280\u672F\u6808"}],SO=[{value:"NPM \u5305\u548C\u7248\u672C",paraId:0,tocIndex:0},{value:"\u4F5C\u7528",paraId:0,tocIndex:0},{value:"react\u3001react-dom\uFF0818.x\uFF09",paraId:0,tocIndex:0},{value:"\u6846\u67B6",paraId:0,tocIndex:0},{value:"react-router\uFF086.x\uFF09",paraId:0,tocIndex:0},{value:"\u8DEF\u7531",paraId:0,tocIndex:0},{value:"i18next\uFF0822.x\uFF09\u3001react-i18next\uFF0811.x\uFF09",paraId:0,tocIndex:0},{value:"\u56FD\u9645\u5316",paraId:0,tocIndex:0},{value:"ant-design\uFF085.x\uFF09",paraId:0,tocIndex:0},{value:"UI \u7EC4\u4EF6\u5E93",paraId:0,tocIndex:0},{value:"antd-style\uFF083.x\uFF09",paraId:0,tocIndex:0},{value:"\u52A8\u6001\u4E3B\u9898",paraId:0,tocIndex:0},{value:"axios\uFF080.26.x\uFF09\u3001useRequest\uFF083.x\uFF09",paraId:0,tocIndex:0},{value:"API \u8BF7\u6C42",paraId:0,tocIndex:0},{value:"Formily\uFF082.x\uFF09",paraId:0,tocIndex:0},{value:"UI Schema",paraId:0,tocIndex:0},{value:"dayjs\uFF081.11.x\uFF09",paraId:0,tocIndex:0},{value:"\u65E5\u671F\u683C\u5F0F\u5316",paraId:0,tocIndex:0},{value:"dnd-kit\uFF085.x\uFF09",paraId:0,tocIndex:0},{value:"\u62D6\u62FD",paraId:0,tocIndex:0},{value:"umi\uFF084.x\uFF09",paraId:0,tocIndex:0},{value:"\u5E94\u7528\u5F00\u53D1\u6846\u67B6",paraId:0,tocIndex:0},{value:"dumi\uFF082.x\uFF09",paraId:0,tocIndex:0},{value:"\u6587\u6863\u5DE5\u5177",paraId:0,tocIndex:0},{value:"vite\uFF084.x\uFF09\u3001tsup\uFF087.x\uFF09",paraId:0,tocIndex:0},{value:"\u6784\u5EFA\u5DE5\u5177",paraId:0,tocIndex:0},{value:"vitest\uFF080.34.x\uFF09",paraId:0,tocIndex:0},{value:"\u5355\u6D4B\u5DE5\u5177",paraId:0,tocIndex:0},{value:"playwright\uFF081.x\uFF09",paraId:0,tocIndex:0},{value:"E2E \u6D4B\u8BD5\u5DE5\u5177",paraId:0,tocIndex:0}],UO={},PO={title:"Middleware",toc:"menu",filename:"docs/en-US/development/server/middleware.md",lastUpdated:173254844e4,description:"The registration method for middleware is usually written in the load method"},TO=[{id:"middleware",depth:1,title:"Middleware"},{id:"how-to-register-middleware",depth:2,title:"How to register middleware?"},{id:"onion-circle-model",depth:2,title:"Onion Circle Model"},{id:"built-in-middlewares-and-execution-order",depth:2,title:"Built-in middlewares and execution order"},{id:"resource-undefined-middlewares-added-by-resourceruse-will-not-be-executed",depth:3,title:"Resource undefined, middlewares added by resourcer.use() will not be executed"},{id:"middleware-usage",depth:2,title:"Middleware Usage"},{id:"example",depth:2,title:"Example"}],CO=[{value:"The registration method for middleware is usually written in the load method",paraId:0,tocIndex:1},{value:`export class MyPlugin extends Plugin { load() { this.app.acl.use(); this.app.resourcer.use(); @@ -14143,7 +14195,7 @@ app.resourcer.use(async (ctx, next) => { ctx.body.push(4); }); `,paraId:19,tocIndex:4},{value:"Visit ",paraId:20,tocIndex:4},{value:"http://localhost:13000/api/hello",paraId:20,tocIndex:4},{value:" to see that the browser responds with the following data",paraId:20,tocIndex:4},{value:`{"data": [1,2]} -`,paraId:21,tocIndex:4},{value:"In the above example, the hello resource is not defined and will not enter the resourcer, so the middleware in the resourcer will not be executed",paraId:22,tocIndex:4},{value:"TODO",paraId:23,tocIndex:5},{value:"samples/ratelimit",paraId:24,tocIndex:6},{value:" IP rate-limiting",paraId:24,tocIndex:6}],AO={},qO={title:"Develop the first plugin",toc:"menu",filename:"docs/en-US/development/your-fisrt-plugin.md",lastUpdated:1732240239e3,description:"Before start, you need to install NocoBase:."},EO=[{id:"develop-the-first-plugin",depth:1,title:"Develop the first plugin"},{id:"create-a-plugin",depth:2,title:"Create a plugin"},{id:"code-the-plugin",depth:2,title:"Code the plugin"},{id:"activate-the-plugin",depth:2,title:"Activate the plugin"},{id:"debug-the-plugin",depth:2,title:"Debug the Plugin"},{id:"build-the-plugin",depth:2,title:"Build the plugin"},{id:"upload-to-other-nocobase-applications",depth:2,title:"Upload to other NocoBase applications"}],DO=[{value:"Before start, you need to install NocoBase:.",paraId:0,tocIndex:0},{value:"create-nocobase-app installation",paraId:1,tocIndex:0},{value:"Git source installation",paraId:2,tocIndex:0},{value:"Once NocoBase is installed, we can start our plugin development journey.",paraId:3,tocIndex:0},{value:"First, you can quickly create an empty plugin via the CLI with the following command.",paraId:4,tocIndex:1},{value:`yarn pm create @my-project/plugin-hello +`,paraId:21,tocIndex:4},{value:"In the above example, the hello resource is not defined and will not enter the resourcer, so the middleware in the resourcer will not be executed",paraId:22,tocIndex:4},{value:"TODO",paraId:23,tocIndex:5},{value:"samples/ratelimit",paraId:24,tocIndex:6},{value:" IP rate-limiting",paraId:24,tocIndex:6}],AO={},qO={title:"Develop the first plugin",toc:"menu",filename:"docs/en-US/development/your-fisrt-plugin.md",lastUpdated:173254844e4,description:"Before start, you need to install NocoBase:."},EO=[{id:"develop-the-first-plugin",depth:1,title:"Develop the first plugin"},{id:"create-a-plugin",depth:2,title:"Create a plugin"},{id:"code-the-plugin",depth:2,title:"Code the plugin"},{id:"activate-the-plugin",depth:2,title:"Activate the plugin"},{id:"debug-the-plugin",depth:2,title:"Debug the Plugin"},{id:"build-the-plugin",depth:2,title:"Build the plugin"},{id:"upload-to-other-nocobase-applications",depth:2,title:"Upload to other NocoBase applications"}],DO=[{value:"Before start, you need to install NocoBase:.",paraId:0,tocIndex:0},{value:"create-nocobase-app installation",paraId:1,tocIndex:0},{value:"Git source installation",paraId:2,tocIndex:0},{value:"Once NocoBase is installed, we can start our plugin development journey.",paraId:3,tocIndex:0},{value:"First, you can quickly create an empty plugin via the CLI with the following command.",paraId:4,tocIndex:1},{value:`yarn pm create @my-project/plugin-hello `,paraId:5,tocIndex:1},{value:"The directory where the plugin located is ",paraId:6,tocIndex:1},{value:"packages/plugins/@my-project/plugin-hello",paraId:6,tocIndex:1},{value:" and the plugin directory structure is",paraId:6,tocIndex:1},{value:`|- /packages/plugins/@my-project/plugin-hello |- /src |- /client # plugin client code @@ -14201,14 +14253,15 @@ yarn start # step by step yarn build @my-project/plugin-hello yarn nocobase tar @my-project/plugin-hello -`,paraId:27,tocIndex:5},{value:"The default saved path for the plugin tar is ",paraId:28,tocIndex:5},{value:"storage/tar/@my-project/plugin-hello.tar.gz",paraId:28,tocIndex:5},{value:"Only supported in v0.14 and above",paraId:29,tocIndex:6}],OO={},RO={title:"Scan QR Code",toc:"menu",filename:"docs/en-US/handbook/action-qr-scan/index.md",lastUpdated:1732240239e3,description:"Scan-QR code action can be added in the workbench block."},MO=[{id:"scan-qr-code",depth:1,title:"Scan QR Code"},{id:"introduction",depth:2,title:"Introduction"},{id:"example",depth:2,title:"Example"}],LO=[{value:"Scan-QR code action can be added in the workbench block.",paraId:0,tocIndex:1},{value:` - `,paraId:1},{value:"For more information, please refer to ",paraId:2,tocIndex:2},{value:"Action panel",paraId:3,tocIndex:2},{value:".",paraId:2,tocIndex:2}],NO={},zO={title:"Backup and Restore",toc:"menu",filename:"docs/en-US/handbook/backup-restore/index.md",lastUpdated:1732240239e3,description:"The backup and restore plugin can be used for scenarios such as application replication, migration, and upgrade."},FO=[{id:"backup-and-restore",depth:1,title:"Backup and Restore"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-instructions",depth:2,title:"User Instructions"},{id:"creating-a-backup",depth:3,title:"Creating a Backup"},{id:"restore-backup",depth:3,title:"Restore Backup"},{id:"backup-instructions",depth:3,title:"Backup Instructions"}],BO=[{value:"The backup and restore plugin can be used for scenarios such as application replication, migration, and upgrade.",paraId:0,tocIndex:1},{value:"This plugin is built-in and does not require manual installation or activation.",paraId:1,tocIndex:2},{value:"You can choose to upload a backup from your local device or click on a backup file to restore.",paraId:2,tocIndex:5},{value:"Select the data you need to restore, the selected data will completely overwrite the corresponding data table of the target application.",paraId:3,tocIndex:5},{value:'Click on "Learn more" to view the backup instructions.',paraId:4,tocIndex:6},{value:"Backup Instructions",paraId:5,tocIndex:6},{value:"Backup Groups",paraId:6,tocIndex:6},{value:"Required Data: Essential data for system operation.",paraId:7,tocIndex:6},{value:"Skipped Data: Data skipped and not backed up.",paraId:7,tocIndex:6},{value:"User Data: Data related to users.",paraId:7,tocIndex:6},{value:"Log Data: Data used to record some actions log.",paraId:7,tocIndex:6},{value:"Third-party Service Information: Generally information about various service providers, such as file storage services, map services, and SMS service provider configuration information, etc.",paraId:7,tocIndex:6},{value:"Custom Collection Data: Data of collections added through the collection manager.",paraId:7,tocIndex:6},{value:"Unknown Data: Data without configured backup rules.",paraId:7,tocIndex:6},{value:"Note: You can choose the data you want to back up or restore by group. The selected data will completely overwrite when restoring.",paraId:8,tocIndex:6}],jO={},HO={title:"Connect Foreign Data Tables(FDW)",toc:"menu",filename:"docs/en-US/handbook/collection-fdw/index.md",lastUpdated:1732240239e3,description:"This is a plugin that connects to remote data tables based on the foreign data wrapper of the database. Currently, it supports MySQL and PostgreSQL databases."},WO=[{id:"connect-foreign-data-tablesfdw",depth:1,title:"Connect Foreign Data Tables(FDW)"},{id:"introduction",depth:2,title:"Introduction"},{id:"mysql",depth:3,title:"MySQL"},{id:"postgresql",depth:3,title:"PostgreSQL"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"}],$O=[{value:"This is a plugin that connects to remote data tables based on the foreign data wrapper of the database. Currently, it supports MySQL and PostgreSQL databases.",paraId:0,tocIndex:1},{value:"Connecting data sources",paraId:1},{value:" refers to establishing a connection with a specific database or API service, and you can fully use the features of the database or the services provided by the API;",paraId:1},{value:"Connecting external data tables",paraId:1},{value:" refers to obtaining data from the outside and mapping it for local use. In the database, it is called FDW (Foreign Data Wrapper), which is a database technology that focuses on using remote tables as local tables and can only connect one by one. Because it is remote access, there will be various constraints and limitations when using it.",paraId:1},{value:"The two can also be used in combination. The former is used to establish a connection with the data source, and the latter is used for cross data-source access. For example, a certain PostgreSQL data source is connected, and a certain table in this data source is an external data table created based on FDW.",paraId:2},{value:"MySQL uses the ",paraId:3,tocIndex:2},{value:"federated",paraId:3,tocIndex:2},{value:" engine, which needs to be activated, and supports connecting to remote MySQL and protocol-compatible databases, such as MariaDB. For more details, refer to the ",paraId:3,tocIndex:2},{value:"Federated Storage Engine",paraId:3,tocIndex:2},{value:" documentation.",paraId:3,tocIndex:2},{value:"In PostgreSQL, different types of ",paraId:4,tocIndex:3},{value:"fdw",paraId:4,tocIndex:3},{value:" extensions can be used to support different types of remote data. The currently supported extensions include:",paraId:4,tocIndex:3},{value:"postgres_fdw",paraId:5,tocIndex:3},{value:": Connect to a remote PostgreSQL database in PostgreSQL.",paraId:5,tocIndex:3},{value:"mysql_fdw(under development)",paraId:5,tocIndex:3},{value:": Connect to a remote MySQL database in PostgreSQL.",paraId:5,tocIndex:3},{value:"For other types of fdw extensions, refer to ",paraId:5,tocIndex:3},{value:"PostgreSQL Foreign Data Wrappers",paraId:5,tocIndex:3},{value:". You need to implement the corresponding adaptation interface in the code.",paraId:5,tocIndex:3},{value:"Prerequisites",paraId:6,tocIndex:4},{value:"If the Main database of NocoBase is MySQL, it needs to activate ",paraId:7,tocIndex:4},{value:"federated",paraId:7,tocIndex:4},{value:". Refer to ",paraId:7,tocIndex:4},{value:"How to enable the federated engine in MySQL",paraId:8,tocIndex:4},{value:"Then install and activate the plugin through the plugin manager",paraId:9,tocIndex:4},{value:'Under "Collection manager > Create collection", select "Connect to foreign data"',paraId:10,tocIndex:5},{value:'In the "Database Server" dropdown, select an existing database service, or "Create Database Server"',paraId:11,tocIndex:5},{value:"Create a database server",paraId:12,tocIndex:5},{value:'After selecting the database server, in the "Remote table" dropdown, select the data table you need to connect.',paraId:13,tocIndex:5},{value:"Configure field information",paraId:14,tocIndex:5},{value:'If the remote table has structural changes, you can also "Sync from remote table"',paraId:15,tocIndex:5},{value:"Remote table sync",paraId:16,tocIndex:5},{value:"Finally, display it on the interface",paraId:17,tocIndex:5}],GO={},VO={title:"SQL Collection",toc:"menu",filename:"docs/en-US/handbook/collection-sql/index.md",lastUpdated:1732240239e3,description:"The SQL collection provides a powerful method for retrieving data using SQL queries. By extracting data fields through SQL queries and configuring the associated field metadata, users can utilize these fields as though they were working with a standard table. This feature is particularly beneficial for scenarios involving complex join queries, statistical analysis, and more."},KO=[{id:"sql-collection",depth:1,title:"SQL Collection"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-new-sql-collection",depth:3,title:"Creating a New SQL Collection"},{id:"editing",depth:3,title:"Editing"},{id:"synchronization",depth:3,title:"Synchronization"},{id:"comparison-between-sql-collection-and-linked-database-views",depth:3,title:"Comparison Between SQL collection and Linked Database Views"}],ZO=[{value:"The SQL collection provides a powerful method for retrieving data using SQL queries. By extracting data fields through SQL queries and configuring the associated field metadata, users can utilize these fields as though they were working with a standard table. This feature is particularly beneficial for scenarios involving complex join queries, statistical analysis, and more.",paraId:0,tocIndex:1},{value:"Enter your SQL query in the provided input box and click Execute. The system will analyze the query to determine the tables and fields involved, automatically extracting the relevant field metadata from the source tables.",paraId:1,tocIndex:3},{value:"If the system's analysis of the source tables and fields is incorrect, you can manually select the appropriate tables and fields to ensure the correct metadata is used. Start by selecting the source table, then choose the corresponding fields in the field source section below.",paraId:2,tocIndex:3},{value:"For fields that do not have a direct source, the system will infer the field type based on the data type. If this inference is incorrect, you can manually select the proper field type.",paraId:3,tocIndex:3},{value:"As you configure each field, you can preview its display in the preview area, allowing you to see the immediate impact of your settings.",paraId:4,tocIndex:3},{value:"After you have completed the configuration and confirmed that everything is correct, click the Confirm button below the SQL input box to finalize the submission.",paraId:5,tocIndex:3},{value:"If you need to modify the SQL query, click the Edit button to directly alter the SQL statement and reconfigure the fields as needed.",paraId:6,tocIndex:4},{value:"To adjust the field metadata, use the Configure Fields option, which allows you to update the field settings just as you would for a regular table.",paraId:7,tocIndex:4},{value:"If the SQL query remains unchanged but the underlying database table structure has been modified, you can synchronize and reconfigure the fields by selecting Configure Fields - Sync from Database.",paraId:8,tocIndex:5},{value:"Template Type",paraId:9,tocIndex:6},{value:"Best Suited For",paraId:9,tocIndex:6},{value:"Implementation Method",paraId:9,tocIndex:6},{value:"Support for CRUD Operations",paraId:9,tocIndex:6},{value:"SQL",paraId:9,tocIndex:6},{value:"Simple models, lightweight use cases",paraId:9,tocIndex:6},{value:"Limited interaction with the database",paraId:9,tocIndex:6},{value:"Avoiding maintenance of views",paraId:9,tocIndex:6},{value:"Prefer UI-driven operations",paraId:9,tocIndex:6},{value:"SQL subquery",paraId:9,tocIndex:6},{value:"Not Supported",paraId:9,tocIndex:6},{value:"Connect to database view",paraId:9,tocIndex:6},{value:"Complex models",paraId:9,tocIndex:6},{value:"Requires database interaction",paraId:9,tocIndex:6},{value:"Data modification needed",paraId:9,tocIndex:6},{value:"Requires stronger and more stable database support",paraId:9,tocIndex:6},{value:"Database view",paraId:9,tocIndex:6},{value:"Partially Supported",paraId:9,tocIndex:6},{value:"When using SQL collection, be sure to select tables that are manageable within NocoBase. Using tables from the same database that are not connected to NocoBase may lead to inaccurate SQL query parsing. If this is a concern, consider creating and linking to a view.",paraId:10}],YO={},QO={title:"Sequence",toc:"menu",filename:"docs/en-US/handbook/field-sequence/index.md",lastUpdated:1732240239e3,description:"To be added"},JO=[{id:"sequence",depth:1,title:"Sequence"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"example",depth:2,title:"Example"}],XO=[{value:"To be added",paraId:0,tocIndex:3}],eR={},aR={title:"snapshot field",toc:"menu",filename:"docs/en-US/handbook/field-snapshot/index.md",lastUpdated:1732240239e3},tR=[{id:"snapshot-field",depth:1,title:"snapshot field"}],nR=[],oR={},rR={title:"Plugin Management",toc:"menu",filename:"docs/en-US/handbook/plugin-manager/index.md",lastUpdated:1732240239e3,description:"By clicking the plugin manager icon in the top right corner, you can access the plugin manager page. Here, you can view, install, enable, and disable plugins."},dR=[{id:"plugin-management",depth:1,title:"Plugin Management"},{id:"plugin-manager",depth:2,title:"Plugin Manager"},{id:"plugin-settings-center",depth:2,title:"Plugin Settings Center"}],iR=[{value:"By clicking the plugin manager icon in the top right corner, you can access the plugin manager page. Here, you can view, install, enable, and disable plugins.",paraId:0,tocIndex:1},{value:"Plugins usually come with their own settings page. By clicking on the settings icon in the top right corner, you can see the menu of all plugin settings pages. By clicking on the relevant menu, you can set the corresponding plugin.",paraId:1,tocIndex:2}],lR={},cR={title:"Delay",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/delay.md",lastUpdated:1732240239e3,description:"The delay node allows you to introduce a pause within a workflow. Once the delay concludes, you can configure whether to proceed with the next step or terminate the workflow prematurely."},sR=[{id:"delay",depth:1,title:"Delay"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"delay-time",depth:4,title:"Delay Time"},{id:"timeout-status",depth:4,title:"Timeout Status"},{id:"example",depth:3,title:"Example"}],uR=[{value:"The delay node allows you to introduce a pause within a workflow. Once the delay concludes, you can configure whether to proceed with the next step or terminate the workflow prematurely.",paraId:0},{value:'This node is often used in tandem with parallel branch nodes. By adding a delay node to one of the branches, you can effectively manage timeouts. For example, in a scenario where one branch requires manual processing while another includes a delay node, you can determine the outcome if the manual process exceeds the allotted time. Selecting "timeout failure" means that the manual process must be completed within the specified timeframe. On the other hand, choosing "timeout continuation" allows the workflow to bypass the manual process once the delay has elapsed.',paraId:1},{value:"This plugin is built-in and requires no installation.",paraId:2,tocIndex:1},{value:'In the workflow configuration interface, click the plus sign ("+") within the flow to add a "Delay" node:',paraId:3,tocIndex:3},{value:"You can specify the delay duration by entering a number and selecting a time unit. Supported units include seconds, minutes, hours, days, and weeks.",paraId:4,tocIndex:5},{value:'You can set the timeout status to either "Succeed and continue" or "Fail and Exit." The "Succeed and continue" option ensures that the workflow progresses to the next steps after the delay ends. Conversely, the "Fail and Exit" option terminates the workflow with a failure status once the delay concludes.',paraId:5,tocIndex:6},{value:'In a scenario where a work order must be addressed within a certain timeframe, you can add a manual node to one branch and a delay node to the other in parallel branches. If the manual process fails to respond within 10 minutes, the work order status will be updated to "Timeout Unprocessed."',paraId:6,tocIndex:7}],pR={},IR={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/index.md",lastUpdated:1732240239e3,description:"Nodes are the basic units of logical arrangement in a workflow. A workflow can contains any number of nodes, and each node type represents an instruction that determines the behavior of the node. The configuration of a node corresponds to the parameters of the instruction, which determining the operation data object or other content of its behavior."},_R=[{id:"overview",depth:1,title:"Overview"}],vR=[{value:"Nodes are the basic units of logical arrangement in a workflow. A workflow can contains any number of nodes, and each node type represents an instruction that determines the behavior of the node. The configuration of a node corresponds to the parameters of the instruction, which determining the operation data object or other content of its behavior.",paraId:0,tocIndex:0},{value:"Workflow triggers are not considered to be nodes but are displayed in the workflow diagram as entry nodes. They are different concepts from nodes. For details, please refer to the ",paraId:1},{value:"Triggers",paraId:2},{value:" section.",paraId:1},{value:"From a functional perspective, the nodes implemented so far are in four categories (a total of 18 types of nodes):",paraId:3},{value:`Flow Control +`,paraId:27,tocIndex:5},{value:"The default saved path for the plugin tar is ",paraId:28,tocIndex:5},{value:"storage/tar/@my-project/plugin-hello.tar.gz",paraId:28,tocIndex:5},{value:"Only supported in v0.14 and above",paraId:29,tocIndex:6}],OO={},RO={title:"Scan QR Code",toc:"menu",filename:"docs/en-US/handbook/action-qr-scan/index.md",lastUpdated:173254844e4,description:"The QR code scanning action can be added in the workbench block to facilitate navigation within the system."},MO=[{id:"scan-qr-code",depth:1,title:"Scan QR Code"},{id:"introduction",depth:2,title:"Introduction"},{id:"example",depth:2,title:"Example"},{id:"user-guide",depth:2,title:"User Guide"},{id:"generate-a-qr-code",depth:3,title:"Generate a QR Code"}],LO=[{value:"The QR code scanning action can be added in the workbench block to facilitate navigation within the system.",paraId:0,tocIndex:1},{value:` + `,paraId:1},{value:"Suppose the page link to redirect to is: ",paraId:2,tocIndex:4},{value:"https://localhost:13000/m/page/vyoiwa25jig",paraId:2,tocIndex:4},{value:".",paraId:2,tocIndex:4},{value:"Extract the relative link starting from ",paraId:2,tocIndex:4},{value:"/page/",paraId:2,tocIndex:4},{value:" from the mobile page URL, and use it to generate a QR code.",paraId:2,tocIndex:4},{value:"Create a new Markdown block and use the following code:",paraId:2,tocIndex:4},{value:` +`,paraId:3,tocIndex:4},{value:'Add a "Scan QR Code" action to scan and navigate to the corresponding page.',paraId:4,tocIndex:4},{value:"Note",paraId:5,tocIndex:4},{value:":",paraId:5,tocIndex:4},{value:"The QR code scanning action only supports internal system relative links and must start with ",paraId:6,tocIndex:4},{value:"/page/",paraId:6,tocIndex:4},{value:".",paraId:6,tocIndex:4},{value:"External page links are not supported at this time.",paraId:6,tocIndex:4},{value:"For further details, check the ",paraId:7,tocIndex:4},{value:"Action Panel Block",paraId:8,tocIndex:4},{value:" documentation.",paraId:7,tocIndex:4}],NO={},zO={title:"Backup and Restore",toc:"menu",filename:"docs/en-US/handbook/backup-restore/index.md",lastUpdated:173254844e4,description:"The backup and restore plugin can be used for scenarios such as application replication, migration, and upgrade."},FO=[{id:"backup-and-restore",depth:1,title:"Backup and Restore"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-instructions",depth:2,title:"User Instructions"},{id:"creating-a-backup",depth:3,title:"Creating a Backup"},{id:"restore-backup",depth:3,title:"Restore Backup"},{id:"backup-instructions",depth:3,title:"Backup Instructions"}],BO=[{value:"The backup and restore plugin can be used for scenarios such as application replication, migration, and upgrade.",paraId:0,tocIndex:1},{value:"This plugin is built-in and does not require manual installation or activation.",paraId:1,tocIndex:2},{value:"You can choose to upload a backup from your local device or click on a backup file to restore.",paraId:2,tocIndex:5},{value:"Select the data you need to restore, the selected data will completely overwrite the corresponding data table of the target application.",paraId:3,tocIndex:5},{value:'Click on "Learn more" to view the backup instructions.',paraId:4,tocIndex:6},{value:"Backup Instructions",paraId:5,tocIndex:6},{value:"Backup Groups",paraId:6,tocIndex:6},{value:"Required Data: Essential data for system operation.",paraId:7,tocIndex:6},{value:"Skipped Data: Data skipped and not backed up.",paraId:7,tocIndex:6},{value:"User Data: Data related to users.",paraId:7,tocIndex:6},{value:"Log Data: Data used to record some actions log.",paraId:7,tocIndex:6},{value:"Third-party Service Information: Generally information about various service providers, such as file storage services, map services, and SMS service provider configuration information, etc.",paraId:7,tocIndex:6},{value:"Custom Collection Data: Data of collections added through the collection manager.",paraId:7,tocIndex:6},{value:"Unknown Data: Data without configured backup rules.",paraId:7,tocIndex:6},{value:"Note: You can choose the data you want to back up or restore by group. The selected data will completely overwrite when restoring.",paraId:8,tocIndex:6}],jO={},HO={title:"Connect Foreign Data Tables(FDW)",toc:"menu",filename:"docs/en-US/handbook/collection-fdw/index.md",lastUpdated:173254844e4,description:"This is a plugin that connects to remote data tables based on the foreign data wrapper of the database. Currently, it supports MySQL and PostgreSQL databases."},WO=[{id:"connect-foreign-data-tablesfdw",depth:1,title:"Connect Foreign Data Tables(FDW)"},{id:"introduction",depth:2,title:"Introduction"},{id:"mysql",depth:3,title:"MySQL"},{id:"postgresql",depth:3,title:"PostgreSQL"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"}],$O=[{value:"This is a plugin that connects to remote data tables based on the foreign data wrapper of the database. Currently, it supports MySQL and PostgreSQL databases.",paraId:0,tocIndex:1},{value:"Connecting data sources",paraId:1},{value:" refers to establishing a connection with a specific database or API service, and you can fully use the features of the database or the services provided by the API;",paraId:1},{value:"Connecting external data tables",paraId:1},{value:" refers to obtaining data from the outside and mapping it for local use. In the database, it is called FDW (Foreign Data Wrapper), which is a database technology that focuses on using remote tables as local tables and can only connect one by one. Because it is remote access, there will be various constraints and limitations when using it.",paraId:1},{value:"The two can also be used in combination. The former is used to establish a connection with the data source, and the latter is used for cross data-source access. For example, a certain PostgreSQL data source is connected, and a certain table in this data source is an external data table created based on FDW.",paraId:2},{value:"MySQL uses the ",paraId:3,tocIndex:2},{value:"federated",paraId:3,tocIndex:2},{value:" engine, which needs to be activated, and supports connecting to remote MySQL and protocol-compatible databases, such as MariaDB. For more details, refer to the ",paraId:3,tocIndex:2},{value:"Federated Storage Engine",paraId:3,tocIndex:2},{value:" documentation.",paraId:3,tocIndex:2},{value:"In PostgreSQL, different types of ",paraId:4,tocIndex:3},{value:"fdw",paraId:4,tocIndex:3},{value:" extensions can be used to support different types of remote data. The currently supported extensions include:",paraId:4,tocIndex:3},{value:"postgres_fdw",paraId:5,tocIndex:3},{value:": Connect to a remote PostgreSQL database in PostgreSQL.",paraId:5,tocIndex:3},{value:"mysql_fdw(under development)",paraId:5,tocIndex:3},{value:": Connect to a remote MySQL database in PostgreSQL.",paraId:5,tocIndex:3},{value:"For other types of fdw extensions, refer to ",paraId:5,tocIndex:3},{value:"PostgreSQL Foreign Data Wrappers",paraId:5,tocIndex:3},{value:". You need to implement the corresponding adaptation interface in the code.",paraId:5,tocIndex:3},{value:"Prerequisites",paraId:6,tocIndex:4},{value:"If the Main database of NocoBase is MySQL, it needs to activate ",paraId:7,tocIndex:4},{value:"federated",paraId:7,tocIndex:4},{value:". Refer to ",paraId:7,tocIndex:4},{value:"How to enable the federated engine in MySQL",paraId:8,tocIndex:4},{value:"Then install and activate the plugin through the plugin manager",paraId:9,tocIndex:4},{value:'Under "Collection manager > Create collection", select "Connect to foreign data"',paraId:10,tocIndex:5},{value:'In the "Database Server" dropdown, select an existing database service, or "Create Database Server"',paraId:11,tocIndex:5},{value:"Create a database server",paraId:12,tocIndex:5},{value:'After selecting the database server, in the "Remote table" dropdown, select the data table you need to connect.',paraId:13,tocIndex:5},{value:"Configure field information",paraId:14,tocIndex:5},{value:'If the remote table has structural changes, you can also "Sync from remote table"',paraId:15,tocIndex:5},{value:"Remote table sync",paraId:16,tocIndex:5},{value:"Finally, display it on the interface",paraId:17,tocIndex:5}],GO={},VO={title:"SQL Collection",toc:"menu",filename:"docs/en-US/handbook/collection-sql/index.md",lastUpdated:173254844e4,description:"The SQL collection provides a powerful method for retrieving data using SQL queries. By extracting data fields through SQL queries and configuring the associated field metadata, users can utilize these fields as though they were working with a standard table. This feature is particularly beneficial for scenarios involving complex join queries, statistical analysis, and more."},KO=[{id:"sql-collection",depth:1,title:"SQL Collection"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-new-sql-collection",depth:3,title:"Creating a New SQL Collection"},{id:"editing",depth:3,title:"Editing"},{id:"synchronization",depth:3,title:"Synchronization"},{id:"comparison-between-sql-collection-and-linked-database-views",depth:3,title:"Comparison Between SQL collection and Linked Database Views"}],ZO=[{value:"The SQL collection provides a powerful method for retrieving data using SQL queries. By extracting data fields through SQL queries and configuring the associated field metadata, users can utilize these fields as though they were working with a standard table. This feature is particularly beneficial for scenarios involving complex join queries, statistical analysis, and more.",paraId:0,tocIndex:1},{value:"Enter your SQL query in the provided input box and click Execute. The system will analyze the query to determine the tables and fields involved, automatically extracting the relevant field metadata from the source tables.",paraId:1,tocIndex:3},{value:"If the system's analysis of the source tables and fields is incorrect, you can manually select the appropriate tables and fields to ensure the correct metadata is used. Start by selecting the source table, then choose the corresponding fields in the field source section below.",paraId:2,tocIndex:3},{value:"For fields that do not have a direct source, the system will infer the field type based on the data type. If this inference is incorrect, you can manually select the proper field type.",paraId:3,tocIndex:3},{value:"As you configure each field, you can preview its display in the preview area, allowing you to see the immediate impact of your settings.",paraId:4,tocIndex:3},{value:"After you have completed the configuration and confirmed that everything is correct, click the Confirm button below the SQL input box to finalize the submission.",paraId:5,tocIndex:3},{value:"If you need to modify the SQL query, click the Edit button to directly alter the SQL statement and reconfigure the fields as needed.",paraId:6,tocIndex:4},{value:"To adjust the field metadata, use the Configure Fields option, which allows you to update the field settings just as you would for a regular table.",paraId:7,tocIndex:4},{value:"If the SQL query remains unchanged but the underlying database table structure has been modified, you can synchronize and reconfigure the fields by selecting Configure Fields - Sync from Database.",paraId:8,tocIndex:5},{value:"Template Type",paraId:9,tocIndex:6},{value:"Best Suited For",paraId:9,tocIndex:6},{value:"Implementation Method",paraId:9,tocIndex:6},{value:"Support for CRUD Operations",paraId:9,tocIndex:6},{value:"SQL",paraId:9,tocIndex:6},{value:"Simple models, lightweight use cases",paraId:9,tocIndex:6},{value:"Limited interaction with the database",paraId:9,tocIndex:6},{value:"Avoiding maintenance of views",paraId:9,tocIndex:6},{value:"Prefer UI-driven operations",paraId:9,tocIndex:6},{value:"SQL subquery",paraId:9,tocIndex:6},{value:"Not Supported",paraId:9,tocIndex:6},{value:"Connect to database view",paraId:9,tocIndex:6},{value:"Complex models",paraId:9,tocIndex:6},{value:"Requires database interaction",paraId:9,tocIndex:6},{value:"Data modification needed",paraId:9,tocIndex:6},{value:"Requires stronger and more stable database support",paraId:9,tocIndex:6},{value:"Database view",paraId:9,tocIndex:6},{value:"Partially Supported",paraId:9,tocIndex:6},{value:"When using SQL collection, be sure to select tables that are manageable within NocoBase. Using tables from the same database that are not connected to NocoBase may lead to inaccurate SQL query parsing. If this is a concern, consider creating and linking to a view.",paraId:10}],YO={},QO={title:"Sequence",toc:"menu",filename:"docs/en-US/handbook/field-sequence/index.md",lastUpdated:173254844e4,description:"To be added"},JO=[{id:"sequence",depth:1,title:"Sequence"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"example",depth:2,title:"Example"}],XO=[{value:"To be added",paraId:0,tocIndex:3}],eR={},aR={title:"snapshot field",toc:"menu",filename:"docs/en-US/handbook/field-snapshot/index.md",lastUpdated:173254844e4},tR=[{id:"snapshot-field",depth:1,title:"snapshot field"}],nR=[],oR={},rR={title:"Plugin Management",toc:"menu",filename:"docs/en-US/handbook/plugin-manager/index.md",lastUpdated:173254844e4,description:"By clicking the plugin manager icon in the top right corner, you can access the plugin manager page. Here, you can view, install, enable, and disable plugins."},dR=[{id:"plugin-management",depth:1,title:"Plugin Management"},{id:"plugin-manager",depth:2,title:"Plugin Manager"},{id:"plugin-settings-center",depth:2,title:"Plugin Settings Center"}],iR=[{value:"By clicking the plugin manager icon in the top right corner, you can access the plugin manager page. Here, you can view, install, enable, and disable plugins.",paraId:0,tocIndex:1},{value:"Plugins usually come with their own settings page. By clicking on the settings icon in the top right corner, you can see the menu of all plugin settings pages. By clicking on the relevant menu, you can set the corresponding plugin.",paraId:1,tocIndex:2}],lR={},cR={title:"Delay",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/delay.md",lastUpdated:173254844e4,description:"The delay node allows you to introduce a pause within a workflow. Once the delay concludes, you can configure whether to proceed with the next step or terminate the workflow prematurely."},sR=[{id:"delay",depth:1,title:"Delay"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"delay-time",depth:4,title:"Delay Time"},{id:"timeout-status",depth:4,title:"Timeout Status"},{id:"example",depth:3,title:"Example"}],uR=[{value:"The delay node allows you to introduce a pause within a workflow. Once the delay concludes, you can configure whether to proceed with the next step or terminate the workflow prematurely.",paraId:0},{value:'This node is often used in tandem with parallel branch nodes. By adding a delay node to one of the branches, you can effectively manage timeouts. For example, in a scenario where one branch requires manual processing while another includes a delay node, you can determine the outcome if the manual process exceeds the allotted time. Selecting "timeout failure" means that the manual process must be completed within the specified timeframe. On the other hand, choosing "timeout continuation" allows the workflow to bypass the manual process once the delay has elapsed.',paraId:1},{value:"This plugin is built-in and requires no installation.",paraId:2,tocIndex:1},{value:'In the workflow configuration interface, click the plus sign ("+") within the flow to add a "Delay" node:',paraId:3,tocIndex:3},{value:"You can specify the delay duration by entering a number and selecting a time unit. Supported units include seconds, minutes, hours, days, and weeks.",paraId:4,tocIndex:5},{value:'You can set the timeout status to either "Succeed and continue" or "Fail and Exit." The "Succeed and continue" option ensures that the workflow progresses to the next steps after the delay ends. Conversely, the "Fail and Exit" option terminates the workflow with a failure status once the delay concludes.',paraId:5,tocIndex:6},{value:'In a scenario where a work order must be addressed within a certain timeframe, you can add a manual node to one branch and a delay node to the other in parallel branches. If the manual process fails to respond within 10 minutes, the work order status will be updated to "Timeout Unprocessed."',paraId:6,tocIndex:7}],pR={},IR={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/index.md",lastUpdated:173254844e4,description:"Nodes are the basic units of logical arrangement in a workflow. A workflow can contains any number of nodes, and each node type represents an instruction that determines the behavior of the node. The configuration of a node corresponds to the parameters of the instruction, which determining the operation data object or other content of its behavior."},_R=[{id:"overview",depth:1,title:"Overview"}],vR=[{value:"Nodes are the basic units of logical arrangement in a workflow. A workflow can contains any number of nodes, and each node type represents an instruction that determines the behavior of the node. The configuration of a node corresponds to the parameters of the instruction, which determining the operation data object or other content of its behavior.",paraId:0,tocIndex:0},{value:"Workflow triggers are not considered to be nodes but are displayed in the workflow diagram as entry nodes. They are different concepts from nodes. For details, please refer to the ",paraId:1},{value:"Triggers",paraId:2},{value:" section.",paraId:1},{value:"From a functional perspective, the nodes implemented so far are in four categories (a total of 18 types of nodes):",paraId:3},{value:`Flow Control `,paraId:4},{value:"Condition",paraId:5},{value:"Delay",paraId:6},{value:" (provided by plugin @nocobase/plugin-workflow-deley)",paraId:7},{value:"End Process",paraId:8},{value:"Loop",paraId:9},{value:" (provided by plugin @nocobase/plugin-workflow-loop)",paraId:7},{value:"Parallel Branch",paraId:10},{value:" (provided by plugin @nocobase/plugin-workflow-parallel)",paraId:7},{value:"Custom Variable",paraId:11},{value:" (provided by plugin @nocobase/plugin-workflow-variable)",paraId:7},{value:`Calculation `,paraId:4},{value:"Calculation",paraId:12},{value:"Dynamic Expression Calculation",paraId:13},{value:" (provided by plugin @nocobase/plugin-workflow-dynamic-calculation)",paraId:14},{value:"Date Calculation",paraId:15},{value:" (provided by plugin @nocobase/plugin-workflow-date-calculation)",paraId:14},{value:`Data Table Operations `,paraId:4},{value:"Create record",paraId:16},{value:"Update record",paraId:17},{value:"Delete record",paraId:18},{value:"Query record",paraId:19},{value:"Aggregate Query",paraId:20},{value:" (provided by plugin @nocobase/plugin-workflow-aggregate)",paraId:21},{value:"SQL Operation",paraId:22},{value:" (provided by plugin @nocobase/plugin-workflow-sql)",paraId:21},{value:`Manual Processing `,paraId:4},{value:"Manual Processing",paraId:23},{value:" (provided by plugin @nocobase/plugin-workflow-manual)",paraId:24},{value:"Approval",paraId:25},{value:" (provided by plugin @nocobase/plugin-workflow-approval)",paraId:24},{value:`Other Extensions -`,paraId:4},{value:"HTTP Request",paraId:26},{value:" (provided by plugin @nocobase/plugin-workflow-request)",paraId:27},{value:"Response Message",paraId:28},{value:" (provided by plugin @nocobase/plugin-workflow-response-message)",paraId:27}],mR={},hR={title:"Query Record",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/query.md",lastUpdated:1732240239e3,description:"Used to query and retrieve data records that meet certain conditions from a collection."},fR=[{id:"query-record",depth:1,title:"Query Record"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"collection",depth:3,title:"Collection"},{id:"result-type",depth:3,title:"Result type"},{id:"filter-conditions",depth:3,title:"Filter Conditions"},{id:"sorting",depth:3,title:"Sorting"},{id:"pagination",depth:3,title:"Pagination"},{id:"handling-empty-results",depth:3,title:"Handling Empty Results"}],xR=[{value:"Used to query and retrieve data records that meet certain conditions from a collection.",paraId:0,tocIndex:0},{value:"It can be configured to query single or multiple data records, and the query result can be used as a variable in subsequent nodes. When querying multiple data records, the query result is an array. When the query result is empty, you can choose whether to continue executing subsequent nodes.",paraId:1,tocIndex:0},{value:'In the workflow configuration UI, click the plus ("+") button in the workflow and add a "Query Record" node:',paraId:2,tocIndex:1},{value:"Select the collection to query record from.",paraId:3,tocIndex:3},{value:'There are two result types: "Single Data" and "Multiple record":',paraId:4,tocIndex:4},{value:"Single record: The result will be an object of the first matching record only, or null if no matched record.",paraId:5,tocIndex:4},{value:"Multiple records: The result will be an array containing matched records, or an empty one if no matching records. This can be used to be processed in a loop node.",paraId:5,tocIndex:4},{value:"Similar to the filter conditions when querying a normal collection, you can use context variables of the workflow.",paraId:6,tocIndex:5},{value:'When querying one or more data records, sorting rules can be used to control the desired results. For example, to query the latest data record, you can sort by the "Created at" field in descending order.',paraId:7,tocIndex:6},{value:'When the result set may be large, pagination can be used to control the number of query results. For example, to query the latest 10 data records, you can sort by the "Creation Time" field in descending order and then set pagination to 1 page with 10 data records.',paraId:8,tocIndex:7},{value:"In single result mode, if there are no data records that meet the conditions, the query result will be ",paraId:9,tocIndex:8},{value:"null",paraId:9,tocIndex:8},{value:"; in multiple result mode, it will be an empty array (",paraId:9,tocIndex:8},{value:"[]",paraId:9,tocIndex:8},{value:'). You can choose whether to check "Exit the workflow if the query result is empty". After checked, if the query result is empty, subsequent nodes will not be executed, and the workflow will exit prematurely with a failed status.',paraId:9,tocIndex:8}],gR={},bR={title:"Quick Start",toc:"menu",filename:"docs/en-US/handbook/workflow/quick-start.md",lastUpdated:1732240239e3,description:"To configure a workflow, go to the management page of the Workflow plugin by accessing the plugin configuration menu in the top navigation bar:"},yR=[{id:"quick-start",depth:1,title:"Quick Start"},{id:"configure-a-workflow",depth:2,title:"Configure a Workflow"},{id:"trigger-a-workflow",depth:2,title:"Trigger a Workflow"},{id:"view-execution-history",depth:2,title:"View Execution History"},{id:"summary",depth:2,title:"Summary"}],wR=[{value:"To configure a workflow, go to the management page of the Workflow plugin by accessing the plugin configuration menu in the top navigation bar:",paraId:0,tocIndex:1},{value:"The management page will display all the created workflows:",paraId:1,tocIndex:1},{value:'Click the "Add new" button to create a new workflow and select a collection event:',paraId:2,tocIndex:1},{value:'Click the "Configure" link in the list to enter the workflow configuration page:',paraId:3,tocIndex:1},{value:'Then, click on the trigger card to open the trigger configuration drawer. Select a previously created collection (e.g., "Posts") and choose the trigger condition "After record added", click the "Save" button to complete the trigger configuration:',paraId:4,tocIndex:1},{value:'Next, you can click the plus button in the workflow to add a node. For example, select an calculation node to concatenate the "Title" and "ID" fields of the trigger data:',paraId:5,tocIndex:1},{value:"Click on the node card to open the node configuration drawer. Use the ",paraId:6,tocIndex:1},{value:"CONCATENATE",paraId:6,tocIndex:1},{value:' function provided by Formula.js to concatenate the "Title" and "ID" fields, and insert the fields using the variable selector:',paraId:6,tocIndex:1},{value:'Then create an "Update record" node to save the result to the "Title" field:',paraId:7,tocIndex:1},{value:'Similarly, click on the card to open the configuration drawer of the "Update record" node. Select the "Posts" collection, choose the record ID from the trigger, select the "Title" field to update, and choose the result from the calculation node as the value to update:',paraId:8,tocIndex:1},{value:'Finally, click the "On/Off" switch in the top-right toolbar to switch the workflow to the enabled state. This allows the workflow to be triggered and executed.',paraId:9,tocIndex:1},{value:"Go back to the main pages and create an post using the its data block. Fill in the post title:",paraId:10,tocIndex:2},{value:'After submission and refreshing the block, you will see that the post title has been automatically updated to the form of "Post title + Post ID":',paraId:11,tocIndex:2},{value:"Since workflow triggered in collection will be executed asynchronously, you may not immediately see the updated record on the submission page. However, refreshing the page or block after a moment, updated content will show.",paraId:12},{value:"The workflow we triggered earlier has been successfully executed. We can go back to the workflow management page to view the corresponding execution history:",paraId:13,tocIndex:3},{value:'In the workflow list, you can see that there is one execution in the workflow history. Clicking the number link in the "Executed" column will open the execution history of the corresponding workflow:',paraId:14,tocIndex:3},{value:'Clicking the "View" link will take you to the details page of that particular execution. Here, you can see the execution status and result data of each node:',paraId:15,tocIndex:3},{value:"The context data of trigger and the result data of node can be viewed by clicking the status button in the top right corner of the corresponding card. For example, let's view the result data of an operation node:",paraId:16,tocIndex:3},{value:'You can see that the result data of the calculation node includes the computed title, which is the data updated by the subsequent "Update record" node.',paraId:17,tocIndex:3},{value:"Through the above steps, we have completed the configuration and triggering of a simple workflow, and have also been introduced to the following basic concepts:",paraId:18,tocIndex:4},{value:"Workflow",paraId:19,tocIndex:4},{value:": It defines the basic information of the workflow, including its name, trigger type, and On/Off status. Within a workflow, you can configure multiple nodes. It serves as the container for the process.",paraId:19,tocIndex:4},{value:"Trigger",paraId:19,tocIndex:4},{value:": Each workflow contains a trigger, which can be configured to specific conditions that triggers the workflow. It serves as the entry point of the workflow.",paraId:19,tocIndex:4},{value:"Node",paraId:19,tocIndex:4},{value:": A node is an instruction unit within the workflow that performs specific actions. Multiple nodes within a workflow are interconnected in an upstream and downstream relationship, forming a complete process flow.",paraId:19,tocIndex:4},{value:"Execution",paraId:19,tocIndex:4},{value:": The execution represents the specific objects that are executed after the workflow is triggered. It is also known as execution record or execution history, and it includes information such as the execution status and trigger context data. For each node, there is a corresponding execution result which includes the node's execution status and data.",paraId:19,tocIndex:4},{value:"For more in-depth usage, you can refer to the following resources:",paraId:20,tocIndex:4},{value:`advanced Understanding -`,paraId:21,tocIndex:4},{value:"Using Variables",paraId:22,tocIndex:4},{value:"Execution Plan (History)",paraId:23,tocIndex:4},{value:"Revisions",paraId:24,tocIndex:4},{value:"Advanced Options",paraId:25,tocIndex:4},{value:"Overview of Triggers",paraId:26,tocIndex:4},{value:"Overview of Nodes",paraId:27,tocIndex:4}],kR={},SR={title:"Delay",toc:"menu",filename:"docs/en-US/handbook/workflow-delay/index.md",lastUpdated:1732240239e3,description:"The delay node allows you to introduce a pause within a workflow. Once the delay concludes, you can configure whether to proceed with the next step or terminate the workflow prematurely."},UR=[{id:"delay",depth:1,title:"Delay"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"delay-time",depth:4,title:"Delay Time"},{id:"timeout-status",depth:4,title:"Timeout Status"},{id:"example",depth:3,title:"Example"}],PR=[{value:"The delay node allows you to introduce a pause within a workflow. Once the delay concludes, you can configure whether to proceed with the next step or terminate the workflow prematurely.",paraId:0},{value:'This node is often used in tandem with parallel branch nodes. By adding a delay node to one of the branches, you can effectively manage timeouts. For example, in a scenario where one branch requires manual processing while another includes a delay node, you can determine the outcome if the manual process exceeds the allotted time. Selecting "timeout failure" means that the manual process must be completed within the specified timeframe. On the other hand, choosing "timeout continuation" allows the workflow to bypass the manual process once the delay has elapsed.',paraId:1},{value:"This plugin is built-in and requires no installation.",paraId:2,tocIndex:1},{value:'In the workflow configuration interface, click the plus sign ("+") within the flow to add a "Delay" node:',paraId:3,tocIndex:3},{value:"You can specify the delay duration by entering a number and selecting a time unit. Supported units include seconds, minutes, hours, days, and weeks.",paraId:4,tocIndex:5},{value:'You can set the timeout status to either "Succeed and continue" or "Fail and Exit." The "Succeed and continue" option ensures that the workflow progresses to the next steps after the delay ends. Conversely, the "Fail and Exit" option terminates the workflow with a failure status once the delay concludes.',paraId:5,tocIndex:6},{value:'In a scenario where a work order must be addressed within a certain timeframe, you can add a manual node to one branch and a delay node to the other in parallel branches. If the manual process fails to respond within 10 minutes, the work order status will be updated to "Timeout Unprocessed."',paraId:6,tocIndex:7}],TR={},CR={title:"Manual Node",toc:"menu",filename:"docs/en-US/handbook/workflow-manual/node.md",lastUpdated:1732240239e3,description:'In the workflow configuration interface, click the plus (\u201C+\u201D) button within the process to add a "Manual" node:'},AR=[{id:"manual-node",depth:1,title:"Manual Node"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"configuring-the-node",depth:2,title:"Configuring the Node"},{id:"assignees",depth:3,title:"Assignees"},{id:"configuring-the-user-interface",depth:3,title:"Configuring the User Interface"},{id:"tabs",depth:4,title:"Tabs"},{id:"blocks",depth:4,title:"Blocks"},{id:"data-blocks",depth:5,title:"Data Blocks"},{id:"form-blocks",depth:5,title:"Form Blocks"}],qR=[{value:'In the workflow configuration interface, click the plus (\u201C+\u201D) button within the process to add a "Manual" node:',paraId:0,tocIndex:1},{value:"A manual node requires assigning a user who will be responsible for executing the pending task. You can add a list of pending tasks when setting up blocks on the page. Additionally, the content of each node's task pop-up window needs to be configured within the node\u2019s interface.",paraId:1,tocIndex:3},{value:"You can either select a specific user or use variables to choose the primary or foreign key of user data from the context.",paraId:2,tocIndex:3},{value:"At present, the assignee option for manual nodes does not support multi-user processing, though this feature is planned for future versions.",paraId:3},{value:"The interface setup for the to-do list is central to configuring the manual node. By clicking the \u201CConfigure\u201D button, you can open a separate pop-up window for configuration. This interface works like a regular page, allowing you to design it using a WYSIWYG (What You See Is What You Get) editor:",paraId:4,tocIndex:4},{value:"Tabs can be utilized to differentiate between various content types. For example, one tab might be used for approved form submissions, another for rejected submissions, or you might use them to display details of related data. These tabs can be configured freely according to your needs.",paraId:5,tocIndex:5},{value:"The blocks you can use primarily fall into two categories: Data Blocks and Form Blocks. In addition, Markdown blocks are available for informational prompts and other static content.",paraId:6,tocIndex:6},{value:"Data blocks allow you to display information from triggers or the results of any node processing, providing necessary context for the task assignee. For example, if the workflow is triggered by a form event, a data block can be created to show the details of the triggered data. This setup is similar to configuring details on a regular page, where you can select any fields from the triggered data for display:",paraId:7,tocIndex:7},{value:"Similarly, node data blocks can be configured to display data results from upstream nodes as reference information for the task assignee. For example, if an upstream calculation node generates results, these can be displayed as contextual data:",paraId:8,tocIndex:7},{value:"Since the workflow is in a non-executing state during interface configuration, data blocks won\u2019t display specific data. The relevant data will only appear in the to-do pop-up interface once the workflow is triggered and executed.",paraId:9},{value:"Form blocks are crucial in the to-do interface, as they determine whether the workflow continues. Failing to configure a form block will cause the workflow to halt. There are three types of form blocks available:",paraId:10,tocIndex:8},{value:"Custom Form",paraId:11,tocIndex:8},{value:"Create record form",paraId:11,tocIndex:8},{value:"Update record form",paraId:11,tocIndex:8},{value:"For Create record forms and Update record forms, you'll need to select the data table they are based on. When the assignee submits the form, the values entered will be used to add or update data in the selected table. The Custom Form allows you to create a temporary form not linked to any data table, with the submitted values available for use in subsequent nodes.",paraId:12,tocIndex:8},{value:"You can configure the form submission button with one of three options:",paraId:13,tocIndex:8},{value:"Continue the process",paraId:14,tocIndex:8},{value:"Terminate the process",paraId:14,tocIndex:8},{value:"Save temporarily",paraId:14,tocIndex:8},{value:'These three button options correspond to different node states in the workflow: "Complete," "Reject," or "Waiting." At least one of the first two options must be configured to determine how the workflow proceeds.',paraId:15,tocIndex:8},{value:'On the "Continue the process" button, you can configure specific values for form fields:',paraId:16,tocIndex:8},{value:'In the pop-up window, you can assign values to any field in the form. Once the form is submitted, these values will be used as the final values for those fields. This feature is particularly useful when reviewing data. You can configure multiple "Continue the process" buttons in the form, each setting different enumeration values for similar fields, allowing the workflow to continue with varying outcomes based on these values.',paraId:17,tocIndex:8}],ER={},DR={title:"\u65E5\u671F & \u65F6\u95F4",toc:"menu",filename:"docs/en-US/manual/collection/fields/date.md",lastUpdated:1732240239e3},OR=[{id:"\u65E5\u671F--\u65F6\u95F4",depth:1,title:"\u65E5\u671F & \u65F6\u95F4"}],RR=[{value:"Datetime",paraId:0,tocIndex:0},{value:"Time",paraId:0,tocIndex:0}],MR={},LR={title:"Amazon S3",toc:"menu",filename:"docs/en-US/manual/file-manager/amazon-s3.md",lastUpdated:1732240239e3},NR=[{id:"amazon-s3",depth:1,title:"Amazon S3"}],zR=[],FR={},BR={title:"\u4FDD\u5B58\u6570\u636E",toc:"menu",filename:"docs/en-US/manual/ui/actions/save-record.md",lastUpdated:1732240239e3,description:"\u81EA\u5B9A\u4E49\u4FDD\u5B58\u6570\u636E\u64CD\u4F5C\u662F\u8868\u5355\u533A\u5757\u7279\u6709\u7684\u64CD\u4F5C\uFF0C\u652F\u6301\u81EA\u5B9A\u4E49\u64CD\u4F5C\u7684\u884C\u4E3A\uFF1A"},jR=[{id:"\u4FDD\u5B58\u6570\u636E",depth:1,title:"\u4FDD\u5B58\u6570\u636E"}],HR=[{value:"\u81EA\u5B9A\u4E49\u4FDD\u5B58\u6570\u636E\u64CD\u4F5C\u662F\u8868\u5355\u533A\u5757\u7279\u6709\u7684\u64CD\u4F5C\uFF0C\u652F\u6301\u81EA\u5B9A\u4E49\u64CD\u4F5C\u7684\u884C\u4E3A\uFF1A",paraId:0,tocIndex:0},{value:"\u7F16\u8F91\u6309\u94AE",paraId:1,tocIndex:0},{value:"\u5B57\u6BB5\u8D4B\u503C\uFF1A\u70B9\u51FB\u5F53\u524D\u81EA\u5B9A\u4E49\u6309\u94AE\u65F6\uFF0C\u5F53\u524D\u6570\u636E\u5B57\u6BB5\u8D4B\u503C\u4E2D\u7684\u60C5\u51B5\u4FDD\u5B58\u3002",paraId:1,tocIndex:0},{value:"\u8DF3\u8FC7\u5FC5\u586B\u6821\u9A8C",paraId:1,tocIndex:0},{value:"\u63D0\u4EA4\u6210\u529F\u540E\u7684\u52A8\u4F5C",paraId:1,tocIndex:0},{value:"\u7ED1\u5B9A\u5DE5\u4F5C\u6D41",paraId:2,tocIndex:0}],WR={},$R={title:"\u4E2A\u4EBA\u4E2D\u5FC3",toc:"menu",filename:"docs/en-US/manual/user/user-center/index.md",lastUpdated:1732240239e3,description:"\u4E2A\u4EBA\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u7CFB\u5217\u7BA1\u7406\u548C\u7CFB\u7EDF\u7EF4\u62A4\u529F\u80FD\uFF0C\u5305\u62EC\u67E5\u770B\u7CFB\u7EDF\u7248\u672C\u53F7\u3001\u67E5\u770B\u548C\u7F16\u8F91\u4E2A\u4EBA\u8D44\u6599\u7B49\u5FEB\u6377\u64CD\u4F5C\u3002\u5F53\u7CFB\u7EDF\u6743\u9650\u5F00\u542F\u4E86\u76F8\u5E94\u6743\u9650\u65F6\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u8FD8\u4F1A\u63D0\u4F9B\u6E05\u9664\u7F13\u5B58\u548C\u91CD\u542F\u5E94\u7528\u7684\u6309\u94AE\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u5FEB\u6377\u64CD\u4F5C\u53EF\u7531\u63D2\u4EF6\u6269\u5C55\u63D0\u4F9B\u3002"},GR=[{id:"\u4E2A\u4EBA\u4E2D\u5FC3",depth:1,title:"\u4E2A\u4EBA\u4E2D\u5FC3"}],VR=[{value:"\u4E2A\u4EBA\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u7CFB\u5217\u7BA1\u7406\u548C\u7CFB\u7EDF\u7EF4\u62A4\u529F\u80FD\uFF0C\u5305\u62EC\u67E5\u770B\u7CFB\u7EDF\u7248\u672C\u53F7\u3001\u67E5\u770B\u548C\u7F16\u8F91\u4E2A\u4EBA\u8D44\u6599\u7B49\u5FEB\u6377\u64CD\u4F5C\u3002\u5F53\u7CFB\u7EDF\u6743\u9650\u5F00\u542F\u4E86\u76F8\u5E94\u6743\u9650\u65F6\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u8FD8\u4F1A\u63D0\u4F9B\u6E05\u9664\u7F13\u5B58\u548C\u91CD\u542F\u5E94\u7528\u7684\u6309\u94AE\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u5FEB\u6377\u64CD\u4F5C\u53EF\u7531\u63D2\u4EF6\u6269\u5C55\u63D0\u4F9B\u3002",paraId:0,tocIndex:0},{value:"\u76EE\u524D\u63D0\u4F9B\u7684\u4E2A\u4EBA\u4E2D\u5FC3\u5FEB\u6377\u64CD\u4F5C\uFF1A",paraId:1,tocIndex:0},{value:"Edit profile\uFF1A\u7F16\u8F91\u7528\u6237\u4E2A\u4EBA\u4FE1\u606F\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Change password\uFF1A\u4FEE\u6539\u5BC6\u7801\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Switch role\uFF1A\u5207\u6362\u89D2\u8272\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Sign out\uFF1A\u767B\u51FA\u7CFB\u7EDF\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Theme \uFF1A\u7528\u4E8E\u5207\u6362\u4E3B\u9898\uFF0C\u7531\u4E3B\u9898\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Clear cache: \u6E05\u9664\u7F13\u5B58\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B\uFF08\u6709\u6743\u9650\u63A7\u5236\uFF09",paraId:2,tocIndex:0},{value:"Restart application\uFF1A\u91CD\u542F\u5E94\u7528\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B\uFF08\u6709\u6743\u9650\u63A7\u5236\uFF09",paraId:2,tocIndex:0}],KR={},ZR={title:"\u5220\u9664\u6570\u636E",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/destroy.md",lastUpdated:1732240239e3,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u5220\u9664\u3002"},YR=[{id:"\u5220\u9664\u6570\u636E",depth:1,title:"\u5220\u9664\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],QR=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u5220\u9664\u3002",paraId:0,tocIndex:0},{value:"\u5220\u9664\u8282\u70B9\u7684\u57FA\u672C\u4F7F\u7528\u4E0E\u66F4\u65B0\u8282\u70B9\u7C7B\u4F3C\uFF0C\u53EA\u662F\u5220\u9664\u8282\u70B9\u4E0D\u9700\u8981\u5B57\u6BB5\u8D4B\u503C\uFF0C\u53EA\u9700\u8981\u9009\u62E9\u6570\u636E\u8868\u548C\u7B5B\u9009\u6761\u4EF6\u5373\u53EF\u3002\u5220\u9664\u8282\u70B9\u7684\u7ED3\u679C\u4F1A\u8FD4\u56DE\u5220\u9664\u6210\u529F\u6570\u636E\u7684\u884C\u6570\uFF0C\u53EA\u5728\u6267\u884C\u5386\u53F2\u91CC\u53EF\u67E5\u770B\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u53D8\u91CF\u5728\u540E\u7EED\u8282\u70B9\u4F7F\u7528\u3002",paraId:1,tocIndex:0},{value:"\u76EE\u524D\u5220\u9664\u8282\u70B9\u4E0D\u652F\u6301\u9010\u6761\u5220\u9664\uFF0C\u5747\u4E3A\u6279\u91CF\u5220\u9664\uFF0C\u56E0\u6B64\u4E0D\u4F1A\u89E6\u53D1\u6BCF\u6761\u6570\u636E\u5220\u9664\u7684\u5176\u4ED6\u4E8B\u4EF6\u3002",paraId:2},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5220\u9664\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:3,tocIndex:1},{value:"\u9009\u62E9\u8981\u5220\u9664\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:4,tocIndex:3},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:5,tocIndex:4},{value:"\u4F8B\u5982\u5B9A\u65F6\u6E05\u7406\u5DF2\u53D6\u6D88\u7684\u65E0\u6548\u5386\u53F2\u8BA2\u5355\u6570\u636E\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5220\u9664\u8282\u70B9\u6765\u5B9E\u73B0\uFF1A",paraId:6,tocIndex:5},{value:"\u5DE5\u4F5C\u6D41\u5C06\u5B9A\u65F6\u89E6\u53D1\uFF0C\u5E76\u6267\u884C\u5220\u9664\u6240\u6709\u5DF2\u53D6\u6D88\u7684\u65E0\u6548\u5386\u53F2\u8BA2\u5355\u6570\u636E\u3002",paraId:7,tocIndex:5}],JR={},XR={title:"HTTP \u8BF7\u6C42",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/request.md",lastUpdated:1732240239e3,description:"\u5F53\u9700\u8981\u4E0E\u53E6\u4E00\u4E2A web \u7CFB\u7EDF\u8FDB\u884C\u4EA4\u4E92\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 HTTP \u8BF7\u6C42\u8282\u70B9\u3002\u8BE5\u8282\u70B9\u5728\u6267\u884C\u65F6\u4F1A\u6839\u636E\u914D\u7F6E\u5411\u5BF9\u5E94\u7684\u5730\u5740\u53D1\u51FA\u4E00\u4E2A HTTP \u8BF7\u6C42\uFF0C\u53EF\u4EE5\u643A\u5E26 JSON \u683C\u5F0F\u7684\u6570\u636E\uFF0C\u5B8C\u6210\u4E0E\u5916\u90E8\u7CFB\u7EDF\u7684\u6570\u636E\u4EA4\u4E92\u3002"},eM=[{id:"http-\u8BF7\u6C42",depth:1,title:"HTTP \u8BF7\u6C42"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u8BF7\u6C42\u65B9\u6CD5",depth:3,title:"\u8BF7\u6C42\u65B9\u6CD5"},{id:"\u8BF7\u6C42\u5730\u5740",depth:3,title:"\u8BF7\u6C42\u5730\u5740"},{id:"\u8BF7\u6C42\u5934\u914D\u7F6E",depth:3,title:"\u8BF7\u6C42\u5934\u914D\u7F6E"},{id:"\u8BF7\u6C42\u53C2\u6570",depth:3,title:"\u8BF7\u6C42\u53C2\u6570"},{id:"\u8BF7\u6C42\u4F53",depth:3,title:"\u8BF7\u6C42\u4F53"},{id:"\u8D85\u65F6\u8BBE\u7F6E",depth:3,title:"\u8D85\u65F6\u8BBE\u7F6E"},{id:"\u5FFD\u7565\u5931\u8D25",depth:3,title:"\u5FFD\u7565\u5931\u8D25"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],aM=[{value:"\u5F53\u9700\u8981\u4E0E\u53E6\u4E00\u4E2A web \u7CFB\u7EDF\u8FDB\u884C\u4EA4\u4E92\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 HTTP \u8BF7\u6C42\u8282\u70B9\u3002\u8BE5\u8282\u70B9\u5728\u6267\u884C\u65F6\u4F1A\u6839\u636E\u914D\u7F6E\u5411\u5BF9\u5E94\u7684\u5730\u5740\u53D1\u51FA\u4E00\u4E2A HTTP \u8BF7\u6C42\uFF0C\u53EF\u4EE5\u643A\u5E26 JSON \u683C\u5F0F\u7684\u6570\u636E\uFF0C\u5B8C\u6210\u4E0E\u5916\u90E8\u7CFB\u7EDF\u7684\u6570\u636E\u4EA4\u4E92\u3002",paraId:0,tocIndex:0},{value:"\u5982\u679C\u5BF9 Postman \u8FD9\u7C7B\u8BF7\u6C42\u53D1\u9001\u5DE5\u5177\u6BD4\u8F83\u719F\u6089\uFF0C\u90A3\u4E48\u53EF\u4EE5\u5F88\u5FEB\u638C\u63E1 HTTP \u8BF7\u6C42\u8282\u70B9\u7684\u7528\u6CD5\u3002\u4E0E\u8FD9\u4E9B\u5DE5\u5177\u4E0D\u540C\u7684\u662F\uFF0CHTTP \u8BF7\u6C42\u8282\u70B9\u4E2D\u5404\u9879\u53C2\u6570\u5747\u53EF\u4F7F\u7528\u5F53\u524D\u6D41\u7A0B\u4E2D\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\uFF0C\u53EF\u4EE5\u4E0E\u5F53\u524D\u7CFB\u7EDF\u7684\u4E1A\u52A1\u5904\u7406\u6709\u673A\u7ED3\u5408\u8D77\u6765\u3002",paraId:1,tocIndex:0},{value:"HTTP \u8BF7\u6C42\u8282\u70B9\u6682\u4E0D\u652F\u6301\u8BF7\u6C42\u54CD\u5E94\u7684\u7ED3\u679C\u8FDB\u884C\u4F7F\u7528\uFF0C\u53EF\u80FD\u4F1A\u5728\u672A\u6765\u652F\u6301\u3002",paraId:2},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201CHTTP \u8BF7\u6C42\u201D\u8282\u70B9\uFF1A",paraId:3,tocIndex:1},{value:"\u53EF\u9009\u7684 HTTP \u8BF7\u6C42\u65B9\u6CD5\uFF1A",paraId:4,tocIndex:3},{value:"GET",paraId:4,tocIndex:3},{value:"\u3001",paraId:4,tocIndex:3},{value:"POST",paraId:4,tocIndex:3},{value:"\u3001",paraId:4,tocIndex:3},{value:"PUT",paraId:4,tocIndex:3},{value:"\u3001",paraId:4,tocIndex:3},{value:"PATCH",paraId:4,tocIndex:3},{value:" \u548C ",paraId:4,tocIndex:3},{value:"DELETE",paraId:4,tocIndex:3},{value:"\u3002",paraId:4,tocIndex:3},{value:"HTTP \u670D\u52A1\u7684 URL\uFF0C\u9700\u8981\u5305\u542B\u534F\u8BAE\u90E8\u5206\uFF08",paraId:5,tocIndex:4},{value:"http://",paraId:5,tocIndex:4},{value:" \u6216 ",paraId:5,tocIndex:4},{value:"https://",paraId:5,tocIndex:4},{value:"\uFF09\uFF0C\u63A8\u8350\u4F7F\u7528 ",paraId:5,tocIndex:4},{value:"https://",paraId:5,tocIndex:4},{value:"\u3002",paraId:5,tocIndex:4},{value:"\u8BF7\u6C42 Header \u90E8\u5206\u7684\u952E\u503C\u5BF9\uFF0C\u76F8\u5173\u503C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\u3002",paraId:6,tocIndex:5},{value:"\u5BF9 ",paraId:7},{value:"Content-Type",paraId:7},{value:" \u8BF7\u6C42\u5934\uFF0C\u76EE\u524D\u4EC5\u652F\u6301 ",paraId:7},{value:"application/json",paraId:7},{value:" \u7684\u683C\u5F0F\uFF0C\u4E14\u5DF2\u9ED8\u8BA4\u5185\u7F6E\uFF0C\u65E0\u9700\u586B\u5199\uFF0C\u8986\u76D6\u65E0\u6548\u3002",paraId:7},{value:"\u8BF7\u6C42 query \u90E8\u5206\u7684\u952E\u503C\u5BF9\uFF0C\u76F8\u5173\u503C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\u3002",paraId:8,tocIndex:6},{value:"\u8BF7\u6C42\u7684 Body \u90E8\u5206\uFF0C\u76EE\u524D\u4EC5\u652F\u6301\u6807\u51C6\u7684 JSON \u683C\u5F0F\uFF0C\u53EF\u4EE5\u901A\u8FC7\u6587\u672C\u7F16\u8F91\u6846\u53F3\u4E0A\u89D2\u7684\u53D8\u91CF\u6309\u94AE\u63D2\u5165\u6D41\u7A0B\u4E0A\u4E0B\u6587\u4E2D\u7684\u53D8\u91CF\u3002",paraId:9,tocIndex:7},{value:"\u6CE8\uFF1A\u53D8\u91CF\u5FC5\u987B\u5728 JSON \u7684\u5B57\u7B26\u4E32\u4E2D\u4F7F\u7528\uFF0C\u4F8B\u5982\uFF1A",paraId:10},{value:'"a": "{{$context.data.a}}"',paraId:10},{value:"\u3002",paraId:10},{value:"\u5F53\u8BF7\u6C42\u957F\u65F6\u95F4\u672A\u54CD\u5E94\u65F6\uFF0C\u901A\u8FC7\u8D85\u65F6\u8BBE\u7F6E\u53D6\u6D88\u8BE5\u8BF7\u6C42\u7684\u6267\u884C\u3002\u8BF7\u6C42\u8D85\u65F6\u540E\u4F1A\u4EE5\u5931\u8D25\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\u5F53\u524D\u6D41\u7A0B\u3002",paraId:11,tocIndex:8},{value:"\u8BF7\u6C42\u8282\u70B9\u4F1A\u4EE5\u6807\u51C6 HTTP \u72B6\u6001\u7801\u7684 ",paraId:12,tocIndex:9},{value:"200",paraId:12,tocIndex:9},{value:"~",paraId:12,tocIndex:9},{value:"299",paraId:12,tocIndex:9},{value:" \u4E4B\u95F4\uFF08\u542B\uFF09\u7684\u72B6\u6001\u8BA4\u4E3A\u662F\u6210\u529F\u72B6\u6001\uFF0C\u5176\u4ED6\u7684\u5747\u8BA4\u4E3A\u662F\u5931\u8D25\u3002\u5982\u52FE\u9009\u4E86\u201C\u5FFD\u7565\u5931\u8D25\u7684\u8BF7\u6C42\u5E76\u7EE7\u7EED\u5DE5\u4F5C\u6D41\u201D\u9009\u9879\uFF0C\u5219\u5F53\u8BF7\u6C42\u5931\u8D25\u540E\u4ECD\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u7684\u5176\u4ED6\u6D41\u7A0B\u8282\u70B9\u3002",paraId:12,tocIndex:9},{value:"\u4F8B\u5982\u6211\u4EEC\u53EF\u4EE5\u4F7F\u7528\u8BF7\u6C42\u8282\u70B9\u6765\u5BF9\u63A5\u4E91\u5E73\u53F0\u53D1\u9001\u901A\u77E5\u77ED\u4FE1\uFF0C\u4EE5\u963F\u91CC\u4E91\u53D1\u9001\u77ED\u4FE1\u63A5\u53E3\u4E3A\u4F8B\u914D\u7F6E\u5982\u4E0B\uFF08\u76F8\u5173\u53C2\u6570\u9700\u81EA\u884C\u67E5\u9605\u6587\u6863\u9002\u914D\uFF09\uFF1A",paraId:13,tocIndex:10},{value:"\u5DE5\u4F5C\u6D41\u89E6\u53D1\u8BE5\u8282\u70B9\u6267\u884C\u65F6\u4F1A\u4EE5\u914D\u7F6E\u7684\u5185\u5BB9\u8C03\u7528\u963F\u91CC\u4E91\u7684\u77ED\u4FE1\u63A5\u53E3\uFF0C\u8BF7\u6C42\u6210\u529F\u7684\u8BDD\u5C06\u901A\u8FC7\u77ED\u4FE1\u4E91\u670D\u52A1\u53D1\u9001\u4E00\u6761\u77ED\u4FE1\u3002",paraId:14,tocIndex:10}],tM={},nM={title:"\u8868\u5355\u4E8B\u4EF6",toc:"menu",filename:"docs/en-US/manual/workflow/triggers/form.md",lastUpdated:1732240239e3,description:"\u8868\u5355\u63D0\u4EA4\u4E8B\u4EF6\u9488\u5BF9 UI \u754C\u9762\u4E2D\u65B0\u589E\u548C\u66F4\u65B0\u6570\u636E\u7684\u8868\u5355\u64CD\u4F5C\u6309\u94AE\uFF0C\u5728\u8868\u5355\u4E2D\u70B9\u51FB\u5BF9\u5E94\u5DF2\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\u7684\u6309\u94AE\u540E\uFF0C\u5C06\u89E6\u53D1\u5BF9\u5E94\u7ED1\u5B9A\u7684\u5DE5\u4F5C\u6D41\u6267\u884C\u3002\u4F8B\u5982\u5BF9\u67D0\u4E2A\u6D3B\u52A8\u53D1\u8D77\u62A5\u540D\u7684\u8868\u5355\uFF0C\u62A5\u540D\uFF08\u8868\u5355\u63D0\u4EA4\uFF09\u6210\u529F\u540E\u89E6\u53D1\u76F8\u5E94\u7684\u6D41\u7A0B\u5904\u7406\u3002"},oM=[{id:"\u8868\u5355\u4E8B\u4EF6",depth:1,title:"\u8868\u5355\u4E8B\u4EF6"},{id:"\u57FA\u672C\u4F7F\u7528",depth:2,title:"\u57FA\u672C\u4F7F\u7528"},{id:"\u76F8\u5173\u63D0\u793A",depth:2,title:"\u76F8\u5173\u63D0\u793A"},{id:"\u4E0E\u6570\u636E\u8868\u4E8B\u4EF6\u7684\u533A\u522B",depth:3,title:"\u4E0E\u6570\u636E\u8868\u4E8B\u4EF6\u7684\u533A\u522B"},{id:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u6309\u94AE\u7684\u533A\u522B",depth:3,title:"\u201C\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u201D\u6309\u94AE\u7684\u533A\u522B"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],rM=[{value:"\u8868\u5355\u63D0\u4EA4\u4E8B\u4EF6\u9488\u5BF9 UI \u754C\u9762\u4E2D\u65B0\u589E\u548C\u66F4\u65B0\u6570\u636E\u7684\u8868\u5355\u64CD\u4F5C\u6309\u94AE\uFF0C\u5728\u8868\u5355\u4E2D\u70B9\u51FB\u5BF9\u5E94\u5DF2\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\u7684\u6309\u94AE\u540E\uFF0C\u5C06\u89E6\u53D1\u5BF9\u5E94\u7ED1\u5B9A\u7684\u5DE5\u4F5C\u6D41\u6267\u884C\u3002\u4F8B\u5982\u5BF9\u67D0\u4E2A\u6D3B\u52A8\u53D1\u8D77\u62A5\u540D\u7684\u8868\u5355\uFF0C\u62A5\u540D\uFF08\u8868\u5355\u63D0\u4EA4\uFF09\u6210\u529F\u540E\u89E6\u53D1\u76F8\u5E94\u7684\u6D41\u7A0B\u5904\u7406\u3002",paraId:0,tocIndex:0},{value:"\u9488\u5BF9\u201C\u63D0\u4EA4\u201D\u6309\u94AE\uFF08\u542B\u201C\u4FDD\u5B58\u6570\u636E\u201D\u6309\u94AE\uFF09\u914D\u7F6E\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5C06\u5728\u7528\u6237\u63D0\u4EA4\u5BF9\u5E94\u8868\u5355\u4E14\u6570\u636E\u64CD\u4F5C\u5B8C\u6210\u540E\u88AB\u89E6\u53D1\u3002",paraId:1,tocIndex:1},{value:` +`,paraId:4},{value:"HTTP Request",paraId:26},{value:" (provided by plugin @nocobase/plugin-workflow-request)",paraId:27},{value:"Response Message",paraId:28},{value:" (provided by plugin @nocobase/plugin-workflow-response-message)",paraId:27}],mR={},hR={title:"Query Record",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/query.md",lastUpdated:173254844e4,description:"Used to query and retrieve data records that meet certain conditions from a collection."},fR=[{id:"query-record",depth:1,title:"Query Record"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"collection",depth:3,title:"Collection"},{id:"result-type",depth:3,title:"Result type"},{id:"filter-conditions",depth:3,title:"Filter Conditions"},{id:"sorting",depth:3,title:"Sorting"},{id:"pagination",depth:3,title:"Pagination"},{id:"handling-empty-results",depth:3,title:"Handling Empty Results"}],xR=[{value:"Used to query and retrieve data records that meet certain conditions from a collection.",paraId:0,tocIndex:0},{value:"It can be configured to query single or multiple data records, and the query result can be used as a variable in subsequent nodes. When querying multiple data records, the query result is an array. When the query result is empty, you can choose whether to continue executing subsequent nodes.",paraId:1,tocIndex:0},{value:'In the workflow configuration UI, click the plus ("+") button in the workflow and add a "Query Record" node:',paraId:2,tocIndex:1},{value:"Select the collection to query record from.",paraId:3,tocIndex:3},{value:'There are two result types: "Single Data" and "Multiple record":',paraId:4,tocIndex:4},{value:"Single record: The result will be an object of the first matching record only, or null if no matched record.",paraId:5,tocIndex:4},{value:"Multiple records: The result will be an array containing matched records, or an empty one if no matching records. This can be used to be processed in a loop node.",paraId:5,tocIndex:4},{value:"Similar to the filter conditions when querying a normal collection, you can use context variables of the workflow.",paraId:6,tocIndex:5},{value:'When querying one or more data records, sorting rules can be used to control the desired results. For example, to query the latest data record, you can sort by the "Created at" field in descending order.',paraId:7,tocIndex:6},{value:'When the result set may be large, pagination can be used to control the number of query results. For example, to query the latest 10 data records, you can sort by the "Creation Time" field in descending order and then set pagination to 1 page with 10 data records.',paraId:8,tocIndex:7},{value:"In single result mode, if there are no data records that meet the conditions, the query result will be ",paraId:9,tocIndex:8},{value:"null",paraId:9,tocIndex:8},{value:"; in multiple result mode, it will be an empty array (",paraId:9,tocIndex:8},{value:"[]",paraId:9,tocIndex:8},{value:'). You can choose whether to check "Exit the workflow if the query result is empty". After checked, if the query result is empty, subsequent nodes will not be executed, and the workflow will exit prematurely with a failed status.',paraId:9,tocIndex:8}],gR={},bR={title:"Quick Start",toc:"menu",filename:"docs/en-US/handbook/workflow/quick-start.md",lastUpdated:173254844e4,description:"To configure a workflow, go to the management page of the Workflow plugin by accessing the plugin configuration menu in the top navigation bar:"},yR=[{id:"quick-start",depth:1,title:"Quick Start"},{id:"configure-a-workflow",depth:2,title:"Configure a Workflow"},{id:"trigger-a-workflow",depth:2,title:"Trigger a Workflow"},{id:"view-execution-history",depth:2,title:"View Execution History"},{id:"summary",depth:2,title:"Summary"}],wR=[{value:"To configure a workflow, go to the management page of the Workflow plugin by accessing the plugin configuration menu in the top navigation bar:",paraId:0,tocIndex:1},{value:"The management page will display all the created workflows:",paraId:1,tocIndex:1},{value:'Click the "Add new" button to create a new workflow and select a collection event:',paraId:2,tocIndex:1},{value:'Click the "Configure" link in the list to enter the workflow configuration page:',paraId:3,tocIndex:1},{value:'Then, click on the trigger card to open the trigger configuration drawer. Select a previously created collection (e.g., "Posts") and choose the trigger condition "After record added", click the "Save" button to complete the trigger configuration:',paraId:4,tocIndex:1},{value:'Next, you can click the plus button in the workflow to add a node. For example, select an calculation node to concatenate the "Title" and "ID" fields of the trigger data:',paraId:5,tocIndex:1},{value:"Click on the node card to open the node configuration drawer. Use the ",paraId:6,tocIndex:1},{value:"CONCATENATE",paraId:6,tocIndex:1},{value:' function provided by Formula.js to concatenate the "Title" and "ID" fields, and insert the fields using the variable selector:',paraId:6,tocIndex:1},{value:'Then create an "Update record" node to save the result to the "Title" field:',paraId:7,tocIndex:1},{value:'Similarly, click on the card to open the configuration drawer of the "Update record" node. Select the "Posts" collection, choose the record ID from the trigger, select the "Title" field to update, and choose the result from the calculation node as the value to update:',paraId:8,tocIndex:1},{value:'Finally, click the "On/Off" switch in the top-right toolbar to switch the workflow to the enabled state. This allows the workflow to be triggered and executed.',paraId:9,tocIndex:1},{value:"Go back to the main pages and create an post using the its data block. Fill in the post title:",paraId:10,tocIndex:2},{value:'After submission and refreshing the block, you will see that the post title has been automatically updated to the form of "Post title + Post ID":',paraId:11,tocIndex:2},{value:"Since workflow triggered in collection will be executed asynchronously, you may not immediately see the updated record on the submission page. However, refreshing the page or block after a moment, updated content will show.",paraId:12},{value:"The workflow we triggered earlier has been successfully executed. We can go back to the workflow management page to view the corresponding execution history:",paraId:13,tocIndex:3},{value:'In the workflow list, you can see that there is one execution in the workflow history. Clicking the number link in the "Executed" column will open the execution history of the corresponding workflow:',paraId:14,tocIndex:3},{value:'Clicking the "View" link will take you to the details page of that particular execution. Here, you can see the execution status and result data of each node:',paraId:15,tocIndex:3},{value:"The context data of trigger and the result data of node can be viewed by clicking the status button in the top right corner of the corresponding card. For example, let's view the result data of an operation node:",paraId:16,tocIndex:3},{value:'You can see that the result data of the calculation node includes the computed title, which is the data updated by the subsequent "Update record" node.',paraId:17,tocIndex:3},{value:"Through the above steps, we have completed the configuration and triggering of a simple workflow, and have also been introduced to the following basic concepts:",paraId:18,tocIndex:4},{value:"Workflow",paraId:19,tocIndex:4},{value:": It defines the basic information of the workflow, including its name, trigger type, and On/Off status. Within a workflow, you can configure multiple nodes. It serves as the container for the process.",paraId:19,tocIndex:4},{value:"Trigger",paraId:19,tocIndex:4},{value:": Each workflow contains a trigger, which can be configured to specific conditions that triggers the workflow. It serves as the entry point of the workflow.",paraId:19,tocIndex:4},{value:"Node",paraId:19,tocIndex:4},{value:": A node is an instruction unit within the workflow that performs specific actions. Multiple nodes within a workflow are interconnected in an upstream and downstream relationship, forming a complete process flow.",paraId:19,tocIndex:4},{value:"Execution",paraId:19,tocIndex:4},{value:": The execution represents the specific objects that are executed after the workflow is triggered. It is also known as execution record or execution history, and it includes information such as the execution status and trigger context data. For each node, there is a corresponding execution result which includes the node's execution status and data.",paraId:19,tocIndex:4},{value:"For more in-depth usage, you can refer to the following resources:",paraId:20,tocIndex:4},{value:`advanced Understanding +`,paraId:21,tocIndex:4},{value:"Using Variables",paraId:22,tocIndex:4},{value:"Execution Plan (History)",paraId:23,tocIndex:4},{value:"Revisions",paraId:24,tocIndex:4},{value:"Advanced Options",paraId:25,tocIndex:4},{value:"Overview of Triggers",paraId:26,tocIndex:4},{value:"Overview of Nodes",paraId:27,tocIndex:4}],kR={},SR={title:"Delay",toc:"menu",filename:"docs/en-US/handbook/workflow-delay/index.md",lastUpdated:173254844e4,description:"The delay node allows you to introduce a pause within a workflow. Once the delay concludes, you can configure whether to proceed with the next step or terminate the workflow prematurely."},UR=[{id:"delay",depth:1,title:"Delay"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"delay-time",depth:4,title:"Delay Time"},{id:"timeout-status",depth:4,title:"Timeout Status"},{id:"example",depth:3,title:"Example"}],PR=[{value:"The delay node allows you to introduce a pause within a workflow. Once the delay concludes, you can configure whether to proceed with the next step or terminate the workflow prematurely.",paraId:0},{value:'This node is often used in tandem with parallel branch nodes. By adding a delay node to one of the branches, you can effectively manage timeouts. For example, in a scenario where one branch requires manual processing while another includes a delay node, you can determine the outcome if the manual process exceeds the allotted time. Selecting "timeout failure" means that the manual process must be completed within the specified timeframe. On the other hand, choosing "timeout continuation" allows the workflow to bypass the manual process once the delay has elapsed.',paraId:1},{value:"This plugin is built-in and requires no installation.",paraId:2,tocIndex:1},{value:'In the workflow configuration interface, click the plus sign ("+") within the flow to add a "Delay" node:',paraId:3,tocIndex:3},{value:"You can specify the delay duration by entering a number and selecting a time unit. Supported units include seconds, minutes, hours, days, and weeks.",paraId:4,tocIndex:5},{value:'You can set the timeout status to either "Succeed and continue" or "Fail and Exit." The "Succeed and continue" option ensures that the workflow progresses to the next steps after the delay ends. Conversely, the "Fail and Exit" option terminates the workflow with a failure status once the delay concludes.',paraId:5,tocIndex:6},{value:'In a scenario where a work order must be addressed within a certain timeframe, you can add a manual node to one branch and a delay node to the other in parallel branches. If the manual process fails to respond within 10 minutes, the work order status will be updated to "Timeout Unprocessed."',paraId:6,tocIndex:7}],TR={},CR={title:"Manual Node",toc:"menu",filename:"docs/en-US/handbook/workflow-manual/node.md",lastUpdated:173254844e4,description:'In the workflow configuration interface, click the plus (\u201C+\u201D) button within the process to add a "Manual" node:'},AR=[{id:"manual-node",depth:1,title:"Manual Node"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"configuring-the-node",depth:2,title:"Configuring the Node"},{id:"assignees",depth:3,title:"Assignees"},{id:"configuring-the-user-interface",depth:3,title:"Configuring the User Interface"},{id:"tabs",depth:4,title:"Tabs"},{id:"blocks",depth:4,title:"Blocks"},{id:"data-blocks",depth:5,title:"Data Blocks"},{id:"form-blocks",depth:5,title:"Form Blocks"}],qR=[{value:'In the workflow configuration interface, click the plus (\u201C+\u201D) button within the process to add a "Manual" node:',paraId:0,tocIndex:1},{value:"A manual node requires assigning a user who will be responsible for executing the pending task. You can add a list of pending tasks when setting up blocks on the page. Additionally, the content of each node's task pop-up window needs to be configured within the node\u2019s interface.",paraId:1,tocIndex:3},{value:"You can either select a specific user or use variables to choose the primary or foreign key of user data from the context.",paraId:2,tocIndex:3},{value:"At present, the assignee option for manual nodes does not support multi-user processing, though this feature is planned for future versions.",paraId:3},{value:"The interface setup for the to-do list is central to configuring the manual node. By clicking the \u201CConfigure\u201D button, you can open a separate pop-up window for configuration. This interface works like a regular page, allowing you to design it using a WYSIWYG (What You See Is What You Get) editor:",paraId:4,tocIndex:4},{value:"Tabs can be utilized to differentiate between various content types. For example, one tab might be used for approved form submissions, another for rejected submissions, or you might use them to display details of related data. These tabs can be configured freely according to your needs.",paraId:5,tocIndex:5},{value:"The blocks you can use primarily fall into two categories: Data Blocks and Form Blocks. In addition, Markdown blocks are available for informational prompts and other static content.",paraId:6,tocIndex:6},{value:"Data blocks allow you to display information from triggers or the results of any node processing, providing necessary context for the task assignee. For example, if the workflow is triggered by a form event, a data block can be created to show the details of the triggered data. This setup is similar to configuring details on a regular page, where you can select any fields from the triggered data for display:",paraId:7,tocIndex:7},{value:"Similarly, node data blocks can be configured to display data results from upstream nodes as reference information for the task assignee. For example, if an upstream calculation node generates results, these can be displayed as contextual data:",paraId:8,tocIndex:7},{value:"Since the workflow is in a non-executing state during interface configuration, data blocks won\u2019t display specific data. The relevant data will only appear in the to-do pop-up interface once the workflow is triggered and executed.",paraId:9},{value:"Form blocks are crucial in the to-do interface, as they determine whether the workflow continues. Failing to configure a form block will cause the workflow to halt. There are three types of form blocks available:",paraId:10,tocIndex:8},{value:"Custom Form",paraId:11,tocIndex:8},{value:"Create record form",paraId:11,tocIndex:8},{value:"Update record form",paraId:11,tocIndex:8},{value:"For Create record forms and Update record forms, you'll need to select the data table they are based on. When the assignee submits the form, the values entered will be used to add or update data in the selected table. The Custom Form allows you to create a temporary form not linked to any data table, with the submitted values available for use in subsequent nodes.",paraId:12,tocIndex:8},{value:"You can configure the form submission button with one of three options:",paraId:13,tocIndex:8},{value:"Continue the process",paraId:14,tocIndex:8},{value:"Terminate the process",paraId:14,tocIndex:8},{value:"Save temporarily",paraId:14,tocIndex:8},{value:'These three button options correspond to different node states in the workflow: "Complete," "Reject," or "Waiting." At least one of the first two options must be configured to determine how the workflow proceeds.',paraId:15,tocIndex:8},{value:'On the "Continue the process" button, you can configure specific values for form fields:',paraId:16,tocIndex:8},{value:'In the pop-up window, you can assign values to any field in the form. Once the form is submitted, these values will be used as the final values for those fields. This feature is particularly useful when reviewing data. You can configure multiple "Continue the process" buttons in the form, each setting different enumeration values for similar fields, allowing the workflow to continue with varying outcomes based on these values.',paraId:17,tocIndex:8}],ER={},DR={title:"\u65E5\u671F & \u65F6\u95F4",toc:"menu",filename:"docs/en-US/manual/collection/fields/date.md",lastUpdated:173254844e4},OR=[{id:"\u65E5\u671F--\u65F6\u95F4",depth:1,title:"\u65E5\u671F & \u65F6\u95F4"}],RR=[{value:"Datetime",paraId:0,tocIndex:0},{value:"Time",paraId:0,tocIndex:0}],MR={},LR={title:"Amazon S3",toc:"menu",filename:"docs/en-US/manual/file-manager/amazon-s3.md",lastUpdated:173254844e4},NR=[{id:"amazon-s3",depth:1,title:"Amazon S3"}],zR=[],FR={},BR={title:"\u4FDD\u5B58\u6570\u636E",toc:"menu",filename:"docs/en-US/manual/ui/actions/save-record.md",lastUpdated:173254844e4,description:"\u81EA\u5B9A\u4E49\u4FDD\u5B58\u6570\u636E\u64CD\u4F5C\u662F\u8868\u5355\u533A\u5757\u7279\u6709\u7684\u64CD\u4F5C\uFF0C\u652F\u6301\u81EA\u5B9A\u4E49\u64CD\u4F5C\u7684\u884C\u4E3A\uFF1A"},jR=[{id:"\u4FDD\u5B58\u6570\u636E",depth:1,title:"\u4FDD\u5B58\u6570\u636E"}],HR=[{value:"\u81EA\u5B9A\u4E49\u4FDD\u5B58\u6570\u636E\u64CD\u4F5C\u662F\u8868\u5355\u533A\u5757\u7279\u6709\u7684\u64CD\u4F5C\uFF0C\u652F\u6301\u81EA\u5B9A\u4E49\u64CD\u4F5C\u7684\u884C\u4E3A\uFF1A",paraId:0,tocIndex:0},{value:"\u7F16\u8F91\u6309\u94AE",paraId:1,tocIndex:0},{value:"\u5B57\u6BB5\u8D4B\u503C\uFF1A\u70B9\u51FB\u5F53\u524D\u81EA\u5B9A\u4E49\u6309\u94AE\u65F6\uFF0C\u5F53\u524D\u6570\u636E\u5B57\u6BB5\u8D4B\u503C\u4E2D\u7684\u60C5\u51B5\u4FDD\u5B58\u3002",paraId:1,tocIndex:0},{value:"\u8DF3\u8FC7\u5FC5\u586B\u6821\u9A8C",paraId:1,tocIndex:0},{value:"\u63D0\u4EA4\u6210\u529F\u540E\u7684\u52A8\u4F5C",paraId:1,tocIndex:0},{value:"\u7ED1\u5B9A\u5DE5\u4F5C\u6D41",paraId:2,tocIndex:0}],WR={},$R={title:"\u4E2A\u4EBA\u4E2D\u5FC3",toc:"menu",filename:"docs/en-US/manual/user/user-center/index.md",lastUpdated:173254844e4,description:"\u4E2A\u4EBA\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u7CFB\u5217\u7BA1\u7406\u548C\u7CFB\u7EDF\u7EF4\u62A4\u529F\u80FD\uFF0C\u5305\u62EC\u67E5\u770B\u7CFB\u7EDF\u7248\u672C\u53F7\u3001\u67E5\u770B\u548C\u7F16\u8F91\u4E2A\u4EBA\u8D44\u6599\u7B49\u5FEB\u6377\u64CD\u4F5C\u3002\u5F53\u7CFB\u7EDF\u6743\u9650\u5F00\u542F\u4E86\u76F8\u5E94\u6743\u9650\u65F6\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u8FD8\u4F1A\u63D0\u4F9B\u6E05\u9664\u7F13\u5B58\u548C\u91CD\u542F\u5E94\u7528\u7684\u6309\u94AE\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u5FEB\u6377\u64CD\u4F5C\u53EF\u7531\u63D2\u4EF6\u6269\u5C55\u63D0\u4F9B\u3002"},GR=[{id:"\u4E2A\u4EBA\u4E2D\u5FC3",depth:1,title:"\u4E2A\u4EBA\u4E2D\u5FC3"}],VR=[{value:"\u4E2A\u4EBA\u4E2D\u5FC3\u4E3A\u7528\u6237\u63D0\u4F9B\u4E86\u4E00\u7CFB\u5217\u7BA1\u7406\u548C\u7CFB\u7EDF\u7EF4\u62A4\u529F\u80FD\uFF0C\u5305\u62EC\u67E5\u770B\u7CFB\u7EDF\u7248\u672C\u53F7\u3001\u67E5\u770B\u548C\u7F16\u8F91\u4E2A\u4EBA\u8D44\u6599\u7B49\u5FEB\u6377\u64CD\u4F5C\u3002\u5F53\u7CFB\u7EDF\u6743\u9650\u5F00\u542F\u4E86\u76F8\u5E94\u6743\u9650\u65F6\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u8FD8\u4F1A\u63D0\u4F9B\u6E05\u9664\u7F13\u5B58\u548C\u91CD\u542F\u5E94\u7528\u7684\u6309\u94AE\uFF0C\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u5FEB\u6377\u64CD\u4F5C\u53EF\u7531\u63D2\u4EF6\u6269\u5C55\u63D0\u4F9B\u3002",paraId:0,tocIndex:0},{value:"\u76EE\u524D\u63D0\u4F9B\u7684\u4E2A\u4EBA\u4E2D\u5FC3\u5FEB\u6377\u64CD\u4F5C\uFF1A",paraId:1,tocIndex:0},{value:"Edit profile\uFF1A\u7F16\u8F91\u7528\u6237\u4E2A\u4EBA\u4FE1\u606F\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Change password\uFF1A\u4FEE\u6539\u5BC6\u7801\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Switch role\uFF1A\u5207\u6362\u89D2\u8272\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Sign out\uFF1A\u767B\u51FA\u7CFB\u7EDF\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Theme \uFF1A\u7528\u4E8E\u5207\u6362\u4E3B\u9898\uFF0C\u7531\u4E3B\u9898\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B",paraId:2,tocIndex:0},{value:"Clear cache: \u6E05\u9664\u7F13\u5B58\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B\uFF08\u6709\u6743\u9650\u63A7\u5236\uFF09",paraId:2,tocIndex:0},{value:"Restart application\uFF1A\u91CD\u542F\u5E94\u7528\uFF0C\u7531\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B9E\u73B0\u63D0\u4F9B\uFF08\u6709\u6743\u9650\u63A7\u5236\uFF09",paraId:2,tocIndex:0}],KR={},ZR={title:"\u5220\u9664\u6570\u636E",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/destroy.md",lastUpdated:173254844e4,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u5220\u9664\u3002"},YR=[{id:"\u5220\u9664\u6570\u636E",depth:1,title:"\u5220\u9664\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],QR=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u5220\u9664\u3002",paraId:0,tocIndex:0},{value:"\u5220\u9664\u8282\u70B9\u7684\u57FA\u672C\u4F7F\u7528\u4E0E\u66F4\u65B0\u8282\u70B9\u7C7B\u4F3C\uFF0C\u53EA\u662F\u5220\u9664\u8282\u70B9\u4E0D\u9700\u8981\u5B57\u6BB5\u8D4B\u503C\uFF0C\u53EA\u9700\u8981\u9009\u62E9\u6570\u636E\u8868\u548C\u7B5B\u9009\u6761\u4EF6\u5373\u53EF\u3002\u5220\u9664\u8282\u70B9\u7684\u7ED3\u679C\u4F1A\u8FD4\u56DE\u5220\u9664\u6210\u529F\u6570\u636E\u7684\u884C\u6570\uFF0C\u53EA\u5728\u6267\u884C\u5386\u53F2\u91CC\u53EF\u67E5\u770B\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u53D8\u91CF\u5728\u540E\u7EED\u8282\u70B9\u4F7F\u7528\u3002",paraId:1,tocIndex:0},{value:"\u76EE\u524D\u5220\u9664\u8282\u70B9\u4E0D\u652F\u6301\u9010\u6761\u5220\u9664\uFF0C\u5747\u4E3A\u6279\u91CF\u5220\u9664\uFF0C\u56E0\u6B64\u4E0D\u4F1A\u89E6\u53D1\u6BCF\u6761\u6570\u636E\u5220\u9664\u7684\u5176\u4ED6\u4E8B\u4EF6\u3002",paraId:2},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5220\u9664\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:3,tocIndex:1},{value:"\u9009\u62E9\u8981\u5220\u9664\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:4,tocIndex:3},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:5,tocIndex:4},{value:"\u4F8B\u5982\u5B9A\u65F6\u6E05\u7406\u5DF2\u53D6\u6D88\u7684\u65E0\u6548\u5386\u53F2\u8BA2\u5355\u6570\u636E\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5220\u9664\u8282\u70B9\u6765\u5B9E\u73B0\uFF1A",paraId:6,tocIndex:5},{value:"\u5DE5\u4F5C\u6D41\u5C06\u5B9A\u65F6\u89E6\u53D1\uFF0C\u5E76\u6267\u884C\u5220\u9664\u6240\u6709\u5DF2\u53D6\u6D88\u7684\u65E0\u6548\u5386\u53F2\u8BA2\u5355\u6570\u636E\u3002",paraId:7,tocIndex:5}],JR={},XR={title:"HTTP \u8BF7\u6C42",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/request.md",lastUpdated:173254844e4,description:"\u5F53\u9700\u8981\u4E0E\u53E6\u4E00\u4E2A web \u7CFB\u7EDF\u8FDB\u884C\u4EA4\u4E92\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 HTTP \u8BF7\u6C42\u8282\u70B9\u3002\u8BE5\u8282\u70B9\u5728\u6267\u884C\u65F6\u4F1A\u6839\u636E\u914D\u7F6E\u5411\u5BF9\u5E94\u7684\u5730\u5740\u53D1\u51FA\u4E00\u4E2A HTTP \u8BF7\u6C42\uFF0C\u53EF\u4EE5\u643A\u5E26 JSON \u683C\u5F0F\u7684\u6570\u636E\uFF0C\u5B8C\u6210\u4E0E\u5916\u90E8\u7CFB\u7EDF\u7684\u6570\u636E\u4EA4\u4E92\u3002"},eM=[{id:"http-\u8BF7\u6C42",depth:1,title:"HTTP \u8BF7\u6C42"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u8BF7\u6C42\u65B9\u6CD5",depth:3,title:"\u8BF7\u6C42\u65B9\u6CD5"},{id:"\u8BF7\u6C42\u5730\u5740",depth:3,title:"\u8BF7\u6C42\u5730\u5740"},{id:"\u8BF7\u6C42\u5934\u914D\u7F6E",depth:3,title:"\u8BF7\u6C42\u5934\u914D\u7F6E"},{id:"\u8BF7\u6C42\u53C2\u6570",depth:3,title:"\u8BF7\u6C42\u53C2\u6570"},{id:"\u8BF7\u6C42\u4F53",depth:3,title:"\u8BF7\u6C42\u4F53"},{id:"\u8D85\u65F6\u8BBE\u7F6E",depth:3,title:"\u8D85\u65F6\u8BBE\u7F6E"},{id:"\u5FFD\u7565\u5931\u8D25",depth:3,title:"\u5FFD\u7565\u5931\u8D25"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],aM=[{value:"\u5F53\u9700\u8981\u4E0E\u53E6\u4E00\u4E2A web \u7CFB\u7EDF\u8FDB\u884C\u4EA4\u4E92\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528 HTTP \u8BF7\u6C42\u8282\u70B9\u3002\u8BE5\u8282\u70B9\u5728\u6267\u884C\u65F6\u4F1A\u6839\u636E\u914D\u7F6E\u5411\u5BF9\u5E94\u7684\u5730\u5740\u53D1\u51FA\u4E00\u4E2A HTTP \u8BF7\u6C42\uFF0C\u53EF\u4EE5\u643A\u5E26 JSON \u683C\u5F0F\u7684\u6570\u636E\uFF0C\u5B8C\u6210\u4E0E\u5916\u90E8\u7CFB\u7EDF\u7684\u6570\u636E\u4EA4\u4E92\u3002",paraId:0,tocIndex:0},{value:"\u5982\u679C\u5BF9 Postman \u8FD9\u7C7B\u8BF7\u6C42\u53D1\u9001\u5DE5\u5177\u6BD4\u8F83\u719F\u6089\uFF0C\u90A3\u4E48\u53EF\u4EE5\u5F88\u5FEB\u638C\u63E1 HTTP \u8BF7\u6C42\u8282\u70B9\u7684\u7528\u6CD5\u3002\u4E0E\u8FD9\u4E9B\u5DE5\u5177\u4E0D\u540C\u7684\u662F\uFF0CHTTP \u8BF7\u6C42\u8282\u70B9\u4E2D\u5404\u9879\u53C2\u6570\u5747\u53EF\u4F7F\u7528\u5F53\u524D\u6D41\u7A0B\u4E2D\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\uFF0C\u53EF\u4EE5\u4E0E\u5F53\u524D\u7CFB\u7EDF\u7684\u4E1A\u52A1\u5904\u7406\u6709\u673A\u7ED3\u5408\u8D77\u6765\u3002",paraId:1,tocIndex:0},{value:"HTTP \u8BF7\u6C42\u8282\u70B9\u6682\u4E0D\u652F\u6301\u8BF7\u6C42\u54CD\u5E94\u7684\u7ED3\u679C\u8FDB\u884C\u4F7F\u7528\uFF0C\u53EF\u80FD\u4F1A\u5728\u672A\u6765\u652F\u6301\u3002",paraId:2},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201CHTTP \u8BF7\u6C42\u201D\u8282\u70B9\uFF1A",paraId:3,tocIndex:1},{value:"\u53EF\u9009\u7684 HTTP \u8BF7\u6C42\u65B9\u6CD5\uFF1A",paraId:4,tocIndex:3},{value:"GET",paraId:4,tocIndex:3},{value:"\u3001",paraId:4,tocIndex:3},{value:"POST",paraId:4,tocIndex:3},{value:"\u3001",paraId:4,tocIndex:3},{value:"PUT",paraId:4,tocIndex:3},{value:"\u3001",paraId:4,tocIndex:3},{value:"PATCH",paraId:4,tocIndex:3},{value:" \u548C ",paraId:4,tocIndex:3},{value:"DELETE",paraId:4,tocIndex:3},{value:"\u3002",paraId:4,tocIndex:3},{value:"HTTP \u670D\u52A1\u7684 URL\uFF0C\u9700\u8981\u5305\u542B\u534F\u8BAE\u90E8\u5206\uFF08",paraId:5,tocIndex:4},{value:"http://",paraId:5,tocIndex:4},{value:" \u6216 ",paraId:5,tocIndex:4},{value:"https://",paraId:5,tocIndex:4},{value:"\uFF09\uFF0C\u63A8\u8350\u4F7F\u7528 ",paraId:5,tocIndex:4},{value:"https://",paraId:5,tocIndex:4},{value:"\u3002",paraId:5,tocIndex:4},{value:"\u8BF7\u6C42 Header \u90E8\u5206\u7684\u952E\u503C\u5BF9\uFF0C\u76F8\u5173\u503C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\u3002",paraId:6,tocIndex:5},{value:"\u5BF9 ",paraId:7},{value:"Content-Type",paraId:7},{value:" \u8BF7\u6C42\u5934\uFF0C\u76EE\u524D\u4EC5\u652F\u6301 ",paraId:7},{value:"application/json",paraId:7},{value:" \u7684\u683C\u5F0F\uFF0C\u4E14\u5DF2\u9ED8\u8BA4\u5185\u7F6E\uFF0C\u65E0\u9700\u586B\u5199\uFF0C\u8986\u76D6\u65E0\u6548\u3002",paraId:7},{value:"\u8BF7\u6C42 query \u90E8\u5206\u7684\u952E\u503C\u5BF9\uFF0C\u76F8\u5173\u503C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\u3002",paraId:8,tocIndex:6},{value:"\u8BF7\u6C42\u7684 Body \u90E8\u5206\uFF0C\u76EE\u524D\u4EC5\u652F\u6301\u6807\u51C6\u7684 JSON \u683C\u5F0F\uFF0C\u53EF\u4EE5\u901A\u8FC7\u6587\u672C\u7F16\u8F91\u6846\u53F3\u4E0A\u89D2\u7684\u53D8\u91CF\u6309\u94AE\u63D2\u5165\u6D41\u7A0B\u4E0A\u4E0B\u6587\u4E2D\u7684\u53D8\u91CF\u3002",paraId:9,tocIndex:7},{value:"\u6CE8\uFF1A\u53D8\u91CF\u5FC5\u987B\u5728 JSON \u7684\u5B57\u7B26\u4E32\u4E2D\u4F7F\u7528\uFF0C\u4F8B\u5982\uFF1A",paraId:10},{value:'"a": "{{$context.data.a}}"',paraId:10},{value:"\u3002",paraId:10},{value:"\u5F53\u8BF7\u6C42\u957F\u65F6\u95F4\u672A\u54CD\u5E94\u65F6\uFF0C\u901A\u8FC7\u8D85\u65F6\u8BBE\u7F6E\u53D6\u6D88\u8BE5\u8BF7\u6C42\u7684\u6267\u884C\u3002\u8BF7\u6C42\u8D85\u65F6\u540E\u4F1A\u4EE5\u5931\u8D25\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\u5F53\u524D\u6D41\u7A0B\u3002",paraId:11,tocIndex:8},{value:"\u8BF7\u6C42\u8282\u70B9\u4F1A\u4EE5\u6807\u51C6 HTTP \u72B6\u6001\u7801\u7684 ",paraId:12,tocIndex:9},{value:"200",paraId:12,tocIndex:9},{value:"~",paraId:12,tocIndex:9},{value:"299",paraId:12,tocIndex:9},{value:" \u4E4B\u95F4\uFF08\u542B\uFF09\u7684\u72B6\u6001\u8BA4\u4E3A\u662F\u6210\u529F\u72B6\u6001\uFF0C\u5176\u4ED6\u7684\u5747\u8BA4\u4E3A\u662F\u5931\u8D25\u3002\u5982\u52FE\u9009\u4E86\u201C\u5FFD\u7565\u5931\u8D25\u7684\u8BF7\u6C42\u5E76\u7EE7\u7EED\u5DE5\u4F5C\u6D41\u201D\u9009\u9879\uFF0C\u5219\u5F53\u8BF7\u6C42\u5931\u8D25\u540E\u4ECD\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u7684\u5176\u4ED6\u6D41\u7A0B\u8282\u70B9\u3002",paraId:12,tocIndex:9},{value:"\u4F8B\u5982\u6211\u4EEC\u53EF\u4EE5\u4F7F\u7528\u8BF7\u6C42\u8282\u70B9\u6765\u5BF9\u63A5\u4E91\u5E73\u53F0\u53D1\u9001\u901A\u77E5\u77ED\u4FE1\uFF0C\u4EE5\u963F\u91CC\u4E91\u53D1\u9001\u77ED\u4FE1\u63A5\u53E3\u4E3A\u4F8B\u914D\u7F6E\u5982\u4E0B\uFF08\u76F8\u5173\u53C2\u6570\u9700\u81EA\u884C\u67E5\u9605\u6587\u6863\u9002\u914D\uFF09\uFF1A",paraId:13,tocIndex:10},{value:"\u5DE5\u4F5C\u6D41\u89E6\u53D1\u8BE5\u8282\u70B9\u6267\u884C\u65F6\u4F1A\u4EE5\u914D\u7F6E\u7684\u5185\u5BB9\u8C03\u7528\u963F\u91CC\u4E91\u7684\u77ED\u4FE1\u63A5\u53E3\uFF0C\u8BF7\u6C42\u6210\u529F\u7684\u8BDD\u5C06\u901A\u8FC7\u77ED\u4FE1\u4E91\u670D\u52A1\u53D1\u9001\u4E00\u6761\u77ED\u4FE1\u3002",paraId:14,tocIndex:10}],tM={},nM={title:"\u8868\u5355\u4E8B\u4EF6",toc:"menu",filename:"docs/en-US/manual/workflow/triggers/form.md",lastUpdated:173254844e4,description:"\u8868\u5355\u63D0\u4EA4\u4E8B\u4EF6\u9488\u5BF9 UI \u754C\u9762\u4E2D\u65B0\u589E\u548C\u66F4\u65B0\u6570\u636E\u7684\u8868\u5355\u64CD\u4F5C\u6309\u94AE\uFF0C\u5728\u8868\u5355\u4E2D\u70B9\u51FB\u5BF9\u5E94\u5DF2\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\u7684\u6309\u94AE\u540E\uFF0C\u5C06\u89E6\u53D1\u5BF9\u5E94\u7ED1\u5B9A\u7684\u5DE5\u4F5C\u6D41\u6267\u884C\u3002\u4F8B\u5982\u5BF9\u67D0\u4E2A\u6D3B\u52A8\u53D1\u8D77\u62A5\u540D\u7684\u8868\u5355\uFF0C\u62A5\u540D\uFF08\u8868\u5355\u63D0\u4EA4\uFF09\u6210\u529F\u540E\u89E6\u53D1\u76F8\u5E94\u7684\u6D41\u7A0B\u5904\u7406\u3002"},oM=[{id:"\u8868\u5355\u4E8B\u4EF6",depth:1,title:"\u8868\u5355\u4E8B\u4EF6"},{id:"\u57FA\u672C\u4F7F\u7528",depth:2,title:"\u57FA\u672C\u4F7F\u7528"},{id:"\u76F8\u5173\u63D0\u793A",depth:2,title:"\u76F8\u5173\u63D0\u793A"},{id:"\u4E0E\u6570\u636E\u8868\u4E8B\u4EF6\u7684\u533A\u522B",depth:3,title:"\u4E0E\u6570\u636E\u8868\u4E8B\u4EF6\u7684\u533A\u522B"},{id:"\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u6309\u94AE\u7684\u533A\u522B",depth:3,title:"\u201C\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u201D\u6309\u94AE\u7684\u533A\u522B"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],rM=[{value:"\u8868\u5355\u63D0\u4EA4\u4E8B\u4EF6\u9488\u5BF9 UI \u754C\u9762\u4E2D\u65B0\u589E\u548C\u66F4\u65B0\u6570\u636E\u7684\u8868\u5355\u64CD\u4F5C\u6309\u94AE\uFF0C\u5728\u8868\u5355\u4E2D\u70B9\u51FB\u5BF9\u5E94\u5DF2\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\u7684\u6309\u94AE\u540E\uFF0C\u5C06\u89E6\u53D1\u5BF9\u5E94\u7ED1\u5B9A\u7684\u5DE5\u4F5C\u6D41\u6267\u884C\u3002\u4F8B\u5982\u5BF9\u67D0\u4E2A\u6D3B\u52A8\u53D1\u8D77\u62A5\u540D\u7684\u8868\u5355\uFF0C\u62A5\u540D\uFF08\u8868\u5355\u63D0\u4EA4\uFF09\u6210\u529F\u540E\u89E6\u53D1\u76F8\u5E94\u7684\u6D41\u7A0B\u5904\u7406\u3002",paraId:0,tocIndex:0},{value:"\u9488\u5BF9\u201C\u63D0\u4EA4\u201D\u6309\u94AE\uFF08\u542B\u201C\u4FDD\u5B58\u6570\u636E\u201D\u6309\u94AE\uFF09\u914D\u7F6E\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5C06\u5728\u7528\u6237\u63D0\u4EA4\u5BF9\u5E94\u8868\u5355\u4E14\u6570\u636E\u64CD\u4F5C\u5B8C\u6210\u540E\u88AB\u89E6\u53D1\u3002",paraId:1,tocIndex:1},{value:` `,paraId:2},{value:"\u9488\u5BF9\u81EA\u5B9A\u4E49\u7684\u201C\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u201D\u6309\u94AE\u914D\u7F6E\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5C06\u5728\u7528\u6237\u70B9\u51FB\u5BF9\u5E94\u6309\u94AE\u65F6\uFF0C\u76F4\u63A5\u5C06\u5DF2\u914D\u7F6E\u7684\u8868\u5355\u6570\u636E\u63D0\u4EA4\u5230\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u8FDB\u884C\u5904\u7406\u3002",paraId:3,tocIndex:1},{value:` `,paraId:2},{value:"\u4ECE\u6309\u94AE\u914D\u7F6E\u7684\u83DC\u5355\u4E2D\u9009\u62E9\u201C\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\u201D\uFF0C\u5373\u53EF\u6253\u5F00\u7ED1\u5B9A\u914D\u7F6E\u5F39\u7A97\u3002\u5F39\u7A97\u4E2D\u53EF\u4EE5\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u8981\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5982\u679C\u4E00\u4E2A\u90FD\u4E0D\u914D\u7F6E\uFF0C\u5219\u4EE3\u8868\u65E0\u9700\u89E6\u53D1\u3002\u9488\u5BF9\u6BCF\u4E00\u4E2A\u5DE5\u4F5C\u6D41\uFF0C\u9700\u8981\u5148\u9650\u5B9A\u89E6\u53D1\u7684\u6570\u636E\u662F\u6574\u4E2A\u8868\u5355\u7684\u6570\u636E\u8FD8\u662F\u8868\u5355\u4E2D\u7684\u67D0\u4E2A\u5173\u7CFB\u5B57\u6BB5\u7684\u6570\u636E\uFF0C\u4E4B\u540E\u518D\u6839\u636E\u6240\u9009\u7684\u6570\u636E\u6A21\u578B\u5BF9\u5E94\u7684\u6570\u636E\u8868\uFF0C\u9009\u62E9\u5DF2\u914D\u7F6E\u4E86\u5339\u914D\u8BE5\u8868\u6A21\u578B\u7684\u8868\u5355\u5DE5\u4F5C\u6D41\u3002",paraId:4,tocIndex:1},{value:` `,paraId:2},{value:` @@ -14216,7 +14269,7 @@ yarn nocobase tar @my-project/plugin-hello `,paraId:2},{value:"\u5C06\u5DE5\u4F5C\u6D41\u8BBE\u7F6E\u4E3A\u542F\u7528\u72B6\u6001\u540E\uFF0C\u6D41\u7A0B\u7684\u5177\u4F53\u5904\u7406\u8282\u70B9\u7A0D\u540E\u518D\u56DE\u6765\u914D\u7F6E\u3002",paraId:12,tocIndex:5},{value:"\u7136\u540E\u6211\u4EEC\u5728\u754C\u9762\u4E0A\u521B\u5EFA\u201C\u8D39\u7528\u62A5\u9500\u201D\u6570\u636E\u8868\u7684\u8868\u683C\u533A\u5757\uFF0C\u5E76\u4E14\u5728\u5DE5\u5177\u680F\u589E\u52A0\u4E00\u4E2A\u201C\u6DFB\u52A0\u201D\u6309\u94AE\uFF0C\u914D\u7F6E\u5BF9\u5E94\u7684\u8868\u5355\u5B57\u6BB5\u3002\u8FD9\u91CC\u6211\u4EEC\u4E0D\u4F7F\u7528\u9ED8\u8BA4\u7684\u201C\u63D0\u4EA4\u201D\u6309\u94AE\uFF0C\u800C\u662F\u79FB\u9664\u540E\u91CD\u65B0\u6DFB\u52A0\u4E00\u4E2A\u201C\u63D0\u4EA4\u81F3\u5DE5\u4F5C\u6D41\u201D\u7684\u6309\u94AE\uFF1A",paraId:13,tocIndex:5},{value:` `,paraId:2},{value:"\u5E76\u6253\u5F00\u6309\u94AE\u7684\u201C\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\u201D\u914D\u7F6E\u5BF9\u8BDD\u6846\uFF0C\u9009\u62E9\u6574\u4E2A\u8868\u5355\u6570\u636E\u4F5C\u4E3A\u4E0A\u4E0B\u6587\uFF0C\u4EE5\u53CA\u5DE5\u4F5C\u6D41\u4E3A\u6211\u4EEC\u4E4B\u524D\u521B\u5EFA\u7684\u5DE5\u4F5C\u6D41\uFF1A",paraId:14,tocIndex:5},{value:` `,paraId:2},{value:"\u8868\u5355\u914D\u7F6E\u5B8C\u6210\u540E\uFF0C\u518D\u56DE\u5230\u5DE5\u4F5C\u6D41\u7684\u903B\u8F91\u7F16\u6392\u3002\u6BD4\u5982\u6211\u4EEC\u9700\u8981\u91D1\u989D\u5927\u4E8E 500 \u5143\u65F6\u8981\u6C42\u7BA1\u7406\u5458\u8FDB\u884C\u4EBA\u5DE5\u5BA1\u6838\uFF0C\u5426\u5219\u76F4\u63A5\u901A\u8FC7\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u521B\u5EFA\u62A5\u9500\u8BB0\u5F55\uFF0C\u5E76\u7531\u8D22\u52A1\u8FDB\u4E00\u6B65\u5904\u7406\uFF08\u7565\uFF09\u3002",paraId:15,tocIndex:5},{value:` - `,paraId:2},{value:"\u5FFD\u7565\u540E\u7EED\u8D22\u52A1\u7684\u5904\u7406\u7684\u8BDD\uFF0C\u8FD9\u6837\u5C31\u5B8C\u6210\u4E86\u7533\u8BF7\u62A5\u9500\u6D41\u7A0B\u7684\u914D\u7F6E\uFF0C\u5F53\u5458\u5DE5\u586B\u5199\u62A5\u9500\u7533\u8BF7\u5E76\u63D0\u4EA4\u540E\uFF0C\u4F1A\u89E6\u53D1\u5BF9\u5E94\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5982\u679C\u8D39\u7528\u91D1\u989D\u5C0F\u4E8E 500\uFF0C\u4F1A\u81EA\u52A8\u521B\u5EFA\u8BB0\u5F55\u5E76\u7B49\u5F85\u8D22\u52A1\u8FDB\u4E00\u6B65\u5904\u7406\uFF0C\u5426\u5219\u4F1A\u7531\u4E3B\u7BA1\u5BA1\u6838\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u4E5F\u662F\u4E00\u6837\u521B\u5EFA\u8BB0\u5F55\u5E76\u4EA4\u7ED9\u8D22\u52A1\u5904\u7406\u3002",paraId:16,tocIndex:5},{value:"\u8BE5\u793A\u4F8B\u7684\u6D41\u7A0B\u4E5F\u53EF\u4EE5\u914D\u7F6E\u5728\u666E\u901A\u201C\u63D0\u4EA4\u201D\u6309\u94AE\u4E0A\uFF0C\u53EF\u4EE5\u6839\u636E\u5177\u4F53\u7684\u4E1A\u52A1\u573A\u666F\u51B3\u5B9A\u662F\u5426\u9700\u8981\u5148\u521B\u5EFA\u8BB0\u5F55\u518D\u6267\u884C\u540E\u7EED\u7684\u6D41\u7A0B\u3002",paraId:17,tocIndex:5}],dM={},iM={title:"Provider",toc:"menu",filename:"docs/en-US/plugin-samples/provider/index.md",lastUpdated:1732240239e3,description:"According to the Provider Tutorial, the Provider has three main functions:"},lM=[{id:"provider",depth:2,title:"Provider"}],cM=[{value:"According to the ",paraId:0,tocIndex:0},{value:"Provider Tutorial",paraId:1,tocIndex:0},{value:", the Provider has three main functions:",paraId:0,tocIndex:0},{value:"Providing a globally shared context",paraId:2,tocIndex:0},{value:"Displaying global content",paraId:2,tocIndex:0},{value:"Intercepting and rendering based on conditions",paraId:2,tocIndex:0},{value:"For these functions, we offer the following examples:",paraId:3,tocIndex:0},{value:"Global Content Display",paraId:4,tocIndex:0},{value:"Global Context",paraId:5,tocIndex:0}],sM={},uM={title:"\u7CFB\u7EDF\u8BBE\u7F6E",toc:"menu",filename:"docs/en-US/plugins/system-settings/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},pM=[{id:"\u7CFB\u7EDF\u8BBE\u7F6E",depth:1,title:"\u7CFB\u7EDF\u8BBE\u7F6E"}],IM=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],_M={},vM={title:"\u5FEB\u901F\u5165\u95E8",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/index.md",lastUpdated:1732240239e3,description:"\u4ECE\u9876\u90E8\u83DC\u5355\u680F\u7684\u63D2\u4EF6\u914D\u7F6E\u83DC\u5355\u8FDB\u5165\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u7684\u7BA1\u7406\u9875\u9762\uFF1A"},mM=[{id:"\u5FEB\u901F\u5165\u95E8",depth:1,title:"\u5FEB\u901F\u5165\u95E8"},{id:"\u914D\u7F6E\u4E00\u4E2A\u5DE5\u4F5C\u6D41",depth:2,title:"\u914D\u7F6E\u4E00\u4E2A\u5DE5\u4F5C\u6D41"},{id:"\u89E6\u53D1\u5DE5\u4F5C\u6D41",depth:2,title:"\u89E6\u53D1\u5DE5\u4F5C\u6D41"},{id:"\u67E5\u770B\u6267\u884C\u5386\u53F2",depth:2,title:"\u67E5\u770B\u6267\u884C\u5386\u53F2"},{id:"\u5C0F\u7ED3",depth:2,title:"\u5C0F\u7ED3"}],hM=[{value:"\u4ECE\u9876\u90E8\u83DC\u5355\u680F\u7684\u63D2\u4EF6\u914D\u7F6E\u83DC\u5355\u8FDB\u5165\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u7684\u7BA1\u7406\u9875\u9762\uFF1A",paraId:0,tocIndex:1},{value:"\u7BA1\u7406\u754C\u9762\u4E2D\u4F1A\u5217\u51FA\u6240\u6709\u5DF2\u521B\u5EFA\u7684\u5DE5\u4F5C\u6D41\uFF1A",paraId:1,tocIndex:1},{value:"\u70B9\u51FB\u201C\u65B0\u5EFA\u201D\u6309\u94AE\uFF0C\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u5DE5\u4F5C\u6D41\uFF0C\u9009\u62E9\u6570\u636E\u8868\u4E8B\u4EF6\uFF1A",paraId:2,tocIndex:1},{value:"\u70B9\u51FB\u5217\u8868\u4E2D\u7684\u201C\u914D\u7F6E\u201D\u94FE\u63A5\uFF0C\u8FDB\u5165\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\uFF1A",paraId:3,tocIndex:1},{value:"\u7136\u540E\u70B9\u51FB\u89E6\u53D1\u5668\u7684\u5361\u7247\uFF0C\u6253\u5F00\u89E6\u53D1\u5668\u914D\u7F6E\u62BD\u5C49\uFF0C\u9009\u62E9\u4E00\u5F20\u4E4B\u524D\u521B\u5EFA\u7684\u6570\u636E\u8868\uFF08\u4F8B\u5982\u201C\u6587\u7AE0\u201D\u8868\uFF09\uFF0C\u89E6\u53D1\u65F6\u673A\u9879\u9009\u62E9\u201C\u65B0\u589E\u6570\u636E\u540E\u201D\u89E6\u53D1\uFF0C\u70B9\u51FB\u201C\u4FDD\u5B58\u201D\u6309\u94AE\uFF0C\u5B8C\u6210\u89E6\u53D1\u5668\u7684\u914D\u7F6E\uFF1A",paraId:4,tocIndex:1},{value:"\u63A5\u4E0B\u6765\u6211\u4EEC\u53EF\u4EE5\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\u6309\u94AE\u4E3A\u6D41\u7A0B\u589E\u52A0\u4E00\u4E2A\u8282\u70B9\uFF0C\u4F8B\u5982\u9009\u62E9\u4E00\u4E2A\u8FD0\u7B97\u8282\u70B9\uFF0C\u7528\u4E8E\u5C06\u89E6\u53D1\u5668\u4E2D\u7684\u6570\u636E\u7684\u201C\u6807\u9898\u201D\u5B57\u6BB5\u4E0E\u201CID\u201D\u5B57\u6BB5\u8FDB\u884C\u62FC\u63A5\u8BA1\u7B97\uFF1A",paraId:5,tocIndex:1},{value:"\u70B9\u51FB\u8282\u70B9\u5361\u7247\u6253\u5F00\u8282\u70B9\u914D\u7F6E\u62BD\u5C49\uFF0C\u4F7F\u7528 Formula.js \u63D0\u4F9B\u7684\u8FD0\u7B97\u51FD\u6570 ",paraId:6,tocIndex:1},{value:"CONCATENATE",paraId:6,tocIndex:1},{value:"\uFF0C\u62FC\u63A5\u201C\u6807\u9898\u201D\u4E0E\u201CID\u201D\u5B57\u6BB5\uFF0C\u4E24\u4E2A\u5B57\u6BB5\u901A\u8FC7\u53D8\u91CF\u9009\u62E9\u5668\u63D2\u5165\uFF1A",paraId:6,tocIndex:1},{value:"\u4E4B\u540E\u518D\u521B\u5EFA\u4E00\u4E2A\u66F4\u65B0\u6570\u636E\u8282\u70B9\uFF0C\u7528\u4E8E\u5C06\u7ED3\u679C\u4FDD\u5B58\u5230\u201C\u6807\u9898\u201D\u5B57\u6BB5\u4E2D\uFF1A",paraId:7,tocIndex:1},{value:"\u540C\u6837\u7684\u70B9\u51FB\u5361\u7247\u6253\u5F00\u66F4\u65B0\u6570\u636E\u8282\u70B9\u7684\u914D\u7F6E\u62BD\u5C49\uFF0C\u9009\u62E9\u201C\u6587\u7AE0\u201D\u8868\uFF0C\u66F4\u65B0\u7684\u6570\u636E ID \u9009\u62E9\u89E6\u53D1\u5668\u4E2D\u7684\u6570\u636E ID\uFF0C\u66F4\u65B0\u7684\u6570\u636E\u9879\u9009\u62E9\u201C\u6807\u9898\u201D\uFF0C\u66F4\u65B0\u7684\u6570\u636E\u503C\u9009\u62E9\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF1A",paraId:8,tocIndex:1},{value:"\u6700\u540E\u518D\u70B9\u51FB\u53F3\u4E0A\u89D2\u5DE5\u5177\u680F\u91CC\u7684\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\uFF0C\u5C06\u5DE5\u4F5C\u6D41\u5207\u6362\u81F3\u542F\u7528\u72B6\u6001\uFF0C\u8FD9\u6837\u5DE5\u4F5C\u6D41\u5C31\u53EF\u4EE5\u88AB\u89E6\u53D1\u6267\u884C\u4E86\u3002",paraId:9,tocIndex:1},{value:"\u56DE\u5230\u7CFB\u7EDF\u4E3B\u754C\u9762\uFF0C\u901A\u8FC7\u6587\u7AE0\u533A\u5757\u521B\u5EFA\u4E00\u7BC7\u6587\u7AE0\uFF0C\u586B\u5165\u6587\u7AE0\u6807\u9898\uFF1A",paraId:10,tocIndex:2},{value:"\u63D0\u4EA4\u540E\u5237\u65B0\u533A\u5757\u540E\u53EF\u4EE5\u770B\u5230\u6587\u7AE0\u6807\u9898\u88AB\u81EA\u52A8\u66F4\u65B0\u4E3A\u201C\u6587\u7AE0\u6807\u9898 + \u6587\u7AE0 ID\u201D\u7684\u5F62\u5F0F\uFF1A",paraId:11,tocIndex:2},{value:"\u7531\u4E8E\u6570\u636E\u8868\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\u662F\u5F02\u6B65\u6267\u884C\u7684\uFF0C\u6240\u4EE5\u5728\u63D0\u4EA4\u6570\u636E\u540E\u7684\u754C\u9762\u4E2D\u65E0\u6CD5\u9A6C\u4E0A\u770B\u5230\u6570\u636E\u66F4\u65B0\uFF0C\u4F46\u7247\u523B\u4E4B\u540E\u5237\u65B0\u9875\u9762\u6216\u533A\u5757\u540E\u5373\u53EF\u770B\u5230\u66F4\u65B0\u7684\u5185\u5BB9\u3002",paraId:12},{value:"\u521A\u624D\u7684\u5DE5\u4F5C\u6D41\u5DF2\u7ECF\u6210\u529F\u89E6\u53D1\u6267\u884C\u4E86\u4E00\u6B21\uFF0C\u6211\u4EEC\u53EF\u4EE5\u56DE\u5230\u5DE5\u4F5C\u6D41\u7684\u7BA1\u7406\u754C\u9762\u4E2D\u67E5\u770B\u5230\u5BF9\u5E94\u7684\u6267\u884C\u5386\u53F2\uFF1A",paraId:13,tocIndex:3},{value:"\u5DE5\u4F5C\u6D41\u5217\u8868\u4E2D\u53EF\u4EE5\u770B\u5230\u8FD9\u4E2A\u5DE5\u4F5C\u6D41\u5DF2\u7ECF\u4EA7\u751F\u4E86\u4E00\u6B21\u6267\u884C\u5386\u53F2\uFF0C\u70B9\u51FB\u6B21\u6570\u7684\u94FE\u63A5\uFF0C\u53EF\u4EE5\u6253\u5F00\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5386\u53F2\u8BB0\u5F55\uFF1A",paraId:14,tocIndex:3},{value:"\u518D\u70B9\u51FB\u201C\u67E5\u770B\u201D\u94FE\u63A5\u53EF\u4EE5\u8FDB\u5165\u5230\u5F53\u6B21\u6267\u884C\u7684\u8BE6\u60C5\u9875\u9762\uFF0C\u53EF\u4EE5\u770B\u5230\u6BCF\u4E2A\u8282\u70B9\u7684\u6267\u884C\u72B6\u6001\u548C\u7ED3\u679C\u6570\u636E\uFF1A",paraId:15,tocIndex:3},{value:"\u89E6\u53D1\u5668\u7684\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u548C\u8282\u70B9\u6267\u884C\u7684\u7ED3\u679C\u6570\u636E\u90FD\u53EF\u4EE5\u901A\u8FC7\u70B9\u51FB\u5BF9\u5E94\u5361\u7247\u53F3\u4E0A\u89D2\u7684\u72B6\u6001\u6309\u94AE\u6253\u5F00\u67E5\u770B\uFF0C\u6BD4\u5982\u6211\u4EEC\u67E5\u770B\u5176\u4E2D\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\uFF1A",paraId:16,tocIndex:3},{value:"\u53EF\u4EE5\u770B\u5230\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u4E2D\u5305\u542B\u4E86\u8FD0\u7B97\u540E\u7684\u6807\u9898\uFF0C\u8FD9\u4E2A\u6807\u9898\u5C31\u662F\u540E\u7EED\u66F4\u65B0\u6570\u636E\u8282\u70B9\u66F4\u65B0\u7684\u6570\u636E\u3002",paraId:17,tocIndex:3},{value:"\u901A\u8FC7\u4E0A\u9762\u7684\u6B65\u9AA4\uFF0C\u6211\u4EEC\u5DF2\u7ECF\u5B8C\u6210\u4E86\u4E00\u4E2A\u7B80\u5355\u7684\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u548C\u89E6\u53D1\uFF0C\u4E5F\u63A5\u89E6\u4E86\u4EE5\u4E0B\u51E0\u4E2A\u57FA\u7840\u6982\u5FF5\uFF1A",paraId:18,tocIndex:4},{value:"\u5DE5\u4F5C\u6D41",paraId:19,tocIndex:4},{value:"\uFF1A\u7528\u4E8E\u5B9A\u4E49\u6D41\u7A0B\u7684\u57FA\u672C\u4FE1\u606F\uFF0C\u5305\u62EC\u540D\u79F0\u3001\u89E6\u53D1\u5668\u7C7B\u578B\u548C\u542F\u7528\u72B6\u6001\u7B49\uFF0C\u53EF\u5728\u5176\u4E2D\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u6267\u884C\u8282\u70B9\uFF0C\u662F\u627F\u8F7D\u6D41\u7A0B\u7684\u5B9E\u4F53\u3002",paraId:19,tocIndex:4},{value:"\u89E6\u53D1\u5668",paraId:19,tocIndex:4},{value:"\uFF1A\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u90FD\u5305\u542B\u4E00\u4E2A\u89E6\u53D1\u5668\uFF0C\u53EF\u914D\u7F6E\u4E3A\u5DE5\u4F5C\u6D41\u88AB\u89E6\u53D1\u7684\u7279\u5B9A\u6761\u4EF6\uFF0C\u662F\u6D41\u7A0B\u7684\u5165\u53E3\u3002",paraId:19,tocIndex:4},{value:"\u8282\u70B9",paraId:19,tocIndex:4},{value:"\uFF1A\u8282\u70B9\u662F\u5DE5\u4F5C\u6D41\u5185\u7684\u6267\u884C\u7279\u5B9A\u64CD\u4F5C\u7684\u6307\u4EE4\u5355\u5143\uFF0C\u5DE5\u4F5C\u6D41\u4E2D\u591A\u4E2A\u8282\u70B9\u4E4B\u95F4\u901A\u8FC7\u4E0A\u4E0B\u6E38\u5173\u7CFB\u7EC4\u6210\u5B8C\u6574\u7684\u6267\u884C\u6D41\u7A0B\u3002",paraId:19,tocIndex:4},{value:"\u6267\u884C\u8BA1\u5212",paraId:19,tocIndex:4},{value:"\uFF1A\u6267\u884C\u8BA1\u5212\u662F\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\u7684\u5177\u4F53\u6267\u884C\u5BF9\u8C61\uFF0C\u4E5F\u79F0\u4E3A\u6267\u884C\u8BB0\u5F55\u6216\u6267\u884C\u5386\u53F2\uFF0C\u5305\u542B\u4E86\u6267\u884C\u7684\u72B6\u6001\u3001\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u7B49\u4FE1\u606F\u3002\u5176\u4E2D\u9488\u5BF9\u6BCF\u4E2A\u8282\u70B9\u4E5F\u6709\u5BF9\u5E94\u7684\u6267\u884C\u7ED3\u679C\uFF0C\u5305\u542B\u4E86\u8282\u70B9\u6267\u884C\u540E\u7684\u72B6\u6001\u548C\u7ED3\u679C\u6570\u636E\u4FE1\u606F\u3002",paraId:19,tocIndex:4},{value:"\u66F4\u6DF1\u5165\u7684\u4F7F\u7528\u53EF\u4EE5\u8FDB\u4E00\u6B65\u53C2\u8003\u4EE5\u4E0B\u5185\u5BB9\uFF1A",paraId:20,tocIndex:4},{value:"\u8FDB\u9636\u4F7F\u7528",paraId:21,tocIndex:4},{value:"\u89E6\u53D1\u5668\u4ECB\u7ECD",paraId:22,tocIndex:4},{value:"\u8282\u70B9\u4ECB\u7ECD",paraId:23,tocIndex:4}],fM={},xM={title:"Workflow Manual",toc:"menu",filename:"docs/en-US/plugins/workflow-manual/index.md",lastUpdated:1732240239e3},gM=[],bM=[],yM={},wM={title:"Distinctive features",toc:"menu",filename:"docs/en-US/welcome/introduction/features.md",lastUpdated:1732240239e3,description:"Most form-, table-, or process-driven no-code products create data structures directly in the user interface, such as Airtable, where adding a new column to a table is adding a new field. This has the advantage of simplicity of use, but the disadvantage of limited functionality and flexibility to meet the needs of more complex scenarios."},kM=[{id:"distinctive-features",depth:1,title:"Distinctive features"},{id:"1-model-driven-separate-user-interface-from-data-structure",depth:2,title:'1. Model-driven, separate "user interface" from "data structure"'},{id:"2-what-you-see-is-what-you-get",depth:2,title:"2. What you see is what you get"},{id:"3-functions-as-plugins",depth:2,title:"3. Functions as plugins"}],SM=[{value:"Most form-, table-, or process-driven no-code products create data structures directly in the user interface, such as Airtable, where adding a new column to a table is adding a new field. This has the advantage of simplicity of use, but the disadvantage of limited functionality and flexibility to meet the needs of more complex scenarios.",paraId:0,tocIndex:1},{value:"NocoBase adopts the design idea of separating the data structure from the user interface, allowing you to create any number of blocks (data views) for the data collections, with different type, styles, content, and actions in each block. This balances the simplicity of no-code operation with the flexibility of native development.",paraId:1,tocIndex:1},{value:"NocoBase enables the development of complex and distinctive business systems, but this does not mean that complex and specialized operations are required. With a single click, configuration options are displayed on the usage interface, and administrators with system configuration privileges can directly configure the user interface in a WYSIWYG manner.",paraId:2,tocIndex:2},{value:"NocoBase adopts plugin architecture, all new functions can be realized by developing and installing plugins, and expanding the functions is as easy as installing an APP on your phone.",paraId:3,tocIndex:3}],UM={},PM={title:"Array",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/array.md",lastUpdated:1732240239e3,description:"Returns all of the items in an array after the specified index. Opposite of before."},TM=[{id:"array",depth:1,title:"Array"},{id:"after",depth:2,title:"{{after}}"},{id:"arrayify",depth:2,title:"{{arrayify}}"},{id:"before",depth:2,title:"{{before}}"},{id:"eachindex",depth:2,title:"{{eachIndex}}"},{id:"filter",depth:2,title:"{{filter}}"},{id:"first",depth:2,title:"{{first}}"},{id:"foreach",depth:2,title:"{{forEach}}"},{id:"inarray",depth:2,title:"{{inArray}}"},{id:"isarray",depth:2,title:"{{isArray}}"},{id:"itemat",depth:2,title:"{{itemAt}}"},{id:"join",depth:2,title:"{{join}}"},{id:"equalslength",depth:2,title:"{{equalsLength}}"},{id:"last",depth:2,title:"{{last}}"},{id:"length",depth:2,title:"{{length}}"},{id:"lengthequal",depth:2,title:"{{lengthEqual}}"},{id:"map",depth:2,title:"{{map}}"},{id:"pluck",depth:2,title:"{{pluck}}"},{id:"reverse",depth:2,title:"{{reverse}}"},{id:"some",depth:2,title:"{{some}}"},{id:"sort",depth:2,title:"{{sort}}"},{id:"sortby",depth:2,title:"{{sortBy}}"},{id:"withafter",depth:2,title:"{{withAfter}}"},{id:"withbefore",depth:2,title:"{{withBefore}}"},{id:"withfirst",depth:2,title:"{{withFirst}}"},{id:"withgroup",depth:2,title:"{{withGroup}}"},{id:"withlast",depth:2,title:"{{withLast}}"},{id:"withsort",depth:2,title:"{{withSort}}"},{id:"unique",depth:2,title:"{{unique}}"}],CM=[{value:"Returns all of the items in an array after the specified index. Opposite of ",paraId:0,tocIndex:1},{value:"before",paraId:1,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:"Params",paraId:2,tocIndex:1},{value:"array",paraId:3,tocIndex:1},{value:" ",paraId:3,tocIndex:1},{value:"{Array}",paraId:3,tocIndex:1},{value:": Collection",paraId:3,tocIndex:1},{value:"n",paraId:3,tocIndex:1},{value:" ",paraId:3,tocIndex:1},{value:"{Number}",paraId:3,tocIndex:1},{value:": Starting index (number of items to exclude)",paraId:3,tocIndex:1},{value:"returns",paraId:3,tocIndex:1},{value:" ",paraId:3,tocIndex:1},{value:"{Array}",paraId:3,tocIndex:1},{value:": Array exluding ",paraId:3,tocIndex:1},{value:"n",paraId:3,tocIndex:1},{value:" items.",paraId:3,tocIndex:1},{value:"Example",paraId:4,tocIndex:1},{value:` + `,paraId:2},{value:"\u5FFD\u7565\u540E\u7EED\u8D22\u52A1\u7684\u5904\u7406\u7684\u8BDD\uFF0C\u8FD9\u6837\u5C31\u5B8C\u6210\u4E86\u7533\u8BF7\u62A5\u9500\u6D41\u7A0B\u7684\u914D\u7F6E\uFF0C\u5F53\u5458\u5DE5\u586B\u5199\u62A5\u9500\u7533\u8BF7\u5E76\u63D0\u4EA4\u540E\uFF0C\u4F1A\u89E6\u53D1\u5BF9\u5E94\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5982\u679C\u8D39\u7528\u91D1\u989D\u5C0F\u4E8E 500\uFF0C\u4F1A\u81EA\u52A8\u521B\u5EFA\u8BB0\u5F55\u5E76\u7B49\u5F85\u8D22\u52A1\u8FDB\u4E00\u6B65\u5904\u7406\uFF0C\u5426\u5219\u4F1A\u7531\u4E3B\u7BA1\u5BA1\u6838\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u4E5F\u662F\u4E00\u6837\u521B\u5EFA\u8BB0\u5F55\u5E76\u4EA4\u7ED9\u8D22\u52A1\u5904\u7406\u3002",paraId:16,tocIndex:5},{value:"\u8BE5\u793A\u4F8B\u7684\u6D41\u7A0B\u4E5F\u53EF\u4EE5\u914D\u7F6E\u5728\u666E\u901A\u201C\u63D0\u4EA4\u201D\u6309\u94AE\u4E0A\uFF0C\u53EF\u4EE5\u6839\u636E\u5177\u4F53\u7684\u4E1A\u52A1\u573A\u666F\u51B3\u5B9A\u662F\u5426\u9700\u8981\u5148\u521B\u5EFA\u8BB0\u5F55\u518D\u6267\u884C\u540E\u7EED\u7684\u6D41\u7A0B\u3002",paraId:17,tocIndex:5}],dM={},iM={title:"Provider",toc:"menu",filename:"docs/en-US/plugin-samples/provider/index.md",lastUpdated:173254844e4,description:"According to the Provider Tutorial, the Provider has three main functions:"},lM=[{id:"provider",depth:2,title:"Provider"}],cM=[{value:"According to the ",paraId:0,tocIndex:0},{value:"Provider Tutorial",paraId:1,tocIndex:0},{value:", the Provider has three main functions:",paraId:0,tocIndex:0},{value:"Providing a globally shared context",paraId:2,tocIndex:0},{value:"Displaying global content",paraId:2,tocIndex:0},{value:"Intercepting and rendering based on conditions",paraId:2,tocIndex:0},{value:"For these functions, we offer the following examples:",paraId:3,tocIndex:0},{value:"Global Content Display",paraId:4,tocIndex:0},{value:"Global Context",paraId:5,tocIndex:0}],sM={},uM={title:"\u7CFB\u7EDF\u8BBE\u7F6E",toc:"menu",filename:"docs/en-US/plugins/system-settings/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},pM=[{id:"\u7CFB\u7EDF\u8BBE\u7F6E",depth:1,title:"\u7CFB\u7EDF\u8BBE\u7F6E"}],IM=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],_M={},vM={title:"\u5FEB\u901F\u5165\u95E8",toc:"menu",filename:"docs/en-US/plugins/workflow/manual/index.md",lastUpdated:173254844e4,description:"\u4ECE\u9876\u90E8\u83DC\u5355\u680F\u7684\u63D2\u4EF6\u914D\u7F6E\u83DC\u5355\u8FDB\u5165\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u7684\u7BA1\u7406\u9875\u9762\uFF1A"},mM=[{id:"\u5FEB\u901F\u5165\u95E8",depth:1,title:"\u5FEB\u901F\u5165\u95E8"},{id:"\u914D\u7F6E\u4E00\u4E2A\u5DE5\u4F5C\u6D41",depth:2,title:"\u914D\u7F6E\u4E00\u4E2A\u5DE5\u4F5C\u6D41"},{id:"\u89E6\u53D1\u5DE5\u4F5C\u6D41",depth:2,title:"\u89E6\u53D1\u5DE5\u4F5C\u6D41"},{id:"\u67E5\u770B\u6267\u884C\u5386\u53F2",depth:2,title:"\u67E5\u770B\u6267\u884C\u5386\u53F2"},{id:"\u5C0F\u7ED3",depth:2,title:"\u5C0F\u7ED3"}],hM=[{value:"\u4ECE\u9876\u90E8\u83DC\u5355\u680F\u7684\u63D2\u4EF6\u914D\u7F6E\u83DC\u5355\u8FDB\u5165\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u7684\u7BA1\u7406\u9875\u9762\uFF1A",paraId:0,tocIndex:1},{value:"\u7BA1\u7406\u754C\u9762\u4E2D\u4F1A\u5217\u51FA\u6240\u6709\u5DF2\u521B\u5EFA\u7684\u5DE5\u4F5C\u6D41\uFF1A",paraId:1,tocIndex:1},{value:"\u70B9\u51FB\u201C\u65B0\u5EFA\u201D\u6309\u94AE\uFF0C\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u5DE5\u4F5C\u6D41\uFF0C\u9009\u62E9\u6570\u636E\u8868\u4E8B\u4EF6\uFF1A",paraId:2,tocIndex:1},{value:"\u70B9\u51FB\u5217\u8868\u4E2D\u7684\u201C\u914D\u7F6E\u201D\u94FE\u63A5\uFF0C\u8FDB\u5165\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\uFF1A",paraId:3,tocIndex:1},{value:"\u7136\u540E\u70B9\u51FB\u89E6\u53D1\u5668\u7684\u5361\u7247\uFF0C\u6253\u5F00\u89E6\u53D1\u5668\u914D\u7F6E\u62BD\u5C49\uFF0C\u9009\u62E9\u4E00\u5F20\u4E4B\u524D\u521B\u5EFA\u7684\u6570\u636E\u8868\uFF08\u4F8B\u5982\u201C\u6587\u7AE0\u201D\u8868\uFF09\uFF0C\u89E6\u53D1\u65F6\u673A\u9879\u9009\u62E9\u201C\u65B0\u589E\u6570\u636E\u540E\u201D\u89E6\u53D1\uFF0C\u70B9\u51FB\u201C\u4FDD\u5B58\u201D\u6309\u94AE\uFF0C\u5B8C\u6210\u89E6\u53D1\u5668\u7684\u914D\u7F6E\uFF1A",paraId:4,tocIndex:1},{value:"\u63A5\u4E0B\u6765\u6211\u4EEC\u53EF\u4EE5\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\u6309\u94AE\u4E3A\u6D41\u7A0B\u589E\u52A0\u4E00\u4E2A\u8282\u70B9\uFF0C\u4F8B\u5982\u9009\u62E9\u4E00\u4E2A\u8FD0\u7B97\u8282\u70B9\uFF0C\u7528\u4E8E\u5C06\u89E6\u53D1\u5668\u4E2D\u7684\u6570\u636E\u7684\u201C\u6807\u9898\u201D\u5B57\u6BB5\u4E0E\u201CID\u201D\u5B57\u6BB5\u8FDB\u884C\u62FC\u63A5\u8BA1\u7B97\uFF1A",paraId:5,tocIndex:1},{value:"\u70B9\u51FB\u8282\u70B9\u5361\u7247\u6253\u5F00\u8282\u70B9\u914D\u7F6E\u62BD\u5C49\uFF0C\u4F7F\u7528 Formula.js \u63D0\u4F9B\u7684\u8FD0\u7B97\u51FD\u6570 ",paraId:6,tocIndex:1},{value:"CONCATENATE",paraId:6,tocIndex:1},{value:"\uFF0C\u62FC\u63A5\u201C\u6807\u9898\u201D\u4E0E\u201CID\u201D\u5B57\u6BB5\uFF0C\u4E24\u4E2A\u5B57\u6BB5\u901A\u8FC7\u53D8\u91CF\u9009\u62E9\u5668\u63D2\u5165\uFF1A",paraId:6,tocIndex:1},{value:"\u4E4B\u540E\u518D\u521B\u5EFA\u4E00\u4E2A\u66F4\u65B0\u6570\u636E\u8282\u70B9\uFF0C\u7528\u4E8E\u5C06\u7ED3\u679C\u4FDD\u5B58\u5230\u201C\u6807\u9898\u201D\u5B57\u6BB5\u4E2D\uFF1A",paraId:7,tocIndex:1},{value:"\u540C\u6837\u7684\u70B9\u51FB\u5361\u7247\u6253\u5F00\u66F4\u65B0\u6570\u636E\u8282\u70B9\u7684\u914D\u7F6E\u62BD\u5C49\uFF0C\u9009\u62E9\u201C\u6587\u7AE0\u201D\u8868\uFF0C\u66F4\u65B0\u7684\u6570\u636E ID \u9009\u62E9\u89E6\u53D1\u5668\u4E2D\u7684\u6570\u636E ID\uFF0C\u66F4\u65B0\u7684\u6570\u636E\u9879\u9009\u62E9\u201C\u6807\u9898\u201D\uFF0C\u66F4\u65B0\u7684\u6570\u636E\u503C\u9009\u62E9\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF1A",paraId:8,tocIndex:1},{value:"\u6700\u540E\u518D\u70B9\u51FB\u53F3\u4E0A\u89D2\u5DE5\u5177\u680F\u91CC\u7684\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\uFF0C\u5C06\u5DE5\u4F5C\u6D41\u5207\u6362\u81F3\u542F\u7528\u72B6\u6001\uFF0C\u8FD9\u6837\u5DE5\u4F5C\u6D41\u5C31\u53EF\u4EE5\u88AB\u89E6\u53D1\u6267\u884C\u4E86\u3002",paraId:9,tocIndex:1},{value:"\u56DE\u5230\u7CFB\u7EDF\u4E3B\u754C\u9762\uFF0C\u901A\u8FC7\u6587\u7AE0\u533A\u5757\u521B\u5EFA\u4E00\u7BC7\u6587\u7AE0\uFF0C\u586B\u5165\u6587\u7AE0\u6807\u9898\uFF1A",paraId:10,tocIndex:2},{value:"\u63D0\u4EA4\u540E\u5237\u65B0\u533A\u5757\u540E\u53EF\u4EE5\u770B\u5230\u6587\u7AE0\u6807\u9898\u88AB\u81EA\u52A8\u66F4\u65B0\u4E3A\u201C\u6587\u7AE0\u6807\u9898 + \u6587\u7AE0 ID\u201D\u7684\u5F62\u5F0F\uFF1A",paraId:11,tocIndex:2},{value:"\u7531\u4E8E\u6570\u636E\u8868\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\u662F\u5F02\u6B65\u6267\u884C\u7684\uFF0C\u6240\u4EE5\u5728\u63D0\u4EA4\u6570\u636E\u540E\u7684\u754C\u9762\u4E2D\u65E0\u6CD5\u9A6C\u4E0A\u770B\u5230\u6570\u636E\u66F4\u65B0\uFF0C\u4F46\u7247\u523B\u4E4B\u540E\u5237\u65B0\u9875\u9762\u6216\u533A\u5757\u540E\u5373\u53EF\u770B\u5230\u66F4\u65B0\u7684\u5185\u5BB9\u3002",paraId:12},{value:"\u521A\u624D\u7684\u5DE5\u4F5C\u6D41\u5DF2\u7ECF\u6210\u529F\u89E6\u53D1\u6267\u884C\u4E86\u4E00\u6B21\uFF0C\u6211\u4EEC\u53EF\u4EE5\u56DE\u5230\u5DE5\u4F5C\u6D41\u7684\u7BA1\u7406\u754C\u9762\u4E2D\u67E5\u770B\u5230\u5BF9\u5E94\u7684\u6267\u884C\u5386\u53F2\uFF1A",paraId:13,tocIndex:3},{value:"\u5DE5\u4F5C\u6D41\u5217\u8868\u4E2D\u53EF\u4EE5\u770B\u5230\u8FD9\u4E2A\u5DE5\u4F5C\u6D41\u5DF2\u7ECF\u4EA7\u751F\u4E86\u4E00\u6B21\u6267\u884C\u5386\u53F2\uFF0C\u70B9\u51FB\u6B21\u6570\u7684\u94FE\u63A5\uFF0C\u53EF\u4EE5\u6253\u5F00\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5386\u53F2\u8BB0\u5F55\uFF1A",paraId:14,tocIndex:3},{value:"\u518D\u70B9\u51FB\u201C\u67E5\u770B\u201D\u94FE\u63A5\u53EF\u4EE5\u8FDB\u5165\u5230\u5F53\u6B21\u6267\u884C\u7684\u8BE6\u60C5\u9875\u9762\uFF0C\u53EF\u4EE5\u770B\u5230\u6BCF\u4E2A\u8282\u70B9\u7684\u6267\u884C\u72B6\u6001\u548C\u7ED3\u679C\u6570\u636E\uFF1A",paraId:15,tocIndex:3},{value:"\u89E6\u53D1\u5668\u7684\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u548C\u8282\u70B9\u6267\u884C\u7684\u7ED3\u679C\u6570\u636E\u90FD\u53EF\u4EE5\u901A\u8FC7\u70B9\u51FB\u5BF9\u5E94\u5361\u7247\u53F3\u4E0A\u89D2\u7684\u72B6\u6001\u6309\u94AE\u6253\u5F00\u67E5\u770B\uFF0C\u6BD4\u5982\u6211\u4EEC\u67E5\u770B\u5176\u4E2D\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\uFF1A",paraId:16,tocIndex:3},{value:"\u53EF\u4EE5\u770B\u5230\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u4E2D\u5305\u542B\u4E86\u8FD0\u7B97\u540E\u7684\u6807\u9898\uFF0C\u8FD9\u4E2A\u6807\u9898\u5C31\u662F\u540E\u7EED\u66F4\u65B0\u6570\u636E\u8282\u70B9\u66F4\u65B0\u7684\u6570\u636E\u3002",paraId:17,tocIndex:3},{value:"\u901A\u8FC7\u4E0A\u9762\u7684\u6B65\u9AA4\uFF0C\u6211\u4EEC\u5DF2\u7ECF\u5B8C\u6210\u4E86\u4E00\u4E2A\u7B80\u5355\u7684\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u548C\u89E6\u53D1\uFF0C\u4E5F\u63A5\u89E6\u4E86\u4EE5\u4E0B\u51E0\u4E2A\u57FA\u7840\u6982\u5FF5\uFF1A",paraId:18,tocIndex:4},{value:"\u5DE5\u4F5C\u6D41",paraId:19,tocIndex:4},{value:"\uFF1A\u7528\u4E8E\u5B9A\u4E49\u6D41\u7A0B\u7684\u57FA\u672C\u4FE1\u606F\uFF0C\u5305\u62EC\u540D\u79F0\u3001\u89E6\u53D1\u5668\u7C7B\u578B\u548C\u542F\u7528\u72B6\u6001\u7B49\uFF0C\u53EF\u5728\u5176\u4E2D\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u6267\u884C\u8282\u70B9\uFF0C\u662F\u627F\u8F7D\u6D41\u7A0B\u7684\u5B9E\u4F53\u3002",paraId:19,tocIndex:4},{value:"\u89E6\u53D1\u5668",paraId:19,tocIndex:4},{value:"\uFF1A\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u90FD\u5305\u542B\u4E00\u4E2A\u89E6\u53D1\u5668\uFF0C\u53EF\u914D\u7F6E\u4E3A\u5DE5\u4F5C\u6D41\u88AB\u89E6\u53D1\u7684\u7279\u5B9A\u6761\u4EF6\uFF0C\u662F\u6D41\u7A0B\u7684\u5165\u53E3\u3002",paraId:19,tocIndex:4},{value:"\u8282\u70B9",paraId:19,tocIndex:4},{value:"\uFF1A\u8282\u70B9\u662F\u5DE5\u4F5C\u6D41\u5185\u7684\u6267\u884C\u7279\u5B9A\u64CD\u4F5C\u7684\u6307\u4EE4\u5355\u5143\uFF0C\u5DE5\u4F5C\u6D41\u4E2D\u591A\u4E2A\u8282\u70B9\u4E4B\u95F4\u901A\u8FC7\u4E0A\u4E0B\u6E38\u5173\u7CFB\u7EC4\u6210\u5B8C\u6574\u7684\u6267\u884C\u6D41\u7A0B\u3002",paraId:19,tocIndex:4},{value:"\u6267\u884C\u8BA1\u5212",paraId:19,tocIndex:4},{value:"\uFF1A\u6267\u884C\u8BA1\u5212\u662F\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\u7684\u5177\u4F53\u6267\u884C\u5BF9\u8C61\uFF0C\u4E5F\u79F0\u4E3A\u6267\u884C\u8BB0\u5F55\u6216\u6267\u884C\u5386\u53F2\uFF0C\u5305\u542B\u4E86\u6267\u884C\u7684\u72B6\u6001\u3001\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u7B49\u4FE1\u606F\u3002\u5176\u4E2D\u9488\u5BF9\u6BCF\u4E2A\u8282\u70B9\u4E5F\u6709\u5BF9\u5E94\u7684\u6267\u884C\u7ED3\u679C\uFF0C\u5305\u542B\u4E86\u8282\u70B9\u6267\u884C\u540E\u7684\u72B6\u6001\u548C\u7ED3\u679C\u6570\u636E\u4FE1\u606F\u3002",paraId:19,tocIndex:4},{value:"\u66F4\u6DF1\u5165\u7684\u4F7F\u7528\u53EF\u4EE5\u8FDB\u4E00\u6B65\u53C2\u8003\u4EE5\u4E0B\u5185\u5BB9\uFF1A",paraId:20,tocIndex:4},{value:"\u8FDB\u9636\u4F7F\u7528",paraId:21,tocIndex:4},{value:"\u89E6\u53D1\u5668\u4ECB\u7ECD",paraId:22,tocIndex:4},{value:"\u8282\u70B9\u4ECB\u7ECD",paraId:23,tocIndex:4}],fM={},xM={title:"Workflow Manual",toc:"menu",filename:"docs/en-US/plugins/workflow-manual/index.md",lastUpdated:173254844e4},gM=[],bM=[],yM={},wM={title:"Distinctive features",toc:"menu",filename:"docs/en-US/welcome/introduction/features.md",lastUpdated:173254844e4,description:"Most form-, table-, or process-driven no-code products create data structures directly in the user interface, such as Airtable, where adding a new column to a table is adding a new field. This has the advantage of simplicity of use, but the disadvantage of limited functionality and flexibility to meet the needs of more complex scenarios."},kM=[{id:"distinctive-features",depth:1,title:"Distinctive features"},{id:"1-model-driven-separate-user-interface-from-data-structure",depth:2,title:'1. Model-driven, separate "user interface" from "data structure"'},{id:"2-what-you-see-is-what-you-get",depth:2,title:"2. What you see is what you get"},{id:"3-functions-as-plugins",depth:2,title:"3. Functions as plugins"}],SM=[{value:"Most form-, table-, or process-driven no-code products create data structures directly in the user interface, such as Airtable, where adding a new column to a table is adding a new field. This has the advantage of simplicity of use, but the disadvantage of limited functionality and flexibility to meet the needs of more complex scenarios.",paraId:0,tocIndex:1},{value:"NocoBase adopts the design idea of separating the data structure from the user interface, allowing you to create any number of blocks (data views) for the data collections, with different type, styles, content, and actions in each block. This balances the simplicity of no-code operation with the flexibility of native development.",paraId:1,tocIndex:1},{value:"NocoBase enables the development of complex and distinctive business systems, but this does not mean that complex and specialized operations are required. With a single click, configuration options are displayed on the usage interface, and administrators with system configuration privileges can directly configure the user interface in a WYSIWYG manner.",paraId:2,tocIndex:2},{value:"NocoBase adopts plugin architecture, all new functions can be realized by developing and installing plugins, and expanding the functions is as easy as installing an APP on your phone.",paraId:3,tocIndex:3}],UM={},PM={title:"Array",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/array.md",lastUpdated:173254844e4,description:"Returns all of the items in an array after the specified index. Opposite of before."},TM=[{id:"array",depth:1,title:"Array"},{id:"after",depth:2,title:"{{after}}"},{id:"arrayify",depth:2,title:"{{arrayify}}"},{id:"before",depth:2,title:"{{before}}"},{id:"eachindex",depth:2,title:"{{eachIndex}}"},{id:"filter",depth:2,title:"{{filter}}"},{id:"first",depth:2,title:"{{first}}"},{id:"foreach",depth:2,title:"{{forEach}}"},{id:"inarray",depth:2,title:"{{inArray}}"},{id:"isarray",depth:2,title:"{{isArray}}"},{id:"itemat",depth:2,title:"{{itemAt}}"},{id:"join",depth:2,title:"{{join}}"},{id:"equalslength",depth:2,title:"{{equalsLength}}"},{id:"last",depth:2,title:"{{last}}"},{id:"length",depth:2,title:"{{length}}"},{id:"lengthequal",depth:2,title:"{{lengthEqual}}"},{id:"map",depth:2,title:"{{map}}"},{id:"pluck",depth:2,title:"{{pluck}}"},{id:"reverse",depth:2,title:"{{reverse}}"},{id:"some",depth:2,title:"{{some}}"},{id:"sort",depth:2,title:"{{sort}}"},{id:"sortby",depth:2,title:"{{sortBy}}"},{id:"withafter",depth:2,title:"{{withAfter}}"},{id:"withbefore",depth:2,title:"{{withBefore}}"},{id:"withfirst",depth:2,title:"{{withFirst}}"},{id:"withgroup",depth:2,title:"{{withGroup}}"},{id:"withlast",depth:2,title:"{{withLast}}"},{id:"withsort",depth:2,title:"{{withSort}}"},{id:"unique",depth:2,title:"{{unique}}"}],CM=[{value:"Returns all of the items in an array after the specified index. Opposite of ",paraId:0,tocIndex:1},{value:"before",paraId:1,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:"Params",paraId:2,tocIndex:1},{value:"array",paraId:3,tocIndex:1},{value:" ",paraId:3,tocIndex:1},{value:"{Array}",paraId:3,tocIndex:1},{value:": Collection",paraId:3,tocIndex:1},{value:"n",paraId:3,tocIndex:1},{value:" ",paraId:3,tocIndex:1},{value:"{Number}",paraId:3,tocIndex:1},{value:": Starting index (number of items to exclude)",paraId:3,tocIndex:1},{value:"returns",paraId:3,tocIndex:1},{value:" ",paraId:3,tocIndex:1},{value:"{Array}",paraId:3,tocIndex:1},{value:": Array exluding ",paraId:3,tocIndex:1},{value:"n",paraId:3,tocIndex:1},{value:" items.",paraId:3,tocIndex:1},{value:"Example",paraId:4,tocIndex:1},{value:` {{after array 1}} `,paraId:5,tocIndex:1},{value:"Cast the given ",paraId:6,tocIndex:2},{value:"value",paraId:6,tocIndex:2},{value:" to an array.",paraId:6,tocIndex:2},{value:"Params",paraId:7,tocIndex:2},{value:"value",paraId:8,tocIndex:2},{value:" ",paraId:8,tocIndex:2},{value:"{any}",paraId:8,tocIndex:2},{value:"returns",paraId:8,tocIndex:2},{value:" ",paraId:8,tocIndex:2},{value:"{Array}",paraId:8,tocIndex:2},{value:"Example",paraId:9,tocIndex:2},{value:`{{arrayify "foo"}} @@ -14350,7 +14403,7 @@ fictitious function that duplicates letters --> `,paraId:136,tocIndex:27},{value:"Block helper that return an array with all duplicate values removed. Best used along with a ",paraId:137,tocIndex:28},{value:"each",paraId:138,tocIndex:28},{value:" helper.",paraId:137,tocIndex:28},{value:"Params",paraId:139,tocIndex:28},{value:"array",paraId:140,tocIndex:28},{value:" ",paraId:140,tocIndex:28},{value:"{Array}",paraId:140,tocIndex:28},{value:"options",paraId:140,tocIndex:28},{value:" ",paraId:140,tocIndex:28},{value:"{Object}",paraId:140,tocIndex:28},{value:"returns",paraId:140,tocIndex:28},{value:" ",paraId:140,tocIndex:28},{value:"{Array}",paraId:140,tocIndex:28},{value:"Example",paraId:141,tocIndex:28},{value:` {{#each (unique array)}}{{.}}{{/each}} -`,paraId:142,tocIndex:28}],AM={},qM={title:"Handlebars Helpers",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/index.md",lastUpdated:1732240239e3},EM=[{id:"handlebars-helpers",depth:1,title:"Handlebars Helpers"}],DM=[{value:"Category",paraId:0,tocIndex:0},{value:"Description",paraId:0,tocIndex:0},{value:"Core",paraId:1,tocIndex:0},{value:"Built-in helpers",paraId:0,tocIndex:0},{value:"Array",paraId:2,tocIndex:0},{value:"Operations and methods related to arrays",paraId:0,tocIndex:0},{value:"Comparison",paraId:3,tocIndex:0},{value:"Comparison operators and related methods",paraId:0,tocIndex:0},{value:"Date",paraId:4,tocIndex:0},{value:"Operations and methods related to date and time handling",paraId:0,tocIndex:0},{value:"HTML",paraId:5,tocIndex:0},{value:"Content related to HTML documents and elements",paraId:0,tocIndex:0},{value:"I18n",paraId:6,tocIndex:0},{value:"Support for internationalization and multilingual handling",paraId:0,tocIndex:0},{value:"Math",paraId:7,tocIndex:0},{value:"Mathematical functions and calculations",paraId:0,tocIndex:0},{value:"Number",paraId:8,tocIndex:0},{value:"Content related to number handling and formatting",paraId:0,tocIndex:0},{value:"Object",paraId:9,tocIndex:0},{value:"Methods related to object operations and properties",paraId:0,tocIndex:0},{value:"Path",paraId:10,tocIndex:0},{value:"Path operations and content related to the file system",paraId:0,tocIndex:0},{value:"Regex",paraId:11,tocIndex:0},{value:"Regular expressions and their usage",paraId:0,tocIndex:0},{value:"String",paraId:12,tocIndex:0},{value:"Methods related to string manipulation and operations",paraId:0,tocIndex:0},{value:"URL",paraId:13,tocIndex:0},{value:"Content related to URL parsing and construction",paraId:0,tocIndex:0}],OM={},RM={title:"Regex",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/regex.md",lastUpdated:1732240239e3,description:"Convert the given string to a regular expression."},MM=[{id:"regex",depth:1,title:"Regex"},{id:"toregex",depth:2,title:"{{toRegex}}"},{id:"test",depth:2,title:"{{test}}"}],LM=[{value:"Convert the given string to a regular expression.",paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"str",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{RegExp}",paraId:2,tocIndex:1},{value:"Example",paraId:3,tocIndex:1},{value:`{{toRegex "foo"}} +`,paraId:142,tocIndex:28}],AM={},qM={title:"Handlebars Helpers",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/index.md",lastUpdated:173254844e4},EM=[{id:"handlebars-helpers",depth:1,title:"Handlebars Helpers"}],DM=[{value:"Category",paraId:0,tocIndex:0},{value:"Description",paraId:0,tocIndex:0},{value:"Core",paraId:1,tocIndex:0},{value:"Built-in helpers",paraId:0,tocIndex:0},{value:"Array",paraId:2,tocIndex:0},{value:"Operations and methods related to arrays",paraId:0,tocIndex:0},{value:"Comparison",paraId:3,tocIndex:0},{value:"Comparison operators and related methods",paraId:0,tocIndex:0},{value:"Date",paraId:4,tocIndex:0},{value:"Operations and methods related to date and time handling",paraId:0,tocIndex:0},{value:"HTML",paraId:5,tocIndex:0},{value:"Content related to HTML documents and elements",paraId:0,tocIndex:0},{value:"I18n",paraId:6,tocIndex:0},{value:"Support for internationalization and multilingual handling",paraId:0,tocIndex:0},{value:"Math",paraId:7,tocIndex:0},{value:"Mathematical functions and calculations",paraId:0,tocIndex:0},{value:"Number",paraId:8,tocIndex:0},{value:"Content related to number handling and formatting",paraId:0,tocIndex:0},{value:"Object",paraId:9,tocIndex:0},{value:"Methods related to object operations and properties",paraId:0,tocIndex:0},{value:"Path",paraId:10,tocIndex:0},{value:"Path operations and content related to the file system",paraId:0,tocIndex:0},{value:"Regex",paraId:11,tocIndex:0},{value:"Regular expressions and their usage",paraId:0,tocIndex:0},{value:"String",paraId:12,tocIndex:0},{value:"Methods related to string manipulation and operations",paraId:0,tocIndex:0},{value:"URL",paraId:13,tocIndex:0},{value:"Content related to URL parsing and construction",paraId:0,tocIndex:0}],OM={},RM={title:"Regex",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/regex.md",lastUpdated:173254844e4,description:"Convert the given string to a regular expression."},MM=[{id:"regex",depth:1,title:"Regex"},{id:"toregex",depth:2,title:"{{toRegex}}"},{id:"test",depth:2,title:"{{test}}"}],LM=[{value:"Convert the given string to a regular expression.",paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"str",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{RegExp}",paraId:2,tocIndex:1},{value:"Example",paraId:3,tocIndex:1},{value:`{{toRegex "foo"}} `,paraId:4,tocIndex:1},{value:"Returns true if the given ",paraId:5,tocIndex:2},{value:"str",paraId:5,tocIndex:2},{value:" matches the given regex. A regex can be passed on the context, or using the ",paraId:5,tocIndex:2},{value:"toRegex",paraId:6,tocIndex:2},{value:" helper as a subexpression.",paraId:5,tocIndex:2},{value:"Params",paraId:7,tocIndex:2},{value:"str",paraId:8,tocIndex:2},{value:" ",paraId:8,tocIndex:2},{value:"{String}",paraId:8,tocIndex:2},{value:"returns",paraId:8,tocIndex:2},{value:" ",paraId:8,tocIndex:2},{value:"{RegExp}",paraId:8,tocIndex:2},{value:"Example",paraId:9,tocIndex:2},{value:`{{test "bar" (toRegex "foo")}} @@ -14461,7 +14514,7 @@ const app = new Application({ plugins: [PluginSampleProvider], }); -export default app.getRootComponent();`},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},"react-router":{type:"NPM",value:"6.3.0"},"react-router-dom":{type:"NPM",value:"6.3.0"}}}}},zM={title:"Provider component",toc:"menu",filename:"docs/en-US/development/client/providers.md",lastUpdated:1732240239e3,description:"In the NocoBase client application, the Provider component is defined in the outer layer, with the core structure as follows:"},FM=[{id:"provider-component",depth:1,title:"Provider component"},{id:"providing-a-globally-shared-context",depth:2,title:"Providing a globally shared context"},{id:"providing-global-content-display",depth:2,title:"Providing global content display"},{id:"intercepting-functionality",depth:2,title:"Intercepting functionality"}],BM=[{value:"Provider component",paraId:0},{value:"In the NocoBase client application, the ",paraId:1,tocIndex:0},{value:"Provider",paraId:1,tocIndex:0},{value:" component is defined in the outer layer, with the core structure as follows:",paraId:1,tocIndex:0},{value:` +export default app.getRootComponent();`},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"},"react-router":{type:"NPM",value:"6.3.0"},"react-router-dom":{type:"NPM",value:"6.3.0"}}}}},zM={title:"Provider component",toc:"menu",filename:"docs/en-US/development/client/providers.md",lastUpdated:173254844e4,description:"In the NocoBase client application, the Provider component is defined in the outer layer, with the core structure as follows:"},FM=[{id:"provider-component",depth:1,title:"Provider component"},{id:"providing-a-globally-shared-context",depth:2,title:"Providing a globally shared context"},{id:"providing-global-content-display",depth:2,title:"Providing global content display"},{id:"intercepting-functionality",depth:2,title:"Intercepting functionality"}],BM=[{value:"Provider component",paraId:0},{value:"In the NocoBase client application, the ",paraId:1,tocIndex:0},{value:"Provider",paraId:1,tocIndex:0},{value:" component is defined in the outer layer, with the core structure as follows:",paraId:1,tocIndex:0},{value:` {' '} {/* Context Provider for routes */} @@ -14472,7 +14525,7 @@ export default app.getRootComponent();`},"@nocobase/client":{type:"NPM",value:"0 -`,paraId:2,tocIndex:0},{value:"Since it is defined at the outer layer, the ",paraId:3,tocIndex:0},{value:"Provider",paraId:3,tocIndex:0},{value:" component serves the following purposes:",paraId:3,tocIndex:0},{value:"Provides globally shared context, rendering ",paraId:4,tocIndex:0},{value:"props.children",paraId:4,tocIndex:0},{value:" when needed.",paraId:4,tocIndex:0},{value:"Displays global content by rendering ",paraId:4,tocIndex:0},{value:"props.children",paraId:4,tocIndex:0},{value:".",paraId:4,tocIndex:0},{value:"Acts as an interceptor, conditionally rendering ",paraId:4,tocIndex:0},{value:"props.children",paraId:4,tocIndex:0},{value:".",paraId:4,tocIndex:0},{value:"Use ",paraId:5,tocIndex:1},{value:"createContext",paraId:5,tocIndex:1},{value:" to define a context and ",paraId:5,tocIndex:1},{value:"useContext",paraId:5,tocIndex:1},{value:" to retrieve the defined context:",paraId:5,tocIndex:1}],jM={},HM={title:"Languages",toc:"menu",filename:"docs/en-US/development/others/languages.md",lastUpdated:1732240239e3},WM=[{id:"languages",depth:1,title:"Languages"}],$M=[{value:`{ +`,paraId:2,tocIndex:0},{value:"Since it is defined at the outer layer, the ",paraId:3,tocIndex:0},{value:"Provider",paraId:3,tocIndex:0},{value:" component serves the following purposes:",paraId:3,tocIndex:0},{value:"Provides globally shared context, rendering ",paraId:4,tocIndex:0},{value:"props.children",paraId:4,tocIndex:0},{value:" when needed.",paraId:4,tocIndex:0},{value:"Displays global content by rendering ",paraId:4,tocIndex:0},{value:"props.children",paraId:4,tocIndex:0},{value:".",paraId:4,tocIndex:0},{value:"Acts as an interceptor, conditionally rendering ",paraId:4,tocIndex:0},{value:"props.children",paraId:4,tocIndex:0},{value:".",paraId:4,tocIndex:0},{value:"Use ",paraId:5,tocIndex:1},{value:"createContext",paraId:5,tocIndex:1},{value:" to define a context and ",paraId:5,tocIndex:1},{value:"useContext",paraId:5,tocIndex:1},{value:" to retrieve the defined context:",paraId:5,tocIndex:1}],jM={},HM={title:"Languages",toc:"menu",filename:"docs/en-US/development/others/languages.md",lastUpdated:173254844e4},WM=[{id:"languages",depth:1,title:"Languages"}],$M=[{value:`{ 'ar-EG': { label: '\u0627\u0644\u0639\u0631\u0628\u064A\u0629' }, 'az-AZ': { label: 'Az\u0259rbaycan dili' }, 'bg-BG': { label: '\u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438' }, @@ -14541,7 +14594,7 @@ export default app.getRootComponent();`},"@nocobase/client":{type:"NPM",value:"0 'zh-HK': { label: '\u7E41\u9AD4\u4E2D\u6587\uFF08\u9999\u6E2F\uFF09' }, 'zh-TW': { label: '\u7E41\u9AD4\u4E2D\u6587\uFF08\u53F0\u6E7E\uFF09' }, } -`,paraId:0,tocIndex:0}],GM={},VM={title:"Migration",toc:"menu",filename:"docs/en-US/development/server/migration.md",lastUpdated:1732240239e3,description:"During the update and iteration process of plugins, there might be some incompatible changes. These incompatible upgrades can be handled by writing migration files, which are triggered by the nocobase upgrade command. The relevant process is as follows:"},KM=[{id:"migration",depth:1,title:"Migration"},{id:"creating-migration-files",depth:2,title:"Creating migration files"},{id:"triggering-migration",depth:2,title:"Triggering migration"},{id:"testing-migration",depth:2,title:"Testing migration"}],ZM=[{value:"During the update and iteration process of plugins, there might be some incompatible changes. These incompatible upgrades can be handled by writing migration files, which are triggered by the ",paraId:0,tocIndex:0},{value:"nocobase upgrade",paraId:0,tocIndex:0},{value:" command. The relevant process is as follows:",paraId:0,tocIndex:0},{value:"The migrations for upgrades are divided into beforeLoad, afterSync, and afterLoad:",paraId:1,tocIndex:0},{value:`beforeLoad: Executed before the loading of each module, divided into three phases: +`,paraId:0,tocIndex:0}],GM={},VM={title:"Migration",toc:"menu",filename:"docs/en-US/development/server/migration.md",lastUpdated:173254844e4,description:"During the update and iteration process of plugins, there might be some incompatible changes. These incompatible upgrades can be handled by writing migration files, which are triggered by the nocobase upgrade command. The relevant process is as follows:"},KM=[{id:"migration",depth:1,title:"Migration"},{id:"creating-migration-files",depth:2,title:"Creating migration files"},{id:"triggering-migration",depth:2,title:"Triggering migration"},{id:"testing-migration",depth:2,title:"Testing migration"}],ZM=[{value:"During the update and iteration process of plugins, there might be some incompatible changes. These incompatible upgrades can be handled by writing migration files, which are triggered by the ",paraId:0,tocIndex:0},{value:"nocobase upgrade",paraId:0,tocIndex:0},{value:" command. The relevant process is as follows:",paraId:0,tocIndex:0},{value:"The migrations for upgrades are divided into beforeLoad, afterSync, and afterLoad:",paraId:1,tocIndex:0},{value:`beforeLoad: Executed before the loading of each module, divided into three phases: `,paraId:2,tocIndex:0},{value:"Before the loading of the core module",paraId:3,tocIndex:0},{value:"Before the loading of preset plugins",paraId:3,tocIndex:0},{value:"Before the loading of other plugins",paraId:3,tocIndex:0},{value:`afterSync: After the synchronization of table configurations with the database, divided into three phases: `,paraId:2,tocIndex:0},{value:"After the synchronization of the core tables with the database",paraId:4,tocIndex:0},{value:"After the synchronization of the preset plugins' tables with the database",paraId:4,tocIndex:0},{value:"After the synchronization of other plugins' tables with the database",paraId:4,tocIndex:0},{value:"afterLoad: Executed after all applications have been loaded",paraId:2,tocIndex:0},{value:"Create migration files through the create-migration command",paraId:5,tocIndex:1},{value:`yarn nocobase create-migration -h @@ -14588,7 +14641,7 @@ describe('test example', () => { // coding... }); }); -`,paraId:13,tocIndex:3}],YM={},QM={title:"Telemetry",toc:"menu",filename:"docs/en-US/development/server/telemetry.md",lastUpdated:1732240239e3,description:"The telemetry module of NocoBase is encapsulated based on OpenTelemetry. This article introduces how to use the telemetry module to collect Trace and Metric data to enhance the observability of the NocoBase system."},JM=[{id:"telemetry",depth:1,title:"Telemetry"},{id:"instrumentation",depth:2,title:"Instrumentation"},{id:"metrics",depth:3,title:"Metrics"},{id:"traces",depth:3,title:"Traces"},{id:"libraries",depth:3,title:"Libraries"},{id:"collection",depth:2,title:"Collection"},{id:"metrics-1",depth:3,title:"Metrics"},{id:"traces-1",depth:3,title:"Traces"}],XM=[{value:"The telemetry module of NocoBase is encapsulated based on ",paraId:0},{value:"OpenTelemetry",paraId:0},{value:". This article introduces how to use the telemetry module to collect Trace and Metric data to enhance the observability of the NocoBase system.",paraId:0},{value:"NocoBase needs to be configured with the environment variable ",paraId:1},{value:"TELEMETRY_ENABLED=true",paraId:1},{value:" before starting to enable telemetry data collection. See other configurations: ",paraId:1},{value:"Environment Variables - Telemetry",paraId:2},{value:".",paraId:1},{value:`const meter = app.telemetry.metric.getMeter(); +`,paraId:13,tocIndex:3}],YM={},QM={title:"Telemetry",toc:"menu",filename:"docs/en-US/development/server/telemetry.md",lastUpdated:173254844e4,description:"The telemetry module of NocoBase is encapsulated based on OpenTelemetry. This article introduces how to use the telemetry module to collect Trace and Metric data to enhance the observability of the NocoBase system."},JM=[{id:"telemetry",depth:1,title:"Telemetry"},{id:"instrumentation",depth:2,title:"Instrumentation"},{id:"metrics",depth:3,title:"Metrics"},{id:"traces",depth:3,title:"Traces"},{id:"libraries",depth:3,title:"Libraries"},{id:"collection",depth:2,title:"Collection"},{id:"metrics-1",depth:3,title:"Metrics"},{id:"traces-1",depth:3,title:"Traces"}],XM=[{value:"The telemetry module of NocoBase is encapsulated based on ",paraId:0},{value:"OpenTelemetry",paraId:0},{value:". This article introduces how to use the telemetry module to collect Trace and Metric data to enhance the observability of the NocoBase system.",paraId:0},{value:"NocoBase needs to be configured with the environment variable ",paraId:1},{value:"TELEMETRY_ENABLED=true",paraId:1},{value:" before starting to enable telemetry data collection. See other configurations: ",paraId:1},{value:"Environment Variables - Telemetry",paraId:2},{value:".",paraId:1},{value:`const meter = app.telemetry.metric.getMeter(); const counter = meter.createCounter('event_counter', {}); counter.add(1); `,paraId:3,tocIndex:2},{value:"References:",paraId:4,tocIndex:2},{value:"https://opentelemetry.io/docs/instrumentation/js/manual/#acquiring-a-meter",paraId:5,tocIndex:2},{value:`const tracer = app.telemetry.trace.getTracer(); @@ -14640,7 +14693,7 @@ class TraceSpanProcessorPlugin extends Plugin { }); } } -`,paraId:15,tocIndex:7},{value:"References:",paraId:16,tocIndex:7},{value:"https://opentelemetry.io/docs/instrumentation/js/exporters",paraId:17,tocIndex:7}],eL={},aL={title:"Export",toc:"menu",filename:"docs/en-US/handbook/action-export/index.md",lastUpdated:1732240239e3,description:"This plugin comes pre-installed, so no additional installation steps are required."},tL=[{id:"export",depth:1,title:"Export"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"},{id:"exportable-fields",depth:3,title:"Exportable Fields"}],nL=[{value:"This plugin comes pre-installed, so no additional installation steps are required.",paraId:0,tocIndex:2},{value:"First Level: Displays all fields of the current collection.",paraId:1,tocIndex:4},{value:"Second Level: If the field is a relational type, you'll need to select fields from the related table.",paraId:1,tocIndex:4},{value:"Third Level: Only up to three levels of relationships are supported. Fields in the final relational level won't be shown.",paraId:1,tocIndex:4}],oL={},rL={title:"Import Data",toc:"menu",filename:"docs/en-US/handbook/action-import/index.md",lastUpdated:1732240239e3,description:"Numeric and percentage values are supported, while entries like N/A or - will be excluded."},dL=[{id:"import-data",depth:1,title:"Import Data"},{id:"overview",depth:2,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"import-guidelines",depth:2,title:"Import Guidelines"},{id:"numeric-fields",depth:3,title:"Numeric Fields"},{id:"boolean-fields",depth:3,title:"Boolean Fields"},{id:"date-fields",depth:3,title:"Date Fields"},{id:"select-fields",depth:3,title:"Select Fields"},{id:"chinese-administrative-region-fields",depth:3,title:"Chinese Administrative Region Fields"},{id:"attachment-fields",depth:3,title:"Attachment Fields"},{id:"relationship-fields",depth:3,title:"Relationship Fields"},{id:"json-fields",depth:3,title:"JSON Fields"},{id:"map-geometry-fields",depth:3,title:"Map Geometry Fields"},{id:"custom-import-format",depth:2,title:"Custom Import Format"},{id:"example-import",depth:3,title:"Example Import"}],iL=[{value:"Numeric and percentage values are supported, while entries like ",paraId:0,tocIndex:4},{value:"N/A",paraId:0,tocIndex:4},{value:" or ",paraId:0,tocIndex:4},{value:"-",paraId:0,tocIndex:4},{value:" will be excluded.",paraId:0,tocIndex:4},{value:"Number 1",paraId:1,tocIndex:4},{value:"Percentage",paraId:1,tocIndex:4},{value:"Number 2",paraId:1,tocIndex:4},{value:"Number 3",paraId:1,tocIndex:4},{value:"123",paraId:1,tocIndex:4},{value:"25%",paraId:1,tocIndex:4},{value:"N/A",paraId:1,tocIndex:4},{value:"-",paraId:1,tocIndex:4},{value:"After conversion to JSON:",paraId:2,tocIndex:4},{value:`{ +`,paraId:15,tocIndex:7},{value:"References:",paraId:16,tocIndex:7},{value:"https://opentelemetry.io/docs/instrumentation/js/exporters",paraId:17,tocIndex:7}],eL={},aL={title:"Export",toc:"menu",filename:"docs/en-US/handbook/action-export/index.md",lastUpdated:173254844e4,description:"This plugin comes pre-installed, so no additional installation steps are required."},tL=[{id:"export",depth:1,title:"Export"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"operation-configuration-items",depth:2,title:"Operation Configuration Items"},{id:"exportable-fields",depth:3,title:"Exportable Fields"}],nL=[{value:"This plugin comes pre-installed, so no additional installation steps are required.",paraId:0,tocIndex:2},{value:"First Level: Displays all fields of the current collection.",paraId:1,tocIndex:4},{value:"Second Level: If the field is a relational type, you'll need to select fields from the related table.",paraId:1,tocIndex:4},{value:"Third Level: Only up to three levels of relationships are supported. Fields in the final relational level won't be shown.",paraId:1,tocIndex:4}],oL={},rL={title:"Import Data",toc:"menu",filename:"docs/en-US/handbook/action-import/index.md",lastUpdated:173254844e4,description:"Numeric and percentage values are supported, while entries like N/A or - will be excluded."},dL=[{id:"import-data",depth:1,title:"Import Data"},{id:"overview",depth:2,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"import-guidelines",depth:2,title:"Import Guidelines"},{id:"numeric-fields",depth:3,title:"Numeric Fields"},{id:"boolean-fields",depth:3,title:"Boolean Fields"},{id:"date-fields",depth:3,title:"Date Fields"},{id:"select-fields",depth:3,title:"Select Fields"},{id:"chinese-administrative-region-fields",depth:3,title:"Chinese Administrative Region Fields"},{id:"attachment-fields",depth:3,title:"Attachment Fields"},{id:"relationship-fields",depth:3,title:"Relationship Fields"},{id:"json-fields",depth:3,title:"JSON Fields"},{id:"map-geometry-fields",depth:3,title:"Map Geometry Fields"},{id:"custom-import-format",depth:2,title:"Custom Import Format"},{id:"example-import",depth:3,title:"Example Import"}],iL=[{value:"Numeric and percentage values are supported, while entries like ",paraId:0,tocIndex:4},{value:"N/A",paraId:0,tocIndex:4},{value:" or ",paraId:0,tocIndex:4},{value:"-",paraId:0,tocIndex:4},{value:" will be excluded.",paraId:0,tocIndex:4},{value:"Number 1",paraId:1,tocIndex:4},{value:"Percentage",paraId:1,tocIndex:4},{value:"Number 2",paraId:1,tocIndex:4},{value:"Number 3",paraId:1,tocIndex:4},{value:"123",paraId:1,tocIndex:4},{value:"25%",paraId:1,tocIndex:4},{value:"N/A",paraId:1,tocIndex:4},{value:"-",paraId:1,tocIndex:4},{value:"After conversion to JSON:",paraId:2,tocIndex:4},{value:`{ "Number 1": 123, "Percentage": 0.25, "Number 2": null, @@ -14709,7 +14762,7 @@ db.registerFieldValueParsers({ `,paraId:36,tocIndex:13},{value:"Point",paraId:37,tocIndex:14},{value:"1,2",paraId:37,tocIndex:14},{value:"After conversion to JSON:",paraId:38,tocIndex:14},{value:`{ "Point": [1,2] } -`,paraId:39,tocIndex:14}],lL={},cL={title:"App Switching",toc:"menu",filename:"docs/en-US/handbook/app-switching/index.md",lastUpdated:1732240239e3,description:"The App Switching plugin is currently under development and has yet to be released."},sL=[{id:"app-switching",depth:1,title:"App Switching"},{id:"introduction",depth:2,title:"Introduction"}],uL=[{value:"The App Switching plugin is currently under development and has yet to be released.",paraId:0}],pL={},IL={title:"Auth: DingTalk",toc:"menu",filename:"docs/en-US/handbook/auth-dingtalk/index.md",lastUpdated:1732240239e3,description:"The Auth: DingTalk plugin enables users to log in to NocoBase using their DingTalk accounts, streamlining the login process."},_L=[{id:"auth-dingtalk",depth:1,title:"Auth: DingTalk"},{id:"introduction",depth:2,title:"Introduction"},{id:"activating-the-plugin",depth:2,title:"Activating the Plugin"},{id:"applying-for-api-permissions-in-the-dingtalk-developer-console",depth:2,title:"Applying for API Permissions in the DingTalk Developer Console"},{id:"obtaining-the-client-secret-from-the-dingtalk-developer-console",depth:2,title:"Obtaining the Client Secret from the DingTalk Developer Console"},{id:"adding-dingtalk-authentication-to-nocobase",depth:2,title:"Adding DingTalk Authentication to NocoBase"},{id:"configuration",depth:3,title:"Configuration"},{id:"configuring-the-callback-url-in-the-dingtalk-developer-console",depth:2,title:"Configuring the Callback URL in the DingTalk Developer Console"},{id:"login",depth:2,title:"Login"}],vL=[{value:"The ",paraId:0,tocIndex:1},{value:"Auth: DingTalk",paraId:0,tocIndex:1},{value:" plugin enables users to log in to NocoBase using their DingTalk accounts, streamlining the login process.",paraId:0,tocIndex:1},{value:"Follow the steps outlined in the ",paraId:1,tocIndex:3},{value:"DingTalk Open Platform - Implement Login for Third-Party Websites",paraId:1,tocIndex:3},{value:" guide to create your application.",paraId:1,tocIndex:3},{value:'Once in the application management console, ensure you enable both "Personal Mobile Number Information" and "Address Book Personal Information Read Permissions."',paraId:2,tocIndex:3},{value:"Copy your ",paraId:3,tocIndex:4},{value:"Client ID",paraId:3,tocIndex:4},{value:" and ",paraId:3,tocIndex:4},{value:"Client Secret",paraId:3,tocIndex:4},{value:" from the console.",paraId:3,tocIndex:4},{value:"Navigate to the ",paraId:4,tocIndex:5},{value:"Authentication",paraId:4,tocIndex:5},{value:" plugin management page.",paraId:4,tocIndex:5},{value:"Select ",paraId:5,tocIndex:5},{value:"Add new - DingTalk",paraId:5,tocIndex:5},{value:"Sign up automatically when the user does not exist",paraId:6,tocIndex:6},{value:" - When the phone number does not match an existing user, a new user is automatically created.",paraId:6,tocIndex:6},{value:"Client ID and Client Secret",paraId:6,tocIndex:6},{value:" - Enter the information you copied earlier.",paraId:6,tocIndex:6},{value:"Redirect URL",paraId:6,tocIndex:6},{value:" - Enter the callback URL, copy it, and proceed to the next step.",paraId:6,tocIndex:6},{value:"Paste the copied ",paraId:7,tocIndex:7},{value:"Callback URL",paraId:7,tocIndex:7},{value:" into the appropriate field in the DingTalk Developer Console.",paraId:7,tocIndex:7},{value:"Go to the login page and click the button below the login form to initiate third-party login through DingTalk.",paraId:8,tocIndex:8}],mL={},hL={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-modeling/index.md",lastUpdated:1732240239e3,description:"Data modeling is a key step in designing databases, involving a deep analysis and abstraction process of various data and their relationships in the real world. In this process, we try to reveal the intrinsic connections between data and formalize them into data models, laying the foundation for the database structure of the information system. NocoBase is a data model-driven platform with the following features:"},fL=[{id:"overview",depth:1,title:"Overview"},{id:"supports-access-to-data-from-various-sources",depth:2,title:"Supports Access to Data from Various Sources"},{id:"provides-a-variety-of-data-modeling-tools",depth:2,title:"Provides a Variety of Data Modeling Tools"},{id:"supports-various-types-of--data-tables",depth:2,title:"Supports Various Types of Data Tables"},{id:"provides-a-rich-variety-of-field-types",depth:2,title:"Provides a Rich Variety of Field Types"}],xL=[{value:"Data modeling is a key step in designing databases, involving a deep analysis and abstraction process of various data and their relationships in the real world. In this process, we try to reveal the intrinsic connections between data and formalize them into data models, laying the foundation for the database structure of the information system. NocoBase is a data model-driven platform with the following features:",paraId:0,tocIndex:0},{value:"The data source of NocoBase can be common databases, API (SDK) platforms, and files.",paraId:1,tocIndex:1},{value:"NocoBase provides a ",paraId:2,tocIndex:1},{value:"data source manager",paraId:3,tocIndex:1},{value:" for managing various data sources and their data tables. The data source manager plugin only provides a management interface for all data sources and does not provide the ability to access data sources. It needs to be used in conjunction with various data source plugins. The currently supported data sources include:",paraId:2,tocIndex:1},{value:"Main Database",paraId:4,tocIndex:1},{value:": NocoBase's main database, supporting relational databases such as MySQL, PostgreSQL, SQLite, etc.",paraId:5,tocIndex:1},{value:"External MySQL",paraId:6,tocIndex:1},{value:": Use an external MySQL database as a data source.",paraId:5,tocIndex:1},{value:"External MariaDB",paraId:7,tocIndex:1},{value:": Use an external MariaDB database as a data source.",paraId:5,tocIndex:1},{value:"External PostgreSQL",paraId:8,tocIndex:1},{value:": Use an external PostgreSQL database as a data source.",paraId:5,tocIndex:1},{value:"Simple data table management interface",paraId:9,tocIndex:2},{value:": Used to create various models (data tables) or connect to existing models (data tables).",paraId:9,tocIndex:2},{value:"Visual interface similar to ER diagrams",paraId:10,tocIndex:2},{value:": Used to extract entities and their relationships from user and business requirements. It provides an intuitive and easy-to-understand way to describe data models. Through ER diagrams, you can more clearly understand the main data entities in the system and their relationships.",paraId:10,tocIndex:2},{value:"General collection",paraId:11,tocIndex:3},{value:": Built-in common system fields;",paraId:12,tocIndex:3},{value:"Inheritance collection",paraId:13,tocIndex:3},{value:": You can create a parent collection and then derive a child collection from the parent collection. The child collection will inherit the structure of the parent collection and can also define its own columns.",paraId:12,tocIndex:3},{value:"Tree collection",paraId:14,tocIndex:3},{value:": Tree structure collection, currently only supports adjacency collection design;",paraId:12,tocIndex:3},{value:"Calendar Tabcollectionle",paraId:15,tocIndex:3},{value:": Used to create calendar-related event collections;",paraId:12,tocIndex:3},{value:"File collection",paraId:16,tocIndex:3},{value:": Used for file storage management;",paraId:12,tocIndex:3},{value:"Expression collection",paraId:17,tocIndex:3},{value:": Used for dynamic expression scenarios in workflows;",paraId:12,tocIndex:3},{value:"SQL collection",paraId:18,tocIndex:3},{value:": Not an actual database collection, but quickly presents SQL queries in a structured manner;",paraId:12,tocIndex:3},{value:"Connect to database view",paraId:19,tocIndex:3},{value:": Connects to existing database views;",paraId:12,tocIndex:3},{value:"Connect to foreign data",paraId:20,tocIndex:3},{value:": Allows the database system to directly access and query data in external data sources, based on FDW technology.",paraId:12,tocIndex:3},{value:'For more content, see the "',paraId:21,tocIndex:3},{value:"Collection / Overview",paraId:22,tocIndex:3},{value:'" section.',paraId:21,tocIndex:3},{value:'For more content, see the "',paraId:23,tocIndex:4},{value:"Collection Fields / Overview",paraId:24,tocIndex:4},{value:'" section.',paraId:23,tocIndex:4}],gL={},bL={title:"Formula",toc:"menu",filename:"docs/en-US/handbook/field-formula/index.md",lastUpdated:1732240239e3,description:"To be added."},yL=[{id:"formula",depth:1,title:"Formula"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"instructions",depth:2,title:"Instructions"}],wL=[{value:"To be added.",paraId:0,tocIndex:3}],kL={},SL={title:"Mobile",toc:"menu",filename:"docs/en-US/handbook/mobile-client/index.md",lastUpdated:1732240239e3,description:"Provides the capability to configure mobile pages."},UL=[{id:"mobile",depth:1,title:"Mobile"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage",depth:2,title:"Usage"}],PL=[{value:"Provides the capability to configure mobile pages.",paraId:0,tocIndex:1},{value:"It's a pre-installed plugin that needs to be activated before use.",paraId:1,tocIndex:2}],TL={},CL={title:"JSON Template",toc:"menu",filename:"docs/en-US/handbook/template-json/index.md",lastUpdated:1732240239e3,description:"In a JSON template, variables are represented in string format and must be enclosed in double quotes, such as {{xxxx}}. During the parsing process, each variable's value is converted to its appropriate type based on its actual content. Thus, while the variable itself is a string, the resulting parsed value may not necessarily remain a string."},AL=[{id:"json-template",depth:1,title:"JSON Template"},{id:"introduction",depth:2,title:"Introduction"},{id:"example",depth:2,title:"Example"}],qL=[{value:"In a JSON template, variables are represented in string format and must be enclosed in double quotes, such as {{xxxx}}. During the parsing process, each variable's value is converted to its appropriate type based on its actual content. Thus, while the variable itself is a string, the resulting parsed value may not necessarily remain a string.",paraId:0,tocIndex:1},{value:"The JSON template is as follows",paraId:1,tocIndex:2},{value:`{ +`,paraId:39,tocIndex:14}],lL={},cL={title:"App Switching",toc:"menu",filename:"docs/en-US/handbook/app-switching/index.md",lastUpdated:173254844e4,description:"The App Switching plugin is currently under development and has yet to be released."},sL=[{id:"app-switching",depth:1,title:"App Switching"},{id:"introduction",depth:2,title:"Introduction"}],uL=[{value:"The App Switching plugin is currently under development and has yet to be released.",paraId:0}],pL={},IL={title:"Auth: DingTalk",toc:"menu",filename:"docs/en-US/handbook/auth-dingtalk/index.md",lastUpdated:173254844e4,description:"The Auth: DingTalk plugin enables users to log in to NocoBase using their DingTalk accounts, streamlining the login process."},_L=[{id:"auth-dingtalk",depth:1,title:"Auth: DingTalk"},{id:"introduction",depth:2,title:"Introduction"},{id:"activating-the-plugin",depth:2,title:"Activating the Plugin"},{id:"applying-for-api-permissions-in-the-dingtalk-developer-console",depth:2,title:"Applying for API Permissions in the DingTalk Developer Console"},{id:"obtaining-the-client-secret-from-the-dingtalk-developer-console",depth:2,title:"Obtaining the Client Secret from the DingTalk Developer Console"},{id:"adding-dingtalk-authentication-to-nocobase",depth:2,title:"Adding DingTalk Authentication to NocoBase"},{id:"configuration",depth:3,title:"Configuration"},{id:"configuring-the-callback-url-in-the-dingtalk-developer-console",depth:2,title:"Configuring the Callback URL in the DingTalk Developer Console"},{id:"login",depth:2,title:"Login"}],vL=[{value:"The ",paraId:0,tocIndex:1},{value:"Auth: DingTalk",paraId:0,tocIndex:1},{value:" plugin enables users to log in to NocoBase using their DingTalk accounts, streamlining the login process.",paraId:0,tocIndex:1},{value:"Follow the steps outlined in the ",paraId:1,tocIndex:3},{value:"DingTalk Open Platform - Implement Login for Third-Party Websites",paraId:1,tocIndex:3},{value:" guide to create your application.",paraId:1,tocIndex:3},{value:'Once in the application management console, ensure you enable both "Personal Mobile Number Information" and "Address Book Personal Information Read Permissions."',paraId:2,tocIndex:3},{value:"Copy your ",paraId:3,tocIndex:4},{value:"Client ID",paraId:3,tocIndex:4},{value:" and ",paraId:3,tocIndex:4},{value:"Client Secret",paraId:3,tocIndex:4},{value:" from the console.",paraId:3,tocIndex:4},{value:"Navigate to the ",paraId:4,tocIndex:5},{value:"Authentication",paraId:4,tocIndex:5},{value:" plugin management page.",paraId:4,tocIndex:5},{value:"Select ",paraId:5,tocIndex:5},{value:"Add new - DingTalk",paraId:5,tocIndex:5},{value:"Sign up automatically when the user does not exist",paraId:6,tocIndex:6},{value:" - When the phone number does not match an existing user, a new user is automatically created.",paraId:6,tocIndex:6},{value:"Client ID and Client Secret",paraId:6,tocIndex:6},{value:" - Enter the information you copied earlier.",paraId:6,tocIndex:6},{value:"Redirect URL",paraId:6,tocIndex:6},{value:" - Enter the callback URL, copy it, and proceed to the next step.",paraId:6,tocIndex:6},{value:"Paste the copied ",paraId:7,tocIndex:7},{value:"Callback URL",paraId:7,tocIndex:7},{value:" into the appropriate field in the DingTalk Developer Console.",paraId:7,tocIndex:7},{value:"Go to the login page and click the button below the login form to initiate third-party login through DingTalk.",paraId:8,tocIndex:8}],mL={},hL={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/data-modeling/index.md",lastUpdated:173254844e4,description:"Data modeling is a key step in designing databases, involving a deep analysis and abstraction process of various data and their relationships in the real world. In this process, we try to reveal the intrinsic connections between data and formalize them into data models, laying the foundation for the database structure of the information system. NocoBase is a data model-driven platform with the following features:"},fL=[{id:"overview",depth:1,title:"Overview"},{id:"supports-access-to-data-from-various-sources",depth:2,title:"Supports Access to Data from Various Sources"},{id:"provides-a-variety-of-data-modeling-tools",depth:2,title:"Provides a Variety of Data Modeling Tools"},{id:"supports-various-types-of--data-tables",depth:2,title:"Supports Various Types of Data Tables"},{id:"provides-a-rich-variety-of-field-types",depth:2,title:"Provides a Rich Variety of Field Types"}],xL=[{value:"Data modeling is a key step in designing databases, involving a deep analysis and abstraction process of various data and their relationships in the real world. In this process, we try to reveal the intrinsic connections between data and formalize them into data models, laying the foundation for the database structure of the information system. NocoBase is a data model-driven platform with the following features:",paraId:0,tocIndex:0},{value:"The data source of NocoBase can be common databases, API (SDK) platforms, and files.",paraId:1,tocIndex:1},{value:"NocoBase provides a ",paraId:2,tocIndex:1},{value:"data source manager",paraId:3,tocIndex:1},{value:" for managing various data sources and their data tables. The data source manager plugin only provides a management interface for all data sources and does not provide the ability to access data sources. It needs to be used in conjunction with various data source plugins. The currently supported data sources include:",paraId:2,tocIndex:1},{value:"Main Database",paraId:4,tocIndex:1},{value:": NocoBase's main database, supporting relational databases such as MySQL, PostgreSQL, SQLite, etc.",paraId:5,tocIndex:1},{value:"External MySQL",paraId:6,tocIndex:1},{value:": Use an external MySQL database as a data source.",paraId:5,tocIndex:1},{value:"External MariaDB",paraId:7,tocIndex:1},{value:": Use an external MariaDB database as a data source.",paraId:5,tocIndex:1},{value:"External PostgreSQL",paraId:8,tocIndex:1},{value:": Use an external PostgreSQL database as a data source.",paraId:5,tocIndex:1},{value:"Simple data table management interface",paraId:9,tocIndex:2},{value:": Used to create various models (data tables) or connect to existing models (data tables).",paraId:9,tocIndex:2},{value:"Visual interface similar to ER diagrams",paraId:10,tocIndex:2},{value:": Used to extract entities and their relationships from user and business requirements. It provides an intuitive and easy-to-understand way to describe data models. Through ER diagrams, you can more clearly understand the main data entities in the system and their relationships.",paraId:10,tocIndex:2},{value:"General collection",paraId:11,tocIndex:3},{value:": Built-in common system fields;",paraId:12,tocIndex:3},{value:"Inheritance collection",paraId:13,tocIndex:3},{value:": You can create a parent collection and then derive a child collection from the parent collection. The child collection will inherit the structure of the parent collection and can also define its own columns.",paraId:12,tocIndex:3},{value:"Tree collection",paraId:14,tocIndex:3},{value:": Tree structure collection, currently only supports adjacency collection design;",paraId:12,tocIndex:3},{value:"Calendar Tabcollectionle",paraId:15,tocIndex:3},{value:": Used to create calendar-related event collections;",paraId:12,tocIndex:3},{value:"File collection",paraId:16,tocIndex:3},{value:": Used for file storage management;",paraId:12,tocIndex:3},{value:"Expression collection",paraId:17,tocIndex:3},{value:": Used for dynamic expression scenarios in workflows;",paraId:12,tocIndex:3},{value:"SQL collection",paraId:18,tocIndex:3},{value:": Not an actual database collection, but quickly presents SQL queries in a structured manner;",paraId:12,tocIndex:3},{value:"Connect to database view",paraId:19,tocIndex:3},{value:": Connects to existing database views;",paraId:12,tocIndex:3},{value:"Connect to foreign data",paraId:20,tocIndex:3},{value:": Allows the database system to directly access and query data in external data sources, based on FDW technology.",paraId:12,tocIndex:3},{value:'For more content, see the "',paraId:21,tocIndex:3},{value:"Collection / Overview",paraId:22,tocIndex:3},{value:'" section.',paraId:21,tocIndex:3},{value:'For more content, see the "',paraId:23,tocIndex:4},{value:"Collection Fields / Overview",paraId:24,tocIndex:4},{value:'" section.',paraId:23,tocIndex:4}],gL={},bL={title:"Formula",toc:"menu",filename:"docs/en-US/handbook/field-formula/index.md",lastUpdated:173254844e4,description:"To be added."},yL=[{id:"formula",depth:1,title:"Formula"},{id:"introduction",depth:2,title:"Introduction"},{id:"field-configuration",depth:2,title:"Field Configuration"},{id:"instructions",depth:2,title:"Instructions"}],wL=[{value:"To be added.",paraId:0,tocIndex:3}],kL={},SL={title:"Mobile",toc:"menu",filename:"docs/en-US/handbook/mobile-client/index.md",lastUpdated:173254844e4,description:"Provides the capability to configure mobile pages."},UL=[{id:"mobile",depth:1,title:"Mobile"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage",depth:2,title:"Usage"}],PL=[{value:"Provides the capability to configure mobile pages.",paraId:0,tocIndex:1},{value:"It's a pre-installed plugin that needs to be activated before use.",paraId:1,tocIndex:2}],TL={},CL={title:"JSON Template",toc:"menu",filename:"docs/en-US/handbook/template-json/index.md",lastUpdated:173254844e4,description:"In a JSON template, variables are represented in string format and must be enclosed in double quotes, such as {{xxxx}}. During the parsing process, each variable's value is converted to its appropriate type based on its actual content. Thus, while the variable itself is a string, the resulting parsed value may not necessarily remain a string."},AL=[{id:"json-template",depth:1,title:"JSON Template"},{id:"introduction",depth:2,title:"Introduction"},{id:"example",depth:2,title:"Example"}],qL=[{value:"In a JSON template, variables are represented in string format and must be enclosed in double quotes, such as {{xxxx}}. During the parsing process, each variable's value is converted to its appropriate type based on its actual content. Thus, while the variable itself is a string, the resulting parsed value may not necessarily remain a string.",paraId:0,tocIndex:1},{value:"The JSON template is as follows",paraId:1,tocIndex:2},{value:`{ "key1": "{{current.key1}}", "key2": "{{current.key2}}", "key3": "{{current.key3}}", @@ -14744,7 +14797,7 @@ db.registerFieldValueParsers({ "key8": ["val1", 3], "key9": "val1 - \\"3\\" - 3 - val9" } -`,paraId:6,tocIndex:2}],EL={},DL={title:"Loop",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/loop.md",lastUpdated:1732240239e3,description:"The loop functions in a manner akin to for, while, or forEach constructs in programming languages. It\u2019s designed for situations where you need to repeat certain operations a specific number of times or iterate over a dataset (such as an array). The loop node is your go-to tool for such tasks."},OL=[{id:"loop",depth:1,title:"Loop"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-node",depth:3,title:"Creating Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"loop-object",depth:4,title:"Loop Object"},{id:"loop-condition",depth:4,title:"Loop condition"},{id:"error-handling-of-internal-nodes-in-loop",depth:4,title:"Error handling of internal nodes in loop"},{id:"example",depth:3,title:"Example"}],RL=[{value:"The loop functions in a manner akin to ",paraId:0},{value:"for",paraId:0},{value:", ",paraId:0},{value:"while",paraId:0},{value:", or ",paraId:0},{value:"forEach",paraId:0},{value:" constructs in programming languages. It\u2019s designed for situations where you need to repeat certain operations a specific number of times or iterate over a dataset (such as an array). The loop node is your go-to tool for such tasks.",paraId:0},{value:"This plugin comes pre-installed, so no additional setup is necessary.",paraId:1,tocIndex:1},{value:'In the workflow configuration interface, you can add a "Loop" node by clicking the plus sign ("+") in the process:',paraId:2,tocIndex:3},{value:"Once you create the loop node, an internal branch specifically for the loop is generated. You can then populate this branch with any number of nodes. These nodes will have access to not only the workflow context variables but also the local variables defined within the loop context\u2014such as the current data object or the iteration index (which starts at ",paraId:3,tocIndex:3},{value:"0",paraId:3,tocIndex:3},{value:"). These local variables are scoped exclusively to the loop. For nested loops, you can use variables specific to each loop level.",paraId:3,tocIndex:3},{value:"The loop node can handle various data types for the loop object, each in a different way:",paraId:4,tocIndex:5},{value:"Array",paraId:5,tocIndex:5},{value:": This is the most common use case. Typically, you'll select a workflow context variable, such as the results from a query node or preloaded data from a many-to-many relationship. If an array is selected, the loop node will iterate over each element, assigning the current element to a local variable within the loop context for each iteration.",paraId:5,tocIndex:5},{value:"Number",paraId:6,tocIndex:5},{value:": When the loop object is a number, it\u2019s treated as the number of iterations. The index within the local variable will match the loop object\u2019s value.",paraId:6,tocIndex:5},{value:"String",paraId:7,tocIndex:5},{value:": If the loop object is a string, the loop will iterate according to the string's length, processing each character by its index.",paraId:7,tocIndex:5},{value:"Others",paraId:8,tocIndex:5},{value:": Other data types (including objects) are treated as a single loop object, resulting in just one iteration\u2014typically not requiring a loop.",paraId:8,tocIndex:5},{value:"You can also input constants directly when working with numbers and strings. For instance, inputting ",paraId:9,tocIndex:5},{value:"5",paraId:9,tocIndex:5},{value:" (number type) will cause the loop to run 5 times, while inputting ",paraId:9,tocIndex:5},{value:"abc",paraId:9,tocIndex:5},{value:" (string type) will result in 3 iterations, processing ",paraId:9,tocIndex:5},{value:"a",paraId:9,tocIndex:5},{value:", ",paraId:9,tocIndex:5},{value:"b",paraId:9,tocIndex:5},{value:", and ",paraId:9,tocIndex:5},{value:"c",paraId:9,tocIndex:5},{value:" individually. The variable selection tool allows you to choose the type of constant you want to use.",paraId:9,tocIndex:5},{value:"From version ",paraId:10,tocIndex:6},{value:"v1.4.0-beta",paraId:10,tocIndex:6},{value:" on, loop condition options are added, and could be enabled in node configuration.",paraId:10,tocIndex:6},{value:"Condition",paraId:11,tocIndex:6},{value:"Similar to the configuration in a condition node, combination of conditions can be configured, and variables from the current loop, such as the loop item and loop index, can also be used.",paraId:12,tocIndex:6},{value:"Checkpoint",paraId:13,tocIndex:6},{value:"Similar to ",paraId:14,tocIndex:6},{value:"while",paraId:14,tocIndex:6},{value:" and ",paraId:14,tocIndex:6},{value:"do/while",paraId:14,tocIndex:6},{value:" in programming languages, conditions can be configured to be evaluated either before each loop iteration or after it ends. Post-condition evaluation can execute other nodes in the loop body first before performing the condition check.",paraId:14,tocIndex:6},{value:"When condition is not met",paraId:15,tocIndex:6},{value:"Similar to ",paraId:16,tocIndex:6},{value:"break",paraId:16,tocIndex:6},{value:" and ",paraId:16,tocIndex:6},{value:"continue",paraId:16,tocIndex:6},{value:" clause in programming languages, could be use to determine whether to break or continue the loop.",paraId:16,tocIndex:6},{value:"From version ",paraId:17,tocIndex:7},{value:"v1.4.0-beta",paraId:17,tocIndex:7},{value:" on, when an internal node in a loop fails to execute (due to unmet conditions, errors, etc.), the next step can be determined through this configuration. Three handling methods are supported:",paraId:17,tocIndex:7},{value:"Exit the process (default)",paraId:18,tocIndex:7},{value:"Exit the loop and continue the process",paraId:18,tocIndex:7},{value:"Continue to the next loop item",paraId:18,tocIndex:7},{value:"You can choose the appropriate method as needed.",paraId:19,tocIndex:7},{value:"Consider the following scenario: when placing an order, you need to check the inventory of each product in the order. If the inventory is sufficient, the stock is deducted; otherwise, the product in the order details is marked as invalid.",paraId:20,tocIndex:8},{value:"Create three collections: Product <-(1",paraId:21,tocIndex:8},{value:")-- Order Details --(m:1)-> Order , with the following data model:",paraId:21,tocIndex:8},{value:"Field Name",paraId:22,tocIndex:8},{value:"Field Type",paraId:22,tocIndex:8},{value:"Order Details",paraId:22,tocIndex:8},{value:"Many-to-One (Details)",paraId:22,tocIndex:8},{value:"Total Price",paraId:22,tocIndex:8},{value:"Number",paraId:22,tocIndex:8},{value:"Field Name",paraId:23,tocIndex:8},{value:"Field Type",paraId:23,tocIndex:8},{value:"Product",paraId:23,tocIndex:8},{value:"One-to-Many (Product)",paraId:23,tocIndex:8},{value:"Quantity",paraId:23,tocIndex:8},{value:"Number",paraId:23,tocIndex:8},{value:"Field Name",paraId:24,tocIndex:8},{value:"Field Type",paraId:24,tocIndex:8},{value:"Product Name",paraId:24,tocIndex:8},{value:"Single-line Text",paraId:24,tocIndex:8},{value:"Price",paraId:24,tocIndex:8},{value:"Number",paraId:24,tocIndex:8},{value:"Inventory",paraId:24,tocIndex:8},{value:"Integer",paraId:24,tocIndex:8},{value:'Create a workflow, selecting "Collection event" as the trigger, and choose the "Order" table with "Create record" as the trigger. Additionally, preload relationship data from the "Order Details" table and the Product Table under details:',paraId:25,tocIndex:8},{value:'Create a loop node, selecting the loop object as "Trigger Data / Order Details," which loops through each record in the order details table:',paraId:26,tocIndex:8},{value:'Inside the loop node, create a "Condition" node to check if the product inventory is sufficient:',paraId:27,tocIndex:8},{value:'If the inventory is sufficient, create a "Calculation" and an "Update record" node under the "Yes" branch to update the inventory after deduction:',paraId:28,tocIndex:8},{value:'If the inventory is insufficient, create an "Update record" node under the "No" branch to update the status of the order detail to "Invalid":',paraId:29,tocIndex:8},{value:"The complete process structure is illustrated below:",paraId:30,tocIndex:8},{value:"After configuration and activation of this workflow, every time a new order is created, the system will automatically check the inventory of each product in the order. If sufficient inventory is available, the stock will be deducted; otherwise, the product in the order details will be marked as invalid (helping to calculate the valid total order price).",paraId:31,tocIndex:8}],ML={},LL={title:"Workflow Loop",toc:"menu",filename:"docs/en-US/handbook/workflow-loop/index.md",lastUpdated:1732240239e3,description:"The loop functions in a manner akin to for, while, or forEach constructs in programming languages. It\u2019s designed for situations where you need to repeat certain operations a specific number of times or iterate over a dataset (such as an array). The loop node is your go-to tool for such tasks."},NL=[{id:"loop",depth:2,title:"Loop"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-node",depth:3,title:"Creating Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"loop-object",depth:4,title:"Loop Object"},{id:"loop-condition",depth:4,title:"Loop condition"},{id:"error-handling-of-internal-nodes-in-loop",depth:4,title:"Error handling of internal nodes in loop"},{id:"example",depth:3,title:"Example"}],zL=[{value:"The loop functions in a manner akin to ",paraId:0},{value:"for",paraId:0},{value:", ",paraId:0},{value:"while",paraId:0},{value:", or ",paraId:0},{value:"forEach",paraId:0},{value:" constructs in programming languages. It\u2019s designed for situations where you need to repeat certain operations a specific number of times or iterate over a dataset (such as an array). The loop node is your go-to tool for such tasks.",paraId:0},{value:"This plugin comes pre-installed, so no additional setup is necessary.",paraId:1,tocIndex:1},{value:'In the workflow configuration interface, you can add a "Loop" node by clicking the plus sign ("+") in the process:',paraId:2,tocIndex:3},{value:"Once you create the loop node, an internal branch specifically for the loop is generated. You can then populate this branch with any number of nodes. These nodes will have access to not only the workflow context variables but also the local variables defined within the loop context\u2014such as the current data object or the iteration index (which starts at ",paraId:3,tocIndex:3},{value:"0",paraId:3,tocIndex:3},{value:"). These local variables are scoped exclusively to the loop. For nested loops, you can use variables specific to each loop level.",paraId:3,tocIndex:3},{value:"The loop node can handle various data types for the loop object, each in a different way:",paraId:4,tocIndex:5},{value:"Array",paraId:5,tocIndex:5},{value:": This is the most common use case. Typically, you'll select a workflow context variable, such as the results from a query node or preloaded data from a many-to-many relationship. If an array is selected, the loop node will iterate over each element, assigning the current element to a local variable within the loop context for each iteration.",paraId:5,tocIndex:5},{value:"Number",paraId:6,tocIndex:5},{value:": When the loop object is a number, it\u2019s treated as the number of iterations. The index within the local variable will match the loop object\u2019s value.",paraId:6,tocIndex:5},{value:"String",paraId:7,tocIndex:5},{value:": If the loop object is a string, the loop will iterate according to the string's length, processing each character by its index.",paraId:7,tocIndex:5},{value:"Others",paraId:8,tocIndex:5},{value:": Other data types (including objects) are treated as a single loop object, resulting in just one iteration\u2014typically not requiring a loop.",paraId:8,tocIndex:5},{value:"You can also input constants directly when working with numbers and strings. For instance, inputting ",paraId:9,tocIndex:5},{value:"5",paraId:9,tocIndex:5},{value:" (number type) will cause the loop to run 5 times, while inputting ",paraId:9,tocIndex:5},{value:"abc",paraId:9,tocIndex:5},{value:" (string type) will result in 3 iterations, processing ",paraId:9,tocIndex:5},{value:"a",paraId:9,tocIndex:5},{value:", ",paraId:9,tocIndex:5},{value:"b",paraId:9,tocIndex:5},{value:", and ",paraId:9,tocIndex:5},{value:"c",paraId:9,tocIndex:5},{value:" individually. The variable selection tool allows you to choose the type of constant you want to use.",paraId:9,tocIndex:5},{value:"From version ",paraId:10,tocIndex:6},{value:"v1.4.0-beta",paraId:10,tocIndex:6},{value:" on, loop condition options are added, and could be enabled in node configuration.",paraId:10,tocIndex:6},{value:"Condition",paraId:11,tocIndex:6},{value:"Similar to the configuration in a condition node, combination of conditions can be configured, and variables from the current loop, such as the loop item and loop index, can also be used.",paraId:12,tocIndex:6},{value:"Checkpoint",paraId:13,tocIndex:6},{value:"Similar to ",paraId:14,tocIndex:6},{value:"while",paraId:14,tocIndex:6},{value:" and ",paraId:14,tocIndex:6},{value:"do/while",paraId:14,tocIndex:6},{value:" in programming languages, conditions can be configured to be evaluated either before each loop iteration or after it ends. Post-condition evaluation can execute other nodes in the loop body first before performing the condition check.",paraId:14,tocIndex:6},{value:"When condition is not met",paraId:15,tocIndex:6},{value:"Similar to ",paraId:16,tocIndex:6},{value:"break",paraId:16,tocIndex:6},{value:" and ",paraId:16,tocIndex:6},{value:"continue",paraId:16,tocIndex:6},{value:" clause in programming languages, could be use to determine whether to break or continue the loop.",paraId:16,tocIndex:6},{value:"From version ",paraId:17,tocIndex:7},{value:"v1.4.0-beta",paraId:17,tocIndex:7},{value:" on, when an internal node in a loop fails to execute (due to unmet conditions, errors, etc.), the next step can be determined through this configuration. Three handling methods are supported:",paraId:17,tocIndex:7},{value:"Exit the process (default)",paraId:18,tocIndex:7},{value:"Exit the loop and continue the process",paraId:18,tocIndex:7},{value:"Continue to the next loop item",paraId:18,tocIndex:7},{value:"You can choose the appropriate method as needed.",paraId:19,tocIndex:7},{value:"Consider the following scenario: when placing an order, you need to check the inventory of each product in the order. If the inventory is sufficient, the stock is deducted; otherwise, the product in the order details is marked as invalid.",paraId:20,tocIndex:8},{value:"Create three collections: Product <-(1:m)-- Order Details --(m:1)-> Order , with the following data model:",paraId:21,tocIndex:8},{value:"Field Name",paraId:22,tocIndex:8},{value:"Field Type",paraId:22,tocIndex:8},{value:"Order Details",paraId:22,tocIndex:8},{value:"Many-to-One (Details)",paraId:22,tocIndex:8},{value:"Total Price",paraId:22,tocIndex:8},{value:"Number",paraId:22,tocIndex:8},{value:"Field Name",paraId:23,tocIndex:8},{value:"Field Type",paraId:23,tocIndex:8},{value:"Product",paraId:23,tocIndex:8},{value:"One-to-Many (Product)",paraId:23,tocIndex:8},{value:"Quantity",paraId:23,tocIndex:8},{value:"Number",paraId:23,tocIndex:8},{value:"Field Name",paraId:24,tocIndex:8},{value:"Field Type",paraId:24,tocIndex:8},{value:"Product Name",paraId:24,tocIndex:8},{value:"Single-line Text",paraId:24,tocIndex:8},{value:"Price",paraId:24,tocIndex:8},{value:"Number",paraId:24,tocIndex:8},{value:"Inventory",paraId:24,tocIndex:8},{value:"Integer",paraId:24,tocIndex:8},{value:'Create a workflow, selecting "Collection event" as the trigger, and choose the "Order" table with "Create record" as the trigger. Additionally, preload relationship data from the "Order Details" table and the Product Table under details:',paraId:25,tocIndex:8},{value:'Create a loop node, selecting the loop object as "Trigger Data / Order Details," which loops through each record in the order details table:',paraId:26,tocIndex:8},{value:'Inside the loop node, create a "Condition" node to check if the product inventory is sufficient:',paraId:27,tocIndex:8},{value:'If the inventory is sufficient, create a "Calculation" and an "Update record" node under the "Yes" branch to update the inventory after deduction:',paraId:28,tocIndex:8},{value:'If the inventory is insufficient, create an "Update record" node under the "No" branch to update the status of the order detail to "Invalid":',paraId:29,tocIndex:8},{value:"The complete process structure is illustrated below:",paraId:30,tocIndex:8},{value:"After configuration and activation of this workflow, every time a new order is created, the system will automatically check the inventory of each product in the order. If sufficient inventory is available, the stock will be deducted; otherwise, the product in the order details will be marked as invalid (helping to calculate the valid total order price).",paraId:31,tocIndex:8}],FL={},BL={title:"\u57FA\u4E8E\u5730\u56FE\u7684\u51E0\u4F55\u56FE\u5F62",toc:"menu",filename:"docs/en-US/manual/collection/fields/map.md",lastUpdated:1732240239e3},jL=[{id:"\u57FA\u4E8E\u5730\u56FE\u7684\u51E0\u4F55\u56FE\u5F62",depth:1,title:"\u57FA\u4E8E\u5730\u56FE\u7684\u51E0\u4F55\u56FE\u5F62"}],HL=[],WL={},$L={title:"\u6570\u636E\u8868\u7BA1\u7406",toc:"menu",filename:"docs/en-US/manual/collection/management.md",lastUpdated:1732240239e3,description:"\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u53CA\u62D6\u62FD\u6392\u5E8F"},GL=[{id:"\u6570\u636E\u8868\u7BA1\u7406",depth:1,title:"\u6570\u636E\u8868\u7BA1\u7406"},{id:"\u6570\u636E\u8868\u7BA1\u7406-1",depth:3,title:"\u6570\u636E\u8868\u7BA1\u7406"},{id:"\u6570\u636E\u8868\u5B57\u6BB5\u7BA1\u7406",depth:3,title:"\u6570\u636E\u8868\u5B57\u6BB5\u7BA1\u7406"},{id:"\u6570\u636E\u8868\u5206\u7C7B\u7BA1\u7406",depth:3,title:"\u6570\u636E\u8868\u5206\u7C7B\u7BA1\u7406"}],VL=[{value:"\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u53CA\u62D6\u62FD\u6392\u5E8F",paraId:0,tocIndex:1},{value:"\u6570\u636E\u8868\u5B57\u6BB5\u7684\u589E\u5220\u6539",paraId:1,tocIndex:2},{value:"\u53EF\u4EE5\u5C06\u6570\u636E\u8868\u6309\u7167\u4E0D\u540C\u7684\u6807\u51C6\u8FDB\u884C\u7EC4\u7EC7\uFF0C\u4F7F\u6570\u636E\u7684\u7ED3\u6784\u66F4\u52A0\u6E05\u6670\u964D\u4F4E\u6570\u636E\u7BA1\u7406\u7684\u590D\u6742\u6027",paraId:2,tocIndex:3},{value:"\u6570\u636E\u8868\u5206\u7C7B\u7684\u589E\u5220\u6539\u53CA\u6392\u5E8F",paraId:3,tocIndex:3}],KL={},ZL={title:"\u64CD\u4F5C",toc:"menu",filename:"docs/en-US/manual/core-concepts/actions.md",lastUpdated:1732240239e3,description:"\u64CD\u4F5C\u662F\u5B8C\u6210\u67D0\u4E2A\u7279\u5B9A\u76EE\u6807\u7684\u52A8\u4F5C\u96C6\u5408\u3002\u5728 NocoBase \u4E2D\u901A\u8FC7 \u64CD\u4F5C\u6765\u5904\u7406\u6570\u636E\u6216\u8005\u4E0E\u670D\u52A1\u5668\u901A\u4FE1\u3002 \u64CD\u4F5C\u901A\u5E38\u4F1A\u901A\u8FC7\u70B9\u51FB\u67D0\u4E2A\u6309\u94AE\u89E6\u53D1\u3002"},YL=[{id:"\u64CD\u4F5C",depth:1,title:"\u64CD\u4F5C"},{id:"\u64CD\u4F5C\u7C7B\u578B",depth:2,title:"\u64CD\u4F5C\u7C7B\u578B"},{id:"\u914D\u7F6E\u64CD\u4F5C",depth:2,title:"\u914D\u7F6E\u64CD\u4F5C"}],QL=[{value:"\u64CD\u4F5C",paraId:0,tocIndex:0},{value:"\u662F\u5B8C\u6210\u67D0\u4E2A\u7279\u5B9A\u76EE\u6807\u7684\u52A8\u4F5C\u96C6\u5408\u3002\u5728 NocoBase \u4E2D\u901A\u8FC7 ",paraId:0,tocIndex:0},{value:"\u64CD\u4F5C",paraId:0,tocIndex:0},{value:"\u6765\u5904\u7406\u6570\u636E\u6216\u8005\u4E0E\u670D\u52A1\u5668\u901A\u4FE1\u3002 \u64CD\u4F5C\u901A\u5E38\u4F1A\u901A\u8FC7\u70B9\u51FB\u67D0\u4E2A\u6309\u94AE\u89E6\u53D1\u3002",paraId:0,tocIndex:0},{value:"NocoBase \u76EE\u524D\u652F\u6301 10 \u51E0\u79CD\u64CD\u4F5C\uFF0C\u672A\u6765\u53EF\u4EE5\u901A\u8FC7\u63D2\u4EF6\u7684\u65B9\u5F0F\u652F\u6301\u66F4\u591A\u79CD\u3002",paraId:1,tocIndex:1},{value:"\u540D\u79F0",paraId:2,tocIndex:1},{value:"\u63CF\u8FF0",paraId:2,tocIndex:1},{value:"\u7B5B\u9009",paraId:2,tocIndex:1},{value:"\u6307\u5B9A\u6570\u636E\u7684\u663E\u793A\u8303\u56F4",paraId:2,tocIndex:1},{value:"\u6DFB\u52A0",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u6DFB\u52A0\u65B0\u6570\u636E\u7684\u5F39\u7A97\uFF0C\u5728\u5F39\u7A97\u91CC\u901A\u5E38\u5305\u542B\u4E00\u4E2A\u8868\u5355\u533A\u5757",paraId:2,tocIndex:1},{value:"\u67E5\u770B",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u67E5\u770B\u6307\u5B9A\u6570\u636E\u7684\u5F39\u7A97\uFF0C\u5728\u5F39\u7A97\u91CC\u901A\u5E38\u5305\u542B\u4E00\u4E2A\u8BE6\u60C5\u533A\u5757",paraId:2,tocIndex:1},{value:"\u7F16\u8F91",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u4FEE\u6539\u6307\u5B9A\u6570\u636E\u7684\u5F39\u7A97\uFF0C\u5728\u5F39\u7A97\u91CC\u901A\u5E38\u5305\u542B\u4E00\u4E2A\u8868\u5355\u533A\u5757",paraId:2,tocIndex:1},{value:"\u5220\u9664",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u5220\u9664\u6307\u5B9A\u6570\u636E\u7684\u5BF9\u8BDD\u6846\uFF0C\u786E\u8BA4\u540E\u5220\u9664",paraId:2,tocIndex:1},{value:"\u5BFC\u51FA",paraId:2,tocIndex:1},{value:"\u5C06\u6570\u636E\u5BFC\u51FA\u4E3A Excel\uFF0C\u5E38\u548C\u7B5B\u9009\u7EC4\u5408\u4F7F\u7528",paraId:2,tocIndex:1},{value:"\u6253\u5370",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u6D4F\u89C8\u5668\u6253\u5370\u7A97\u53E3\uFF0C\u6253\u5370\u6307\u5B9A\u7684\u6570\u636E\uFF0C\u5E38\u548C\u8BE6\u60C5\u533A\u5757\u7EC4\u5408\u4F7F\u7528",paraId:2,tocIndex:1},{value:"\u63D0\u4EA4",paraId:2,tocIndex:1},{value:"\u5C06\u6307\u5B9A\u8868\u5355\u533A\u5757\u7684\u6570\u636E\u63D0\u4EA4\u5230\u670D\u52A1\u7AEF",paraId:2,tocIndex:1},{value:"\u5237\u65B0",paraId:2,tocIndex:1},{value:"\u5237\u65B0\u5F53\u524D\u533A\u5757\u5185\u7684\u6570\u636E",paraId:2,tocIndex:1},{value:"\u5BFC\u5165",paraId:2,tocIndex:1},{value:"\u4ECE Excel \u6A21\u677F\u4E2D\u5BFC\u5165\u6570\u636E",paraId:2,tocIndex:1},{value:"\u6279\u91CF\u7F16\u8F91",paraId:2,tocIndex:1},{value:"\u6279\u91CF\u7F16\u8F91\u6570\u636E",paraId:2,tocIndex:1},{value:"\u6279\u91CF\u66F4\u65B0",paraId:2,tocIndex:1},{value:"\u6279\u91CF\u66F4\u65B0\u6570\u636E",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u5F39\u7A97",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u5F39\u7A97\u6216\u62BD\u5C49\uFF0C\u5728\u91CC\u9762\u53EF\u4EE5\u653E\u7F6E\u533A\u5757",paraId:2,tocIndex:1},{value:"\u66F4\u65B0\u6570\u636E",paraId:2,tocIndex:1},{value:"\u70B9\u51FB\u540E\u81EA\u52A8\u66F4\u65B0\u6307\u5B9A\u7684\u5B57\u6BB5",paraId:2,tocIndex:1},{value:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",paraId:2,tocIndex:1},{value:"\u5411\u7B2C\u4E09\u65B9\u53D1\u9001\u8BF7\u6C42",paraId:2,tocIndex:1},{value:"\u5728\u754C\u9762\u914D\u7F6E\u6A21\u5F0F\u4E0B\uFF0C\u5C06\u9F20\u6807\u79FB\u5230\u64CD\u4F5C\u6309\u94AE\u4E0A\uFF0C\u53F3\u4E0A\u89D2\u5C31\u4F1A\u51FA\u73B0\u8BE5\u64CD\u4F5C\u652F\u6301\u7684\u914D\u7F6E\u9879\u3002\u6BD4\u5982\u7B5B\u9009\u64CD\u4F5C\uFF1A",paraId:3,tocIndex:2}],JL={},XL={title:"\u7CFB\u7EDF\u8BBE\u7F6E",toc:"menu",filename:"docs/en-US/manual/system-settings/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},eN=[{id:"\u7CFB\u7EDF\u8BBE\u7F6E",depth:1,title:"\u7CFB\u7EDF\u8BBE\u7F6E"}],aN=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],tN={},nN={title:"\u6DFB\u52A0\u6570\u636E",toc:"menu",filename:"docs/en-US/manual/ui/actions/add-record.md",lastUpdated:1732240239e3,description:"\u81EA\u5B9A\u4E49\u6DFB\u52A0\u6570\u636E\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5728\u64CD\u4F5C\u4E2D\u4E3A\u4EFB\u610F\u6570\u636E\u8868\u4E2D\u6DFB\u52A0\u6570\u636E"},oN=[{id:"\u6DFB\u52A0\u6570\u636E",depth:1,title:"\u6DFB\u52A0\u6570\u636E"}],rN=[{value:"\u81EA\u5B9A\u4E49\u6DFB\u52A0\u6570\u636E\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5728\u64CD\u4F5C\u4E2D\u4E3A\u4EFB\u610F\u6570\u636E\u8868\u4E2D\u6DFB\u52A0\u6570\u636E",paraId:0,tocIndex:0}],dN={},iN={title:"\u6253\u5F00\u5F39\u7A97",toc:"menu",filename:"docs/en-US/manual/ui/actions/open-popup.md",lastUpdated:1732240239e3,description:"\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\u4EE5\u5F39\u7A97\u7684\u65B9\u5F0F\u5448\u73B0\u6570\u636E\uFF0C\u53EF\u81EA\u5B9A\u4E49\u914D\u7F6E\u8BE6\u60C5\u533A\u5757\u6216\u8868\u5355\u533A\u5757\uFF0C\u9002\u7528\u4E8E\u591A\u79CD\u573A\u666F\u3002\u5982\u5F53\u6570\u636E\u8868\u4E2D\u6709\u8BB8\u591A\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u5C06\u5B57\u6BB5\u62C6\u5206\u5230\u4E0D\u540C\u7684\u64CD\u4F5C\u533A\u5757\u4E2D\uFF0C\u4E13\u6CE8\u4E8E\u67E5\u770B\u6216\u4FEE\u6539\u67D0\u4E9B\u5B57\u6BB5\uFF0C\u6839\u636E\u4E1A\u52A1\u9700\u6C42\u521B\u5EFA\u591A\u4E2A\u5B9A\u5236\u5316\u6570\u636E\u5C55\u793A\u6216\u7F16\u8F91\u754C\u9762\u7684\u64CD\u4F5C"},lN=[{id:"\u6253\u5F00\u5F39\u7A97",depth:1,title:"\u6253\u5F00\u5F39\u7A97"}],cN=[{value:"\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\u4EE5\u5F39\u7A97\u7684\u65B9\u5F0F\u5448\u73B0\u6570\u636E\uFF0C\u53EF\u81EA\u5B9A\u4E49\u914D\u7F6E\u8BE6\u60C5\u533A\u5757\u6216\u8868\u5355\u533A\u5757\uFF0C\u9002\u7528\u4E8E\u591A\u79CD\u573A\u666F\u3002\u5982\u5F53\u6570\u636E\u8868\u4E2D\u6709\u8BB8\u591A\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u5C06\u5B57\u6BB5\u62C6\u5206\u5230\u4E0D\u540C\u7684\u64CD\u4F5C\u533A\u5757\u4E2D\uFF0C\u4E13\u6CE8\u4E8E\u67E5\u770B\u6216\u4FEE\u6539\u67D0\u4E9B\u5B57\u6BB5\uFF0C\u6839\u636E\u4E1A\u52A1\u9700\u6C42\u521B\u5EFA\u591A\u4E2A\u5B9A\u5236\u5316\u6570\u636E\u5C55\u793A\u6216\u7F16\u8F91\u754C\u9762\u7684\u64CD\u4F5C",paraId:0,tocIndex:0},{value:"\u5982\u56FE\u8BA2\u5355\u8868\u683C\u4E2D\u914D\u7F6E\u4E86\u4E09\u4E2A\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\uFF0C\u67E5\u770B\u4E3B\u8BA2\u5355\uFF08\u8BA2\u5355\u4E3B\u4FE1\u606F\uFF09\uFF0C\u67E5\u770B\u5546\u54C1\uFF08\u8BA2\u5355\u7684\u5173\u8054\u7684\u5546\u54C1\u4FE1\u606F\uFF09\u548C\u67E5\u770B\u5BA2\u6237\uFF08\u8BA2\u5355\u5173\u8054\u7684\u5BA2\u6237\u4FE1\u606F\uFF09",paraId:1,tocIndex:0}],sN={},uN={title:"\u65B0\u589E\u6570\u636E",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/create.md",lastUpdated:1732240239e3,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u65B0\u589E\u4E00\u884C\u6570\u636E\u3002"},pN=[{id:"\u65B0\u589E\u6570\u636E",depth:1,title:"\u65B0\u589E\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u5B57\u6BB5\u503C",depth:3,title:"\u5B57\u6BB5\u503C"},{id:"\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E",depth:3,title:"\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],IN=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u65B0\u589E\u4E00\u884C\u6570\u636E\u3002",paraId:0,tocIndex:0},{value:"\u65B0\u589E\u6570\u636E\u884C\u7684\u5B57\u6BB5\u503C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u5BF9\u5173\u7CFB\u5B57\u6BB5\u7684\u8D4B\u503C\u53EF\u4EE5\u76F4\u63A5\u5F15\u7528\u4E0A\u4E0B\u6587\u4E2D\u7684\u5BF9\u5E94\u6570\u636E\u53D8\u91CF\uFF0C\u53EF\u4EE5\u662F\u5BF9\u8C61\uFF0C\u4E5F\u53EF\u4EE5\u662F\u5916\u952E\u7684\u503C\u3002\u5982\u679C\u4E0D\u4F7F\u7528\u53D8\u91CF\uFF0C\u5219\u9700\u8981\u624B\u52A8\u586B\u5199\u5916\u952E\u7684\u503C\uFF0C\u5BF9\u591A\u5173\u7CFB\u7684\u591A\u4E2A\u5916\u952E\u503C\u9700\u8981\u4F7F\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\u7684\u5F62\u5F0F\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u65B0\u589E\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u9009\u62E9\u8981\u65B0\u589E\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:3,tocIndex:3},{value:"\u9488\u5BF9\u6570\u636E\u8868\u7684\u5B57\u6BB5\u8FDB\u884C\u8D4B\u503C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4E5F\u53EF\u4EE5\u624B\u52A8\u586B\u5199\u9759\u6001\u503C\u3002",paraId:4,tocIndex:4},{value:"\u6CE8\uFF1A\u5DE5\u4F5C\u6D41\u4E2D\u65B0\u589E\u8282\u70B9\u65B0\u589E\u7684\u6570\u636E\u4E0D\u4F1A\u81EA\u52A8\u5904\u7406\u201C\u521B\u5EFA\u4EBA\u201D\u3001\u201C\u6700\u540E\u4FEE\u6539\u4EBA\u201D\u7B49\u7528\u6237\u6570\u636E\uFF0C\u9700\u8981\u6839\u636E\u60C5\u51B5\u81EA\u884C\u914D\u7F6E\u8FD9\u4E24\u4E2A\u5B57\u6BB5\u7684\u503C\u3002",paraId:5,tocIndex:4},{value:"\u5982\u679C\u65B0\u589E\u6570\u636E\u7684\u5B57\u6BB5\u4E2D\u5305\u542B\u5173\u7CFB\u5B57\u6BB5\uFF0C\u4E14\u5E0C\u671B\u540E\u7EED\u6D41\u7A0B\u4E2D\u4F7F\u7528\u76F8\u5E94\u7684\u5173\u7CFB\u6570\u636E\u65F6\uFF0C\u53EF\u4EE5\u5728\u9884\u52A0\u8F7D\u914D\u7F6E\u4E2D\u52FE\u9009\u76F8\u5E94\u7684\u5173\u7CFB\u5B57\u6BB5\uFF0C\u8FD9\u6837\u5728\u65B0\u589E\u6570\u636E\u5B8C\u6210\u540E\uFF0C\u4F1A\u81EA\u52A8\u52A0\u8F7D\u76F8\u5E94\u7684\u5173\u7CFB\u6570\u636E\u4E00\u5E76\u50A8\u5B58\u5728\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u4E2D\u3002",paraId:6,tocIndex:5},{value:"\u4F8B\u5982\u5F53\u201C\u6587\u7AE0\u201D\u8868\u7684\u6570\u636E\u65B0\u589E\u6216\u66F4\u65B0\u540E\uFF0C\u9700\u8981\u81EA\u52A8\u65B0\u589E\u4E00\u6761\u201C\u6587\u7AE0\u7248\u672C\u201D\u6570\u636E\uFF0C\u8BB0\u5F55\u6587\u7AE0\u7684\u4E00\u6B21\u53D8\u66F4\u5386\u53F2\uFF0C\u53EF\u4EE5\u4F7F\u7528\u65B0\u589E\u8282\u70B9\u6765\u5B9E\u73B0\uFF1A",paraId:7,tocIndex:6},{value:"\u6309\u6B64\u914D\u7F6E\u542F\u7528\u5DE5\u4F5C\u6D41\u540E\uFF0C\u5F53\u201C\u6587\u7AE0\u201D\u8868\u7684\u6570\u636E\u53D8\u66F4\u65F6\uFF0C\u4F1A\u81EA\u52A8\u65B0\u589E\u4E00\u6761\u201C\u6587\u7AE0\u7248\u672C\u201D\u6570\u636E\uFF0C\u8BB0\u5F55\u6587\u7AE0\u7684\u53D8\u66F4\u5386\u53F2\u3002",paraId:8,tocIndex:6}],_N={},vN={title:"\u4EBA\u5DE5\u5904\u7406",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/manual.md",lastUpdated:1732240239e3,description:"\u5F53\u4E1A\u52A1\u6D41\u7A0B\u4E0D\u80FD\u5B8C\u5168\u81EA\u52A8\u5316\u51B3\u7B56\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4EBA\u5DE5\u8282\u70B9\uFF0C\u5C06\u90E8\u5206\u51B3\u7B56\u6743\u4EA4\u7ED9\u4EBA\u5DE5\u5904\u7406\u3002"},mN=[{id:"\u4EBA\u5DE5\u5904\u7406",depth:1,title:"\u4EBA\u5DE5\u5904\u7406"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u914D\u7F6E\u8282\u70B9",depth:2,title:"\u914D\u7F6E\u8282\u70B9"},{id:"\u8D1F\u8D23\u4EBA",depth:3,title:"\u8D1F\u8D23\u4EBA"},{id:"\u914D\u7F6E\u7528\u6237\u754C\u9762",depth:3,title:"\u914D\u7F6E\u7528\u6237\u754C\u9762"},{id:"\u6807\u7B7E\u9875",depth:4,title:"\u6807\u7B7E\u9875"},{id:"\u533A\u5757",depth:4,title:"\u533A\u5757"},{id:"\u6570\u636E\u533A\u5757",depth:5,title:"\u6570\u636E\u533A\u5757"},{id:"\u8868\u5355\u533A\u5757",depth:5,title:"\u8868\u5355\u533A\u5757"},{id:"\u914D\u7F6E\u5F85\u529E\u533A\u5757",depth:2,title:"\u914D\u7F6E\u5F85\u529E\u533A\u5757"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u6587\u7AE0\u5BA1\u6838",depth:3,title:"\u6587\u7AE0\u5BA1\u6838"},{id:"\u8BF7\u5047\u5BA1\u6279",depth:3,title:"\u8BF7\u5047\u5BA1\u6279"}],hN=[{value:"\u5F53\u4E1A\u52A1\u6D41\u7A0B\u4E0D\u80FD\u5B8C\u5168\u81EA\u52A8\u5316\u51B3\u7B56\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4EBA\u5DE5\u8282\u70B9\uFF0C\u5C06\u90E8\u5206\u51B3\u7B56\u6743\u4EA4\u7ED9\u4EBA\u5DE5\u5904\u7406\u3002",paraId:0,tocIndex:0},{value:"\u4EBA\u5DE5\u8282\u70B9\u5728\u6267\u884C\u5230\u65F6\u4F1A\u5148\u4E2D\u65AD\u6574\u4E2A\u6D41\u7A0B\u7684\u6267\u884C\uFF0C\u751F\u6210\u5BF9\u5E94\u7528\u6237\u7684\u5F85\u529E\u4EFB\u52A1\uFF0C\u5728\u7528\u6237\u63D0\u4EA4\u540E\u6839\u636E\u6240\u9009\u7684\u72B6\u6001\u51B3\u5B9A\u7EE7\u7EED\u6D41\u7A0B\u3001\u7EE7\u7EED\u7B49\u5F85\u8FD8\u662F\u7EC8\u6B62\u6D41\u7A0B\u3002\u5728\u9700\u8981\u8FDB\u884C\u6D41\u7A0B\u5BA1\u6279\u7B49\u573A\u666F\u4F1A\u975E\u5E38\u6709\u7528\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u4EBA\u5DE5\u5904\u7406\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u4EBA\u5DE5\u8282\u70B9\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u7528\u6237\uFF0C\u4F5C\u4E3A\u5F85\u529E\u4EFB\u52A1\u7684\u6267\u884C\u8005\u3002\u5F85\u529E\u4EFB\u52A1\u7684\u5217\u8868\u53EF\u4EE5\u5728\u9875\u9762\u6DFB\u52A0\u533A\u5757\u65F6\u6DFB\u52A0\uFF0C\u6BCF\u4E2A\u8282\u70B9\u7684\u4EFB\u52A1\u5F39\u7A97\u5185\u5BB9\u9700\u8981\u5728\u8282\u70B9\u4E2D\u8FDB\u884C\u754C\u9762\u914D\u7F6E\u3002",paraId:3,tocIndex:3},{value:"\u9009\u5B9A\u4E00\u4E2A\u7528\u6237\uFF0C\u6216\u8005\u901A\u8FC7\u53D8\u91CF\u9009\u62E9\u4E0A\u4E0B\u6587\u4E2D\u7684\u7528\u6237\u6570\u636E\u7684\u4E3B\u952E\u6216\u5916\u952E\u3002",paraId:4,tocIndex:3},{value:"\u76EE\u524D\u4EBA\u5DE5\u8282\u70B9\u7684\u8D1F\u8D23\u4EBA\u9009\u9879\u6682\u4E0D\u652F\u6301\u9488\u5BF9\u591A\u4EBA\u5904\u7406\uFF0C\u4F1A\u5728\u672A\u6765\u7684\u7248\u672C\u4E2D\u652F\u6301\u3002",paraId:5},{value:"\u5F85\u529E\u4E8B\u9879\u7684\u754C\u9762\u914D\u7F6E\u662F\u4EBA\u5DE5\u8282\u70B9\u7684\u6838\u5FC3\u5185\u5BB9\uFF0C\u53EF\u4EE5\u901A\u8FC7\u70B9\u51FB\u201C\u914D\u7F6E\u7528\u6237\u754C\u9762\u201D\u6309\u94AE\u5F39\u7A97\u6253\u5F00\u72EC\u7ACB\u914D\u7F6E\uFF0C\u548C\u666E\u901A\u9875\u9762\u4E00\u6837\uFF0C\u53EF\u4EE5\u6240\u89C1\u5373\u6240\u5F97\u5730\u914D\u7F6E\uFF1A",paraId:6,tocIndex:4},{value:"\u6807\u7B7E\u9875\u53EF\u4EE5\u7528\u4E8E\u533A\u5206\u4E0D\u540C\u7684\u5185\u5BB9\uFF0C\u4F8B\u5982\u4E00\u4E2A\u6807\u7B7E\u9875\u7528\u4E8E\u901A\u8FC7\u7684\u8868\u5355\u63D0\u4EA4\uFF0C\u53E6\u4E00\u4E2A\u6807\u7B7E\u9875\u7528\u4E8E\u62D2\u7EDD\u7684\u8868\u5355\u63D0\u4EA4\uFF0C\u6216\u8005\u7528\u4E8E\u5C55\u793A\u76F8\u5173\u6570\u636E\u7684\u8BE6\u60C5\u7B49\uFF0C\u53EF\u81EA\u7531\u914D\u7F6E\u3002",paraId:7,tocIndex:5},{value:"\u652F\u6301\u7684\u533A\u5757\u7C7B\u578B\u4E3B\u8981\u6709\u4E24\u5927\u7C7B\uFF0C\u6570\u636E\u533A\u5757\u548C\u8868\u5355\u533A\u5757\uFF0C\u53E6\u5916\u7684 Markdown \u4E3B\u8981\u7528\u4E8E\u63D0\u793A\u4FE1\u606F\u7B49\u9759\u6001\u5185\u5BB9\u3002",paraId:8,tocIndex:6},{value:"\u6570\u636E\u533A\u5757\u53EF\u9009\u62E9\u89E6\u53D1\u5668\u6570\u636E\u6216\u4EFB\u610F\u7684\u8282\u70B9\u5904\u7406\u7ED3\u679C\uFF0C\u7528\u4E8E\u63D0\u4F9B\u7ED9\u5F85\u529E\u8D1F\u8D23\u4EBA\u76F8\u5173\u7684\u4E0A\u4E0B\u6587\u4FE1\u606F\u3002\u4F8B\u5982\u5DE5\u4F5C\u6D41\u662F\u8868\u5355\u4E8B\u4EF6\u89E6\u53D1\u7684\uFF0C\u5373\u53EF\u4EE5\u521B\u5EFA\u4E00\u4E2A\u89E6\u53D1\u6570\u636E\u7684\u8BE6\u60C5\u533A\u5757\uFF0C\u4E0E\u666E\u901A\u9875\u9762\u7684\u8BE6\u60C5\u914D\u7F6E\u4E00\u81F4\uFF0C\u53EF\u4EFB\u9009\u89E6\u53D1\u6570\u636E\u5185\u6709\u7684\u5B57\u6BB5\u8FDB\u884C\u6570\u636E\u5C55\u793A\uFF1A",paraId:9,tocIndex:7},{value:"\u8282\u70B9\u6570\u636E\u533A\u5757\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u9009\u62E9\u4E0A\u6E38\u8282\u70B9\u4E2D\u7684\u6570\u636E\u7ED3\u679C\u4F5C\u4E3A\u8BE6\u60C5\u5C55\u793A\u3002\u4F8B\u5982\u4E0A\u6E38\u4E00\u4E2A\u8BA1\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF0C\u4F5C\u4E3A\u8D1F\u8D23\u4EBA\u5F85\u529E\u7684\u4E0A\u4E0B\u6587\u53C2\u8003\u4FE1\u606F\uFF1A",paraId:10,tocIndex:7},{value:"\u7531\u4E8E\u914D\u7F6E\u754C\u9762\u65F6\u5DE5\u4F5C\u6D41\u90FD\u5904\u4E8E\u672A\u6267\u884C\u7684\u72B6\u6001\uFF0C\u6240\u4EE5\u6570\u636E\u533A\u5757\u4E2D\u90FD\u662F\u6CA1\u6709\u5177\u4F53\u6570\u636E\u663E\u793A\u7684\uFF0C\u53EA\u6709\u5F53\u5DE5\u4F5C\u6D41\u88AB\u89E6\u53D1\u6267\u884C\u540E\uFF0C\u5728\u5F85\u529E\u5F39\u7A97\u754C\u9762\u4E2D\u624D\u53EF\u770B\u5230\u5177\u4F53\u6D41\u7A0B\u7684\u76F8\u5173\u6570\u636E\u3002",paraId:11},{value:"\u5F85\u529E\u754C\u9762\u4E2D\u81F3\u5C11\u9700\u8981\u914D\u7F6E\u4E00\u4E2A\u8868\u5355\u533A\u5757\uFF0C\u4F5C\u4E3A\u5DE5\u4F5C\u6D41\u662F\u5426\u7EE7\u7EED\u6267\u884C\u7684\u6700\u7EC8\u51B3\u7B56\u5904\u7406\uFF0C\u4E0D\u914D\u7F6E\u8868\u5355\u4F1A\u5BFC\u81F4\u6D41\u7A0B\u4E2D\u65AD\u540E\u65E0\u6CD5\u7EE7\u7EED\u3002\u8868\u5355\u533A\u5757\u6709\u4E09\u79CD\u7C7B\u578B\uFF0C\u5206\u522B\u662F\uFF1A",paraId:12,tocIndex:8},{value:"\u81EA\u5B9A\u4E49\u8868\u5355",paraId:13,tocIndex:8},{value:"\u65B0\u589E\u6570\u636E\u8868\u5355",paraId:13,tocIndex:8},{value:"\u66F4\u65B0\u6570\u636E\u8868\u5355",paraId:13,tocIndex:8},{value:"\u65B0\u589E\u6570\u636E\u8868\u5355\u548C\u66F4\u65B0\u6570\u636E\u8868\u5355\u9700\u8981\u9009\u62E9\u57FA\u4E8E\u7684\u6570\u636E\u8868\uFF0C\u5F85\u529E\u7528\u6237\u63D0\u4EA4\u540E\u4F1A\u4F7F\u7528\u8868\u5355\u5185\u7684\u503C\u65B0\u589E\u6216\u66F4\u65B0\u7279\u5B9A\u6570\u636E\u8868\u7684\u6570\u636E\u3002\u81EA\u5B9A\u4E49\u8868\u5355\u5219\u53EF\u4EE5\u81EA\u7531\u5B9A\u4E49\u4E00\u4E2A\u6570\u636E\u8868\u65E0\u5173\u7684\u4E34\u65F6\u8868\u5355\uFF0C\u5F85\u529E\u7528\u6237\u63D0\u4EA4\u540E\u7684\u5B57\u6BB5\u503C\u53EF\u4EE5\u5728\u540E\u7EED\u8282\u70B9\u4E2D\u4F7F\u7528\u3002",paraId:14,tocIndex:8},{value:"\u8868\u5355\u7684\u63D0\u4EA4\u6309\u94AE\u53EF\u4EE5\u914D\u7F6E\u4E09\u79CD\u7C7B\u578B\uFF0C\u5206\u522B\u662F\uFF1A",paraId:15,tocIndex:8},{value:"\u63D0\u4EA4\u540E\u7EE7\u7EED\u6D41\u7A0B",paraId:16,tocIndex:8},{value:"\u63D0\u4EA4\u540E\u7EC8\u6B62\u6D41\u7A0B",paraId:16,tocIndex:8},{value:"\u4EC5\u6682\u5B58\u8868\u5355\u503C",paraId:16,tocIndex:8},{value:"\u4E09\u4E2A\u6309\u94AE\u4EE3\u8868\u6D41\u7A0B\u5904\u7406\u4E2D\u4E09\u79CD\u8282\u70B9\u72B6\u6001\uFF0C\u63D0\u4EA4\u540E\u8BE5\u8282\u70B9\u7684\u72B6\u6001\u4FEE\u6539\u4E3A\u201C\u5B8C\u6210\u201D\u3001\u201C\u62D2\u7EDD\u201D\u6216\u7EE7\u7EED\u5904\u4E8E\u201C\u7B49\u5F85\u201D\u7684\u72B6\u6001\uFF0C\u4E00\u4E2A\u8868\u5355\u81F3\u5C11\u8981\u914D\u7F6E\u524D\u4E24\u8005\u4E4B\u4E00\uFF0C\u4EE5\u51B3\u5B9A\u6574\u4E2A\u6D41\u7A0B\u7684\u540E\u7EED\u5904\u7406\u6D41\u5411\u3002",paraId:17,tocIndex:8},{value:"\u5728\u201C\u7EE7\u7EED\u6D41\u7A0B\u201D\u6309\u94AE\u4E0A\u53EF\u4EE5\u914D\u7F6E\u5BF9\u8868\u5355\u5B57\u6BB5\u7684\u8D4B\u503C\uFF1A",paraId:18,tocIndex:8},{value:"\u6253\u5F00\u5F39\u7A97\u540E\u53EF\u4EE5\u5BF9\u8868\u5355\u4EFB\u610F\u5B57\u6BB5\u8FDB\u884C\u8D4B\u503C\uFF0C\u8868\u5355\u63D0\u4EA4\u540E\u5C06\u4F1A\u4EE5\u8BE5\u503C\u4F5C\u4E3A\u5B57\u6BB5\u7684\u7EC8\u503C\u3002\u901A\u5E38\u5728\u5BF9\u4E00\u4E9B\u6570\u636E\u8FDB\u884C\u5BA1\u6838\u65F6\u6BD4\u8F83\u6709\u7528\uFF0C\u53EF\u4EE5\u5728\u8868\u5355\u4E2D\u4F7F\u7528\u591A\u4E2A\u4E0D\u540C\u7684\u201C\u7EE7\u7EED\u6D41\u7A0B\u201D\u6309\u94AE\uFF0C\u6BCF\u4E2A\u6309\u94AE\u5BF9\u7C7B\u4F3C\u72B6\u6001\u7684\u5B57\u6BB5\u8BBE\u7F6E\u4E0D\u540C\u7684\u679A\u4E3E\u503C\uFF0C\u4EE5\u8FBE\u5230\u7EE7\u7EED\u540E\u7EED\u6D41\u7A0B\u6267\u884C\u4E14\u4F7F\u7528\u4E0D\u540C\u6570\u636E\u503C\u7684\u6548\u679C\u3002",paraId:19,tocIndex:8},{value:"\u5BF9\u4E8E\u4EBA\u5DE5\u5904\u7406\u6765\u8BF4\uFF0C\u8FD8\u9700\u8981\u5728\u9875\u9762\u4E2D\u6DFB\u52A0\u5F85\u529E\u5217\u8868\uFF0C\u7528\u4E8E\u5C55\u793A\u5F85\u529E\u4EFB\u52A1\uFF0C\u76F8\u5173\u4EBA\u5458\u624D\u53EF\u4EE5\u901A\u8FC7\u8BE5\u5217\u8868\u8FDB\u5165\u4EBA\u5DE5\u8282\u70B9\u7684\u5177\u4F53\u4EFB\u52A1\u5904\u7406\u3002\u53EF\u4EE5\u4ECE\u9875\u9762\u4E2D\u7684\u533A\u5757\u4E2D\u9009\u62E9\u201C\u5DE5\u4F5C\u6D41\u5F85\u529E\u201D\uFF0C\u6DFB\u52A0\u5F85\u529E\u5217\u8868\u7684\u533A\u5757\uFF1A",paraId:20,tocIndex:9},{value:"\u5F85\u529E\u5217\u8868\u533A\u5757\u793A\u4F8B\uFF1A",paraId:21,tocIndex:9},{value:"\u4E4B\u540E\u76F8\u5173\u4EBA\u5458\u53EF\u4EE5\u70B9\u51FB\u5BF9\u5E94\u7684\u5F85\u529E\u4EFB\u52A1\uFF0C\u8FDB\u5165\u5F85\u529E\u5F39\u7A97\uFF0C\u8FDB\u884C\u4EBA\u5DE5\u5904\u7406\uFF1A",paraId:22,tocIndex:9},{value:"\u5047\u8BBE\u666E\u901A\u7528\u6237\u63D0\u4EA4\u7684\u6587\u7AE0\uFF0C\u9700\u8981\u7BA1\u7406\u5458\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u80FD\u66F4\u65B0\u4E3A\u5DF2\u53D1\u5E03\u72B6\u6001\uFF0C\u5426\u5219\u5982\u679C\u62D2\u7EDD\u8BE5\u6D41\u7A0B\uFF0C\u6587\u7AE0\u5C06\u4FDD\u6301\u8349\u7A3F\u72B6\u6001\uFF08\u4E0D\u516C\u5F00\uFF09\uFF0C\u8FD9\u4E00\u6D41\u7A0B\u53EF\u4EE5\u4F7F\u7528\u4EBA\u5DE5\u8282\u70B9\u4E2D\u7684\u66F4\u65B0\u8868\u5355\u6765\u5B9E\u73B0\u3002",paraId:23,tocIndex:11},{value:"\u521B\u5EFA\u4E00\u4E2A\u7531\u201C\u65B0\u589E\u6587\u7AE0\u201D\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5E76\u589E\u52A0\u4E00\u4E2A\u4EBA\u5DE5\u8282\u70B9\uFF1A",paraId:24,tocIndex:11},{value:` +`,paraId:6,tocIndex:2}],EL={},DL={title:"Loop",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/loop.md",lastUpdated:173254844e4,description:"The loop functions in a manner akin to for, while, or forEach constructs in programming languages. It\u2019s designed for situations where you need to repeat certain operations a specific number of times or iterate over a dataset (such as an array). The loop node is your go-to tool for such tasks."},OL=[{id:"loop",depth:1,title:"Loop"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-node",depth:3,title:"Creating Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"loop-object",depth:4,title:"Loop Object"},{id:"loop-condition",depth:4,title:"Loop condition"},{id:"error-handling-of-internal-nodes-in-loop",depth:4,title:"Error handling of internal nodes in loop"},{id:"example",depth:3,title:"Example"}],RL=[{value:"The loop functions in a manner akin to ",paraId:0},{value:"for",paraId:0},{value:", ",paraId:0},{value:"while",paraId:0},{value:", or ",paraId:0},{value:"forEach",paraId:0},{value:" constructs in programming languages. It\u2019s designed for situations where you need to repeat certain operations a specific number of times or iterate over a dataset (such as an array). The loop node is your go-to tool for such tasks.",paraId:0},{value:"This plugin comes pre-installed, so no additional setup is necessary.",paraId:1,tocIndex:1},{value:'In the workflow configuration interface, you can add a "Loop" node by clicking the plus sign ("+") in the process:',paraId:2,tocIndex:3},{value:"Once you create the loop node, an internal branch specifically for the loop is generated. You can then populate this branch with any number of nodes. These nodes will have access to not only the workflow context variables but also the local variables defined within the loop context\u2014such as the current data object or the iteration index (which starts at ",paraId:3,tocIndex:3},{value:"0",paraId:3,tocIndex:3},{value:"). These local variables are scoped exclusively to the loop. For nested loops, you can use variables specific to each loop level.",paraId:3,tocIndex:3},{value:"The loop node can handle various data types for the loop object, each in a different way:",paraId:4,tocIndex:5},{value:"Array",paraId:5,tocIndex:5},{value:": This is the most common use case. Typically, you'll select a workflow context variable, such as the results from a query node or preloaded data from a many-to-many relationship. If an array is selected, the loop node will iterate over each element, assigning the current element to a local variable within the loop context for each iteration.",paraId:5,tocIndex:5},{value:"Number",paraId:6,tocIndex:5},{value:": When the loop object is a number, it\u2019s treated as the number of iterations. The index within the local variable will match the loop object\u2019s value.",paraId:6,tocIndex:5},{value:"String",paraId:7,tocIndex:5},{value:": If the loop object is a string, the loop will iterate according to the string's length, processing each character by its index.",paraId:7,tocIndex:5},{value:"Others",paraId:8,tocIndex:5},{value:": Other data types (including objects) are treated as a single loop object, resulting in just one iteration\u2014typically not requiring a loop.",paraId:8,tocIndex:5},{value:"You can also input constants directly when working with numbers and strings. For instance, inputting ",paraId:9,tocIndex:5},{value:"5",paraId:9,tocIndex:5},{value:" (number type) will cause the loop to run 5 times, while inputting ",paraId:9,tocIndex:5},{value:"abc",paraId:9,tocIndex:5},{value:" (string type) will result in 3 iterations, processing ",paraId:9,tocIndex:5},{value:"a",paraId:9,tocIndex:5},{value:", ",paraId:9,tocIndex:5},{value:"b",paraId:9,tocIndex:5},{value:", and ",paraId:9,tocIndex:5},{value:"c",paraId:9,tocIndex:5},{value:" individually. The variable selection tool allows you to choose the type of constant you want to use.",paraId:9,tocIndex:5},{value:"From version ",paraId:10,tocIndex:6},{value:"v1.4.0-beta",paraId:10,tocIndex:6},{value:" on, loop condition options are added, and could be enabled in node configuration.",paraId:10,tocIndex:6},{value:"Condition",paraId:11,tocIndex:6},{value:"Similar to the configuration in a condition node, combination of conditions can be configured, and variables from the current loop, such as the loop item and loop index, can also be used.",paraId:12,tocIndex:6},{value:"Checkpoint",paraId:13,tocIndex:6},{value:"Similar to ",paraId:14,tocIndex:6},{value:"while",paraId:14,tocIndex:6},{value:" and ",paraId:14,tocIndex:6},{value:"do/while",paraId:14,tocIndex:6},{value:" in programming languages, conditions can be configured to be evaluated either before each loop iteration or after it ends. Post-condition evaluation can execute other nodes in the loop body first before performing the condition check.",paraId:14,tocIndex:6},{value:"When condition is not met",paraId:15,tocIndex:6},{value:"Similar to ",paraId:16,tocIndex:6},{value:"break",paraId:16,tocIndex:6},{value:" and ",paraId:16,tocIndex:6},{value:"continue",paraId:16,tocIndex:6},{value:" clause in programming languages, could be use to determine whether to break or continue the loop.",paraId:16,tocIndex:6},{value:"From version ",paraId:17,tocIndex:7},{value:"v1.4.0-beta",paraId:17,tocIndex:7},{value:" on, when an internal node in a loop fails to execute (due to unmet conditions, errors, etc.), the next step can be determined through this configuration. Three handling methods are supported:",paraId:17,tocIndex:7},{value:"Exit the process (default)",paraId:18,tocIndex:7},{value:"Exit the loop and continue the process",paraId:18,tocIndex:7},{value:"Continue to the next loop item",paraId:18,tocIndex:7},{value:"You can choose the appropriate method as needed.",paraId:19,tocIndex:7},{value:"Consider the following scenario: when placing an order, you need to check the inventory of each product in the order. If the inventory is sufficient, the stock is deducted; otherwise, the product in the order details is marked as invalid.",paraId:20,tocIndex:8},{value:"Create three collections: Product <-(1",paraId:21,tocIndex:8},{value:")-- Order Details --(m:1)-> Order , with the following data model:",paraId:21,tocIndex:8},{value:"Field Name",paraId:22,tocIndex:8},{value:"Field Type",paraId:22,tocIndex:8},{value:"Order Details",paraId:22,tocIndex:8},{value:"Many-to-One (Details)",paraId:22,tocIndex:8},{value:"Total Price",paraId:22,tocIndex:8},{value:"Number",paraId:22,tocIndex:8},{value:"Field Name",paraId:23,tocIndex:8},{value:"Field Type",paraId:23,tocIndex:8},{value:"Product",paraId:23,tocIndex:8},{value:"One-to-Many (Product)",paraId:23,tocIndex:8},{value:"Quantity",paraId:23,tocIndex:8},{value:"Number",paraId:23,tocIndex:8},{value:"Field Name",paraId:24,tocIndex:8},{value:"Field Type",paraId:24,tocIndex:8},{value:"Product Name",paraId:24,tocIndex:8},{value:"Single-line Text",paraId:24,tocIndex:8},{value:"Price",paraId:24,tocIndex:8},{value:"Number",paraId:24,tocIndex:8},{value:"Inventory",paraId:24,tocIndex:8},{value:"Integer",paraId:24,tocIndex:8},{value:'Create a workflow, selecting "Collection event" as the trigger, and choose the "Order" table with "Create record" as the trigger. Additionally, preload relationship data from the "Order Details" table and the Product Table under details:',paraId:25,tocIndex:8},{value:'Create a loop node, selecting the loop object as "Trigger Data / Order Details," which loops through each record in the order details table:',paraId:26,tocIndex:8},{value:'Inside the loop node, create a "Condition" node to check if the product inventory is sufficient:',paraId:27,tocIndex:8},{value:'If the inventory is sufficient, create a "Calculation" and an "Update record" node under the "Yes" branch to update the inventory after deduction:',paraId:28,tocIndex:8},{value:'If the inventory is insufficient, create an "Update record" node under the "No" branch to update the status of the order detail to "Invalid":',paraId:29,tocIndex:8},{value:"The complete process structure is illustrated below:",paraId:30,tocIndex:8},{value:"After configuration and activation of this workflow, every time a new order is created, the system will automatically check the inventory of each product in the order. If sufficient inventory is available, the stock will be deducted; otherwise, the product in the order details will be marked as invalid (helping to calculate the valid total order price).",paraId:31,tocIndex:8}],ML={},LL={title:"Workflow Loop",toc:"menu",filename:"docs/en-US/handbook/workflow-loop/index.md",lastUpdated:173254844e4,description:"The loop functions in a manner akin to for, while, or forEach constructs in programming languages. It\u2019s designed for situations where you need to repeat certain operations a specific number of times or iterate over a dataset (such as an array). The loop node is your go-to tool for such tasks."},NL=[{id:"loop",depth:2,title:"Loop"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"creating-node",depth:3,title:"Creating Node"},{id:"node-configuration",depth:3,title:"Node Configuration"},{id:"loop-object",depth:4,title:"Loop Object"},{id:"loop-condition",depth:4,title:"Loop condition"},{id:"error-handling-of-internal-nodes-in-loop",depth:4,title:"Error handling of internal nodes in loop"},{id:"example",depth:3,title:"Example"}],zL=[{value:"The loop functions in a manner akin to ",paraId:0},{value:"for",paraId:0},{value:", ",paraId:0},{value:"while",paraId:0},{value:", or ",paraId:0},{value:"forEach",paraId:0},{value:" constructs in programming languages. It\u2019s designed for situations where you need to repeat certain operations a specific number of times or iterate over a dataset (such as an array). The loop node is your go-to tool for such tasks.",paraId:0},{value:"This plugin comes pre-installed, so no additional setup is necessary.",paraId:1,tocIndex:1},{value:'In the workflow configuration interface, you can add a "Loop" node by clicking the plus sign ("+") in the process:',paraId:2,tocIndex:3},{value:"Once you create the loop node, an internal branch specifically for the loop is generated. You can then populate this branch with any number of nodes. These nodes will have access to not only the workflow context variables but also the local variables defined within the loop context\u2014such as the current data object or the iteration index (which starts at ",paraId:3,tocIndex:3},{value:"0",paraId:3,tocIndex:3},{value:"). These local variables are scoped exclusively to the loop. For nested loops, you can use variables specific to each loop level.",paraId:3,tocIndex:3},{value:"The loop node can handle various data types for the loop object, each in a different way:",paraId:4,tocIndex:5},{value:"Array",paraId:5,tocIndex:5},{value:": This is the most common use case. Typically, you'll select a workflow context variable, such as the results from a query node or preloaded data from a many-to-many relationship. If an array is selected, the loop node will iterate over each element, assigning the current element to a local variable within the loop context for each iteration.",paraId:5,tocIndex:5},{value:"Number",paraId:6,tocIndex:5},{value:": When the loop object is a number, it\u2019s treated as the number of iterations. The index within the local variable will match the loop object\u2019s value.",paraId:6,tocIndex:5},{value:"String",paraId:7,tocIndex:5},{value:": If the loop object is a string, the loop will iterate according to the string's length, processing each character by its index.",paraId:7,tocIndex:5},{value:"Others",paraId:8,tocIndex:5},{value:": Other data types (including objects) are treated as a single loop object, resulting in just one iteration\u2014typically not requiring a loop.",paraId:8,tocIndex:5},{value:"You can also input constants directly when working with numbers and strings. For instance, inputting ",paraId:9,tocIndex:5},{value:"5",paraId:9,tocIndex:5},{value:" (number type) will cause the loop to run 5 times, while inputting ",paraId:9,tocIndex:5},{value:"abc",paraId:9,tocIndex:5},{value:" (string type) will result in 3 iterations, processing ",paraId:9,tocIndex:5},{value:"a",paraId:9,tocIndex:5},{value:", ",paraId:9,tocIndex:5},{value:"b",paraId:9,tocIndex:5},{value:", and ",paraId:9,tocIndex:5},{value:"c",paraId:9,tocIndex:5},{value:" individually. The variable selection tool allows you to choose the type of constant you want to use.",paraId:9,tocIndex:5},{value:"From version ",paraId:10,tocIndex:6},{value:"v1.4.0-beta",paraId:10,tocIndex:6},{value:" on, loop condition options are added, and could be enabled in node configuration.",paraId:10,tocIndex:6},{value:"Condition",paraId:11,tocIndex:6},{value:"Similar to the configuration in a condition node, combination of conditions can be configured, and variables from the current loop, such as the loop item and loop index, can also be used.",paraId:12,tocIndex:6},{value:"Checkpoint",paraId:13,tocIndex:6},{value:"Similar to ",paraId:14,tocIndex:6},{value:"while",paraId:14,tocIndex:6},{value:" and ",paraId:14,tocIndex:6},{value:"do/while",paraId:14,tocIndex:6},{value:" in programming languages, conditions can be configured to be evaluated either before each loop iteration or after it ends. Post-condition evaluation can execute other nodes in the loop body first before performing the condition check.",paraId:14,tocIndex:6},{value:"When condition is not met",paraId:15,tocIndex:6},{value:"Similar to ",paraId:16,tocIndex:6},{value:"break",paraId:16,tocIndex:6},{value:" and ",paraId:16,tocIndex:6},{value:"continue",paraId:16,tocIndex:6},{value:" clause in programming languages, could be use to determine whether to break or continue the loop.",paraId:16,tocIndex:6},{value:"From version ",paraId:17,tocIndex:7},{value:"v1.4.0-beta",paraId:17,tocIndex:7},{value:" on, when an internal node in a loop fails to execute (due to unmet conditions, errors, etc.), the next step can be determined through this configuration. Three handling methods are supported:",paraId:17,tocIndex:7},{value:"Exit the process (default)",paraId:18,tocIndex:7},{value:"Exit the loop and continue the process",paraId:18,tocIndex:7},{value:"Continue to the next loop item",paraId:18,tocIndex:7},{value:"You can choose the appropriate method as needed.",paraId:19,tocIndex:7},{value:"Consider the following scenario: when placing an order, you need to check the inventory of each product in the order. If the inventory is sufficient, the stock is deducted; otherwise, the product in the order details is marked as invalid.",paraId:20,tocIndex:8},{value:"Create three collections: Product <-(1:m)-- Order Details --(m:1)-> Order , with the following data model:",paraId:21,tocIndex:8},{value:"Field Name",paraId:22,tocIndex:8},{value:"Field Type",paraId:22,tocIndex:8},{value:"Order Details",paraId:22,tocIndex:8},{value:"Many-to-One (Details)",paraId:22,tocIndex:8},{value:"Total Price",paraId:22,tocIndex:8},{value:"Number",paraId:22,tocIndex:8},{value:"Field Name",paraId:23,tocIndex:8},{value:"Field Type",paraId:23,tocIndex:8},{value:"Product",paraId:23,tocIndex:8},{value:"One-to-Many (Product)",paraId:23,tocIndex:8},{value:"Quantity",paraId:23,tocIndex:8},{value:"Number",paraId:23,tocIndex:8},{value:"Field Name",paraId:24,tocIndex:8},{value:"Field Type",paraId:24,tocIndex:8},{value:"Product Name",paraId:24,tocIndex:8},{value:"Single-line Text",paraId:24,tocIndex:8},{value:"Price",paraId:24,tocIndex:8},{value:"Number",paraId:24,tocIndex:8},{value:"Inventory",paraId:24,tocIndex:8},{value:"Integer",paraId:24,tocIndex:8},{value:'Create a workflow, selecting "Collection event" as the trigger, and choose the "Order" table with "Create record" as the trigger. Additionally, preload relationship data from the "Order Details" table and the Product Table under details:',paraId:25,tocIndex:8},{value:'Create a loop node, selecting the loop object as "Trigger Data / Order Details," which loops through each record in the order details table:',paraId:26,tocIndex:8},{value:'Inside the loop node, create a "Condition" node to check if the product inventory is sufficient:',paraId:27,tocIndex:8},{value:'If the inventory is sufficient, create a "Calculation" and an "Update record" node under the "Yes" branch to update the inventory after deduction:',paraId:28,tocIndex:8},{value:'If the inventory is insufficient, create an "Update record" node under the "No" branch to update the status of the order detail to "Invalid":',paraId:29,tocIndex:8},{value:"The complete process structure is illustrated below:",paraId:30,tocIndex:8},{value:"After configuration and activation of this workflow, every time a new order is created, the system will automatically check the inventory of each product in the order. If sufficient inventory is available, the stock will be deducted; otherwise, the product in the order details will be marked as invalid (helping to calculate the valid total order price).",paraId:31,tocIndex:8}],FL={},BL={title:"\u57FA\u4E8E\u5730\u56FE\u7684\u51E0\u4F55\u56FE\u5F62",toc:"menu",filename:"docs/en-US/manual/collection/fields/map.md",lastUpdated:173254844e4},jL=[{id:"\u57FA\u4E8E\u5730\u56FE\u7684\u51E0\u4F55\u56FE\u5F62",depth:1,title:"\u57FA\u4E8E\u5730\u56FE\u7684\u51E0\u4F55\u56FE\u5F62"}],HL=[],WL={},$L={title:"\u6570\u636E\u8868\u7BA1\u7406",toc:"menu",filename:"docs/en-US/manual/collection/management.md",lastUpdated:173254844e4,description:"\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u53CA\u62D6\u62FD\u6392\u5E8F"},GL=[{id:"\u6570\u636E\u8868\u7BA1\u7406",depth:1,title:"\u6570\u636E\u8868\u7BA1\u7406"},{id:"\u6570\u636E\u8868\u7BA1\u7406-1",depth:3,title:"\u6570\u636E\u8868\u7BA1\u7406"},{id:"\u6570\u636E\u8868\u5B57\u6BB5\u7BA1\u7406",depth:3,title:"\u6570\u636E\u8868\u5B57\u6BB5\u7BA1\u7406"},{id:"\u6570\u636E\u8868\u5206\u7C7B\u7BA1\u7406",depth:3,title:"\u6570\u636E\u8868\u5206\u7C7B\u7BA1\u7406"}],VL=[{value:"\u6570\u636E\u8868\u7684\u589E\u5220\u6539\u67E5\u53CA\u62D6\u62FD\u6392\u5E8F",paraId:0,tocIndex:1},{value:"\u6570\u636E\u8868\u5B57\u6BB5\u7684\u589E\u5220\u6539",paraId:1,tocIndex:2},{value:"\u53EF\u4EE5\u5C06\u6570\u636E\u8868\u6309\u7167\u4E0D\u540C\u7684\u6807\u51C6\u8FDB\u884C\u7EC4\u7EC7\uFF0C\u4F7F\u6570\u636E\u7684\u7ED3\u6784\u66F4\u52A0\u6E05\u6670\u964D\u4F4E\u6570\u636E\u7BA1\u7406\u7684\u590D\u6742\u6027",paraId:2,tocIndex:3},{value:"\u6570\u636E\u8868\u5206\u7C7B\u7684\u589E\u5220\u6539\u53CA\u6392\u5E8F",paraId:3,tocIndex:3}],KL={},ZL={title:"\u64CD\u4F5C",toc:"menu",filename:"docs/en-US/manual/core-concepts/actions.md",lastUpdated:173254844e4,description:"\u64CD\u4F5C\u662F\u5B8C\u6210\u67D0\u4E2A\u7279\u5B9A\u76EE\u6807\u7684\u52A8\u4F5C\u96C6\u5408\u3002\u5728 NocoBase \u4E2D\u901A\u8FC7 \u64CD\u4F5C\u6765\u5904\u7406\u6570\u636E\u6216\u8005\u4E0E\u670D\u52A1\u5668\u901A\u4FE1\u3002 \u64CD\u4F5C\u901A\u5E38\u4F1A\u901A\u8FC7\u70B9\u51FB\u67D0\u4E2A\u6309\u94AE\u89E6\u53D1\u3002"},YL=[{id:"\u64CD\u4F5C",depth:1,title:"\u64CD\u4F5C"},{id:"\u64CD\u4F5C\u7C7B\u578B",depth:2,title:"\u64CD\u4F5C\u7C7B\u578B"},{id:"\u914D\u7F6E\u64CD\u4F5C",depth:2,title:"\u914D\u7F6E\u64CD\u4F5C"}],QL=[{value:"\u64CD\u4F5C",paraId:0,tocIndex:0},{value:"\u662F\u5B8C\u6210\u67D0\u4E2A\u7279\u5B9A\u76EE\u6807\u7684\u52A8\u4F5C\u96C6\u5408\u3002\u5728 NocoBase \u4E2D\u901A\u8FC7 ",paraId:0,tocIndex:0},{value:"\u64CD\u4F5C",paraId:0,tocIndex:0},{value:"\u6765\u5904\u7406\u6570\u636E\u6216\u8005\u4E0E\u670D\u52A1\u5668\u901A\u4FE1\u3002 \u64CD\u4F5C\u901A\u5E38\u4F1A\u901A\u8FC7\u70B9\u51FB\u67D0\u4E2A\u6309\u94AE\u89E6\u53D1\u3002",paraId:0,tocIndex:0},{value:"NocoBase \u76EE\u524D\u652F\u6301 10 \u51E0\u79CD\u64CD\u4F5C\uFF0C\u672A\u6765\u53EF\u4EE5\u901A\u8FC7\u63D2\u4EF6\u7684\u65B9\u5F0F\u652F\u6301\u66F4\u591A\u79CD\u3002",paraId:1,tocIndex:1},{value:"\u540D\u79F0",paraId:2,tocIndex:1},{value:"\u63CF\u8FF0",paraId:2,tocIndex:1},{value:"\u7B5B\u9009",paraId:2,tocIndex:1},{value:"\u6307\u5B9A\u6570\u636E\u7684\u663E\u793A\u8303\u56F4",paraId:2,tocIndex:1},{value:"\u6DFB\u52A0",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u6DFB\u52A0\u65B0\u6570\u636E\u7684\u5F39\u7A97\uFF0C\u5728\u5F39\u7A97\u91CC\u901A\u5E38\u5305\u542B\u4E00\u4E2A\u8868\u5355\u533A\u5757",paraId:2,tocIndex:1},{value:"\u67E5\u770B",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u67E5\u770B\u6307\u5B9A\u6570\u636E\u7684\u5F39\u7A97\uFF0C\u5728\u5F39\u7A97\u91CC\u901A\u5E38\u5305\u542B\u4E00\u4E2A\u8BE6\u60C5\u533A\u5757",paraId:2,tocIndex:1},{value:"\u7F16\u8F91",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u4FEE\u6539\u6307\u5B9A\u6570\u636E\u7684\u5F39\u7A97\uFF0C\u5728\u5F39\u7A97\u91CC\u901A\u5E38\u5305\u542B\u4E00\u4E2A\u8868\u5355\u533A\u5757",paraId:2,tocIndex:1},{value:"\u5220\u9664",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u5220\u9664\u6307\u5B9A\u6570\u636E\u7684\u5BF9\u8BDD\u6846\uFF0C\u786E\u8BA4\u540E\u5220\u9664",paraId:2,tocIndex:1},{value:"\u5BFC\u51FA",paraId:2,tocIndex:1},{value:"\u5C06\u6570\u636E\u5BFC\u51FA\u4E3A Excel\uFF0C\u5E38\u548C\u7B5B\u9009\u7EC4\u5408\u4F7F\u7528",paraId:2,tocIndex:1},{value:"\u6253\u5370",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u6D4F\u89C8\u5668\u6253\u5370\u7A97\u53E3\uFF0C\u6253\u5370\u6307\u5B9A\u7684\u6570\u636E\uFF0C\u5E38\u548C\u8BE6\u60C5\u533A\u5757\u7EC4\u5408\u4F7F\u7528",paraId:2,tocIndex:1},{value:"\u63D0\u4EA4",paraId:2,tocIndex:1},{value:"\u5C06\u6307\u5B9A\u8868\u5355\u533A\u5757\u7684\u6570\u636E\u63D0\u4EA4\u5230\u670D\u52A1\u7AEF",paraId:2,tocIndex:1},{value:"\u5237\u65B0",paraId:2,tocIndex:1},{value:"\u5237\u65B0\u5F53\u524D\u533A\u5757\u5185\u7684\u6570\u636E",paraId:2,tocIndex:1},{value:"\u5BFC\u5165",paraId:2,tocIndex:1},{value:"\u4ECE Excel \u6A21\u677F\u4E2D\u5BFC\u5165\u6570\u636E",paraId:2,tocIndex:1},{value:"\u6279\u91CF\u7F16\u8F91",paraId:2,tocIndex:1},{value:"\u6279\u91CF\u7F16\u8F91\u6570\u636E",paraId:2,tocIndex:1},{value:"\u6279\u91CF\u66F4\u65B0",paraId:2,tocIndex:1},{value:"\u6279\u91CF\u66F4\u65B0\u6570\u636E",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u5F39\u7A97",paraId:2,tocIndex:1},{value:"\u6253\u5F00\u5F39\u7A97\u6216\u62BD\u5C49\uFF0C\u5728\u91CC\u9762\u53EF\u4EE5\u653E\u7F6E\u533A\u5757",paraId:2,tocIndex:1},{value:"\u66F4\u65B0\u6570\u636E",paraId:2,tocIndex:1},{value:"\u70B9\u51FB\u540E\u81EA\u52A8\u66F4\u65B0\u6307\u5B9A\u7684\u5B57\u6BB5",paraId:2,tocIndex:1},{value:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",paraId:2,tocIndex:1},{value:"\u5411\u7B2C\u4E09\u65B9\u53D1\u9001\u8BF7\u6C42",paraId:2,tocIndex:1},{value:"\u5728\u754C\u9762\u914D\u7F6E\u6A21\u5F0F\u4E0B\uFF0C\u5C06\u9F20\u6807\u79FB\u5230\u64CD\u4F5C\u6309\u94AE\u4E0A\uFF0C\u53F3\u4E0A\u89D2\u5C31\u4F1A\u51FA\u73B0\u8BE5\u64CD\u4F5C\u652F\u6301\u7684\u914D\u7F6E\u9879\u3002\u6BD4\u5982\u7B5B\u9009\u64CD\u4F5C\uFF1A",paraId:3,tocIndex:2}],JL={},XL={title:"\u7CFB\u7EDF\u8BBE\u7F6E",toc:"menu",filename:"docs/en-US/manual/system-settings/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},eN=[{id:"\u7CFB\u7EDF\u8BBE\u7F6E",depth:1,title:"\u7CFB\u7EDF\u8BBE\u7F6E"}],aN=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],tN={},nN={title:"\u6DFB\u52A0\u6570\u636E",toc:"menu",filename:"docs/en-US/manual/ui/actions/add-record.md",lastUpdated:173254844e4,description:"\u81EA\u5B9A\u4E49\u6DFB\u52A0\u6570\u636E\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5728\u64CD\u4F5C\u4E2D\u4E3A\u4EFB\u610F\u6570\u636E\u8868\u4E2D\u6DFB\u52A0\u6570\u636E"},oN=[{id:"\u6DFB\u52A0\u6570\u636E",depth:1,title:"\u6DFB\u52A0\u6570\u636E"}],rN=[{value:"\u81EA\u5B9A\u4E49\u6DFB\u52A0\u6570\u636E\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5728\u64CD\u4F5C\u4E2D\u4E3A\u4EFB\u610F\u6570\u636E\u8868\u4E2D\u6DFB\u52A0\u6570\u636E",paraId:0,tocIndex:0}],dN={},iN={title:"\u6253\u5F00\u5F39\u7A97",toc:"menu",filename:"docs/en-US/manual/ui/actions/open-popup.md",lastUpdated:173254844e4,description:"\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\u4EE5\u5F39\u7A97\u7684\u65B9\u5F0F\u5448\u73B0\u6570\u636E\uFF0C\u53EF\u81EA\u5B9A\u4E49\u914D\u7F6E\u8BE6\u60C5\u533A\u5757\u6216\u8868\u5355\u533A\u5757\uFF0C\u9002\u7528\u4E8E\u591A\u79CD\u573A\u666F\u3002\u5982\u5F53\u6570\u636E\u8868\u4E2D\u6709\u8BB8\u591A\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u5C06\u5B57\u6BB5\u62C6\u5206\u5230\u4E0D\u540C\u7684\u64CD\u4F5C\u533A\u5757\u4E2D\uFF0C\u4E13\u6CE8\u4E8E\u67E5\u770B\u6216\u4FEE\u6539\u67D0\u4E9B\u5B57\u6BB5\uFF0C\u6839\u636E\u4E1A\u52A1\u9700\u6C42\u521B\u5EFA\u591A\u4E2A\u5B9A\u5236\u5316\u6570\u636E\u5C55\u793A\u6216\u7F16\u8F91\u754C\u9762\u7684\u64CD\u4F5C"},lN=[{id:"\u6253\u5F00\u5F39\u7A97",depth:1,title:"\u6253\u5F00\u5F39\u7A97"}],cN=[{value:"\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\u4EE5\u5F39\u7A97\u7684\u65B9\u5F0F\u5448\u73B0\u6570\u636E\uFF0C\u53EF\u81EA\u5B9A\u4E49\u914D\u7F6E\u8BE6\u60C5\u533A\u5757\u6216\u8868\u5355\u533A\u5757\uFF0C\u9002\u7528\u4E8E\u591A\u79CD\u573A\u666F\u3002\u5982\u5F53\u6570\u636E\u8868\u4E2D\u6709\u8BB8\u591A\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u5C06\u5B57\u6BB5\u62C6\u5206\u5230\u4E0D\u540C\u7684\u64CD\u4F5C\u533A\u5757\u4E2D\uFF0C\u4E13\u6CE8\u4E8E\u67E5\u770B\u6216\u4FEE\u6539\u67D0\u4E9B\u5B57\u6BB5\uFF0C\u6839\u636E\u4E1A\u52A1\u9700\u6C42\u521B\u5EFA\u591A\u4E2A\u5B9A\u5236\u5316\u6570\u636E\u5C55\u793A\u6216\u7F16\u8F91\u754C\u9762\u7684\u64CD\u4F5C",paraId:0,tocIndex:0},{value:"\u5982\u56FE\u8BA2\u5355\u8868\u683C\u4E2D\u914D\u7F6E\u4E86\u4E09\u4E2A\u6253\u5F00\u5F39\u7A97\u64CD\u4F5C\uFF0C\u67E5\u770B\u4E3B\u8BA2\u5355\uFF08\u8BA2\u5355\u4E3B\u4FE1\u606F\uFF09\uFF0C\u67E5\u770B\u5546\u54C1\uFF08\u8BA2\u5355\u7684\u5173\u8054\u7684\u5546\u54C1\u4FE1\u606F\uFF09\u548C\u67E5\u770B\u5BA2\u6237\uFF08\u8BA2\u5355\u5173\u8054\u7684\u5BA2\u6237\u4FE1\u606F\uFF09",paraId:1,tocIndex:0}],sN={},uN={title:"\u65B0\u589E\u6570\u636E",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/create.md",lastUpdated:173254844e4,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u65B0\u589E\u4E00\u884C\u6570\u636E\u3002"},pN=[{id:"\u65B0\u589E\u6570\u636E",depth:1,title:"\u65B0\u589E\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u5B57\u6BB5\u503C",depth:3,title:"\u5B57\u6BB5\u503C"},{id:"\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E",depth:3,title:"\u9884\u52A0\u8F7D\u5173\u7CFB\u6570\u636E"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],IN=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u65B0\u589E\u4E00\u884C\u6570\u636E\u3002",paraId:0,tocIndex:0},{value:"\u65B0\u589E\u6570\u636E\u884C\u7684\u5B57\u6BB5\u503C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u5BF9\u5173\u7CFB\u5B57\u6BB5\u7684\u8D4B\u503C\u53EF\u4EE5\u76F4\u63A5\u5F15\u7528\u4E0A\u4E0B\u6587\u4E2D\u7684\u5BF9\u5E94\u6570\u636E\u53D8\u91CF\uFF0C\u53EF\u4EE5\u662F\u5BF9\u8C61\uFF0C\u4E5F\u53EF\u4EE5\u662F\u5916\u952E\u7684\u503C\u3002\u5982\u679C\u4E0D\u4F7F\u7528\u53D8\u91CF\uFF0C\u5219\u9700\u8981\u624B\u52A8\u586B\u5199\u5916\u952E\u7684\u503C\uFF0C\u5BF9\u591A\u5173\u7CFB\u7684\u591A\u4E2A\u5916\u952E\u503C\u9700\u8981\u4F7F\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\u7684\u5F62\u5F0F\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u65B0\u589E\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u9009\u62E9\u8981\u65B0\u589E\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:3,tocIndex:3},{value:"\u9488\u5BF9\u6570\u636E\u8868\u7684\u5B57\u6BB5\u8FDB\u884C\u8D4B\u503C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4E5F\u53EF\u4EE5\u624B\u52A8\u586B\u5199\u9759\u6001\u503C\u3002",paraId:4,tocIndex:4},{value:"\u6CE8\uFF1A\u5DE5\u4F5C\u6D41\u4E2D\u65B0\u589E\u8282\u70B9\u65B0\u589E\u7684\u6570\u636E\u4E0D\u4F1A\u81EA\u52A8\u5904\u7406\u201C\u521B\u5EFA\u4EBA\u201D\u3001\u201C\u6700\u540E\u4FEE\u6539\u4EBA\u201D\u7B49\u7528\u6237\u6570\u636E\uFF0C\u9700\u8981\u6839\u636E\u60C5\u51B5\u81EA\u884C\u914D\u7F6E\u8FD9\u4E24\u4E2A\u5B57\u6BB5\u7684\u503C\u3002",paraId:5,tocIndex:4},{value:"\u5982\u679C\u65B0\u589E\u6570\u636E\u7684\u5B57\u6BB5\u4E2D\u5305\u542B\u5173\u7CFB\u5B57\u6BB5\uFF0C\u4E14\u5E0C\u671B\u540E\u7EED\u6D41\u7A0B\u4E2D\u4F7F\u7528\u76F8\u5E94\u7684\u5173\u7CFB\u6570\u636E\u65F6\uFF0C\u53EF\u4EE5\u5728\u9884\u52A0\u8F7D\u914D\u7F6E\u4E2D\u52FE\u9009\u76F8\u5E94\u7684\u5173\u7CFB\u5B57\u6BB5\uFF0C\u8FD9\u6837\u5728\u65B0\u589E\u6570\u636E\u5B8C\u6210\u540E\uFF0C\u4F1A\u81EA\u52A8\u52A0\u8F7D\u76F8\u5E94\u7684\u5173\u7CFB\u6570\u636E\u4E00\u5E76\u50A8\u5B58\u5728\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u4E2D\u3002",paraId:6,tocIndex:5},{value:"\u4F8B\u5982\u5F53\u201C\u6587\u7AE0\u201D\u8868\u7684\u6570\u636E\u65B0\u589E\u6216\u66F4\u65B0\u540E\uFF0C\u9700\u8981\u81EA\u52A8\u65B0\u589E\u4E00\u6761\u201C\u6587\u7AE0\u7248\u672C\u201D\u6570\u636E\uFF0C\u8BB0\u5F55\u6587\u7AE0\u7684\u4E00\u6B21\u53D8\u66F4\u5386\u53F2\uFF0C\u53EF\u4EE5\u4F7F\u7528\u65B0\u589E\u8282\u70B9\u6765\u5B9E\u73B0\uFF1A",paraId:7,tocIndex:6},{value:"\u6309\u6B64\u914D\u7F6E\u542F\u7528\u5DE5\u4F5C\u6D41\u540E\uFF0C\u5F53\u201C\u6587\u7AE0\u201D\u8868\u7684\u6570\u636E\u53D8\u66F4\u65F6\uFF0C\u4F1A\u81EA\u52A8\u65B0\u589E\u4E00\u6761\u201C\u6587\u7AE0\u7248\u672C\u201D\u6570\u636E\uFF0C\u8BB0\u5F55\u6587\u7AE0\u7684\u53D8\u66F4\u5386\u53F2\u3002",paraId:8,tocIndex:6}],_N={},vN={title:"\u4EBA\u5DE5\u5904\u7406",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/manual.md",lastUpdated:173254844e4,description:"\u5F53\u4E1A\u52A1\u6D41\u7A0B\u4E0D\u80FD\u5B8C\u5168\u81EA\u52A8\u5316\u51B3\u7B56\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4EBA\u5DE5\u8282\u70B9\uFF0C\u5C06\u90E8\u5206\u51B3\u7B56\u6743\u4EA4\u7ED9\u4EBA\u5DE5\u5904\u7406\u3002"},mN=[{id:"\u4EBA\u5DE5\u5904\u7406",depth:1,title:"\u4EBA\u5DE5\u5904\u7406"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u914D\u7F6E\u8282\u70B9",depth:2,title:"\u914D\u7F6E\u8282\u70B9"},{id:"\u8D1F\u8D23\u4EBA",depth:3,title:"\u8D1F\u8D23\u4EBA"},{id:"\u914D\u7F6E\u7528\u6237\u754C\u9762",depth:3,title:"\u914D\u7F6E\u7528\u6237\u754C\u9762"},{id:"\u6807\u7B7E\u9875",depth:4,title:"\u6807\u7B7E\u9875"},{id:"\u533A\u5757",depth:4,title:"\u533A\u5757"},{id:"\u6570\u636E\u533A\u5757",depth:5,title:"\u6570\u636E\u533A\u5757"},{id:"\u8868\u5355\u533A\u5757",depth:5,title:"\u8868\u5355\u533A\u5757"},{id:"\u914D\u7F6E\u5F85\u529E\u533A\u5757",depth:2,title:"\u914D\u7F6E\u5F85\u529E\u533A\u5757"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u6587\u7AE0\u5BA1\u6838",depth:3,title:"\u6587\u7AE0\u5BA1\u6838"},{id:"\u8BF7\u5047\u5BA1\u6279",depth:3,title:"\u8BF7\u5047\u5BA1\u6279"}],hN=[{value:"\u5F53\u4E1A\u52A1\u6D41\u7A0B\u4E0D\u80FD\u5B8C\u5168\u81EA\u52A8\u5316\u51B3\u7B56\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4EBA\u5DE5\u8282\u70B9\uFF0C\u5C06\u90E8\u5206\u51B3\u7B56\u6743\u4EA4\u7ED9\u4EBA\u5DE5\u5904\u7406\u3002",paraId:0,tocIndex:0},{value:"\u4EBA\u5DE5\u8282\u70B9\u5728\u6267\u884C\u5230\u65F6\u4F1A\u5148\u4E2D\u65AD\u6574\u4E2A\u6D41\u7A0B\u7684\u6267\u884C\uFF0C\u751F\u6210\u5BF9\u5E94\u7528\u6237\u7684\u5F85\u529E\u4EFB\u52A1\uFF0C\u5728\u7528\u6237\u63D0\u4EA4\u540E\u6839\u636E\u6240\u9009\u7684\u72B6\u6001\u51B3\u5B9A\u7EE7\u7EED\u6D41\u7A0B\u3001\u7EE7\u7EED\u7B49\u5F85\u8FD8\u662F\u7EC8\u6B62\u6D41\u7A0B\u3002\u5728\u9700\u8981\u8FDB\u884C\u6D41\u7A0B\u5BA1\u6279\u7B49\u573A\u666F\u4F1A\u975E\u5E38\u6709\u7528\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u4EBA\u5DE5\u5904\u7406\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u4EBA\u5DE5\u8282\u70B9\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u7528\u6237\uFF0C\u4F5C\u4E3A\u5F85\u529E\u4EFB\u52A1\u7684\u6267\u884C\u8005\u3002\u5F85\u529E\u4EFB\u52A1\u7684\u5217\u8868\u53EF\u4EE5\u5728\u9875\u9762\u6DFB\u52A0\u533A\u5757\u65F6\u6DFB\u52A0\uFF0C\u6BCF\u4E2A\u8282\u70B9\u7684\u4EFB\u52A1\u5F39\u7A97\u5185\u5BB9\u9700\u8981\u5728\u8282\u70B9\u4E2D\u8FDB\u884C\u754C\u9762\u914D\u7F6E\u3002",paraId:3,tocIndex:3},{value:"\u9009\u5B9A\u4E00\u4E2A\u7528\u6237\uFF0C\u6216\u8005\u901A\u8FC7\u53D8\u91CF\u9009\u62E9\u4E0A\u4E0B\u6587\u4E2D\u7684\u7528\u6237\u6570\u636E\u7684\u4E3B\u952E\u6216\u5916\u952E\u3002",paraId:4,tocIndex:3},{value:"\u76EE\u524D\u4EBA\u5DE5\u8282\u70B9\u7684\u8D1F\u8D23\u4EBA\u9009\u9879\u6682\u4E0D\u652F\u6301\u9488\u5BF9\u591A\u4EBA\u5904\u7406\uFF0C\u4F1A\u5728\u672A\u6765\u7684\u7248\u672C\u4E2D\u652F\u6301\u3002",paraId:5},{value:"\u5F85\u529E\u4E8B\u9879\u7684\u754C\u9762\u914D\u7F6E\u662F\u4EBA\u5DE5\u8282\u70B9\u7684\u6838\u5FC3\u5185\u5BB9\uFF0C\u53EF\u4EE5\u901A\u8FC7\u70B9\u51FB\u201C\u914D\u7F6E\u7528\u6237\u754C\u9762\u201D\u6309\u94AE\u5F39\u7A97\u6253\u5F00\u72EC\u7ACB\u914D\u7F6E\uFF0C\u548C\u666E\u901A\u9875\u9762\u4E00\u6837\uFF0C\u53EF\u4EE5\u6240\u89C1\u5373\u6240\u5F97\u5730\u914D\u7F6E\uFF1A",paraId:6,tocIndex:4},{value:"\u6807\u7B7E\u9875\u53EF\u4EE5\u7528\u4E8E\u533A\u5206\u4E0D\u540C\u7684\u5185\u5BB9\uFF0C\u4F8B\u5982\u4E00\u4E2A\u6807\u7B7E\u9875\u7528\u4E8E\u901A\u8FC7\u7684\u8868\u5355\u63D0\u4EA4\uFF0C\u53E6\u4E00\u4E2A\u6807\u7B7E\u9875\u7528\u4E8E\u62D2\u7EDD\u7684\u8868\u5355\u63D0\u4EA4\uFF0C\u6216\u8005\u7528\u4E8E\u5C55\u793A\u76F8\u5173\u6570\u636E\u7684\u8BE6\u60C5\u7B49\uFF0C\u53EF\u81EA\u7531\u914D\u7F6E\u3002",paraId:7,tocIndex:5},{value:"\u652F\u6301\u7684\u533A\u5757\u7C7B\u578B\u4E3B\u8981\u6709\u4E24\u5927\u7C7B\uFF0C\u6570\u636E\u533A\u5757\u548C\u8868\u5355\u533A\u5757\uFF0C\u53E6\u5916\u7684 Markdown \u4E3B\u8981\u7528\u4E8E\u63D0\u793A\u4FE1\u606F\u7B49\u9759\u6001\u5185\u5BB9\u3002",paraId:8,tocIndex:6},{value:"\u6570\u636E\u533A\u5757\u53EF\u9009\u62E9\u89E6\u53D1\u5668\u6570\u636E\u6216\u4EFB\u610F\u7684\u8282\u70B9\u5904\u7406\u7ED3\u679C\uFF0C\u7528\u4E8E\u63D0\u4F9B\u7ED9\u5F85\u529E\u8D1F\u8D23\u4EBA\u76F8\u5173\u7684\u4E0A\u4E0B\u6587\u4FE1\u606F\u3002\u4F8B\u5982\u5DE5\u4F5C\u6D41\u662F\u8868\u5355\u4E8B\u4EF6\u89E6\u53D1\u7684\uFF0C\u5373\u53EF\u4EE5\u521B\u5EFA\u4E00\u4E2A\u89E6\u53D1\u6570\u636E\u7684\u8BE6\u60C5\u533A\u5757\uFF0C\u4E0E\u666E\u901A\u9875\u9762\u7684\u8BE6\u60C5\u914D\u7F6E\u4E00\u81F4\uFF0C\u53EF\u4EFB\u9009\u89E6\u53D1\u6570\u636E\u5185\u6709\u7684\u5B57\u6BB5\u8FDB\u884C\u6570\u636E\u5C55\u793A\uFF1A",paraId:9,tocIndex:7},{value:"\u8282\u70B9\u6570\u636E\u533A\u5757\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u9009\u62E9\u4E0A\u6E38\u8282\u70B9\u4E2D\u7684\u6570\u636E\u7ED3\u679C\u4F5C\u4E3A\u8BE6\u60C5\u5C55\u793A\u3002\u4F8B\u5982\u4E0A\u6E38\u4E00\u4E2A\u8BA1\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF0C\u4F5C\u4E3A\u8D1F\u8D23\u4EBA\u5F85\u529E\u7684\u4E0A\u4E0B\u6587\u53C2\u8003\u4FE1\u606F\uFF1A",paraId:10,tocIndex:7},{value:"\u7531\u4E8E\u914D\u7F6E\u754C\u9762\u65F6\u5DE5\u4F5C\u6D41\u90FD\u5904\u4E8E\u672A\u6267\u884C\u7684\u72B6\u6001\uFF0C\u6240\u4EE5\u6570\u636E\u533A\u5757\u4E2D\u90FD\u662F\u6CA1\u6709\u5177\u4F53\u6570\u636E\u663E\u793A\u7684\uFF0C\u53EA\u6709\u5F53\u5DE5\u4F5C\u6D41\u88AB\u89E6\u53D1\u6267\u884C\u540E\uFF0C\u5728\u5F85\u529E\u5F39\u7A97\u754C\u9762\u4E2D\u624D\u53EF\u770B\u5230\u5177\u4F53\u6D41\u7A0B\u7684\u76F8\u5173\u6570\u636E\u3002",paraId:11},{value:"\u5F85\u529E\u754C\u9762\u4E2D\u81F3\u5C11\u9700\u8981\u914D\u7F6E\u4E00\u4E2A\u8868\u5355\u533A\u5757\uFF0C\u4F5C\u4E3A\u5DE5\u4F5C\u6D41\u662F\u5426\u7EE7\u7EED\u6267\u884C\u7684\u6700\u7EC8\u51B3\u7B56\u5904\u7406\uFF0C\u4E0D\u914D\u7F6E\u8868\u5355\u4F1A\u5BFC\u81F4\u6D41\u7A0B\u4E2D\u65AD\u540E\u65E0\u6CD5\u7EE7\u7EED\u3002\u8868\u5355\u533A\u5757\u6709\u4E09\u79CD\u7C7B\u578B\uFF0C\u5206\u522B\u662F\uFF1A",paraId:12,tocIndex:8},{value:"\u81EA\u5B9A\u4E49\u8868\u5355",paraId:13,tocIndex:8},{value:"\u65B0\u589E\u6570\u636E\u8868\u5355",paraId:13,tocIndex:8},{value:"\u66F4\u65B0\u6570\u636E\u8868\u5355",paraId:13,tocIndex:8},{value:"\u65B0\u589E\u6570\u636E\u8868\u5355\u548C\u66F4\u65B0\u6570\u636E\u8868\u5355\u9700\u8981\u9009\u62E9\u57FA\u4E8E\u7684\u6570\u636E\u8868\uFF0C\u5F85\u529E\u7528\u6237\u63D0\u4EA4\u540E\u4F1A\u4F7F\u7528\u8868\u5355\u5185\u7684\u503C\u65B0\u589E\u6216\u66F4\u65B0\u7279\u5B9A\u6570\u636E\u8868\u7684\u6570\u636E\u3002\u81EA\u5B9A\u4E49\u8868\u5355\u5219\u53EF\u4EE5\u81EA\u7531\u5B9A\u4E49\u4E00\u4E2A\u6570\u636E\u8868\u65E0\u5173\u7684\u4E34\u65F6\u8868\u5355\uFF0C\u5F85\u529E\u7528\u6237\u63D0\u4EA4\u540E\u7684\u5B57\u6BB5\u503C\u53EF\u4EE5\u5728\u540E\u7EED\u8282\u70B9\u4E2D\u4F7F\u7528\u3002",paraId:14,tocIndex:8},{value:"\u8868\u5355\u7684\u63D0\u4EA4\u6309\u94AE\u53EF\u4EE5\u914D\u7F6E\u4E09\u79CD\u7C7B\u578B\uFF0C\u5206\u522B\u662F\uFF1A",paraId:15,tocIndex:8},{value:"\u63D0\u4EA4\u540E\u7EE7\u7EED\u6D41\u7A0B",paraId:16,tocIndex:8},{value:"\u63D0\u4EA4\u540E\u7EC8\u6B62\u6D41\u7A0B",paraId:16,tocIndex:8},{value:"\u4EC5\u6682\u5B58\u8868\u5355\u503C",paraId:16,tocIndex:8},{value:"\u4E09\u4E2A\u6309\u94AE\u4EE3\u8868\u6D41\u7A0B\u5904\u7406\u4E2D\u4E09\u79CD\u8282\u70B9\u72B6\u6001\uFF0C\u63D0\u4EA4\u540E\u8BE5\u8282\u70B9\u7684\u72B6\u6001\u4FEE\u6539\u4E3A\u201C\u5B8C\u6210\u201D\u3001\u201C\u62D2\u7EDD\u201D\u6216\u7EE7\u7EED\u5904\u4E8E\u201C\u7B49\u5F85\u201D\u7684\u72B6\u6001\uFF0C\u4E00\u4E2A\u8868\u5355\u81F3\u5C11\u8981\u914D\u7F6E\u524D\u4E24\u8005\u4E4B\u4E00\uFF0C\u4EE5\u51B3\u5B9A\u6574\u4E2A\u6D41\u7A0B\u7684\u540E\u7EED\u5904\u7406\u6D41\u5411\u3002",paraId:17,tocIndex:8},{value:"\u5728\u201C\u7EE7\u7EED\u6D41\u7A0B\u201D\u6309\u94AE\u4E0A\u53EF\u4EE5\u914D\u7F6E\u5BF9\u8868\u5355\u5B57\u6BB5\u7684\u8D4B\u503C\uFF1A",paraId:18,tocIndex:8},{value:"\u6253\u5F00\u5F39\u7A97\u540E\u53EF\u4EE5\u5BF9\u8868\u5355\u4EFB\u610F\u5B57\u6BB5\u8FDB\u884C\u8D4B\u503C\uFF0C\u8868\u5355\u63D0\u4EA4\u540E\u5C06\u4F1A\u4EE5\u8BE5\u503C\u4F5C\u4E3A\u5B57\u6BB5\u7684\u7EC8\u503C\u3002\u901A\u5E38\u5728\u5BF9\u4E00\u4E9B\u6570\u636E\u8FDB\u884C\u5BA1\u6838\u65F6\u6BD4\u8F83\u6709\u7528\uFF0C\u53EF\u4EE5\u5728\u8868\u5355\u4E2D\u4F7F\u7528\u591A\u4E2A\u4E0D\u540C\u7684\u201C\u7EE7\u7EED\u6D41\u7A0B\u201D\u6309\u94AE\uFF0C\u6BCF\u4E2A\u6309\u94AE\u5BF9\u7C7B\u4F3C\u72B6\u6001\u7684\u5B57\u6BB5\u8BBE\u7F6E\u4E0D\u540C\u7684\u679A\u4E3E\u503C\uFF0C\u4EE5\u8FBE\u5230\u7EE7\u7EED\u540E\u7EED\u6D41\u7A0B\u6267\u884C\u4E14\u4F7F\u7528\u4E0D\u540C\u6570\u636E\u503C\u7684\u6548\u679C\u3002",paraId:19,tocIndex:8},{value:"\u5BF9\u4E8E\u4EBA\u5DE5\u5904\u7406\u6765\u8BF4\uFF0C\u8FD8\u9700\u8981\u5728\u9875\u9762\u4E2D\u6DFB\u52A0\u5F85\u529E\u5217\u8868\uFF0C\u7528\u4E8E\u5C55\u793A\u5F85\u529E\u4EFB\u52A1\uFF0C\u76F8\u5173\u4EBA\u5458\u624D\u53EF\u4EE5\u901A\u8FC7\u8BE5\u5217\u8868\u8FDB\u5165\u4EBA\u5DE5\u8282\u70B9\u7684\u5177\u4F53\u4EFB\u52A1\u5904\u7406\u3002\u53EF\u4EE5\u4ECE\u9875\u9762\u4E2D\u7684\u533A\u5757\u4E2D\u9009\u62E9\u201C\u5DE5\u4F5C\u6D41\u5F85\u529E\u201D\uFF0C\u6DFB\u52A0\u5F85\u529E\u5217\u8868\u7684\u533A\u5757\uFF1A",paraId:20,tocIndex:9},{value:"\u5F85\u529E\u5217\u8868\u533A\u5757\u793A\u4F8B\uFF1A",paraId:21,tocIndex:9},{value:"\u4E4B\u540E\u76F8\u5173\u4EBA\u5458\u53EF\u4EE5\u70B9\u51FB\u5BF9\u5E94\u7684\u5F85\u529E\u4EFB\u52A1\uFF0C\u8FDB\u5165\u5F85\u529E\u5F39\u7A97\uFF0C\u8FDB\u884C\u4EBA\u5DE5\u5904\u7406\uFF1A",paraId:22,tocIndex:9},{value:"\u5047\u8BBE\u666E\u901A\u7528\u6237\u63D0\u4EA4\u7684\u6587\u7AE0\uFF0C\u9700\u8981\u7BA1\u7406\u5458\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u80FD\u66F4\u65B0\u4E3A\u5DF2\u53D1\u5E03\u72B6\u6001\uFF0C\u5426\u5219\u5982\u679C\u62D2\u7EDD\u8BE5\u6D41\u7A0B\uFF0C\u6587\u7AE0\u5C06\u4FDD\u6301\u8349\u7A3F\u72B6\u6001\uFF08\u4E0D\u516C\u5F00\uFF09\uFF0C\u8FD9\u4E00\u6D41\u7A0B\u53EF\u4EE5\u4F7F\u7528\u4EBA\u5DE5\u8282\u70B9\u4E2D\u7684\u66F4\u65B0\u8868\u5355\u6765\u5B9E\u73B0\u3002",paraId:23,tocIndex:11},{value:"\u521B\u5EFA\u4E00\u4E2A\u7531\u201C\u65B0\u589E\u6587\u7AE0\u201D\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5E76\u589E\u52A0\u4E00\u4E2A\u4EBA\u5DE5\u8282\u70B9\uFF1A",paraId:24,tocIndex:11},{value:` `,paraId:25},{value:"\u5728\u4EBA\u5DE5\u8282\u70B9\u4E2D\u914D\u7F6E\u8D1F\u8D23\u4EBA\u4E3A\u7BA1\u7406\u5458\uFF0C\u914D\u7F6E\u754C\u9762\u4E2D\u589E\u52A0\u4E00\u4E2A\u57FA\u4E8E\u89E6\u53D1\u6570\u636E\u7684\u533A\u5757\uFF0C\u7528\u4E8E\u5C55\u793A\u65B0\u589E\u6587\u7AE0\u7684\u8BE6\u60C5\uFF1A",paraId:26,tocIndex:11},{value:` `,paraId:25},{value:"\u5728\u914D\u7F6E\u754C\u9762\u4E2D\u589E\u52A0\u4E00\u4E2A\u57FA\u4E8E\u66F4\u65B0\u6570\u636E\u8868\u5355\u7684\u533A\u5757\uFF0C\u9009\u62E9\u6587\u7AE0\u8868\uFF0C\u7528\u4E8E\u7BA1\u7406\u5458\u51B3\u5B9A\u662F\u5426\u901A\u8FC7\u5BA1\u6838\uFF0C\u901A\u8FC7\u5BA1\u6838\u540E\u4F1A\u6839\u636E\u540E\u9762\u7684\u5176\u4ED6\u914D\u7F6E\u66F4\u65B0\u5BF9\u5E94\u6587\u7AE0\u3002\u6DFB\u52A0\u8868\u5355\u540E\uFF0C\u9ED8\u8BA4\u4F1A\u6709\u4E00\u4E2A\u201C\u7EE7\u7EED\u6D41\u7A0B\u201D\u7684\u6309\u94AE\uFF0C\u53EF\u4EE5\u5C06\u5176\u89C6\u4E3A\u70B9\u51FB\u540E\u901A\u8FC7\uFF0C\u518D\u589E\u52A0\u4E00\u4E2A\u201C\u7EC8\u6B62\u6D41\u7A0B\u201D\u7684\u6309\u94AE\uFF0C\u7528\u4F5C\u5BA1\u6838\u4E0D\u901A\u8FC7\u7684\u60C5\u51B5\uFF1A",paraId:27,tocIndex:11},{value:` `,paraId:25},{value:"\u9488\u5BF9\u7EE7\u7EED\u6D41\u7A0B\u65F6\uFF0C\u6211\u4EEC\u9700\u8981\u66F4\u65B0\u6587\u7AE0\u7684\u72B6\u6001\uFF0C\u8FD9\u91CC\u6709\u4E24\u79CD\u914D\u7F6E\u65B9\u5F0F\uFF0C\u4E00\u79CD\u662F\u76F4\u63A5\u5728\u8868\u5355\u4E2D\u5C55\u793A\u6587\u7AE0\u72B6\u6001\u7684\u5B57\u6BB5\uFF0C\u4F9B\u64CD\u4F5C\u8005\u9009\u62E9\uFF0C\u8FD9\u79CD\u65B9\u5F0F\u66F4\u9002\u5408\u4E8E\u4E00\u4E9B\u9700\u8981\u4E3B\u52A8\u586B\u5199\u8868\u5355\u7684\u60C5\u51B5\uFF0C\u4F8B\u5982\u53CD\u9988\u610F\u89C1\u7B49\uFF1A",paraId:28,tocIndex:11},{value:` @@ -14756,7 +14809,7 @@ db.registerFieldValueParsers({ `,paraId:25},{value:"\u7BA1\u7406\u5458\u53EF\u4EE5\u6839\u636E\u6587\u7AE0\u8BE6\u60C5\u8FDB\u884C\u4EBA\u5DE5\u5224\u65AD\uFF0C\u8BE5\u6587\u7AE0\u662F\u5426\u53EF\u4EE5\u53D1\u5E03\uFF0C\u5982\u679C\u53EF\u4EE5\u7684\u8BDD\uFF0C\u70B9\u51FB\u201C\u901A\u8FC7\u201D\u6309\u94AE\uFF0C\u6587\u7AE0\u5C06\u4F1A\u66F4\u65B0\u4E3A\u5DF2\u53D1\u5E03\u72B6\u6001\uFF0C\u5982\u679C\u4E0D\u53EF\u4EE5\u7684\u8BDD\uFF0C\u70B9\u51FB\u201C\u62D2\u7EDD\u201D\u6309\u94AE\uFF0C\u6587\u7AE0\u5C06\u4F1A\u4FDD\u6301\u8349\u7A3F\u72B6\u6001\u3002",paraId:33,tocIndex:11},{value:"\u5047\u8BBE\u5458\u5DE5\u9700\u8981\u8BF7\u5047\uFF0C\u9700\u8981\u7ECF\u8FC7\u4E3B\u7BA1\u5BA1\u6279\u901A\u8FC7\u540E\u624D\u80FD\u751F\u6548\uFF0C\u5E76\u6838\u9500\u5BF9\u5E94\u5458\u5DE5\u7684\u5047\u671F\u6570\u636E\u3002\u800C\u4E14\u4E0D\u7BA1\u901A\u8FC7\u6216\u62D2\u7EDD\uFF0C\u90FD\u5C06\u4F1A\u901A\u8FC7\u8BF7\u6C42\u8282\u70B9\u8C03\u7528\u77ED\u4FE1\u63A5\u53E3\uFF0C\u53D1\u9001\u76F8\u5173\u7684\u7684\u901A\u77E5\u77ED\u4FE1\u7ED9\u5458\u5DE5\uFF08\u89C1 ",paraId:34,tocIndex:12},{value:"HTTP \u8BF7\u6C42",paraId:35,tocIndex:12},{value:" \u90E8\u5206\uFF09\u3002\u8FD9\u4E2A\u573A\u666F\u53EF\u4EE5\u4F7F\u7528\u4EBA\u5DE5\u8282\u70B9\u4E2D\u7684\u81EA\u5B9A\u4E49\u8868\u5355\u6765\u5B9E\u73B0\u3002",paraId:34,tocIndex:12},{value:"\u521B\u5EFA\u4E00\u4E2A\u7531\u201C\u65B0\u589E\u8BF7\u5047\u201D\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\uFF0C\u5E76\u589E\u52A0\u4E00\u4E2A\u4EBA\u5DE5\u8282\u70B9\uFF0C\u4E0E\u4E4B\u524D\u7684\u6587\u7AE0\u5BA1\u6838\u6D41\u7A0B\u7C7B\u4F3C\uFF0C\u53EA\u662F\u8FD9\u91CC\u7684\u8D1F\u8D23\u4EBA\u662F\u4E3B\u7BA1\uFF0C\u914D\u7F6E\u754C\u9762\u4E2D\u589E\u52A0\u4E00\u4E2A\u57FA\u4E8E\u89E6\u53D1\u6570\u636E\u7684\u533A\u5757\uFF0C\u7528\u4E8E\u5C55\u793A\u65B0\u589E\u8BF7\u5047\u7684\u8BE6\u60C5\uFF0C\u518D\u589E\u52A0\u4E00\u4E2A\u57FA\u4E8E\u81EA\u5B9A\u4E49\u8868\u5355\u7684\u533A\u5757\uFF0C\u7528\u4E8E\u4E3B\u7BA1\u51B3\u5B9A\u662F\u5426\u901A\u8FC7\u5BA1\u6838\uFF0C\u81EA\u5B9A\u4E49\u8868\u5355\u4E2D\u589E\u52A0\u4E00\u4E2A\u662F\u5426\u901A\u8FC7\u7684\u5B57\u6BB5\uFF0C\u4EE5\u53CA\u4E00\u4E2A\u62D2\u7EDD\u7406\u7531\u7684\u5B57\u6BB5\uFF1A",paraId:36,tocIndex:12},{value:` `,paraId:25},{value:"\u4E0E\u6587\u7AE0\u5BA1\u6838\u6D41\u7A0B\u4E0D\u540C\uFF0C\u7531\u4E8E\u6211\u4EEC\u9700\u8981\u6839\u636E\u4E3B\u7BA1\u5BA1\u6279\u7684\u7ED3\u679C\u7EE7\u7EED\u540E\u7EED\u7684\u6D41\u7A0B\uFF0C\u6240\u4EE5\u8FD9\u91CC\u6211\u4EEC\u53EA\u914D\u7F6E\u4E00\u4E2A\u201C\u7EE7\u7EED\u6D41\u7A0B\u201D\u6309\u94AE\uFF0C\u4F5C\u4E3A\u63D0\u4EA4\u4F7F\u7528\uFF0C\u800C\u4E0D\u4F7F\u7528\u201C\u7EC8\u6B62\u6D41\u7A0B\u201D\u6309\u94AE\u3002",paraId:37,tocIndex:12},{value:"\u540C\u65F6\u5728\u4EBA\u5DE5\u8282\u70B9\u4E4B\u540E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7\u4E00\u4E2A\u6761\u4EF6\u5224\u65AD\u8282\u70B9\u6765\u5224\u65AD\u4E3B\u7BA1\u662F\u5426\u901A\u8FC7\u4E86\u8BE5\u8BF7\u5047\u7533\u8BF7\uFF0C\u901A\u8FC7\u7684\u5206\u652F\u4E2D\u589E\u52A0\u6838\u9500\u5047\u671F\u7684\u6570\u636E\u5904\u7406\uFF0C\u5E76\u5728\u5206\u652F\u7ED3\u675F\u540E\u589E\u52A0\u4E00\u4E2A\u8BF7\u6C42\u8282\u70B9\uFF0C\u7528\u4E8E\u53D1\u9001\u77ED\u4FE1\u901A\u77E5\u5458\u5DE5\uFF0C\u5C31\u5F97\u5230\u4EE5\u4E0B\u5B8C\u6574\u7684\u6D41\u7A0B\uFF1A",paraId:38,tocIndex:12},{value:` `,paraId:25},{value:"\u5176\u4E2D\u6761\u4EF6\u5224\u65AD\u8282\u70B9\u7684\u4E2D\u7684\u6761\u4EF6\u914D\u7F6E\u4E3A\u201C\u4EBA\u5DE5\u8282\u70B9 / \u81EA\u5B9A\u4E49\u8868\u5355\u6570\u636E / \u662F\u5426\u901A\u8FC7\u5B57\u6BB5\u7684\u503C\u662F\u5426\u4E3A\u2018\u901A\u8FC7\u2019\u201D\uFF1A",paraId:39,tocIndex:12},{value:` - `,paraId:25},{value:"\u53D1\u9001\u8BF7\u6C42\u8282\u70B9\u91CC\u7684\u6570\u636E\u4E5F\u53EF\u4EE5\u4F7F\u7528\u4EBA\u5DE5\u8282\u70B9\u4E2D\u76F8\u5E94\u7684\u8868\u5355\u53D8\u91CF\uFF0C\u4EE5\u533A\u5206\u901A\u8FC7\u548C\u62D2\u7EDD\u7684\u77ED\u4FE1\u5185\u5BB9\u3002\u8FD9\u6837\u5C31\u5B8C\u6210\u4E86\u6574\u4E2A\u6D41\u7A0B\u7684\u914D\u7F6E\uFF0C\u5728\u5F00\u542F\u5DE5\u4F5C\u6D41\u540E\uFF0C\u5F53\u5458\u5DE5\u63D0\u4EA4\u8BF7\u5047\u7533\u8BF7\u7684\u8868\u5355\u540E\uFF0C\u4E3B\u7BA1\u5373\u53EF\u5728\u5F85\u529E\u4EFB\u52A1\u4E2D\u8FDB\u884C\u5BA1\u6279\u5904\u7406\uFF0C\u64CD\u4F5C\u57FA\u672C\u4E0E\u6587\u7AE0\u5BA1\u6838\u6D41\u7A0B\u7C7B\u4F3C\u3002",paraId:40,tocIndex:12}],fN={},xN={title:"\u66F4\u65B0\u6570\u636E",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/update.md",lastUpdated:1732240239e3,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u66F4\u65B0\u3002"},gN=[{id:"\u66F4\u65B0\u6570\u636E",depth:1,title:"\u66F4\u65B0\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u66F4\u65B0\u6A21\u5F0F",depth:3,title:"\u66F4\u65B0\u6A21\u5F0F"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u5B57\u6BB5\u503C",depth:3,title:"\u5B57\u6BB5\u503C"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],bN=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u66F4\u65B0\u3002",paraId:0,tocIndex:0},{value:"\u6570\u636E\u8868\u548C\u5B57\u6BB5\u8D4B\u503C\u90E8\u5206\u4E0E\u65B0\u589E\u8282\u70B9\u76F8\u540C\uFF0C\u66F4\u65B0\u8282\u70B9\u7684\u533A\u522B\u4E3B\u8981\u662F\u589E\u52A0\u4E86\u7B5B\u9009\u6761\u4EF6\uFF0C\u800C\u4E14\u9700\u8981\u9009\u62E9\u66F4\u65B0\u6A21\u5F0F\u3002\u53E6\u5916\uFF0C\u66F4\u65B0\u8282\u70B9\u7684\u7ED3\u679C\u4F1A\u8FD4\u56DE\u66F4\u65B0\u6210\u529F\u6570\u636E\u7684\u884C\u6570\uFF0C\u53EA\u5728\u6267\u884C\u5386\u53F2\u91CC\u53EF\u67E5\u770B\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u53D8\u91CF\u5728\u540E\u7EED\u8282\u70B9\u4F7F\u7528\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u66F4\u65B0\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u9009\u62E9\u8981\u66F4\u65B0\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:3,tocIndex:3},{value:"\u66F4\u65B0\u6A21\u5F0F\u6709\u201C\u6279\u91CF\u201D\u548C\u201C\u9010\u6761\u201D\u7684\u6A21\u5F0F\uFF0C\u6279\u91CF\u6A21\u5F0F\u4E0B\uFF0C\u4E0D\u4F1A\u518D\u89E6\u53D1\u6BCF\u6761\u66F4\u65B0\u6570\u636E\u7684\u6570\u636E\u8868\u4E8B\u4EF6\uFF0C\u800C\u9010\u6761\u66F4\u65B0\u7684\u8BDD\u4F1A\u89E6\u53D1\u6BCF\u6761\u66F4\u65B0\u6570\u636E\u7684\u6570\u636E\u8868\u4E8B\u4EF6\uFF0C\u4F46\u5728\u5927\u6570\u636E\u91CF\u4E0B\u4F1A\u6709\u6027\u80FD\u95EE\u9898\uFF0C\u9700\u8981\u8C28\u614E\u4F7F\u7528\u3002\u901A\u5E38\u6839\u636E\u66F4\u65B0\u7684\u76EE\u6807\u6570\u636E\u548C\u662F\u5426\u8981\u89E6\u53D1\u5176\u4ED6\u5DE5\u4F5C\u6D41\u4E8B\u4EF6\u6765\u9009\u62E9\uFF0C\u5982\u679C\u662F\u6839\u636E\u4E3B\u952E\u66F4\u65B0\u5355\u6761\u6570\u636E\u7684\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u9010\u6761\u66F4\u65B0\uFF0C\u5982\u679C\u662F\u6839\u636E\u6761\u4EF6\u66F4\u65B0\u591A\u6761\u6570\u636E\u7684\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u6279\u91CF\u66F4\u65B0\u3002",paraId:4,tocIndex:4},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:5,tocIndex:5},{value:"\u4E0E\u65B0\u589E\u8282\u70B9\u7684\u5B57\u6BB5\u8D4B\u503C\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4E5F\u53EF\u4EE5\u624B\u52A8\u586B\u5199\u9759\u6001\u503C\u3002",paraId:6,tocIndex:6},{value:"\u6CE8\uFF1A\u5DE5\u4F5C\u6D41\u4E2D\u66F4\u65B0\u8282\u70B9\u66F4\u65B0\u7684\u6570\u636E\u4E0D\u4F1A\u81EA\u52A8\u5904\u7406\u201C\u6700\u540E\u4FEE\u6539\u4EBA\u201D\u6570\u636E\uFF0C\u9700\u8981\u6839\u636E\u60C5\u51B5\u81EA\u884C\u914D\u7F6E\u8FD9\u4E2A\u5B57\u6BB5\u7684\u503C\u3002",paraId:7,tocIndex:6},{value:"\u4F8B\u5982\u5F53\u65B0\u589E\u201C\u6587\u7AE0\u201D\u65F6\uFF0C\u9700\u8981\u81EA\u52A8\u66F4\u65B0\u201C\u6587\u7AE0\u5206\u7C7B\u201D\u8868\u7684\u201C\u6587\u7AE0\u6570\u91CF\u201D\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u4F7F\u7528\u66F4\u65B0\u8282\u70B9\u6765\u5B9E\u73B0\uFF1A",paraId:8,tocIndex:7},{value:"\u5F53\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\uFF0C\u4F1A\u81EA\u52A8\u66F4\u65B0\u201C\u6587\u7AE0\u5206\u7C7B\u201D\u8868\u7684\u201C\u6587\u7AE0\u6570\u91CF\u201D\u5B57\u6BB5\u4E3A\u5F53\u524D\u6587\u7AE0\u6570\u91CF +1\u3002",paraId:9,tocIndex:7}],yN={},wN={title:"\u5907\u4EFD\u548C\u8FD8\u539F",toc:"menu",filename:"docs/en-US/plugins/backup-restore/index.md",lastUpdated:1732240239e3,description:"NocoBase \u5E94\u7528\u7684\u5907\u4EFD\u4E0E\u8FD8\u539F\u63D2\u4EF6\uFF0C\u53EF\u7528\u4E8E\u5E94\u7528\u7684\u590D\u5236\u3001\u8FC1\u79FB\u3001\u5347\u7EA7\u7B49\u573A\u666F\u3002"},kN=[{id:"\u5907\u4EFD\u548C\u8FD8\u539F",depth:1,title:"\u5907\u4EFD\u548C\u8FD8\u539F"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u8BF4\u660E",depth:2,title:"\u4F7F\u7528\u8BF4\u660E"},{id:"\u65B0\u5EFA\u5907\u4EFD",depth:3,title:"\u65B0\u5EFA\u5907\u4EFD"},{id:"\u8FD8\u539F\u5907\u4EFD",depth:3,title:"\u8FD8\u539F\u5907\u4EFD"},{id:"\u5907\u4EFD\u8BF4\u660E",depth:3,title:"\u5907\u4EFD\u8BF4\u660E"},{id:"\u5F00\u53D1\u6307\u5357",depth:2,title:"\u5F00\u53D1\u6307\u5357"}],SN=[{value:"NocoBase \u5E94\u7528\u7684\u5907\u4EFD\u4E0E\u8FD8\u539F\u63D2\u4EF6\uFF0C\u53EF\u7528\u4E8E\u5E94\u7528\u7684\u590D\u5236\u3001\u8FC1\u79FB\u3001\u5347\u7EA7\u7B49\u573A\u666F\u3002",paraId:0,tocIndex:1},{value:"\u5185\u7F6E\u63D2\u4EF6\u65E0\u9700\u624B\u52A8\u5B89\u88C5\u6FC0\u6D3B\u3002",paraId:1,tocIndex:2},{value:"\u53EF\u4EE5\u9009\u62E9\u4ECE\u672C\u5730\u4E0A\u4F20\u5907\u4EFD\uFF0C\u4E5F\u53EF\u4EE5\u70B9\u51FB\u67D0\u4E2A\u5907\u4EFD\u6587\u4EF6\u8FDB\u884C\u8FD8\u539F\u3002",paraId:2,tocIndex:5},{value:"\u9009\u62E9\u9700\u8981\u8FD8\u539F\u7684\u6570\u636E\uFF0C\u9009\u4E2D\u7684\u6570\u636E\u5C06\u5168\u91CF\u8986\u76D6\u76EE\u6807\u5E94\u7528\u5BF9\u5E94\u7684\u6570\u636E\u8868",paraId:3,tocIndex:5},{value:"\u70B9\u51FB\u4E86\u89E3\u66F4\u591A\uFF08Learn more\uFF09\u67E5\u770B\u5907\u4EFD\u8BF4\u660E",paraId:4,tocIndex:6},{value:"\u5907\u4EFD\u8BF4\u660E",paraId:5,tocIndex:6},{value:"\u5907\u4EFD\u5206\u7EC4",paraId:6,tocIndex:6},{value:"\u5FC5\u5907\u6570\u636E",paraId:7,tocIndex:6},{value:"\u8DF3\u8FC7\u7684\u6570\u636E",paraId:7,tocIndex:6},{value:"\u7528\u6237\u6570\u636E",paraId:7,tocIndex:6},{value:"\u65E5\u5FD7\u6570\u636E",paraId:7,tocIndex:6},{value:"\u7B2C\u4E09\u65B9\u670D\u52A1\u4FE1\u606F",paraId:7,tocIndex:6},{value:"\u81EA\u5EFA\u8868\u6570\u636E",paraId:7,tocIndex:6},{value:"\u6CE8\uFF1A\u53EF\u4EE5\u6309\u5206\u7EC4\u9009\u62E9\u9700\u8981\u5907\u4EFD\u6216\u8FD8\u539F\u7684\u6570\u636E\uFF0C\u8FD8\u539F\u65F6\u9009\u4E2D\u7684\u6570\u636E\u4F1A\u5168\u91CF\u8986\u76D6\u3002",paraId:8,tocIndex:6}],UN={},PN={title:"\u8FDE\u63A5\u5916\u90E8\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/collection-fdw/index.md",lastUpdated:1732240239e3,description:"\u57FA\u4E8E\u6570\u636E\u5E93\u7684 foreign data wrapper \u5B9E\u73B0\u7684\u8FDE\u63A5\u8FDC\u7A0B\u6570\u636E\u8868\u7684\u529F\u80FD\u63D2\u4EF6\u3002\u76EE\u524D\u652F\u6301 MySQL \u548C PostgreSQL \u6570\u636E\u5E93\u3002"},TN=[{id:"\u8FDE\u63A5\u5916\u90E8\u6570\u636E",depth:1,title:"\u8FDE\u63A5\u5916\u90E8\u6570\u636E"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"mysql",depth:3,title:"MySQL"},{id:"postgresql",depth:3,title:"PostgreSQL"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"}],CN=[{value:"\u57FA\u4E8E\u6570\u636E\u5E93\u7684 foreign data wrapper \u5B9E\u73B0\u7684\u8FDE\u63A5\u8FDC\u7A0B\u6570\u636E\u8868\u7684\u529F\u80FD\u63D2\u4EF6\u3002\u76EE\u524D\u652F\u6301 MySQL \u548C PostgreSQL \u6570\u636E\u5E93\u3002",paraId:0,tocIndex:1},{value:"MySQL \u901A\u8FC7 ",paraId:1,tocIndex:2},{value:"federated",paraId:1,tocIndex:2},{value:" \u5F15\u64CE\uFF0C\u9700\u8981\u6FC0\u6D3B\uFF0C\u652F\u6301\u8FDE\u63A5\u8FDC\u7A0B MySQL \u53CA\u5176\u534F\u8BAE\u517C\u5BB9\u6570\u636E\u5E93\uFF0C\u5982 MariaDB\u3002\u8BE6\u60C5\u6587\u6863\u53C2\u8003 ",paraId:1,tocIndex:2},{value:"Federated Storage Engine",paraId:1,tocIndex:2},{value:"\u3002",paraId:1,tocIndex:2},{value:"\u5728 PostgreSQL \u4E2D\uFF0C\u53EF\u901A\u8FC7\u4E0D\u540C\u7C7B\u578B\u7684 ",paraId:2,tocIndex:3},{value:"fdw",paraId:2,tocIndex:3},{value:" \u6269\u5C55\u6765\u652F\u6301\u4E0D\u540C\u7684\u8FDC\u7A0B\u6570\u636E\u7C7B\u578B\uFF0C\u76EE\u524D\u652F\u6301\u7684\u6269\u5C55\u6709\uFF1A",paraId:2,tocIndex:3},{value:"postgres_fdw",paraId:3,tocIndex:3},{value:"\uFF1A\u5728 PostgreSQL \u4E2D\u8FDE\u63A5\u8FDC\u7A0B PostgreSQL \u6570\u636E\u5E93\u3002",paraId:3,tocIndex:3},{value:"mysql_fdw(\u5F00\u53D1\u4E2D)",paraId:3,tocIndex:3},{value:"\uFF1A\u5728 PostgreSQL \u4E2D\u8FDE\u63A5\u8FDC\u7A0B MySQL \u6570\u636E\u5E93\u3002",paraId:3,tocIndex:3},{value:"\u5176\u4F59\u7C7B\u578B\u7684 fdw \u6269\u5C55\uFF0C\u53EF\u53C2\u8003 ",paraId:3,tocIndex:3},{value:"PostgreSQL Foreign Data Wrappers",paraId:3,tocIndex:3},{value:"\uFF0C\u63A5\u5165 NocoBase \u9700\u8981\u5728\u4EE3\u7801\u4E2D\u5B9E\u73B0\u76F8\u5E94\u7684\u9002\u914D\u63A5\u53E3\u3002",paraId:3,tocIndex:3},{value:"\u524D\u63D0\u6761\u4EF6",paraId:4,tocIndex:4},{value:"\u672C\u5730 MySQL\uFF08NocoBase \u4F7F\u7528\u7684\u6570\u636E\u5E93\uFF09\u9700\u8981\u6FC0\u6D3B ",paraId:5,tocIndex:4},{value:"federated",paraId:5,tocIndex:4},{value:"\uFF0C\u53C2\u8003 ",paraId:5,tocIndex:4},{value:"MySQL \u5982\u4F55\u542F\u7528 federated \u5F15\u64CE",paraId:6,tocIndex:4},{value:"\u7136\u540E\u901A\u8FC7\u63D2\u4EF6\u7BA1\u7406\u5668\u5B89\u88C5\u5E76\u6FC0\u6D3B\u63D2\u4EF6",paraId:7,tocIndex:4},{value:"\u5728\u300C\u6570\u636E\u8868\u7BA1\u7406 > \u521B\u5EFA\u6570\u636E\u8868\u300D \u4E0B\u62C9\u4E2D\uFF0C\u9009\u62E9\u300C\u8FDE\u63A5\u5916\u90E8\u6570\u636E\u300D",paraId:8,tocIndex:5},{value:"\u5728\u300C\u6570\u636E\u5E93\u670D\u52A1\u300D\u4E0B\u62C9\u9009\u9879\u4E2D\uFF0C\u9009\u62E9\u5DF2\u5B58\u5728\u7684\u6570\u636E\u5E93\u670D\u52A1\uFF0C\u6216\u8005\u300C\u521B\u5EFA\u6570\u636E\u5E93\u670D\u52A1\u300D",paraId:9,tocIndex:5},{value:"\u521B\u5EFA\u6570\u636E\u5E93\u670D\u52A1",paraId:10,tocIndex:5},{value:"\u9009\u62E9\u6570\u636E\u5E93\u670D\u52A1\u4E4B\u540E\uFF0C \u5728\u300C\u8FDC\u7A0B\u8868\u300D\u7684\u4E0B\u62C9\u9009\u9879\u4E2D\uFF0C\u9009\u62E9\u9700\u8981\u8FDE\u63A5\u7684\u6570\u636E\u8868\u3002",paraId:11,tocIndex:5},{value:"\u914D\u7F6E\u5B57\u6BB5\u4FE1\u606F",paraId:12,tocIndex:5},{value:"\u5982\u679C\u8FDC\u7A0B\u8868\u6709\u7ED3\u6784\u53D8\u5316\uFF0C\u4E5F\u53EF\u4EE5\u300C\u4ECE\u8FDC\u7A0B\u8868\u540C\u6B65\u300D",paraId:13,tocIndex:5},{value:"\u8FDC\u7A0B\u8868\u540C\u6B65",paraId:14,tocIndex:5},{value:"\u6700\u540E\uFF0C\u5728\u754C\u9762\u91CC\u663E\u793A",paraId:15,tocIndex:5}],AN={},qN={title:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",toc:"menu",filename:"docs/en-US/plugins/custom-request/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},EN=[{id:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",depth:1,title:"\u81EA\u5B9A\u4E49\u8BF7\u6C42"}],DN=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],ON={},RN={title:"\u81EA\u52A8\u7F16\u7801",toc:"menu",filename:"docs/en-US/plugins/sequence-field/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},MN=[{id:"\u81EA\u52A8\u7F16\u7801",depth:1,title:"\u81EA\u52A8\u7F16\u7801"}],LN=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],NN={},zN={title:"\u5FEB\u7167\u5B57\u6BB5",toc:"menu",filename:"docs/en-US/plugins/snapshot-field/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},FN=[{id:"\u5FEB\u7167\u5B57\u6BB5",depth:1,title:"\u5FEB\u7167\u5B57\u6BB5"}],BN=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],jN={},HN={title:"Workflow Delay",toc:"menu",filename:"docs/en-US/plugins/workflow-delay/index.md",lastUpdated:1732240239e3},WN=[],$N=[],GN={},VN={title:"<\u7248\u672C\u53F7>\uFF1A<\u65E5\u671F>",toc:"menu",filename:"docs/en-US/welcome/changelog/0-template.md",lastUpdated:1732240239e3,description:"\u7248\u672C\u53F7\uFF1A"},KN=[{id:"\u7248\u672C\u53F7\u65E5\u671F",depth:1,title:"<\u7248\u672C\u53F7>\uFF1A<\u65E5\u671F>"},{id:"\u65B0\u589E---added",depth:2,title:"\u65B0\u589E - Added"},{id:"\u65B0\u589E\u529F\u80FD-xxx-4260",depth:3,title:"\u65B0\u589E\u529F\u80FD XXX (#4260)"},{id:"\u63D2\u4EF6ldap-\u8BA4\u8BC1-4260",depth:3,title:"\u63D2\u4EF6\uFF1ALDAP \u8BA4\u8BC1 (#4260)"},{id:"\u6539\u8FDB---improved",depth:2,title:"\u6539\u8FDB - Improved"},{id:"\u6539\u8FDB\u6216\u4F18\u5316\u4E86\u67D0\u4E2A\u529F\u80FD-4260",depth:3,title:"\u6539\u8FDB\u6216\u4F18\u5316\u4E86\u67D0\u4E2A\u529F\u80FD (#4260)"},{id:"\u6539\u8FDB\u914D\u7F6E\u64CD\u4F5C\u4EA4\u4E92-4260",depth:3,title:"\u6539\u8FDB\u300C\u914D\u7F6E\u64CD\u4F5C\u300D\u4EA4\u4E92 (#4260)"},{id:"\u4FEE\u590D---fixed",depth:2,title:"\u4FEE\u590D - Fixed"},{id:"\u4FEE\u590D\u67D0\u4E2A\u7F3A\u9677-xxx-4260",depth:3,title:"\u4FEE\u590D\u67D0\u4E2A\u7F3A\u9677 XXX (#4260)"}],ZN=[{value:"\u7248\u672C\u53F7\uFF1A",paraId:0,tocIndex:0},{value:"Release Version\uFF1Ax.y.z",paraId:1,tocIndex:0},{value:"Pre-release Version\uFF1A1.x.y-alpha.z",paraId:1,tocIndex:0},{value:"\u76F8\u5173\u8BF4\u660E\uFF1A",paraId:2,tocIndex:0},{value:"\u517C\u5BB9\u6027\u53D8\u66F4\uFF1Ax + 1",paraId:3,tocIndex:0},{value:"\u65B0\u63D2\u4EF6\u3001\u65B0\u529F\u80FD\u53D1\u5E03\uFF1Ay + 1",paraId:3,tocIndex:0},{value:"\u7F3A\u9677\u4FEE\u590D\uFF1Az + 1",paraId:3,tocIndex:0},{value:"alpha -> beta -> rc",paraId:3,tocIndex:0},{value:"\u66F4\u65B0\u65E5\u5FD7\u6BCF\u5468\u4E00\u7BC7\uFF0C\u6587\u4EF6\u540D\u683C\u5F0F\uFF1A",paraId:4,tocIndex:0},{value:`- docs/zh-CN/welcome/changelog/.md + `,paraId:25},{value:"\u53D1\u9001\u8BF7\u6C42\u8282\u70B9\u91CC\u7684\u6570\u636E\u4E5F\u53EF\u4EE5\u4F7F\u7528\u4EBA\u5DE5\u8282\u70B9\u4E2D\u76F8\u5E94\u7684\u8868\u5355\u53D8\u91CF\uFF0C\u4EE5\u533A\u5206\u901A\u8FC7\u548C\u62D2\u7EDD\u7684\u77ED\u4FE1\u5185\u5BB9\u3002\u8FD9\u6837\u5C31\u5B8C\u6210\u4E86\u6574\u4E2A\u6D41\u7A0B\u7684\u914D\u7F6E\uFF0C\u5728\u5F00\u542F\u5DE5\u4F5C\u6D41\u540E\uFF0C\u5F53\u5458\u5DE5\u63D0\u4EA4\u8BF7\u5047\u7533\u8BF7\u7684\u8868\u5355\u540E\uFF0C\u4E3B\u7BA1\u5373\u53EF\u5728\u5F85\u529E\u4EFB\u52A1\u4E2D\u8FDB\u884C\u5BA1\u6279\u5904\u7406\uFF0C\u64CD\u4F5C\u57FA\u672C\u4E0E\u6587\u7AE0\u5BA1\u6838\u6D41\u7A0B\u7C7B\u4F3C\u3002",paraId:40,tocIndex:12}],fN={},xN={title:"\u66F4\u65B0\u6570\u636E",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/update.md",lastUpdated:173254844e4,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u66F4\u65B0\u3002"},gN=[{id:"\u66F4\u65B0\u6570\u636E",depth:1,title:"\u66F4\u65B0\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u66F4\u65B0\u6A21\u5F0F",depth:3,title:"\u66F4\u65B0\u6A21\u5F0F"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u5B57\u6BB5\u503C",depth:3,title:"\u5B57\u6BB5\u503C"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],bN=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u66F4\u65B0\u3002",paraId:0,tocIndex:0},{value:"\u6570\u636E\u8868\u548C\u5B57\u6BB5\u8D4B\u503C\u90E8\u5206\u4E0E\u65B0\u589E\u8282\u70B9\u76F8\u540C\uFF0C\u66F4\u65B0\u8282\u70B9\u7684\u533A\u522B\u4E3B\u8981\u662F\u589E\u52A0\u4E86\u7B5B\u9009\u6761\u4EF6\uFF0C\u800C\u4E14\u9700\u8981\u9009\u62E9\u66F4\u65B0\u6A21\u5F0F\u3002\u53E6\u5916\uFF0C\u66F4\u65B0\u8282\u70B9\u7684\u7ED3\u679C\u4F1A\u8FD4\u56DE\u66F4\u65B0\u6210\u529F\u6570\u636E\u7684\u884C\u6570\uFF0C\u53EA\u5728\u6267\u884C\u5386\u53F2\u91CC\u53EF\u67E5\u770B\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u53D8\u91CF\u5728\u540E\u7EED\u8282\u70B9\u4F7F\u7528\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u66F4\u65B0\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u9009\u62E9\u8981\u66F4\u65B0\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:3,tocIndex:3},{value:"\u66F4\u65B0\u6A21\u5F0F\u6709\u201C\u6279\u91CF\u201D\u548C\u201C\u9010\u6761\u201D\u7684\u6A21\u5F0F\uFF0C\u6279\u91CF\u6A21\u5F0F\u4E0B\uFF0C\u4E0D\u4F1A\u518D\u89E6\u53D1\u6BCF\u6761\u66F4\u65B0\u6570\u636E\u7684\u6570\u636E\u8868\u4E8B\u4EF6\uFF0C\u800C\u9010\u6761\u66F4\u65B0\u7684\u8BDD\u4F1A\u89E6\u53D1\u6BCF\u6761\u66F4\u65B0\u6570\u636E\u7684\u6570\u636E\u8868\u4E8B\u4EF6\uFF0C\u4F46\u5728\u5927\u6570\u636E\u91CF\u4E0B\u4F1A\u6709\u6027\u80FD\u95EE\u9898\uFF0C\u9700\u8981\u8C28\u614E\u4F7F\u7528\u3002\u901A\u5E38\u6839\u636E\u66F4\u65B0\u7684\u76EE\u6807\u6570\u636E\u548C\u662F\u5426\u8981\u89E6\u53D1\u5176\u4ED6\u5DE5\u4F5C\u6D41\u4E8B\u4EF6\u6765\u9009\u62E9\uFF0C\u5982\u679C\u662F\u6839\u636E\u4E3B\u952E\u66F4\u65B0\u5355\u6761\u6570\u636E\u7684\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u9010\u6761\u66F4\u65B0\uFF0C\u5982\u679C\u662F\u6839\u636E\u6761\u4EF6\u66F4\u65B0\u591A\u6761\u6570\u636E\u7684\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u6279\u91CF\u66F4\u65B0\u3002",paraId:4,tocIndex:4},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:5,tocIndex:5},{value:"\u4E0E\u65B0\u589E\u8282\u70B9\u7684\u5B57\u6BB5\u8D4B\u503C\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4E5F\u53EF\u4EE5\u624B\u52A8\u586B\u5199\u9759\u6001\u503C\u3002",paraId:6,tocIndex:6},{value:"\u6CE8\uFF1A\u5DE5\u4F5C\u6D41\u4E2D\u66F4\u65B0\u8282\u70B9\u66F4\u65B0\u7684\u6570\u636E\u4E0D\u4F1A\u81EA\u52A8\u5904\u7406\u201C\u6700\u540E\u4FEE\u6539\u4EBA\u201D\u6570\u636E\uFF0C\u9700\u8981\u6839\u636E\u60C5\u51B5\u81EA\u884C\u914D\u7F6E\u8FD9\u4E2A\u5B57\u6BB5\u7684\u503C\u3002",paraId:7,tocIndex:6},{value:"\u4F8B\u5982\u5F53\u65B0\u589E\u201C\u6587\u7AE0\u201D\u65F6\uFF0C\u9700\u8981\u81EA\u52A8\u66F4\u65B0\u201C\u6587\u7AE0\u5206\u7C7B\u201D\u8868\u7684\u201C\u6587\u7AE0\u6570\u91CF\u201D\u5B57\u6BB5\uFF0C\u53EF\u4EE5\u4F7F\u7528\u66F4\u65B0\u8282\u70B9\u6765\u5B9E\u73B0\uFF1A",paraId:8,tocIndex:7},{value:"\u5F53\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\uFF0C\u4F1A\u81EA\u52A8\u66F4\u65B0\u201C\u6587\u7AE0\u5206\u7C7B\u201D\u8868\u7684\u201C\u6587\u7AE0\u6570\u91CF\u201D\u5B57\u6BB5\u4E3A\u5F53\u524D\u6587\u7AE0\u6570\u91CF +1\u3002",paraId:9,tocIndex:7}],yN={},wN={title:"\u5907\u4EFD\u548C\u8FD8\u539F",toc:"menu",filename:"docs/en-US/plugins/backup-restore/index.md",lastUpdated:173254844e4,description:"NocoBase \u5E94\u7528\u7684\u5907\u4EFD\u4E0E\u8FD8\u539F\u63D2\u4EF6\uFF0C\u53EF\u7528\u4E8E\u5E94\u7528\u7684\u590D\u5236\u3001\u8FC1\u79FB\u3001\u5347\u7EA7\u7B49\u573A\u666F\u3002"},kN=[{id:"\u5907\u4EFD\u548C\u8FD8\u539F",depth:1,title:"\u5907\u4EFD\u548C\u8FD8\u539F"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u8BF4\u660E",depth:2,title:"\u4F7F\u7528\u8BF4\u660E"},{id:"\u65B0\u5EFA\u5907\u4EFD",depth:3,title:"\u65B0\u5EFA\u5907\u4EFD"},{id:"\u8FD8\u539F\u5907\u4EFD",depth:3,title:"\u8FD8\u539F\u5907\u4EFD"},{id:"\u5907\u4EFD\u8BF4\u660E",depth:3,title:"\u5907\u4EFD\u8BF4\u660E"},{id:"\u5F00\u53D1\u6307\u5357",depth:2,title:"\u5F00\u53D1\u6307\u5357"}],SN=[{value:"NocoBase \u5E94\u7528\u7684\u5907\u4EFD\u4E0E\u8FD8\u539F\u63D2\u4EF6\uFF0C\u53EF\u7528\u4E8E\u5E94\u7528\u7684\u590D\u5236\u3001\u8FC1\u79FB\u3001\u5347\u7EA7\u7B49\u573A\u666F\u3002",paraId:0,tocIndex:1},{value:"\u5185\u7F6E\u63D2\u4EF6\u65E0\u9700\u624B\u52A8\u5B89\u88C5\u6FC0\u6D3B\u3002",paraId:1,tocIndex:2},{value:"\u53EF\u4EE5\u9009\u62E9\u4ECE\u672C\u5730\u4E0A\u4F20\u5907\u4EFD\uFF0C\u4E5F\u53EF\u4EE5\u70B9\u51FB\u67D0\u4E2A\u5907\u4EFD\u6587\u4EF6\u8FDB\u884C\u8FD8\u539F\u3002",paraId:2,tocIndex:5},{value:"\u9009\u62E9\u9700\u8981\u8FD8\u539F\u7684\u6570\u636E\uFF0C\u9009\u4E2D\u7684\u6570\u636E\u5C06\u5168\u91CF\u8986\u76D6\u76EE\u6807\u5E94\u7528\u5BF9\u5E94\u7684\u6570\u636E\u8868",paraId:3,tocIndex:5},{value:"\u70B9\u51FB\u4E86\u89E3\u66F4\u591A\uFF08Learn more\uFF09\u67E5\u770B\u5907\u4EFD\u8BF4\u660E",paraId:4,tocIndex:6},{value:"\u5907\u4EFD\u8BF4\u660E",paraId:5,tocIndex:6},{value:"\u5907\u4EFD\u5206\u7EC4",paraId:6,tocIndex:6},{value:"\u5FC5\u5907\u6570\u636E",paraId:7,tocIndex:6},{value:"\u8DF3\u8FC7\u7684\u6570\u636E",paraId:7,tocIndex:6},{value:"\u7528\u6237\u6570\u636E",paraId:7,tocIndex:6},{value:"\u65E5\u5FD7\u6570\u636E",paraId:7,tocIndex:6},{value:"\u7B2C\u4E09\u65B9\u670D\u52A1\u4FE1\u606F",paraId:7,tocIndex:6},{value:"\u81EA\u5EFA\u8868\u6570\u636E",paraId:7,tocIndex:6},{value:"\u6CE8\uFF1A\u53EF\u4EE5\u6309\u5206\u7EC4\u9009\u62E9\u9700\u8981\u5907\u4EFD\u6216\u8FD8\u539F\u7684\u6570\u636E\uFF0C\u8FD8\u539F\u65F6\u9009\u4E2D\u7684\u6570\u636E\u4F1A\u5168\u91CF\u8986\u76D6\u3002",paraId:8,tocIndex:6}],UN={},PN={title:"\u8FDE\u63A5\u5916\u90E8\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/collection-fdw/index.md",lastUpdated:173254844e4,description:"\u57FA\u4E8E\u6570\u636E\u5E93\u7684 foreign data wrapper \u5B9E\u73B0\u7684\u8FDE\u63A5\u8FDC\u7A0B\u6570\u636E\u8868\u7684\u529F\u80FD\u63D2\u4EF6\u3002\u76EE\u524D\u652F\u6301 MySQL \u548C PostgreSQL \u6570\u636E\u5E93\u3002"},TN=[{id:"\u8FDE\u63A5\u5916\u90E8\u6570\u636E",depth:1,title:"\u8FDE\u63A5\u5916\u90E8\u6570\u636E"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"mysql",depth:3,title:"MySQL"},{id:"postgresql",depth:3,title:"PostgreSQL"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"}],CN=[{value:"\u57FA\u4E8E\u6570\u636E\u5E93\u7684 foreign data wrapper \u5B9E\u73B0\u7684\u8FDE\u63A5\u8FDC\u7A0B\u6570\u636E\u8868\u7684\u529F\u80FD\u63D2\u4EF6\u3002\u76EE\u524D\u652F\u6301 MySQL \u548C PostgreSQL \u6570\u636E\u5E93\u3002",paraId:0,tocIndex:1},{value:"MySQL \u901A\u8FC7 ",paraId:1,tocIndex:2},{value:"federated",paraId:1,tocIndex:2},{value:" \u5F15\u64CE\uFF0C\u9700\u8981\u6FC0\u6D3B\uFF0C\u652F\u6301\u8FDE\u63A5\u8FDC\u7A0B MySQL \u53CA\u5176\u534F\u8BAE\u517C\u5BB9\u6570\u636E\u5E93\uFF0C\u5982 MariaDB\u3002\u8BE6\u60C5\u6587\u6863\u53C2\u8003 ",paraId:1,tocIndex:2},{value:"Federated Storage Engine",paraId:1,tocIndex:2},{value:"\u3002",paraId:1,tocIndex:2},{value:"\u5728 PostgreSQL \u4E2D\uFF0C\u53EF\u901A\u8FC7\u4E0D\u540C\u7C7B\u578B\u7684 ",paraId:2,tocIndex:3},{value:"fdw",paraId:2,tocIndex:3},{value:" \u6269\u5C55\u6765\u652F\u6301\u4E0D\u540C\u7684\u8FDC\u7A0B\u6570\u636E\u7C7B\u578B\uFF0C\u76EE\u524D\u652F\u6301\u7684\u6269\u5C55\u6709\uFF1A",paraId:2,tocIndex:3},{value:"postgres_fdw",paraId:3,tocIndex:3},{value:"\uFF1A\u5728 PostgreSQL \u4E2D\u8FDE\u63A5\u8FDC\u7A0B PostgreSQL \u6570\u636E\u5E93\u3002",paraId:3,tocIndex:3},{value:"mysql_fdw(\u5F00\u53D1\u4E2D)",paraId:3,tocIndex:3},{value:"\uFF1A\u5728 PostgreSQL \u4E2D\u8FDE\u63A5\u8FDC\u7A0B MySQL \u6570\u636E\u5E93\u3002",paraId:3,tocIndex:3},{value:"\u5176\u4F59\u7C7B\u578B\u7684 fdw \u6269\u5C55\uFF0C\u53EF\u53C2\u8003 ",paraId:3,tocIndex:3},{value:"PostgreSQL Foreign Data Wrappers",paraId:3,tocIndex:3},{value:"\uFF0C\u63A5\u5165 NocoBase \u9700\u8981\u5728\u4EE3\u7801\u4E2D\u5B9E\u73B0\u76F8\u5E94\u7684\u9002\u914D\u63A5\u53E3\u3002",paraId:3,tocIndex:3},{value:"\u524D\u63D0\u6761\u4EF6",paraId:4,tocIndex:4},{value:"\u672C\u5730 MySQL\uFF08NocoBase \u4F7F\u7528\u7684\u6570\u636E\u5E93\uFF09\u9700\u8981\u6FC0\u6D3B ",paraId:5,tocIndex:4},{value:"federated",paraId:5,tocIndex:4},{value:"\uFF0C\u53C2\u8003 ",paraId:5,tocIndex:4},{value:"MySQL \u5982\u4F55\u542F\u7528 federated \u5F15\u64CE",paraId:6,tocIndex:4},{value:"\u7136\u540E\u901A\u8FC7\u63D2\u4EF6\u7BA1\u7406\u5668\u5B89\u88C5\u5E76\u6FC0\u6D3B\u63D2\u4EF6",paraId:7,tocIndex:4},{value:"\u5728\u300C\u6570\u636E\u8868\u7BA1\u7406 > \u521B\u5EFA\u6570\u636E\u8868\u300D \u4E0B\u62C9\u4E2D\uFF0C\u9009\u62E9\u300C\u8FDE\u63A5\u5916\u90E8\u6570\u636E\u300D",paraId:8,tocIndex:5},{value:"\u5728\u300C\u6570\u636E\u5E93\u670D\u52A1\u300D\u4E0B\u62C9\u9009\u9879\u4E2D\uFF0C\u9009\u62E9\u5DF2\u5B58\u5728\u7684\u6570\u636E\u5E93\u670D\u52A1\uFF0C\u6216\u8005\u300C\u521B\u5EFA\u6570\u636E\u5E93\u670D\u52A1\u300D",paraId:9,tocIndex:5},{value:"\u521B\u5EFA\u6570\u636E\u5E93\u670D\u52A1",paraId:10,tocIndex:5},{value:"\u9009\u62E9\u6570\u636E\u5E93\u670D\u52A1\u4E4B\u540E\uFF0C \u5728\u300C\u8FDC\u7A0B\u8868\u300D\u7684\u4E0B\u62C9\u9009\u9879\u4E2D\uFF0C\u9009\u62E9\u9700\u8981\u8FDE\u63A5\u7684\u6570\u636E\u8868\u3002",paraId:11,tocIndex:5},{value:"\u914D\u7F6E\u5B57\u6BB5\u4FE1\u606F",paraId:12,tocIndex:5},{value:"\u5982\u679C\u8FDC\u7A0B\u8868\u6709\u7ED3\u6784\u53D8\u5316\uFF0C\u4E5F\u53EF\u4EE5\u300C\u4ECE\u8FDC\u7A0B\u8868\u540C\u6B65\u300D",paraId:13,tocIndex:5},{value:"\u8FDC\u7A0B\u8868\u540C\u6B65",paraId:14,tocIndex:5},{value:"\u6700\u540E\uFF0C\u5728\u754C\u9762\u91CC\u663E\u793A",paraId:15,tocIndex:5}],AN={},qN={title:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",toc:"menu",filename:"docs/en-US/plugins/custom-request/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},EN=[{id:"\u81EA\u5B9A\u4E49\u8BF7\u6C42",depth:1,title:"\u81EA\u5B9A\u4E49\u8BF7\u6C42"}],DN=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],ON={},RN={title:"\u81EA\u52A8\u7F16\u7801",toc:"menu",filename:"docs/en-US/plugins/sequence-field/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},MN=[{id:"\u81EA\u52A8\u7F16\u7801",depth:1,title:"\u81EA\u52A8\u7F16\u7801"}],LN=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],NN={},zN={title:"\u5FEB\u7167\u5B57\u6BB5",toc:"menu",filename:"docs/en-US/plugins/snapshot-field/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},FN=[{id:"\u5FEB\u7167\u5B57\u6BB5",depth:1,title:"\u5FEB\u7167\u5B57\u6BB5"}],BN=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],jN={},HN={title:"Workflow Delay",toc:"menu",filename:"docs/en-US/plugins/workflow-delay/index.md",lastUpdated:173254844e4},WN=[],$N=[],GN={},VN={title:"<\u7248\u672C\u53F7>\uFF1A<\u65E5\u671F>",toc:"menu",filename:"docs/en-US/welcome/changelog/0-template.md",lastUpdated:173254844e4,description:"\u7248\u672C\u53F7\uFF1A"},KN=[{id:"\u7248\u672C\u53F7\u65E5\u671F",depth:1,title:"<\u7248\u672C\u53F7>\uFF1A<\u65E5\u671F>"},{id:"\u65B0\u589E---added",depth:2,title:"\u65B0\u589E - Added"},{id:"\u65B0\u589E\u529F\u80FD-xxx-4260",depth:3,title:"\u65B0\u589E\u529F\u80FD XXX (#4260)"},{id:"\u63D2\u4EF6ldap-\u8BA4\u8BC1-4260",depth:3,title:"\u63D2\u4EF6\uFF1ALDAP \u8BA4\u8BC1 (#4260)"},{id:"\u6539\u8FDB---improved",depth:2,title:"\u6539\u8FDB - Improved"},{id:"\u6539\u8FDB\u6216\u4F18\u5316\u4E86\u67D0\u4E2A\u529F\u80FD-4260",depth:3,title:"\u6539\u8FDB\u6216\u4F18\u5316\u4E86\u67D0\u4E2A\u529F\u80FD (#4260)"},{id:"\u6539\u8FDB\u914D\u7F6E\u64CD\u4F5C\u4EA4\u4E92-4260",depth:3,title:"\u6539\u8FDB\u300C\u914D\u7F6E\u64CD\u4F5C\u300D\u4EA4\u4E92 (#4260)"},{id:"\u4FEE\u590D---fixed",depth:2,title:"\u4FEE\u590D - Fixed"},{id:"\u4FEE\u590D\u67D0\u4E2A\u7F3A\u9677-xxx-4260",depth:3,title:"\u4FEE\u590D\u67D0\u4E2A\u7F3A\u9677 XXX (#4260)"}],ZN=[{value:"\u7248\u672C\u53F7\uFF1A",paraId:0,tocIndex:0},{value:"Release Version\uFF1Ax.y.z",paraId:1,tocIndex:0},{value:"Pre-release Version\uFF1A1.x.y-alpha.z",paraId:1,tocIndex:0},{value:"\u76F8\u5173\u8BF4\u660E\uFF1A",paraId:2,tocIndex:0},{value:"\u517C\u5BB9\u6027\u53D8\u66F4\uFF1Ax + 1",paraId:3,tocIndex:0},{value:"\u65B0\u63D2\u4EF6\u3001\u65B0\u529F\u80FD\u53D1\u5E03\uFF1Ay + 1",paraId:3,tocIndex:0},{value:"\u7F3A\u9677\u4FEE\u590D\uFF1Az + 1",paraId:3,tocIndex:0},{value:"alpha -> beta -> rc",paraId:3,tocIndex:0},{value:"\u66F4\u65B0\u65E5\u5FD7\u6BCF\u5468\u4E00\u7BC7\uFF0C\u6587\u4EF6\u540D\u683C\u5F0F\uFF1A",paraId:4,tocIndex:0},{value:`- docs/zh-CN/welcome/changelog/.md - docs/eh-US/welcome/changelog/.md `,paraId:5,tocIndex:0},{value:"\u6807\u9898\u683C\u5F0F\u4E3A\uFF1A",paraId:6,tocIndex:0},{value:`# <\u7248\u672C\u53F7>\uFF1A<\u65E5\u671F> @@ -14768,7 +14821,7 @@ db.registerFieldValueParsers({ ![]() `,paraId:9,tocIndex:0},{value:"#4260",paraId:10},{value:"\u4E00\u53E5\u8BDD\u6982\u62EC\uFF0C\u7136\u540E\u540E\u9762\u653E\u4E00\u5F20\u622A\u56FE\u3001\u52A8\u56FE\u6216\u89C6\u9891\u8BF4\u660E\uFF0C\u5728\u8FD9\u91CC\u5185\u5BB9\u4E0D\u8981\u5199\u592A\u591A\u4E86\uFF0C\u66F4\u591A\u5185\u5BB9\u5E94\u8BE5\u653E\u5230\u4F7F\u7528\u624B\u518C\u91CC\u4ECB\u7ECD\u3002",paraId:11,tocIndex:2},{value:"#4260",paraId:10},{value:"\u652F\u6301\u7528\u6237\u4F7F\u7528 LDAP \u670D\u52A1\u5668\u8D26\u53F7\u5BC6\u7801\u767B\u5F55 NocoBase\uFF0C\u8BE6\u60C5\u53C2\u8003 ",paraId:12,tocIndex:3},{value:"\u8BA4\u8BC1\uFF1ALDAP",paraId:13,tocIndex:3},{value:" \u6587\u6863\u3002",paraId:12,tocIndex:3},{value:"#4260",paraId:10},{value:"\u4E00\u53E5\u8BDD\u6982\u62EC\uFF0C\u7136\u540E\u540E\u9762\u653E\u4E00\u5F20\u622A\u56FE\u3001\u52A8\u56FE\u6216\u89C6\u9891\u8BF4\u660E\uFF0C\u5728\u8FD9\u91CC\u5185\u5BB9\u4E0D\u8981\u5199\u592A\u591A\u4E86\uFF0C\u5982\u679C\u5185\u5BB9\u8F83\u591A\u53EF\u4EE5\u6982\u62EC\u6027\u603B\u7ED3\uFF0C\u4F8B\u5982\uFF1A",paraId:14,tocIndex:5},{value:"\u4E8B\u98791",paraId:15,tocIndex:5},{value:"\u4E8B\u98792",paraId:15,tocIndex:5},{value:"#4260",paraId:10},{value:"\u4E0B\u62C9\u83DC\u5355\u91CC\u6240\u6709\u64CD\u4F5C\u7EDF\u4E00\u663E\u793A\u5728\u4E00\u4E2A\u5217\u8868\u4E2D\uFF0C\u4E0D\u518D\u533A\u5206\u201C\u542F\u7528\u64CD\u4F5C\u201D\u548C\u201C\u81EA\u5B9A\u4E49\u201D\u3002",paraId:16,tocIndex:6},{value:"\u53EA\u80FD\u6DFB\u52A0\u4E00\u6B21\u7684\u64CD\u4F5C\uFF1A\u8FD9\u4E9B\u64CD\u4F5C\u4FDD\u7559 Switch \u6548\u679C\uFF0C\u7528\u6237\u53EA\u80FD\u542F\u7528\u6216\u7981\u7528\u3002",paraId:17,tocIndex:6},{value:"\u53EF\u4EE5\u91CD\u590D\u6DFB\u52A0\u7684\u64CD\u4F5C\uFF1A\u8FD9\u4E9B\u64CD\u4F5C\u4E0D\u518D\u4F7F\u7528 Switch \u4EA4\u4E92\uFF0C\u53EF\u4EE5\u591A\u6B21\u6DFB\u52A0\u3002",paraId:17,tocIndex:6},{value:`\u5408\u5E76\u529F\u80FD\u76F8\u4F3C\u7684\u64CD\u4F5C -`,paraId:17,tocIndex:6},{value:"\u201CAdd new\u201D \u548C \u201CAdd record\u201D",paraId:18,tocIndex:6},{value:"\u201CSubmit\u201D \u548C \u201CSave record\u201D",paraId:18,tocIndex:6},{value:"#4260",paraId:10},{value:"\u4E00\u53E5\u8BDD\u6982\u62EC\uFF0C\u7136\u540E\u540E\u9762\u653E\u4E00\u5F20\u622A\u56FE\u3001\u52A8\u56FE\u6216\u89C6\u9891\u8BF4\u660E\u3002",paraId:19,tocIndex:8}],YN={},QN={title:"Built-in Helpers",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/core.md",lastUpdated:1732240239e3,description:"https://handlebarsjs.com/guide/builtin-helpers.html"},JN=[{id:"built-in-helpers",depth:1,title:"Built-in Helpers"},{id:"if",depth:2,title:"{{if}}"},{id:"unless",depth:2,title:"{{unless}}"},{id:"each",depth:2,title:"{{each}}"},{id:"with",depth:2,title:"{{with}}"},{id:"lookup",depth:2,title:"{{lookup}}"}],XN=[{value:"https://handlebarsjs.com/guide/builtin-helpers.html",paraId:0,tocIndex:0},{value:"Renders a block if the given condition is truthy.",paraId:1,tocIndex:1},{value:"Params",paraId:2,tocIndex:1},{value:"condition",paraId:3,tocIndex:1},{value:" ",paraId:3,tocIndex:1},{value:"{Any}",paraId:3,tocIndex:1},{value:": The condition to evaluate.",paraId:3,tocIndex:1},{value:"Returns",paraId:4,tocIndex:1},{value:": The content inside the block if the condition is truthy, otherwise returns nothing.",paraId:4,tocIndex:1},{value:"Example",paraId:5,tocIndex:1},{value:`{{#if condition}} +`,paraId:17,tocIndex:6},{value:"\u201CAdd new\u201D \u548C \u201CAdd record\u201D",paraId:18,tocIndex:6},{value:"\u201CSubmit\u201D \u548C \u201CSave record\u201D",paraId:18,tocIndex:6},{value:"#4260",paraId:10},{value:"\u4E00\u53E5\u8BDD\u6982\u62EC\uFF0C\u7136\u540E\u540E\u9762\u653E\u4E00\u5F20\u622A\u56FE\u3001\u52A8\u56FE\u6216\u89C6\u9891\u8BF4\u660E\u3002",paraId:19,tocIndex:8}],YN={},QN={title:"Built-in Helpers",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/core.md",lastUpdated:173254844e4,description:"https://handlebarsjs.com/guide/builtin-helpers.html"},JN=[{id:"built-in-helpers",depth:1,title:"Built-in Helpers"},{id:"if",depth:2,title:"{{if}}"},{id:"unless",depth:2,title:"{{unless}}"},{id:"each",depth:2,title:"{{each}}"},{id:"with",depth:2,title:"{{with}}"},{id:"lookup",depth:2,title:"{{lookup}}"}],XN=[{value:"https://handlebarsjs.com/guide/builtin-helpers.html",paraId:0,tocIndex:0},{value:"Renders a block if the given condition is truthy.",paraId:1,tocIndex:1},{value:"Params",paraId:2,tocIndex:1},{value:"condition",paraId:3,tocIndex:1},{value:" ",paraId:3,tocIndex:1},{value:"{Any}",paraId:3,tocIndex:1},{value:": The condition to evaluate.",paraId:3,tocIndex:1},{value:"Returns",paraId:4,tocIndex:1},{value:": The content inside the block if the condition is truthy, otherwise returns nothing.",paraId:4,tocIndex:1},{value:"Example",paraId:5,tocIndex:1},{value:`{{#if condition}} This will be displayed if the condition is true. {{/if}} `,paraId:6,tocIndex:1},{value:"Renders a block if the given condition is falsy. This is the opposite of ",paraId:7,tocIndex:2},{value:"if",paraId:7,tocIndex:2},{value:".",paraId:7,tocIndex:2},{value:"Params",paraId:8,tocIndex:2},{value:"condition",paraId:9,tocIndex:2},{value:" ",paraId:9,tocIndex:2},{value:"{Any}",paraId:9,tocIndex:2},{value:": The condition to evaluate.",paraId:9,tocIndex:2},{value:"Returns",paraId:10,tocIndex:2},{value:": The content inside the block if the condition is falsy, otherwise returns nothing.",paraId:10,tocIndex:2},{value:"Example",paraId:11,tocIndex:2},{value:`{{#unless condition}} @@ -14783,16 +14836,16 @@ db.registerFieldValueParsers({ {{/with}} `,paraId:24,tocIndex:4},{value:"Looks up the value of a specified key in an object. This helper is useful for accessing dynamic keys.",paraId:25,tocIndex:5},{value:"Params",paraId:26,tocIndex:5},{value:"context",paraId:27,tocIndex:5},{value:" ",paraId:27,tocIndex:5},{value:"{Object}",paraId:27,tocIndex:5},{value:": The object to look up the key from.",paraId:27,tocIndex:5},{value:"key",paraId:27,tocIndex:5},{value:" ",paraId:27,tocIndex:5},{value:"{String|Number}",paraId:27,tocIndex:5},{value:": The key to look up.",paraId:27,tocIndex:5},{value:"Returns",paraId:28,tocIndex:5},{value:": The value of the specified key in the object.",paraId:28,tocIndex:5},{value:"Example",paraId:29,tocIndex:5},{value:`{{lookup person "name"}} -`,paraId:30,tocIndex:5}],ez={},az={title:"Date",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/date.md",lastUpdated:1732240239e3,description:'The "dateFormat" helper in Handlebars is used to format a date using the day.js library. It takes two required arguments and an optional third argument for the timezone.'},tz=[{id:"date",depth:1,title:"Date"},{id:"dateformat",depth:2,title:"{{dateFormat}}"}],nz=[{value:'The "dateFormat" helper in Handlebars is used to format a date using the day.js library. It takes two required arguments and an optional third argument for the timezone.',paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"datetime",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"format",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"timezone",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"Example",paraId:3,tocIndex:1},{value:`{{dateFormat now "YYYY-MM-DD HH:mm:ss"}} +`,paraId:30,tocIndex:5}],ez={},az={title:"Date",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/date.md",lastUpdated:173254844e4,description:'The "dateFormat" helper in Handlebars is used to format a date using the day.js library. It takes two required arguments and an optional third argument for the timezone.'},tz=[{id:"date",depth:1,title:"Date"},{id:"dateformat",depth:2,title:"{{dateFormat}}"}],nz=[{value:'The "dateFormat" helper in Handlebars is used to format a date using the day.js library. It takes two required arguments and an optional third argument for the timezone.',paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"datetime",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"format",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"timezone",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"Example",paraId:3,tocIndex:1},{value:`{{dateFormat now "YYYY-MM-DD HH:mm:ss"}} {{dateFormat now "YYYY-MM-DD HH:mm:ss" "Asia/Tokyo"}} {{dateFormat now "YYYY-MM-DD HH:mm:ss" "UTC"}} -`,paraId:4,tocIndex:1}],oz={},rz={title:"HTML",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/html.md",lastUpdated:1732240239e3},dz=[{id:"html",depth:1,title:"HTML"},{id:"qrcode",depth:2,title:"{{qrcode}}"}],iz=[],lz={},cz={title:"I18n",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/i18n.md",lastUpdated:1732240239e3,description:"Params"},sz=[{id:"i18n",depth:1,title:"I18n"},{id:"t",depth:2,title:"{{t}}"}],uz=[{value:"Params",paraId:0,tocIndex:1},{value:"key",paraId:1,tocIndex:1},{value:" ",paraId:1,tocIndex:1},{value:"{String}",paraId:1,tocIndex:1},{value:"ns",paraId:1,tocIndex:1},{value:" ",paraId:1,tocIndex:1},{value:"{String}",paraId:1,tocIndex:1},{value:"returns",paraId:1,tocIndex:1},{value:" ",paraId:1,tocIndex:1},{value:"{String}",paraId:1,tocIndex:1},{value:"Example",paraId:2,tocIndex:1},{value:`{{t "Today"}} +`,paraId:4,tocIndex:1}],oz={},rz={title:"HTML",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/html.md",lastUpdated:173254844e4},dz=[{id:"html",depth:1,title:"HTML"},{id:"qrcode",depth:2,title:"{{qrcode}}"}],iz=[],lz={},cz={title:"I18n",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/i18n.md",lastUpdated:173254844e4,description:"Params"},sz=[{id:"i18n",depth:1,title:"I18n"},{id:"t",depth:2,title:"{{t}}"}],uz=[{value:"Params",paraId:0,tocIndex:1},{value:"key",paraId:1,tocIndex:1},{value:" ",paraId:1,tocIndex:1},{value:"{String}",paraId:1,tocIndex:1},{value:"ns",paraId:1,tocIndex:1},{value:" ",paraId:1,tocIndex:1},{value:"{String}",paraId:1,tocIndex:1},{value:"returns",paraId:1,tocIndex:1},{value:" ",paraId:1,tocIndex:1},{value:"{String}",paraId:1,tocIndex:1},{value:"Example",paraId:2,tocIndex:1},{value:`{{t "Today"}} {{t "Permissions" "@nocobase/plugin-acl"}} -`,paraId:3,tocIndex:1}],pz={},Iz={title:"Math",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/math.md",lastUpdated:1732240239e3,description:"Return the magnitude of a."},_z=[{id:"math",depth:1,title:"Math"},{id:"abs",depth:2,title:"{{abs}}"},{id:"add",depth:2,title:"{{add}}"},{id:"avg",depth:2,title:"{{avg}}"},{id:"ceil",depth:2,title:"{{ceil}}"},{id:"divide",depth:2,title:"{{divide}}"},{id:"floor",depth:2,title:"{{floor}}"},{id:"minus",depth:2,title:"{{minus}}"},{id:"modulo",depth:2,title:"{{modulo}}"},{id:"multiply",depth:2,title:"{{multiply}}"},{id:"plus",depth:2,title:"{{plus}}"},{id:"random",depth:2,title:"{{random}}"},{id:"remainder",depth:2,title:"{{remainder}}"},{id:"round",depth:2,title:"{{round}}"},{id:"subtract",depth:2,title:"{{subtract}}"},{id:"sum",depth:2,title:"{{sum}}"},{id:"times",depth:2,title:"{{times}}"}],vz=[{value:"Return the magnitude of ",paraId:0,tocIndex:1},{value:"a",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"a",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{Number}",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{Number}",paraId:2,tocIndex:1},{value:"Return the sum of ",paraId:3,tocIndex:2},{value:"a",paraId:3,tocIndex:2},{value:" plus ",paraId:3,tocIndex:2},{value:"b",paraId:3,tocIndex:2},{value:".",paraId:3,tocIndex:2},{value:"Params",paraId:4,tocIndex:2},{value:"a",paraId:5,tocIndex:2},{value:" ",paraId:5,tocIndex:2},{value:"{Number}",paraId:5,tocIndex:2},{value:"b",paraId:5,tocIndex:2},{value:" ",paraId:5,tocIndex:2},{value:"{Number}",paraId:5,tocIndex:2},{value:"returns",paraId:5,tocIndex:2},{value:" ",paraId:5,tocIndex:2},{value:"{Number}",paraId:5,tocIndex:2},{value:"Returns the average of all numbers in the given array.",paraId:6,tocIndex:3},{value:"Params",paraId:7,tocIndex:3},{value:"array",paraId:8,tocIndex:3},{value:" ",paraId:8,tocIndex:3},{value:"{Array}",paraId:8,tocIndex:3},{value:": Array of numbers to add up.",paraId:8,tocIndex:3},{value:"returns",paraId:8,tocIndex:3},{value:" ",paraId:8,tocIndex:3},{value:"{Number}",paraId:8,tocIndex:3},{value:"Example",paraId:9,tocIndex:3},{value:`{{avg "[1, 2, 3, 4, 5]"}} +`,paraId:3,tocIndex:1}],pz={},Iz={title:"Math",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/math.md",lastUpdated:173254844e4,description:"Return the magnitude of a."},_z=[{id:"math",depth:1,title:"Math"},{id:"abs",depth:2,title:"{{abs}}"},{id:"add",depth:2,title:"{{add}}"},{id:"avg",depth:2,title:"{{avg}}"},{id:"ceil",depth:2,title:"{{ceil}}"},{id:"divide",depth:2,title:"{{divide}}"},{id:"floor",depth:2,title:"{{floor}}"},{id:"minus",depth:2,title:"{{minus}}"},{id:"modulo",depth:2,title:"{{modulo}}"},{id:"multiply",depth:2,title:"{{multiply}}"},{id:"plus",depth:2,title:"{{plus}}"},{id:"random",depth:2,title:"{{random}}"},{id:"remainder",depth:2,title:"{{remainder}}"},{id:"round",depth:2,title:"{{round}}"},{id:"subtract",depth:2,title:"{{subtract}}"},{id:"sum",depth:2,title:"{{sum}}"},{id:"times",depth:2,title:"{{times}}"}],vz=[{value:"Return the magnitude of ",paraId:0,tocIndex:1},{value:"a",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"a",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{Number}",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{Number}",paraId:2,tocIndex:1},{value:"Return the sum of ",paraId:3,tocIndex:2},{value:"a",paraId:3,tocIndex:2},{value:" plus ",paraId:3,tocIndex:2},{value:"b",paraId:3,tocIndex:2},{value:".",paraId:3,tocIndex:2},{value:"Params",paraId:4,tocIndex:2},{value:"a",paraId:5,tocIndex:2},{value:" ",paraId:5,tocIndex:2},{value:"{Number}",paraId:5,tocIndex:2},{value:"b",paraId:5,tocIndex:2},{value:" ",paraId:5,tocIndex:2},{value:"{Number}",paraId:5,tocIndex:2},{value:"returns",paraId:5,tocIndex:2},{value:" ",paraId:5,tocIndex:2},{value:"{Number}",paraId:5,tocIndex:2},{value:"Returns the average of all numbers in the given array.",paraId:6,tocIndex:3},{value:"Params",paraId:7,tocIndex:3},{value:"array",paraId:8,tocIndex:3},{value:" ",paraId:8,tocIndex:3},{value:"{Array}",paraId:8,tocIndex:3},{value:": Array of numbers to add up.",paraId:8,tocIndex:3},{value:"returns",paraId:8,tocIndex:3},{value:" ",paraId:8,tocIndex:3},{value:"{Number}",paraId:8,tocIndex:3},{value:"Example",paraId:9,tocIndex:3},{value:`{{avg "[1, 2, 3, 4, 5]"}} `,paraId:10,tocIndex:3},{value:"Get the ",paraId:11,tocIndex:4},{value:"Math.ceil()",paraId:11,tocIndex:4},{value:" of the given value.",paraId:11,tocIndex:4},{value:"Params",paraId:12,tocIndex:4},{value:"value",paraId:13,tocIndex:4},{value:" ",paraId:13,tocIndex:4},{value:"{Number}",paraId:13,tocIndex:4},{value:"returns",paraId:13,tocIndex:4},{value:" ",paraId:13,tocIndex:4},{value:"{Number}",paraId:13,tocIndex:4},{value:"Divide ",paraId:14,tocIndex:5},{value:"a",paraId:14,tocIndex:5},{value:" by ",paraId:14,tocIndex:5},{value:"b",paraId:14,tocIndex:5},{value:"Params",paraId:15,tocIndex:5},{value:"a",paraId:16,tocIndex:5},{value:" ",paraId:16,tocIndex:5},{value:"{Number}",paraId:16,tocIndex:5},{value:": numerator",paraId:16,tocIndex:5},{value:"b",paraId:16,tocIndex:5},{value:" ",paraId:16,tocIndex:5},{value:"{Number}",paraId:16,tocIndex:5},{value:": denominator",paraId:16,tocIndex:5},{value:"Get the ",paraId:17,tocIndex:6},{value:"Math.floor()",paraId:17,tocIndex:6},{value:" of the given value.",paraId:17,tocIndex:6},{value:"Params",paraId:18,tocIndex:6},{value:"value",paraId:19,tocIndex:6},{value:" ",paraId:19,tocIndex:6},{value:"{Number}",paraId:19,tocIndex:6},{value:"returns",paraId:19,tocIndex:6},{value:" ",paraId:19,tocIndex:6},{value:"{Number}",paraId:19,tocIndex:6},{value:"Return the difference of ",paraId:20,tocIndex:7},{value:"a",paraId:20,tocIndex:7},{value:" minus ",paraId:20,tocIndex:7},{value:"b",paraId:20,tocIndex:7},{value:".",paraId:20,tocIndex:7},{value:"Params",paraId:21,tocIndex:7},{value:"a",paraId:22,tocIndex:7},{value:" ",paraId:22,tocIndex:7},{value:"{Number}",paraId:22,tocIndex:7},{value:"b",paraId:22,tocIndex:7},{value:" ",paraId:22,tocIndex:7},{value:"{Number}",paraId:22,tocIndex:7},{value:"Get the remainder of a division operation.",paraId:23,tocIndex:8},{value:"Params",paraId:24,tocIndex:8},{value:"a",paraId:25,tocIndex:8},{value:" ",paraId:25,tocIndex:8},{value:"{Number}",paraId:25,tocIndex:8},{value:"b",paraId:25,tocIndex:8},{value:" ",paraId:25,tocIndex:8},{value:"{Number}",paraId:25,tocIndex:8},{value:"returns",paraId:25,tocIndex:8},{value:" ",paraId:25,tocIndex:8},{value:"{Number}",paraId:25,tocIndex:8},{value:"Return the product of ",paraId:26,tocIndex:9},{value:"a",paraId:26,tocIndex:9},{value:" times ",paraId:26,tocIndex:9},{value:"b",paraId:26,tocIndex:9},{value:".",paraId:26,tocIndex:9},{value:"Params",paraId:27,tocIndex:9},{value:"a",paraId:28,tocIndex:9},{value:" ",paraId:28,tocIndex:9},{value:"{Number}",paraId:28,tocIndex:9},{value:": factor",paraId:28,tocIndex:9},{value:"b",paraId:28,tocIndex:9},{value:" ",paraId:28,tocIndex:9},{value:"{Number}",paraId:28,tocIndex:9},{value:": multiplier",paraId:28,tocIndex:9},{value:"returns",paraId:28,tocIndex:9},{value:" ",paraId:28,tocIndex:9},{value:"{Number}",paraId:28,tocIndex:9},{value:"Add ",paraId:29,tocIndex:10},{value:"a",paraId:29,tocIndex:10},{value:" by ",paraId:29,tocIndex:10},{value:"b",paraId:29,tocIndex:10},{value:".",paraId:29,tocIndex:10},{value:"Params",paraId:30,tocIndex:10},{value:"a",paraId:31,tocIndex:10},{value:" ",paraId:31,tocIndex:10},{value:"{Number}",paraId:31,tocIndex:10},{value:": factor",paraId:31,tocIndex:10},{value:"b",paraId:31,tocIndex:10},{value:" ",paraId:31,tocIndex:10},{value:"{Number}",paraId:31,tocIndex:10},{value:": multiplier",paraId:31,tocIndex:10},{value:"Generate a random number between two values",paraId:32,tocIndex:11},{value:"Params",paraId:33,tocIndex:11},{value:"min",paraId:34,tocIndex:11},{value:" ",paraId:34,tocIndex:11},{value:"{Number}",paraId:34,tocIndex:11},{value:"max",paraId:34,tocIndex:11},{value:" ",paraId:34,tocIndex:11},{value:"{Number}",paraId:34,tocIndex:11},{value:"returns",paraId:34,tocIndex:11},{value:" ",paraId:34,tocIndex:11},{value:"{String}",paraId:34,tocIndex:11},{value:"Get the remainder when ",paraId:35,tocIndex:12},{value:"a",paraId:35,tocIndex:12},{value:" is divided by ",paraId:35,tocIndex:12},{value:"b",paraId:35,tocIndex:12},{value:".",paraId:35,tocIndex:12},{value:"Params",paraId:36,tocIndex:12},{value:"a",paraId:37,tocIndex:12},{value:" ",paraId:37,tocIndex:12},{value:"{Number}",paraId:37,tocIndex:12},{value:": a",paraId:37,tocIndex:12},{value:"b",paraId:37,tocIndex:12},{value:" ",paraId:37,tocIndex:12},{value:"{Number}",paraId:37,tocIndex:12},{value:": b",paraId:37,tocIndex:12},{value:"Round the given number.",paraId:38,tocIndex:13},{value:"Params",paraId:39,tocIndex:13},{value:"number",paraId:40,tocIndex:13},{value:" ",paraId:40,tocIndex:13},{value:"{Number}",paraId:40,tocIndex:13},{value:"returns",paraId:40,tocIndex:13},{value:" ",paraId:40,tocIndex:13},{value:"{Number}",paraId:40,tocIndex:13},{value:"Return the product of ",paraId:41,tocIndex:14},{value:"a",paraId:41,tocIndex:14},{value:" minus ",paraId:41,tocIndex:14},{value:"b",paraId:41,tocIndex:14},{value:".",paraId:41,tocIndex:14},{value:"Params",paraId:42,tocIndex:14},{value:"a",paraId:43,tocIndex:14},{value:" ",paraId:43,tocIndex:14},{value:"{Number}",paraId:43,tocIndex:14},{value:"b",paraId:43,tocIndex:14},{value:" ",paraId:43,tocIndex:14},{value:"{Number}",paraId:43,tocIndex:14},{value:"returns",paraId:43,tocIndex:14},{value:" ",paraId:43,tocIndex:14},{value:"{Number}",paraId:43,tocIndex:14},{value:"Returns the sum of all numbers in the given array.",paraId:44,tocIndex:15},{value:"Params",paraId:45,tocIndex:15},{value:"array",paraId:46,tocIndex:15},{value:" ",paraId:46,tocIndex:15},{value:"{Array}",paraId:46,tocIndex:15},{value:": Array of numbers to add up.",paraId:46,tocIndex:15},{value:"returns",paraId:46,tocIndex:15},{value:" ",paraId:46,tocIndex:15},{value:"{Number}",paraId:46,tocIndex:15},{value:"Example",paraId:47,tocIndex:15},{value:`{{sum "[1, 2, 3, 4, 5]"}} -`,paraId:48,tocIndex:15},{value:"Multiply number ",paraId:49,tocIndex:16},{value:"a",paraId:49,tocIndex:16},{value:" by number ",paraId:49,tocIndex:16},{value:"b",paraId:49,tocIndex:16},{value:".",paraId:49,tocIndex:16},{value:"Params",paraId:50,tocIndex:16},{value:"a",paraId:51,tocIndex:16},{value:" ",paraId:51,tocIndex:16},{value:"{Number}",paraId:51,tocIndex:16},{value:": factor",paraId:51,tocIndex:16},{value:"b",paraId:51,tocIndex:16},{value:" ",paraId:51,tocIndex:16},{value:"{Number}",paraId:51,tocIndex:16},{value:": multiplier",paraId:51,tocIndex:16},{value:"returns",paraId:51,tocIndex:16},{value:" ",paraId:51,tocIndex:16},{value:"{Number}",paraId:51,tocIndex:16}],mz={},hz={title:"Path",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/path.md",lastUpdated:1732240239e3,description:"Get the directory path segment from the given filepath."},fz=[{id:"path",depth:1,title:"Path"},{id:"absolute",depth:2,title:"{{absolute}}"},{id:"dirname",depth:2,title:"{{dirname}}"},{id:"relative",depth:2,title:"{{relative}}"},{id:"basename",depth:2,title:"{{basename}}"},{id:"stem",depth:2,title:"{{stem}}"},{id:"extname",depth:2,title:"{{extname}}"},{id:"resolve",depth:2,title:"{{resolve}}"},{id:"segments",depth:2,title:"{{segments}}"}],xz=[{value:"Get the directory path segment from the given ",paraId:0,tocIndex:1},{value:"filepath",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"ext",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"Example",paraId:3,tocIndex:1},{value:`{{absolute "docs/toc.md"}} +`,paraId:48,tocIndex:15},{value:"Multiply number ",paraId:49,tocIndex:16},{value:"a",paraId:49,tocIndex:16},{value:" by number ",paraId:49,tocIndex:16},{value:"b",paraId:49,tocIndex:16},{value:".",paraId:49,tocIndex:16},{value:"Params",paraId:50,tocIndex:16},{value:"a",paraId:51,tocIndex:16},{value:" ",paraId:51,tocIndex:16},{value:"{Number}",paraId:51,tocIndex:16},{value:": factor",paraId:51,tocIndex:16},{value:"b",paraId:51,tocIndex:16},{value:" ",paraId:51,tocIndex:16},{value:"{Number}",paraId:51,tocIndex:16},{value:": multiplier",paraId:51,tocIndex:16},{value:"returns",paraId:51,tocIndex:16},{value:" ",paraId:51,tocIndex:16},{value:"{Number}",paraId:51,tocIndex:16}],mz={},hz={title:"Path",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/path.md",lastUpdated:173254844e4,description:"Get the directory path segment from the given filepath."},fz=[{id:"path",depth:1,title:"Path"},{id:"absolute",depth:2,title:"{{absolute}}"},{id:"dirname",depth:2,title:"{{dirname}}"},{id:"relative",depth:2,title:"{{relative}}"},{id:"basename",depth:2,title:"{{basename}}"},{id:"stem",depth:2,title:"{{stem}}"},{id:"extname",depth:2,title:"{{extname}}"},{id:"resolve",depth:2,title:"{{resolve}}"},{id:"segments",depth:2,title:"{{segments}}"}],xz=[{value:"Get the directory path segment from the given ",paraId:0,tocIndex:1},{value:"filepath",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:"Params",paraId:1,tocIndex:1},{value:"ext",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"returns",paraId:2,tocIndex:1},{value:" ",paraId:2,tocIndex:1},{value:"{String}",paraId:2,tocIndex:1},{value:"Example",paraId:3,tocIndex:1},{value:`{{absolute "docs/toc.md"}} `,paraId:4,tocIndex:1},{value:"Get the directory path segment from the given ",paraId:5,tocIndex:2},{value:"filepath",paraId:5,tocIndex:2},{value:".",paraId:5,tocIndex:2},{value:"Params",paraId:6,tocIndex:2},{value:"ext",paraId:7,tocIndex:2},{value:" ",paraId:7,tocIndex:2},{value:"{String}",paraId:7,tocIndex:2},{value:"returns",paraId:7,tocIndex:2},{value:" ",paraId:7,tocIndex:2},{value:"{String}",paraId:7,tocIndex:2},{value:"Example",paraId:8,tocIndex:2},{value:`{{dirname "docs/toc.md"}} @@ -14813,7 +14866,7 @@ db.registerFieldValueParsers({ {{segments "a/b/c/d" "1" "2"}} -`,paraId:39,tocIndex:8}],gz={},bz={title:"Commands",toc:"menu",filename:"docs/en-US/development/server/commands.md",lastUpdated:1732240239e3,description:"In a plugin, custom commands must be located in the src/server/commands/*.ts directory of the plugin. The content should look like this:"},yz=[{id:"commands",depth:1,title:"Commands"}],wz=[{value:"In a plugin, custom commands must be located in the ",paraId:0,tocIndex:0},{value:"src/server/commands/*.ts",paraId:0,tocIndex:0},{value:" directory of the plugin. The content should look like this:",paraId:0,tocIndex:0},{value:`import { Application } from '@nocobase/server'; +`,paraId:39,tocIndex:8}],gz={},bz={title:"Commands",toc:"menu",filename:"docs/en-US/development/server/commands.md",lastUpdated:173254844e4,description:"In a plugin, custom commands must be located in the src/server/commands/*.ts directory of the plugin. The content should look like this:"},yz=[{id:"commands",depth:1,title:"Commands"}],wz=[{value:"In a plugin, custom commands must be located in the ",paraId:0,tocIndex:0},{value:"src/server/commands/*.ts",paraId:0,tocIndex:0},{value:" directory of the plugin. The content should look like this:",paraId:0,tocIndex:0},{value:`import { Application } from '@nocobase/server'; export default function(app: Application) { app @@ -14829,9 +14882,9 @@ export default function(app: Application) { `,paraId:1,tocIndex:0},{value:"Custom commands in the plugin are only effective after the plugin is installed and activated.",paraId:2},{value:"Special Configurations for Commands:",paraId:3},{value:"ipc()",paraId:4},{value:" When the app is running, the command-line sends instructions through ipc to operate on the running app instance. Without the ",paraId:4},{value:"ipc()",paraId:4},{value:" configuration, a new application instance will be created to execute the command (this will not interfere with the running app instance).",paraId:4},{value:"auth()",paraId:4},{value:" Performs database verification. If the database configuration is incorrect, the command will not be executed.",paraId:4},{value:"preload()",paraId:4},{value:" Determines whether to pre-load the application configuration, i.e., execute ",paraId:4},{value:"app.load()",paraId:4},{value:".",paraId:4},{value:"These configurations can be adjusted according to the actual use of the command, as shown in the examples below:",paraId:5},{value:`app.command('a').ipc().action() app.command('a').auth().action() app.command('a').preload().action() -`,paraId:6}],kz={},Sz={title:"Print",toc:"menu",filename:"docs/en-US/handbook/action-print/index.md",lastUpdated:1732240239e3,description:"The print button is a functional button in the details section. When clicked, it triggers the browser\u2019s print function, allowing users to easily print the content to a physical document or other printing devices."},Uz=[{id:"print",depth:1,title:"Print"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"}],Pz=[{value:"The print button is a functional button in the details section. When clicked, it triggers the browser\u2019s print function, allowing users to easily print the content to a physical document or other printing devices.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, no separate installation required.",paraId:1,tocIndex:2}],Tz={},Cz={title:"Iframe Block",toc:"menu",filename:"docs/en-US/handbook/block-iframe/index.md",lastUpdated:1732240239e3,description:"The Iframe block allows you to embed external web pages or content into the current page."},Az=[{id:"iframe-block",depth:1,title:"Iframe Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"template-engine",depth:2,title:"Template engine"},{id:"string-template",depth:3,title:"string template"},{id:"handlebars",depth:3,title:"Handlebars"},{id:"passing-variables",depth:2,title:"Passing Variables"},{id:"html-supports-variable-resolution",depth:3,title:"Html supports variable resolution"},{id:"url-supports-variables",depth:3,title:"Url supports variables"}],qz=[{value:"The Iframe block allows you to embed external web pages or content into the current page.",paraId:0,tocIndex:1},{value:"It's a built-in plugin, no installation is required.",paraId:1,tocIndex:2},{value:"Configure the URL or Html to directly embed the external application.",paraId:2,tocIndex:3},{value:"The default rendering engine supports variables",paraId:3,tocIndex:5},{value:"For more information, refer to ",paraId:4,tocIndex:6},{value:"Handlebars template",paraId:5,tocIndex:6},{value:"For more information on variables, refer to ",paraId:6,tocIndex:9},{value:"Variables",paraId:7,tocIndex:9}],Ez={},Dz={title:"Kanban Block",toc:"menu",filename:"docs/en-US/handbook/block-kanban/index.md",lastUpdated:1732240239e3,description:"The Kanban block presents data in a Kanban view, enabling drag-and-drop functionality to update the status of items."},Oz=[{id:"kanban-block",depth:1,title:"Kanban Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"adding-a-block",depth:2,title:"Adding a Block"},{id:"grouping-field",depth:3,title:"Grouping Field"},{id:"sorting-field",depth:3,title:"Sorting Field"},{id:"managing-kanban-data",depth:2,title:"Managing Kanban Data"},{id:"clicking-a-card",depth:3,title:"Clicking a Card"},{id:"dragging-a-card",depth:3,title:"Dragging a Card"},{id:"block-configuration-options",depth:2,title:"Block Configuration Options"},{id:"setting-data-range",depth:3,title:"Setting Data Range"},{id:"setting-block-height",depth:3,title:"Setting Block Height"},{id:"configuring-fields",depth:2,title:"Configuring Fields"},{id:"configuring-actions",depth:2,title:"Configuring Actions"}],Rz=[{value:"The Kanban block presents data in a Kanban view, enabling drag-and-drop functionality to update the status of items.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, so no installation is needed.",paraId:1,tocIndex:2},{value:` +`,paraId:6}],kz={},Sz={title:"Print",toc:"menu",filename:"docs/en-US/handbook/action-print/index.md",lastUpdated:173254844e4,description:"The print button is a functional button in the details section. When clicked, it triggers the browser\u2019s print function, allowing users to easily print the content to a physical document or other printing devices."},Uz=[{id:"print",depth:1,title:"Print"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"}],Pz=[{value:"The print button is a functional button in the details section. When clicked, it triggers the browser\u2019s print function, allowing users to easily print the content to a physical document or other printing devices.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, no separate installation required.",paraId:1,tocIndex:2}],Tz={},Cz={title:"Iframe Block",toc:"menu",filename:"docs/en-US/handbook/block-iframe/index.md",lastUpdated:173254844e4,description:"The Iframe block allows you to embed external web pages or content into the current page."},Az=[{id:"iframe-block",depth:1,title:"Iframe Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"template-engine",depth:2,title:"Template engine"},{id:"string-template",depth:3,title:"string template"},{id:"handlebars",depth:3,title:"Handlebars"},{id:"passing-variables",depth:2,title:"Passing Variables"},{id:"html-supports-variable-resolution",depth:3,title:"Html supports variable resolution"},{id:"url-supports-variables",depth:3,title:"Url supports variables"}],qz=[{value:"The Iframe block allows you to embed external web pages or content into the current page.",paraId:0,tocIndex:1},{value:"It's a built-in plugin, no installation is required.",paraId:1,tocIndex:2},{value:"Configure the URL or Html to directly embed the external application.",paraId:2,tocIndex:3},{value:"The default rendering engine supports variables",paraId:3,tocIndex:5},{value:"For more information, refer to ",paraId:4,tocIndex:6},{value:"Handlebars template",paraId:5,tocIndex:6},{value:"For more information on variables, refer to ",paraId:6,tocIndex:9},{value:"Variables",paraId:7,tocIndex:9}],Ez={},Dz={title:"Kanban Block",toc:"menu",filename:"docs/en-US/handbook/block-kanban/index.md",lastUpdated:173254844e4,description:"The Kanban block presents data in a Kanban view, enabling drag-and-drop functionality to update the status of items."},Oz=[{id:"kanban-block",depth:1,title:"Kanban Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"adding-a-block",depth:2,title:"Adding a Block"},{id:"grouping-field",depth:3,title:"Grouping Field"},{id:"sorting-field",depth:3,title:"Sorting Field"},{id:"managing-kanban-data",depth:2,title:"Managing Kanban Data"},{id:"clicking-a-card",depth:3,title:"Clicking a Card"},{id:"dragging-a-card",depth:3,title:"Dragging a Card"},{id:"block-configuration-options",depth:2,title:"Block Configuration Options"},{id:"setting-data-range",depth:3,title:"Setting Data Range"},{id:"setting-block-height",depth:3,title:"Setting Block Height"},{id:"configuring-fields",depth:2,title:"Configuring Fields"},{id:"configuring-actions",depth:2,title:"Configuring Actions"}],Rz=[{value:"The Kanban block presents data in a Kanban view, enabling drag-and-drop functionality to update the status of items.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, so no installation is needed.",paraId:1,tocIndex:2},{value:` `,paraId:2},{value:"Used to organize data into specific groups. When creating or configuring a Kanban block, you must select a single-choice field as the grouping field.",paraId:3,tocIndex:4},{value:"Used to arrange data within each group. Only fields tied to the grouping field can be selected for sorting. You can also quickly create a sorting field while setting up the Kanban block.",paraId:4,tocIndex:5},{value:"Clicking on a card opens a pop-up window where you can configure data blocks as needed, such as setting up an edit form to modify the current card's record.",paraId:5,tocIndex:7},{value:"You can also configure how the pop-up window opens and its size.",paraId:6,tocIndex:7},{value:"Example: Adjust the status of a product by dragging the card. Once dragging is complete, the data will be saved automatically.",paraId:7,tocIndex:8},{value:` - `,paraId:2},{value:"Example: Default filtering for promotional products.",paraId:8,tocIndex:10},{value:"For more details, refer to ",paraId:9,tocIndex:10},{value:"Setting Data Range",paraId:10,tocIndex:10},{value:".",paraId:9,tocIndex:10},{value:"Example: Adjust the height of the order Kanban block, with the scrollbar appearing within the columns.",paraId:11,tocIndex:11},{value:"For more details, refer to ",paraId:12,tocIndex:11},{value:"Block Height",paraId:13,tocIndex:11},{value:".",paraId:12,tocIndex:11},{value:"Filter",paraId:14,tocIndex:13},{value:"Add New",paraId:15,tocIndex:13}],Mz={},Lz={title:"Custom Brand",toc:"menu",filename:"docs/en-US/handbook/custom-brand/index.md",lastUpdated:1732240239e3,description:'The default brand name is "NocoBase", which is primarily displayed in the following three places as shown in the images:'},Nz=[{id:"custom-brand",depth:1,title:"Custom Brand"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-guide",depth:2,title:"User Guide"},{id:"faviconv1223-alpha",depth:3,title:"Favicon\uFF08v1.2.23-alpha\uFF09"}],zz=[{value:'The default brand name is "NocoBase", which is primarily displayed in the following three places as shown in the images:',paraId:0,tocIndex:1},{value:"On the bottom of the login page:",paraId:1,tocIndex:1},{value:"The logo at position number 1 can be configured via the system settings under the Logo option. Positions number 2 and 3 can be customized using this plugin.",paraId:2,tocIndex:1},{value:"After activating the plugin, you can access the configuration page by clicking on the 'Custom Brand' menu in the upper right corner of the page.",paraId:3,tocIndex:2},{value:"The ",paraId:4,tocIndex:2},{value:"Brand",paraId:4,tocIndex:2},{value:" option is used to set the text at the bottom of the login page (position number 3), while the ",paraId:4,tocIndex:2},{value:"About",paraId:4,tocIndex:2},{value:" option is used to configure the content of the menu in the upper right corner (as shown in the image below).",paraId:4,tocIndex:2},{value:"HTML is used for the configuration to allow users more flexibility in customizing their content. However, if you only need to make simple text changes, you can directly modify the existing content, as shown in the image below:",paraId:5,tocIndex:2},{value:"In v1.2.23-alpha, we added the ability to set a favicon as shown below:",paraId:6,tocIndex:3}],Fz={},Bz={title:"User Manual",toc:"menu",filename:"docs/en-US/handbook/departments/manual.md",lastUpdated:1732240239e3,description:"Modify the superior department field in the department editing form. The current department and its sub-departments are not selectable."},jz=[{id:"user-manual",depth:1,title:"User Manual"},{id:"department-management",depth:2,title:"Department Management"},{id:"create-a-new-department",depth:3,title:"Create a New Department"},{id:"create-a-sub-department",depth:3,title:"Create a Sub-Department"},{id:"edit-department",depth:3,title:"Edit Department"},{id:"change-superior-department",depth:3,title:"Change Superior Department"},{id:"department-member-management",depth:2,title:"Department Member Management"},{id:"view-department-member-list",depth:3,title:"View Department Member List"},{id:"add-members-to-the-department",depth:3,title:"Add Members to the Department"},{id:"set-department-head",depth:3,title:"Set Department Head"},{id:"configure-departments-for-users",depth:3,title:"Configure Departments for Users"},{id:"change-main-department",depth:3,title:"Change Main Department"},{id:"department-role-management",depth:2,title:"Department Role Management"},{id:"search-for-users-and-departments",depth:2,title:"Search for Users and Departments"}],Hz=[{value:"Modify the superior department field in the department editing form. The current department and its sub-departments are not selectable.",paraId:0,tocIndex:5},{value:"A user can join multiple departments at the same time. The first department they join is the default main department. A user only has one main department.",paraId:1,tocIndex:8},{value:"Users who are already department members will not appear in the user selection list.",paraId:2,tocIndex:8},{value:"Click on the owners field in the department editing form to select a department member as the owner. Multiple selections are supported. Members who are already department owner will not appear in the member selection list.",paraId:3,tocIndex:9},{value:"In addition to adding members to the department, you can also configure departments for users from the user's perspective.",paraId:4,tocIndex:10},{value:"Departments that have already been joined are not selectable.",paraId:5,tocIndex:10},{value:"By associating one or more roles with a department, members of the current department can have these roles.",paraId:6,tocIndex:12},{value:"There are two ways to associate roles with a department.",paraId:7,tocIndex:12},{value:"The first is to select a role in the role field of the department editing form.",paraId:8,tocIndex:12},{value:"The second is to add departments to the corresponding role in role management.",paraId:9,tocIndex:12},{value:"Departments that already have this role are not selectable.",paraId:10,tocIndex:12},{value:"Search for users by nickname, username, phone, email, and search for departments by department name.",paraId:11,tocIndex:13}],Wz={},$z={title:"File Manager",toc:"menu",filename:"docs/en-US/handbook/file-manager/index.md",lastUpdated:1732240239e3,description:"The File Manager plugin provides a file collection, attachment field, and file storage services for effectively managing files. Files are structured data table records known as file collection, which store file metadata and can be managed through the File Manager. Attachment fields are specific relational fields associated with the file collection. The plugin supports multiple storage methods, including local storage, Alibaba Cloud OSS, Amazon S3, and Tencent Cloud COS."},Gz=[{id:"file-manager",depth:1,title:"File Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"},{id:"file-collection",depth:3,title:"File Collection"},{id:"attachment-field",depth:3,title:"Attachment Field"},{id:"file-storage",depth:3,title:"File Storage"},{id:"development",depth:3,title:"Development"}],Vz=[{value:"The File Manager plugin provides a file collection, attachment field, and file storage services for effectively managing files. Files are structured data table records known as file collection, which store file metadata and can be managed through the File Manager. Attachment fields are specific relational fields associated with the file collection. The plugin supports multiple storage methods, including local storage, Alibaba Cloud OSS, Amazon S3, and Tencent Cloud COS.",paraId:0,tocIndex:1},{value:"An attachments collection is built-in to store all files associated with attachment fields. Additionally, new file collections can be created to store specific files.",paraId:1,tocIndex:3},{value:"More usage information can be found in the file table introduction document",paraId:2},{value:'Attachment fields are specific relational fields related to the file collection, which can be created through "Attachment field" or configured through "Association field".',paraId:3,tocIndex:4},{value:"More usage information can be found in the attachment field introduction document",paraId:4},{value:"The file storage engine is used to save files to specific services, including local storage (saving to the server's hard drive), cloud storage, etc.",paraId:5,tocIndex:5},{value:"More usage information can be found in the file storage introduction document",paraId:6},{value:"Extend client file type",paraId:7,tocIndex:6}],Kz={},Zz={title:"Public Forms",toc:"menu",filename:"docs/en-US/handbook/public-forms/index.md",lastUpdated:1732240239e3,description:"Share public forms externally to gather information from anonymous users."},Yz=[{id:"public-forms",depth:1,title:"Public Forms"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"}],Qz=[{value:"Share public forms externally to gather information from anonymous users.",paraId:0,tocIndex:1},{value:"This is a pre-installed plugin that must be activated before use.",paraId:1,tocIndex:2},{value:"Public Form List",paraId:2,tocIndex:3},{value:"Creating a Public Form",paraId:3,tocIndex:3},{value:"Configuring the Form",paraId:4,tocIndex:3},{value:"Public Form Settings",paraId:5,tocIndex:3},{value:"Viewing the Public Form",paraId:6,tocIndex:3},{value:"Password Protection",paraId:7,tocIndex:3},{value:"Submission Success Notification",paraId:8,tocIndex:3}],Jz={},Xz={title:"Theme Editor",toc:"menu",filename:"docs/en-US/handbook/theme-editor/index.md",lastUpdated:1732240239e3,description:"Note: The current theme feature is implemented based on antd 5.x version. It is recommended to read about the Customizing Theme concept before proceeding with this document."},eF=[{id:"theme-editor",depth:1,title:"Theme Editor"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"enabling-the-theme-plugin",depth:3,title:"Enabling The Theme Plugin"},{id:"navigate-to-the-theme-configuration-page",depth:3,title:"Navigate to the Theme Configuration Page"},{id:"adding-a-new-theme",depth:2,title:"Adding a New Theme"},{id:"applying-the-new-theme",depth:2,title:"Applying the New Theme"},{id:"editing-an-existing-theme",depth:2,title:"Editing an Existing Theme"},{id:"user-options-for-theme-switching",depth:2,title:"User Options for Theme Switching"},{id:"setting-as-default-theme-the-default-theme-cannot-be-deleted",depth:2,title:"Setting as Default Theme (The Default Theme Cannot Be Deleted)"},{id:"deleting-a-theme",depth:2,title:"Deleting a Theme"}],aF=[{value:"Note: The current theme feature is implemented based on antd 5.x version. It is recommended to read about the ",paraId:0,tocIndex:0},{value:"Customizing Theme",paraId:0,tocIndex:0},{value:" concept before proceeding with this document.",paraId:0,tocIndex:0},{value:"The plugin is essentially a tool for modifying the style of the entire front-end page. It currently supports editing global ",paraId:1,tocIndex:1},{value:"SeedToken",paraId:1,tocIndex:1},{value:", ",paraId:1,tocIndex:1},{value:"MapToken",paraId:1,tocIndex:1},{value:", and ",paraId:1,tocIndex:1},{value:"AliasToken",paraId:1,tocIndex:1},{value:", as well as enabling a ",paraId:1,tocIndex:1},{value:"switch",paraId:1,tocIndex:1},{value:" to Dark Mode and Compact Mode. In the future, it may support ",paraId:1,tocIndex:1},{value:"component-level",paraId:1,tocIndex:1},{value:" theme customization.",paraId:1,tocIndex:1},{value:"Firstly, update NocoBase to the latest version (v0.11.1 or above). Then, search for the ",paraId:2,tocIndex:3},{value:"Theme Editor",paraId:2,tocIndex:3},{value:" card in the ",paraId:2,tocIndex:3},{value:"Plugin Management",paraId:2,tocIndex:3},{value:" Page. Click on the Enable button at the bottom right of the card and wait for the page to refresh.",paraId:2,tocIndex:3},{value:"After enabling, click on the settings button at the bottom left of the card, and you will be redirected to the theme editing page. By default, there are four theme options: ",paraId:3,tocIndex:4},{value:"Default Theme",paraId:3,tocIndex:4},{value:", ",paraId:3,tocIndex:4},{value:"Dark Theme",paraId:3,tocIndex:4},{value:", ",paraId:3,tocIndex:4},{value:"Compact Theme",paraId:3,tocIndex:4},{value:", and ",paraId:3,tocIndex:4},{value:"Compact Dark Theme",paraId:3,tocIndex:4},{value:".",paraId:3,tocIndex:4},{value:"Click the ",paraId:4,tocIndex:5},{value:"Add New Theme",paraId:4,tocIndex:5},{value:" button and choose ",paraId:4,tocIndex:5},{value:"Create a Brand New Theme",paraId:4,tocIndex:5},{value:". A Theme Editor will pop up on the right side of the page, allowing you to edit Colors, Sizes, Styles, and more. After editing, enter a theme name and click save to add the new theme.",paraId:4,tocIndex:5},{value:"You can move the mouse to the top right corner of the page, where you will see a theme switcher. Clicking on it allows you to switch to other themes, such as the newly added theme.",paraId:5,tocIndex:6},{value:"Click the ",paraId:6,tocIndex:7},{value:"Edit",paraId:6,tocIndex:7},{value:" button at the bottom left of the card. Similar to adding a new theme, a Theme Editor will pop up on the right side of the page. After editing, click save to complete the theme modification.",paraId:6,tocIndex:7},{value:"Newly added themes are by default available for users to switch to. If you do not want users to switch to a certain theme, you can turn off the ",paraId:7,tocIndex:8},{value:"User selectable",paraId:7,tocIndex:8},{value:" switch at the bottom right of the theme card, making it unavailable for users to choose.",paraId:7,tocIndex:8},{value:"Initially, the ",paraId:8,tocIndex:9},{value:"Default Theme",paraId:8,tocIndex:9},{value:" is set as the default. If you want to set a specific theme as the new default, switch on the ",paraId:8,tocIndex:9},{value:"Default Theme",paraId:8,tocIndex:9},{value:" toggle at the bottom right of the card. This will ensure that when users open the page for the first time, they will be presented with this theme.",paraId:8,tocIndex:9},{value:"Click on the Delete button below the card, then click on the confirmation button that pops up to remove the theme.",paraId:9,tocIndex:10}],tF={},nF={title:"UI Editor",toc:"menu",filename:"docs/en-US/handbook/ui/ui-editor/index.md",lastUpdated:1732240239e3,description:"NocoBase employs a what-you-see-is-what-you-get (WYSIWYG) interface configuration mode. By clicking the UI Editor button, you can switch between the configuration mode and the usage mode."},oF=[{id:"ui-editor",depth:1,title:"UI Editor"},{id:"what-you-see-is-what-you-get",depth:2,title:"What You See Is What You Get"},{id:"layout-template",depth:2,title:"Layout Template"},{id:"configuration-items",depth:2,title:"Configuration Items"}],rF=[{value:"NocoBase employs a what-you-see-is-what-you-get (WYSIWYG) interface configuration mode. By clicking the UI Editor button, you can switch between the configuration mode and the usage mode.",paraId:0,tocIndex:1},{value:"Usage mode:",paraId:1,tocIndex:1},{value:"Configuration mode:",paraId:2,tocIndex:1},{value:"NocoBase includes a layout template with navigation areas on the top and left sides, and a content area on the right.",paraId:3,tocIndex:2},{value:"Upon entering the interface configuration mode, orange configurable items will appear on the interface. Typically, the entry point for each configurable element's options is located at the top right corner of that element. Almost all elements can be configured and reviewed in real-time on the interface, with the following as some examples:",paraId:4,tocIndex:3},{value:"Configuration items for the menu:",paraId:5,tocIndex:3},{value:"Configuration items for the page:",paraId:6,tocIndex:3},{value:"Configuration items for the block:",paraId:7,tocIndex:3},{value:"Configuration items for the action:",paraId:8,tocIndex:3},{value:"Configuration items for the table column:",paraId:9,tocIndex:3}],dF={},iF={title:"Verification Code",toc:"menu",filename:"docs/en-US/handbook/verification/index.md",lastUpdated:1732240239e3,description:"To be added."},lF=[{id:"verification-code",depth:1,title:"Verification Code"}],cF=[{value:"To be added.",paraId:0}],sF={},uF={title:"End Process",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/end.md",lastUpdated:1732240239e3,description:"When executed, this node will immediately end the current workflow execution and end it with the status as configured in the node. It is typically used for specific logic flow control, to exit the current workflow after meeting certain logical conditions, and not continue with subsequent processing. It can be compared to the return instruction in programming languages, used to exit the currently executing function."},pF=[{id:"end-process",depth:1,title:"End Process"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"end-status",depth:3,title:"End Status"}],IF=[{value:"When executed, this node will immediately end the current workflow execution and end it with the status as configured in the node. It is typically used for specific logic flow control, to exit the current workflow after meeting certain logical conditions, and not continue with subsequent processing. It can be compared to the ",paraId:0,tocIndex:0},{value:"return",paraId:0,tocIndex:0},{value:" instruction in programming languages, used to exit the currently executing function.",paraId:0,tocIndex:0},{value:'In the workflow configuration UI, click the plus ("+") button in the flow to add an "End Process" node:',paraId:1,tocIndex:1},{value:'The end status will affect the final status of the execution plan of the workflow. It can be configured as "Success" or "Failure". When the workflow reaches this node, it will immediately exit with the configured status.',paraId:2,tocIndex:3},{value:'When used in workflows of the "Pre-action" type, it will intercept the action requests. For more details, please refer to the ',paraId:3},{value:'"Pre-action" usage instructions',paraId:4},{value:".",paraId:3},{value:'Besides intercepting the action requests, the configuration of the end status will also affect the status of the feedback information in the "Response Message" in this type of workflow.',paraId:5}],_F={},vF={title:"SQL Operation",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/sql.md",lastUpdated:1732240239e3,description:"In certain scenarios where the standard data table operation nodes fall short for more complex tasks, you can directly employ the SQL Action node to execute sophisticated SQL queries within the database."},mF=[{id:"sql-operation",depth:1,title:"SQL Operation"},{id:"faq",depth:2,title:"FAQ"},{id:"how-can-the-results-of-an-sql-action-node-be-utilized",depth:3,title:"How can the results of an SQL Action node be utilized?"},{id:"will-sql-actions-trigger-table-events",depth:3,title:"Will SQL actions trigger table events?"},{id:"installation",depth:2,title:"Installation"},{id:"user-guide",depth:2,title:"User Guide"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"configuring-the-node",depth:3,title:"Configuring the Node"},{id:"data-source",depth:4,title:"Data Source"},{id:"sql-content",depth:4,title:"SQL Content"},{id:"node-execution-results",depth:3,title:"Node Execution Results"}],hF=[{value:"In certain scenarios where the standard data table operation nodes fall short for more complex tasks, you can directly employ the SQL Action node to execute sophisticated SQL queries within the database.",paraId:0,tocIndex:0},{value:"Unlike executing SQL operations by connecting to the database externally, within the workflow, you can leverage variables from the workflow context as parameters within your SQL statements.",paraId:1,tocIndex:0},{value:"When using a ",paraId:2,tocIndex:2},{value:"SELECT",paraId:2,tocIndex:2},{value:" statement, the query results are stored in the node in Sequelize's JSON format. You can parse and utilize these results through the ",paraId:2,tocIndex:2},{value:"JSON-query",paraId:3,tocIndex:2},{value:" plugin.",paraId:2,tocIndex:2},{value:"No",paraId:4,tocIndex:3},{value:". SQL actions directly execute SQL commands on the database. Actions such as ",paraId:4,tocIndex:3},{value:"CREATE",paraId:4,tocIndex:3},{value:" / ",paraId:4,tocIndex:3},{value:"UPDATE",paraId:4,tocIndex:3},{value:" / ",paraId:4,tocIndex:3},{value:"DELETE",paraId:4,tocIndex:3},{value:" occur in the database, while table events are managed at the Node.js application layer (ORM processing). As a result, these operations do not trigger table events.",paraId:4,tocIndex:3},{value:"This plugin is built-in, so no installation is necessary.",paraId:5,tocIndex:4},{value:'In the workflow configuration interface, click the plus sign (\u201C+\u201D) within the flow to add an "SQL Action" node:',paraId:6,tocIndex:6},{value:"Select the data source for executing the SQL.",paraId:7,tocIndex:8},{value:"The data source must be of a database type, such as the main data source, PostgreSQL type, or any other data source compatible with Sequelize.",paraId:8,tocIndex:8},{value:"Edit the SQL statement. Currently, only one SQL statement is supported.",paraId:9,tocIndex:9},{value:"You can insert required variables by clicking the variable button in the upper right corner of the editor. Before execution, the variables will be replaced with their corresponding values in the text, and the final SQL statement will be sent to the database for querying.",paraId:10,tocIndex:9},{value:"Starting from ",paraId:11,tocIndex:10},{value:"v1.3.15-beta",paraId:11,tocIndex:10},{value:", the result of the SQL node execution is an array consisting purely of data. Prior to this version, the result was a Sequelize native structure that included query metadata (for more details, see: ",paraId:11,tocIndex:10},{value:"sequelize.query()",paraId:11,tocIndex:10},{value:").",paraId:11,tocIndex:10},{value:"For example, the following query:",paraId:12,tocIndex:10},{value:`select count(id) from posts; + `,paraId:2},{value:"Example: Default filtering for promotional products.",paraId:8,tocIndex:10},{value:"For more details, refer to ",paraId:9,tocIndex:10},{value:"Setting Data Range",paraId:10,tocIndex:10},{value:".",paraId:9,tocIndex:10},{value:"Example: Adjust the height of the order Kanban block, with the scrollbar appearing within the columns.",paraId:11,tocIndex:11},{value:"For more details, refer to ",paraId:12,tocIndex:11},{value:"Block Height",paraId:13,tocIndex:11},{value:".",paraId:12,tocIndex:11},{value:"Filter",paraId:14,tocIndex:13},{value:"Add New",paraId:15,tocIndex:13}],Mz={},Lz={title:"Custom Brand",toc:"menu",filename:"docs/en-US/handbook/custom-brand/index.md",lastUpdated:173254844e4,description:'The default brand name is "NocoBase", which is primarily displayed in the following three places as shown in the images:'},Nz=[{id:"custom-brand",depth:1,title:"Custom Brand"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-guide",depth:2,title:"User Guide"},{id:"faviconv1223-alpha",depth:3,title:"Favicon\uFF08v1.2.23-alpha\uFF09"}],zz=[{value:'The default brand name is "NocoBase", which is primarily displayed in the following three places as shown in the images:',paraId:0,tocIndex:1},{value:"On the bottom of the login page:",paraId:1,tocIndex:1},{value:"The logo at position number 1 can be configured via the system settings under the Logo option. Positions number 2 and 3 can be customized using this plugin.",paraId:2,tocIndex:1},{value:"After activating the plugin, you can access the configuration page by clicking on the 'Custom Brand' menu in the upper right corner of the page.",paraId:3,tocIndex:2},{value:"The ",paraId:4,tocIndex:2},{value:"Brand",paraId:4,tocIndex:2},{value:" option is used to set the text at the bottom of the login page (position number 3), while the ",paraId:4,tocIndex:2},{value:"About",paraId:4,tocIndex:2},{value:" option is used to configure the content of the menu in the upper right corner (as shown in the image below).",paraId:4,tocIndex:2},{value:"HTML is used for the configuration to allow users more flexibility in customizing their content. However, if you only need to make simple text changes, you can directly modify the existing content, as shown in the image below:",paraId:5,tocIndex:2},{value:"In v1.2.23-alpha, we added the ability to set a favicon as shown below:",paraId:6,tocIndex:3}],Fz={},Bz={title:"User Manual",toc:"menu",filename:"docs/en-US/handbook/departments/manual.md",lastUpdated:173254844e4,description:"Modify the superior department field in the department editing form. The current department and its sub-departments are not selectable."},jz=[{id:"user-manual",depth:1,title:"User Manual"},{id:"department-management",depth:2,title:"Department Management"},{id:"create-a-new-department",depth:3,title:"Create a New Department"},{id:"create-a-sub-department",depth:3,title:"Create a Sub-Department"},{id:"edit-department",depth:3,title:"Edit Department"},{id:"change-superior-department",depth:3,title:"Change Superior Department"},{id:"department-member-management",depth:2,title:"Department Member Management"},{id:"view-department-member-list",depth:3,title:"View Department Member List"},{id:"add-members-to-the-department",depth:3,title:"Add Members to the Department"},{id:"set-department-head",depth:3,title:"Set Department Head"},{id:"configure-departments-for-users",depth:3,title:"Configure Departments for Users"},{id:"change-main-department",depth:3,title:"Change Main Department"},{id:"department-role-management",depth:2,title:"Department Role Management"},{id:"search-for-users-and-departments",depth:2,title:"Search for Users and Departments"}],Hz=[{value:"Modify the superior department field in the department editing form. The current department and its sub-departments are not selectable.",paraId:0,tocIndex:5},{value:"A user can join multiple departments at the same time. The first department they join is the default main department. A user only has one main department.",paraId:1,tocIndex:8},{value:"Users who are already department members will not appear in the user selection list.",paraId:2,tocIndex:8},{value:"Click on the owners field in the department editing form to select a department member as the owner. Multiple selections are supported. Members who are already department owner will not appear in the member selection list.",paraId:3,tocIndex:9},{value:"In addition to adding members to the department, you can also configure departments for users from the user's perspective.",paraId:4,tocIndex:10},{value:"Departments that have already been joined are not selectable.",paraId:5,tocIndex:10},{value:"By associating one or more roles with a department, members of the current department can have these roles.",paraId:6,tocIndex:12},{value:"There are two ways to associate roles with a department.",paraId:7,tocIndex:12},{value:"The first is to select a role in the role field of the department editing form.",paraId:8,tocIndex:12},{value:"The second is to add departments to the corresponding role in role management.",paraId:9,tocIndex:12},{value:"Departments that already have this role are not selectable.",paraId:10,tocIndex:12},{value:"Search for users by nickname, username, phone, email, and search for departments by department name.",paraId:11,tocIndex:13}],Wz={},$z={title:"File Manager",toc:"menu",filename:"docs/en-US/handbook/file-manager/index.md",lastUpdated:173254844e4,description:"The File Manager plugin provides a file collection, attachment field, and file storage services for effectively managing files. Files are structured data table records known as file collection, which store file metadata and can be managed through the File Manager. Attachment fields are specific relational fields associated with the file collection. The plugin supports multiple storage methods, including local storage, Alibaba Cloud OSS, Amazon S3, and Tencent Cloud COS."},Gz=[{id:"file-manager",depth:1,title:"File Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"user-manual",depth:2,title:"User Manual"},{id:"file-collection",depth:3,title:"File Collection"},{id:"attachment-field",depth:3,title:"Attachment Field"},{id:"file-storage",depth:3,title:"File Storage"},{id:"development",depth:3,title:"Development"}],Vz=[{value:"The File Manager plugin provides a file collection, attachment field, and file storage services for effectively managing files. Files are structured data table records known as file collection, which store file metadata and can be managed through the File Manager. Attachment fields are specific relational fields associated with the file collection. The plugin supports multiple storage methods, including local storage, Alibaba Cloud OSS, Amazon S3, and Tencent Cloud COS.",paraId:0,tocIndex:1},{value:"An attachments collection is built-in to store all files associated with attachment fields. Additionally, new file collections can be created to store specific files.",paraId:1,tocIndex:3},{value:"More usage information can be found in the file table introduction document",paraId:2},{value:'Attachment fields are specific relational fields related to the file collection, which can be created through "Attachment field" or configured through "Association field".',paraId:3,tocIndex:4},{value:"More usage information can be found in the attachment field introduction document",paraId:4},{value:"The file storage engine is used to save files to specific services, including local storage (saving to the server's hard drive), cloud storage, etc.",paraId:5,tocIndex:5},{value:"More usage information can be found in the file storage introduction document",paraId:6},{value:"Extend client file type",paraId:7,tocIndex:6}],Kz={},Zz={title:"Public Forms",toc:"menu",filename:"docs/en-US/handbook/public-forms/index.md",lastUpdated:173254844e4,description:"Share public forms externally to gather information from anonymous users."},Yz=[{id:"public-forms",depth:1,title:"Public Forms"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"}],Qz=[{value:"Share public forms externally to gather information from anonymous users.",paraId:0,tocIndex:1},{value:"This is a pre-installed plugin that must be activated before use.",paraId:1,tocIndex:2},{value:"Public Form List",paraId:2,tocIndex:3},{value:"Creating a Public Form",paraId:3,tocIndex:3},{value:"Configuring the Form",paraId:4,tocIndex:3},{value:"Public Form Settings",paraId:5,tocIndex:3},{value:"Viewing the Public Form",paraId:6,tocIndex:3},{value:"Password Protection",paraId:7,tocIndex:3},{value:"Submission Success Notification",paraId:8,tocIndex:3}],Jz={},Xz={title:"Theme Editor",toc:"menu",filename:"docs/en-US/handbook/theme-editor/index.md",lastUpdated:173254844e4,description:"Note: The current theme feature is implemented based on antd 5.x version. It is recommended to read about the Customizing Theme concept before proceeding with this document."},eF=[{id:"theme-editor",depth:1,title:"Theme Editor"},{id:"introduction",depth:2,title:"Introduction"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"enabling-the-theme-plugin",depth:3,title:"Enabling The Theme Plugin"},{id:"navigate-to-the-theme-configuration-page",depth:3,title:"Navigate to the Theme Configuration Page"},{id:"adding-a-new-theme",depth:2,title:"Adding a New Theme"},{id:"applying-the-new-theme",depth:2,title:"Applying the New Theme"},{id:"editing-an-existing-theme",depth:2,title:"Editing an Existing Theme"},{id:"user-options-for-theme-switching",depth:2,title:"User Options for Theme Switching"},{id:"setting-as-default-theme-the-default-theme-cannot-be-deleted",depth:2,title:"Setting as Default Theme (The Default Theme Cannot Be Deleted)"},{id:"deleting-a-theme",depth:2,title:"Deleting a Theme"}],aF=[{value:"Note: The current theme feature is implemented based on antd 5.x version. It is recommended to read about the ",paraId:0,tocIndex:0},{value:"Customizing Theme",paraId:0,tocIndex:0},{value:" concept before proceeding with this document.",paraId:0,tocIndex:0},{value:"The plugin is essentially a tool for modifying the style of the entire front-end page. It currently supports editing global ",paraId:1,tocIndex:1},{value:"SeedToken",paraId:1,tocIndex:1},{value:", ",paraId:1,tocIndex:1},{value:"MapToken",paraId:1,tocIndex:1},{value:", and ",paraId:1,tocIndex:1},{value:"AliasToken",paraId:1,tocIndex:1},{value:", as well as enabling a ",paraId:1,tocIndex:1},{value:"switch",paraId:1,tocIndex:1},{value:" to Dark Mode and Compact Mode. In the future, it may support ",paraId:1,tocIndex:1},{value:"component-level",paraId:1,tocIndex:1},{value:" theme customization.",paraId:1,tocIndex:1},{value:"Firstly, update NocoBase to the latest version (v0.11.1 or above). Then, search for the ",paraId:2,tocIndex:3},{value:"Theme Editor",paraId:2,tocIndex:3},{value:" card in the ",paraId:2,tocIndex:3},{value:"Plugin Management",paraId:2,tocIndex:3},{value:" Page. Click on the Enable button at the bottom right of the card and wait for the page to refresh.",paraId:2,tocIndex:3},{value:"After enabling, click on the settings button at the bottom left of the card, and you will be redirected to the theme editing page. By default, there are four theme options: ",paraId:3,tocIndex:4},{value:"Default Theme",paraId:3,tocIndex:4},{value:", ",paraId:3,tocIndex:4},{value:"Dark Theme",paraId:3,tocIndex:4},{value:", ",paraId:3,tocIndex:4},{value:"Compact Theme",paraId:3,tocIndex:4},{value:", and ",paraId:3,tocIndex:4},{value:"Compact Dark Theme",paraId:3,tocIndex:4},{value:".",paraId:3,tocIndex:4},{value:"Click the ",paraId:4,tocIndex:5},{value:"Add New Theme",paraId:4,tocIndex:5},{value:" button and choose ",paraId:4,tocIndex:5},{value:"Create a Brand New Theme",paraId:4,tocIndex:5},{value:". A Theme Editor will pop up on the right side of the page, allowing you to edit Colors, Sizes, Styles, and more. After editing, enter a theme name and click save to add the new theme.",paraId:4,tocIndex:5},{value:"You can move the mouse to the top right corner of the page, where you will see a theme switcher. Clicking on it allows you to switch to other themes, such as the newly added theme.",paraId:5,tocIndex:6},{value:"Click the ",paraId:6,tocIndex:7},{value:"Edit",paraId:6,tocIndex:7},{value:" button at the bottom left of the card. Similar to adding a new theme, a Theme Editor will pop up on the right side of the page. After editing, click save to complete the theme modification.",paraId:6,tocIndex:7},{value:"Newly added themes are by default available for users to switch to. If you do not want users to switch to a certain theme, you can turn off the ",paraId:7,tocIndex:8},{value:"User selectable",paraId:7,tocIndex:8},{value:" switch at the bottom right of the theme card, making it unavailable for users to choose.",paraId:7,tocIndex:8},{value:"Initially, the ",paraId:8,tocIndex:9},{value:"Default Theme",paraId:8,tocIndex:9},{value:" is set as the default. If you want to set a specific theme as the new default, switch on the ",paraId:8,tocIndex:9},{value:"Default Theme",paraId:8,tocIndex:9},{value:" toggle at the bottom right of the card. This will ensure that when users open the page for the first time, they will be presented with this theme.",paraId:8,tocIndex:9},{value:"Click on the Delete button below the card, then click on the confirmation button that pops up to remove the theme.",paraId:9,tocIndex:10}],tF={},nF={title:"UI Editor",toc:"menu",filename:"docs/en-US/handbook/ui/ui-editor/index.md",lastUpdated:173254844e4,description:"NocoBase employs a what-you-see-is-what-you-get (WYSIWYG) interface configuration mode. By clicking the UI Editor button, you can switch between the configuration mode and the usage mode."},oF=[{id:"ui-editor",depth:1,title:"UI Editor"},{id:"what-you-see-is-what-you-get",depth:2,title:"What You See Is What You Get"},{id:"layout-template",depth:2,title:"Layout Template"},{id:"configuration-items",depth:2,title:"Configuration Items"}],rF=[{value:"NocoBase employs a what-you-see-is-what-you-get (WYSIWYG) interface configuration mode. By clicking the UI Editor button, you can switch between the configuration mode and the usage mode.",paraId:0,tocIndex:1},{value:"Usage mode:",paraId:1,tocIndex:1},{value:"Configuration mode:",paraId:2,tocIndex:1},{value:"NocoBase includes a layout template with navigation areas on the top and left sides, and a content area on the right.",paraId:3,tocIndex:2},{value:"Upon entering the interface configuration mode, orange configurable items will appear on the interface. Typically, the entry point for each configurable element's options is located at the top right corner of that element. Almost all elements can be configured and reviewed in real-time on the interface, with the following as some examples:",paraId:4,tocIndex:3},{value:"Configuration items for the menu:",paraId:5,tocIndex:3},{value:"Configuration items for the page:",paraId:6,tocIndex:3},{value:"Configuration items for the block:",paraId:7,tocIndex:3},{value:"Configuration items for the action:",paraId:8,tocIndex:3},{value:"Configuration items for the table column:",paraId:9,tocIndex:3}],dF={},iF={title:"Verification Code",toc:"menu",filename:"docs/en-US/handbook/verification/index.md",lastUpdated:173254844e4,description:"To be added."},lF=[{id:"verification-code",depth:1,title:"Verification Code"}],cF=[{value:"To be added.",paraId:0}],sF={},uF={title:"End Process",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/end.md",lastUpdated:173254844e4,description:"When executed, this node will immediately end the current workflow execution and end it with the status as configured in the node. It is typically used for specific logic flow control, to exit the current workflow after meeting certain logical conditions, and not continue with subsequent processing. It can be compared to the return instruction in programming languages, used to exit the currently executing function."},pF=[{id:"end-process",depth:1,title:"End Process"},{id:"creating-a-node",depth:2,title:"Creating a Node"},{id:"node-configuration",depth:2,title:"Node Configuration"},{id:"end-status",depth:3,title:"End Status"}],IF=[{value:"When executed, this node will immediately end the current workflow execution and end it with the status as configured in the node. It is typically used for specific logic flow control, to exit the current workflow after meeting certain logical conditions, and not continue with subsequent processing. It can be compared to the ",paraId:0,tocIndex:0},{value:"return",paraId:0,tocIndex:0},{value:" instruction in programming languages, used to exit the currently executing function.",paraId:0,tocIndex:0},{value:'In the workflow configuration UI, click the plus ("+") button in the flow to add an "End Process" node:',paraId:1,tocIndex:1},{value:'The end status will affect the final status of the execution plan of the workflow. It can be configured as "Success" or "Failure". When the workflow reaches this node, it will immediately exit with the configured status.',paraId:2,tocIndex:3},{value:'When used in workflows of the "Pre-action" type, it will intercept the action requests. For more details, please refer to the ',paraId:3},{value:'"Pre-action" usage instructions',paraId:4},{value:".",paraId:3},{value:'Besides intercepting the action requests, the configuration of the end status will also affect the status of the feedback information in the "Response Message" in this type of workflow.',paraId:5}],_F={},vF={title:"SQL Operation",toc:"menu",filename:"docs/en-US/handbook/workflow/nodes/sql.md",lastUpdated:173254844e4,description:"In certain scenarios where the standard data table operation nodes fall short for more complex tasks, you can directly employ the SQL Action node to execute sophisticated SQL queries within the database."},mF=[{id:"sql-operation",depth:1,title:"SQL Operation"},{id:"faq",depth:2,title:"FAQ"},{id:"how-can-the-results-of-an-sql-action-node-be-utilized",depth:3,title:"How can the results of an SQL Action node be utilized?"},{id:"will-sql-actions-trigger-table-events",depth:3,title:"Will SQL actions trigger table events?"},{id:"installation",depth:2,title:"Installation"},{id:"user-guide",depth:2,title:"User Guide"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"configuring-the-node",depth:3,title:"Configuring the Node"},{id:"data-source",depth:4,title:"Data Source"},{id:"sql-content",depth:4,title:"SQL Content"},{id:"node-execution-results",depth:3,title:"Node Execution Results"}],hF=[{value:"In certain scenarios where the standard data table operation nodes fall short for more complex tasks, you can directly employ the SQL Action node to execute sophisticated SQL queries within the database.",paraId:0,tocIndex:0},{value:"Unlike executing SQL operations by connecting to the database externally, within the workflow, you can leverage variables from the workflow context as parameters within your SQL statements.",paraId:1,tocIndex:0},{value:"When using a ",paraId:2,tocIndex:2},{value:"SELECT",paraId:2,tocIndex:2},{value:" statement, the query results are stored in the node in Sequelize's JSON format. You can parse and utilize these results through the ",paraId:2,tocIndex:2},{value:"JSON-query",paraId:3,tocIndex:2},{value:" plugin.",paraId:2,tocIndex:2},{value:"No",paraId:4,tocIndex:3},{value:". SQL actions directly execute SQL commands on the database. Actions such as ",paraId:4,tocIndex:3},{value:"CREATE",paraId:4,tocIndex:3},{value:" / ",paraId:4,tocIndex:3},{value:"UPDATE",paraId:4,tocIndex:3},{value:" / ",paraId:4,tocIndex:3},{value:"DELETE",paraId:4,tocIndex:3},{value:" occur in the database, while table events are managed at the Node.js application layer (ORM processing). As a result, these operations do not trigger table events.",paraId:4,tocIndex:3},{value:"This plugin is built-in, so no installation is necessary.",paraId:5,tocIndex:4},{value:'In the workflow configuration interface, click the plus sign (\u201C+\u201D) within the flow to add an "SQL Action" node:',paraId:6,tocIndex:6},{value:"Select the data source for executing the SQL.",paraId:7,tocIndex:8},{value:"The data source must be of a database type, such as the main data source, PostgreSQL type, or any other data source compatible with Sequelize.",paraId:8,tocIndex:8},{value:"Edit the SQL statement. Currently, only one SQL statement is supported.",paraId:9,tocIndex:9},{value:"You can insert required variables by clicking the variable button in the upper right corner of the editor. Before execution, the variables will be replaced with their corresponding values in the text, and the final SQL statement will be sent to the database for querying.",paraId:10,tocIndex:9},{value:"Starting from ",paraId:11,tocIndex:10},{value:"v1.3.15-beta",paraId:11,tocIndex:10},{value:", the result of the SQL node execution is an array consisting purely of data. Prior to this version, the result was a Sequelize native structure that included query metadata (for more details, see: ",paraId:11,tocIndex:10},{value:"sequelize.query()",paraId:11,tocIndex:10},{value:").",paraId:11,tocIndex:10},{value:"For example, the following query:",paraId:12,tocIndex:10},{value:`select count(id) from posts; `,paraId:13,tocIndex:10},{value:"Result before ",paraId:14,tocIndex:10},{value:"v1.3.15-beta",paraId:14,tocIndex:10},{value:":",paraId:14,tocIndex:10},{value:`[ [ { "count": 1 } @@ -14843,7 +14896,7 @@ app.command('a').preload().action() `,paraId:15,tocIndex:10},{value:"Result after ",paraId:16,tocIndex:10},{value:"v1.3.15-beta",paraId:16,tocIndex:10},{value:":",paraId:16,tocIndex:10},{value:`[ { "count": 1 } ] -`,paraId:17,tocIndex:10}],fF={},xF={title:"SQL Actions",toc:"menu",filename:"docs/en-US/handbook/workflow-sql/index.md",lastUpdated:1732240239e3,description:"In certain scenarios where the standard data table operation nodes fall short for more complex tasks, you can directly employ the SQL Action node to execute sophisticated SQL queries within the database."},gF=[{id:"sql-actions",depth:1,title:"SQL Actions"},{id:"faq",depth:2,title:"FAQ"},{id:"how-can-the-results-of-an-sql-action-node-be-utilized",depth:3,title:"How can the results of an SQL Action node be utilized?"},{id:"will-sql-actions-trigger-table-events",depth:3,title:"Will SQL actions trigger table events?"},{id:"installation",depth:2,title:"Installation"},{id:"user-guide",depth:2,title:"User Guide"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"configuring-the-node",depth:3,title:"Configuring the Node"},{id:"data-source",depth:4,title:"Data Source"},{id:"sql-content",depth:4,title:"SQL Content"},{id:"node-execution-results",depth:3,title:"Node Execution Results"}],bF=[{value:"In certain scenarios where the standard data table operation nodes fall short for more complex tasks, you can directly employ the SQL Action node to execute sophisticated SQL queries within the database.",paraId:0,tocIndex:0},{value:"Unlike executing SQL operations by connecting to the database externally, within the workflow, you can leverage variables from the workflow context as parameters within your SQL statements.",paraId:1,tocIndex:0},{value:"When using a ",paraId:2,tocIndex:2},{value:"SELECT",paraId:2,tocIndex:2},{value:" statement, the query results are stored in the node in Sequelize's JSON format. You can parse and utilize these results through the ",paraId:2,tocIndex:2},{value:"JSON-query",paraId:3,tocIndex:2},{value:" plugin.",paraId:2,tocIndex:2},{value:"No",paraId:4,tocIndex:3},{value:". SQL actions directly execute SQL commands on the database. Actions such as ",paraId:4,tocIndex:3},{value:"CREATE",paraId:4,tocIndex:3},{value:" / ",paraId:4,tocIndex:3},{value:"UPDATE",paraId:4,tocIndex:3},{value:" / ",paraId:4,tocIndex:3},{value:"DELETE",paraId:4,tocIndex:3},{value:" occur in the database, while table events are managed at the Node.js application layer (ORM processing). As a result, these operations do not trigger table events.",paraId:4,tocIndex:3},{value:"This plugin is built-in, so no installation is necessary.",paraId:5,tocIndex:4},{value:'In the workflow configuration interface, click the plus sign (\u201C+\u201D) within the flow to add an "SQL Action" node:',paraId:6,tocIndex:6},{value:"Select the data source for executing the SQL.",paraId:7,tocIndex:8},{value:"The data source must be of a database type, such as the main data source, PostgreSQL type, or any other data source compatible with Sequelize.",paraId:8,tocIndex:8},{value:"Edit the SQL statement. Currently, only one SQL statement is supported.",paraId:9,tocIndex:9},{value:"You can insert required variables by clicking the variable button in the upper right corner of the editor. Before execution, the variables will be replaced with their corresponding values in the text, and the final SQL statement will be sent to the database for querying.",paraId:10,tocIndex:9},{value:"Starting from ",paraId:11,tocIndex:10},{value:"v1.3.15-beta",paraId:11,tocIndex:10},{value:", the result of the SQL node execution is an array consisting purely of data. Prior to this version, the result was a Sequelize native structure that included query metadata (for more details, see: ",paraId:11,tocIndex:10},{value:"sequelize.query()",paraId:11,tocIndex:10},{value:").",paraId:11,tocIndex:10},{value:"For example, the following query:",paraId:12,tocIndex:10},{value:`select count(id) from posts; +`,paraId:17,tocIndex:10}],fF={},xF={title:"SQL Actions",toc:"menu",filename:"docs/en-US/handbook/workflow-sql/index.md",lastUpdated:173254844e4,description:"In certain scenarios where the standard data table operation nodes fall short for more complex tasks, you can directly employ the SQL Action node to execute sophisticated SQL queries within the database."},gF=[{id:"sql-actions",depth:1,title:"SQL Actions"},{id:"faq",depth:2,title:"FAQ"},{id:"how-can-the-results-of-an-sql-action-node-be-utilized",depth:3,title:"How can the results of an SQL Action node be utilized?"},{id:"will-sql-actions-trigger-table-events",depth:3,title:"Will SQL actions trigger table events?"},{id:"installation",depth:2,title:"Installation"},{id:"user-guide",depth:2,title:"User Guide"},{id:"creating-a-node",depth:3,title:"Creating a Node"},{id:"configuring-the-node",depth:3,title:"Configuring the Node"},{id:"data-source",depth:4,title:"Data Source"},{id:"sql-content",depth:4,title:"SQL Content"},{id:"node-execution-results",depth:3,title:"Node Execution Results"}],bF=[{value:"In certain scenarios where the standard data table operation nodes fall short for more complex tasks, you can directly employ the SQL Action node to execute sophisticated SQL queries within the database.",paraId:0,tocIndex:0},{value:"Unlike executing SQL operations by connecting to the database externally, within the workflow, you can leverage variables from the workflow context as parameters within your SQL statements.",paraId:1,tocIndex:0},{value:"When using a ",paraId:2,tocIndex:2},{value:"SELECT",paraId:2,tocIndex:2},{value:" statement, the query results are stored in the node in Sequelize's JSON format. You can parse and utilize these results through the ",paraId:2,tocIndex:2},{value:"JSON-query",paraId:3,tocIndex:2},{value:" plugin.",paraId:2,tocIndex:2},{value:"No",paraId:4,tocIndex:3},{value:". SQL actions directly execute SQL commands on the database. Actions such as ",paraId:4,tocIndex:3},{value:"CREATE",paraId:4,tocIndex:3},{value:" / ",paraId:4,tocIndex:3},{value:"UPDATE",paraId:4,tocIndex:3},{value:" / ",paraId:4,tocIndex:3},{value:"DELETE",paraId:4,tocIndex:3},{value:" occur in the database, while table events are managed at the Node.js application layer (ORM processing). As a result, these operations do not trigger table events.",paraId:4,tocIndex:3},{value:"This plugin is built-in, so no installation is necessary.",paraId:5,tocIndex:4},{value:'In the workflow configuration interface, click the plus sign (\u201C+\u201D) within the flow to add an "SQL Action" node:',paraId:6,tocIndex:6},{value:"Select the data source for executing the SQL.",paraId:7,tocIndex:8},{value:"The data source must be of a database type, such as the main data source, PostgreSQL type, or any other data source compatible with Sequelize.",paraId:8,tocIndex:8},{value:"Edit the SQL statement. Currently, only one SQL statement is supported.",paraId:9,tocIndex:9},{value:"You can insert required variables by clicking the variable button in the upper right corner of the editor. Before execution, the variables will be replaced with their corresponding values in the text, and the final SQL statement will be sent to the database for querying.",paraId:10,tocIndex:9},{value:"Starting from ",paraId:11,tocIndex:10},{value:"v1.3.15-beta",paraId:11,tocIndex:10},{value:", the result of the SQL node execution is an array consisting purely of data. Prior to this version, the result was a Sequelize native structure that included query metadata (for more details, see: ",paraId:11,tocIndex:10},{value:"sequelize.query()",paraId:11,tocIndex:10},{value:").",paraId:11,tocIndex:10},{value:"For example, the following query:",paraId:12,tocIndex:10},{value:`select count(id) from posts; `,paraId:13,tocIndex:10},{value:"Result before ",paraId:14,tocIndex:10},{value:"v1.3.15-beta",paraId:14,tocIndex:10},{value:":",paraId:14,tocIndex:10},{value:`[ [ { "count": 1 } @@ -14855,13 +14908,13 @@ app.command('a').preload().action() `,paraId:15,tocIndex:10},{value:"Result after ",paraId:16,tocIndex:10},{value:"v1.3.15-beta",paraId:16,tocIndex:10},{value:":",paraId:16,tocIndex:10},{value:`[ { "count": 1 } ] -`,paraId:17,tocIndex:10}],yF={},wF={title:"Backup & Restore",toc:"menu",filename:"docs/en-US/manual/backup-restore/index.md",lastUpdated:1732240239e3,description:"\u53EF\u4EE5\u9009\u62E9\u4ECE\u672C\u5730\u4E0A\u4F20\u5907\u4EFD\uFF0C\u4E5F\u53EF\u4EE5\u70B9\u51FB\u67D0\u4E2A\u5907\u4EFD\u6587\u4EF6\u8FDB\u884C\u8FD8\u539F\u3002"},kF=[{id:"backup--restore",depth:1,title:"Backup & Restore"},{id:"\u4F7F\u7528\u8BF4\u660E",depth:2,title:"\u4F7F\u7528\u8BF4\u660E"},{id:"\u65B0\u5EFA\u5907\u4EFD",depth:3,title:"\u65B0\u5EFA\u5907\u4EFD"},{id:"\u8FD8\u539F\u5907\u4EFD",depth:3,title:"\u8FD8\u539F\u5907\u4EFD"},{id:"\u5907\u4EFD\u8BF4\u660E",depth:3,title:"\u5907\u4EFD\u8BF4\u660E"},{id:"\u5F00\u53D1\u6307\u5357",depth:2,title:"\u5F00\u53D1\u6307\u5357"}],SF=[{value:"\u53EF\u4EE5\u9009\u62E9\u4ECE\u672C\u5730\u4E0A\u4F20\u5907\u4EFD\uFF0C\u4E5F\u53EF\u4EE5\u70B9\u51FB\u67D0\u4E2A\u5907\u4EFD\u6587\u4EF6\u8FDB\u884C\u8FD8\u539F\u3002",paraId:0,tocIndex:3},{value:"\u9009\u62E9\u9700\u8981\u8FD8\u539F\u7684\u6570\u636E\uFF0C\u9009\u4E2D\u7684\u6570\u636E\u5C06\u5168\u91CF\u8986\u76D6\u76EE\u6807\u5E94\u7528\u5BF9\u5E94\u7684\u6570\u636E\u8868",paraId:1,tocIndex:3},{value:"\u70B9\u51FB\u4E86\u89E3\u66F4\u591A\uFF08Learn more\uFF09\u67E5\u770B\u5907\u4EFD\u8BF4\u660E",paraId:2,tocIndex:4},{value:"\u5907\u4EFD\u8BF4\u660E",paraId:3,tocIndex:4},{value:"\u5907\u4EFD\u5206\u7EC4",paraId:4,tocIndex:4},{value:"\u5FC5\u5907\u6570\u636E",paraId:5,tocIndex:4},{value:"\u8DF3\u8FC7\u7684\u6570\u636E",paraId:5,tocIndex:4},{value:"\u7528\u6237\u6570\u636E",paraId:5,tocIndex:4},{value:"\u65E5\u5FD7\u6570\u636E",paraId:5,tocIndex:4},{value:"\u7B2C\u4E09\u65B9\u670D\u52A1\u4FE1\u606F",paraId:5,tocIndex:4},{value:"\u81EA\u5EFA\u8868\u6570\u636E",paraId:5,tocIndex:4},{value:"\u6CE8\uFF1A\u53EF\u4EE5\u6309\u5206\u7EC4\u9009\u62E9\u9700\u8981\u5907\u4EFD\u6216\u8FD8\u539F\u7684\u6570\u636E\uFF0C\u8FD8\u539F\u65F6\u9009\u4E2D\u7684\u6570\u636E\u4F1A\u5168\u91CF\u8986\u76D6\u3002",paraId:6,tocIndex:4}],UF={},PF={title:"\u533A\u5757",toc:"menu",filename:"docs/en-US/manual/core-concepts/blocks.md",lastUpdated:1732240239e3,description:"\u533A\u5757\u662F\u7528\u6765\u5C55\u793A\u548C\u64CD\u4F5C\u6570\u636E\u7684\u89C6\u56FE\u3002\u5728 NocoBase \u91CC\uFF0C\u5C06\u9875\u9762\u3001\u5F39\u7A97\u3001\u62BD\u5C49\u770B\u4F5C\u662F\u533A\u5757\u7684\u5BB9\u5668\uFF0C\u5BB9\u5668\u5C31\u50CF\u4E00\u5F20\u753B\u5E03\uFF0C\u5728\u91CC\u9762\u53EF\u4EE5\u653E\u7F6E\u5404\u79CD\u5404\u6837\u7684\u533A\u5757\u3002"},TF=[{id:"\u533A\u5757",depth:1,title:"\u533A\u5757"},{id:"\u533A\u5757\u7ED3\u6784",depth:2,title:"\u533A\u5757\u7ED3\u6784"},{id:"\u533A\u5757\u7C7B\u578B",depth:2,title:"\u533A\u5757\u7C7B\u578B"},{id:"\u6DFB\u52A0\u533A\u5757",depth:2,title:"\u6DFB\u52A0\u533A\u5757"},{id:"\u914D\u7F6E\u533A\u5757",depth:2,title:"\u914D\u7F6E\u533A\u5757"},{id:"\u914D\u7F6E\u533A\u5757\u5185\u5BB9",depth:3,title:"\u914D\u7F6E\u533A\u5757\u5185\u5BB9"},{id:"\u914D\u7F6E\u533A\u5757\u64CD\u4F5C",depth:3,title:"\u914D\u7F6E\u533A\u5757\u64CD\u4F5C"},{id:"\u914D\u7F6E\u533A\u5757\u5C5E\u6027",depth:3,title:"\u914D\u7F6E\u533A\u5757\u5C5E\u6027"},{id:"\u8C03\u6574\u5E03\u5C40",depth:2,title:"\u8C03\u6574\u5E03\u5C40"},{id:"\u533A\u5757\u6A21\u677F",depth:2,title:"\u533A\u5757\u6A21\u677F"}],CF=[{value:"\u533A\u5757\u662F\u7528\u6765\u5C55\u793A\u548C\u64CD\u4F5C\u6570\u636E\u7684\u89C6\u56FE\u3002\u5728 NocoBase \u91CC\uFF0C\u5C06\u9875\u9762\u3001\u5F39\u7A97\u3001\u62BD\u5C49\u770B\u4F5C\u662F\u533A\u5757\u7684\u5BB9\u5668\uFF0C\u5BB9\u5668\u5C31\u50CF\u4E00\u5F20\u753B\u5E03\uFF0C\u5728\u91CC\u9762\u53EF\u4EE5\u653E\u7F6E\u5404\u79CD\u5404\u6837\u7684\u533A\u5757\u3002",paraId:0,tocIndex:0},{value:"\u5F97\u76CA\u4E8E NocoBase \u5C06\u6570\u636E\u4E0E\u89C6\u56FE\u5206\u79BB\u7684\u8BBE\u8BA1\uFF0C\u9875\u9762\u901A\u8FC7\u533A\u5757\u627F\u8F7D\u6570\u636E\uFF0C\u5E76\u6839\u636E\u4E0D\u540C\u7684\u533A\u5757\u7C7B\u578B\uFF0C\u4EE5\u4E0D\u540C\u7684\u5F62\u5F0F\u7EC4\u7EC7\u548C\u7BA1\u7406\u6570\u636E\u3002",paraId:1,tocIndex:0},{value:"\u4E00\u4E2A\u5B8C\u6574\u7684\u533A\u5757\u7531\u4E09\u90E8\u5206\u7EC4\u6210\uFF1A",paraId:2,tocIndex:1},{value:"\u5185\u5BB9\u533A\uFF1A\u533A\u5757\u7684\u4E3B\u4F53",paraId:3,tocIndex:1},{value:"\u64CD\u4F5C\u533A\uFF1A\u53EF\u4EE5\u653E\u7F6E\u5404\u79CD\u64CD\u4F5C\u6309\u94AE\uFF0C\u7528\u4E8E\u64CD\u4F5C\u533A\u5757\u6570\u636E",paraId:3,tocIndex:1},{value:"\u914D\u7F6E\u533A\uFF1A\u64CD\u4F5C\u533A\u5757\u914D\u7F6E\u7684\u6309\u94AE",paraId:3,tocIndex:1},{value:"NocoBase \u76EE\u524D\u5185\u7F6E 10 \u51E0\u79CD\u533A\u5757\uFF0C\u672A\u6765\u53EF\u4EE5\u901A\u8FC7\u63D2\u4EF6\u7684\u65B9\u5F0F\u652F\u6301\u66F4\u591A\u79CD\u3002",paraId:4,tocIndex:2},{value:"\u6570\u636E\u533A\u5757",paraId:5,tocIndex:2},{value:`\uFF1A\u4E3A\u7EC4\u7EC7\u6570\u636E\u800C\u8BBE\u8BA1\u7684\u533A\u5757\u3002 +`,paraId:17,tocIndex:10}],yF={},wF={title:"Backup & Restore",toc:"menu",filename:"docs/en-US/manual/backup-restore/index.md",lastUpdated:173254844e4,description:"\u53EF\u4EE5\u9009\u62E9\u4ECE\u672C\u5730\u4E0A\u4F20\u5907\u4EFD\uFF0C\u4E5F\u53EF\u4EE5\u70B9\u51FB\u67D0\u4E2A\u5907\u4EFD\u6587\u4EF6\u8FDB\u884C\u8FD8\u539F\u3002"},kF=[{id:"backup--restore",depth:1,title:"Backup & Restore"},{id:"\u4F7F\u7528\u8BF4\u660E",depth:2,title:"\u4F7F\u7528\u8BF4\u660E"},{id:"\u65B0\u5EFA\u5907\u4EFD",depth:3,title:"\u65B0\u5EFA\u5907\u4EFD"},{id:"\u8FD8\u539F\u5907\u4EFD",depth:3,title:"\u8FD8\u539F\u5907\u4EFD"},{id:"\u5907\u4EFD\u8BF4\u660E",depth:3,title:"\u5907\u4EFD\u8BF4\u660E"},{id:"\u5F00\u53D1\u6307\u5357",depth:2,title:"\u5F00\u53D1\u6307\u5357"}],SF=[{value:"\u53EF\u4EE5\u9009\u62E9\u4ECE\u672C\u5730\u4E0A\u4F20\u5907\u4EFD\uFF0C\u4E5F\u53EF\u4EE5\u70B9\u51FB\u67D0\u4E2A\u5907\u4EFD\u6587\u4EF6\u8FDB\u884C\u8FD8\u539F\u3002",paraId:0,tocIndex:3},{value:"\u9009\u62E9\u9700\u8981\u8FD8\u539F\u7684\u6570\u636E\uFF0C\u9009\u4E2D\u7684\u6570\u636E\u5C06\u5168\u91CF\u8986\u76D6\u76EE\u6807\u5E94\u7528\u5BF9\u5E94\u7684\u6570\u636E\u8868",paraId:1,tocIndex:3},{value:"\u70B9\u51FB\u4E86\u89E3\u66F4\u591A\uFF08Learn more\uFF09\u67E5\u770B\u5907\u4EFD\u8BF4\u660E",paraId:2,tocIndex:4},{value:"\u5907\u4EFD\u8BF4\u660E",paraId:3,tocIndex:4},{value:"\u5907\u4EFD\u5206\u7EC4",paraId:4,tocIndex:4},{value:"\u5FC5\u5907\u6570\u636E",paraId:5,tocIndex:4},{value:"\u8DF3\u8FC7\u7684\u6570\u636E",paraId:5,tocIndex:4},{value:"\u7528\u6237\u6570\u636E",paraId:5,tocIndex:4},{value:"\u65E5\u5FD7\u6570\u636E",paraId:5,tocIndex:4},{value:"\u7B2C\u4E09\u65B9\u670D\u52A1\u4FE1\u606F",paraId:5,tocIndex:4},{value:"\u81EA\u5EFA\u8868\u6570\u636E",paraId:5,tocIndex:4},{value:"\u6CE8\uFF1A\u53EF\u4EE5\u6309\u5206\u7EC4\u9009\u62E9\u9700\u8981\u5907\u4EFD\u6216\u8FD8\u539F\u7684\u6570\u636E\uFF0C\u8FD8\u539F\u65F6\u9009\u4E2D\u7684\u6570\u636E\u4F1A\u5168\u91CF\u8986\u76D6\u3002",paraId:6,tocIndex:4}],UF={},PF={title:"\u533A\u5757",toc:"menu",filename:"docs/en-US/manual/core-concepts/blocks.md",lastUpdated:173254844e4,description:"\u533A\u5757\u662F\u7528\u6765\u5C55\u793A\u548C\u64CD\u4F5C\u6570\u636E\u7684\u89C6\u56FE\u3002\u5728 NocoBase \u91CC\uFF0C\u5C06\u9875\u9762\u3001\u5F39\u7A97\u3001\u62BD\u5C49\u770B\u4F5C\u662F\u533A\u5757\u7684\u5BB9\u5668\uFF0C\u5BB9\u5668\u5C31\u50CF\u4E00\u5F20\u753B\u5E03\uFF0C\u5728\u91CC\u9762\u53EF\u4EE5\u653E\u7F6E\u5404\u79CD\u5404\u6837\u7684\u533A\u5757\u3002"},TF=[{id:"\u533A\u5757",depth:1,title:"\u533A\u5757"},{id:"\u533A\u5757\u7ED3\u6784",depth:2,title:"\u533A\u5757\u7ED3\u6784"},{id:"\u533A\u5757\u7C7B\u578B",depth:2,title:"\u533A\u5757\u7C7B\u578B"},{id:"\u6DFB\u52A0\u533A\u5757",depth:2,title:"\u6DFB\u52A0\u533A\u5757"},{id:"\u914D\u7F6E\u533A\u5757",depth:2,title:"\u914D\u7F6E\u533A\u5757"},{id:"\u914D\u7F6E\u533A\u5757\u5185\u5BB9",depth:3,title:"\u914D\u7F6E\u533A\u5757\u5185\u5BB9"},{id:"\u914D\u7F6E\u533A\u5757\u64CD\u4F5C",depth:3,title:"\u914D\u7F6E\u533A\u5757\u64CD\u4F5C"},{id:"\u914D\u7F6E\u533A\u5757\u5C5E\u6027",depth:3,title:"\u914D\u7F6E\u533A\u5757\u5C5E\u6027"},{id:"\u8C03\u6574\u5E03\u5C40",depth:2,title:"\u8C03\u6574\u5E03\u5C40"},{id:"\u533A\u5757\u6A21\u677F",depth:2,title:"\u533A\u5757\u6A21\u677F"}],CF=[{value:"\u533A\u5757\u662F\u7528\u6765\u5C55\u793A\u548C\u64CD\u4F5C\u6570\u636E\u7684\u89C6\u56FE\u3002\u5728 NocoBase \u91CC\uFF0C\u5C06\u9875\u9762\u3001\u5F39\u7A97\u3001\u62BD\u5C49\u770B\u4F5C\u662F\u533A\u5757\u7684\u5BB9\u5668\uFF0C\u5BB9\u5668\u5C31\u50CF\u4E00\u5F20\u753B\u5E03\uFF0C\u5728\u91CC\u9762\u53EF\u4EE5\u653E\u7F6E\u5404\u79CD\u5404\u6837\u7684\u533A\u5757\u3002",paraId:0,tocIndex:0},{value:"\u5F97\u76CA\u4E8E NocoBase \u5C06\u6570\u636E\u4E0E\u89C6\u56FE\u5206\u79BB\u7684\u8BBE\u8BA1\uFF0C\u9875\u9762\u901A\u8FC7\u533A\u5757\u627F\u8F7D\u6570\u636E\uFF0C\u5E76\u6839\u636E\u4E0D\u540C\u7684\u533A\u5757\u7C7B\u578B\uFF0C\u4EE5\u4E0D\u540C\u7684\u5F62\u5F0F\u7EC4\u7EC7\u548C\u7BA1\u7406\u6570\u636E\u3002",paraId:1,tocIndex:0},{value:"\u4E00\u4E2A\u5B8C\u6574\u7684\u533A\u5757\u7531\u4E09\u90E8\u5206\u7EC4\u6210\uFF1A",paraId:2,tocIndex:1},{value:"\u5185\u5BB9\u533A\uFF1A\u533A\u5757\u7684\u4E3B\u4F53",paraId:3,tocIndex:1},{value:"\u64CD\u4F5C\u533A\uFF1A\u53EF\u4EE5\u653E\u7F6E\u5404\u79CD\u64CD\u4F5C\u6309\u94AE\uFF0C\u7528\u4E8E\u64CD\u4F5C\u533A\u5757\u6570\u636E",paraId:3,tocIndex:1},{value:"\u914D\u7F6E\u533A\uFF1A\u64CD\u4F5C\u533A\u5757\u914D\u7F6E\u7684\u6309\u94AE",paraId:3,tocIndex:1},{value:"NocoBase \u76EE\u524D\u5185\u7F6E 10 \u51E0\u79CD\u533A\u5757\uFF0C\u672A\u6765\u53EF\u4EE5\u901A\u8FC7\u63D2\u4EF6\u7684\u65B9\u5F0F\u652F\u6301\u66F4\u591A\u79CD\u3002",paraId:4,tocIndex:2},{value:"\u6570\u636E\u533A\u5757",paraId:5,tocIndex:2},{value:`\uFF1A\u4E3A\u7EC4\u7EC7\u6570\u636E\u800C\u8BBE\u8BA1\u7684\u533A\u5757\u3002 `,paraId:5,tocIndex:2},{value:"\u8868\u683C",paraId:6,tocIndex:2},{value:"\uFF1A\u4EE5\u8868\u683C\u5F62\u5F0F\u5C55\u793A\u591A\u6761\u6570\u636E\u7684\u533A\u5757\uFF0C\u65E2\u53EF\u4EE5\u5C55\u793A\u4E00\u4E2A\u6570\u636E\u8868\uFF0C\u4E5F\u53EF\u4EE5\u5C55\u793A\u76F8\u4E92\u4E4B\u95F4\u6709\u5173\u8054\u5173\u7CFB\u7684\u591A\u4E2A\u6570\u636E\u8868\u3002",paraId:6,tocIndex:2},{value:"\u8868\u5355",paraId:6,tocIndex:2},{value:"\uFF1A\u4EE5\u5404\u79CD\u7C7B\u578B\u7684\u8F93\u5165\u6846\u5F55\u5165\u6216\u7F16\u8F91\u6570\u636E\u7684\u533A\u5757\uFF0C\u65E2\u53EF\u4EE5\u4E3A\u67D0\u4E00\u4E2A\u6570\u636E\u8868\u8FDB\u884C\u5F55\u5165\uFF0C\u4E5F\u53EF\u4EE5\u5BF9\u76F8\u4E92\u4E4B\u95F4\u6709\u5173\u8054\u5173\u7CFB\u7684\u591A\u4E2A\u6570\u636E\u8868\u7EDF\u4E00\u5F55\u5165\u3002",paraId:6,tocIndex:2},{value:"\u8BE6\u60C5",paraId:6,tocIndex:2},{value:"\uFF1A\u5C55\u793A\u4E00\u6761\u7279\u5B9A\u6570\u636E\u7684\u533A\u5757\uFF0C\u65E2\u53EF\u4EE5\u5BF9\u67D0\u4E00\u4E2A\u6570\u636E\u8868\u7684\u67D0\u4E00\u6761\u6570\u636E\u8FDB\u884C\u5C55\u793A\uFF0C\u4E5F\u53EF\u4EE5\u5BF9\u76F8\u4E92\u4E4B\u95F4\u6709\u5173\u8054\u5173\u7CFB\u7684\u591A\u4E2A\u6570\u636E\u8868\u4E2D\u7684\u591A\u6761\u6570\u636E\u7EDF\u4E00\u5C55\u793A\u3002",paraId:6,tocIndex:2},{value:"\u65E5\u5386",paraId:6,tocIndex:2},{value:"\uFF1A\u4EE5\u65E5\u5386\u7684\u5F62\u5F0F\u5C55\u793A\u591A\u6761\u6570\u636E\u7684\u533A\u5757\uFF0C\u9002\u5408\u67D0\u4E9B\u5728\u65E5\u671F\u4E0A\u5177\u5907\u91CD\u8981\u7279\u5F81\u7684\u6570\u636E\u3002",paraId:6,tocIndex:2},{value:"\u770B\u677F",paraId:6,tocIndex:2},{value:"\uFF1A\u4EE5\u770B\u677F\u7684\u5F62\u5F0F\u5C55\u793A\u591A\u6761\u6570\u636E\u7684\u533A\u5757\uFF0C\u9002\u5408\u7528\u6765\u5BF9\u751F\u4EA7\u8FC7\u7A0B\u8FDB\u884C\u7BA1\u7406\u3002",paraId:6,tocIndex:2},{value:"\u56FE\u8868\u533A\u5757",paraId:5,tocIndex:2},{value:"\uFF1A\u4E3A\u56FE\u5F62\u5316\u5C55\u793A\u7EDF\u8BA1\u6570\u636E\u800C\u8BBE\u8BA1\u7684\u533A\u5757\u3002\u76EE\u524D\u652F\u6301\uFF1A\u67F1\u72B6\u56FE\u3001\u6761\u5F62\u56FE\u3001\u6298\u7EBF\u56FE\u3001\u997C\u56FE\u3001\u9762\u79EF\u56FE\u7B49\u3002",paraId:5,tocIndex:2},{value:"\u5176\u4ED6\u533A\u5757",paraId:5,tocIndex:2},{value:`\uFF1A\u4E3A\u5C55\u793A\u7279\u6B8A\u6570\u636E\u800C\u8BBE\u8BA1\u7684\u533A\u5757\u3002 -`,paraId:5,tocIndex:2},{value:"Markdown",paraId:7,tocIndex:2},{value:"\uFF1A\u7528 Markdown \u4E66\u5199\u7684\u6587\u672C\u5185\u5BB9\u3002",paraId:7,tocIndex:2},{value:"\u64CD\u4F5C\u8BB0\u5F55",paraId:7,tocIndex:2},{value:"\uFF1A\u5C55\u793A\u4E00\u4E2A\u6570\u636E\u8868\u4E2D\u7684\u6240\u6709\u6570\u636E\u7684\u53D8\u66F4\u8BB0\u5F55\uFF0C\u5305\u62EC\u65B0\u5EFA\u3001\u7F16\u8F91\u548C\u5220\u9664\u3002",paraId:7,tocIndex:2},{value:"\u8FDB\u5165\u754C\u9762\u914D\u7F6E\u6A21\u5F0F\uFF0C\u5728\u9875\u9762\u548C\u5F39\u7A97\u5185\u70B9\u51FB Add block \u6309\u94AE\u5373\u53EF\u6DFB\u52A0\u533A\u5757\u3002\u9009\u9879\u5206\u4E3A 4 \u6B65\uFF1A",paraId:8,tocIndex:3},{value:"\u9009\u62E9\u533A\u5757\u7C7B\u578B\uFF1A\u76EE\u524D\u53EF\u7528\u7684\u533A\u5757\u7C7B\u578B\u5305\u62EC\u8868\u683C\u3001\u8868\u5355\u3001\u8BE6\u60C5\u3001\u65E5\u5386\u3001\u770B\u677F\u3001Markdown",paraId:9,tocIndex:3},{value:"\u9009\u62E9 Collection\uFF1A\u6B64\u5904\u4F1A\u5217\u51FA\u6240\u6709\u7684 Collection",paraId:9,tocIndex:3},{value:"\u9009\u62E9\u521B\u5EFA\u65B9\u5F0F\uFF1A\u521B\u5EFA\u7A7A\u767D\u533A\u5757\uFF0C\u6216\u8005\u4ECE\u590D\u5236\u533A\u5757\u6A21\u677F\uFF0C\u6216\u8005\u5F15\u7528\u533A\u5757\u6A21\u677F",paraId:9,tocIndex:3},{value:"\u9009\u62E9\u6A21\u677F\uFF1A\u82E5\u7B2C 3 \u6B65\u9009\u62E9\u4E86\u4ECE\u6A21\u677F\u521B\u5EFA\uFF0C\u5219\u5728\u7B2C 4 \u6B65\u9009\u62E9\u6A21\u677F",paraId:9,tocIndex:3},{value:"\u914D\u7F6E\u533A\u5757\u5305\u62EC\u4E09\u65B9\u9762\u7684\u5185\u5BB9\uFF1A",paraId:10,tocIndex:4},{value:"\u914D\u7F6E\u533A\u5757\u5185\u5BB9",paraId:11,tocIndex:4},{value:"\u914D\u7F6E\u533A\u5757\u64CD\u4F5C",paraId:11,tocIndex:4},{value:"\u914D\u7F6E\u533A\u5757\u5C5E\u6027",paraId:11,tocIndex:4},{value:"\u4EE5\u8868\u683C\u533A\u5757\u4E3A\u4F8B\uFF0C\u533A\u5757\u5185\u5BB9\u662F\u6307\u8868\u683C\u4E2D\u8981\u663E\u793A\u7684\u5217\u3002\u70B9\u51FB Configure columns \u5373\u53EF\u914D\u7F6E\u8981\u663E\u793A\u7684\u5217\uFF1A",paraId:12,tocIndex:5},{value:"\u4EE5\u8868\u683C\u533A\u5757\u4E3A\u4F8B\uFF0C\u6709\u7B5B\u9009\u3001\u6DFB\u52A0\u3001\u5220\u9664\u3001\u67E5\u770B\u3001\u7F16\u8F91\u3001\u81EA\u5B9A\u4E49\u7B49\u64CD\u4F5C\u53EF\u9009\u3002\u70B9\u51FB Configure actions \u6309\u94AE\u53EF\u4EE5\u914D\u7F6E\u64CD\u4F5C\u3002\u5176\u4E2D\uFF0C\u6BCF\u4E2A\u64CD\u4F5C\u6309\u94AE\u90FD\u53EF\u4EE5\u5355\u72EC\u914D\u7F6E\u5C5E\u6027\uFF1A",paraId:13,tocIndex:6},{value:"\u5C06\u5149\u6807\u79FB\u5230\u533A\u5757\u53F3\u4E0A\u89D2\uFF0C\u4F1A\u770B\u5230\u533A\u5757\u914D\u7F6E\u6309\u94AE\u3002\u4EE5\u8868\u683C\u533A\u5757\u4E3A\u4F8B\uFF0C\u53EF\u4EE5\u914D\u7F6E\u7684\u5C5E\u6027\u6709\uFF1A",paraId:14,tocIndex:7},{value:"Block title",paraId:15,tocIndex:7},{value:"Drag & drop sorting",paraId:15,tocIndex:7},{value:"Set the data scope",paraId:15,tocIndex:7},{value:"Set default sorting rules",paraId:15,tocIndex:7},{value:"Records per page",paraId:15,tocIndex:7},{value:"\u9875\u9762\u5185\u65E2\u53EF\u4EE5\u53EA\u653E\u4E00\u4E2A\u533A\u5757\uFF0C\u4E5F\u53EF\u4EE5\u653E\u591A\u4E2A\u533A\u5757\u8FDB\u884C\u7EC4\u5408\u3002\u4F60\u53EF\u4EE5\u901A\u8FC7\u62D6\u62FD\u5B8C\u6210\u533A\u5757\u4F4D\u7F6E\u548C\u5BBD\u5EA6\u7684\u8C03\u6574\u3002",paraId:16,tocIndex:8},{value:"\u4F60\u53EF\u4EE5\u5C06\u4E00\u4E2A\u533A\u5757\u4FDD\u5B58\u4E3A\u6A21\u677F\uFF0C\u4EE5\u540E\u53EF\u4EE5\u590D\u5236\u6216\u5F15\u7528\u8FD9\u4E2A\u6A21\u677F\u3002",paraId:17,tocIndex:9},{value:"\u6BD4\u5982\uFF0C\u4E00\u4E2A\u6570\u636E\u8868\u7684\u8868\u5355\uFF0C\u65E2\u7528\u4E8E\u65B0\u589E\u6570\u636E\uFF0C\u53C8\u7528\u4E8E\u7F16\u8F91\u6570\u636E\uFF0C\u90A3\u5C31\u53EF\u4EE5\u5C06\u8FD9\u4E2A\u8868\u5355\u4FDD\u5B58\u4E3A\u6A21\u677F\uFF0C\u5728\u65B0\u589E\u6570\u636E\u548C\u7F16\u8F91\u6570\u636E\u7684\u754C\u9762\u91CC\u5F15\u7528\u5B83\u3002",paraId:18,tocIndex:9}],AF={},qF={title:"\u590D\u5236",toc:"menu",filename:"docs/en-US/manual/ui/actions/duplicate.md",lastUpdated:1732240239e3,description:"\u590D\u5236\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u590D\u5236\u4E00\u884C\u6570\u636E\u4EE5\u4FBF\u4E8E\u521B\u5EFA\u65B0\u7684\u6570\u636E\u8BB0\u5F55\uFF0C\u652F\u6301\u76F4\u63A5\u590D\u5236/\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199\u4E24\u79CD\u65B9\u5F0F"},EF=[{id:"\u590D\u5236",depth:1,title:"\u590D\u5236"},{id:"\u76F4\u63A5\u590D\u5236",depth:4,title:"\u76F4\u63A5\u590D\u5236"},{id:"\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199",depth:4,title:"\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199"},{id:"\u590D\u5236\u5F15\u7528\u9884\u52A0\u8F7D\u7684\u8BF4\u660E",depth:4,title:"\u590D\u5236\u3001\u5F15\u7528\u3001\u9884\u52A0\u8F7D\u7684\u8BF4\u660E"},{id:"\u5173\u4E8E\u5168\u9009",depth:4,title:"\u5173\u4E8E\u5168\u9009"},{id:"\u6A21\u677F\u6570\u636E\u7684\u5904\u7406\u903B\u8F91",depth:4,title:"\u6A21\u677F\u6570\u636E\u7684\u5904\u7406\u903B\u8F91"},{id:"\u5982\u4F55\u7406\u89E3\u540C\u6B65\u8868\u5355\u5B57\u6BB5",depth:4,title:"\u5982\u4F55\u7406\u89E3\u540C\u6B65\u8868\u5355\u5B57\u6BB5"}],DF=[{value:"\u590D\u5236\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u590D\u5236\u4E00\u884C\u6570\u636E\u4EE5\u4FBF\u4E8E\u521B\u5EFA\u65B0\u7684\u6570\u636E\u8BB0\u5F55\uFF0C\u652F\u6301\u76F4\u63A5\u590D\u5236/\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199\u4E24\u79CD\u65B9\u5F0F",paraId:0,tocIndex:0},{value:"\u9ED8\u8BA4\u4EE5\u76F4\u63A5\u590D\u5236\u7684\u65B9\u5F0F\u590D\u5236\u6570\u636E",paraId:1,tocIndex:1},{value:"\u76EE\u6807\u6570\u636E\u8868\uFF1A\u662F\u6307\u590D\u5236\u6DFB\u52A0\u7684\u76EE\u6807\u6570\u636E\u8868\uFF08\u5728\u7EE7\u627F\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u590D\u5236\u7ED9\u5B50\u8868\uFF0C\u76F4\u63A5\u590D\u5236\u53EA\u80FD\u590D\u5236\u6DFB\u52A0\u5230\u672C\u8868\uFF09",paraId:1,tocIndex:1},{value:"\u6A21\u7248\u5B57\u6BB5\uFF1A\u7528\u4E8E\u6307\u5B9A\u8981\u590D\u5236\u7684\u5B57\u6BB5\uFF0C\u53EF\u5168\u9009\uFF0C\u5FC5\u586B",paraId:1,tocIndex:1},{value:"\u5B8C\u6210\u914D\u7F6E\u540E\u70B9\u51FB\u6309\u94AE\u5373\u590D\u5236\u6570\u636E",paraId:2,tocIndex:1},{value:"\u914D\u7F6E\u7684\u6A21\u677F\u5B57\u6BB5\u4F5C\u4E3A\u5C06\u9ED8\u8BA4\u503C\u586B\u5145\u5230\u8868\u5355\u4E2D\uFF0C\u53EF\u4FEE\u6539\u540E\u63D0\u4EA4",paraId:3,tocIndex:2},{value:"\u53EF\u4EE5\u8BBE\u7F6E\u672C\u8868\u6216\u5B50\u8868\u4E3A\u590D\u5236\u6DFB\u52A0\u7684\u76EE\u6807\u8868",paraId:4,tocIndex:2},{value:"\u914D\u7F6E\u6A21\u677F\u5B57\u6BB5\uFF1A\u6A21\u677F\u5B57\u6BB5\u5C06\u4F5C\u4E3A\u9ED8\u8BA4\u503C\u586B\u5145\u5230\u8868\u5355\u4E2D\uFF0C\u53EA\u4F1A\u5E26\u51FA\u6709\u52FE\u9009\u7684\u5B57\u6BB5\u503C",paraId:5,tocIndex:2},{value:"\u300C\u8FD0\u5355\u300D\uFF08o2m\uFF09\u662F\u590D\u5236\u7684\u5173\u7CFB\uFF0C\u8C03\u6574\u5176\u5B57\u6BB5\u7EC4\u4EF6\u4E3A\u5B50\u8868\u5355\uFF0C\u53EF\u914D\u7F6E\u5B50\u8868\u5355\u4E2D\u7684\u5B57\u6BB5",paraId:6,tocIndex:2},{value:"\u540C\u6B65\u8868\u5355\u5B57\u6BB5\uFF1A\u5B8C\u6210\u8868\u5355\u914D\u7F6E\u540E\u53EF\u70B9\u51FB\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\uFF0C\u4F1A\u81EA\u52A8\u89E3\u6790\u5C06\u8868\u5355\u4E2D\u5DF2\u914D\u7F6E\u7684\u5B57\u6BB5\u5747\u52FE\u9009\u4E0A\uFF08\u6BCF\u6B21\u8868\u5355\u5B57\u6BB5\u914D\u7F6E\u4FEE\u6539\u4E4B\u540E\u9700\u8981\u624B\u52A8\u518D\u540C\u6B65\u4E00\u6B21\uFF09\uFF0C\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u540E\u53EF\u81EA\u5B9A\u4E49\u8C03\u6574\u6A21\u677F\u5B57\u6BB5",paraId:7,tocIndex:2},{value:"\u70B9\u51FB\u590D\u5236\u64CD\u4F5C\u4F1A\u6253\u5F00\u5F39\u7A97\uFF0C\u5E76\u6309\u7167\u6A21\u677F\u5B57\u6BB5\u5E26\u51FA\u6A21\u677F\u6570\u636E\u4F5C\u4E3A\u8868\u5355\u9ED8\u8BA4\u503C\u586B\u5145\uFF0C\u53EF\u4FEE\u6539\u6570\u636E\u540E\u63D0\u4EA4\u5B8C\u6210\u6570\u636E\u590D\u5236",paraId:8,tocIndex:2},{value:"\u5982\u4E0B\u56FE\u5B8C\u6574\u793A\u4F8B\u4E3A\u8BA2\u5355\u5217\u8868\u914D\u7F6E\u590D\u5236\u64CD\u4F5C",paraId:9,tocIndex:2},{value:"\u5BF9\u4E8E\u4E0D\u540C\u5B57\u6BB5\uFF08\u4E0D\u540C\u5173\u7CFB\u7C7B\u578B\uFF09\u6709\u4E0D\u540C\u7684\u5904\u7406\u903B\u8F91\uFF08\u590D\u5236\u3001\u5F15\u7528\u3001\u9884\u52A0\u8F7D\uFF09\uFF0C\u5176\u4E2D\u8C03\u6574\u5173\u7CFB\u5B57\u6BB5\u7684\u5B57\u6BB5\u7EC4\u4EF6\u4E2D\u4E5F\u4F1A\u5F71\u54CD\u5904\u7406\u903B\u8F91\uFF08Select \u548C Record pikcer \u7528\u4E8E\u5904\u7406\u5F15\u7528\u5173\u7CFB\uFF0CSub-form \u548C Sub-table \u7528\u4E8E\u5904\u7406\u590D\u5236\u5173\u7CFB\uFF09",paraId:10,tocIndex:3},{value:"\u590D\u5236",paraId:11,tocIndex:3},{value:"\u666E\u901A\u5B57\u6BB5\u662F\u590D\u5236",paraId:12,tocIndex:3},{value:"hasOne \u548C hasMany \u7684\u5173\u7CFB\u5B57\u6BB5\u53EA\u80FD\u662F\u590D\u5236\uFF08\u5373\u8BE5\u7C7B\u578B\u7684\u5173\u7CFB\u5B57\u6BB5\u4E0D\u80FD\u7528 Select\u3001Record picker \u4F5C\u4E3A\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u5E94\u4F7F\u7528 Sub-form\u3001Sub-table \u7B49\uFF09",paraId:13,tocIndex:3},{value:"hasOne \u548C hasMany \u5B57\u6BB5\u7EC4\u4EF6\u7684\u53D8\u66F4\u4E0D\u4F1A\u6539\u53D8\u5904\u7406\u903B\u8F91\uFF08\u590D\u5236\uFF09",paraId:14,tocIndex:3},{value:"\u590D\u5236\u7684\u5173\u7CFB\u5B57\u6BB5\uFF0C\u6240\u6709\u7684\u5B50\u5B57\u6BB5\u90FD\u53EF\u4EE5\u88AB\u9009\u62E9",paraId:14,tocIndex:3},{value:"\u5F15\u7528",paraId:15,tocIndex:3},{value:"belongsTo \u548C belongsToMany \u662F\u5F15\u7528",paraId:16,tocIndex:3},{value:"\u5F15\u7528\u662F\u53EF\u80FD\u53D8\u6210\u590D\u5236\u7684\uFF0C\u6BD4\u5982\u5B57\u6BB5\u7EC4\u4EF6\u4ECE select \u8C03\u6574\u4E3A sub-form \u540E\uFF0C\u5173\u7CFB\u5C31\u4ECE\u5F15\u7528\u53D8\u6210\u4E86\u590D\u5236\uFF08\u53D8\u6210\u590D\u5236\u4E4B\u540E\uFF0C\u6240\u6709\u7684\u5B50\u5B57\u6BB5\u90FD\u662F\u53EF\u9009\u7684\uFF09",paraId:16,tocIndex:3},{value:"\u9884\u52A0\u8F7D\uFF1A\u5F15\u7528\u5B57\u6BB5\u91CC\u7684\u5173\u7CFB\u5B57\u6BB5",paraId:17,tocIndex:3},{value:"\u5F15\u7528\u7684\u5173\u7CFB\u5B57\u6BB5\u4E0B\u7684\u5173\u7CFB\u5B57\u6BB5\u4E3A\u9884\u52A0\u8F7D",paraId:18,tocIndex:3},{value:"\u9884\u52A0\u8F7D\u7684\u5173\u7CFB\u5B57\u6BB5\u5728\u5B57\u6BB5\u7EC4\u4EF6\u53D8\u66F4\u540E\u53EF\u80FD\u53D8\u6210\u5F15\u7528\u6216\u8005\u590D\u5236",paraId:18,tocIndex:3},{value:"\u6240\u6709\u7684\u590D\u5236\u5B57\u6BB5\u90FD\u52FE\u9009\u4E0A",paraId:19,tocIndex:4},{value:"\u6240\u6709\u7684\u5F15\u7528\u5B57\u6BB5\u90FD\u52FE\u9009\u4E0A",paraId:19,tocIndex:4},{value:"\u6240\u6709\u7684\u5173\u7CFB\u7684 fk \u90FD\u4F1A\u8FC7\u6EE4\u6389",paraId:20,tocIndex:5},{value:"\u5982\u679C\u662F\u590D\u5236\u7684\u5173\u7CFB\u6570\u636E pk \u4E5F\u4F1A\u8FC7\u6EE4\u6389",paraId:20,tocIndex:5},{value:"\u5F15\u7528\u548C\u9884\u52A0\u8F7D\u6709 pk \u5B57\u6BB5",paraId:20,tocIndex:5},{value:"\u5728\u5927\u591A\u6570\u573A\u666F\u4E0B\uFF0C\u8868\u5355\u914D\u7F6E\u6D89\u53CA\u7684\u5B57\u6BB5\u975E\u5E38\u7E41\u591A\u3002\u5728\u5904\u7406\u8FD9\u79CD\u590D\u6742\u8868\u5355\u573A\u666F\u65F6\uFF0C\u624B\u52A8\u914D\u7F6E\u6A21\u677F\u5B57\u6BB5\u901A\u5E38\u4F1A\u53D8\u5F97\u975E\u5E38\u7E41\u7410\u3002\u4E3A\u4E86\u89E3\u51B3\u8FD9\u4E2A\u95EE\u9898\uFF0C\u5F15\u5165\u4E86\u4E00\u4E2A\u529F\u80FD\u5F3A\u5927\u7684\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\u3002\u8FD9\u4E2A\u6309\u94AE\u7684\u4F5C\u7528\u662F\u81EA\u52A8\u89E3\u6790\u8868\u5355\u5B57\u6BB5\u7684\u914D\u7F6E\uFF0C\u6839\u636E\u5B57\u6BB5\u7C7B\u578B\u548C\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u7684\u914D\u7F6E\u6765\u5904\u7406\u5B57\u6BB5\u590D\u5236\u903B\u8F91\uFF0C\u5305\u62EC\u590D\u5236\u3001\u5F15\u7528\u548C\u9884\u52A0\u8F7D\u3002\u5728\u8FD9\u4E2A\u8FC7\u7A0B\u4E2D\uFF0C\u5DF2\u7ECF\u914D\u7F6E\u597D\u7684\u5B57\u6BB5\u4F1A\u9ED8\u8BA4\u88AB\u52FE\u9009\u4E0A",paraId:21,tocIndex:6},{value:"\u6BCF\u5F53\u7528\u6237\u4FEE\u6539\u8868\u5355\u5B57\u6BB5\u914D\u7F6E\u4E4B\u540E\uFF0C\u7CFB\u7EDF\u4E0D\u4F1A\u81EA\u52A8\u540C\u6B65\u8FD9\u4E9B\u53D8\u5316\u3002\u56E0\u6B64\uFF0C\u7528\u6237\u9700\u8981\u624B\u52A8\u70B9\u51FB\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\uFF0C\u4EE5\u4FBF\u5C06\u6700\u65B0\u7684\u914D\u7F6E\u4FE1\u606F\u5E94\u7528\u5230\u6A21\u677F\u914D\u7F6E\u4E2D\u3002",paraId:22,tocIndex:6}],OF={},RF={title:"\u5EF6\u65F6",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/delay.md",lastUpdated:1732240239e3,description:"\u5EF6\u65F6\u8282\u70B9\u53EF\u4EE5\u5728\u6D41\u7A0B\u4E2D\u589E\u52A0\u4E00\u4E2A\u5EF6\u65F6\uFF0C\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u53EF\u6839\u636E\u914D\u7F6E\u662F\u7EE7\u7EED\u6267\u884C\u5EF6\u65F6\u7ED3\u675F\u540E\u7684\u8282\u70B9\u6216\u662F\u63D0\u524D\u7EC8\u6B62\u6D41\u7A0B\u3002"},MF=[{id:"\u5EF6\u65F6",depth:1,title:"\u5EF6\u65F6"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u5EF6\u65F6\u65F6\u95F4",depth:3,title:"\u5EF6\u65F6\u65F6\u95F4"},{id:"\u5230\u65F6\u72B6\u6001",depth:3,title:"\u5230\u65F6\u72B6\u6001"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],LF=[{value:"\u5EF6\u65F6\u8282\u70B9\u53EF\u4EE5\u5728\u6D41\u7A0B\u4E2D\u589E\u52A0\u4E00\u4E2A\u5EF6\u65F6\uFF0C\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u53EF\u6839\u636E\u914D\u7F6E\u662F\u7EE7\u7EED\u6267\u884C\u5EF6\u65F6\u7ED3\u675F\u540E\u7684\u8282\u70B9\u6216\u662F\u63D0\u524D\u7EC8\u6B62\u6D41\u7A0B\u3002",paraId:0,tocIndex:0},{value:"\u901A\u5E38\u914D\u5408\u5E76\u884C\u5206\u652F\u8282\u70B9\u4E00\u8D77\u4F7F\u7528\uFF0C\u53EF\u4EE5\u5728\u5176\u4E2D\u4E00\u4E2A\u5206\u652F\u4E2D\u589E\u52A0\u5EF6\u65F6\u8282\u70B9\uFF0C\u4EE5\u8FBE\u5230\u8D85\u65F6\u540E\u76F8\u5173\u5904\u7406\u7684\u76EE\u7684\u3002\u4F8B\u5982\u5E76\u884C\u5206\u652F\u4E2D\u5176\u4E2D\u4E00\u4E2A\u5206\u652F\u5305\u542B\u4EBA\u5DE5\u5904\u7406\uFF0C\u53E6\u4E00\u4E2A\u5206\u652F\u5305\u542B\u5EF6\u65F6\u8282\u70B9\uFF0C\u5F53\u4EBA\u5DE5\u5904\u7406\u8D85\u65F6\u540E\uFF0C\u5982\u679C\u8BBE\u7F6E\u7684\u662F\u8D85\u65F6\u5931\u8D25\uFF0C\u5219\u4EE3\u8868\u4EBA\u5DE5\u5904\u7406\u5FC5\u987B\u5728\u9650\u5B9A\u65F6\u95F4\u5185\u5B8C\u6210\uFF0C\u5982\u679C\u8BBE\u7F6E\u7684\u662F\u8D85\u65F6\u7EE7\u7EED\uFF0C\u5219\u4EE3\u8868\u5230\u65F6\u95F4\u540E\u53EF\u4EE5\u5FFD\u7565\u8BE5\u4EBA\u5DE5\u5904\u7406\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5EF6\u65F6\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u5EF6\u65F6\u65F6\u95F4\u53EF\u4EE5\u586B\u5199\u4E00\u4E2A\u6570\u5B57\uFF0C\u5E76\u9009\u62E9\u65F6\u95F4\u5355\u4F4D\uFF0C\u652F\u6301\u7684\u65F6\u95F4\u5355\u4F4D\u6709\uFF1A\u79D2\u3001\u5206\u949F\u3001\u5C0F\u65F6\u3001\u5929\u548C\u5468\u3002",paraId:3,tocIndex:3},{value:"\u5230\u65F6\u72B6\u6001\u53EF\u4EE5\u9009\u62E9\u201C\u901A\u8FC7\u5E76\u7EE7\u7EED\u201D\u548C\u201C\u5931\u8D25\u5E76\u9000\u51FA\u201D\uFF0C\u524D\u8005\u4EE3\u8868\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u6D41\u7A0B\u4F1A\u7EE7\u7EED\u6267\u884C\u5EF6\u65F6\u7ED3\u675F\u540E\u7684\u8282\u70B9\uFF0C\u540E\u8005\u4EE3\u8868\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u6D41\u7A0B\u4F1A\u4EE5\u5931\u8D25\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\u3002",paraId:4,tocIndex:4},{value:"\u4EE5\u5DE5\u5355\u53D1\u8D77\u540E\u9700\u8981\u5728\u9650\u65F6\u5185\u7B54\u590D\u7684\u573A\u666F\u4E3A\u4F8B\uFF0C\u6211\u4EEC\u9700\u8981\u5728\u5E76\u884C\u7684\u4E24\u4E2A\u5206\u652F\u4E2D\u5176\u4E00\u6DFB\u52A0\u4E00\u4E2A\u4EBA\u5DE5\u8282\u70B9\uFF0C\u53E6\u4E00\u4E2A\u5206\u652F\u6DFB\u52A0\u5EF6\u65F6\u8282\u70B9\uFF0C\u5982\u679C\u4EBA\u5DE5\u5904\u7406\u672A\u5728 10 \u5206\u949F\u5185\u7B54\u590D\uFF0C\u5219\u66F4\u65B0\u5DE5\u5355\u72B6\u6001\u4E3A\u8D85\u65F6\u672A\u5904\u7406\u3002",paraId:5,tocIndex:5}],NF={},zF={title:"\u6982\u8FF0",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/index.md",lastUpdated:1732240239e3,description:"\u8282\u70B9\u662F\u5DE5\u4F5C\u6D41\u4E2D\u903B\u8F91\u7F16\u6392\u7684\u57FA\u672C\u5355\u5143\uFF0C\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u8282\u70B9\uFF0C\u6BCF\u4E2A\u8282\u70B9\u7684\u7C7B\u578B\u4EE3\u8868\u4E00\u4E2A\u6307\u4EE4\uFF0C\u51B3\u5B9A\u4E86\u8282\u70B9\u7684\u884C\u4E3A\u3002\u8282\u70B9\u7684\u914D\u7F6E\u5373\u5BF9\u5E94\u6307\u4EE4\u7684\u53C2\u6570\uFF0C\u53C2\u6570\u51B3\u5B9A\u5176\u884C\u4E3A\u7684\u64CD\u4F5C\u6570\u636E\u5BF9\u8C61\u6216\u5176\u4ED6\u5185\u5BB9\u3002"},FF=[{id:"\u6982\u8FF0",depth:1,title:"\u6982\u8FF0"}],BF=[{value:"\u8282\u70B9\u662F\u5DE5\u4F5C\u6D41\u4E2D\u903B\u8F91\u7F16\u6392\u7684\u57FA\u672C\u5355\u5143\uFF0C\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u8282\u70B9\uFF0C\u6BCF\u4E2A\u8282\u70B9\u7684\u7C7B\u578B\u4EE3\u8868\u4E00\u4E2A\u6307\u4EE4\uFF0C\u51B3\u5B9A\u4E86\u8282\u70B9\u7684\u884C\u4E3A\u3002\u8282\u70B9\u7684\u914D\u7F6E\u5373\u5BF9\u5E94\u6307\u4EE4\u7684\u53C2\u6570\uFF0C\u53C2\u6570\u51B3\u5B9A\u5176\u884C\u4E3A\u7684\u64CD\u4F5C\u6570\u636E\u5BF9\u8C61\u6216\u5176\u4ED6\u5185\u5BB9\u3002",paraId:0,tocIndex:0},{value:"\u5DE5\u4F5C\u6D41\u7684\u89E6\u53D1\u5668\u4E0D\u5C5E\u4E8E\u8282\u70B9\uFF0C\u53EA\u662F\u4EE5\u5165\u53E3\u8282\u70B9\u7684\u5F62\u5F0F\u5C55\u793A\u5728\u6D41\u7A0B\u56FE\u4E2D\uFF0C\u4F46\u4E0E\u8282\u70B9\u662F\u4E0D\u540C\u7684\u6982\u5FF5\uFF0C\u8BE6\u60C5\u8BF7\u53C2\u8003",paraId:1},{value:"\u89E6\u53D1\u5668",paraId:2},{value:"\u7684\u5185\u5BB9\u3002",paraId:1},{value:"\u4ECE\u529F\u80FD\u89D2\u5EA6\uFF0C\u76EE\u524D\u5DF2\u5B9E\u73B0\u7684\u8282\u70B9\u53EF\u4EE5\u5206\u4E3A\u56DB\u5927\u7C7B\uFF08\u5171 14 \u79CD\u8282\u70B9\uFF09\uFF1A",paraId:3},{value:`\u6D41\u7A0B\u63A7\u5236\u7C7B +`,paraId:5,tocIndex:2},{value:"Markdown",paraId:7,tocIndex:2},{value:"\uFF1A\u7528 Markdown \u4E66\u5199\u7684\u6587\u672C\u5185\u5BB9\u3002",paraId:7,tocIndex:2},{value:"\u64CD\u4F5C\u8BB0\u5F55",paraId:7,tocIndex:2},{value:"\uFF1A\u5C55\u793A\u4E00\u4E2A\u6570\u636E\u8868\u4E2D\u7684\u6240\u6709\u6570\u636E\u7684\u53D8\u66F4\u8BB0\u5F55\uFF0C\u5305\u62EC\u65B0\u5EFA\u3001\u7F16\u8F91\u548C\u5220\u9664\u3002",paraId:7,tocIndex:2},{value:"\u8FDB\u5165\u754C\u9762\u914D\u7F6E\u6A21\u5F0F\uFF0C\u5728\u9875\u9762\u548C\u5F39\u7A97\u5185\u70B9\u51FB Add block \u6309\u94AE\u5373\u53EF\u6DFB\u52A0\u533A\u5757\u3002\u9009\u9879\u5206\u4E3A 4 \u6B65\uFF1A",paraId:8,tocIndex:3},{value:"\u9009\u62E9\u533A\u5757\u7C7B\u578B\uFF1A\u76EE\u524D\u53EF\u7528\u7684\u533A\u5757\u7C7B\u578B\u5305\u62EC\u8868\u683C\u3001\u8868\u5355\u3001\u8BE6\u60C5\u3001\u65E5\u5386\u3001\u770B\u677F\u3001Markdown",paraId:9,tocIndex:3},{value:"\u9009\u62E9 Collection\uFF1A\u6B64\u5904\u4F1A\u5217\u51FA\u6240\u6709\u7684 Collection",paraId:9,tocIndex:3},{value:"\u9009\u62E9\u521B\u5EFA\u65B9\u5F0F\uFF1A\u521B\u5EFA\u7A7A\u767D\u533A\u5757\uFF0C\u6216\u8005\u4ECE\u590D\u5236\u533A\u5757\u6A21\u677F\uFF0C\u6216\u8005\u5F15\u7528\u533A\u5757\u6A21\u677F",paraId:9,tocIndex:3},{value:"\u9009\u62E9\u6A21\u677F\uFF1A\u82E5\u7B2C 3 \u6B65\u9009\u62E9\u4E86\u4ECE\u6A21\u677F\u521B\u5EFA\uFF0C\u5219\u5728\u7B2C 4 \u6B65\u9009\u62E9\u6A21\u677F",paraId:9,tocIndex:3},{value:"\u914D\u7F6E\u533A\u5757\u5305\u62EC\u4E09\u65B9\u9762\u7684\u5185\u5BB9\uFF1A",paraId:10,tocIndex:4},{value:"\u914D\u7F6E\u533A\u5757\u5185\u5BB9",paraId:11,tocIndex:4},{value:"\u914D\u7F6E\u533A\u5757\u64CD\u4F5C",paraId:11,tocIndex:4},{value:"\u914D\u7F6E\u533A\u5757\u5C5E\u6027",paraId:11,tocIndex:4},{value:"\u4EE5\u8868\u683C\u533A\u5757\u4E3A\u4F8B\uFF0C\u533A\u5757\u5185\u5BB9\u662F\u6307\u8868\u683C\u4E2D\u8981\u663E\u793A\u7684\u5217\u3002\u70B9\u51FB Configure columns \u5373\u53EF\u914D\u7F6E\u8981\u663E\u793A\u7684\u5217\uFF1A",paraId:12,tocIndex:5},{value:"\u4EE5\u8868\u683C\u533A\u5757\u4E3A\u4F8B\uFF0C\u6709\u7B5B\u9009\u3001\u6DFB\u52A0\u3001\u5220\u9664\u3001\u67E5\u770B\u3001\u7F16\u8F91\u3001\u81EA\u5B9A\u4E49\u7B49\u64CD\u4F5C\u53EF\u9009\u3002\u70B9\u51FB Configure actions \u6309\u94AE\u53EF\u4EE5\u914D\u7F6E\u64CD\u4F5C\u3002\u5176\u4E2D\uFF0C\u6BCF\u4E2A\u64CD\u4F5C\u6309\u94AE\u90FD\u53EF\u4EE5\u5355\u72EC\u914D\u7F6E\u5C5E\u6027\uFF1A",paraId:13,tocIndex:6},{value:"\u5C06\u5149\u6807\u79FB\u5230\u533A\u5757\u53F3\u4E0A\u89D2\uFF0C\u4F1A\u770B\u5230\u533A\u5757\u914D\u7F6E\u6309\u94AE\u3002\u4EE5\u8868\u683C\u533A\u5757\u4E3A\u4F8B\uFF0C\u53EF\u4EE5\u914D\u7F6E\u7684\u5C5E\u6027\u6709\uFF1A",paraId:14,tocIndex:7},{value:"Block title",paraId:15,tocIndex:7},{value:"Drag & drop sorting",paraId:15,tocIndex:7},{value:"Set the data scope",paraId:15,tocIndex:7},{value:"Set default sorting rules",paraId:15,tocIndex:7},{value:"Records per page",paraId:15,tocIndex:7},{value:"\u9875\u9762\u5185\u65E2\u53EF\u4EE5\u53EA\u653E\u4E00\u4E2A\u533A\u5757\uFF0C\u4E5F\u53EF\u4EE5\u653E\u591A\u4E2A\u533A\u5757\u8FDB\u884C\u7EC4\u5408\u3002\u4F60\u53EF\u4EE5\u901A\u8FC7\u62D6\u62FD\u5B8C\u6210\u533A\u5757\u4F4D\u7F6E\u548C\u5BBD\u5EA6\u7684\u8C03\u6574\u3002",paraId:16,tocIndex:8},{value:"\u4F60\u53EF\u4EE5\u5C06\u4E00\u4E2A\u533A\u5757\u4FDD\u5B58\u4E3A\u6A21\u677F\uFF0C\u4EE5\u540E\u53EF\u4EE5\u590D\u5236\u6216\u5F15\u7528\u8FD9\u4E2A\u6A21\u677F\u3002",paraId:17,tocIndex:9},{value:"\u6BD4\u5982\uFF0C\u4E00\u4E2A\u6570\u636E\u8868\u7684\u8868\u5355\uFF0C\u65E2\u7528\u4E8E\u65B0\u589E\u6570\u636E\uFF0C\u53C8\u7528\u4E8E\u7F16\u8F91\u6570\u636E\uFF0C\u90A3\u5C31\u53EF\u4EE5\u5C06\u8FD9\u4E2A\u8868\u5355\u4FDD\u5B58\u4E3A\u6A21\u677F\uFF0C\u5728\u65B0\u589E\u6570\u636E\u548C\u7F16\u8F91\u6570\u636E\u7684\u754C\u9762\u91CC\u5F15\u7528\u5B83\u3002",paraId:18,tocIndex:9}],AF={},qF={title:"\u590D\u5236",toc:"menu",filename:"docs/en-US/manual/ui/actions/duplicate.md",lastUpdated:173254844e4,description:"\u590D\u5236\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u590D\u5236\u4E00\u884C\u6570\u636E\u4EE5\u4FBF\u4E8E\u521B\u5EFA\u65B0\u7684\u6570\u636E\u8BB0\u5F55\uFF0C\u652F\u6301\u76F4\u63A5\u590D\u5236/\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199\u4E24\u79CD\u65B9\u5F0F"},EF=[{id:"\u590D\u5236",depth:1,title:"\u590D\u5236"},{id:"\u76F4\u63A5\u590D\u5236",depth:4,title:"\u76F4\u63A5\u590D\u5236"},{id:"\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199",depth:4,title:"\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199"},{id:"\u590D\u5236\u5F15\u7528\u9884\u52A0\u8F7D\u7684\u8BF4\u660E",depth:4,title:"\u590D\u5236\u3001\u5F15\u7528\u3001\u9884\u52A0\u8F7D\u7684\u8BF4\u660E"},{id:"\u5173\u4E8E\u5168\u9009",depth:4,title:"\u5173\u4E8E\u5168\u9009"},{id:"\u6A21\u677F\u6570\u636E\u7684\u5904\u7406\u903B\u8F91",depth:4,title:"\u6A21\u677F\u6570\u636E\u7684\u5904\u7406\u903B\u8F91"},{id:"\u5982\u4F55\u7406\u89E3\u540C\u6B65\u8868\u5355\u5B57\u6BB5",depth:4,title:"\u5982\u4F55\u7406\u89E3\u540C\u6B65\u8868\u5355\u5B57\u6BB5"}],DF=[{value:"\u590D\u5236\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u590D\u5236\u4E00\u884C\u6570\u636E\u4EE5\u4FBF\u4E8E\u521B\u5EFA\u65B0\u7684\u6570\u636E\u8BB0\u5F55\uFF0C\u652F\u6301\u76F4\u63A5\u590D\u5236/\u590D\u5236\u5230\u8868\u5355\u5E76\u7EE7\u7EED\u586B\u5199\u4E24\u79CD\u65B9\u5F0F",paraId:0,tocIndex:0},{value:"\u9ED8\u8BA4\u4EE5\u76F4\u63A5\u590D\u5236\u7684\u65B9\u5F0F\u590D\u5236\u6570\u636E",paraId:1,tocIndex:1},{value:"\u76EE\u6807\u6570\u636E\u8868\uFF1A\u662F\u6307\u590D\u5236\u6DFB\u52A0\u7684\u76EE\u6807\u6570\u636E\u8868\uFF08\u5728\u7EE7\u627F\u7684\u573A\u666F\u4E0B\uFF0C\u53EF\u4EE5\u590D\u5236\u7ED9\u5B50\u8868\uFF0C\u76F4\u63A5\u590D\u5236\u53EA\u80FD\u590D\u5236\u6DFB\u52A0\u5230\u672C\u8868\uFF09",paraId:1,tocIndex:1},{value:"\u6A21\u7248\u5B57\u6BB5\uFF1A\u7528\u4E8E\u6307\u5B9A\u8981\u590D\u5236\u7684\u5B57\u6BB5\uFF0C\u53EF\u5168\u9009\uFF0C\u5FC5\u586B",paraId:1,tocIndex:1},{value:"\u5B8C\u6210\u914D\u7F6E\u540E\u70B9\u51FB\u6309\u94AE\u5373\u590D\u5236\u6570\u636E",paraId:2,tocIndex:1},{value:"\u914D\u7F6E\u7684\u6A21\u677F\u5B57\u6BB5\u4F5C\u4E3A\u5C06\u9ED8\u8BA4\u503C\u586B\u5145\u5230\u8868\u5355\u4E2D\uFF0C\u53EF\u4FEE\u6539\u540E\u63D0\u4EA4",paraId:3,tocIndex:2},{value:"\u53EF\u4EE5\u8BBE\u7F6E\u672C\u8868\u6216\u5B50\u8868\u4E3A\u590D\u5236\u6DFB\u52A0\u7684\u76EE\u6807\u8868",paraId:4,tocIndex:2},{value:"\u914D\u7F6E\u6A21\u677F\u5B57\u6BB5\uFF1A\u6A21\u677F\u5B57\u6BB5\u5C06\u4F5C\u4E3A\u9ED8\u8BA4\u503C\u586B\u5145\u5230\u8868\u5355\u4E2D\uFF0C\u53EA\u4F1A\u5E26\u51FA\u6709\u52FE\u9009\u7684\u5B57\u6BB5\u503C",paraId:5,tocIndex:2},{value:"\u300C\u8FD0\u5355\u300D\uFF08o2m\uFF09\u662F\u590D\u5236\u7684\u5173\u7CFB\uFF0C\u8C03\u6574\u5176\u5B57\u6BB5\u7EC4\u4EF6\u4E3A\u5B50\u8868\u5355\uFF0C\u53EF\u914D\u7F6E\u5B50\u8868\u5355\u4E2D\u7684\u5B57\u6BB5",paraId:6,tocIndex:2},{value:"\u540C\u6B65\u8868\u5355\u5B57\u6BB5\uFF1A\u5B8C\u6210\u8868\u5355\u914D\u7F6E\u540E\u53EF\u70B9\u51FB\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\uFF0C\u4F1A\u81EA\u52A8\u89E3\u6790\u5C06\u8868\u5355\u4E2D\u5DF2\u914D\u7F6E\u7684\u5B57\u6BB5\u5747\u52FE\u9009\u4E0A\uFF08\u6BCF\u6B21\u8868\u5355\u5B57\u6BB5\u914D\u7F6E\u4FEE\u6539\u4E4B\u540E\u9700\u8981\u624B\u52A8\u518D\u540C\u6B65\u4E00\u6B21\uFF09\uFF0C\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u540E\u53EF\u81EA\u5B9A\u4E49\u8C03\u6574\u6A21\u677F\u5B57\u6BB5",paraId:7,tocIndex:2},{value:"\u70B9\u51FB\u590D\u5236\u64CD\u4F5C\u4F1A\u6253\u5F00\u5F39\u7A97\uFF0C\u5E76\u6309\u7167\u6A21\u677F\u5B57\u6BB5\u5E26\u51FA\u6A21\u677F\u6570\u636E\u4F5C\u4E3A\u8868\u5355\u9ED8\u8BA4\u503C\u586B\u5145\uFF0C\u53EF\u4FEE\u6539\u6570\u636E\u540E\u63D0\u4EA4\u5B8C\u6210\u6570\u636E\u590D\u5236",paraId:8,tocIndex:2},{value:"\u5982\u4E0B\u56FE\u5B8C\u6574\u793A\u4F8B\u4E3A\u8BA2\u5355\u5217\u8868\u914D\u7F6E\u590D\u5236\u64CD\u4F5C",paraId:9,tocIndex:2},{value:"\u5BF9\u4E8E\u4E0D\u540C\u5B57\u6BB5\uFF08\u4E0D\u540C\u5173\u7CFB\u7C7B\u578B\uFF09\u6709\u4E0D\u540C\u7684\u5904\u7406\u903B\u8F91\uFF08\u590D\u5236\u3001\u5F15\u7528\u3001\u9884\u52A0\u8F7D\uFF09\uFF0C\u5176\u4E2D\u8C03\u6574\u5173\u7CFB\u5B57\u6BB5\u7684\u5B57\u6BB5\u7EC4\u4EF6\u4E2D\u4E5F\u4F1A\u5F71\u54CD\u5904\u7406\u903B\u8F91\uFF08Select \u548C Record pikcer \u7528\u4E8E\u5904\u7406\u5F15\u7528\u5173\u7CFB\uFF0CSub-form \u548C Sub-table \u7528\u4E8E\u5904\u7406\u590D\u5236\u5173\u7CFB\uFF09",paraId:10,tocIndex:3},{value:"\u590D\u5236",paraId:11,tocIndex:3},{value:"\u666E\u901A\u5B57\u6BB5\u662F\u590D\u5236",paraId:12,tocIndex:3},{value:"hasOne \u548C hasMany \u7684\u5173\u7CFB\u5B57\u6BB5\u53EA\u80FD\u662F\u590D\u5236\uFF08\u5373\u8BE5\u7C7B\u578B\u7684\u5173\u7CFB\u5B57\u6BB5\u4E0D\u80FD\u7528 Select\u3001Record picker \u4F5C\u4E3A\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u5E94\u4F7F\u7528 Sub-form\u3001Sub-table \u7B49\uFF09",paraId:13,tocIndex:3},{value:"hasOne \u548C hasMany \u5B57\u6BB5\u7EC4\u4EF6\u7684\u53D8\u66F4\u4E0D\u4F1A\u6539\u53D8\u5904\u7406\u903B\u8F91\uFF08\u590D\u5236\uFF09",paraId:14,tocIndex:3},{value:"\u590D\u5236\u7684\u5173\u7CFB\u5B57\u6BB5\uFF0C\u6240\u6709\u7684\u5B50\u5B57\u6BB5\u90FD\u53EF\u4EE5\u88AB\u9009\u62E9",paraId:14,tocIndex:3},{value:"\u5F15\u7528",paraId:15,tocIndex:3},{value:"belongsTo \u548C belongsToMany \u662F\u5F15\u7528",paraId:16,tocIndex:3},{value:"\u5F15\u7528\u662F\u53EF\u80FD\u53D8\u6210\u590D\u5236\u7684\uFF0C\u6BD4\u5982\u5B57\u6BB5\u7EC4\u4EF6\u4ECE select \u8C03\u6574\u4E3A sub-form \u540E\uFF0C\u5173\u7CFB\u5C31\u4ECE\u5F15\u7528\u53D8\u6210\u4E86\u590D\u5236\uFF08\u53D8\u6210\u590D\u5236\u4E4B\u540E\uFF0C\u6240\u6709\u7684\u5B50\u5B57\u6BB5\u90FD\u662F\u53EF\u9009\u7684\uFF09",paraId:16,tocIndex:3},{value:"\u9884\u52A0\u8F7D\uFF1A\u5F15\u7528\u5B57\u6BB5\u91CC\u7684\u5173\u7CFB\u5B57\u6BB5",paraId:17,tocIndex:3},{value:"\u5F15\u7528\u7684\u5173\u7CFB\u5B57\u6BB5\u4E0B\u7684\u5173\u7CFB\u5B57\u6BB5\u4E3A\u9884\u52A0\u8F7D",paraId:18,tocIndex:3},{value:"\u9884\u52A0\u8F7D\u7684\u5173\u7CFB\u5B57\u6BB5\u5728\u5B57\u6BB5\u7EC4\u4EF6\u53D8\u66F4\u540E\u53EF\u80FD\u53D8\u6210\u5F15\u7528\u6216\u8005\u590D\u5236",paraId:18,tocIndex:3},{value:"\u6240\u6709\u7684\u590D\u5236\u5B57\u6BB5\u90FD\u52FE\u9009\u4E0A",paraId:19,tocIndex:4},{value:"\u6240\u6709\u7684\u5F15\u7528\u5B57\u6BB5\u90FD\u52FE\u9009\u4E0A",paraId:19,tocIndex:4},{value:"\u6240\u6709\u7684\u5173\u7CFB\u7684 fk \u90FD\u4F1A\u8FC7\u6EE4\u6389",paraId:20,tocIndex:5},{value:"\u5982\u679C\u662F\u590D\u5236\u7684\u5173\u7CFB\u6570\u636E pk \u4E5F\u4F1A\u8FC7\u6EE4\u6389",paraId:20,tocIndex:5},{value:"\u5F15\u7528\u548C\u9884\u52A0\u8F7D\u6709 pk \u5B57\u6BB5",paraId:20,tocIndex:5},{value:"\u5728\u5927\u591A\u6570\u573A\u666F\u4E0B\uFF0C\u8868\u5355\u914D\u7F6E\u6D89\u53CA\u7684\u5B57\u6BB5\u975E\u5E38\u7E41\u591A\u3002\u5728\u5904\u7406\u8FD9\u79CD\u590D\u6742\u8868\u5355\u573A\u666F\u65F6\uFF0C\u624B\u52A8\u914D\u7F6E\u6A21\u677F\u5B57\u6BB5\u901A\u5E38\u4F1A\u53D8\u5F97\u975E\u5E38\u7E41\u7410\u3002\u4E3A\u4E86\u89E3\u51B3\u8FD9\u4E2A\u95EE\u9898\uFF0C\u5F15\u5165\u4E86\u4E00\u4E2A\u529F\u80FD\u5F3A\u5927\u7684\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\u3002\u8FD9\u4E2A\u6309\u94AE\u7684\u4F5C\u7528\u662F\u81EA\u52A8\u89E3\u6790\u8868\u5355\u5B57\u6BB5\u7684\u914D\u7F6E\uFF0C\u6839\u636E\u5B57\u6BB5\u7C7B\u578B\u548C\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u7684\u914D\u7F6E\u6765\u5904\u7406\u5B57\u6BB5\u590D\u5236\u903B\u8F91\uFF0C\u5305\u62EC\u590D\u5236\u3001\u5F15\u7528\u548C\u9884\u52A0\u8F7D\u3002\u5728\u8FD9\u4E2A\u8FC7\u7A0B\u4E2D\uFF0C\u5DF2\u7ECF\u914D\u7F6E\u597D\u7684\u5B57\u6BB5\u4F1A\u9ED8\u8BA4\u88AB\u52FE\u9009\u4E0A",paraId:21,tocIndex:6},{value:"\u6BCF\u5F53\u7528\u6237\u4FEE\u6539\u8868\u5355\u5B57\u6BB5\u914D\u7F6E\u4E4B\u540E\uFF0C\u7CFB\u7EDF\u4E0D\u4F1A\u81EA\u52A8\u540C\u6B65\u8FD9\u4E9B\u53D8\u5316\u3002\u56E0\u6B64\uFF0C\u7528\u6237\u9700\u8981\u624B\u52A8\u70B9\u51FB\u540C\u6B65\u8868\u5355\u5B57\u6BB5\u6309\u94AE\uFF0C\u4EE5\u4FBF\u5C06\u6700\u65B0\u7684\u914D\u7F6E\u4FE1\u606F\u5E94\u7528\u5230\u6A21\u677F\u914D\u7F6E\u4E2D\u3002",paraId:22,tocIndex:6}],OF={},RF={title:"\u5EF6\u65F6",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/delay.md",lastUpdated:173254844e4,description:"\u5EF6\u65F6\u8282\u70B9\u53EF\u4EE5\u5728\u6D41\u7A0B\u4E2D\u589E\u52A0\u4E00\u4E2A\u5EF6\u65F6\uFF0C\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u53EF\u6839\u636E\u914D\u7F6E\u662F\u7EE7\u7EED\u6267\u884C\u5EF6\u65F6\u7ED3\u675F\u540E\u7684\u8282\u70B9\u6216\u662F\u63D0\u524D\u7EC8\u6B62\u6D41\u7A0B\u3002"},MF=[{id:"\u5EF6\u65F6",depth:1,title:"\u5EF6\u65F6"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u5EF6\u65F6\u65F6\u95F4",depth:3,title:"\u5EF6\u65F6\u65F6\u95F4"},{id:"\u5230\u65F6\u72B6\u6001",depth:3,title:"\u5230\u65F6\u72B6\u6001"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],LF=[{value:"\u5EF6\u65F6\u8282\u70B9\u53EF\u4EE5\u5728\u6D41\u7A0B\u4E2D\u589E\u52A0\u4E00\u4E2A\u5EF6\u65F6\uFF0C\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u53EF\u6839\u636E\u914D\u7F6E\u662F\u7EE7\u7EED\u6267\u884C\u5EF6\u65F6\u7ED3\u675F\u540E\u7684\u8282\u70B9\u6216\u662F\u63D0\u524D\u7EC8\u6B62\u6D41\u7A0B\u3002",paraId:0,tocIndex:0},{value:"\u901A\u5E38\u914D\u5408\u5E76\u884C\u5206\u652F\u8282\u70B9\u4E00\u8D77\u4F7F\u7528\uFF0C\u53EF\u4EE5\u5728\u5176\u4E2D\u4E00\u4E2A\u5206\u652F\u4E2D\u589E\u52A0\u5EF6\u65F6\u8282\u70B9\uFF0C\u4EE5\u8FBE\u5230\u8D85\u65F6\u540E\u76F8\u5173\u5904\u7406\u7684\u76EE\u7684\u3002\u4F8B\u5982\u5E76\u884C\u5206\u652F\u4E2D\u5176\u4E2D\u4E00\u4E2A\u5206\u652F\u5305\u542B\u4EBA\u5DE5\u5904\u7406\uFF0C\u53E6\u4E00\u4E2A\u5206\u652F\u5305\u542B\u5EF6\u65F6\u8282\u70B9\uFF0C\u5F53\u4EBA\u5DE5\u5904\u7406\u8D85\u65F6\u540E\uFF0C\u5982\u679C\u8BBE\u7F6E\u7684\u662F\u8D85\u65F6\u5931\u8D25\uFF0C\u5219\u4EE3\u8868\u4EBA\u5DE5\u5904\u7406\u5FC5\u987B\u5728\u9650\u5B9A\u65F6\u95F4\u5185\u5B8C\u6210\uFF0C\u5982\u679C\u8BBE\u7F6E\u7684\u662F\u8D85\u65F6\u7EE7\u7EED\uFF0C\u5219\u4EE3\u8868\u5230\u65F6\u95F4\u540E\u53EF\u4EE5\u5FFD\u7565\u8BE5\u4EBA\u5DE5\u5904\u7406\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5EF6\u65F6\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u5EF6\u65F6\u65F6\u95F4\u53EF\u4EE5\u586B\u5199\u4E00\u4E2A\u6570\u5B57\uFF0C\u5E76\u9009\u62E9\u65F6\u95F4\u5355\u4F4D\uFF0C\u652F\u6301\u7684\u65F6\u95F4\u5355\u4F4D\u6709\uFF1A\u79D2\u3001\u5206\u949F\u3001\u5C0F\u65F6\u3001\u5929\u548C\u5468\u3002",paraId:3,tocIndex:3},{value:"\u5230\u65F6\u72B6\u6001\u53EF\u4EE5\u9009\u62E9\u201C\u901A\u8FC7\u5E76\u7EE7\u7EED\u201D\u548C\u201C\u5931\u8D25\u5E76\u9000\u51FA\u201D\uFF0C\u524D\u8005\u4EE3\u8868\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u6D41\u7A0B\u4F1A\u7EE7\u7EED\u6267\u884C\u5EF6\u65F6\u7ED3\u675F\u540E\u7684\u8282\u70B9\uFF0C\u540E\u8005\u4EE3\u8868\u5EF6\u65F6\u7ED3\u675F\u540E\uFF0C\u6D41\u7A0B\u4F1A\u4EE5\u5931\u8D25\u72B6\u6001\u63D0\u524D\u7EC8\u6B62\u3002",paraId:4,tocIndex:4},{value:"\u4EE5\u5DE5\u5355\u53D1\u8D77\u540E\u9700\u8981\u5728\u9650\u65F6\u5185\u7B54\u590D\u7684\u573A\u666F\u4E3A\u4F8B\uFF0C\u6211\u4EEC\u9700\u8981\u5728\u5E76\u884C\u7684\u4E24\u4E2A\u5206\u652F\u4E2D\u5176\u4E00\u6DFB\u52A0\u4E00\u4E2A\u4EBA\u5DE5\u8282\u70B9\uFF0C\u53E6\u4E00\u4E2A\u5206\u652F\u6DFB\u52A0\u5EF6\u65F6\u8282\u70B9\uFF0C\u5982\u679C\u4EBA\u5DE5\u5904\u7406\u672A\u5728 10 \u5206\u949F\u5185\u7B54\u590D\uFF0C\u5219\u66F4\u65B0\u5DE5\u5355\u72B6\u6001\u4E3A\u8D85\u65F6\u672A\u5904\u7406\u3002",paraId:5,tocIndex:5}],NF={},zF={title:"\u6982\u8FF0",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/index.md",lastUpdated:173254844e4,description:"\u8282\u70B9\u662F\u5DE5\u4F5C\u6D41\u4E2D\u903B\u8F91\u7F16\u6392\u7684\u57FA\u672C\u5355\u5143\uFF0C\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u8282\u70B9\uFF0C\u6BCF\u4E2A\u8282\u70B9\u7684\u7C7B\u578B\u4EE3\u8868\u4E00\u4E2A\u6307\u4EE4\uFF0C\u51B3\u5B9A\u4E86\u8282\u70B9\u7684\u884C\u4E3A\u3002\u8282\u70B9\u7684\u914D\u7F6E\u5373\u5BF9\u5E94\u6307\u4EE4\u7684\u53C2\u6570\uFF0C\u53C2\u6570\u51B3\u5B9A\u5176\u884C\u4E3A\u7684\u64CD\u4F5C\u6570\u636E\u5BF9\u8C61\u6216\u5176\u4ED6\u5185\u5BB9\u3002"},FF=[{id:"\u6982\u8FF0",depth:1,title:"\u6982\u8FF0"}],BF=[{value:"\u8282\u70B9\u662F\u5DE5\u4F5C\u6D41\u4E2D\u903B\u8F91\u7F16\u6392\u7684\u57FA\u672C\u5355\u5143\uFF0C\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u8282\u70B9\uFF0C\u6BCF\u4E2A\u8282\u70B9\u7684\u7C7B\u578B\u4EE3\u8868\u4E00\u4E2A\u6307\u4EE4\uFF0C\u51B3\u5B9A\u4E86\u8282\u70B9\u7684\u884C\u4E3A\u3002\u8282\u70B9\u7684\u914D\u7F6E\u5373\u5BF9\u5E94\u6307\u4EE4\u7684\u53C2\u6570\uFF0C\u53C2\u6570\u51B3\u5B9A\u5176\u884C\u4E3A\u7684\u64CD\u4F5C\u6570\u636E\u5BF9\u8C61\u6216\u5176\u4ED6\u5185\u5BB9\u3002",paraId:0,tocIndex:0},{value:"\u5DE5\u4F5C\u6D41\u7684\u89E6\u53D1\u5668\u4E0D\u5C5E\u4E8E\u8282\u70B9\uFF0C\u53EA\u662F\u4EE5\u5165\u53E3\u8282\u70B9\u7684\u5F62\u5F0F\u5C55\u793A\u5728\u6D41\u7A0B\u56FE\u4E2D\uFF0C\u4F46\u4E0E\u8282\u70B9\u662F\u4E0D\u540C\u7684\u6982\u5FF5\uFF0C\u8BE6\u60C5\u8BF7\u53C2\u8003",paraId:1},{value:"\u89E6\u53D1\u5668",paraId:2},{value:"\u7684\u5185\u5BB9\u3002",paraId:1},{value:"\u4ECE\u529F\u80FD\u89D2\u5EA6\uFF0C\u76EE\u524D\u5DF2\u5B9E\u73B0\u7684\u8282\u70B9\u53EF\u4EE5\u5206\u4E3A\u56DB\u5927\u7C7B\uFF08\u5171 14 \u79CD\u8282\u70B9\uFF09\uFF1A",paraId:3},{value:`\u6D41\u7A0B\u63A7\u5236\u7C7B `,paraId:4},{value:"\u6761\u4EF6\u5224\u65AD",paraId:5},{value:"\u8FD0\u7B97",paraId:6},{value:"\u52A8\u6001\u8868\u8FBE\u5F0F\u8FD0\u7B97",paraId:7},{value:"\u5FAA\u73AF",paraId:8},{value:"\u5E76\u884C\u5206\u652F",paraId:9},{value:"\u5EF6\u65F6",paraId:10},{value:`\u6570\u636E\u8868\u64CD\u4F5C `,paraId:4},{value:"\u65B0\u589E\u6570\u636E",paraId:11},{value:"\u66F4\u65B0\u6570\u636E",paraId:12},{value:"\u5220\u9664\u6570\u636E",paraId:13},{value:"\u67E5\u8BE2\u6570\u636E",paraId:14},{value:"\u805A\u5408\u67E5\u8BE2",paraId:15},{value:"SQL \u64CD\u4F5C",paraId:16},{value:`\u4EBA\u5DE5\u5904\u7406 `,paraId:4},{value:"\u4EBA\u5DE5\u5904\u7406",paraId:17},{value:`\u5916\u90E8\u8C03\u7528 -`,paraId:4},{value:"HTTP \u8BF7\u6C42",paraId:18}],jF={},HF={title:"\u67E5\u8BE2\u6570\u636E",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/query.md",lastUpdated:1732240239e3,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u67E5\u8BE2\u5E76\u83B7\u53D6\u6570\u636E\u8BB0\u5F55\u3002"},WF=[{id:"\u67E5\u8BE2\u6570\u636E",depth:1,title:"\u67E5\u8BE2\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u67E5\u8BE2\u6A21\u5F0F",depth:3,title:"\u67E5\u8BE2\u6A21\u5F0F"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u6392\u5E8F",depth:3,title:"\u6392\u5E8F"},{id:"\u5206\u9875",depth:3,title:"\u5206\u9875"},{id:"\u7ED3\u679C\u4E3A\u7A7A\u7684\u5904\u7406",depth:3,title:"\u7ED3\u679C\u4E3A\u7A7A\u7684\u5904\u7406"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],$F=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u67E5\u8BE2\u5E76\u83B7\u53D6\u6570\u636E\u8BB0\u5F55\u3002",paraId:0,tocIndex:0},{value:"\u53EF\u4EE5\u914D\u7F6E\u67E5\u8BE2\u5355\u6761\u6570\u636E\u6216\u591A\u6761\u6570\u636E\uFF0C\u67E5\u8BE2\u7ED3\u679C\u53EF\u4EE5\u4F5C\u4E3A\u53D8\u91CF\u5728\u540E\u7EED\u8282\u70B9\u4F7F\u7528\u3002\u5F53\u67E5\u8BE2\u591A\u6761\u6570\u636E\u65F6\uFF0C\u67E5\u8BE2\u7ED3\u679C\u4E3A\u4E00\u4E2A\u6570\u7EC4\u3002\u5F53\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A\u65F6\uFF0C\u53EF\u4EE5\u9009\u62E9\u662F\u5426\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u8282\u70B9\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u67E5\u8BE2\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u9009\u62E9\u8981\u67E5\u8BE2\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:3,tocIndex:3},{value:"\u52FE\u9009\u201C\u5141\u8BB8\u7ED3\u679C\u662F\u591A\u6761\u6570\u636E\u201D\u540E\uFF0C\u5C06\u4F1A\u67E5\u8BE2\u51FA\u6EE1\u8DB3\u6761\u4EF6\u7684\u6240\u6709\u6570\u636E\uFF0C\u5426\u5219\u53EA\u4F1A\u67E5\u8BE2\u51FA\u6EE1\u8DB3\u6761\u4EF6\u7684\u7B2C\u4E00\u6761\u6570\u636E\u3002\u5982\u679C\u52FE\u9009\u4E86\u201C\u5141\u8BB8\u7ED3\u679C\u662F\u591A\u6761\u6570\u636E\u201D\uFF0C\u5219\u67E5\u8BE2\u8282\u70B9\u7684\u7ED3\u679C\u4F1A\u662F\u4E00\u4E2A\u6570\u7EC4\u7C7B\u578B\u3002",paraId:4,tocIndex:4},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:5,tocIndex:5},{value:"\u67E5\u8BE2\u4E00\u6761\u6216\u591A\u6761\u6570\u636E\u65F6\u5747\u53EF\u901A\u8FC7\u6392\u5E8F\u89C4\u5219\u6765\u63A7\u5236\u9700\u8981\u7684\u7ED3\u679C\u3002\u4F8B\u5982\u67E5\u8BE2\u6700\u65B0\u7684\u4E00\u6761\u6570\u636E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u201C\u521B\u5EFA\u65F6\u95F4\u201D\u5B57\u6BB5\u964D\u5E8F\u6392\u5E8F\u3002",paraId:6,tocIndex:6},{value:"\u5F53\u7ED3\u679C\u96C6\u53EF\u80FD\u4F1A\u5F88\u5927\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5206\u9875\u6765\u63A7\u5236\u67E5\u8BE2\u7ED3\u679C\u7684\u6570\u91CF\u3002\u4F8B\u5982\u67E5\u8BE2\u6700\u65B0\u7684 10 \u6761\u6570\u636E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u201C\u521B\u5EFA\u65F6\u95F4\u201D\u5B57\u6BB5\u964D\u5E8F\u6392\u5E8F\uFF0C\u7136\u540E\u8BBE\u7F6E\u5206\u9875\u4E3A 1 \u9875 10 \u6761\u6570\u636E\u3002",paraId:7,tocIndex:7},{value:"\u5728\u5355\u6761\u7ED3\u679C\u6A21\u5F0F\u4E0B\uFF0C\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6570\u636E\u7684\u8BDD\u67E5\u8BE2\u7ED3\u679C\u4F1A\u662F ",paraId:8,tocIndex:8},{value:"null",paraId:8,tocIndex:8},{value:"\uFF0C\u591A\u6761\u7ED3\u679C\u7684\u6A21\u5F0F\u4E0B\u662F\u7A7A\u6570\u7EC4\uFF08",paraId:8,tocIndex:8},{value:"[]",paraId:8,tocIndex:8},{value:"\uFF09\u3002\u53EF\u4EE5\u6839\u636E\u9700\u8981\u662F\u5426\u52FE\u9009\u201C\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A\u662F\uFF0C\u9000\u51FA\u6D41\u7A0B\u201D\uFF0C\u52FE\u9009\u540E\uFF0C\u5982\u679C\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A\uFF0C\u5219\u4E0D\u4F1A\u6267\u884C\u540E\u7EED\u8282\u70B9\uFF0C\u4EE5\u5931\u8D25\u7684\u72B6\u6001\u63D0\u524D\u9000\u51FA\u3002",paraId:8,tocIndex:8},{value:"TODO",paraId:9,tocIndex:9}],GF={},VF={title:"Explanation",toc:"menu",filename:"docs/en-US/plugin-samples/router/index.md",lastUpdated:1732240239e3,description:"NocoBase's frontend pages currently include the following page routes:"},KF=[{id:"explanation",depth:1,title:"Explanation"}],ZF=[{value:"NocoBase's frontend pages currently include the following ",paraId:0,tocIndex:0},{value:"page routes",paraId:1,tocIndex:0},{value:":",paraId:0,tocIndex:0},{value:"Name",paraId:2,tocIndex:0},{value:"Path",paraId:2,tocIndex:0},{value:"Component",paraId:2,tocIndex:0},{value:"Description",paraId:2,tocIndex:0},{value:"admin",paraId:2,tocIndex:0},{value:"/admin/*",paraId:2,tocIndex:0},{value:"AdminLayout",paraId:2,tocIndex:0},{value:"Backend management page",paraId:2,tocIndex:0},{value:"admin.page",paraId:2,tocIndex:0},{value:"/admin/:name",paraId:2,tocIndex:0},{value:"AdminDynamicPage",paraId:2,tocIndex:0},{value:"Dynamically created page",paraId:2,tocIndex:0},{value:"admin.settings",paraId:2,tocIndex:0},{value:"/admin/settings/*",paraId:2,tocIndex:0},{value:"AdminSettingsLayout",paraId:2,tocIndex:0},{value:"Plugin configuration page",paraId:2,tocIndex:0},{value:"admin.pm.list",paraId:2,tocIndex:0},{value:"/admin/pm/list/*",paraId:2,tocIndex:0},{value:"PluginManager",paraId:2,tocIndex:0},{value:"Plugin management page",paraId:2,tocIndex:0},{value:"However, these pages may not meet all requirements, for example:",paraId:3,tocIndex:0},{value:"add",paraId:4,tocIndex:0},{value:"Add a new page for frontend display only, such as ",paraId:5,tocIndex:0},{value:"/about",paraId:5,tocIndex:0},{value:", to show information about the website.",paraId:5,tocIndex:0},{value:"Extend a new page under ",paraId:5,tocIndex:0},{value:"/admin/*",paraId:5,tocIndex:0},{value:", which requires login to access.",paraId:5,tocIndex:0},{value:"Add a configuration page for a newly added plugin.",paraId:5,tocIndex:0},{value:"change",paraId:6,tocIndex:0},{value:"Completely replace an existing page, for example, customize the login page instead of using the default one.",paraId:7,tocIndex:0},{value:"Modify the layout of an existing page, for example, modify the layout of ",paraId:7,tocIndex:0},{value:"/admin/*",paraId:7,tocIndex:0},{value:" without the top menu bar.",paraId:7,tocIndex:0},{value:"delete",paraId:8,tocIndex:0},{value:"For example, if we no longer need a registered page, we can delete it.",paraId:9,tocIndex:0},{value:"To address the above scenarios, we can use NocoBase's frontend router extension feature. We provide the following examples:",paraId:10,tocIndex:0},{value:"Add Page",paraId:11,tocIndex:0},{value:" (Add a new page)",paraId:12,tocIndex:0},{value:"Replace Page",paraId:13,tocIndex:0},{value:" (Modify a page)",paraId:12,tocIndex:0},{value:"Add Plugin Setting Page (Single Route)",paraId:14,tocIndex:0},{value:" (Plugin configuration page - single route)",paraId:12,tocIndex:0},{value:"Add Plugin Setting Page (Tabs Routes)",paraId:15,tocIndex:0},{value:" (Plugin configuration page - tabs routes)",paraId:12,tocIndex:0},{value:"Add Plugin Setting Page (different Routes)",paraId:16,tocIndex:0},{value:" (Plugin configuration page - different layouts)",paraId:12,tocIndex:0}],YF={},QF={title:"\u8BA1\u7B97\u516C\u5F0F\u5B57\u6BB5",toc:"menu",filename:"docs/en-US/plugins/formula-field/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},JF=[{id:"\u8BA1\u7B97\u516C\u5F0F\u5B57\u6BB5",depth:1,title:"\u8BA1\u7B97\u516C\u5F0F\u5B57\u6BB5"}],XF=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],eB={},aB={title:"\u79FB\u52A8\u7AEF",toc:"menu",filename:"docs/en-US/plugins/mobile-client/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},tB=[{id:"\u79FB\u52A8\u7AEF",depth:1,title:"\u79FB\u52A8\u7AEF"}],nB=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],oB={},rB={title:"Sign in with Google",toc:"menu",filename:"docs/en-US/plugins/oidc/example/google.md",lastUpdated:1732240239e3,description:"https://developers.google.com/identity/openid-connect/openid-connect"},dB=[{id:"sign-in-with-google",depth:1,title:"Sign in with Google"},{id:"\u83B7\u53D6-google-oauth-20-\u51ED\u636E",depth:2,title:"\u83B7\u53D6 Google OAuth 2.0 \u51ED\u636E"},{id:"\u5728-nocobase-\u4E0A\u65B0\u589E\u8BA4\u8BC1\u5668",depth:2,title:"\u5728 NocoBase \u4E0A\u65B0\u589E\u8BA4\u8BC1\u5668"}],iB=[{value:"https://developers.google.com/identity/openid-connect/openid-connect",paraId:0,tocIndex:0},{value:"Google Cloud\u63A7\u5236\u53F0",paraId:1,tocIndex:1},{value:" - \u521B\u5EFA\u51ED\u636E - OAuth\u5BA2\u6237\u7AEFID",paraId:1,tocIndex:1},{value:"\u8FDB\u5165\u5230\u914D\u7F6E\u754C\u9762\uFF0C\u586B\u5199\u6388\u6743\u91CD\u5B9A\u5411 URL. \u91CD\u5B9A\u5411 URL \u53EF\u4EE5\u5728 Nocobase\uFF0C\u65B0\u589E\u8BA4\u8BC1\u5668\u65F6\u83B7\u53D6\uFF0C\u901A\u5E38\u60C5\u51B5\u4E0B\u4E3A ",paraId:2,tocIndex:1},{value:"http(s)://host:port/api/oidc:redirect",paraId:2,tocIndex:1},{value:". \u89C1",paraId:2,tocIndex:1},{value:"\u4F7F\u7528\u624B\u518C - \u914D\u7F6E",paraId:3,tocIndex:1},{value:"\u90E8\u5206\u3002",paraId:2,tocIndex:1},{value:"\u63D2\u4EF6\u8BBE\u7F6E - \u7528\u6237\u8BA4\u8BC1 - \u6DFB\u52A0 - OIDC",paraId:4,tocIndex:2},{value:"\u53C2\u8003\u914D",paraId:5,tocIndex:2},{value:"\u4F7F\u7528\u624B\u518C - \u914D\u7F6E",paraId:6,tocIndex:2},{value:"\u4E2D\u4ECB\u7ECD\u7684\u53C2\u6570\uFF0C\u5B8C\u6210\u8BA4\u8BC1\u5668\u914D\u7F6E\u5373\u53EF\u3002",paraId:5,tocIndex:2}],lB={},cB={title:"Google Workspace",toc:"menu",filename:"docs/en-US/plugins/saml/example/google.md",lastUpdated:1732240239e3,description:"Google\u7BA1\u7406\u63A7\u5236 - \u5E94\u7528 - Web\u5E94\u7528\u548C\u79FB\u52A8\u5E94\u7528"},sB=[{id:"google-workspace",depth:1,title:"Google Workspace"},{id:"\u5C06-google-\u8BBE\u7F6E\u4E3A-idp",depth:2,title:"\u5C06 Google \u8BBE\u7F6E\u4E3A IdP"},{id:"\u5728-nocobase-\u4E0A\u65B0\u589E\u8BA4\u8BC1\u5668",depth:2,title:"\u5728 NocoBase \u4E0A\u65B0\u589E\u8BA4\u8BC1\u5668"},{id:"\u5728-google-\u4E0A\u586B\u5199-sp-\u4FE1\u606F",depth:2,title:"\u5728 Google \u4E0A\u586B\u5199 SP \u4FE1\u606F"}],uB=[{value:"Google\u7BA1\u7406\u63A7\u5236",paraId:0,tocIndex:1},{value:" - \u5E94\u7528 - Web\u5E94\u7528\u548C\u79FB\u52A8\u5E94\u7528",paraId:0,tocIndex:1},{value:"\u8FDB\u884C\u5E94\u7528\u8BBE\u7F6E\u4E4B\u540E\uFF0C\u590D\u5236 ",paraId:1,tocIndex:1},{value:"SSO\u7F51\u5740",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"\u5B9E\u4F53ID",paraId:1,tocIndex:1},{value:" \u548C",paraId:1,tocIndex:1},{value:"\u8BC1\u4E66",paraId:1,tocIndex:1},{value:"\u3002",paraId:1,tocIndex:1},{value:"\u63D2\u4EF6\u8BBE\u7F6E - \u7528\u6237\u8BA4\u8BC1 - \u6DFB\u52A0 - SAML",paraId:2,tocIndex:2},{value:"\u5C06\u521A\u624D\u590D\u5236\u7684\u4FE1\u606F\u4F9D\u6B21\u8FDB\u884C\u586B\u5199",paraId:3,tocIndex:2},{value:"SSO URL: SSO\u7F51\u5740",paraId:4,tocIndex:2},{value:"Public Certificate: \u8BC1\u4E66",paraId:4,tocIndex:2},{value:"idP Issuer: Entity ID (\u5B9E\u4F53id)",paraId:4,tocIndex:2},{value:"http: \u5982\u679C\u662F\u5728\u672C\u5730http\u6D4B\u8BD5\uFF0C\u52FE\u9009",paraId:4,tocIndex:2},{value:"\u4E4B\u540E\u590D\u5236 Usage \u4E2D\u7684 SP Issuer/EntityID \u548C ACS URL.",paraId:5,tocIndex:2},{value:"\u56DE\u5230Google\u63A7\u5236\u53F0\uFF0C\u5728",paraId:6,tocIndex:3},{value:"\u670D\u52A1\u63D0\u4F9B\u5546\u8BE6\u7EC6\u4FE1\u606F",paraId:6,tocIndex:3},{value:"\u9875\u9762\uFF0C\u8F93\u5165\u521A\u624D\u590D\u5236\u7684 ACS \u7F51\u5740\u548C\u5B9E\u4F53 ID\uFF0C\u5E76\u52FE\u9009",paraId:6,tocIndex:3},{value:"\u5DF2\u7B7E\u7F72\u54CD\u5E94",paraId:6,tocIndex:3},{value:"\u3002",paraId:6,tocIndex:3},{value:"\u5728",paraId:7,tocIndex:3},{value:"\u5C5E\u6027\u6620\u5C04",paraId:7,tocIndex:3},{value:"\u4F4D\u7F6E\uFF0C\u6DFB\u52A0\u6620\u5C04\uFF0C\u53EF\u4EE5\u6620\u5C04\u5BF9\u5E94\u5C5E\u6027\u3002",paraId:7,tocIndex:3}],pB={},IB={title:"Workflow Loop",toc:"menu",filename:"docs/en-US/plugins/workflow-loop/index.md",lastUpdated:1732240239e3},_B=[],vB=[],mB={},hB={title:"Environment Variables",toc:"menu",filename:"docs/en-US/welcome/getting-started/env.md",lastUpdated:1732240239e3,description:"Saved in the .env file"},fB=[{id:"environment-variables",depth:1,title:"Environment Variables"},{id:"global-environment-variables",depth:2,title:"Global Environment Variables"},{id:"tz",depth:3,title:"TZ"},{id:"app_env",depth:3,title:"APP_ENV"},{id:"app_host",depth:3,title:"APP_HOST"},{id:"app_port",depth:3,title:"APP_PORT"},{id:"app_key",depth:3,title:"APP_KEY"},{id:"api_base_path",depth:3,title:"API_BASE_PATH"},{id:"plugin_package_prefix",depth:3,title:"PLUGIN_PACKAGE_PREFIX"},{id:"db_dialect",depth:3,title:"DB_DIALECT"},{id:"db_storage",depth:3,title:"DB_STORAGE"},{id:"db_host",depth:3,title:"DB_HOST"},{id:"db_port",depth:3,title:"DB_PORT"},{id:"db_database",depth:3,title:"DB_DATABASE"},{id:"db_user",depth:3,title:"DB_USER"},{id:"db_password",depth:3,title:"DB_PASSWORD"},{id:"db_table_prefix",depth:3,title:"DB_TABLE_PREFIX"},{id:"db_logging",depth:3,title:"DB_LOGGING"},{id:"logger_transport",depth:3,title:"LOGGER_TRANSPORT"},{id:"logger_base_path",depth:3,title:"LOGGER_BASE_PATH"},{id:"logger_level",depth:3,title:"LOGGER_LEVEL"},{id:"logger_max_files",depth:3,title:"LOGGER_MAX_FILES"},{id:"logger_max_size",depth:3,title:"LOGGER_MAX_SIZE"},{id:"logger_format",depth:3,title:"LOGGER_FORMAT"},{id:"cache_default_store",depth:3,title:"CACHE_DEFAULT_STORE"},{id:"cache_memory_max",depth:3,title:"CACHE_MEMORY_MAX"},{id:"cache_redis_url",depth:3,title:"CACHE_REDIS_URL"},{id:"telemetry_enabled",depth:3,title:"TELEMETRY_ENABLED"},{id:"telemetry_metric_reader",depth:3,title:"TELEMETRY_METRIC_READER"},{id:"telemetry_trace_processor",depth:3,title:"TELEMETRY_TRACE_PROCESSOR"},{id:"experimental-environment-variables",depth:2,title:"Experimental Environment Variables"},{id:"append_preset_local_plugins",depth:3,title:"APPEND_PRESET_LOCAL_PLUGINS"},{id:"append_preset_built_in_plugins",depth:3,title:"APPEND_PRESET_BUILT_IN_PLUGINS"},{id:"temporary-environment-variables",depth:2,title:"Temporary Environment Variables"},{id:"init_app_lang",depth:3,title:"INIT_APP_LANG"},{id:"init_root_email",depth:3,title:"INIT_ROOT_EMAIL"},{id:"init_root_password",depth:3,title:"INIT_ROOT_PASSWORD"},{id:"init_root_nickname",depth:3,title:"INIT_ROOT_NICKNAME"}],xB=[{value:"Saved in the ",paraId:0,tocIndex:1},{value:".env",paraId:0,tocIndex:1},{value:" file",paraId:0,tocIndex:1},{value:"Used to set the application's time zone, with the default being the system's time zone.",paraId:1,tocIndex:2},{value:"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones",paraId:2,tocIndex:2},{value:"Time-related operations will be handled according to this time zone. Changing TZ may affect date values in the database. For more details, refer to ",paraId:3},{value:"Date & Time Overview",paraId:4},{value:".",paraId:3},{value:"Application environment, default is ",paraId:5,tocIndex:3},{value:"development",paraId:5,tocIndex:3},{value:", options include",paraId:5,tocIndex:3},{value:"production",paraId:6,tocIndex:3},{value:" production environment",paraId:6,tocIndex:3},{value:"development",paraId:6,tocIndex:3},{value:" development environment",paraId:6,tocIndex:3},{value:`APP_ENV=production +`,paraId:4},{value:"HTTP \u8BF7\u6C42",paraId:18}],jF={},HF={title:"\u67E5\u8BE2\u6570\u636E",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/query.md",lastUpdated:173254844e4,description:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u67E5\u8BE2\u5E76\u83B7\u53D6\u6570\u636E\u8BB0\u5F55\u3002"},WF=[{id:"\u67E5\u8BE2\u6570\u636E",depth:1,title:"\u67E5\u8BE2\u6570\u636E"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u6570\u636E\u8868",depth:3,title:"\u6570\u636E\u8868"},{id:"\u67E5\u8BE2\u6A21\u5F0F",depth:3,title:"\u67E5\u8BE2\u6A21\u5F0F"},{id:"\u7B5B\u9009\u6761\u4EF6",depth:3,title:"\u7B5B\u9009\u6761\u4EF6"},{id:"\u6392\u5E8F",depth:3,title:"\u6392\u5E8F"},{id:"\u5206\u9875",depth:3,title:"\u5206\u9875"},{id:"\u7ED3\u679C\u4E3A\u7A7A\u7684\u5904\u7406",depth:3,title:"\u7ED3\u679C\u4E3A\u7A7A\u7684\u5904\u7406"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],$F=[{value:"\u7528\u4E8E\u5BF9\u67D0\u4E2A\u6570\u636E\u8868\u7684\u6EE1\u8DB3\u6761\u4EF6\u7684\u6570\u636E\u8FDB\u884C\u67E5\u8BE2\u5E76\u83B7\u53D6\u6570\u636E\u8BB0\u5F55\u3002",paraId:0,tocIndex:0},{value:"\u53EF\u4EE5\u914D\u7F6E\u67E5\u8BE2\u5355\u6761\u6570\u636E\u6216\u591A\u6761\u6570\u636E\uFF0C\u67E5\u8BE2\u7ED3\u679C\u53EF\u4EE5\u4F5C\u4E3A\u53D8\u91CF\u5728\u540E\u7EED\u8282\u70B9\u4F7F\u7528\u3002\u5F53\u67E5\u8BE2\u591A\u6761\u6570\u636E\u65F6\uFF0C\u67E5\u8BE2\u7ED3\u679C\u4E3A\u4E00\u4E2A\u6570\u7EC4\u3002\u5F53\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A\u65F6\uFF0C\u53EF\u4EE5\u9009\u62E9\u662F\u5426\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u8282\u70B9\u3002",paraId:1,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u67E5\u8BE2\u6570\u636E\u201D\u8282\u70B9\uFF1A",paraId:2,tocIndex:1},{value:"\u9009\u62E9\u8981\u67E5\u8BE2\u6570\u636E\u7684\u6570\u636E\u8868\u3002",paraId:3,tocIndex:3},{value:"\u52FE\u9009\u201C\u5141\u8BB8\u7ED3\u679C\u662F\u591A\u6761\u6570\u636E\u201D\u540E\uFF0C\u5C06\u4F1A\u67E5\u8BE2\u51FA\u6EE1\u8DB3\u6761\u4EF6\u7684\u6240\u6709\u6570\u636E\uFF0C\u5426\u5219\u53EA\u4F1A\u67E5\u8BE2\u51FA\u6EE1\u8DB3\u6761\u4EF6\u7684\u7B2C\u4E00\u6761\u6570\u636E\u3002\u5982\u679C\u52FE\u9009\u4E86\u201C\u5141\u8BB8\u7ED3\u679C\u662F\u591A\u6761\u6570\u636E\u201D\uFF0C\u5219\u67E5\u8BE2\u8282\u70B9\u7684\u7ED3\u679C\u4F1A\u662F\u4E00\u4E2A\u6570\u7EC4\u7C7B\u578B\u3002",paraId:4,tocIndex:4},{value:"\u4E0E\u666E\u901A\u7684\u6570\u636E\u8868\u67E5\u8BE2\u65F6\u7684\u7B5B\u9009\u6761\u4EF6\u7C7B\u4F3C\uFF0C\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u7684\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002",paraId:5,tocIndex:5},{value:"\u67E5\u8BE2\u4E00\u6761\u6216\u591A\u6761\u6570\u636E\u65F6\u5747\u53EF\u901A\u8FC7\u6392\u5E8F\u89C4\u5219\u6765\u63A7\u5236\u9700\u8981\u7684\u7ED3\u679C\u3002\u4F8B\u5982\u67E5\u8BE2\u6700\u65B0\u7684\u4E00\u6761\u6570\u636E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u201C\u521B\u5EFA\u65F6\u95F4\u201D\u5B57\u6BB5\u964D\u5E8F\u6392\u5E8F\u3002",paraId:6,tocIndex:6},{value:"\u5F53\u7ED3\u679C\u96C6\u53EF\u80FD\u4F1A\u5F88\u5927\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5206\u9875\u6765\u63A7\u5236\u67E5\u8BE2\u7ED3\u679C\u7684\u6570\u91CF\u3002\u4F8B\u5982\u67E5\u8BE2\u6700\u65B0\u7684 10 \u6761\u6570\u636E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u201C\u521B\u5EFA\u65F6\u95F4\u201D\u5B57\u6BB5\u964D\u5E8F\u6392\u5E8F\uFF0C\u7136\u540E\u8BBE\u7F6E\u5206\u9875\u4E3A 1 \u9875 10 \u6761\u6570\u636E\u3002",paraId:7,tocIndex:7},{value:"\u5728\u5355\u6761\u7ED3\u679C\u6A21\u5F0F\u4E0B\uFF0C\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6570\u636E\u7684\u8BDD\u67E5\u8BE2\u7ED3\u679C\u4F1A\u662F ",paraId:8,tocIndex:8},{value:"null",paraId:8,tocIndex:8},{value:"\uFF0C\u591A\u6761\u7ED3\u679C\u7684\u6A21\u5F0F\u4E0B\u662F\u7A7A\u6570\u7EC4\uFF08",paraId:8,tocIndex:8},{value:"[]",paraId:8,tocIndex:8},{value:"\uFF09\u3002\u53EF\u4EE5\u6839\u636E\u9700\u8981\u662F\u5426\u52FE\u9009\u201C\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A\u662F\uFF0C\u9000\u51FA\u6D41\u7A0B\u201D\uFF0C\u52FE\u9009\u540E\uFF0C\u5982\u679C\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A\uFF0C\u5219\u4E0D\u4F1A\u6267\u884C\u540E\u7EED\u8282\u70B9\uFF0C\u4EE5\u5931\u8D25\u7684\u72B6\u6001\u63D0\u524D\u9000\u51FA\u3002",paraId:8,tocIndex:8},{value:"TODO",paraId:9,tocIndex:9}],GF={},VF={title:"Explanation",toc:"menu",filename:"docs/en-US/plugin-samples/router/index.md",lastUpdated:173254844e4,description:"NocoBase's frontend pages currently include the following page routes:"},KF=[{id:"explanation",depth:1,title:"Explanation"}],ZF=[{value:"NocoBase's frontend pages currently include the following ",paraId:0,tocIndex:0},{value:"page routes",paraId:1,tocIndex:0},{value:":",paraId:0,tocIndex:0},{value:"Name",paraId:2,tocIndex:0},{value:"Path",paraId:2,tocIndex:0},{value:"Component",paraId:2,tocIndex:0},{value:"Description",paraId:2,tocIndex:0},{value:"admin",paraId:2,tocIndex:0},{value:"/admin/*",paraId:2,tocIndex:0},{value:"AdminLayout",paraId:2,tocIndex:0},{value:"Backend management page",paraId:2,tocIndex:0},{value:"admin.page",paraId:2,tocIndex:0},{value:"/admin/:name",paraId:2,tocIndex:0},{value:"AdminDynamicPage",paraId:2,tocIndex:0},{value:"Dynamically created page",paraId:2,tocIndex:0},{value:"admin.settings",paraId:2,tocIndex:0},{value:"/admin/settings/*",paraId:2,tocIndex:0},{value:"AdminSettingsLayout",paraId:2,tocIndex:0},{value:"Plugin configuration page",paraId:2,tocIndex:0},{value:"admin.pm.list",paraId:2,tocIndex:0},{value:"/admin/pm/list/*",paraId:2,tocIndex:0},{value:"PluginManager",paraId:2,tocIndex:0},{value:"Plugin management page",paraId:2,tocIndex:0},{value:"However, these pages may not meet all requirements, for example:",paraId:3,tocIndex:0},{value:"add",paraId:4,tocIndex:0},{value:"Add a new page for frontend display only, such as ",paraId:5,tocIndex:0},{value:"/about",paraId:5,tocIndex:0},{value:", to show information about the website.",paraId:5,tocIndex:0},{value:"Extend a new page under ",paraId:5,tocIndex:0},{value:"/admin/*",paraId:5,tocIndex:0},{value:", which requires login to access.",paraId:5,tocIndex:0},{value:"Add a configuration page for a newly added plugin.",paraId:5,tocIndex:0},{value:"change",paraId:6,tocIndex:0},{value:"Completely replace an existing page, for example, customize the login page instead of using the default one.",paraId:7,tocIndex:0},{value:"Modify the layout of an existing page, for example, modify the layout of ",paraId:7,tocIndex:0},{value:"/admin/*",paraId:7,tocIndex:0},{value:" without the top menu bar.",paraId:7,tocIndex:0},{value:"delete",paraId:8,tocIndex:0},{value:"For example, if we no longer need a registered page, we can delete it.",paraId:9,tocIndex:0},{value:"To address the above scenarios, we can use NocoBase's frontend router extension feature. We provide the following examples:",paraId:10,tocIndex:0},{value:"Add Page",paraId:11,tocIndex:0},{value:" (Add a new page)",paraId:12,tocIndex:0},{value:"Replace Page",paraId:13,tocIndex:0},{value:" (Modify a page)",paraId:12,tocIndex:0},{value:"Add Plugin Setting Page (Single Route)",paraId:14,tocIndex:0},{value:" (Plugin configuration page - single route)",paraId:12,tocIndex:0},{value:"Add Plugin Setting Page (Tabs Routes)",paraId:15,tocIndex:0},{value:" (Plugin configuration page - tabs routes)",paraId:12,tocIndex:0},{value:"Add Plugin Setting Page (different Routes)",paraId:16,tocIndex:0},{value:" (Plugin configuration page - different layouts)",paraId:12,tocIndex:0}],YF={},QF={title:"\u8BA1\u7B97\u516C\u5F0F\u5B57\u6BB5",toc:"menu",filename:"docs/en-US/plugins/formula-field/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},JF=[{id:"\u8BA1\u7B97\u516C\u5F0F\u5B57\u6BB5",depth:1,title:"\u8BA1\u7B97\u516C\u5F0F\u5B57\u6BB5"}],XF=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],eB={},aB={title:"\u79FB\u52A8\u7AEF",toc:"menu",filename:"docs/en-US/plugins/mobile-client/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},tB=[{id:"\u79FB\u52A8\u7AEF",depth:1,title:"\u79FB\u52A8\u7AEF"}],nB=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],oB={},rB={title:"Sign in with Google",toc:"menu",filename:"docs/en-US/plugins/oidc/example/google.md",lastUpdated:173254844e4,description:"https://developers.google.com/identity/openid-connect/openid-connect"},dB=[{id:"sign-in-with-google",depth:1,title:"Sign in with Google"},{id:"\u83B7\u53D6-google-oauth-20-\u51ED\u636E",depth:2,title:"\u83B7\u53D6 Google OAuth 2.0 \u51ED\u636E"},{id:"\u5728-nocobase-\u4E0A\u65B0\u589E\u8BA4\u8BC1\u5668",depth:2,title:"\u5728 NocoBase \u4E0A\u65B0\u589E\u8BA4\u8BC1\u5668"}],iB=[{value:"https://developers.google.com/identity/openid-connect/openid-connect",paraId:0,tocIndex:0},{value:"Google Cloud\u63A7\u5236\u53F0",paraId:1,tocIndex:1},{value:" - \u521B\u5EFA\u51ED\u636E - OAuth\u5BA2\u6237\u7AEFID",paraId:1,tocIndex:1},{value:"\u8FDB\u5165\u5230\u914D\u7F6E\u754C\u9762\uFF0C\u586B\u5199\u6388\u6743\u91CD\u5B9A\u5411 URL. \u91CD\u5B9A\u5411 URL \u53EF\u4EE5\u5728 Nocobase\uFF0C\u65B0\u589E\u8BA4\u8BC1\u5668\u65F6\u83B7\u53D6\uFF0C\u901A\u5E38\u60C5\u51B5\u4E0B\u4E3A ",paraId:2,tocIndex:1},{value:"http(s)://host:port/api/oidc:redirect",paraId:2,tocIndex:1},{value:". \u89C1",paraId:2,tocIndex:1},{value:"\u4F7F\u7528\u624B\u518C - \u914D\u7F6E",paraId:3,tocIndex:1},{value:"\u90E8\u5206\u3002",paraId:2,tocIndex:1},{value:"\u63D2\u4EF6\u8BBE\u7F6E - \u7528\u6237\u8BA4\u8BC1 - \u6DFB\u52A0 - OIDC",paraId:4,tocIndex:2},{value:"\u53C2\u8003\u914D",paraId:5,tocIndex:2},{value:"\u4F7F\u7528\u624B\u518C - \u914D\u7F6E",paraId:6,tocIndex:2},{value:"\u4E2D\u4ECB\u7ECD\u7684\u53C2\u6570\uFF0C\u5B8C\u6210\u8BA4\u8BC1\u5668\u914D\u7F6E\u5373\u53EF\u3002",paraId:5,tocIndex:2}],lB={},cB={title:"Google Workspace",toc:"menu",filename:"docs/en-US/plugins/saml/example/google.md",lastUpdated:173254844e4,description:"Google\u7BA1\u7406\u63A7\u5236 - \u5E94\u7528 - Web\u5E94\u7528\u548C\u79FB\u52A8\u5E94\u7528"},sB=[{id:"google-workspace",depth:1,title:"Google Workspace"},{id:"\u5C06-google-\u8BBE\u7F6E\u4E3A-idp",depth:2,title:"\u5C06 Google \u8BBE\u7F6E\u4E3A IdP"},{id:"\u5728-nocobase-\u4E0A\u65B0\u589E\u8BA4\u8BC1\u5668",depth:2,title:"\u5728 NocoBase \u4E0A\u65B0\u589E\u8BA4\u8BC1\u5668"},{id:"\u5728-google-\u4E0A\u586B\u5199-sp-\u4FE1\u606F",depth:2,title:"\u5728 Google \u4E0A\u586B\u5199 SP \u4FE1\u606F"}],uB=[{value:"Google\u7BA1\u7406\u63A7\u5236",paraId:0,tocIndex:1},{value:" - \u5E94\u7528 - Web\u5E94\u7528\u548C\u79FB\u52A8\u5E94\u7528",paraId:0,tocIndex:1},{value:"\u8FDB\u884C\u5E94\u7528\u8BBE\u7F6E\u4E4B\u540E\uFF0C\u590D\u5236 ",paraId:1,tocIndex:1},{value:"SSO\u7F51\u5740",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"\u5B9E\u4F53ID",paraId:1,tocIndex:1},{value:" \u548C",paraId:1,tocIndex:1},{value:"\u8BC1\u4E66",paraId:1,tocIndex:1},{value:"\u3002",paraId:1,tocIndex:1},{value:"\u63D2\u4EF6\u8BBE\u7F6E - \u7528\u6237\u8BA4\u8BC1 - \u6DFB\u52A0 - SAML",paraId:2,tocIndex:2},{value:"\u5C06\u521A\u624D\u590D\u5236\u7684\u4FE1\u606F\u4F9D\u6B21\u8FDB\u884C\u586B\u5199",paraId:3,tocIndex:2},{value:"SSO URL: SSO\u7F51\u5740",paraId:4,tocIndex:2},{value:"Public Certificate: \u8BC1\u4E66",paraId:4,tocIndex:2},{value:"idP Issuer: Entity ID (\u5B9E\u4F53id)",paraId:4,tocIndex:2},{value:"http: \u5982\u679C\u662F\u5728\u672C\u5730http\u6D4B\u8BD5\uFF0C\u52FE\u9009",paraId:4,tocIndex:2},{value:"\u4E4B\u540E\u590D\u5236 Usage \u4E2D\u7684 SP Issuer/EntityID \u548C ACS URL.",paraId:5,tocIndex:2},{value:"\u56DE\u5230Google\u63A7\u5236\u53F0\uFF0C\u5728",paraId:6,tocIndex:3},{value:"\u670D\u52A1\u63D0\u4F9B\u5546\u8BE6\u7EC6\u4FE1\u606F",paraId:6,tocIndex:3},{value:"\u9875\u9762\uFF0C\u8F93\u5165\u521A\u624D\u590D\u5236\u7684 ACS \u7F51\u5740\u548C\u5B9E\u4F53 ID\uFF0C\u5E76\u52FE\u9009",paraId:6,tocIndex:3},{value:"\u5DF2\u7B7E\u7F72\u54CD\u5E94",paraId:6,tocIndex:3},{value:"\u3002",paraId:6,tocIndex:3},{value:"\u5728",paraId:7,tocIndex:3},{value:"\u5C5E\u6027\u6620\u5C04",paraId:7,tocIndex:3},{value:"\u4F4D\u7F6E\uFF0C\u6DFB\u52A0\u6620\u5C04\uFF0C\u53EF\u4EE5\u6620\u5C04\u5BF9\u5E94\u5C5E\u6027\u3002",paraId:7,tocIndex:3}],pB={},IB={title:"Workflow Loop",toc:"menu",filename:"docs/en-US/plugins/workflow-loop/index.md",lastUpdated:173254844e4},_B=[],vB=[],mB={},hB={title:"Environment Variables",toc:"menu",filename:"docs/en-US/welcome/getting-started/env.md",lastUpdated:173254844e4,description:"Saved in the .env file"},fB=[{id:"environment-variables",depth:1,title:"Environment Variables"},{id:"global-environment-variables",depth:2,title:"Global Environment Variables"},{id:"tz",depth:3,title:"TZ"},{id:"app_env",depth:3,title:"APP_ENV"},{id:"app_host",depth:3,title:"APP_HOST"},{id:"app_port",depth:3,title:"APP_PORT"},{id:"app_key",depth:3,title:"APP_KEY"},{id:"api_base_path",depth:3,title:"API_BASE_PATH"},{id:"plugin_package_prefix",depth:3,title:"PLUGIN_PACKAGE_PREFIX"},{id:"db_dialect",depth:3,title:"DB_DIALECT"},{id:"db_storage",depth:3,title:"DB_STORAGE"},{id:"db_host",depth:3,title:"DB_HOST"},{id:"db_port",depth:3,title:"DB_PORT"},{id:"db_database",depth:3,title:"DB_DATABASE"},{id:"db_user",depth:3,title:"DB_USER"},{id:"db_password",depth:3,title:"DB_PASSWORD"},{id:"db_table_prefix",depth:3,title:"DB_TABLE_PREFIX"},{id:"db_logging",depth:3,title:"DB_LOGGING"},{id:"logger_transport",depth:3,title:"LOGGER_TRANSPORT"},{id:"logger_base_path",depth:3,title:"LOGGER_BASE_PATH"},{id:"logger_level",depth:3,title:"LOGGER_LEVEL"},{id:"logger_max_files",depth:3,title:"LOGGER_MAX_FILES"},{id:"logger_max_size",depth:3,title:"LOGGER_MAX_SIZE"},{id:"logger_format",depth:3,title:"LOGGER_FORMAT"},{id:"cache_default_store",depth:3,title:"CACHE_DEFAULT_STORE"},{id:"cache_memory_max",depth:3,title:"CACHE_MEMORY_MAX"},{id:"cache_redis_url",depth:3,title:"CACHE_REDIS_URL"},{id:"telemetry_enabled",depth:3,title:"TELEMETRY_ENABLED"},{id:"telemetry_metric_reader",depth:3,title:"TELEMETRY_METRIC_READER"},{id:"telemetry_trace_processor",depth:3,title:"TELEMETRY_TRACE_PROCESSOR"},{id:"experimental-environment-variables",depth:2,title:"Experimental Environment Variables"},{id:"append_preset_local_plugins",depth:3,title:"APPEND_PRESET_LOCAL_PLUGINS"},{id:"append_preset_built_in_plugins",depth:3,title:"APPEND_PRESET_BUILT_IN_PLUGINS"},{id:"temporary-environment-variables",depth:2,title:"Temporary Environment Variables"},{id:"init_app_lang",depth:3,title:"INIT_APP_LANG"},{id:"init_root_email",depth:3,title:"INIT_ROOT_EMAIL"},{id:"init_root_password",depth:3,title:"INIT_ROOT_PASSWORD"},{id:"init_root_nickname",depth:3,title:"INIT_ROOT_NICKNAME"}],xB=[{value:"Saved in the ",paraId:0,tocIndex:1},{value:".env",paraId:0,tocIndex:1},{value:" file",paraId:0,tocIndex:1},{value:"Used to set the application's time zone, with the default being the system's time zone.",paraId:1,tocIndex:2},{value:"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones",paraId:2,tocIndex:2},{value:"Time-related operations will be handled according to this time zone. Changing TZ may affect date values in the database. For more details, refer to ",paraId:3},{value:"Date & Time Overview",paraId:4},{value:".",paraId:3},{value:"Application environment, default is ",paraId:5,tocIndex:3},{value:"development",paraId:5,tocIndex:3},{value:", options include",paraId:5,tocIndex:3},{value:"production",paraId:6,tocIndex:3},{value:" production environment",paraId:6,tocIndex:3},{value:"development",paraId:6,tocIndex:3},{value:" development environment",paraId:6,tocIndex:3},{value:`APP_ENV=production `,paraId:7,tocIndex:3},{value:"Application host, default is ",paraId:8,tocIndex:4},{value:"0.0.0.0",paraId:8,tocIndex:4},{value:`APP_HOST=192.168.3.154 `,paraId:9,tocIndex:4},{value:"Application port, default is ",paraId:10,tocIndex:5},{value:"13000",paraId:10,tocIndex:5},{value:`APP_PORT=13000 `,paraId:11,tocIndex:5},{value:"Secret key, for scenarios such as jwt",paraId:12,tocIndex:6},{value:`APP_KEY=app-key-test @@ -14928,7 +14981,7 @@ yarn nocobase install -l zh-CN -e demo@nocobase.com -p admin123 -n "Super Admin" INIT_ROOT_PASSWORD=admin123 \\ INIT_ROOT_NICKNAME="Super Admin" \\ nocobase install -`,paraId:93,tocIndex:37}],gB={},bB={title:"URL",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/url.md",lastUpdated:1732240239e3,description:`Encodes a Uniform Resource Identifier (URI) component +`,paraId:93,tocIndex:37}],gB={},bB={title:"URL",toc:"menu",filename:"docs/en-US/api/handlebars-helpers/url.md",lastUpdated:173254844e4,description:`Encodes a Uniform Resource Identifier (URI) component by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character.`},yB=[{id:"url",depth:1,title:"URL"},{id:"encodeuri",depth:2,title:"{{encodeURI}}"},{id:"escape",depth:2,title:"{{escape}}"},{id:"decodeuri",depth:2,title:"{{decodeURI}}"},{id:"url_encode",depth:2,title:"{{url_encode}}"},{id:"url_decode",depth:2,title:"{{url_decode}}"},{id:"urlresolve",depth:2,title:"{{urlResolve}}"},{id:"urlparse",depth:2,title:"{{urlParse}}"},{id:"stripquerystring",depth:2,title:"{{stripQuerystring}}"},{id:"stripprotocol",depth:2,title:"{{stripProtocol}}"}],wB=[{value:`Encodes a Uniform Resource Identifier (URI) component @@ -14939,7 +14992,7 @@ Useful for allowing the string to be used in a URL, etc.`,paraId:3,tocIndex:2},{ browser would for an anchor tag.`,paraId:13,tocIndex:6},{value:"Params",paraId:14,tocIndex:6},{value:"base",paraId:15,tocIndex:6},{value:" ",paraId:15,tocIndex:6},{value:"{String}",paraId:15,tocIndex:6},{value:"href",paraId:15,tocIndex:6},{value:" ",paraId:15,tocIndex:6},{value:"{String}",paraId:15,tocIndex:6},{value:"returns",paraId:15,tocIndex:6},{value:" ",paraId:15,tocIndex:6},{value:"{String}",paraId:15,tocIndex:6},{value:"Parses a ",paraId:16,tocIndex:7},{value:"url",paraId:16,tocIndex:7},{value:" string into an object.",paraId:16,tocIndex:7},{value:"Params",paraId:17,tocIndex:7},{value:"str",paraId:18,tocIndex:7},{value:" ",paraId:18,tocIndex:7},{value:"{String}",paraId:18,tocIndex:7},{value:": URL string",paraId:18,tocIndex:7},{value:"returns",paraId:18,tocIndex:7},{value:" ",paraId:18,tocIndex:7},{value:"{String}",paraId:18,tocIndex:7},{value:": Returns stringified JSON",paraId:18,tocIndex:7},{value:"Strip the query string from the given ",paraId:19,tocIndex:8},{value:"url",paraId:19,tocIndex:8},{value:".",paraId:19,tocIndex:8},{value:"Params",paraId:20,tocIndex:8},{value:"url",paraId:21,tocIndex:8},{value:" ",paraId:21,tocIndex:8},{value:"{String}",paraId:21,tocIndex:8},{value:"returns",paraId:21,tocIndex:8},{value:" ",paraId:21,tocIndex:8},{value:"{String}",paraId:21,tocIndex:8},{value:": the url without the queryString",paraId:21,tocIndex:8},{value:"Strip protocol from a ",paraId:22,tocIndex:9},{value:"url",paraId:22,tocIndex:9},{value:". Useful for displaying media that may have an 'http' protocol on secure connections.",paraId:22,tocIndex:9},{value:"Params",paraId:23,tocIndex:9},{value:"str",paraId:24,tocIndex:9},{value:" ",paraId:24,tocIndex:9},{value:"{String}",paraId:24,tocIndex:9},{value:"returns",paraId:24,tocIndex:9},{value:" ",paraId:24,tocIndex:9},{value:"{String}",paraId:24,tocIndex:9},{value:": the url with http protocol stripped",paraId:24,tocIndex:9},{value:"Example",paraId:25,tocIndex:9},{value:` {{stripProtocol url}} -`,paraId:26,tocIndex:9}],kB={},SB={title:"\u6982\u8FF0",toc:"menu",filename:"docs/en-US/development/http-api/index.md",lastUpdated:1732240239e3,description:"NocoBase \u7684 HTTP API \u57FA\u4E8E Resource & Action \u8BBE\u8BA1\uFF0C\u662F REST API \u7684\u8D85\u96C6\uFF0C\u64CD\u4F5C\u4E0D\u5C40\u9650\u4E8E\u589E\u5220\u6539\u67E5\uFF0C\u5728 NocoBase \u91CC\uFF0CResource Action \u53EF\u4EE5\u4EFB\u610F\u7684\u6269\u5C55\u3002"},UB=[{id:"\u6982\u8FF0",depth:1,title:"\u6982\u8FF0"},{id:"\u8D44\u6E90-resource",depth:2,title:"\u8D44\u6E90 Resource"},{id:"\u793A\u4F8B",depth:3,title:"\u793A\u4F8B"},{id:"\u64CD\u4F5C-action",depth:2,title:"\u64CD\u4F5C Action"},{id:"\u793A\u4F8B-1",depth:3,title:"\u793A\u4F8B"},{id:"\u8BF7\u6C42-url",depth:2,title:"\u8BF7\u6C42 URL"},{id:"\u793A\u4F8B-2",depth:3,title:"\u793A\u4F8B"},{id:"\u8D44\u6E90\u5B9A\u4F4D",depth:2,title:"\u8D44\u6E90\u5B9A\u4F4D"},{id:"\u8BF7\u6C42\u53C2\u6570",depth:2,title:"\u8BF7\u6C42\u53C2\u6570"},{id:"filter",depth:3,title:"filter"},{id:"filterbytk",depth:3,title:"filterByTk"},{id:"sort",depth:3,title:"sort"},{id:"fields",depth:3,title:"fields"},{id:"appends",depth:3,title:"appends"},{id:"except",depth:3,title:"except"},{id:"whitelist",depth:3,title:"whitelist"},{id:"blacklist",depth:3,title:"blacklist"},{id:"\u8BF7\u6C42\u54CD\u5E94",depth:2,title:"\u8BF7\u6C42\u54CD\u5E94"},{id:"\u793A\u4F8B-3",depth:3,title:"\u793A\u4F8B"}],PB=[{value:"NocoBase \u7684 HTTP API \u57FA\u4E8E Resource & Action \u8BBE\u8BA1\uFF0C\u662F REST API \u7684\u8D85\u96C6\uFF0C\u64CD\u4F5C\u4E0D\u5C40\u9650\u4E8E\u589E\u5220\u6539\u67E5\uFF0C\u5728 NocoBase \u91CC\uFF0CResource Action \u53EF\u4EE5\u4EFB\u610F\u7684\u6269\u5C55\u3002",paraId:0,tocIndex:0},{value:"\u5728 NocoBase \u91CC\uFF0C\u8D44\u6E90\uFF08resource\uFF09\u6709\u4E24\u79CD\u8868\u8FBE\u65B9\u5F0F\uFF1A",paraId:1,tocIndex:1},{value:"",paraId:2,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"collection \u662F\u6240\u6709\u62BD\u8C61\u6570\u636E\u7684\u96C6\u5408",paraId:3},{value:"association \u4E3A collection \u7684\u5173\u8054\u6570\u636E",paraId:3},{value:"resource \u5305\u62EC collection \u548C collection.association \u4E24\u7C7B",paraId:3},{value:"posts",paraId:4,tocIndex:2},{value:" \u6587\u7AE0",paraId:4,tocIndex:2},{value:"posts.user",paraId:4,tocIndex:2},{value:" \u6587\u7AE0\u7528\u6237",paraId:4,tocIndex:2},{value:"posts.tags",paraId:4,tocIndex:2},{value:" \u6587\u7AE0\u6807\u7B7E",paraId:4,tocIndex:2},{value:"\u4EE5 ",paraId:5,tocIndex:3},{value:":",paraId:5,tocIndex:3},{value:" \u7684\u65B9\u5F0F\u8868\u793A\u8D44\u6E90\u64CD\u4F5C",paraId:5,tocIndex:3},{value:":",paraId:6,tocIndex:3},{value:".:",paraId:6,tocIndex:3},{value:"\u5185\u7F6E\u7684\u5168\u5C40\u64CD\u4F5C\uFF0C\u53EF\u7528\u4E8E collection \u6216 association",paraId:7,tocIndex:3},{value:"create",paraId:8,tocIndex:3},{value:"get",paraId:8,tocIndex:3},{value:"list",paraId:8,tocIndex:3},{value:"update",paraId:8,tocIndex:3},{value:"destroy",paraId:8,tocIndex:3},{value:"move",paraId:8,tocIndex:3},{value:"\u5185\u7F6E\u7684\u5173\u8054\u64CD\u4F5C\uFF0C\u4EC5\u7528\u4E8E association",paraId:9,tocIndex:3},{value:"set",paraId:10,tocIndex:3},{value:"add",paraId:10,tocIndex:3},{value:"remove",paraId:10,tocIndex:3},{value:"toggle",paraId:10,tocIndex:3},{value:"posts:create",paraId:11,tocIndex:4},{value:" \u521B\u5EFA\u6587\u7AE0",paraId:11,tocIndex:4},{value:"posts.user:get",paraId:11,tocIndex:4},{value:" \u67E5\u770B\u6587\u7AE0\u7528\u6237",paraId:11,tocIndex:4},{value:"posts.tags:add",paraId:11,tocIndex:4},{value:" \u9644\u52A0\u6587\u7AE0\u6807\u7B7E\uFF08\u5C06\u73B0\u6709\u7684\u6807\u7B7E\u4E0E\u6587\u7AE0\u5173\u8054\uFF09",paraId:11,tocIndex:4},{value:` /api/: +`,paraId:26,tocIndex:9}],kB={},SB={title:"\u6982\u8FF0",toc:"menu",filename:"docs/en-US/development/http-api/index.md",lastUpdated:173254844e4,description:"NocoBase \u7684 HTTP API \u57FA\u4E8E Resource & Action \u8BBE\u8BA1\uFF0C\u662F REST API \u7684\u8D85\u96C6\uFF0C\u64CD\u4F5C\u4E0D\u5C40\u9650\u4E8E\u589E\u5220\u6539\u67E5\uFF0C\u5728 NocoBase \u91CC\uFF0CResource Action \u53EF\u4EE5\u4EFB\u610F\u7684\u6269\u5C55\u3002"},UB=[{id:"\u6982\u8FF0",depth:1,title:"\u6982\u8FF0"},{id:"\u8D44\u6E90-resource",depth:2,title:"\u8D44\u6E90 Resource"},{id:"\u793A\u4F8B",depth:3,title:"\u793A\u4F8B"},{id:"\u64CD\u4F5C-action",depth:2,title:"\u64CD\u4F5C Action"},{id:"\u793A\u4F8B-1",depth:3,title:"\u793A\u4F8B"},{id:"\u8BF7\u6C42-url",depth:2,title:"\u8BF7\u6C42 URL"},{id:"\u793A\u4F8B-2",depth:3,title:"\u793A\u4F8B"},{id:"\u8D44\u6E90\u5B9A\u4F4D",depth:2,title:"\u8D44\u6E90\u5B9A\u4F4D"},{id:"\u8BF7\u6C42\u53C2\u6570",depth:2,title:"\u8BF7\u6C42\u53C2\u6570"},{id:"filter",depth:3,title:"filter"},{id:"filterbytk",depth:3,title:"filterByTk"},{id:"sort",depth:3,title:"sort"},{id:"fields",depth:3,title:"fields"},{id:"appends",depth:3,title:"appends"},{id:"except",depth:3,title:"except"},{id:"whitelist",depth:3,title:"whitelist"},{id:"blacklist",depth:3,title:"blacklist"},{id:"\u8BF7\u6C42\u54CD\u5E94",depth:2,title:"\u8BF7\u6C42\u54CD\u5E94"},{id:"\u793A\u4F8B-3",depth:3,title:"\u793A\u4F8B"}],PB=[{value:"NocoBase \u7684 HTTP API \u57FA\u4E8E Resource & Action \u8BBE\u8BA1\uFF0C\u662F REST API \u7684\u8D85\u96C6\uFF0C\u64CD\u4F5C\u4E0D\u5C40\u9650\u4E8E\u589E\u5220\u6539\u67E5\uFF0C\u5728 NocoBase \u91CC\uFF0CResource Action \u53EF\u4EE5\u4EFB\u610F\u7684\u6269\u5C55\u3002",paraId:0,tocIndex:0},{value:"\u5728 NocoBase \u91CC\uFF0C\u8D44\u6E90\uFF08resource\uFF09\u6709\u4E24\u79CD\u8868\u8FBE\u65B9\u5F0F\uFF1A",paraId:1,tocIndex:1},{value:"",paraId:2,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"collection \u662F\u6240\u6709\u62BD\u8C61\u6570\u636E\u7684\u96C6\u5408",paraId:3},{value:"association \u4E3A collection \u7684\u5173\u8054\u6570\u636E",paraId:3},{value:"resource \u5305\u62EC collection \u548C collection.association \u4E24\u7C7B",paraId:3},{value:"posts",paraId:4,tocIndex:2},{value:" \u6587\u7AE0",paraId:4,tocIndex:2},{value:"posts.user",paraId:4,tocIndex:2},{value:" \u6587\u7AE0\u7528\u6237",paraId:4,tocIndex:2},{value:"posts.tags",paraId:4,tocIndex:2},{value:" \u6587\u7AE0\u6807\u7B7E",paraId:4,tocIndex:2},{value:"\u4EE5 ",paraId:5,tocIndex:3},{value:":",paraId:5,tocIndex:3},{value:" \u7684\u65B9\u5F0F\u8868\u793A\u8D44\u6E90\u64CD\u4F5C",paraId:5,tocIndex:3},{value:":",paraId:6,tocIndex:3},{value:".:",paraId:6,tocIndex:3},{value:"\u5185\u7F6E\u7684\u5168\u5C40\u64CD\u4F5C\uFF0C\u53EF\u7528\u4E8E collection \u6216 association",paraId:7,tocIndex:3},{value:"create",paraId:8,tocIndex:3},{value:"get",paraId:8,tocIndex:3},{value:"list",paraId:8,tocIndex:3},{value:"update",paraId:8,tocIndex:3},{value:"destroy",paraId:8,tocIndex:3},{value:"move",paraId:8,tocIndex:3},{value:"\u5185\u7F6E\u7684\u5173\u8054\u64CD\u4F5C\uFF0C\u4EC5\u7528\u4E8E association",paraId:9,tocIndex:3},{value:"set",paraId:10,tocIndex:3},{value:"add",paraId:10,tocIndex:3},{value:"remove",paraId:10,tocIndex:3},{value:"toggle",paraId:10,tocIndex:3},{value:"posts:create",paraId:11,tocIndex:4},{value:" \u521B\u5EFA\u6587\u7AE0",paraId:11,tocIndex:4},{value:"posts.user:get",paraId:11,tocIndex:4},{value:" \u67E5\u770B\u6587\u7AE0\u7528\u6237",paraId:11,tocIndex:4},{value:"posts.tags:add",paraId:11,tocIndex:4},{value:" \u9644\u52A0\u6587\u7AE0\u6807\u7B7E\uFF08\u5C06\u73B0\u6709\u7684\u6807\u7B7E\u4E0E\u6587\u7AE0\u5173\u8054\uFF09",paraId:11,tocIndex:4},{value:` /api/: /api/:/ /api///: /api///:/ @@ -15057,7 +15110,7 @@ Response 400 (application/json) }, ], } -`,paraId:50,tocIndex:18}],TB={},CB={title:"\u5B66\u4E60\u8DEF\u7EBF\u6307\u5357",toc:"menu",filename:"docs/en-US/development/learning-guide.md",lastUpdated:1732240239e3,description:"\u76F8\u5173\u6587\u6863\uFF1A\u5FEB\u901F\u5F00\u59CB"},AB=[{id:"\u5B66\u4E60\u8DEF\u7EBF\u6307\u5357",depth:1,title:"\u5B66\u4E60\u8DEF\u7EBF\u6307\u5357"},{id:"1-\u4ECE\u5B89\u88C5\u8FD0\u884C-nocobase-\u5F00\u59CB",depth:2,title:"1. \u4ECE\u5B89\u88C5\u8FD0\u884C NocoBase \u5F00\u59CB"},{id:"2-\u4E86\u89E3-nocobase-\u5E73\u53F0\u63D0\u4F9B\u7684\u6838\u5FC3\u529F\u80FD",depth:2,title:"2. \u4E86\u89E3 NocoBase \u5E73\u53F0\u63D0\u4F9B\u7684\u6838\u5FC3\u529F\u80FD"},{id:"3-\u8FDB\u4E00\u6B65\u4E86\u89E3\u63D2\u4EF6\u7BA1\u7406\u5668\u7684\u4F7F\u7528",depth:2,title:"3. \u8FDB\u4E00\u6B65\u4E86\u89E3\u63D2\u4EF6\u7BA1\u7406\u5668\u7684\u4F7F\u7528"},{id:"4-\u5F00\u53D1\u65B0\u63D2\u4EF6\u4E86\u89E3\u6A21\u5757\u5206\u5E03",depth:2,title:"4. \u5F00\u53D1\u65B0\u63D2\u4EF6\uFF0C\u4E86\u89E3\u6A21\u5757\u5206\u5E03"},{id:"5-\u67E5\u9605\u5404\u6A21\u5757\u4E3B\u8981-api",depth:2,title:"5. \u67E5\u9605\u5404\u6A21\u5757\u4E3B\u8981 API"}],qB=[{value:"\u76F8\u5173\u6587\u6863\uFF1A",paraId:0,tocIndex:1},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:0,tocIndex:1},{value:"\u4E3B\u8981\u547D\u4EE4\u5305\u62EC\uFF1A",paraId:1,tocIndex:1},{value:"\u4E0B\u8F7D",paraId:2,tocIndex:1},{value:`yarn create/git clone +`,paraId:50,tocIndex:18}],TB={},CB={title:"\u5B66\u4E60\u8DEF\u7EBF\u6307\u5357",toc:"menu",filename:"docs/en-US/development/learning-guide.md",lastUpdated:173254844e4,description:"\u76F8\u5173\u6587\u6863\uFF1A\u5FEB\u901F\u5F00\u59CB"},AB=[{id:"\u5B66\u4E60\u8DEF\u7EBF\u6307\u5357",depth:1,title:"\u5B66\u4E60\u8DEF\u7EBF\u6307\u5357"},{id:"1-\u4ECE\u5B89\u88C5\u8FD0\u884C-nocobase-\u5F00\u59CB",depth:2,title:"1. \u4ECE\u5B89\u88C5\u8FD0\u884C NocoBase \u5F00\u59CB"},{id:"2-\u4E86\u89E3-nocobase-\u5E73\u53F0\u63D0\u4F9B\u7684\u6838\u5FC3\u529F\u80FD",depth:2,title:"2. \u4E86\u89E3 NocoBase \u5E73\u53F0\u63D0\u4F9B\u7684\u6838\u5FC3\u529F\u80FD"},{id:"3-\u8FDB\u4E00\u6B65\u4E86\u89E3\u63D2\u4EF6\u7BA1\u7406\u5668\u7684\u4F7F\u7528",depth:2,title:"3. \u8FDB\u4E00\u6B65\u4E86\u89E3\u63D2\u4EF6\u7BA1\u7406\u5668\u7684\u4F7F\u7528"},{id:"4-\u5F00\u53D1\u65B0\u63D2\u4EF6\u4E86\u89E3\u6A21\u5757\u5206\u5E03",depth:2,title:"4. \u5F00\u53D1\u65B0\u63D2\u4EF6\uFF0C\u4E86\u89E3\u6A21\u5757\u5206\u5E03"},{id:"5-\u67E5\u9605\u5404\u6A21\u5757\u4E3B\u8981-api",depth:2,title:"5. \u67E5\u9605\u5404\u6A21\u5757\u4E3B\u8981 API"}],qB=[{value:"\u76F8\u5173\u6587\u6863\uFF1A",paraId:0,tocIndex:1},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:0,tocIndex:1},{value:"\u4E3B\u8981\u547D\u4EE4\u5305\u62EC\uFF1A",paraId:1,tocIndex:1},{value:"\u4E0B\u8F7D",paraId:2,tocIndex:1},{value:`yarn create/git clone yarn install `,paraId:3,tocIndex:1},{value:"\u5B89\u88C5",paraId:4,tocIndex:1},{value:`yarn nocobase install `,paraId:5,tocIndex:1},{value:"\u8FD0\u884C",paraId:6,tocIndex:1},{value:`# for development @@ -15092,7 +15145,7 @@ yarn pm remove hello `,paraId:31,tocIndex:5},{value:"app.i18n",paraId:34,tocIndex:5},{value:"useTranslation",paraId:34,tocIndex:5},{value:`Devtools `,paraId:24,tocIndex:5},{value:`Commands `,paraId:35,tocIndex:5},{value:"app.command",paraId:36,tocIndex:5},{value:"app.findCommand",paraId:36,tocIndex:5},{value:`Migrations -`,paraId:35,tocIndex:5},{value:"app.db.addMigration",paraId:37,tocIndex:5},{value:"app.db.addMigrations",paraId:37,tocIndex:5}],EB={},DB={title:"\u5355\u5143\u6D4B\u8BD5",toc:"menu",filename:"docs/en-US/development/others/testing.md",lastUpdated:1732240239e3,description:"NocoBase \u7684\u6D4B\u8BD5\u57FA\u4E8E Jest \u6D4B\u8BD5\u6846\u67B6\u3002\u540C\u65F6\uFF0C\u4E3A\u4E86\u65B9\u4FBF\u7684\u7F16\u5199\u6D4B\u8BD5\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E86\u4E24\u4E2A\u5DE5\u5177\u7C7B\uFF0C\u5728\u6D4B\u8BD5\u73AF\u5883\u6A21\u62DF\u6B63\u5E38\u7684\u6570\u636E\u5E93\u548C\u5E94\u7528\u7684\u670D\u52A1\u7AEF\u3002"},OB=[{id:"\u5355\u5143\u6D4B\u8BD5",depth:1,title:"\u5355\u5143\u6D4B\u8BD5"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"mockdatabase",depth:3,title:"MockDatabase"},{id:"mockserver",depth:3,title:"MockServer"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u5C0F\u7ED3",depth:2,title:"\u5C0F\u7ED3"}],RB=[{value:"NocoBase \u7684\u6D4B\u8BD5\u57FA\u4E8E ",paraId:0,tocIndex:1},{value:"Jest",paraId:0,tocIndex:1},{value:" \u6D4B\u8BD5\u6846\u67B6\u3002\u540C\u65F6\uFF0C\u4E3A\u4E86\u65B9\u4FBF\u7684\u7F16\u5199\u6D4B\u8BD5\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E86\u4E24\u4E2A\u5DE5\u5177\u7C7B\uFF0C\u5728\u6D4B\u8BD5\u73AF\u5883\u6A21\u62DF\u6B63\u5E38\u7684\u6570\u636E\u5E93\u548C\u5E94\u7528\u7684\u670D\u52A1\u7AEF\u3002",paraId:0,tocIndex:1},{value:"\u6A21\u62DF\u6570\u636E\u5E93\u7C7B\u7EE7\u627F\u81EA ",paraId:1,tocIndex:2},{value:"Database",paraId:2,tocIndex:2},{value:" \u7C7B\uFF0C\u5927\u90E8\u5206\u5185\u5BB9\u6CA1\u6709\u533A\u522B\uFF0C\u4E3B\u8981\u5728\u6784\u9020\u51FD\u6570\u9ED8\u8BA4\u5185\u7F6E\u4E86\u968F\u673A\u8868\u524D\u7F00\uFF0C\u5728\u6BCF\u4E2A\u6D4B\u8BD5\u7528\u4F8B\u521D\u59CB\u5316\u6570\u636E\u5E93\u65F6\u76F8\u5173\u6570\u636E\u8868\u90FD\u901A\u8FC7\u524D\u7F00\u540D\u79F0\u4E0E\u5176\u4ED6\u7528\u4F8B\u8FDB\u884C\u9694\u79BB\uFF0C\u5728\u8FD0\u884C\u6D4B\u8BD5\u7528\u4F8B\u65F6\u4E92\u4E0D\u5F71\u54CD\u3002",paraId:1,tocIndex:2},{value:`import { MockDatabase } from '@nocobase/test'; +`,paraId:35,tocIndex:5},{value:"app.db.addMigration",paraId:37,tocIndex:5},{value:"app.db.addMigrations",paraId:37,tocIndex:5}],EB={},DB={title:"\u5355\u5143\u6D4B\u8BD5",toc:"menu",filename:"docs/en-US/development/others/testing.md",lastUpdated:173254844e4,description:"NocoBase \u7684\u6D4B\u8BD5\u57FA\u4E8E Jest \u6D4B\u8BD5\u6846\u67B6\u3002\u540C\u65F6\uFF0C\u4E3A\u4E86\u65B9\u4FBF\u7684\u7F16\u5199\u6D4B\u8BD5\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E86\u4E24\u4E2A\u5DE5\u5177\u7C7B\uFF0C\u5728\u6D4B\u8BD5\u73AF\u5883\u6A21\u62DF\u6B63\u5E38\u7684\u6570\u636E\u5E93\u548C\u5E94\u7528\u7684\u670D\u52A1\u7AEF\u3002"},OB=[{id:"\u5355\u5143\u6D4B\u8BD5",depth:1,title:"\u5355\u5143\u6D4B\u8BD5"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"mockdatabase",depth:3,title:"MockDatabase"},{id:"mockserver",depth:3,title:"MockServer"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u5C0F\u7ED3",depth:2,title:"\u5C0F\u7ED3"}],RB=[{value:"NocoBase \u7684\u6D4B\u8BD5\u57FA\u4E8E ",paraId:0,tocIndex:1},{value:"Jest",paraId:0,tocIndex:1},{value:" \u6D4B\u8BD5\u6846\u67B6\u3002\u540C\u65F6\uFF0C\u4E3A\u4E86\u65B9\u4FBF\u7684\u7F16\u5199\u6D4B\u8BD5\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E86\u4E24\u4E2A\u5DE5\u5177\u7C7B\uFF0C\u5728\u6D4B\u8BD5\u73AF\u5883\u6A21\u62DF\u6B63\u5E38\u7684\u6570\u636E\u5E93\u548C\u5E94\u7528\u7684\u670D\u52A1\u7AEF\u3002",paraId:0,tocIndex:1},{value:"\u6A21\u62DF\u6570\u636E\u5E93\u7C7B\u7EE7\u627F\u81EA ",paraId:1,tocIndex:2},{value:"Database",paraId:2,tocIndex:2},{value:" \u7C7B\uFF0C\u5927\u90E8\u5206\u5185\u5BB9\u6CA1\u6709\u533A\u522B\uFF0C\u4E3B\u8981\u5728\u6784\u9020\u51FD\u6570\u9ED8\u8BA4\u5185\u7F6E\u4E86\u968F\u673A\u8868\u524D\u7F00\uFF0C\u5728\u6BCF\u4E2A\u6D4B\u8BD5\u7528\u4F8B\u521D\u59CB\u5316\u6570\u636E\u5E93\u65F6\u76F8\u5173\u6570\u636E\u8868\u90FD\u901A\u8FC7\u524D\u7F00\u540D\u79F0\u4E0E\u5176\u4ED6\u7528\u4F8B\u8FDB\u884C\u9694\u79BB\uFF0C\u5728\u8FD0\u884C\u6D4B\u8BD5\u7528\u4F8B\u65F6\u4E92\u4E0D\u5F71\u54CD\u3002",paraId:1,tocIndex:2},{value:`import { MockDatabase } from '@nocobase/test'; describe('my suite', () => { let db; @@ -15212,7 +15265,7 @@ describe('shop actions', () => { }); }); `,paraId:9,tocIndex:4},{value:"\u7F16\u5199\u5B8C\u6210\u540E\uFF0C\u5728\u547D\u4EE4\u884C\u4E2D\u5141\u8BB8\u6D4B\u8BD5\u547D\u4EE4\uFF1A",paraId:10,tocIndex:4},{value:`yarn test packages/samples/shop-actions -`,paraId:11,tocIndex:4},{value:"\u8BE5\u6D4B\u8BD5\u5C06\u9A8C\u8BC1\uFF1A",paraId:12,tocIndex:4},{value:"\u5546\u54C1\u53EF\u4EE5\u521B\u5EFA\u6210\u529F\uFF1B",paraId:13,tocIndex:4},{value:"\u8BA2\u5355\u53EF\u4EE5\u521B\u5EFA\u6210\u529F\uFF1B",paraId:13,tocIndex:4},{value:"\u8BA2\u5355\u53EF\u4EE5\u53D1\u8D27\u6210\u529F\uFF1B",paraId:13,tocIndex:4},{value:"\u5F53\u7136\u8FD9\u53EA\u662F\u4E2A\u6700\u57FA\u672C\u7684\u4F8B\u5B50\uFF0C\u4ECE\u4E1A\u52A1\u4E0A\u6765\u8BF4\u5E76\u4E0D\u5B8C\u5584\uFF0C\u4F46\u4F5C\u4E3A\u793A\u4F8B\u5DF2\u7ECF\u53EF\u4EE5\u8BF4\u660E\u6574\u4E2A\u6D4B\u8BD5\u7684\u6D41\u7A0B\u3002",paraId:14,tocIndex:4},{value:"\u672C\u7AE0\u6D89\u53CA\u7684\u793A\u4F8B\u4EE3\u7801\u6574\u5408\u5728\u5BF9\u5E94\u7684\u5305 ",paraId:15,tocIndex:5},{value:"packages/samples/shop-actions",paraId:15,tocIndex:5},{value:" \u4E2D\uFF0C\u53EF\u4EE5\u76F4\u63A5\u5728\u672C\u5730\u8FD0\u884C\uFF0C\u67E5\u770B\u6548\u679C\u3002",paraId:15,tocIndex:5}],MB={},LB={title:"\u8DEF\u7531",toc:"menu",filename:"docs/en-US/development/server/routing.md",lastUpdated:1732240239e3},NB=[{id:"\u8DEF\u7531",depth:1,title:"\u8DEF\u7531"}],zB=[],FB={},BB={title:"Block Gantt",toc:"menu",filename:"docs/en-US/handbook/block-gantt/index.md",lastUpdated:1732240239e3,description:"The Gantt chart block displays data in the form of a timeline, making it ideal for project management, event planning, engineering schedules, and task scheduling."},jB=[{id:"block-gantt",depth:1,title:"Block Gantt"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"adding-a-block",depth:2,title:"Adding a Block"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"block-configuration-options",depth:2,title:"Block Configuration Options"},{id:"set-data-range",depth:3,title:"Set Data Range"},{id:"action-configuration",depth:2,title:"Action Configuration"},{id:"global-actions",depth:3,title:"Global Actions"},{id:"row-actions",depth:3,title:"Row Actions"}],HB=[{value:"The Gantt chart block displays data in the form of a timeline, making it ideal for project management, event planning, engineering schedules, and task scheduling.",paraId:0,tocIndex:1},{value:"It's a built-in plugin, no installation is required.",paraId:1,tocIndex:2},{value:"Title Field",paraId:2,tocIndex:3},{value:": Displays the information directly on the Gantt chart bars",paraId:2,tocIndex:3},{value:"Time Scale",paraId:2,tocIndex:3},{value:": Sets the time scale, with the default level being days",paraId:2,tocIndex:3},{value:"Start Date Field",paraId:2,tocIndex:3},{value:": Defines the start date for each task (required)",paraId:2,tocIndex:3},{value:"End Date Field",paraId:2,tocIndex:3},{value:": Defines the end date for each task (required)",paraId:2,tocIndex:3},{value:"Progress Field",paraId:2,tocIndex:3},{value:": Indicates the progress of a task (optional percentage field)",paraId:2,tocIndex:3},{value:"Hover over a task to see a floating card that displays task duration and progress.",paraId:3,tocIndex:4},{value:"Drag the task to adjust the start and end dates.",paraId:3,tocIndex:4},{value:"Drag the progress bar to adjust task progress.",paraId:3,tocIndex:4},{value:"For more details, refer to ",paraId:4,tocIndex:6},{value:"Setting Data Range",paraId:5,tocIndex:6},{value:".",paraId:4,tocIndex:6},{value:"Save as Block Template",paraId:6,tocIndex:6},{value:"Set Data Loading Mode",paraId:7,tocIndex:6},{value:"Filter",paraId:8,tocIndex:8},{value:"Add New",paraId:9,tocIndex:8},{value:"Delete",paraId:10,tocIndex:8},{value:"Refresh",paraId:11,tocIndex:8},{value:"Import",paraId:12,tocIndex:8},{value:"Export",paraId:13,tocIndex:8},{value:"Add Record",paraId:14,tocIndex:8},{value:"Bulk Update",paraId:15,tocIndex:8},{value:"Bulk Edit",paraId:16,tocIndex:8},{value:"View",paraId:17,tocIndex:9},{value:"Edit",paraId:18,tocIndex:9},{value:"Duplicate",paraId:19,tocIndex:9},{value:"Delete",paraId:20,tocIndex:9},{value:"Pop-Up",paraId:21,tocIndex:9},{value:"Update Record",paraId:22,tocIndex:9},{value:"Custom Request",paraId:23,tocIndex:9},{value:"Trigger Workflow",paraId:24,tocIndex:9}],WB={},$B={title:"User Manual",toc:"menu",filename:"docs/en-US/handbook/client/user/index.md",lastUpdated:1732240239e3,description:"This plugin is one of the core components built into NocoBase, providing the client interface. The client features an AdminLayout design, with the following key elements:"},GB=[{id:"user-manual",depth:1,title:"User Manual"},{id:"plugin-manager",depth:2,title:"Plugin Manager"},{id:"plugin-management-center",depth:2,title:"Plugin Management Center"},{id:"user-profile-center",depth:2,title:"User Profile Center"},{id:"ui-editor",depth:2,title:"UI Editor"}],VB=[{value:"This plugin is one of the core components built into NocoBase, providing the client interface. The client features an AdminLayout design, with the following key elements:",paraId:0,tocIndex:0},{value:"Manage your plugins with options to add, activate, disable, or delete them.",paraId:1,tocIndex:1},{value:"Access the configuration pages for each plugin.",paraId:2,tocIndex:2}],KB={},ZB={title:"Departments",toc:"menu",filename:"docs/en-US/handbook/departments/index.md",lastUpdated:1732240239e3,description:"The departments plugin supports organizing users in the form of departments in NocoBase, setting up superior-subordinate relationships. You can control a group of users' permissions by binding roles to departments. It supports using department information as variables for workflows and expressions and other places that support setting variables."},YB=[{id:"departments",depth:1,title:"Departments"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"}],QB=[{value:"The departments plugin supports organizing users in the form of departments in NocoBase, setting up superior-subordinate relationships. You can control a group of users' permissions by binding roles to departments. It supports using department information as variables for workflows and expressions and other places that support setting variables.",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin, which needs to be uploaded and activated through the plugin manager.",paraId:1,tocIndex:2}],JB={},XB={title:"\u56FE\u8868",toc:"menu",filename:"docs/en-US/manual/blocks-guide/charts.md",lastUpdated:1732240239e3,description:"\u76EE\u524D\uFF0CNocoBase \u56FE\u8868\u533A\u5757\u9700\u8981\u901A\u8FC7\u914D\u7F6E\u6587\u4EF6\u6216\u7F16\u5199\u4EE3\u7801\u6765\u5B9E\u73B0\u3002\u56FE\u8868\u5E93\u4F7F\u7528\u7684\u662F g2plot\uFF0C\u7406\u8BBA\u4E0A\u652F\u6301 https://g2plot.antv.vision/en/examples \u4E0A\u7684\u6240\u6709\u56FE\u8868\u3002\u76EE\u524D\u53EF\u4EE5\u914D\u7F6E\u7684\u56FE\u8868\u5305\u62EC\uFF1A"},ej=[{id:"\u56FE\u8868",depth:1,title:"\u56FE\u8868"},{id:"\u6DFB\u52A0\u548C\u7F16\u8F91\u56FE\u8868",depth:2,title:"\u6DFB\u52A0\u548C\u7F16\u8F91\u56FE\u8868"},{id:"\u56FE\u8868\u914D\u7F6E",depth:2,title:"\u56FE\u8868\u914D\u7F6E"},{id:"server-\u7AEF\u5B9E\u73B0",depth:2,title:"Server \u7AEF\u5B9E\u73B0"},{id:"\u89C6\u9891",depth:2,title:"\u89C6\u9891"},{id:"\u9759\u6001\u6570\u636E",depth:3,title:"\u9759\u6001\u6570\u636E"},{id:"\u52A8\u6001\u6570\u636E",depth:3,title:"\u52A8\u6001\u6570\u636E"},{id:"\u66F4\u591A\u56FE\u8868",depth:3,title:"\u66F4\u591A\u56FE\u8868"},{id:"js-\u8868\u8FBE\u5F0F",depth:2,title:"JS \u8868\u8FBE\u5F0F"}],aj=[{value:"\u76EE\u524D\uFF0CNocoBase \u56FE\u8868\u533A\u5757\u9700\u8981\u901A\u8FC7\u914D\u7F6E\u6587\u4EF6\u6216\u7F16\u5199\u4EE3\u7801\u6765\u5B9E\u73B0\u3002\u56FE\u8868\u5E93\u4F7F\u7528\u7684\u662F ",paraId:0,tocIndex:0},{value:"g2plot",paraId:0,tocIndex:0},{value:"\uFF0C\u7406\u8BBA\u4E0A\u652F\u6301 ",paraId:0,tocIndex:0},{value:"https://g2plot.antv.vision/en/examples",paraId:0,tocIndex:0},{value:" \u4E0A\u7684\u6240\u6709\u56FE\u8868\u3002\u76EE\u524D\u53EF\u4EE5\u914D\u7F6E\u7684\u56FE\u8868\u5305\u62EC\uFF1A",paraId:0,tocIndex:0},{value:"\u67F1\u72B6\u56FE",paraId:1,tocIndex:0},{value:"\u6761\u5F62\u56FE",paraId:1,tocIndex:0},{value:"\u6298\u7EBF\u56FE",paraId:1,tocIndex:0},{value:"\u997C\u56FE",paraId:1,tocIndex:0},{value:"\u9762\u79EF\u56FE",paraId:1,tocIndex:0},{value:"\u521D\u59CB\u5316\u7684\u56FE\u8868\u914D\u7F6E\u662F\u9759\u6001\u7684 JSON \u6570\u636E",paraId:2,tocIndex:2},{value:`{ +`,paraId:11,tocIndex:4},{value:"\u8BE5\u6D4B\u8BD5\u5C06\u9A8C\u8BC1\uFF1A",paraId:12,tocIndex:4},{value:"\u5546\u54C1\u53EF\u4EE5\u521B\u5EFA\u6210\u529F\uFF1B",paraId:13,tocIndex:4},{value:"\u8BA2\u5355\u53EF\u4EE5\u521B\u5EFA\u6210\u529F\uFF1B",paraId:13,tocIndex:4},{value:"\u8BA2\u5355\u53EF\u4EE5\u53D1\u8D27\u6210\u529F\uFF1B",paraId:13,tocIndex:4},{value:"\u5F53\u7136\u8FD9\u53EA\u662F\u4E2A\u6700\u57FA\u672C\u7684\u4F8B\u5B50\uFF0C\u4ECE\u4E1A\u52A1\u4E0A\u6765\u8BF4\u5E76\u4E0D\u5B8C\u5584\uFF0C\u4F46\u4F5C\u4E3A\u793A\u4F8B\u5DF2\u7ECF\u53EF\u4EE5\u8BF4\u660E\u6574\u4E2A\u6D4B\u8BD5\u7684\u6D41\u7A0B\u3002",paraId:14,tocIndex:4},{value:"\u672C\u7AE0\u6D89\u53CA\u7684\u793A\u4F8B\u4EE3\u7801\u6574\u5408\u5728\u5BF9\u5E94\u7684\u5305 ",paraId:15,tocIndex:5},{value:"packages/samples/shop-actions",paraId:15,tocIndex:5},{value:" \u4E2D\uFF0C\u53EF\u4EE5\u76F4\u63A5\u5728\u672C\u5730\u8FD0\u884C\uFF0C\u67E5\u770B\u6548\u679C\u3002",paraId:15,tocIndex:5}],MB={},LB={title:"\u8DEF\u7531",toc:"menu",filename:"docs/en-US/development/server/routing.md",lastUpdated:173254844e4},NB=[{id:"\u8DEF\u7531",depth:1,title:"\u8DEF\u7531"}],zB=[],FB={},BB={title:"Block Gantt",toc:"menu",filename:"docs/en-US/handbook/block-gantt/index.md",lastUpdated:173254844e4,description:"The Gantt chart block displays data in the form of a timeline, making it ideal for project management, event planning, engineering schedules, and task scheduling."},jB=[{id:"block-gantt",depth:1,title:"Block Gantt"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"adding-a-block",depth:2,title:"Adding a Block"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"block-configuration-options",depth:2,title:"Block Configuration Options"},{id:"set-data-range",depth:3,title:"Set Data Range"},{id:"action-configuration",depth:2,title:"Action Configuration"},{id:"global-actions",depth:3,title:"Global Actions"},{id:"row-actions",depth:3,title:"Row Actions"}],HB=[{value:"The Gantt chart block displays data in the form of a timeline, making it ideal for project management, event planning, engineering schedules, and task scheduling.",paraId:0,tocIndex:1},{value:"It's a built-in plugin, no installation is required.",paraId:1,tocIndex:2},{value:"Title Field",paraId:2,tocIndex:3},{value:": Displays the information directly on the Gantt chart bars",paraId:2,tocIndex:3},{value:"Time Scale",paraId:2,tocIndex:3},{value:": Sets the time scale, with the default level being days",paraId:2,tocIndex:3},{value:"Start Date Field",paraId:2,tocIndex:3},{value:": Defines the start date for each task (required)",paraId:2,tocIndex:3},{value:"End Date Field",paraId:2,tocIndex:3},{value:": Defines the end date for each task (required)",paraId:2,tocIndex:3},{value:"Progress Field",paraId:2,tocIndex:3},{value:": Indicates the progress of a task (optional percentage field)",paraId:2,tocIndex:3},{value:"Hover over a task to see a floating card that displays task duration and progress.",paraId:3,tocIndex:4},{value:"Drag the task to adjust the start and end dates.",paraId:3,tocIndex:4},{value:"Drag the progress bar to adjust task progress.",paraId:3,tocIndex:4},{value:"For more details, refer to ",paraId:4,tocIndex:6},{value:"Setting Data Range",paraId:5,tocIndex:6},{value:".",paraId:4,tocIndex:6},{value:"Save as Block Template",paraId:6,tocIndex:6},{value:"Set Data Loading Mode",paraId:7,tocIndex:6},{value:"Filter",paraId:8,tocIndex:8},{value:"Add New",paraId:9,tocIndex:8},{value:"Delete",paraId:10,tocIndex:8},{value:"Refresh",paraId:11,tocIndex:8},{value:"Import",paraId:12,tocIndex:8},{value:"Export",paraId:13,tocIndex:8},{value:"Add Record",paraId:14,tocIndex:8},{value:"Bulk Update",paraId:15,tocIndex:8},{value:"Bulk Edit",paraId:16,tocIndex:8},{value:"View",paraId:17,tocIndex:9},{value:"Edit",paraId:18,tocIndex:9},{value:"Duplicate",paraId:19,tocIndex:9},{value:"Delete",paraId:20,tocIndex:9},{value:"Pop-Up",paraId:21,tocIndex:9},{value:"Update Record",paraId:22,tocIndex:9},{value:"Custom Request",paraId:23,tocIndex:9},{value:"Trigger Workflow",paraId:24,tocIndex:9}],WB={},$B={title:"User Manual",toc:"menu",filename:"docs/en-US/handbook/client/user/index.md",lastUpdated:173254844e4,description:"This plugin is one of the core components built into NocoBase, providing the client interface. The client features an AdminLayout design, with the following key elements:"},GB=[{id:"user-manual",depth:1,title:"User Manual"},{id:"plugin-manager",depth:2,title:"Plugin Manager"},{id:"plugin-management-center",depth:2,title:"Plugin Management Center"},{id:"user-profile-center",depth:2,title:"User Profile Center"},{id:"ui-editor",depth:2,title:"UI Editor"}],VB=[{value:"This plugin is one of the core components built into NocoBase, providing the client interface. The client features an AdminLayout design, with the following key elements:",paraId:0,tocIndex:0},{value:"Manage your plugins with options to add, activate, disable, or delete them.",paraId:1,tocIndex:1},{value:"Access the configuration pages for each plugin.",paraId:2,tocIndex:2}],KB={},ZB={title:"Departments",toc:"menu",filename:"docs/en-US/handbook/departments/index.md",lastUpdated:173254844e4,description:"The departments plugin supports organizing users in the form of departments in NocoBase, setting up superior-subordinate relationships. You can control a group of users' permissions by binding roles to departments. It supports using department information as variables for workflows and expressions and other places that support setting variables."},YB=[{id:"departments",depth:1,title:"Departments"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"}],QB=[{value:"The departments plugin supports organizing users in the form of departments in NocoBase, setting up superior-subordinate relationships. You can control a group of users' permissions by binding roles to departments. It supports using department information as variables for workflows and expressions and other places that support setting variables.",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin, which needs to be uploaded and activated through the plugin manager.",paraId:1,tocIndex:2}],JB={},XB={title:"\u56FE\u8868",toc:"menu",filename:"docs/en-US/manual/blocks-guide/charts.md",lastUpdated:173254844e4,description:"\u76EE\u524D\uFF0CNocoBase \u56FE\u8868\u533A\u5757\u9700\u8981\u901A\u8FC7\u914D\u7F6E\u6587\u4EF6\u6216\u7F16\u5199\u4EE3\u7801\u6765\u5B9E\u73B0\u3002\u56FE\u8868\u5E93\u4F7F\u7528\u7684\u662F g2plot\uFF0C\u7406\u8BBA\u4E0A\u652F\u6301 https://g2plot.antv.vision/en/examples \u4E0A\u7684\u6240\u6709\u56FE\u8868\u3002\u76EE\u524D\u53EF\u4EE5\u914D\u7F6E\u7684\u56FE\u8868\u5305\u62EC\uFF1A"},ej=[{id:"\u56FE\u8868",depth:1,title:"\u56FE\u8868"},{id:"\u6DFB\u52A0\u548C\u7F16\u8F91\u56FE\u8868",depth:2,title:"\u6DFB\u52A0\u548C\u7F16\u8F91\u56FE\u8868"},{id:"\u56FE\u8868\u914D\u7F6E",depth:2,title:"\u56FE\u8868\u914D\u7F6E"},{id:"server-\u7AEF\u5B9E\u73B0",depth:2,title:"Server \u7AEF\u5B9E\u73B0"},{id:"\u89C6\u9891",depth:2,title:"\u89C6\u9891"},{id:"\u9759\u6001\u6570\u636E",depth:3,title:"\u9759\u6001\u6570\u636E"},{id:"\u52A8\u6001\u6570\u636E",depth:3,title:"\u52A8\u6001\u6570\u636E"},{id:"\u66F4\u591A\u56FE\u8868",depth:3,title:"\u66F4\u591A\u56FE\u8868"},{id:"js-\u8868\u8FBE\u5F0F",depth:2,title:"JS \u8868\u8FBE\u5F0F"}],aj=[{value:"\u76EE\u524D\uFF0CNocoBase \u56FE\u8868\u533A\u5757\u9700\u8981\u901A\u8FC7\u914D\u7F6E\u6587\u4EF6\u6216\u7F16\u5199\u4EE3\u7801\u6765\u5B9E\u73B0\u3002\u56FE\u8868\u5E93\u4F7F\u7528\u7684\u662F ",paraId:0,tocIndex:0},{value:"g2plot",paraId:0,tocIndex:0},{value:"\uFF0C\u7406\u8BBA\u4E0A\u652F\u6301 ",paraId:0,tocIndex:0},{value:"https://g2plot.antv.vision/en/examples",paraId:0,tocIndex:0},{value:" \u4E0A\u7684\u6240\u6709\u56FE\u8868\u3002\u76EE\u524D\u53EF\u4EE5\u914D\u7F6E\u7684\u56FE\u8868\u5305\u62EC\uFF1A",paraId:0,tocIndex:0},{value:"\u67F1\u72B6\u56FE",paraId:1,tocIndex:0},{value:"\u6761\u5F62\u56FE",paraId:1,tocIndex:0},{value:"\u6298\u7EBF\u56FE",paraId:1,tocIndex:0},{value:"\u997C\u56FE",paraId:1,tocIndex:0},{value:"\u9762\u79EF\u56FE",paraId:1,tocIndex:0},{value:"\u521D\u59CB\u5316\u7684\u56FE\u8868\u914D\u7F6E\u662F\u9759\u6001\u7684 JSON \u6570\u636E",paraId:2,tocIndex:2},{value:`{ "data": [ { "type": "furniture & appliances", @@ -15352,11 +15405,11 @@ Response Body "key1": "{{ js expression }}" } `,paraId:14,tocIndex:8},{value:` - `,paraId:11}],tj={},nj={title:"A\xB7B\xB7C",toc:"menu",filename:"docs/en-US/manual/core-concepts/a-b-c.md",lastUpdated:1732240239e3,description:"\u5728\u65E0\u4EE3\u7801\u5C42\u9762\uFF0CNocoBase \u7684\u6838\u5FC3\u6982\u5FF5\u53EF\u4EE5\u603B\u7ED3\u4E3A A\xB7B\xB7C\u3002"},oj=[{id:"abc",depth:1,title:"A\xB7B\xB7C"},{id:"\u6570\u636E\u4E0E\u89C6\u56FE\u5206\u79BB",depth:2,title:"\u6570\u636E\u4E0E\u89C6\u56FE\u5206\u79BB"},{id:"\u4E00\u79CD\u6570\u636E\u591A\u79CD\u5448\u73B0",depth:2,title:"\u4E00\u79CD\u6570\u636E\uFF0C\u591A\u79CD\u5448\u73B0"},{id:"\u64CD\u4F5C\u9A71\u52A8",depth:2,title:"\u64CD\u4F5C\u9A71\u52A8"}],rj=[{value:"\u5728\u65E0\u4EE3\u7801\u5C42\u9762\uFF0CNocoBase \u7684\u6838\u5FC3\u6982\u5FF5\u53EF\u4EE5\u603B\u7ED3\u4E3A ",paraId:0,tocIndex:0},{value:"A\xB7B\xB7C",paraId:0,tocIndex:0},{value:"\u3002",paraId:0,tocIndex:0},{value:"A\xB7B\xB7C",paraId:1,tocIndex:0},{value:" \u662F",paraId:1,tocIndex:0},{value:"Action\xB7Block\xB7Collection",paraId:1,tocIndex:0},{value:"\xA0\u7684\u7F29\u5199\uFF0C\u5373",paraId:1,tocIndex:0},{value:"\u64CD\u4F5C\xB7\u533A\u5757\xB7\u6570\u636E\u8868",paraId:1,tocIndex:0},{value:"\u3002\u901A\u8FC7\xA0",paraId:1,tocIndex:0},{value:"Collection",paraId:1,tocIndex:0},{value:"\xA0\u8BBE\u8BA1\u6570\u636E\u7ED3\u6784\uFF0C\u901A\u8FC7\xA0",paraId:1,tocIndex:0},{value:"Block",paraId:1,tocIndex:0},{value:"\xA0\u7EC4\u7EC7\u4E0E\u5C55\u793A\u6570\u636E\uFF0C\u901A\u8FC7\xA0",paraId:1,tocIndex:0},{value:"Action",paraId:1,tocIndex:0},{value:"\xA0\u4EA4\u4E92\u6570\u636E\u3002",paraId:1,tocIndex:0},{value:"\u5B9A\u4E49\u6570\u636E\u65F6\uFF0C\u4E13\u6CE8\u4E8E\u5B9A\u4E49\u6570\u636E\uFF1B\u5B9A\u4E49\u89C6\u56FE\u65F6\uFF0C\u4E13\u6CE8\u4E8E\u5B9A\u4E49\u89C6\u56FE\u3002",paraId:2,tocIndex:1},{value:"\u901A\u8FC7\u5B9A\u4E49\u6570\u636E\uFF0C\u6765\u62BD\u8C61\u4E1A\u52A1\uFF1B\u518D\u901A\u8FC7\u5B9A\u4E49\u533A\u5757\u53BB\u7EC4\u7EC7\u5185\u5BB9\u4EE5\u4F60\u6240\u671F\u671B\u7684\u65B9\u5F0F\u5448\u73B0\u6570\u636E\u3002",paraId:3,tocIndex:1},{value:"\u4E3A\u4E1A\u52A1\u62BD\u8C61\u51FA\u7EDF\u4E00\u7684\u6570\u636E\u6A21\u578B\uFF0C\u7136\u540E\u901A\u8FC7\u533A\u5757\u53EF\u4EE5\u4E3A\u540C\u4E00\u4E2A\u6570\u636E\u8868\u5EFA\u7ACB\u5404\u79CD\u5404\u6837\u7684\u5448\u73B0\u65B9\u5F0F\uFF0C\u7528\u4E8E\u4E0D\u540C\u7684\u573A\u666F\u3001\u4E0D\u540C\u7684\u89D2\u8272\u3001\u4E0D\u540C\u7684\u7EC4\u5408\u3002",paraId:4,tocIndex:2},{value:"\u6570\u636E\u8868\u6765\u5B9A\u4E49\u6570\u636E\u7684\u7ED3\u6784\uFF0C\u533A\u5757\u6765\u7EC4\u7EC7\u6570\u636E\u7684\u5448\u73B0\u65B9\u5F0F\u3002\u90A3\u4E48\uFF0C\u4EC0\u4E48\u9A71\u52A8\u6570\u636E\u7684\u4EA4\u4E92\u548C\u53D8\u66F4\uFF1F\u7B54\u6848\u662F\u64CD\u4F5C\u3002",paraId:5,tocIndex:3},{value:"\u533A\u5757\u5C06\u6570\u636E\u5448\u73B0\u7ED9\u7528\u6237\uFF0C\u64CD\u4F5C\u5219\u662F\u5C06\u7528\u6237\u7684\u6307\u4EE4\u53D1\u9001\u7ED9\u670D\u52A1\u5668\u5B8C\u6210\u6570\u636E\u7684\u4EA4\u4E92\u6216\u53D8\u66F4\u3002",paraId:6,tocIndex:3}],dj={},ij={title:"\u83DC\u5355",toc:"menu",filename:"docs/en-US/manual/core-concepts/menus.md",lastUpdated:1732240239e3,description:"\u76EE\u524D NocoBase \u652F\u6301\u4E09\u79CD\u7C7B\u578B\u7684\u83DC\u5355\u9879\uFF1A"},lj=[{id:"\u83DC\u5355",depth:1,title:"\u83DC\u5355"},{id:"\u9ED8\u8BA4\u4F4D\u7F6E",depth:2,title:"\u9ED8\u8BA4\u4F4D\u7F6E"},{id:"\u6DFB\u52A0",depth:2,title:"\u6DFB\u52A0"},{id:"\u914D\u7F6E\u548C\u6392\u5E8F",depth:2,title:"\u914D\u7F6E\u548C\u6392\u5E8F"}],cj=[{value:"\u76EE\u524D NocoBase \u652F\u6301\u4E09\u79CD\u7C7B\u578B\u7684\u83DC\u5355\u9879\uFF1A",paraId:0,tocIndex:0},{value:"\u9875\u9762\uFF1A\u8DF3\u8F6C\u81F3\u83DC\u5355\u5173\u8054\u7684 NocoBase \u7684\u9875\u9762\uFF1B",paraId:1,tocIndex:0},{value:"\u5206\u7EC4\uFF1A\u5BF9\u83DC\u5355\u8FDB\u884C\u5206\u7EC4\uFF0C\u5C06\u540C\u7C7B\u83DC\u5355\u653E\u5230\u7EDF\u4E00\u7684\u4F4D\u7F6E\uFF1B",paraId:1,tocIndex:0},{value:"\u94FE\u63A5\uFF1A\u8DF3\u8F6C\u81F3\u6307\u5B9A\u7684 URL\uFF1B",paraId:1,tocIndex:0},{value:"\u4EE5\u4ED3\u50A8\u7CFB\u7EDF\u4E3A\u4F8B\uFF0C\u5982\u679C\u4F60\u7684\u4E1A\u52A1\u91CC\u6709\u50A8\u4F4D\u7BA1\u7406\uFF0C\u50A8\u4F4D\u7BA1\u7406\u91CC\u53C8\u5305\u542B\u51FA\u5165\u5E93\u65E5\u5FD7\u3001\u5E93\u5B58\u67E5\u8BE2\u3001\u8DF3\u8F6C ERP \u7533\u8BF7\u50A8\u4F4D\u7B49\u529F\u80FD\u3002\u90A3\u4E48\u53EF\u4EE5\u8FD9\u6837\u8BBE\u7F6E\u83DC\u5355\uFF1A",paraId:2,tocIndex:0},{value:`- \u50A8\u4F4D\u7BA1\u7406\uFF08\u5206\u7EC4\uFF09 + `,paraId:11}],tj={},nj={title:"A\xB7B\xB7C",toc:"menu",filename:"docs/en-US/manual/core-concepts/a-b-c.md",lastUpdated:173254844e4,description:"\u5728\u65E0\u4EE3\u7801\u5C42\u9762\uFF0CNocoBase \u7684\u6838\u5FC3\u6982\u5FF5\u53EF\u4EE5\u603B\u7ED3\u4E3A A\xB7B\xB7C\u3002"},oj=[{id:"abc",depth:1,title:"A\xB7B\xB7C"},{id:"\u6570\u636E\u4E0E\u89C6\u56FE\u5206\u79BB",depth:2,title:"\u6570\u636E\u4E0E\u89C6\u56FE\u5206\u79BB"},{id:"\u4E00\u79CD\u6570\u636E\u591A\u79CD\u5448\u73B0",depth:2,title:"\u4E00\u79CD\u6570\u636E\uFF0C\u591A\u79CD\u5448\u73B0"},{id:"\u64CD\u4F5C\u9A71\u52A8",depth:2,title:"\u64CD\u4F5C\u9A71\u52A8"}],rj=[{value:"\u5728\u65E0\u4EE3\u7801\u5C42\u9762\uFF0CNocoBase \u7684\u6838\u5FC3\u6982\u5FF5\u53EF\u4EE5\u603B\u7ED3\u4E3A ",paraId:0,tocIndex:0},{value:"A\xB7B\xB7C",paraId:0,tocIndex:0},{value:"\u3002",paraId:0,tocIndex:0},{value:"A\xB7B\xB7C",paraId:1,tocIndex:0},{value:" \u662F",paraId:1,tocIndex:0},{value:"Action\xB7Block\xB7Collection",paraId:1,tocIndex:0},{value:"\xA0\u7684\u7F29\u5199\uFF0C\u5373",paraId:1,tocIndex:0},{value:"\u64CD\u4F5C\xB7\u533A\u5757\xB7\u6570\u636E\u8868",paraId:1,tocIndex:0},{value:"\u3002\u901A\u8FC7\xA0",paraId:1,tocIndex:0},{value:"Collection",paraId:1,tocIndex:0},{value:"\xA0\u8BBE\u8BA1\u6570\u636E\u7ED3\u6784\uFF0C\u901A\u8FC7\xA0",paraId:1,tocIndex:0},{value:"Block",paraId:1,tocIndex:0},{value:"\xA0\u7EC4\u7EC7\u4E0E\u5C55\u793A\u6570\u636E\uFF0C\u901A\u8FC7\xA0",paraId:1,tocIndex:0},{value:"Action",paraId:1,tocIndex:0},{value:"\xA0\u4EA4\u4E92\u6570\u636E\u3002",paraId:1,tocIndex:0},{value:"\u5B9A\u4E49\u6570\u636E\u65F6\uFF0C\u4E13\u6CE8\u4E8E\u5B9A\u4E49\u6570\u636E\uFF1B\u5B9A\u4E49\u89C6\u56FE\u65F6\uFF0C\u4E13\u6CE8\u4E8E\u5B9A\u4E49\u89C6\u56FE\u3002",paraId:2,tocIndex:1},{value:"\u901A\u8FC7\u5B9A\u4E49\u6570\u636E\uFF0C\u6765\u62BD\u8C61\u4E1A\u52A1\uFF1B\u518D\u901A\u8FC7\u5B9A\u4E49\u533A\u5757\u53BB\u7EC4\u7EC7\u5185\u5BB9\u4EE5\u4F60\u6240\u671F\u671B\u7684\u65B9\u5F0F\u5448\u73B0\u6570\u636E\u3002",paraId:3,tocIndex:1},{value:"\u4E3A\u4E1A\u52A1\u62BD\u8C61\u51FA\u7EDF\u4E00\u7684\u6570\u636E\u6A21\u578B\uFF0C\u7136\u540E\u901A\u8FC7\u533A\u5757\u53EF\u4EE5\u4E3A\u540C\u4E00\u4E2A\u6570\u636E\u8868\u5EFA\u7ACB\u5404\u79CD\u5404\u6837\u7684\u5448\u73B0\u65B9\u5F0F\uFF0C\u7528\u4E8E\u4E0D\u540C\u7684\u573A\u666F\u3001\u4E0D\u540C\u7684\u89D2\u8272\u3001\u4E0D\u540C\u7684\u7EC4\u5408\u3002",paraId:4,tocIndex:2},{value:"\u6570\u636E\u8868\u6765\u5B9A\u4E49\u6570\u636E\u7684\u7ED3\u6784\uFF0C\u533A\u5757\u6765\u7EC4\u7EC7\u6570\u636E\u7684\u5448\u73B0\u65B9\u5F0F\u3002\u90A3\u4E48\uFF0C\u4EC0\u4E48\u9A71\u52A8\u6570\u636E\u7684\u4EA4\u4E92\u548C\u53D8\u66F4\uFF1F\u7B54\u6848\u662F\u64CD\u4F5C\u3002",paraId:5,tocIndex:3},{value:"\u533A\u5757\u5C06\u6570\u636E\u5448\u73B0\u7ED9\u7528\u6237\uFF0C\u64CD\u4F5C\u5219\u662F\u5C06\u7528\u6237\u7684\u6307\u4EE4\u53D1\u9001\u7ED9\u670D\u52A1\u5668\u5B8C\u6210\u6570\u636E\u7684\u4EA4\u4E92\u6216\u53D8\u66F4\u3002",paraId:6,tocIndex:3}],dj={},ij={title:"\u83DC\u5355",toc:"menu",filename:"docs/en-US/manual/core-concepts/menus.md",lastUpdated:173254844e4,description:"\u76EE\u524D NocoBase \u652F\u6301\u4E09\u79CD\u7C7B\u578B\u7684\u83DC\u5355\u9879\uFF1A"},lj=[{id:"\u83DC\u5355",depth:1,title:"\u83DC\u5355"},{id:"\u9ED8\u8BA4\u4F4D\u7F6E",depth:2,title:"\u9ED8\u8BA4\u4F4D\u7F6E"},{id:"\u6DFB\u52A0",depth:2,title:"\u6DFB\u52A0"},{id:"\u914D\u7F6E\u548C\u6392\u5E8F",depth:2,title:"\u914D\u7F6E\u548C\u6392\u5E8F"}],cj=[{value:"\u76EE\u524D NocoBase \u652F\u6301\u4E09\u79CD\u7C7B\u578B\u7684\u83DC\u5355\u9879\uFF1A",paraId:0,tocIndex:0},{value:"\u9875\u9762\uFF1A\u8DF3\u8F6C\u81F3\u83DC\u5355\u5173\u8054\u7684 NocoBase \u7684\u9875\u9762\uFF1B",paraId:1,tocIndex:0},{value:"\u5206\u7EC4\uFF1A\u5BF9\u83DC\u5355\u8FDB\u884C\u5206\u7EC4\uFF0C\u5C06\u540C\u7C7B\u83DC\u5355\u653E\u5230\u7EDF\u4E00\u7684\u4F4D\u7F6E\uFF1B",paraId:1,tocIndex:0},{value:"\u94FE\u63A5\uFF1A\u8DF3\u8F6C\u81F3\u6307\u5B9A\u7684 URL\uFF1B",paraId:1,tocIndex:0},{value:"\u4EE5\u4ED3\u50A8\u7CFB\u7EDF\u4E3A\u4F8B\uFF0C\u5982\u679C\u4F60\u7684\u4E1A\u52A1\u91CC\u6709\u50A8\u4F4D\u7BA1\u7406\uFF0C\u50A8\u4F4D\u7BA1\u7406\u91CC\u53C8\u5305\u542B\u51FA\u5165\u5E93\u65E5\u5FD7\u3001\u5E93\u5B58\u67E5\u8BE2\u3001\u8DF3\u8F6C ERP \u7533\u8BF7\u50A8\u4F4D\u7B49\u529F\u80FD\u3002\u90A3\u4E48\u53EF\u4EE5\u8FD9\u6837\u8BBE\u7F6E\u83DC\u5355\uFF1A",paraId:2,tocIndex:0},{value:`- \u50A8\u4F4D\u7BA1\u7406\uFF08\u5206\u7EC4\uFF09 - \u5E93\u5B58\u67E5\u8BE2\uFF08\u9875\u9762\uFF09 - \u51FA\u5165\u5E93\u65E5\u5FD7\uFF08\u9875\u9762\uFF09 - \u8DF3\u8F6CERP\u7533\u8BF7\u50A8\u4F4D\uFF08\u94FE\u63A5\uFF09 -`,paraId:3,tocIndex:0},{value:"\u5728 NocoBase \u5185\u7F6E\u7684\u9875\u9762\u6A21\u677F\u4E2D\uFF0C\u83DC\u5355\u4F1A\u51FA\u73B0\u5728\u9876\u90E8\u548C\u5DE6\u4FA7\u3002",paraId:4,tocIndex:1},{value:"\u70B9\u51FB Add menu item\uFF0C\u9009\u62E9\u6DFB\u52A0\u7684\u7C7B\u578B\u3002\u652F\u6301\u65E0\u9650\u7EA7\u5B50\u83DC\u5355\u3002",paraId:5,tocIndex:2},{value:"\u5C06\u5149\u6807\u79FB\u5230\u83DC\u5355\u9879\u4E0A\uFF0C\u53F3\u4E0A\u89D2\u4F1A\u51FA\u73B0\u6392\u5E8F\u548C\u914D\u7F6E\u6309\u94AE\u3002\u6309\u4F4F\u6392\u5E8F\u6309\u94AE\uFF0C\u53EF\u4EE5\u62D6\u62FD\u6392\u5E8F\u3002",paraId:6,tocIndex:3},{value:"\u5BF9\u83DC\u5355\u9879\u53EF\u64CD\u4F5C\u7684\u914D\u7F6E\uFF1A",paraId:7,tocIndex:3},{value:"Edit",paraId:8,tocIndex:3},{value:"Move to",paraId:8,tocIndex:3},{value:"Insert before",paraId:8,tocIndex:3},{value:"Insert after",paraId:8,tocIndex:3},{value:"Insert Inner",paraId:8,tocIndex:3},{value:"Delete",paraId:8,tocIndex:3}],sj={},uj={title:"\u79FB\u52A8\u7AEF",toc:"menu",filename:"docs/en-US/manual/mobile-client/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},pj=[{id:"\u79FB\u52A8\u7AEF",depth:1,title:"\u79FB\u52A8\u7AEF"}],Ij=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],_j={},vj={title:"\u5FAA\u73AF",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/loop.md",lastUpdated:1732240239e3,description:"\u5FAA\u73AF\u76F8\u5F53\u7F16\u7A0B\u8BED\u8A00\u4E2D\u7684 for/while/forEach \u7B49\u8BED\u6CD5\u7ED3\u6784\uFF0C\u5F53\u9700\u8981\u4E00\u5B9A\u6B21\u6570\u6216\u9488\u5BF9\u67D0\u4E2A\u6570\u636E\u96C6\u5408\uFF08\u6570\u7EC4\uFF09\u91CD\u590D\u6267\u884C\u4E00\u4E9B\u64CD\u4F5C\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5FAA\u73AF\u8282\u70B9\u3002"},mj=[{id:"\u5FAA\u73AF",depth:1,title:"\u5FAA\u73AF"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u5FAA\u73AF\u5BF9\u8C61",depth:3,title:"\u5FAA\u73AF\u5BF9\u8C61"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],hj=[{value:"\u5FAA\u73AF\u76F8\u5F53\u7F16\u7A0B\u8BED\u8A00\u4E2D\u7684 ",paraId:0,tocIndex:0},{value:"for",paraId:0,tocIndex:0},{value:"/",paraId:0,tocIndex:0},{value:"while",paraId:0,tocIndex:0},{value:"/",paraId:0,tocIndex:0},{value:"forEach",paraId:0,tocIndex:0},{value:" \u7B49\u8BED\u6CD5\u7ED3\u6784\uFF0C\u5F53\u9700\u8981\u4E00\u5B9A\u6B21\u6570\u6216\u9488\u5BF9\u67D0\u4E2A\u6570\u636E\u96C6\u5408\uFF08\u6570\u7EC4\uFF09\u91CD\u590D\u6267\u884C\u4E00\u4E9B\u64CD\u4F5C\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5FAA\u73AF\u8282\u70B9\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5FAA\u73AF\u201D\u8282\u70B9\uFF1A",paraId:1,tocIndex:1},{value:"\u521B\u5EFA\u5FAA\u73AF\u8282\u70B9\u540E\uFF0C\u4F1A\u751F\u6210\u4E00\u4E2A\u5FAA\u73AF\u5185\u90E8\u7684\u5206\u652F\uFF0C\u53EF\u4EE5\u5728\u5206\u652F\u4E2D\u589E\u52A0\u4EFB\u610F\u591A\u4E2A\u8282\u70B9\uFF0C\u8FD9\u4E9B\u8282\u70B9\u9664\u4E86\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u8FD8\u53EF\u4EE5\u4F7F\u7528\u5FAA\u73AF\u4E0A\u4E0B\u6587\u7684\u5C40\u90E8\u53D8\u91CF\uFF0C\u4F8B\u5982\u5FAA\u73AF\u96C6\u5408\u4E2D\u6BCF\u6B21\u5FAA\u73AF\u5230\u7684\u6570\u636E\u5BF9\u8C61\uFF0C\u6216\u8005\u662F\u5FAA\u73AF\u6B21\u6570\u7684\u7D22\u5F15\uFF08\u7D22\u5F15\u4ECE ",paraId:2,tocIndex:1},{value:"0",paraId:2,tocIndex:1},{value:" \u5F00\u59CB\u8BA1\u6570\uFF09\u3002\u5C40\u90E8\u53D8\u91CF\u7684\u4F5C\u7528\u57DF\u4EC5\u9650\u4E8E\u5FAA\u73AF\u5185\u90E8\uFF0C\u5982\u679C\u6709\u591A\u5C42\u5FAA\u73AF\u5D4C\u5957\uFF0C\u53EF\u4EE5\u6309\u5C42\u4F7F\u7528\u5177\u4F53\u5FAA\u73AF\u7684\u5C40\u90E8\u53D8\u91CF\u3002",paraId:2,tocIndex:1},{value:"\u5FAA\u73AF\u4F1A\u4EE5\u5FAA\u73AF\u5BF9\u8C61\u4E0D\u540C\u6570\u636E\u7C7B\u578B\u505A\u4E0D\u540C\u7684\u5904\u7406\uFF1A",paraId:3,tocIndex:3},{value:"\u6570\u7EC4",paraId:4,tocIndex:3},{value:"\uFF1A\u6700\u5E38\u89C1\u7684\u60C5\u51B5\uFF0C\u901A\u5E38\u662F\u53EF\u4EE5\u9009\u62E9\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u6BD4\u5982\u67E5\u8BE2\u8282\u70B9\u7684\u591A\u6761\u6570\u636E\u7ED3\u679C\uFF0C\u6216\u8005\u9884\u52A0\u8F7D\u7684\u5BF9\u591A\u5173\u7CFB\u6570\u636E\u3002\u5982\u679C\u9009\u62E9\u7684\u662F\u6570\u7EC4\uFF0C\u5FAA\u73AF\u8282\u70B9\u4F1A\u904D\u5386\u6570\u7EC4\u4E2D\u7684\u6BCF\u4E2A\u5143\u7D20\uFF0C\u6BCF\u6B21\u5FAA\u73AF\u90FD\u4F1A\u5C06\u5F53\u524D\u5143\u7D20\u8D4B\u503C\u7ED9\u5FAA\u73AF\u4E0A\u4E0B\u6587\u7684\u5C40\u90E8\u53D8\u91CF\u3002",paraId:4,tocIndex:3},{value:"\u6570\u5B57",paraId:5,tocIndex:3},{value:"\uFF1A\u5F53\u9009\u62E9\u7684\u53D8\u91CF\u662F\u4E00\u4E2A\u6570\u5B57\u662F\uFF0C\u4F1A\u4EE5\u8BE5\u6570\u5B57\u4E3A\u5FAA\u73AF\u6B21\u6570\uFF0C\u5C40\u57DF\u53D8\u91CF\u4E2D\u7684\u5FAA\u73AF\u6B21\u6570\u7684\u7D22\u5F15\u4E5F\u5373\u5FAA\u73AF\u5BF9\u8C61\u7684\u503C\u3002",paraId:5,tocIndex:3},{value:"\u5B57\u7B26\u4E32",paraId:6,tocIndex:3},{value:"\uFF1A\u5F53\u9009\u62E9\u7684\u53D8\u91CF\u662F\u4E00\u4E2A\u5B57\u7B26\u4E32\u65F6\uFF0C\u4F1A\u4EE5\u8BE5\u5B57\u7B26\u4E32\u7684\u957F\u5EA6\u4E3A\u5FAA\u73AF\u6B21\u6570\uFF0C\u6BCF\u6B21\u6309\u7D22\u5F15\u5904\u7406\u5B57\u7B26\u4E32\u4E2D\u7684\u6BCF\u4E00\u4E2A\u5B57\u7B26\u3002",paraId:6,tocIndex:3},{value:"\u5176\u4ED6",paraId:7,tocIndex:3},{value:"\uFF1A\u5176\u4ED6\u7C7B\u578B\u7684\u503C\uFF08\u5305\u62EC\u5BF9\u8C61\u7C7B\u578B\uFF09\u90FD\u4EC5\u4F5C\u4E3A\u5355\u6B21\u5904\u7406\u7684\u5FAA\u73AF\u5BF9\u8C61\uFF0C\u4E5F\u53EA\u4F1A\u5FAA\u73AF\u4E00\u6B21\uFF0C\u901A\u5E38\u8FD9\u79CD\u60C5\u51B5\u4E0D\u9700\u8981\u4F7F\u7528\u5FAA\u73AF\u3002",paraId:7,tocIndex:3},{value:"\u9664\u4E86\u9009\u62E9\u53D8\u91CF\uFF0C\u9488\u5BF9\u6570\u5B57\u548C\u5B57\u7B26\u4E32\u7C7B\u578B\u4E5F\u53EF\u4EE5\u76F4\u63A5\u8F93\u5165\u5E38\u91CF\uFF0C\u4F8B\u5982\u8F93\u5165 ",paraId:8,tocIndex:3},{value:"5",paraId:8,tocIndex:3},{value:"\uFF08\u6570\u5B57\u7C7B\u578B\uFF09\uFF0C\u5FAA\u73AF\u8282\u70B9\u4F1A\u5FAA\u73AF 5 \u6B21\uFF0C\u8F93\u5165 ",paraId:8,tocIndex:3},{value:"abc",paraId:8,tocIndex:3},{value:"\uFF08\u5B57\u7B26\u4E32\u7C7B\u578B\uFF09\uFF0C\u5FAA\u73AF\u8282\u70B9\u4F1A\u5FAA\u73AF 3 \u6B21\uFF0C\u5206\u522B\u5904\u7406 ",paraId:8,tocIndex:3},{value:"a",paraId:8,tocIndex:3},{value:"\u3001",paraId:8,tocIndex:3},{value:"b",paraId:8,tocIndex:3},{value:"\u3001",paraId:8,tocIndex:3},{value:"c",paraId:8,tocIndex:3},{value:" \u4E09\u4E2A\u5B57\u7B26\u3002\u5728\u9009\u62E9\u53D8\u91CF\u7684\u5DE5\u5177\u4E2D\u9009\u62E9\u5E0C\u671B\u4F7F\u7528\u5E38\u91CF\u7684\u7C7B\u578B\u3002",paraId:8,tocIndex:3},{value:"\u4F8B\u5982\u5728\u8BA2\u5355\u4E0B\u5355\u65F6\uFF0C\u9700\u8981\u5BF9\u8BA2\u5355\u4E2D\u7684\u6BCF\u4E2A\u5546\u54C1\u8FDB\u884C\u5E93\u5B58\u68C0\u67E5\uFF0C\u5982\u679C\u5E93\u5B58\u5145\u8DB3\u5219\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u660E\u7EC6\u5185\u7684\u5546\u54C1\u66F4\u65B0\u4E3A\u65E0\u6548\u3002",paraId:9,tocIndex:4},{value:"\u521B\u5EFA\u4E09\u5F20\u8868\uFF0C\u5546\u54C1\u8868 <-(1:m)-- \u8BA2\u5355\u660E\u7EC6\u8868 --(m:1)-> \u8BA2\u5355\u8868\uFF0C\u6570\u636E\u6A21\u578B\u5982\u4E0B\uFF1A",paraId:10,tocIndex:4},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:11,tocIndex:4},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:11,tocIndex:4},{value:"\u8BA2\u5355\u5546\u54C1\u660E\u7EC6",paraId:11,tocIndex:4},{value:"\u591A\u5BF9\u4E00\uFF08\u660E\u7EC6\uFF09",paraId:11,tocIndex:4},{value:"\u8BA2\u5355\u603B\u4EF7",paraId:11,tocIndex:4},{value:"\u6570\u5B57",paraId:11,tocIndex:4},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:12,tocIndex:4},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:12,tocIndex:4},{value:"\u5546\u54C1",paraId:12,tocIndex:4},{value:"\u4E00\u5BF9\u591A\uFF08\u5546\u54C1\uFF09",paraId:12,tocIndex:4},{value:"\u6570\u91CF",paraId:12,tocIndex:4},{value:"\u6570\u5B57",paraId:12,tocIndex:4},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:13,tocIndex:4},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:13,tocIndex:4},{value:"\u5546\u54C1\u540D\u79F0",paraId:13,tocIndex:4},{value:"\u5355\u884C\u6587\u672C",paraId:13,tocIndex:4},{value:"\u4EF7\u683C",paraId:13,tocIndex:4},{value:"\u6570\u5B57",paraId:13,tocIndex:4},{value:"\u5E93\u5B58",paraId:13,tocIndex:4},{value:"\u6574\u6570",paraId:13,tocIndex:4},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\uFF0C\u89E6\u53D1\u5668\u9009\u62E9\u201C\u6570\u636E\u8868\u4E8B\u4EF6\u201D\uFF0C\u9009\u62E9\u201C\u8BA2\u5355\u201D\u8868\u201C\u65B0\u589E\u6570\u636E\u65F6\u201D\u89E6\u53D1\uFF0C\u5E76\u4E14\u9700\u8981\u914D\u7F6E\u4E0A\u9884\u52A0\u8F7D\u201C\u8BA2\u5355\u660E\u7EC6\u201D\u8868\u548C\u660E\u7EC6\u4E0B\u7684\u5546\u54C1\u8868\u7684\u5173\u7CFB\u6570\u636E\uFF1A",paraId:14,tocIndex:4},{value:"\u521B\u5EFA\u5FAA\u73AF\u8282\u70B9\uFF0C\u9009\u62E9\u5FAA\u73AF\u5BF9\u8C61\u4E3A\u201C\u89E6\u53D1\u6570\u636E / \u8BA2\u5355\u660E\u7EC6\u201D\uFF0C\u5373\u5BF9\u8BA2\u5355\u660E\u7EC6\u8868\u4E2D\u7684\u6BCF\u4E00\u6761\u6570\u636E\uFF1A",paraId:15,tocIndex:4},{value:"\u5FAA\u73AF\u8282\u70B9\u5185\u90E8\u521B\u5EFA\u4E00\u4E2A\u201C\u6761\u4EF6\u5224\u65AD\u201D\u8282\u70B9\uFF0C\u5224\u65AD\u5546\u54C1\u7684\u5E93\u5B58\u662F\u5426\u5145\u8DB3\uFF1A",paraId:16,tocIndex:4},{value:"\u5982\u679C\u5145\u8DB3\u5219\u5728\u201C\u662F\u201D\u7684\u5206\u652F\u4E2D\u521B\u5EFA\u4E00\u4E2A\u201C\u8BA1\u7B97\u8282\u70B9\u201D\u548C\u4E00\u4E2A\u201C\u66F4\u65B0\u6570\u636E\u201D\u8282\u70B9\uFF0C\u5C06\u8BA1\u7B97\u5B8C\u6263\u51CF\u7684\u5E93\u5B58\u66F4\u65B0\u81F3\u5BF9\u5E94\u5546\u54C1\u7684\u8BB0\u5F55\uFF1A",paraId:17,tocIndex:4},{value:"\u5426\u5219\u5728\u201C\u5426\u201D\u7684\u5206\u652F\u4E2D\u521B\u5EFA\u4E00\u4E2A\u201C\u66F4\u65B0\u6570\u636E\u201D\u8282\u70B9\uFF0C\u66F4\u65B0\u8BA2\u5355\u660E\u7EC6\u7684\u72B6\u6001\u4E3A\u201C\u65E0\u6548\u201D\uFF1A",paraId:18,tocIndex:4},{value:"\u603B\u7684\u6D41\u7A0B\u7ED3\u6784\u5982\u4E0B\u56FE\uFF1A",paraId:19,tocIndex:4},{value:"\u914D\u7F6E\u5B8C\u6210\u5E76\u6FC0\u6D3B\u8BE5\u6D41\u7A0B\u540E\uFF0C\u5F53\u521B\u5EFA\u65B0\u8BA2\u5355\u65F6\uFF0C\u4F1A\u81EA\u52A8\u68C0\u67E5\u8BA2\u5355\u660E\u7EC6\u4E2D\u7684\u5546\u54C1\u5E93\u5B58\uFF0C\u5982\u679C\u5E93\u5B58\u5145\u8DB3\u5219\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u660E\u7EC6\u5185\u7684\u5546\u54C1\u66F4\u65B0\u4E3A\u65E0\u6548\uFF08\u4EE5\u4FBF\u8BA1\u7B97\u6709\u6548\u7684\u8BA2\u5355\u603B\u4EF7\uFF09\u3002",paraId:20,tocIndex:4}],fj={},xj={title:"\u533A\u5757",toc:"menu",filename:"docs/en-US/plugin-samples/block/index.md",lastUpdated:1732240239e3,description:"NocoBase \u652F\u6301\u591A\u79CD\u7C7B\u578B\u7684\u533A\u5757\u3002"},gj=[{id:"\u533A\u5757",depth:1,title:"\u533A\u5757"}],bj=[{value:"NocoBase \u652F\u6301\u591A\u79CD\u7C7B\u578B\u7684\u533A\u5757\u3002",paraId:0,tocIndex:0},{value:"\u4F46\u662F\u76EE\u524D\u5DF2\u6709\u7684\u533A\u5757\u4E0D\u4E00\u5B9A\u6EE1\u8DB3\u9700\u6C42\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6269\u5C55\u533A\u5757\u3002",paraId:1,tocIndex:0},{value:"\u6839\u636E\u533A\u5757\u7C7B\u578B\u548C\u590D\u6742\u5EA6\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E86\u5982\u4E0B\u793A\u4F8B\uFF1A",paraId:2,tocIndex:0},{value:"Carousel",paraId:3,tocIndex:0},{value:" \u533A\u5757",paraId:3,tocIndex:0},{value:"Form",paraId:4,tocIndex:0},{value:" \u533A\u5757",paraId:4,tocIndex:0},{value:"Table",paraId:5,tocIndex:0},{value:" \u533A\u5757",paraId:5,tocIndex:0}],yj={},wj={title:"\u5B57\u6BB5",toc:"menu",filename:"docs/en-US/plugin-samples/field/index.md",lastUpdated:1732240239e3},kj=[{id:"\u5B57\u6BB5",depth:1,title:"\u5B57\u6BB5"}],Sj=[{value:"\u65E0\u503C\u5B57\u6BB5\u7EC4\u4EF6",paraId:0,tocIndex:0},{value:"\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6",paraId:1,tocIndex:0},{value:"Field interface",paraId:2,tocIndex:0}],Uj={},Pj={title:"\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6",toc:"menu",filename:"docs/en-US/plugin-samples/field/value.md",lastUpdated:1732240239e3,description:"\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6\u662F\u7EC4\u4EF6\u6709 value \u5C5E\u6027\u7684\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5C55\u793A\u5B57\u6BB5\u7684\u503C\u3002\u4E3E\u4F8B\u6765\u8BF4\uFF0CInput\u3001Select\u3001Checkbox\u3001Radio\u3001Switch \u7B49\u7EC4\u4EF6\u90FD\u662F\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6\u3002"},Tj=[{id:"\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6",depth:1,title:"\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u7EC4\u4EF6",depth:3,title:"1. \u7EC4\u4EF6"},{id:"11-\u7F16\u8F91\u6A21\u5F0F\u7EC4\u4EF6",depth:4,title:"1.1 \u7F16\u8F91\u6A21\u5F0F\u7EC4\u4EF6"},{id:"12-\u9884\u89C8\u6A21\u5F0F\u7EC4\u4EF6",depth:4,title:"1.2 \u9884\u89C8\u6A21\u5F0F\u7EC4\u4EF6"},{id:"13-\u8FDE\u63A5\u7EC4\u4EF6",depth:4,title:"1.3 \u8FDE\u63A5\u7EC4\u4EF6"},{id:"14-\u6CE8\u518C\u7EC4\u4EF6",depth:4,title:"1.4 \u6CE8\u518C\u7EC4\u4EF6"},{id:"15-\u6DFB\u52A0\u5230-field-interface-\u7684-componentoptions-\u4E2D",depth:4,title:"1.5 \u6DFB\u52A0\u5230 field interface \u7684 componentOptions \u4E2D"},{id:"2-\u5B9E\u73B0-schema-settings",depth:3,title:"2. \u5B9E\u73B0 Schema Settings"},{id:"21-\u5B9A\u4E49-schema-settings",depth:4,title:"2.1 \u5B9A\u4E49 Schema Settings"},{id:"22-\u6CE8\u518C-schema-settings",depth:4,title:"2.2 \u6CE8\u518C Schema Settings"},{id:"3-\u5B9E\u73B0-schema-settings-items",depth:3,title:"3. \u5B9E\u73B0 Schema Settings items"},{id:"31-\u5B9E\u73B0-size",depth:4,title:"3.1 \u5B9E\u73B0 Size"},{id:"32-\u5B9E\u73B0-bordered",depth:4,title:"3.2 \u5B9E\u73B0 Bordered"},{id:"33-\u5B9E\u73B0-color",depth:4,title:"3.3 \u5B9E\u73B0 Color"},{id:"4-\u591A\u8BED\u8A00",depth:3,title:"4. \u591A\u8BED\u8A00"},{id:"41-\u82F1\u8BED",depth:4,title:"4.1 \u82F1\u8BED"},{id:"41-\u4E2D\u6587",depth:4,title:"4.1 \u4E2D\u6587"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],Cj=[{value:"\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6\u662F\u7EC4\u4EF6\u6709 ",paraId:0,tocIndex:0},{value:"value",paraId:0,tocIndex:0},{value:" \u5C5E\u6027\u7684\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5C55\u793A\u5B57\u6BB5\u7684\u503C\u3002\u4E3E\u4F8B\u6765\u8BF4\uFF0C",paraId:0,tocIndex:0},{value:"Input",paraId:0,tocIndex:0},{value:"\u3001",paraId:0,tocIndex:0},{value:"Select",paraId:0,tocIndex:0},{value:"\u3001",paraId:0,tocIndex:0},{value:"Checkbox",paraId:0,tocIndex:0},{value:"\u3001",paraId:0,tocIndex:0},{value:"Radio",paraId:0,tocIndex:0},{value:"\u3001",paraId:0,tocIndex:0},{value:"Switch",paraId:0,tocIndex:0},{value:" \u7B49\u7EC4\u4EF6\u90FD\u662F\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6\u3002",paraId:0,tocIndex:0},{value:"\u672C\u5B9E\u4F8B\u4F1A\u65B0\u589E ",paraId:1,tocIndex:1},{value:"QRCode",paraId:1,tocIndex:1},{value:" \u7EC4\u4EF6\uFF0C\u7528\u4E8E URL \u5B57\u6BB5\u7684\u503C\u5C55\u793A\uFF0C\u5E76\u652F\u6301 ",paraId:1,tocIndex:1},{value:"\u5C3A\u5BF8",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"\u989C\u8272",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"\u8FB9\u6846",paraId:1,tocIndex:1},{value:" \u7684\u914D\u7F6E\u3002",paraId:1,tocIndex:1},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:2,tocIndex:1},{value:"plugin-samples",paraId:2,tocIndex:1},{value:" \u4E2D\u67E5\u770B\u3002",paraId:2,tocIndex:1},{value:` +`,paraId:3,tocIndex:0},{value:"\u5728 NocoBase \u5185\u7F6E\u7684\u9875\u9762\u6A21\u677F\u4E2D\uFF0C\u83DC\u5355\u4F1A\u51FA\u73B0\u5728\u9876\u90E8\u548C\u5DE6\u4FA7\u3002",paraId:4,tocIndex:1},{value:"\u70B9\u51FB Add menu item\uFF0C\u9009\u62E9\u6DFB\u52A0\u7684\u7C7B\u578B\u3002\u652F\u6301\u65E0\u9650\u7EA7\u5B50\u83DC\u5355\u3002",paraId:5,tocIndex:2},{value:"\u5C06\u5149\u6807\u79FB\u5230\u83DC\u5355\u9879\u4E0A\uFF0C\u53F3\u4E0A\u89D2\u4F1A\u51FA\u73B0\u6392\u5E8F\u548C\u914D\u7F6E\u6309\u94AE\u3002\u6309\u4F4F\u6392\u5E8F\u6309\u94AE\uFF0C\u53EF\u4EE5\u62D6\u62FD\u6392\u5E8F\u3002",paraId:6,tocIndex:3},{value:"\u5BF9\u83DC\u5355\u9879\u53EF\u64CD\u4F5C\u7684\u914D\u7F6E\uFF1A",paraId:7,tocIndex:3},{value:"Edit",paraId:8,tocIndex:3},{value:"Move to",paraId:8,tocIndex:3},{value:"Insert before",paraId:8,tocIndex:3},{value:"Insert after",paraId:8,tocIndex:3},{value:"Insert Inner",paraId:8,tocIndex:3},{value:"Delete",paraId:8,tocIndex:3}],sj={},uj={title:"\u79FB\u52A8\u7AEF",toc:"menu",filename:"docs/en-US/manual/mobile-client/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},pj=[{id:"\u79FB\u52A8\u7AEF",depth:1,title:"\u79FB\u52A8\u7AEF"}],Ij=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],_j={},vj={title:"\u5FAA\u73AF",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/loop.md",lastUpdated:173254844e4,description:"\u5FAA\u73AF\u76F8\u5F53\u7F16\u7A0B\u8BED\u8A00\u4E2D\u7684 for/while/forEach \u7B49\u8BED\u6CD5\u7ED3\u6784\uFF0C\u5F53\u9700\u8981\u4E00\u5B9A\u6B21\u6570\u6216\u9488\u5BF9\u67D0\u4E2A\u6570\u636E\u96C6\u5408\uFF08\u6570\u7EC4\uFF09\u91CD\u590D\u6267\u884C\u4E00\u4E9B\u64CD\u4F5C\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5FAA\u73AF\u8282\u70B9\u3002"},mj=[{id:"\u5FAA\u73AF",depth:1,title:"\u5FAA\u73AF"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"},{id:"\u5FAA\u73AF\u5BF9\u8C61",depth:3,title:"\u5FAA\u73AF\u5BF9\u8C61"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"}],hj=[{value:"\u5FAA\u73AF\u76F8\u5F53\u7F16\u7A0B\u8BED\u8A00\u4E2D\u7684 ",paraId:0,tocIndex:0},{value:"for",paraId:0,tocIndex:0},{value:"/",paraId:0,tocIndex:0},{value:"while",paraId:0,tocIndex:0},{value:"/",paraId:0,tocIndex:0},{value:"forEach",paraId:0,tocIndex:0},{value:" \u7B49\u8BED\u6CD5\u7ED3\u6784\uFF0C\u5F53\u9700\u8981\u4E00\u5B9A\u6B21\u6570\u6216\u9488\u5BF9\u67D0\u4E2A\u6570\u636E\u96C6\u5408\uFF08\u6570\u7EC4\uFF09\u91CD\u590D\u6267\u884C\u4E00\u4E9B\u64CD\u4F5C\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5FAA\u73AF\u8282\u70B9\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201C\u5FAA\u73AF\u201D\u8282\u70B9\uFF1A",paraId:1,tocIndex:1},{value:"\u521B\u5EFA\u5FAA\u73AF\u8282\u70B9\u540E\uFF0C\u4F1A\u751F\u6210\u4E00\u4E2A\u5FAA\u73AF\u5185\u90E8\u7684\u5206\u652F\uFF0C\u53EF\u4EE5\u5728\u5206\u652F\u4E2D\u589E\u52A0\u4EFB\u610F\u591A\u4E2A\u8282\u70B9\uFF0C\u8FD9\u4E9B\u8282\u70B9\u9664\u4E86\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u8FD8\u53EF\u4EE5\u4F7F\u7528\u5FAA\u73AF\u4E0A\u4E0B\u6587\u7684\u5C40\u90E8\u53D8\u91CF\uFF0C\u4F8B\u5982\u5FAA\u73AF\u96C6\u5408\u4E2D\u6BCF\u6B21\u5FAA\u73AF\u5230\u7684\u6570\u636E\u5BF9\u8C61\uFF0C\u6216\u8005\u662F\u5FAA\u73AF\u6B21\u6570\u7684\u7D22\u5F15\uFF08\u7D22\u5F15\u4ECE ",paraId:2,tocIndex:1},{value:"0",paraId:2,tocIndex:1},{value:" \u5F00\u59CB\u8BA1\u6570\uFF09\u3002\u5C40\u90E8\u53D8\u91CF\u7684\u4F5C\u7528\u57DF\u4EC5\u9650\u4E8E\u5FAA\u73AF\u5185\u90E8\uFF0C\u5982\u679C\u6709\u591A\u5C42\u5FAA\u73AF\u5D4C\u5957\uFF0C\u53EF\u4EE5\u6309\u5C42\u4F7F\u7528\u5177\u4F53\u5FAA\u73AF\u7684\u5C40\u90E8\u53D8\u91CF\u3002",paraId:2,tocIndex:1},{value:"\u5FAA\u73AF\u4F1A\u4EE5\u5FAA\u73AF\u5BF9\u8C61\u4E0D\u540C\u6570\u636E\u7C7B\u578B\u505A\u4E0D\u540C\u7684\u5904\u7406\uFF1A",paraId:3,tocIndex:3},{value:"\u6570\u7EC4",paraId:4,tocIndex:3},{value:"\uFF1A\u6700\u5E38\u89C1\u7684\u60C5\u51B5\uFF0C\u901A\u5E38\u662F\u53EF\u4EE5\u9009\u62E9\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u6BD4\u5982\u67E5\u8BE2\u8282\u70B9\u7684\u591A\u6761\u6570\u636E\u7ED3\u679C\uFF0C\u6216\u8005\u9884\u52A0\u8F7D\u7684\u5BF9\u591A\u5173\u7CFB\u6570\u636E\u3002\u5982\u679C\u9009\u62E9\u7684\u662F\u6570\u7EC4\uFF0C\u5FAA\u73AF\u8282\u70B9\u4F1A\u904D\u5386\u6570\u7EC4\u4E2D\u7684\u6BCF\u4E2A\u5143\u7D20\uFF0C\u6BCF\u6B21\u5FAA\u73AF\u90FD\u4F1A\u5C06\u5F53\u524D\u5143\u7D20\u8D4B\u503C\u7ED9\u5FAA\u73AF\u4E0A\u4E0B\u6587\u7684\u5C40\u90E8\u53D8\u91CF\u3002",paraId:4,tocIndex:3},{value:"\u6570\u5B57",paraId:5,tocIndex:3},{value:"\uFF1A\u5F53\u9009\u62E9\u7684\u53D8\u91CF\u662F\u4E00\u4E2A\u6570\u5B57\u662F\uFF0C\u4F1A\u4EE5\u8BE5\u6570\u5B57\u4E3A\u5FAA\u73AF\u6B21\u6570\uFF0C\u5C40\u57DF\u53D8\u91CF\u4E2D\u7684\u5FAA\u73AF\u6B21\u6570\u7684\u7D22\u5F15\u4E5F\u5373\u5FAA\u73AF\u5BF9\u8C61\u7684\u503C\u3002",paraId:5,tocIndex:3},{value:"\u5B57\u7B26\u4E32",paraId:6,tocIndex:3},{value:"\uFF1A\u5F53\u9009\u62E9\u7684\u53D8\u91CF\u662F\u4E00\u4E2A\u5B57\u7B26\u4E32\u65F6\uFF0C\u4F1A\u4EE5\u8BE5\u5B57\u7B26\u4E32\u7684\u957F\u5EA6\u4E3A\u5FAA\u73AF\u6B21\u6570\uFF0C\u6BCF\u6B21\u6309\u7D22\u5F15\u5904\u7406\u5B57\u7B26\u4E32\u4E2D\u7684\u6BCF\u4E00\u4E2A\u5B57\u7B26\u3002",paraId:6,tocIndex:3},{value:"\u5176\u4ED6",paraId:7,tocIndex:3},{value:"\uFF1A\u5176\u4ED6\u7C7B\u578B\u7684\u503C\uFF08\u5305\u62EC\u5BF9\u8C61\u7C7B\u578B\uFF09\u90FD\u4EC5\u4F5C\u4E3A\u5355\u6B21\u5904\u7406\u7684\u5FAA\u73AF\u5BF9\u8C61\uFF0C\u4E5F\u53EA\u4F1A\u5FAA\u73AF\u4E00\u6B21\uFF0C\u901A\u5E38\u8FD9\u79CD\u60C5\u51B5\u4E0D\u9700\u8981\u4F7F\u7528\u5FAA\u73AF\u3002",paraId:7,tocIndex:3},{value:"\u9664\u4E86\u9009\u62E9\u53D8\u91CF\uFF0C\u9488\u5BF9\u6570\u5B57\u548C\u5B57\u7B26\u4E32\u7C7B\u578B\u4E5F\u53EF\u4EE5\u76F4\u63A5\u8F93\u5165\u5E38\u91CF\uFF0C\u4F8B\u5982\u8F93\u5165 ",paraId:8,tocIndex:3},{value:"5",paraId:8,tocIndex:3},{value:"\uFF08\u6570\u5B57\u7C7B\u578B\uFF09\uFF0C\u5FAA\u73AF\u8282\u70B9\u4F1A\u5FAA\u73AF 5 \u6B21\uFF0C\u8F93\u5165 ",paraId:8,tocIndex:3},{value:"abc",paraId:8,tocIndex:3},{value:"\uFF08\u5B57\u7B26\u4E32\u7C7B\u578B\uFF09\uFF0C\u5FAA\u73AF\u8282\u70B9\u4F1A\u5FAA\u73AF 3 \u6B21\uFF0C\u5206\u522B\u5904\u7406 ",paraId:8,tocIndex:3},{value:"a",paraId:8,tocIndex:3},{value:"\u3001",paraId:8,tocIndex:3},{value:"b",paraId:8,tocIndex:3},{value:"\u3001",paraId:8,tocIndex:3},{value:"c",paraId:8,tocIndex:3},{value:" \u4E09\u4E2A\u5B57\u7B26\u3002\u5728\u9009\u62E9\u53D8\u91CF\u7684\u5DE5\u5177\u4E2D\u9009\u62E9\u5E0C\u671B\u4F7F\u7528\u5E38\u91CF\u7684\u7C7B\u578B\u3002",paraId:8,tocIndex:3},{value:"\u4F8B\u5982\u5728\u8BA2\u5355\u4E0B\u5355\u65F6\uFF0C\u9700\u8981\u5BF9\u8BA2\u5355\u4E2D\u7684\u6BCF\u4E2A\u5546\u54C1\u8FDB\u884C\u5E93\u5B58\u68C0\u67E5\uFF0C\u5982\u679C\u5E93\u5B58\u5145\u8DB3\u5219\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u660E\u7EC6\u5185\u7684\u5546\u54C1\u66F4\u65B0\u4E3A\u65E0\u6548\u3002",paraId:9,tocIndex:4},{value:"\u521B\u5EFA\u4E09\u5F20\u8868\uFF0C\u5546\u54C1\u8868 <-(1:m)-- \u8BA2\u5355\u660E\u7EC6\u8868 --(m:1)-> \u8BA2\u5355\u8868\uFF0C\u6570\u636E\u6A21\u578B\u5982\u4E0B\uFF1A",paraId:10,tocIndex:4},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:11,tocIndex:4},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:11,tocIndex:4},{value:"\u8BA2\u5355\u5546\u54C1\u660E\u7EC6",paraId:11,tocIndex:4},{value:"\u591A\u5BF9\u4E00\uFF08\u660E\u7EC6\uFF09",paraId:11,tocIndex:4},{value:"\u8BA2\u5355\u603B\u4EF7",paraId:11,tocIndex:4},{value:"\u6570\u5B57",paraId:11,tocIndex:4},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:12,tocIndex:4},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:12,tocIndex:4},{value:"\u5546\u54C1",paraId:12,tocIndex:4},{value:"\u4E00\u5BF9\u591A\uFF08\u5546\u54C1\uFF09",paraId:12,tocIndex:4},{value:"\u6570\u91CF",paraId:12,tocIndex:4},{value:"\u6570\u5B57",paraId:12,tocIndex:4},{value:"\u5B57\u6BB5\u540D\u79F0",paraId:13,tocIndex:4},{value:"\u5B57\u6BB5\u7C7B\u578B",paraId:13,tocIndex:4},{value:"\u5546\u54C1\u540D\u79F0",paraId:13,tocIndex:4},{value:"\u5355\u884C\u6587\u672C",paraId:13,tocIndex:4},{value:"\u4EF7\u683C",paraId:13,tocIndex:4},{value:"\u6570\u5B57",paraId:13,tocIndex:4},{value:"\u5E93\u5B58",paraId:13,tocIndex:4},{value:"\u6574\u6570",paraId:13,tocIndex:4},{value:"\u521B\u5EFA\u5DE5\u4F5C\u6D41\uFF0C\u89E6\u53D1\u5668\u9009\u62E9\u201C\u6570\u636E\u8868\u4E8B\u4EF6\u201D\uFF0C\u9009\u62E9\u201C\u8BA2\u5355\u201D\u8868\u201C\u65B0\u589E\u6570\u636E\u65F6\u201D\u89E6\u53D1\uFF0C\u5E76\u4E14\u9700\u8981\u914D\u7F6E\u4E0A\u9884\u52A0\u8F7D\u201C\u8BA2\u5355\u660E\u7EC6\u201D\u8868\u548C\u660E\u7EC6\u4E0B\u7684\u5546\u54C1\u8868\u7684\u5173\u7CFB\u6570\u636E\uFF1A",paraId:14,tocIndex:4},{value:"\u521B\u5EFA\u5FAA\u73AF\u8282\u70B9\uFF0C\u9009\u62E9\u5FAA\u73AF\u5BF9\u8C61\u4E3A\u201C\u89E6\u53D1\u6570\u636E / \u8BA2\u5355\u660E\u7EC6\u201D\uFF0C\u5373\u5BF9\u8BA2\u5355\u660E\u7EC6\u8868\u4E2D\u7684\u6BCF\u4E00\u6761\u6570\u636E\uFF1A",paraId:15,tocIndex:4},{value:"\u5FAA\u73AF\u8282\u70B9\u5185\u90E8\u521B\u5EFA\u4E00\u4E2A\u201C\u6761\u4EF6\u5224\u65AD\u201D\u8282\u70B9\uFF0C\u5224\u65AD\u5546\u54C1\u7684\u5E93\u5B58\u662F\u5426\u5145\u8DB3\uFF1A",paraId:16,tocIndex:4},{value:"\u5982\u679C\u5145\u8DB3\u5219\u5728\u201C\u662F\u201D\u7684\u5206\u652F\u4E2D\u521B\u5EFA\u4E00\u4E2A\u201C\u8BA1\u7B97\u8282\u70B9\u201D\u548C\u4E00\u4E2A\u201C\u66F4\u65B0\u6570\u636E\u201D\u8282\u70B9\uFF0C\u5C06\u8BA1\u7B97\u5B8C\u6263\u51CF\u7684\u5E93\u5B58\u66F4\u65B0\u81F3\u5BF9\u5E94\u5546\u54C1\u7684\u8BB0\u5F55\uFF1A",paraId:17,tocIndex:4},{value:"\u5426\u5219\u5728\u201C\u5426\u201D\u7684\u5206\u652F\u4E2D\u521B\u5EFA\u4E00\u4E2A\u201C\u66F4\u65B0\u6570\u636E\u201D\u8282\u70B9\uFF0C\u66F4\u65B0\u8BA2\u5355\u660E\u7EC6\u7684\u72B6\u6001\u4E3A\u201C\u65E0\u6548\u201D\uFF1A",paraId:18,tocIndex:4},{value:"\u603B\u7684\u6D41\u7A0B\u7ED3\u6784\u5982\u4E0B\u56FE\uFF1A",paraId:19,tocIndex:4},{value:"\u914D\u7F6E\u5B8C\u6210\u5E76\u6FC0\u6D3B\u8BE5\u6D41\u7A0B\u540E\uFF0C\u5F53\u521B\u5EFA\u65B0\u8BA2\u5355\u65F6\uFF0C\u4F1A\u81EA\u52A8\u68C0\u67E5\u8BA2\u5355\u660E\u7EC6\u4E2D\u7684\u5546\u54C1\u5E93\u5B58\uFF0C\u5982\u679C\u5E93\u5B58\u5145\u8DB3\u5219\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u660E\u7EC6\u5185\u7684\u5546\u54C1\u66F4\u65B0\u4E3A\u65E0\u6548\uFF08\u4EE5\u4FBF\u8BA1\u7B97\u6709\u6548\u7684\u8BA2\u5355\u603B\u4EF7\uFF09\u3002",paraId:20,tocIndex:4}],fj={},xj={title:"\u533A\u5757",toc:"menu",filename:"docs/en-US/plugin-samples/block/index.md",lastUpdated:173254844e4,description:"NocoBase \u652F\u6301\u591A\u79CD\u7C7B\u578B\u7684\u533A\u5757\u3002"},gj=[{id:"\u533A\u5757",depth:1,title:"\u533A\u5757"}],bj=[{value:"NocoBase \u652F\u6301\u591A\u79CD\u7C7B\u578B\u7684\u533A\u5757\u3002",paraId:0,tocIndex:0},{value:"\u4F46\u662F\u76EE\u524D\u5DF2\u6709\u7684\u533A\u5757\u4E0D\u4E00\u5B9A\u6EE1\u8DB3\u9700\u6C42\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6269\u5C55\u533A\u5757\u3002",paraId:1,tocIndex:0},{value:"\u6839\u636E\u533A\u5757\u7C7B\u578B\u548C\u590D\u6742\u5EA6\uFF0C\u6211\u4EEC\u63D0\u4F9B\u4E86\u5982\u4E0B\u793A\u4F8B\uFF1A",paraId:2,tocIndex:0},{value:"Carousel",paraId:3,tocIndex:0},{value:" \u533A\u5757",paraId:3,tocIndex:0},{value:"Form",paraId:4,tocIndex:0},{value:" \u533A\u5757",paraId:4,tocIndex:0},{value:"Table",paraId:5,tocIndex:0},{value:" \u533A\u5757",paraId:5,tocIndex:0}],yj={},wj={title:"\u5B57\u6BB5",toc:"menu",filename:"docs/en-US/plugin-samples/field/index.md",lastUpdated:173254844e4},kj=[{id:"\u5B57\u6BB5",depth:1,title:"\u5B57\u6BB5"}],Sj=[{value:"\u65E0\u503C\u5B57\u6BB5\u7EC4\u4EF6",paraId:0,tocIndex:0},{value:"\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6",paraId:1,tocIndex:0},{value:"Field interface",paraId:2,tocIndex:0}],Uj={},Pj={title:"\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6",toc:"menu",filename:"docs/en-US/plugin-samples/field/value.md",lastUpdated:173254844e4,description:"\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6\u662F\u7EC4\u4EF6\u6709 value \u5C5E\u6027\u7684\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5C55\u793A\u5B57\u6BB5\u7684\u503C\u3002\u4E3E\u4F8B\u6765\u8BF4\uFF0CInput\u3001Select\u3001Checkbox\u3001Radio\u3001Switch \u7B49\u7EC4\u4EF6\u90FD\u662F\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6\u3002"},Tj=[{id:"\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6",depth:1,title:"\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6"},{id:"\u793A\u4F8B\u8BF4\u660E",depth:2,title:"\u793A\u4F8B\u8BF4\u660E"},{id:"\u521D\u59CB\u5316\u63D2\u4EF6",depth:2,title:"\u521D\u59CB\u5316\u63D2\u4EF6"},{id:"\u529F\u80FD\u5B9E\u73B0",depth:2,title:"\u529F\u80FD\u5B9E\u73B0"},{id:"1-\u7EC4\u4EF6",depth:3,title:"1. \u7EC4\u4EF6"},{id:"11-\u7F16\u8F91\u6A21\u5F0F\u7EC4\u4EF6",depth:4,title:"1.1 \u7F16\u8F91\u6A21\u5F0F\u7EC4\u4EF6"},{id:"12-\u9884\u89C8\u6A21\u5F0F\u7EC4\u4EF6",depth:4,title:"1.2 \u9884\u89C8\u6A21\u5F0F\u7EC4\u4EF6"},{id:"13-\u8FDE\u63A5\u7EC4\u4EF6",depth:4,title:"1.3 \u8FDE\u63A5\u7EC4\u4EF6"},{id:"14-\u6CE8\u518C\u7EC4\u4EF6",depth:4,title:"1.4 \u6CE8\u518C\u7EC4\u4EF6"},{id:"15-\u6DFB\u52A0\u5230-field-interface-\u7684-componentoptions-\u4E2D",depth:4,title:"1.5 \u6DFB\u52A0\u5230 field interface \u7684 componentOptions \u4E2D"},{id:"2-\u5B9E\u73B0-schema-settings",depth:3,title:"2. \u5B9E\u73B0 Schema Settings"},{id:"21-\u5B9A\u4E49-schema-settings",depth:4,title:"2.1 \u5B9A\u4E49 Schema Settings"},{id:"22-\u6CE8\u518C-schema-settings",depth:4,title:"2.2 \u6CE8\u518C Schema Settings"},{id:"3-\u5B9E\u73B0-schema-settings-items",depth:3,title:"3. \u5B9E\u73B0 Schema Settings items"},{id:"31-\u5B9E\u73B0-size",depth:4,title:"3.1 \u5B9E\u73B0 Size"},{id:"32-\u5B9E\u73B0-bordered",depth:4,title:"3.2 \u5B9E\u73B0 Bordered"},{id:"33-\u5B9E\u73B0-color",depth:4,title:"3.3 \u5B9E\u73B0 Color"},{id:"4-\u591A\u8BED\u8A00",depth:3,title:"4. \u591A\u8BED\u8A00"},{id:"41-\u82F1\u8BED",depth:4,title:"4.1 \u82F1\u8BED"},{id:"41-\u4E2D\u6587",depth:4,title:"4.1 \u4E2D\u6587"},{id:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883",depth:2,title:"\u6253\u5305\u548C\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883"}],Cj=[{value:"\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6\u662F\u7EC4\u4EF6\u6709 ",paraId:0,tocIndex:0},{value:"value",paraId:0,tocIndex:0},{value:" \u5C5E\u6027\u7684\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5C55\u793A\u5B57\u6BB5\u7684\u503C\u3002\u4E3E\u4F8B\u6765\u8BF4\uFF0C",paraId:0,tocIndex:0},{value:"Input",paraId:0,tocIndex:0},{value:"\u3001",paraId:0,tocIndex:0},{value:"Select",paraId:0,tocIndex:0},{value:"\u3001",paraId:0,tocIndex:0},{value:"Checkbox",paraId:0,tocIndex:0},{value:"\u3001",paraId:0,tocIndex:0},{value:"Radio",paraId:0,tocIndex:0},{value:"\u3001",paraId:0,tocIndex:0},{value:"Switch",paraId:0,tocIndex:0},{value:" \u7B49\u7EC4\u4EF6\u90FD\u662F\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6\u3002",paraId:0,tocIndex:0},{value:"\u672C\u5B9E\u4F8B\u4F1A\u65B0\u589E ",paraId:1,tocIndex:1},{value:"QRCode",paraId:1,tocIndex:1},{value:" \u7EC4\u4EF6\uFF0C\u7528\u4E8E URL \u5B57\u6BB5\u7684\u503C\u5C55\u793A\uFF0C\u5E76\u652F\u6301 ",paraId:1,tocIndex:1},{value:"\u5C3A\u5BF8",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"\u989C\u8272",paraId:1,tocIndex:1},{value:"\u3001",paraId:1,tocIndex:1},{value:"\u8FB9\u6846",paraId:1,tocIndex:1},{value:" \u7684\u914D\u7F6E\u3002",paraId:1,tocIndex:1},{value:"\u672C\u6587\u6863\u5B8C\u6574\u7684\u793A\u4F8B\u4EE3\u7801\u53EF\u4EE5\u5728 ",paraId:2,tocIndex:1},{value:"plugin-samples",paraId:2,tocIndex:1},{value:" \u4E2D\u67E5\u770B\u3002",paraId:2,tocIndex:1},{value:` `,paraId:3},{value:"\u6211\u4EEC\u6309\u7167 ",paraId:4,tocIndex:2},{value:"\u7F16\u5199\u7B2C\u4E00\u4E2A\u63D2\u4EF6",paraId:5,tocIndex:2},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u5982\u679C\u6CA1\u6709\u4E00\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u5148\u521B\u5EFA\u4E00\u4E2A\u9879\u76EE\uFF0C\u5982\u679C\u5DF2\u7ECF\u6709\u4E86\u6216\u8005\u662F clone \u7684\u6E90\u7801\uFF0C\u5219\u8DF3\u8FC7\u8FD9\u4E00\u6B65\u3002",paraId:4,tocIndex:2},{value:`yarn create nocobase-app my-nocobase-app -d sqlite cd my-nocobase-app yarn install @@ -15542,7 +15595,7 @@ export const qrCodeComponentFieldSettings = new SchemaSettings({ } `,paraId:62,tocIndex:19},{value:"\u6309\u7167 ",paraId:63,tocIndex:20},{value:"\u6784\u5EFA\u5E76\u6253\u5305\u63D2\u4EF6",paraId:64,tocIndex:20},{value:" \u6587\u6863\u8BF4\u660E\uFF0C\u6211\u4EEC\u53EF\u4EE5\u6253\u5305\u63D2\u4EF6\u5E76\u4E0A\u4F20\u5230\u751F\u4EA7\u73AF\u5883\u3002",paraId:63,tocIndex:20},{value:"\u5982\u679C\u662F clone \u7684\u6E90\u7801\uFF0C\u9700\u8981\u5148\u6267\u884C\u4E00\u6B21\u5168\u91CF build\uFF0C\u5C06\u63D2\u4EF6\u7684\u4F9D\u8D56\u4E5F\u6784\u5EFA\u597D\u3002",paraId:65,tocIndex:20},{value:`yarn build `,paraId:66,tocIndex:20},{value:"\u5982\u679C\u662F\u4F7F\u7528\u7684 ",paraId:67,tocIndex:20},{value:"create-nocobase-app",paraId:67,tocIndex:20},{value:" \u521B\u5EFA\u7684\u9879\u76EE\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A",paraId:67,tocIndex:20},{value:`yarn build @nocobase-sample/plugin-field-value --tar -`,paraId:68,tocIndex:20},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:69,tocIndex:20},{value:"storage/tar/@nocobase-sample/plugin-field-value.tar.gz",paraId:69,tocIndex:20},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:69,tocIndex:20},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:70,tocIndex:20},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:69,tocIndex:20}],Aj={},qj={title:"\u6253\u5370",toc:"menu",filename:"docs/en-US/plugins/action-print/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},Ej=[{id:"\u6253\u5370",depth:1,title:"\u6253\u5370"}],Dj=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],Oj={},Rj={title:"\u4E2D\u56FD\u884C\u653F\u533A",toc:"menu",filename:"docs/en-US/plugins/china-region/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},Mj=[{id:"\u4E2D\u56FD\u884C\u653F\u533A",depth:1,title:"\u4E2D\u56FD\u884C\u653F\u533A"}],Lj=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],Nj={},zj={title:"\u6587\u4EF6\u7BA1\u7406\u5668",toc:"menu",filename:"docs/en-US/plugins/file-manager/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},Fj=[{id:"\u6587\u4EF6\u7BA1\u7406\u5668",depth:1,title:"\u6587\u4EF6\u7BA1\u7406\u5668"}],Bj=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],jj={},Hj={title:"\u672C\u5730\u5B58\u50A8",toc:"menu",filename:"docs/en-US/plugins/file-manager/local.md",lastUpdated:1732240239e3},Wj=[{id:"\u672C\u5730\u5B58\u50A8",depth:1,title:"\u672C\u5730\u5B58\u50A8"}],$j=[],Gj={},Vj={title:"iframe \u533A\u5757",toc:"menu",filename:"docs/en-US/plugins/iframe-block/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},Kj=[{id:"iframe-\u533A\u5757",depth:1,title:"iframe \u533A\u5757"}],Zj=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],Yj={},Qj={title:"\u4E3B\u9898\u7F16\u8F91\u5668",toc:"menu",filename:"docs/en-US/plugins/theme-editor/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},Jj=[{id:"\u4E3B\u9898\u7F16\u8F91\u5668",depth:1,title:"\u4E3B\u9898\u7F16\u8F91\u5668"}],Xj=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],eH={},aH={title:"\u9A8C\u8BC1\u7801",toc:"menu",filename:"docs/en-US/plugins/verification/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},tH=[{id:"\u9A8C\u8BC1\u7801",depth:1,title:"\u9A8C\u8BC1\u7801"}],nH=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],oH={},rH={title:"Workflow Sql",toc:"menu",filename:"docs/en-US/plugins/workflow-sql/index.md",lastUpdated:1732240239e3},dH=[],iH=[],lH={},cH={title:"v1.0.0-alpha.15: 2024-05-19",toc:"menu",filename:"docs/en-US/welcome/changelog/20240519.md",lastUpdated:1732240239e3,description:"Supports users logging in to NocoBase using their LDAP server credentials. For more information, refer to the Authentication: LDAP documentation."},sH=[{id:"v100-alpha15-2024-05-19",depth:1,title:"v1.0.0-alpha.15: 2024-05-19"},{id:"new-features",depth:2,title:"New features"},{id:"auth-plugin-ldap-authentication",depth:3,title:"Auth plugin: LDAP authentication"},{id:"workflow-plugin-custom-action-trigger",depth:3,title:"Workflow plugin: custom action trigger"},{id:"table-block-supports-fixed-columns",depth:3,title:"Table block supports fixed columns"},{id:"supports-adding-gantt-and-kanban-in-pop-up-windows",depth:3,title:"Supports adding Gantt and Kanban in pop-up windows"},{id:"the-details-block-supports-linkage-rules",depth:3,title:"The details block supports linkage rules"},{id:"workflow-http-request-node-supports-applicationwww-x-form-urlencoded-format-data",depth:3,title:"Workflow HTTP request node supports application/www-x-form-urlencoded format data"},{id:"workflow-http-request-node-input-boxes-supports-string-templates",depth:3,title:"Workflow HTTP request node input boxes supports string templates"},{id:"plugin-samples-for-development",depth:3,title:"Plugin samples for development"},{id:"improvements",depth:2,title:"Improvements"},{id:"improved-configure-actions-interaction",depth:3,title:'Improved "Configure actions" interaction'},{id:"unified-data-format-for-workflow-http-request-node-result",depth:3,title:"Unified data format for workflow HTTP request node result:"},{id:"reorganize-workflow-handbook",depth:3,title:"Reorganize workflow handbook"},{id:"fixes",depth:2,title:"Fixes"},{id:"log-plugin-now-only-shows-logs-of-the-current-application",depth:3,title:"Log plugin now only shows logs of the current application"}],uH=[{value:"Supports users logging in to NocoBase using their LDAP server credentials. For more information, refer to the ",paraId:0,tocIndex:2},{value:"Authentication: LDAP",paraId:1,tocIndex:2},{value:" documentation.",paraId:0,tocIndex:2},{value:"When CRUD actions cannot satisfy your needs, you can use the custom action trigger of the workflow to orchestrate your own data processing logic. For more information, refer to the ",paraId:2,tocIndex:3},{value:"Workflow / Custom action trigger",paraId:3,tocIndex:3},{value:" documentation.",paraId:2,tocIndex:3},{value:"Allows configuring the visible and hidden properties of fields.",paraId:4,tocIndex:6},{value:"application/www-x-form-urlencoded",paraId:5},{value:"View the documentation for ",paraId:6,tocIndex:9},{value:"plugin examples",paraId:7,tocIndex:9},{value:".",paraId:6,tocIndex:9},{value:'All actions are displayed in a single list in the dropdown menu, no longer distinguishing between "Enable actions" and "Customize".',paraId:8,tocIndex:11},{value:"Actions that can only be added once: These actions retain the switch effect.",paraId:9,tocIndex:11},{value:"Actions that can be added repeatedly: These actions no longer use the switch interaction and can be added multiple times.",paraId:9,tocIndex:11},{value:`Merged similar actions +`,paraId:68,tocIndex:20},{value:"\u8FD9\u6837\u5C31\u53EF\u4EE5\u770B\u5230 ",paraId:69,tocIndex:20},{value:"storage/tar/@nocobase-sample/plugin-field-value.tar.gz",paraId:69,tocIndex:20},{value:" \u6587\u4EF6\u4E86\uFF0C\u7136\u540E\u901A\u8FC7",paraId:69,tocIndex:20},{value:"\u4E0A\u4F20\u7684\u65B9\u5F0F",paraId:70,tocIndex:20},{value:"\u8FDB\u884C\u5B89\u88C5\u3002",paraId:69,tocIndex:20}],Aj={},qj={title:"\u6253\u5370",toc:"menu",filename:"docs/en-US/plugins/action-print/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},Ej=[{id:"\u6253\u5370",depth:1,title:"\u6253\u5370"}],Dj=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],Oj={},Rj={title:"\u4E2D\u56FD\u884C\u653F\u533A",toc:"menu",filename:"docs/en-US/plugins/china-region/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},Mj=[{id:"\u4E2D\u56FD\u884C\u653F\u533A",depth:1,title:"\u4E2D\u56FD\u884C\u653F\u533A"}],Lj=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],Nj={},zj={title:"\u6587\u4EF6\u7BA1\u7406\u5668",toc:"menu",filename:"docs/en-US/plugins/file-manager/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},Fj=[{id:"\u6587\u4EF6\u7BA1\u7406\u5668",depth:1,title:"\u6587\u4EF6\u7BA1\u7406\u5668"}],Bj=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],jj={},Hj={title:"\u672C\u5730\u5B58\u50A8",toc:"menu",filename:"docs/en-US/plugins/file-manager/local.md",lastUpdated:173254844e4},Wj=[{id:"\u672C\u5730\u5B58\u50A8",depth:1,title:"\u672C\u5730\u5B58\u50A8"}],$j=[],Gj={},Vj={title:"iframe \u533A\u5757",toc:"menu",filename:"docs/en-US/plugins/iframe-block/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},Kj=[{id:"iframe-\u533A\u5757",depth:1,title:"iframe \u533A\u5757"}],Zj=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],Yj={},Qj={title:"\u4E3B\u9898\u7F16\u8F91\u5668",toc:"menu",filename:"docs/en-US/plugins/theme-editor/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},Jj=[{id:"\u4E3B\u9898\u7F16\u8F91\u5668",depth:1,title:"\u4E3B\u9898\u7F16\u8F91\u5668"}],Xj=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],eH={},aH={title:"\u9A8C\u8BC1\u7801",toc:"menu",filename:"docs/en-US/plugins/verification/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},tH=[{id:"\u9A8C\u8BC1\u7801",depth:1,title:"\u9A8C\u8BC1\u7801"}],nH=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],oH={},rH={title:"Workflow Sql",toc:"menu",filename:"docs/en-US/plugins/workflow-sql/index.md",lastUpdated:173254844e4},dH=[],iH=[],lH={},cH={title:"v1.0.0-alpha.15: 2024-05-19",toc:"menu",filename:"docs/en-US/welcome/changelog/20240519.md",lastUpdated:173254844e4,description:"Supports users logging in to NocoBase using their LDAP server credentials. For more information, refer to the Authentication: LDAP documentation."},sH=[{id:"v100-alpha15-2024-05-19",depth:1,title:"v1.0.0-alpha.15: 2024-05-19"},{id:"new-features",depth:2,title:"New features"},{id:"auth-plugin-ldap-authentication",depth:3,title:"Auth plugin: LDAP authentication"},{id:"workflow-plugin-custom-action-trigger",depth:3,title:"Workflow plugin: custom action trigger"},{id:"table-block-supports-fixed-columns",depth:3,title:"Table block supports fixed columns"},{id:"supports-adding-gantt-and-kanban-in-pop-up-windows",depth:3,title:"Supports adding Gantt and Kanban in pop-up windows"},{id:"the-details-block-supports-linkage-rules",depth:3,title:"The details block supports linkage rules"},{id:"workflow-http-request-node-supports-applicationwww-x-form-urlencoded-format-data",depth:3,title:"Workflow HTTP request node supports application/www-x-form-urlencoded format data"},{id:"workflow-http-request-node-input-boxes-supports-string-templates",depth:3,title:"Workflow HTTP request node input boxes supports string templates"},{id:"plugin-samples-for-development",depth:3,title:"Plugin samples for development"},{id:"improvements",depth:2,title:"Improvements"},{id:"improved-configure-actions-interaction",depth:3,title:'Improved "Configure actions" interaction'},{id:"unified-data-format-for-workflow-http-request-node-result",depth:3,title:"Unified data format for workflow HTTP request node result:"},{id:"reorganize-workflow-handbook",depth:3,title:"Reorganize workflow handbook"},{id:"fixes",depth:2,title:"Fixes"},{id:"log-plugin-now-only-shows-logs-of-the-current-application",depth:3,title:"Log plugin now only shows logs of the current application"}],uH=[{value:"Supports users logging in to NocoBase using their LDAP server credentials. For more information, refer to the ",paraId:0,tocIndex:2},{value:"Authentication: LDAP",paraId:1,tocIndex:2},{value:" documentation.",paraId:0,tocIndex:2},{value:"When CRUD actions cannot satisfy your needs, you can use the custom action trigger of the workflow to orchestrate your own data processing logic. For more information, refer to the ",paraId:2,tocIndex:3},{value:"Workflow / Custom action trigger",paraId:3,tocIndex:3},{value:" documentation.",paraId:2,tocIndex:3},{value:"Allows configuring the visible and hidden properties of fields.",paraId:4,tocIndex:6},{value:"application/www-x-form-urlencoded",paraId:5},{value:"View the documentation for ",paraId:6,tocIndex:9},{value:"plugin examples",paraId:7,tocIndex:9},{value:".",paraId:6,tocIndex:9},{value:'All actions are displayed in a single list in the dropdown menu, no longer distinguishing between "Enable actions" and "Customize".',paraId:8,tocIndex:11},{value:"Actions that can only be added once: These actions retain the switch effect.",paraId:9,tocIndex:11},{value:"Actions that can be added repeatedly: These actions no longer use the switch interaction and can be added multiple times.",paraId:9,tocIndex:11},{value:`Merged similar actions `,paraId:9,tocIndex:11},{value:"\u201CAdd new\u201D and \u201CAdd record\u201D",paraId:10,tocIndex:11},{value:"\u201CSubmit\u201D and \u201CSave record\u201D",paraId:10,tocIndex:11},{value:`{ config: {}, headers: {}, @@ -15550,11 +15603,11 @@ export const qrCodeComponentFieldSettings = new SchemaSettings({ statusText: 'xxx', data: {} } -`,paraId:11,tocIndex:12},{value:"When there are multiple applications:",paraId:12,tocIndex:15},{value:"The log plugin only displays the log file list for the current application.",paraId:13,tocIndex:15},{value:"Workflow and custom request folders are placed within the application folder.",paraId:13,tocIndex:15},{value:"Other major fixes include:",paraId:14,tocIndex:15},{value:"Charts did not convert date fields to client time zone when querying aggregated data by date field. ",paraId:15,tocIndex:15},{value:"fix(data-vi): should use local timezone when formatting date #4366",paraId:15,tocIndex:15},{value:"View refresh issue, where the view needed to be exited and re-entered after syncing with the database. ",paraId:15,tocIndex:15},{value:"fix: collection fields should be refreshed after editing sync from database #4224",paraId:15,tocIndex:15},{value:"Tree table block did not collapse all nodes when adding a child node. ",paraId:15,tocIndex:15},{value:"fix: do not collapse all nodes when adding a child node in the tree table block #4289",paraId:15,tocIndex:15},{value:"Data table title field settings were invalid. ",paraId:15,tocIndex:15},{value:"fix: collection title field setting is invalid #4358",paraId:15,tocIndex:15},{value:"Bigint field lost precision in read-only mode. ",paraId:15,tocIndex:15},{value:"fix: bigint field loses precision in read pretty mode #4360",paraId:15,tocIndex:15},{value:"Open log files were not closed after stopping a sub-application. ",paraId:15,tocIndex:15},{value:"fix(logger): should close log stream after destroying app #4380",paraId:15,tocIndex:15},{value:"Workflow aggregate node relationship data model selection bug. ",paraId:15,tocIndex:15},{value:"fix(plugin-workflow-aggregate): fix association field select #4315",paraId:15,tocIndex:15},{value:"Ignoring errors option was ineffective in synchronous mode for workflow HTTP request node. ",paraId:15,tocIndex:15},{value:"fix(plugin-workflow-request): fix ignoreFail in sync mode #4334",paraId:15,tocIndex:15},{value:"Workflow HTTP request node value input box overflowed. ",paraId:15,tocIndex:15},{value:"fix(plugin-workflow-request): fix value fields overflowing #4354",paraId:15,tocIndex:15},{value:"Special characters caused workflow HTTP request node to hang. ",paraId:15,tocIndex:15},{value:"fix(plugin-workflow-request): fix request hanging when invalid header value #4376",paraId:15,tocIndex:15},{value:"Fixed issue where setting marginBlock in the theme editor affected form field spacing. ",paraId:15,tocIndex:15},{value:"fix(theme-editor): form field spacing should not be affected by token.marginBlock #4374",paraId:15,tocIndex:15},{value:'Fixed issue where clicking the "License" option in the top right corner of the page redirected incorrectly. ',paraId:15,tocIndex:15},{value:"PR #4415",paraId:15,tocIndex:15},{value:"Fixed issue where the field operator was invalid when saving a filter form as a block template. ",paraId:15,tocIndex:15},{value:"PR #4390",paraId:15,tocIndex:15}],pH={},IH={title:"v1.0.1-alpha.1: 2024-06-07",toc:"menu",filename:"docs/en-US/welcome/changelog/20240607.md",lastUpdated:1732240239e3,description:"Reference document:"},_H=[{id:"v101-alpha1-2024-06-07",depth:1,title:"v1.0.1-alpha.1: 2024-06-07"},{id:"new-features",depth:2,title:"New features"},{id:"blocks-support-height-settings-4441",depth:3,title:"Blocks support height settings (#4441)"},{id:"link-action-navigate-to-the-specified-url-4506",depth:3,title:"Link action: navigate to the specified URL (#4506)"},{id:"add-a-new-variable-called-url-search-params-4506",depth:3,title:'Add a new variable called "URL search params" (#4506)'},{id:"iframe-support-variables-4512",depth:3,title:"Iframe support variables (#4512)"},{id:"file-storages-support-configuring-file-size-and-file-type-4118",depth:3,title:"File storages support configuring file size and file type (#4118)"},{id:"workflow-variable-nodes-support-selecting-partial-path-of-data-objects-as-the-value-of-variables",depth:3,title:"Workflow: variable nodes support selecting partial path of data objects as the value of variables"},{id:"url-fields-support-preview-4559",depth:3,title:"URL fields support preview (#4559)"},{id:"data-visualization-support-for-url-query-parameters-and-current-role-variables-4586",depth:3,title:'Data visualization: Support for "URL query parameters" and "current role" variables (#4586)'},{id:"improvements",depth:2,title:"Improvements"},{id:"import-and-export-function-optimization-4468",depth:3,title:"Import and export function optimization (#4468)"},{id:"avoid-misoperation-by-disabling-the-date-variable-option-4452",depth:3,title:"Avoid misoperation by disabling the date variable option (#4452)"},{id:"linkage-rule-assignment-interaction-optimization-4492",depth:3,title:"Linkage rule assignment interaction optimization (#4492)"},{id:"adjust-the-top-right-icon-of-the-action-column-in-the-table-block-4538",depth:3,title:"Adjust the top-right icon of the action column in the table block (#4538)"},{id:"errorfallback-4459",depth:3,title:"ErrorFallback (#4459)"},{id:"collect-debug-information-and-quickly-download-logs-when-a-frontend-error-occurs4524",depth:3,title:"Collect debug information and quickly download logs when a frontend error occurs\uFF08#4524\uFF09"},{id:"others",depth:3,title:"Others"},{id:"bug-fixes",depth:2,title:"Bug fixes"},{id:"the-data-scope-in-the-permission-configuration-dialog-should-not-support-the-current-form-and-current-popup-record-variables-4484",depth:3,title:'The data scope in the permission configuration dialog should not support the "Current form" and "Current popup record" variables (#4484)'},{id:"support-selecting-the-value-of-a-variable-directly-as-the-default-value-for-a-association-field-4439",depth:3,title:"Support selecting the value of a variable directly as the default value for a association field (#4439)"},{id:"fix-the-issue-of-error-when-adding-custom-request-action-multiple-times-4458",depth:3,title:'Fix the issue of error when adding "Custom request" action multiple times (#4458)'},{id:"others-1",depth:3,title:"Others"}],vH=[{value:"#4441",paraId:0},{value:"Reference document:",paraId:1,tocIndex:2},{value:"set block height",paraId:2,tocIndex:2},{value:"#4506",paraId:0},{value:"Support configuring variables in the URL or search params.",paraId:3,tocIndex:3},{value:` - `,paraId:0},{value:"Reference document:",paraId:4,tocIndex:3},{value:"Link action",paraId:5,tocIndex:3},{value:"#4506",paraId:0},{value:"The variable is only available when there is a query string in the page URL, making it more convenient to use in conjunction with ",paraId:6,tocIndex:4},{value:"link action",paraId:7,tocIndex:4},{value:".",paraId:6,tocIndex:4},{value:"Reference document:",paraId:8,tocIndex:4},{value:"URL search params",paraId:9,tocIndex:4},{value:"Link action",paraId:10,tocIndex:4},{value:"#4512",paraId:0},{value:"Reference document:",paraId:11,tocIndex:5},{value:"iframe block",paraId:12,tocIndex:5},{value:"#4118",paraId:0},{value:"Reference document:",paraId:13,tocIndex:6},{value:"File Storage",paraId:14,tocIndex:6},{value:"#4559",paraId:0},{value:"Currently only support image preview.",paraId:15,tocIndex:8},{value:"#4586",paraId:0},{value:"#4468",paraId:0},{value:"Improved the stability of import and export function, increased the limit of import and export to 2000 records. Supports extended import and export logic of custom field types.",paraId:16,tocIndex:11},{value:"#4452",paraId:0},{value:'Except for the "current time", the variables representing dates are intervals (arrays) rather than moments (strings). They can be used for filtering, but cannot be directly used as default values.',paraId:17,tocIndex:12},{value:"#4492",paraId:0},{value:"Multi-select fields do not show assignment options. If a single-select field is selected and assigned, then switching to a multi-select field will clear the configuration",paraId:18,tocIndex:13},{value:"#4538",paraId:0},{value:"#4459",paraId:0},{value:"Refining error fallback for different components in the frontend to prevent the entrie page from becoming unusable due to a frontend error.",paraId:19,tocIndex:15},{value:"#4524",paraId:0},{value:"Modify character length limit of username to 1-50 (",paraId:20,tocIndex:17},{value:"#4502",paraId:20,tocIndex:17},{value:")",paraId:20,tocIndex:17},{value:"Do not hide foreign key fields\uFF08",paraId:20,tocIndex:17},{value:"#4499",paraId:20,tocIndex:17},{value:"\uFF09",paraId:20,tocIndex:17},{value:"#4484",paraId:0},{value:"#4439",paraId:0},{value:"#4458",paraId:0},{value:"Fix the issue of content in the sub-table not being cleared after form submission. (",paraId:21,tocIndex:22},{value:"#4475",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:'Fix the issue of abnormal use of the "Current object" variable in the sub-table. (',paraId:21,tocIndex:22},{value:"#4521",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"add 'Set default zoom level' option for map fields. (",paraId:21,tocIndex:22},{value:"#4527",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Fix the issue of block not being displayed when adding a block using block templates in a popup window. (",paraId:21,tocIndex:22},{value:"#4531",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Fix the style issue of form data templates. (",paraId:21,tocIndex:22},{value:"#4536",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Workflow: expression box style disappeared in calculation node. (",paraId:21,tocIndex:22},{value:"#4513",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Workflow: field type incorrect when created in custom form of manual node. (",paraId:21,tocIndex:22},{value:"#4519",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Workflow: permission issue of triggering custom action event. (",paraId:21,tocIndex:22},{value:"#4522",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Workflow: incorrect depth configuration of preloading assoacition for multiple data source. (",paraId:21,tocIndex:22},{value:"#4526",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"json-templates",paraId:21,tocIndex:22},{value:" library bug. (",paraId:21,tocIndex:22},{value:"#4525",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"File manager: error when uploading or deleting file on COS. (",paraId:21,tocIndex:22},{value:"#4529",paraId:21,tocIndex:22},{value:", ",paraId:21,tocIndex:22},{value:"#4537",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Form linkage rule displays [object Object] when assigning a value of 0.00 to a numeric field. (",paraId:21,tocIndex:22},{value:"#4482",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Subtable is missing the control setting item for the add new button. (",paraId:21,tocIndex:22},{value:"#4498",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Submit button in the table edit form is missing the linkage rule setting item. (",paraId:21,tocIndex:22},{value:"#4515",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Data-visualization: fix the issue of field components invisible when setting default values for chart filter fields (",paraId:21,tocIndex:22},{value:"#4509",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Authentication: fix the issue where the sign up page is not found for newly created basic authenticator. (",paraId:21,tocIndex:22},{value:"#4556",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Localization: fix the issue where the page titles is not translated when translating the menu texts. (",paraId:21,tocIndex:22},{value:"#4557",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Map: fix the issue where AMap shows a key error despite correct configuration. (",paraId:21,tocIndex:22},{value:"#4574",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22}],mH={},hH={title:"Introduction",toc:"menu",filename:"docs/en-US/welcome/introduction/index.md",lastUpdated:1732240239e3,description:`NocoBase is a scalability-first, open-source no-code development platform. +`,paraId:11,tocIndex:12},{value:"When there are multiple applications:",paraId:12,tocIndex:15},{value:"The log plugin only displays the log file list for the current application.",paraId:13,tocIndex:15},{value:"Workflow and custom request folders are placed within the application folder.",paraId:13,tocIndex:15},{value:"Other major fixes include:",paraId:14,tocIndex:15},{value:"Charts did not convert date fields to client time zone when querying aggregated data by date field. ",paraId:15,tocIndex:15},{value:"fix(data-vi): should use local timezone when formatting date #4366",paraId:15,tocIndex:15},{value:"View refresh issue, where the view needed to be exited and re-entered after syncing with the database. ",paraId:15,tocIndex:15},{value:"fix: collection fields should be refreshed after editing sync from database #4224",paraId:15,tocIndex:15},{value:"Tree table block did not collapse all nodes when adding a child node. ",paraId:15,tocIndex:15},{value:"fix: do not collapse all nodes when adding a child node in the tree table block #4289",paraId:15,tocIndex:15},{value:"Data table title field settings were invalid. ",paraId:15,tocIndex:15},{value:"fix: collection title field setting is invalid #4358",paraId:15,tocIndex:15},{value:"Bigint field lost precision in read-only mode. ",paraId:15,tocIndex:15},{value:"fix: bigint field loses precision in read pretty mode #4360",paraId:15,tocIndex:15},{value:"Open log files were not closed after stopping a sub-application. ",paraId:15,tocIndex:15},{value:"fix(logger): should close log stream after destroying app #4380",paraId:15,tocIndex:15},{value:"Workflow aggregate node relationship data model selection bug. ",paraId:15,tocIndex:15},{value:"fix(plugin-workflow-aggregate): fix association field select #4315",paraId:15,tocIndex:15},{value:"Ignoring errors option was ineffective in synchronous mode for workflow HTTP request node. ",paraId:15,tocIndex:15},{value:"fix(plugin-workflow-request): fix ignoreFail in sync mode #4334",paraId:15,tocIndex:15},{value:"Workflow HTTP request node value input box overflowed. ",paraId:15,tocIndex:15},{value:"fix(plugin-workflow-request): fix value fields overflowing #4354",paraId:15,tocIndex:15},{value:"Special characters caused workflow HTTP request node to hang. ",paraId:15,tocIndex:15},{value:"fix(plugin-workflow-request): fix request hanging when invalid header value #4376",paraId:15,tocIndex:15},{value:"Fixed issue where setting marginBlock in the theme editor affected form field spacing. ",paraId:15,tocIndex:15},{value:"fix(theme-editor): form field spacing should not be affected by token.marginBlock #4374",paraId:15,tocIndex:15},{value:'Fixed issue where clicking the "License" option in the top right corner of the page redirected incorrectly. ',paraId:15,tocIndex:15},{value:"PR #4415",paraId:15,tocIndex:15},{value:"Fixed issue where the field operator was invalid when saving a filter form as a block template. ",paraId:15,tocIndex:15},{value:"PR #4390",paraId:15,tocIndex:15}],pH={},IH={title:"v1.0.1-alpha.1: 2024-06-07",toc:"menu",filename:"docs/en-US/welcome/changelog/20240607.md",lastUpdated:173254844e4,description:"Reference document:"},_H=[{id:"v101-alpha1-2024-06-07",depth:1,title:"v1.0.1-alpha.1: 2024-06-07"},{id:"new-features",depth:2,title:"New features"},{id:"blocks-support-height-settings-4441",depth:3,title:"Blocks support height settings (#4441)"},{id:"link-action-navigate-to-the-specified-url-4506",depth:3,title:"Link action: navigate to the specified URL (#4506)"},{id:"add-a-new-variable-called-url-search-params-4506",depth:3,title:'Add a new variable called "URL search params" (#4506)'},{id:"iframe-support-variables-4512",depth:3,title:"Iframe support variables (#4512)"},{id:"file-storages-support-configuring-file-size-and-file-type-4118",depth:3,title:"File storages support configuring file size and file type (#4118)"},{id:"workflow-variable-nodes-support-selecting-partial-path-of-data-objects-as-the-value-of-variables",depth:3,title:"Workflow: variable nodes support selecting partial path of data objects as the value of variables"},{id:"url-fields-support-preview-4559",depth:3,title:"URL fields support preview (#4559)"},{id:"data-visualization-support-for-url-query-parameters-and-current-role-variables-4586",depth:3,title:'Data visualization: Support for "URL query parameters" and "current role" variables (#4586)'},{id:"improvements",depth:2,title:"Improvements"},{id:"import-and-export-function-optimization-4468",depth:3,title:"Import and export function optimization (#4468)"},{id:"avoid-misoperation-by-disabling-the-date-variable-option-4452",depth:3,title:"Avoid misoperation by disabling the date variable option (#4452)"},{id:"linkage-rule-assignment-interaction-optimization-4492",depth:3,title:"Linkage rule assignment interaction optimization (#4492)"},{id:"adjust-the-top-right-icon-of-the-action-column-in-the-table-block-4538",depth:3,title:"Adjust the top-right icon of the action column in the table block (#4538)"},{id:"errorfallback-4459",depth:3,title:"ErrorFallback (#4459)"},{id:"collect-debug-information-and-quickly-download-logs-when-a-frontend-error-occurs4524",depth:3,title:"Collect debug information and quickly download logs when a frontend error occurs\uFF08#4524\uFF09"},{id:"others",depth:3,title:"Others"},{id:"bug-fixes",depth:2,title:"Bug fixes"},{id:"the-data-scope-in-the-permission-configuration-dialog-should-not-support-the-current-form-and-current-popup-record-variables-4484",depth:3,title:'The data scope in the permission configuration dialog should not support the "Current form" and "Current popup record" variables (#4484)'},{id:"support-selecting-the-value-of-a-variable-directly-as-the-default-value-for-a-association-field-4439",depth:3,title:"Support selecting the value of a variable directly as the default value for a association field (#4439)"},{id:"fix-the-issue-of-error-when-adding-custom-request-action-multiple-times-4458",depth:3,title:'Fix the issue of error when adding "Custom request" action multiple times (#4458)'},{id:"others-1",depth:3,title:"Others"}],vH=[{value:"#4441",paraId:0},{value:"Reference document:",paraId:1,tocIndex:2},{value:"set block height",paraId:2,tocIndex:2},{value:"#4506",paraId:0},{value:"Support configuring variables in the URL or search params.",paraId:3,tocIndex:3},{value:` + `,paraId:0},{value:"Reference document:",paraId:4,tocIndex:3},{value:"Link action",paraId:5,tocIndex:3},{value:"#4506",paraId:0},{value:"The variable is only available when there is a query string in the page URL, making it more convenient to use in conjunction with ",paraId:6,tocIndex:4},{value:"link action",paraId:7,tocIndex:4},{value:".",paraId:6,tocIndex:4},{value:"Reference document:",paraId:8,tocIndex:4},{value:"URL search params",paraId:9,tocIndex:4},{value:"Link action",paraId:10,tocIndex:4},{value:"#4512",paraId:0},{value:"Reference document:",paraId:11,tocIndex:5},{value:"iframe block",paraId:12,tocIndex:5},{value:"#4118",paraId:0},{value:"Reference document:",paraId:13,tocIndex:6},{value:"File Storage",paraId:14,tocIndex:6},{value:"#4559",paraId:0},{value:"Currently only support image preview.",paraId:15,tocIndex:8},{value:"#4586",paraId:0},{value:"#4468",paraId:0},{value:"Improved the stability of import and export function, increased the limit of import and export to 2000 records. Supports extended import and export logic of custom field types.",paraId:16,tocIndex:11},{value:"#4452",paraId:0},{value:'Except for the "current time", the variables representing dates are intervals (arrays) rather than moments (strings). They can be used for filtering, but cannot be directly used as default values.',paraId:17,tocIndex:12},{value:"#4492",paraId:0},{value:"Multi-select fields do not show assignment options. If a single-select field is selected and assigned, then switching to a multi-select field will clear the configuration",paraId:18,tocIndex:13},{value:"#4538",paraId:0},{value:"#4459",paraId:0},{value:"Refining error fallback for different components in the frontend to prevent the entrie page from becoming unusable due to a frontend error.",paraId:19,tocIndex:15},{value:"#4524",paraId:0},{value:"Modify character length limit of username to 1-50 (",paraId:20,tocIndex:17},{value:"#4502",paraId:20,tocIndex:17},{value:")",paraId:20,tocIndex:17},{value:"Do not hide foreign key fields\uFF08",paraId:20,tocIndex:17},{value:"#4499",paraId:20,tocIndex:17},{value:"\uFF09",paraId:20,tocIndex:17},{value:"#4484",paraId:0},{value:"#4439",paraId:0},{value:"#4458",paraId:0},{value:"Fix the issue of content in the sub-table not being cleared after form submission. (",paraId:21,tocIndex:22},{value:"#4475",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:'Fix the issue of abnormal use of the "Current object" variable in the sub-table. (',paraId:21,tocIndex:22},{value:"#4521",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"add 'Set default zoom level' option for map fields. (",paraId:21,tocIndex:22},{value:"#4527",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Fix the issue of block not being displayed when adding a block using block templates in a popup window. (",paraId:21,tocIndex:22},{value:"#4531",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Fix the style issue of form data templates. (",paraId:21,tocIndex:22},{value:"#4536",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Workflow: expression box style disappeared in calculation node. (",paraId:21,tocIndex:22},{value:"#4513",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Workflow: field type incorrect when created in custom form of manual node. (",paraId:21,tocIndex:22},{value:"#4519",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Workflow: permission issue of triggering custom action event. (",paraId:21,tocIndex:22},{value:"#4522",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Workflow: incorrect depth configuration of preloading assoacition for multiple data source. (",paraId:21,tocIndex:22},{value:"#4526",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"json-templates",paraId:21,tocIndex:22},{value:" library bug. (",paraId:21,tocIndex:22},{value:"#4525",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"File manager: error when uploading or deleting file on COS. (",paraId:21,tocIndex:22},{value:"#4529",paraId:21,tocIndex:22},{value:", ",paraId:21,tocIndex:22},{value:"#4537",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Form linkage rule displays [object Object] when assigning a value of 0.00 to a numeric field. (",paraId:21,tocIndex:22},{value:"#4482",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Subtable is missing the control setting item for the add new button. (",paraId:21,tocIndex:22},{value:"#4498",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Submit button in the table edit form is missing the linkage rule setting item. (",paraId:21,tocIndex:22},{value:"#4515",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Data-visualization: fix the issue of field components invisible when setting default values for chart filter fields (",paraId:21,tocIndex:22},{value:"#4509",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Authentication: fix the issue where the sign up page is not found for newly created basic authenticator. (",paraId:21,tocIndex:22},{value:"#4556",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Localization: fix the issue where the page titles is not translated when translating the menu texts. (",paraId:21,tocIndex:22},{value:"#4557",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22},{value:"Map: fix the issue where AMap shows a key error despite correct configuration. (",paraId:21,tocIndex:22},{value:"#4574",paraId:21,tocIndex:22},{value:")",paraId:21,tocIndex:22}],mH={},hH={title:"Introduction",toc:"menu",filename:"docs/en-US/welcome/introduction/index.md",lastUpdated:173254844e4,description:`NocoBase is a scalability-first, open-source no-code development platform. Instead of investing years of time and millions of dollars in research and development, deploy NocoBase in a few minutes and you'll have a private, controllable, and extremely scalable no-code development platform!`},fH=[{id:"introduction",depth:1,title:"Introduction"},{id:"what-is-nocobase",depth:2,title:"What is NocoBase"},{id:"contact-us",depth:2,title:"Contact Us:"}],xH=[{value:` `,paraId:0},{value:"NocoBase is a scalability-first, open-source no-code development platform.",paraId:1,tocIndex:1},{value:` -Instead of investing years of time and millions of dollars in research and development, deploy NocoBase in a few minutes and you'll have a private, controllable, and extremely scalable no-code development platform!`,paraId:1,tocIndex:1},{value:"Homepage:",paraId:2,tocIndex:1},{value:"https://www.nocobase.com/",paraId:2,tocIndex:1},{value:"Online Demo:",paraId:3,tocIndex:1},{value:"https://demo.nocobase.com/new",paraId:3,tocIndex:1},{value:"Documents:",paraId:4,tocIndex:1},{value:"https://docs.nocobase.com/",paraId:4,tocIndex:1},{value:"Commericial license & plugins:",paraId:5,tocIndex:1},{value:"https://www.nocobase.com/en/commercial",paraId:5,tocIndex:1},{value:"License agreement:",paraId:6,tocIndex:1},{value:"https://www.nocobase.com/en/agreement",paraId:6,tocIndex:1},{value:"hello@nocobase.com",paraId:7,tocIndex:2}],gH={},bH={title:"ACL",toc:"menu",filename:"docs/en-US/api/client/extensions/acl.md",lastUpdated:1732240239e3},yH=[{id:"acl",depth:1,title:"ACL"},{id:"components",depth:2,title:"Components"},{id:"aclprovider-",depth:3,title:""},{id:"aclrolescheckprovider-",depth:3,title:""},{id:"aclcollectionprovider-",depth:3,title:""},{id:"aclactionprovider-",depth:3,title:""},{id:"aclcollectionfieldprovider-",depth:3,title:""},{id:"aclmenuitemprovider-",depth:3,title:""},{id:"hooks",depth:2,title:"Hooks"},{id:"useaclcontext",depth:3,title:"useACLContext()"},{id:"useaclrolecontext",depth:3,title:"useACLRoleContext()"},{id:"userolerecheck",depth:3,title:"useRoleRecheck()"}],wH=[{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"useACLContext()",paraId:0},{value:"useACLRoleContext()",paraId:0},{value:"useRoleRecheck()",paraId:0}],kH={},SH={title:"PluginManager",toc:"menu",filename:"docs/en-US/api/server/plugin-manager.md",lastUpdated:1732240239e3,description:"PluginManager is the plugin manager for NocoBase."},UH=[{id:"pluginmanager",depth:1,title:"PluginManager"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"repository",depth:3,title:"repository"},{id:"instance-methods",depth:2,title:"Instance Methods"},{id:"addpreset",depth:3,title:"addPreset()"},{id:"signature",depth:4,title:"Signature"},{id:"details",depth:4,title:"Details"},{id:"getplugins",depth:3,title:"getPlugins()"},{id:"signature-1",depth:4,title:"Signature"},{id:"getaliases",depth:3,title:"getAliases()"},{id:"signature-2",depth:4,title:"Signature"},{id:"get",depth:3,title:"get()"},{id:"signature-3",depth:4,title:"Signature"},{id:"has",depth:3,title:"has()"},{id:"signature-4",depth:4,title:"Signature"},{id:"create",depth:3,title:"create()"},{id:"signature-5",depth:4,title:"Signature"},{id:"details-1",depth:4,title:"Details"},{id:"add",depth:3,title:"add()"},{id:"signature-6",depth:4,title:"Signature"},{id:"details-2",depth:4,title:"Details"},{id:"load",depth:3,title:"load()"},{id:"signature-7",depth:4,title:"Signature"},{id:"install",depth:3,title:"install()"},{id:"signature-8",depth:4,title:"Signature"},{id:"enable",depth:3,title:"enable()"},{id:"signature-9",depth:4,title:"Signature"},{id:"disable",depth:3,title:"disable()"},{id:"signature-10",depth:4,title:"Signature"},{id:"remove",depth:3,title:"remove()"},{id:"signature-11",depth:4,title:"Signature"},{id:"details-3",depth:4,title:"Details"}],PH=[{value:"PluginManager",paraId:0,tocIndex:0},{value:" is the plugin manager for NocoBase.",paraId:0,tocIndex:0},{value:"repository",paraId:1},{value:"The ",paraId:2,tocIndex:2},{value:"Repository",paraId:2,tocIndex:2},{value:" instance for the plugin data table. API reference: ",paraId:2,tocIndex:2},{value:"DataBase - Repository",paraId:3,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"addPreset()",paraId:1},{value:"Adds a system built-in plugin. Built-in plugins are enabled by default and do not appear in the client plugin manager list.",paraId:4,tocIndex:4},{value:"addPreset(plugin: string | typeof Plugin, options: any = {})",paraId:5,tocIndex:5},{value:"Parameter",paraId:6,tocIndex:6},{value:"Type",paraId:6,tocIndex:6},{value:"Description",paraId:6,tocIndex:6},{value:"plugin",paraId:6,tocIndex:6},{value:"string",paraId:6,tocIndex:6},{value:" | ",paraId:6,tocIndex:6},{value:"typeof Plugin",paraId:6,tocIndex:6},{value:"Plugin name or instance",paraId:6,tocIndex:6},{value:"options",paraId:6,tocIndex:6},{value:"any",paraId:6,tocIndex:6},{value:"Plugin options",paraId:6,tocIndex:6},{value:"getPlugins()",paraId:1},{value:"Gets all plugin instances of the current application.",paraId:7,tocIndex:7},{value:"getPlugins(): Map>",paraId:8,tocIndex:8},{value:"getAliases()",paraId:1},{value:"Gets all plugin names.",paraId:9,tocIndex:9},{value:"getAliases(): IterableIterator",paraId:10,tocIndex:10},{value:"get()",paraId:1},{value:"Gets a specific plugin.",paraId:11,tocIndex:11},{value:"get(name: string | typeof Plugin): Plugin",paraId:12,tocIndex:12},{value:"has()",paraId:1},{value:"Checks if a plugin exists.",paraId:13,tocIndex:13},{value:"has(name: string | typeof Plugin): boolean",paraId:14,tocIndex:14},{value:"create()",paraId:1},{value:"Creates a plugin and generates the plugin directory.",paraId:15,tocIndex:15},{value:"create(pluginName: string, options?: { forceRecreate?: boolean }): Promise",paraId:16,tocIndex:16},{value:"Parameter",paraId:17,tocIndex:17},{value:"Type",paraId:17,tocIndex:17},{value:"Description",paraId:17,tocIndex:17},{value:"Default",paraId:17,tocIndex:17},{value:"pluginName",paraId:17,tocIndex:17},{value:"string",paraId:17,tocIndex:17},{value:"Plugin name",paraId:17,tocIndex:17},{value:"-",paraId:17,tocIndex:17},{value:"options.forceRecreate",paraId:17,tocIndex:17},{value:"boolean",paraId:17,tocIndex:17},{value:"Whether to remove the existing plugin directory and recreate it",paraId:17,tocIndex:17},{value:"false",paraId:17,tocIndex:17},{value:"add()",paraId:1},{value:"Adds or upgrades a plugin.",paraId:18,tocIndex:18},{value:"add(plugin?: any, options: any = {}, insert = false, isUpgrade = false): Promise",paraId:19,tocIndex:19},{value:"Parameter",paraId:20,tocIndex:20},{value:"Type",paraId:20,tocIndex:20},{value:"Description",paraId:20,tocIndex:20},{value:"Default",paraId:20,tocIndex:20},{value:"plugin",paraId:20,tocIndex:20},{value:"string",paraId:20,tocIndex:20},{value:" | ",paraId:20,tocIndex:20},{value:"typeof Plugin",paraId:20,tocIndex:20},{value:"Plugin name or instance",paraId:20,tocIndex:20},{value:"-",paraId:20,tocIndex:20},{value:"options",paraId:20,tocIndex:20},{value:"any",paraId:20,tocIndex:20},{value:"Plugin configuration",paraId:20,tocIndex:20},{value:"-",paraId:20,tocIndex:20},{value:"insert",paraId:20,tocIndex:20},{value:"boolean",paraId:20,tocIndex:20},{value:"Whether to add plugin table records",paraId:20,tocIndex:20},{value:"false",paraId:20,tocIndex:20},{value:"isUpgrade",paraId:20,tocIndex:20},{value:"boolean",paraId:20,tocIndex:20},{value:"Whether it's a plugin upgrade",paraId:20,tocIndex:20},{value:"false",paraId:20,tocIndex:20},{value:"load()",paraId:1},{value:"Loads all enabled plugins.",paraId:21,tocIndex:21},{value:"load(): Promise",paraId:22,tocIndex:22},{value:"install()",paraId:1},{value:"Installs all enabled plugins that are not yet installed.",paraId:23,tocIndex:23},{value:"install(): Promise",paraId:24,tocIndex:24},{value:"enable()",paraId:1},{value:"Enables one or more plugins that are not enabled.",paraId:25,tocIndex:25},{value:"enable(name: string | string[]): Promise",paraId:26,tocIndex:26},{value:"disable()",paraId:1},{value:"Disables one or more enabled plugins.",paraId:27,tocIndex:27},{value:"disable(name: string | string[]): Promise",paraId:28,tocIndex:28},{value:"remove()",paraId:1},{value:"Removes one or more plugins.",paraId:29,tocIndex:29},{value:"remove(name: string | string[], options?: { removeDir?: boolean; force?: boolean })",paraId:30,tocIndex:30},{value:"Parameter",paraId:31,tocIndex:31},{value:"Type",paraId:31,tocIndex:31},{value:"Description",paraId:31,tocIndex:31},{value:"Default",paraId:31,tocIndex:31},{value:"name",paraId:31,tocIndex:31},{value:"string",paraId:31,tocIndex:31},{value:" | ",paraId:31,tocIndex:31},{value:"string[]",paraId:31,tocIndex:31},{value:"Plugin name(s)",paraId:31,tocIndex:31},{value:"-",paraId:31,tocIndex:31},{value:"options.removeDir",paraId:31,tocIndex:31},{value:"boolean",paraId:31,tocIndex:31},{value:"Whether to remove the plugin directory",paraId:31,tocIndex:31},{value:"false",paraId:31,tocIndex:31},{value:"options.force",paraId:31,tocIndex:31},{value:"boolean",paraId:31,tocIndex:31},{value:"Whether to delete database records directly, skipping ",paraId:31,tocIndex:31},{value:"beforeRemove",paraId:31,tocIndex:31},{value:" / ",paraId:31,tocIndex:31},{value:"afterRemove",paraId:31,tocIndex:31},{value:" hooks",paraId:31,tocIndex:31},{value:"false",paraId:31,tocIndex:31}],TH={},CH={title:"Page Routing and Extensions",toc:"menu",filename:"docs/en-US/development/client/router.md",lastUpdated:1732240239e3,description:"NocoBase client extends pages through app.router.add() and app.pluginSettingsManager.add(), for example:"},AH=[{id:"page-routing-and-extensions",depth:1,title:"Page Routing and Extensions"},{id:"introduction",depth:2,title:"Introduction"},{id:"existing-page-routes",depth:2,title:"Existing Page Routes"},{id:"adminlayout",depth:3,title:"AdminLayout"},{id:"admindynamicpage",depth:3,title:"AdminDynamicPage"},{id:"adminsettingslayout",depth:3,title:"AdminSettingsLayout"},{id:"page-extensions",depth:2,title:"Page Extensions"},{id:"dynamic-schema-pages",depth:3,title:"Dynamic Schema Pages"},{id:"regular-page-extensions",depth:3,title:"Regular Page Extensions"},{id:"plugin-settings-page-extensions",depth:3,title:"Plugin Settings Page Extensions"}],qH=[{value:"NocoBase client extends pages through ",paraId:0,tocIndex:1},{value:"app.router.add()",paraId:0,tocIndex:1},{value:" and ",paraId:0,tocIndex:1},{value:"app.pluginSettingsManager.add()",paraId:0,tocIndex:1},{value:", for example:",paraId:0,tocIndex:1},{value:`import { Application, Plugin } from '@nocobase/client'; +Instead of investing years of time and millions of dollars in research and development, deploy NocoBase in a few minutes and you'll have a private, controllable, and extremely scalable no-code development platform!`,paraId:1,tocIndex:1},{value:"Homepage:",paraId:2,tocIndex:1},{value:"https://www.nocobase.com/",paraId:2,tocIndex:1},{value:"Online Demo:",paraId:3,tocIndex:1},{value:"https://demo.nocobase.com/new",paraId:3,tocIndex:1},{value:"Documents:",paraId:4,tocIndex:1},{value:"https://docs.nocobase.com/",paraId:4,tocIndex:1},{value:"Commericial license & plugins:",paraId:5,tocIndex:1},{value:"https://www.nocobase.com/en/commercial",paraId:5,tocIndex:1},{value:"License agreement:",paraId:6,tocIndex:1},{value:"https://www.nocobase.com/en/agreement",paraId:6,tocIndex:1},{value:"hello@nocobase.com",paraId:7,tocIndex:2}],gH={},bH={title:"ACL",toc:"menu",filename:"docs/en-US/api/client/extensions/acl.md",lastUpdated:173254844e4},yH=[{id:"acl",depth:1,title:"ACL"},{id:"components",depth:2,title:"Components"},{id:"aclprovider-",depth:3,title:""},{id:"aclrolescheckprovider-",depth:3,title:""},{id:"aclcollectionprovider-",depth:3,title:""},{id:"aclactionprovider-",depth:3,title:""},{id:"aclcollectionfieldprovider-",depth:3,title:""},{id:"aclmenuitemprovider-",depth:3,title:""},{id:"hooks",depth:2,title:"Hooks"},{id:"useaclcontext",depth:3,title:"useACLContext()"},{id:"useaclrolecontext",depth:3,title:"useACLRoleContext()"},{id:"userolerecheck",depth:3,title:"useRoleRecheck()"}],wH=[{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"",paraId:0},{value:"useACLContext()",paraId:0},{value:"useACLRoleContext()",paraId:0},{value:"useRoleRecheck()",paraId:0}],kH={},SH={title:"PluginManager",toc:"menu",filename:"docs/en-US/api/server/plugin-manager.md",lastUpdated:173254844e4,description:"PluginManager is the plugin manager for NocoBase."},UH=[{id:"pluginmanager",depth:1,title:"PluginManager"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"repository",depth:3,title:"repository"},{id:"instance-methods",depth:2,title:"Instance Methods"},{id:"addpreset",depth:3,title:"addPreset()"},{id:"signature",depth:4,title:"Signature"},{id:"details",depth:4,title:"Details"},{id:"getplugins",depth:3,title:"getPlugins()"},{id:"signature-1",depth:4,title:"Signature"},{id:"getaliases",depth:3,title:"getAliases()"},{id:"signature-2",depth:4,title:"Signature"},{id:"get",depth:3,title:"get()"},{id:"signature-3",depth:4,title:"Signature"},{id:"has",depth:3,title:"has()"},{id:"signature-4",depth:4,title:"Signature"},{id:"create",depth:3,title:"create()"},{id:"signature-5",depth:4,title:"Signature"},{id:"details-1",depth:4,title:"Details"},{id:"add",depth:3,title:"add()"},{id:"signature-6",depth:4,title:"Signature"},{id:"details-2",depth:4,title:"Details"},{id:"load",depth:3,title:"load()"},{id:"signature-7",depth:4,title:"Signature"},{id:"install",depth:3,title:"install()"},{id:"signature-8",depth:4,title:"Signature"},{id:"enable",depth:3,title:"enable()"},{id:"signature-9",depth:4,title:"Signature"},{id:"disable",depth:3,title:"disable()"},{id:"signature-10",depth:4,title:"Signature"},{id:"remove",depth:3,title:"remove()"},{id:"signature-11",depth:4,title:"Signature"},{id:"details-3",depth:4,title:"Details"}],PH=[{value:"PluginManager",paraId:0,tocIndex:0},{value:" is the plugin manager for NocoBase.",paraId:0,tocIndex:0},{value:"repository",paraId:1},{value:"The ",paraId:2,tocIndex:2},{value:"Repository",paraId:2,tocIndex:2},{value:" instance for the plugin data table. API reference: ",paraId:2,tocIndex:2},{value:"DataBase - Repository",paraId:3,tocIndex:2},{value:".",paraId:2,tocIndex:2},{value:"addPreset()",paraId:1},{value:"Adds a system built-in plugin. Built-in plugins are enabled by default and do not appear in the client plugin manager list.",paraId:4,tocIndex:4},{value:"addPreset(plugin: string | typeof Plugin, options: any = {})",paraId:5,tocIndex:5},{value:"Parameter",paraId:6,tocIndex:6},{value:"Type",paraId:6,tocIndex:6},{value:"Description",paraId:6,tocIndex:6},{value:"plugin",paraId:6,tocIndex:6},{value:"string",paraId:6,tocIndex:6},{value:" | ",paraId:6,tocIndex:6},{value:"typeof Plugin",paraId:6,tocIndex:6},{value:"Plugin name or instance",paraId:6,tocIndex:6},{value:"options",paraId:6,tocIndex:6},{value:"any",paraId:6,tocIndex:6},{value:"Plugin options",paraId:6,tocIndex:6},{value:"getPlugins()",paraId:1},{value:"Gets all plugin instances of the current application.",paraId:7,tocIndex:7},{value:"getPlugins(): Map>",paraId:8,tocIndex:8},{value:"getAliases()",paraId:1},{value:"Gets all plugin names.",paraId:9,tocIndex:9},{value:"getAliases(): IterableIterator",paraId:10,tocIndex:10},{value:"get()",paraId:1},{value:"Gets a specific plugin.",paraId:11,tocIndex:11},{value:"get(name: string | typeof Plugin): Plugin",paraId:12,tocIndex:12},{value:"has()",paraId:1},{value:"Checks if a plugin exists.",paraId:13,tocIndex:13},{value:"has(name: string | typeof Plugin): boolean",paraId:14,tocIndex:14},{value:"create()",paraId:1},{value:"Creates a plugin and generates the plugin directory.",paraId:15,tocIndex:15},{value:"create(pluginName: string, options?: { forceRecreate?: boolean }): Promise",paraId:16,tocIndex:16},{value:"Parameter",paraId:17,tocIndex:17},{value:"Type",paraId:17,tocIndex:17},{value:"Description",paraId:17,tocIndex:17},{value:"Default",paraId:17,tocIndex:17},{value:"pluginName",paraId:17,tocIndex:17},{value:"string",paraId:17,tocIndex:17},{value:"Plugin name",paraId:17,tocIndex:17},{value:"-",paraId:17,tocIndex:17},{value:"options.forceRecreate",paraId:17,tocIndex:17},{value:"boolean",paraId:17,tocIndex:17},{value:"Whether to remove the existing plugin directory and recreate it",paraId:17,tocIndex:17},{value:"false",paraId:17,tocIndex:17},{value:"add()",paraId:1},{value:"Adds or upgrades a plugin.",paraId:18,tocIndex:18},{value:"add(plugin?: any, options: any = {}, insert = false, isUpgrade = false): Promise",paraId:19,tocIndex:19},{value:"Parameter",paraId:20,tocIndex:20},{value:"Type",paraId:20,tocIndex:20},{value:"Description",paraId:20,tocIndex:20},{value:"Default",paraId:20,tocIndex:20},{value:"plugin",paraId:20,tocIndex:20},{value:"string",paraId:20,tocIndex:20},{value:" | ",paraId:20,tocIndex:20},{value:"typeof Plugin",paraId:20,tocIndex:20},{value:"Plugin name or instance",paraId:20,tocIndex:20},{value:"-",paraId:20,tocIndex:20},{value:"options",paraId:20,tocIndex:20},{value:"any",paraId:20,tocIndex:20},{value:"Plugin configuration",paraId:20,tocIndex:20},{value:"-",paraId:20,tocIndex:20},{value:"insert",paraId:20,tocIndex:20},{value:"boolean",paraId:20,tocIndex:20},{value:"Whether to add plugin table records",paraId:20,tocIndex:20},{value:"false",paraId:20,tocIndex:20},{value:"isUpgrade",paraId:20,tocIndex:20},{value:"boolean",paraId:20,tocIndex:20},{value:"Whether it's a plugin upgrade",paraId:20,tocIndex:20},{value:"false",paraId:20,tocIndex:20},{value:"load()",paraId:1},{value:"Loads all enabled plugins.",paraId:21,tocIndex:21},{value:"load(): Promise",paraId:22,tocIndex:22},{value:"install()",paraId:1},{value:"Installs all enabled plugins that are not yet installed.",paraId:23,tocIndex:23},{value:"install(): Promise",paraId:24,tocIndex:24},{value:"enable()",paraId:1},{value:"Enables one or more plugins that are not enabled.",paraId:25,tocIndex:25},{value:"enable(name: string | string[]): Promise",paraId:26,tocIndex:26},{value:"disable()",paraId:1},{value:"Disables one or more enabled plugins.",paraId:27,tocIndex:27},{value:"disable(name: string | string[]): Promise",paraId:28,tocIndex:28},{value:"remove()",paraId:1},{value:"Removes one or more plugins.",paraId:29,tocIndex:29},{value:"remove(name: string | string[], options?: { removeDir?: boolean; force?: boolean })",paraId:30,tocIndex:30},{value:"Parameter",paraId:31,tocIndex:31},{value:"Type",paraId:31,tocIndex:31},{value:"Description",paraId:31,tocIndex:31},{value:"Default",paraId:31,tocIndex:31},{value:"name",paraId:31,tocIndex:31},{value:"string",paraId:31,tocIndex:31},{value:" | ",paraId:31,tocIndex:31},{value:"string[]",paraId:31,tocIndex:31},{value:"Plugin name(s)",paraId:31,tocIndex:31},{value:"-",paraId:31,tocIndex:31},{value:"options.removeDir",paraId:31,tocIndex:31},{value:"boolean",paraId:31,tocIndex:31},{value:"Whether to remove the plugin directory",paraId:31,tocIndex:31},{value:"false",paraId:31,tocIndex:31},{value:"options.force",paraId:31,tocIndex:31},{value:"boolean",paraId:31,tocIndex:31},{value:"Whether to delete database records directly, skipping ",paraId:31,tocIndex:31},{value:"beforeRemove",paraId:31,tocIndex:31},{value:" / ",paraId:31,tocIndex:31},{value:"afterRemove",paraId:31,tocIndex:31},{value:" hooks",paraId:31,tocIndex:31},{value:"false",paraId:31,tocIndex:31}],TH={},CH={title:"Page Routing and Extensions",toc:"menu",filename:"docs/en-US/development/client/router.md",lastUpdated:173254844e4,description:"NocoBase client extends pages through app.router.add() and app.pluginSettingsManager.add(), for example:"},AH=[{id:"page-routing-and-extensions",depth:1,title:"Page Routing and Extensions"},{id:"introduction",depth:2,title:"Introduction"},{id:"existing-page-routes",depth:2,title:"Existing Page Routes"},{id:"adminlayout",depth:3,title:"AdminLayout"},{id:"admindynamicpage",depth:3,title:"AdminDynamicPage"},{id:"adminsettingslayout",depth:3,title:"AdminSettingsLayout"},{id:"page-extensions",depth:2,title:"Page Extensions"},{id:"dynamic-schema-pages",depth:3,title:"Dynamic Schema Pages"},{id:"regular-page-extensions",depth:3,title:"Regular Page Extensions"},{id:"plugin-settings-page-extensions",depth:3,title:"Plugin Settings Page Extensions"}],qH=[{value:"NocoBase client extends pages through ",paraId:0,tocIndex:1},{value:"app.router.add()",paraId:0,tocIndex:1},{value:" and ",paraId:0,tocIndex:1},{value:"app.pluginSettingsManager.add()",paraId:0,tocIndex:1},{value:", for example:",paraId:0,tocIndex:1},{value:`import { Application, Plugin } from '@nocobase/client'; import React from 'react'; class PluginHello extends Plugin { @@ -15674,7 +15727,7 @@ class HelloPlugin extends Plugin { }); } } -`,paraId:19,tocIndex:9}],EH={},DH={title:"Events",toc:"menu",filename:"docs/en-US/development/server/events.md",lastUpdated:1732240239e3,description:"NocoBase provides a very large number of event listeners in the lifecycle of applications, plugins, and database, and these methods will only be executed when an event is triggered."},OH=[{id:"events",depth:1,title:"Events"},{id:"how-to-add-event-listeners",depth:2,title:"How to add event listeners?"},{id:"dbon",depth:3,title:"db.on"},{id:"appon",depth:3,title:"app.on()"},{id:"example",depth:2,title:"Example"},{id:"deducting-product-inventory-after-creating-an-order",depth:3,title:"Deducting product inventory after creating an order"},{id:"timed-tasks-that-exist-alongside-the-application",depth:3,title:"Timed tasks that exist alongside the application"},{id:"summary",depth:2,title:"Summary"}],RH=[{value:"NocoBase provides a very large number of event listeners in the lifecycle of applications, plugins, and database, and these methods will only be executed when an event is triggered.",paraId:0,tocIndex:0},{value:"The registration of events is usually placed in afterAdd or beforeLoad",paraId:1,tocIndex:1},{value:`export class MyPlugin extends Plugin { +`,paraId:19,tocIndex:9}],EH={},DH={title:"Events",toc:"menu",filename:"docs/en-US/development/server/events.md",lastUpdated:173254844e4,description:"NocoBase provides a very large number of event listeners in the lifecycle of applications, plugins, and database, and these methods will only be executed when an event is triggered."},OH=[{id:"events",depth:1,title:"Events"},{id:"how-to-add-event-listeners",depth:2,title:"How to add event listeners?"},{id:"dbon",depth:3,title:"db.on"},{id:"appon",depth:3,title:"app.on()"},{id:"example",depth:2,title:"Example"},{id:"deducting-product-inventory-after-creating-an-order",depth:3,title:"Deducting product inventory after creating an order"},{id:"timed-tasks-that-exist-alongside-the-application",depth:3,title:"Timed tasks that exist alongside the application"},{id:"summary",depth:2,title:"Summary"}],RH=[{value:"NocoBase provides a very large number of event listeners in the lifecycle of applications, plugins, and database, and these methods will only be executed when an event is triggered.",paraId:0,tocIndex:0},{value:"The registration of events is usually placed in afterAdd or beforeLoad",paraId:1,tocIndex:1},{value:`export class MyPlugin extends Plugin { // After the plugin is added, afterAdd() is executed with or without activation afterAdd() { this.app.on(); @@ -15769,7 +15822,7 @@ class HelloPlugin extends Plugin { }); } } -`,paraId:20,tocIndex:6},{value:"The above example gives us a basic understanding of what events do and the ways they can be used to extend.",paraId:21,tocIndex:7},{value:"Database related events",paraId:22,tocIndex:7},{value:"Application related events",paraId:22,tocIndex:7},{value:"The sample code covered in this chapter is integrated in the corresponding package ",paraId:23,tocIndex:7},{value:"packages/samples/shop-events",paraId:23,tocIndex:7},{value:", which can be run directly in run locally to see the results.",paraId:23,tocIndex:7}],MH={},LH={title:"Logger",toc:"menu",filename:"docs/en-US/development/server/logger.md",lastUpdated:1732240239e3,description:"NocoBase's logging is based on Winston. By default, NocoBase divides logs into API request logs, system operation logs, and SQL execution logs, where API request logs and SQL execution logs are printed internally by the application, and plugin developers typically only need to print plugin-related system operation logs."},NH=[{id:"logger",depth:1,title:"Logger"},{id:"default-print-method",depth:2,title:"Default Print Method"},{id:"output-to-other-files",depth:2,title:"Output to Other Files"},{id:"custom-logs",depth:2,title:"Custom Logs"},{id:"createlogger",depth:3,title:"createLogger"},{id:"appcreatelogger",depth:3,title:"app.createLogger"},{id:"plugincreatelogger",depth:3,title:"plugin.createLogger"},{id:"related-documents",depth:2,title:"Related Documents"}],zH=[{value:"NocoBase's logging is based on ",paraId:0,tocIndex:0},{value:"Winston",paraId:0,tocIndex:0},{value:". By default, NocoBase divides logs into API request logs, system operation logs, and SQL execution logs, where API request logs and SQL execution logs are printed internally by the application, and plugin developers typically only need to print plugin-related system operation logs.",paraId:0,tocIndex:0},{value:"This document mainly introduces how to create and print logs when developing plugins. For more information about logs, refer to: ",paraId:1,tocIndex:0},{value:"Logger Plugin",paraId:2,tocIndex:0},{value:".",paraId:1,tocIndex:0},{value:"NocoBase provides a printing method for system operation logs, which are printed according to specified fields and output to a designated file. Refer to: ",paraId:3,tocIndex:1},{value:"Logger Plugin - System Logs",paraId:4,tocIndex:1},{value:".",paraId:3,tocIndex:1},{value:`// Default print method +`,paraId:20,tocIndex:6},{value:"The above example gives us a basic understanding of what events do and the ways they can be used to extend.",paraId:21,tocIndex:7},{value:"Database related events",paraId:22,tocIndex:7},{value:"Application related events",paraId:22,tocIndex:7},{value:"The sample code covered in this chapter is integrated in the corresponding package ",paraId:23,tocIndex:7},{value:"packages/samples/shop-events",paraId:23,tocIndex:7},{value:", which can be run directly in run locally to see the results.",paraId:23,tocIndex:7}],MH={},LH={title:"Logger",toc:"menu",filename:"docs/en-US/development/server/logger.md",lastUpdated:173254844e4,description:"NocoBase's logging is based on Winston. By default, NocoBase divides logs into API request logs, system operation logs, and SQL execution logs, where API request logs and SQL execution logs are printed internally by the application, and plugin developers typically only need to print plugin-related system operation logs."},NH=[{id:"logger",depth:1,title:"Logger"},{id:"default-print-method",depth:2,title:"Default Print Method"},{id:"output-to-other-files",depth:2,title:"Output to Other Files"},{id:"custom-logs",depth:2,title:"Custom Logs"},{id:"createlogger",depth:3,title:"createLogger"},{id:"appcreatelogger",depth:3,title:"app.createLogger"},{id:"plugincreatelogger",depth:3,title:"plugin.createLogger"},{id:"related-documents",depth:2,title:"Related Documents"}],zH=[{value:"NocoBase's logging is based on ",paraId:0,tocIndex:0},{value:"Winston",paraId:0,tocIndex:0},{value:". By default, NocoBase divides logs into API request logs, system operation logs, and SQL execution logs, where API request logs and SQL execution logs are printed internally by the application, and plugin developers typically only need to print plugin-related system operation logs.",paraId:0,tocIndex:0},{value:"This document mainly introduces how to create and print logs when developing plugins. For more information about logs, refer to: ",paraId:1,tocIndex:0},{value:"Logger Plugin",paraId:2,tocIndex:0},{value:".",paraId:1,tocIndex:0},{value:"NocoBase provides a printing method for system operation logs, which are printed according to specified fields and output to a designated file. Refer to: ",paraId:3,tocIndex:1},{value:"Logger Plugin - System Logs",paraId:4,tocIndex:1},{value:".",paraId:3,tocIndex:1},{value:`// Default print method app.log.info("message"); // Use in middleware @@ -15821,10 +15874,10 @@ const logger = createLogger({ }); } } -`,paraId:20,tocIndex:6},{value:"Logger Plugin",paraId:21,tocIndex:7},{value:"API Reference",paraId:22,tocIndex:7}],FH={},BH={title:"Audit Log",toc:"menu",filename:"docs/en-US/handbook/audit-logs/index.md",lastUpdated:1732240239e3,description:"Documentation to be added"},jH=[{id:"audit-log",depth:1,title:"Audit Log"}],HH=[{value:"Documentation to be added",paraId:0}],WH={},$H={title:"Auth: WeCom",toc:"menu",filename:"docs/en-US/handbook/auth-wecom/index.md",lastUpdated:1732240239e3,description:"The Auth: WeCom plugin enables users to log in to NocoBase using their WeCom accounts, streamlining the authentication process for enterprise environments."},GH=[{id:"auth-wecom",depth:1,title:"Auth: WeCom"},{id:"introduction",depth:2,title:"Introduction"},{id:"activating-the-plugin",depth:2,title:"Activating the Plugin"},{id:"creating-and-configuring-a-custom-wecom-application",depth:2,title:"Creating and Configuring a Custom WeCom Application"},{id:"retrieving-keys-from-the-wecom-admin-console",depth:2,title:"Retrieving Keys from the WeCom Admin Console"},{id:"integrating-wecom-authentication-into-nocobase",depth:2,title:"Integrating WeCom Authentication into NocoBase"},{id:"configuration-steps",depth:3,title:"Configuration Steps"},{id:"configuring-the-wecom-application-homepage",depth:2,title:"Configuring the WeCom Application Homepage"},{id:"logging-in",depth:2,title:"Logging In"},{id:"initial-login-process",depth:2,title:"Initial Login Process"}],VH=[{value:"The Auth: WeCom plugin enables users to log in to NocoBase using their WeCom accounts, streamlining the authentication process for enterprise environments.",paraId:0,tocIndex:1},{value:"Start by accessing the WeCom admin console to create a custom application tailored to your enterprise needs.",paraId:1,tocIndex:3},{value:'Once the application is created, navigate to its details page. Scroll down to find and select the "WeCom Authorized Login" option.',paraId:2,tocIndex:3},{value:"Ensure that the authorization callback domain is set to your NocoBase application domain.",paraId:3,tocIndex:3},{value:'Next, return to the application\u2019s details page and click on "\u7F51\u9875\u6388\u6743\u53CASDK"("Web Authorization and JS-SDK")',paraId:4,tocIndex:3},{value:"Set and verify the callback domain to enable the OAuth2.0 web authorization for your application.",paraId:5,tocIndex:3},{value:'Then, head over to the "\u4F01\u4E1A\u53EF\u4FE1IP"("Trusted IP") section within the details page.',paraId:6,tocIndex:3},{value:"Here, configure the IP address associated with your NocoBase application.",paraId:7,tocIndex:3},{value:'In the WeCom admin console, under "\u6211\u7684\u4F01\u4E1A"("My Company") locate and copy the "\u4F01\u4E1AID"("Company ID")',paraId:8,tocIndex:4},{value:'Then, navigate to "\u5E94\u7528\u7BA1\u7406"("Application Management"), select the application you created earlier, and copy both the AgentId and Secret from the details page.',paraId:9,tocIndex:4},{value:"Go to the user authentication plugin management section in NocoBase.",paraId:10,tocIndex:5},{value:'Click on "Add new" and select "WeCom" from the list.',paraId:11,tocIndex:5},{value:"When a phone number does not match an existing user, should a new user be created automatically - When the phone number does not match an existing user, a new user is automatically created.",paraId:12,tocIndex:6},{value:'"Company ID, "AgentId" And "Secret" - Enter the key information copied in the previous step.',paraId:12,tocIndex:6},{value:"Workbench application homepage link - Enter the Workbench application homepage link, then copy and proceed to the next step.",paraId:12,tocIndex:6},{value:"In the WeCom admin console, paste the previously copied Workbench application homepage link into the corresponding field for the application\u2019s homepage URL.",paraId:13,tocIndex:7},{value:"To log in, visit the NocoBase login page and click the button below the login form to start the third-party authentication process.",paraId:14,tocIndex:8},{value:"Please note that due to WeCom's restrictions on accessing sensitive information, such as phone numbers, the authorization process can only be completed within the WeCom client. For your first time logging in with WeCom, follow the steps below to authorize the initial login within the WeCom client.",paraId:15},{value:"To complete your first login, open the Workbench in the WeCom client, scroll to the bottom, select the application, and navigate to the application homepage you previously configured. This will complete the authorization, allowing you to use WeCom login in the NocoBase application thereafter.",paraId:16,tocIndex:9}],KH={},ZH={title:"Tree Filter Block",toc:"menu",filename:"docs/en-US/handbook/block-tree/index.md",lastUpdated:1732240239e3,description:"The tree filter block needs to be connected to the data block for use, providing filtering capabilities for the data block."},YH=[{id:"tree-filter-block",depth:1,title:"Tree Filter Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-block",depth:2,title:"Adding Block"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"connecting-data-block",depth:3,title:"Connecting Data Block"},{id:"configuring-fields",depth:2,title:"Configuring Fields"}],QH=[{value:"The tree filter block needs to be connected to the data block for use, providing filtering capabilities for the data block.",paraId:0,tocIndex:1},{value:` +`,paraId:20,tocIndex:6},{value:"Logger Plugin",paraId:21,tocIndex:7},{value:"API Reference",paraId:22,tocIndex:7}],FH={},BH={title:"Audit Log",toc:"menu",filename:"docs/en-US/handbook/audit-logs/index.md",lastUpdated:173254844e4,description:"Documentation to be added"},jH=[{id:"audit-log",depth:1,title:"Audit Log"}],HH=[{value:"Documentation to be added",paraId:0}],WH={},$H={title:"Auth: WeCom",toc:"menu",filename:"docs/en-US/handbook/auth-wecom/index.md",lastUpdated:173254844e4,description:"The Auth: WeCom plugin enables users to log in to NocoBase using their WeCom accounts, streamlining the authentication process for enterprise environments."},GH=[{id:"auth-wecom",depth:1,title:"Auth: WeCom"},{id:"introduction",depth:2,title:"Introduction"},{id:"activating-the-plugin",depth:2,title:"Activating the Plugin"},{id:"creating-and-configuring-a-custom-wecom-application",depth:2,title:"Creating and Configuring a Custom WeCom Application"},{id:"retrieving-keys-from-the-wecom-admin-console",depth:2,title:"Retrieving Keys from the WeCom Admin Console"},{id:"integrating-wecom-authentication-into-nocobase",depth:2,title:"Integrating WeCom Authentication into NocoBase"},{id:"configuration-steps",depth:3,title:"Configuration Steps"},{id:"configuring-the-wecom-application-homepage",depth:2,title:"Configuring the WeCom Application Homepage"},{id:"logging-in",depth:2,title:"Logging In"},{id:"initial-login-process",depth:2,title:"Initial Login Process"}],VH=[{value:"The Auth: WeCom plugin enables users to log in to NocoBase using their WeCom accounts, streamlining the authentication process for enterprise environments.",paraId:0,tocIndex:1},{value:"Start by accessing the WeCom admin console to create a custom application tailored to your enterprise needs.",paraId:1,tocIndex:3},{value:'Once the application is created, navigate to its details page. Scroll down to find and select the "WeCom Authorized Login" option.',paraId:2,tocIndex:3},{value:"Ensure that the authorization callback domain is set to your NocoBase application domain.",paraId:3,tocIndex:3},{value:'Next, return to the application\u2019s details page and click on "\u7F51\u9875\u6388\u6743\u53CASDK"("Web Authorization and JS-SDK")',paraId:4,tocIndex:3},{value:"Set and verify the callback domain to enable the OAuth2.0 web authorization for your application.",paraId:5,tocIndex:3},{value:'Then, head over to the "\u4F01\u4E1A\u53EF\u4FE1IP"("Trusted IP") section within the details page.',paraId:6,tocIndex:3},{value:"Here, configure the IP address associated with your NocoBase application.",paraId:7,tocIndex:3},{value:'In the WeCom admin console, under "\u6211\u7684\u4F01\u4E1A"("My Company") locate and copy the "\u4F01\u4E1AID"("Company ID")',paraId:8,tocIndex:4},{value:'Then, navigate to "\u5E94\u7528\u7BA1\u7406"("Application Management"), select the application you created earlier, and copy both the AgentId and Secret from the details page.',paraId:9,tocIndex:4},{value:"Go to the user authentication plugin management section in NocoBase.",paraId:10,tocIndex:5},{value:'Click on "Add new" and select "WeCom" from the list.',paraId:11,tocIndex:5},{value:"When a phone number does not match an existing user, should a new user be created automatically - When the phone number does not match an existing user, a new user is automatically created.",paraId:12,tocIndex:6},{value:'"Company ID, "AgentId" And "Secret" - Enter the key information copied in the previous step.',paraId:12,tocIndex:6},{value:"Workbench application homepage link - Enter the Workbench application homepage link, then copy and proceed to the next step.",paraId:12,tocIndex:6},{value:"In the WeCom admin console, paste the previously copied Workbench application homepage link into the corresponding field for the application\u2019s homepage URL.",paraId:13,tocIndex:7},{value:"To log in, visit the NocoBase login page and click the button below the login form to start the third-party authentication process.",paraId:14,tocIndex:8},{value:"Please note that due to WeCom's restrictions on accessing sensitive information, such as phone numbers, the authorization process can only be completed within the WeCom client. For your first time logging in with WeCom, follow the steps below to authorize the initial login within the WeCom client.",paraId:15},{value:"To complete your first login, open the Workbench in the WeCom client, scroll to the bottom, select the application, and navigate to the application homepage you previously configured. This will complete the authorization, allowing you to use WeCom login in the NocoBase application thereafter.",paraId:16,tocIndex:9}],KH={},ZH={title:"Tree Filter Block",toc:"menu",filename:"docs/en-US/handbook/block-tree/index.md",lastUpdated:173254844e4,description:"The tree filter block needs to be connected to the data block for use, providing filtering capabilities for the data block."},YH=[{id:"tree-filter-block",depth:1,title:"Tree Filter Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"adding-block",depth:2,title:"Adding Block"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"connecting-data-block",depth:3,title:"Connecting Data Block"},{id:"configuring-fields",depth:2,title:"Configuring Fields"}],QH=[{value:"The tree filter block needs to be connected to the data block for use, providing filtering capabilities for the data block.",paraId:0,tocIndex:1},{value:` `,paraId:1},{value:"Example: The form filter block connects to the detail data block to achieve linkage.",paraId:2,tocIndex:4},{value:` `,paraId:1},{value:` - `,paraId:1},{value:"For more information, refer to ",paraId:3,tocIndex:4},{value:"Connecting Data Block",paraId:4,tocIndex:4},{value:"Editing Block Title",paraId:5,tocIndex:4},{value:"Linkage Rule",paraId:6,tocIndex:4},{value:"Save as Block Template",paraId:7,tocIndex:4}],JH={},XH={title:"Sort Field",toc:"menu",filename:"docs/en-US/handbook/field-sort/index.md",lastUpdated:1732240239e3,description:"Sort fields are used to sort records in the collection, supporting group first then sort (sort1)."},eW=[{id:"sort-field",depth:1,title:"Sort Field"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"create-a-sort-field",depth:3,title:"Create a Sort Field"},{id:"example-1-create-the-sort1-field",depth:4,title:"Example 1: Create the sort1 field"},{id:"example-2-create-a-sort2-field-based-on-class-id-grouping",depth:4,title:"Example 2: Create a sort2 field based on Class ID grouping"},{id:"drag-and-drop-sorting",depth:3,title:"Drag-and-Drop Sorting"},{id:"drag-and-drop-sorting-of-table-rows",depth:4,title:"Drag-and-Drop Sorting of Table Rows"},{id:"drag-and-drop-sorting-of-board-cards",depth:4,title:"Drag-and-Drop Sorting of Board Cards"},{id:"sorting-rule-explanation",depth:3,title:"Sorting Rule Explanation"},{id:"displacement-between-ungrouped-or-same-group-elements",depth:4,title:"Displacement between ungrouped (or same group) elements"},{id:"movement-of-elements-between-different-groups",depth:4,title:"Movement of elements between different groups"},{id:"sort-changes-are-unrelated-to-the-data-displayed-on-the-screen",depth:4,title:"Sort changes are unrelated to the data displayed on the screen"}],aW=[{value:"Sort fields are used to sort records in the collection, supporting group first then sort (sort1).",paraId:0,tocIndex:1},{value:"Since the sort field is a field in the current collection, when sorting by group, it does not support the same record being divided into multiple groups.",paraId:1},{value:"Built-in plugin, no separate installation required.",paraId:2,tocIndex:2},{value:"When creating sort fields, the sort values will be initialized:",paraId:3,tocIndex:4},{value:"If group sorting is not selected, initialization will be based on the primary key field and creation date field.",paraId:4,tocIndex:4},{value:"If group sorting is selected, the data will be grouped first, and then initialization will be based on the primary key field and creation date field.",paraId:4,tocIndex:4},{value:"When creating a field, if the sort value initialization fails, the sort field will not be created;",paraId:5},{value:"Within a certain range, if a record moves from position A to position B, the sort values of all records in the AB interval will change. If one fails, the move will fail, and the sort values of the related records will not change.",paraId:5},{value:"The sort1 field is not grouped",paraId:6,tocIndex:5},{value:"The sort fields of each record will be initialized based on the primary key field and creation date field.",paraId:7,tocIndex:5},{value:"At this time, all records in the collection will be grouped first (grouped by Class ID), and then the sort field (sort2) will be initialized. The initial values of each record are:",paraId:8,tocIndex:6},{value:"Sort fields are mainly used for drag-and-drop sorting of various block records. The blocks currently supporting drag-and-drop sorting include tables and boards.",paraId:9,tocIndex:7},{value:"When the same sort field is used for drag-and-drop sorting, mixed use of multiple blocks may disrupt the existing order;",paraId:10},{value:`The field for table drag-and-drop sorting cannot choose a sort field with a grouping rule; + `,paraId:1},{value:"For more information, refer to ",paraId:3,tocIndex:4},{value:"Connecting Data Block",paraId:4,tocIndex:4},{value:"Editing Block Title",paraId:5,tocIndex:4},{value:"Linkage Rule",paraId:6,tocIndex:4},{value:"Save as Block Template",paraId:7,tocIndex:4}],JH={},XH={title:"Sort Field",toc:"menu",filename:"docs/en-US/handbook/field-sort/index.md",lastUpdated:173254844e4,description:"Sort fields are used to sort records in the collection, supporting group first then sort (sort1)."},eW=[{id:"sort-field",depth:1,title:"Sort Field"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"create-a-sort-field",depth:3,title:"Create a Sort Field"},{id:"example-1-create-the-sort1-field",depth:4,title:"Example 1: Create the sort1 field"},{id:"example-2-create-a-sort2-field-based-on-class-id-grouping",depth:4,title:"Example 2: Create a sort2 field based on Class ID grouping"},{id:"drag-and-drop-sorting",depth:3,title:"Drag-and-Drop Sorting"},{id:"drag-and-drop-sorting-of-table-rows",depth:4,title:"Drag-and-Drop Sorting of Table Rows"},{id:"drag-and-drop-sorting-of-board-cards",depth:4,title:"Drag-and-Drop Sorting of Board Cards"},{id:"sorting-rule-explanation",depth:3,title:"Sorting Rule Explanation"},{id:"displacement-between-ungrouped-or-same-group-elements",depth:4,title:"Displacement between ungrouped (or same group) elements"},{id:"movement-of-elements-between-different-groups",depth:4,title:"Movement of elements between different groups"},{id:"sort-changes-are-unrelated-to-the-data-displayed-on-the-screen",depth:4,title:"Sort changes are unrelated to the data displayed on the screen"}],aW=[{value:"Sort fields are used to sort records in the collection, supporting group first then sort (sort1).",paraId:0,tocIndex:1},{value:"Since the sort field is a field in the current collection, when sorting by group, it does not support the same record being divided into multiple groups.",paraId:1},{value:"Built-in plugin, no separate installation required.",paraId:2,tocIndex:2},{value:"When creating sort fields, the sort values will be initialized:",paraId:3,tocIndex:4},{value:"If group sorting is not selected, initialization will be based on the primary key field and creation date field.",paraId:4,tocIndex:4},{value:"If group sorting is selected, the data will be grouped first, and then initialization will be based on the primary key field and creation date field.",paraId:4,tocIndex:4},{value:"When creating a field, if the sort value initialization fails, the sort field will not be created;",paraId:5},{value:"Within a certain range, if a record moves from position A to position B, the sort values of all records in the AB interval will change. If one fails, the move will fail, and the sort values of the related records will not change.",paraId:5},{value:"The sort1 field is not grouped",paraId:6,tocIndex:5},{value:"The sort fields of each record will be initialized based on the primary key field and creation date field.",paraId:7,tocIndex:5},{value:"At this time, all records in the collection will be grouped first (grouped by Class ID), and then the sort field (sort2) will be initialized. The initial values of each record are:",paraId:8,tocIndex:6},{value:"Sort fields are mainly used for drag-and-drop sorting of various block records. The blocks currently supporting drag-and-drop sorting include tables and boards.",paraId:9,tocIndex:7},{value:"When the same sort field is used for drag-and-drop sorting, mixed use of multiple blocks may disrupt the existing order;",paraId:10},{value:`The field for table drag-and-drop sorting cannot choose a sort field with a grouping rule; `,paraId:10},{value:"Exception: In a one-to-many relationship table block, the foreign key can serve as a group;",paraId:11},{value:"Currently, only the board block supports group drag-and-drop sorting.",paraId:10},{value:"Table block",paraId:12,tocIndex:8},{value:"Relationship table block",paraId:13,tocIndex:8},{value:"In a one-to-many relationship block",paraId:14},{value:"If an ungrouped sort field is selected, all records may participate in the sorting;",paraId:15},{value:"If it is first grouped based on the foreign key and then sorted, the sorting rule will only affect the data within the current group.",paraId:15},{value:"The final effect is consistent, but the number of records participating in sorting is different, for more explanation, see [Sorting Rule Explanation](#Sorting Rule Explanation)",paraId:16},{value:"Suppose there is a set of data",paraId:17,tocIndex:11},{value:`[1,2,3,4,5,6,7,8,9] `,paraId:18,tocIndex:11},{value:"When an element, suppose 5, moves forward to position 3, at this time, only the sequence numbers 3,4,5 have changed, 5 occupies the position of 3, and 3,4 each move back one position.",paraId:19,tocIndex:11},{value:`[1,2,5,3,4,6,7,8,9] `,paraId:20,tocIndex:11},{value:"At this time, continue to move 6 back to position 8, 6 occupies the position of 8, 7,8 each move forward one position.",paraId:21,tocIndex:11},{value:`[1,2,5,3,4,7,8,6,9] @@ -15836,8 +15889,8 @@ B: [5,6,1,7,8] `,paraId:28,tocIndex:13},{value:"The screen only shows",paraId:29,tocIndex:13},{value:`[1,5,9] `,paraId:30,tocIndex:13},{value:"When 1 moves to position 9, the positions of the intervening 2,3,4,5,6,7,8 data will all change",paraId:31,tocIndex:13},{value:`[2,3,4,5,6,7,8,9,1] `,paraId:32,tocIndex:13},{value:"The screen displays",paraId:33,tocIndex:13},{value:`[5,9,1] -`,paraId:34,tocIndex:13}],tW={},nW={title:"Actions",toc:"menu",filename:"docs/en-US/handbook/ui/actions/index.md",lastUpdated:1732240239e3,description:"In the UI, Actions are represented by buttons that trigger specific commands. These buttons can be directly placed on pages, within dialogs, or inside drawers, and they can also be combined with blocks. The current dynamic configuration options for Actions are primarily used when combined with blocks."},oW=[{id:"actions",depth:1,title:"Actions"},{id:"actions-within-blocks",depth:4,title:"Actions within Blocks"},{id:"operation-designer-toolbar",depth:4,title:"Operation Designer (Toolbar)"},{id:"operation-drag-and-drop-sorting",depth:4,title:"Operation Drag-and-Drop Sorting"}],rW=[{value:"In the UI, Actions are represented by buttons that trigger specific commands. These buttons can be directly placed on pages, within dialogs, or inside drawers, and they can also be combined with blocks. The current dynamic configuration options for Actions are primarily used when combined with blocks.",paraId:0,tocIndex:0},{value:"Unlike blocks and fields, the operation designer features only two icons:",paraId:1,tocIndex:2},{value:"Drag",paraId:2,tocIndex:2},{value:"Configuration actions",paraId:2,tocIndex:2},{value:'To reorder buttons, simply hold down the "Drag" icon in the button designer and rearrange the buttons as needed.',paraId:3,tocIndex:3}],dW={},iW={title:"\u6570\u636E\u8868\u7EE7\u627F",toc:"menu",filename:"docs/en-US/manual/collection/inherit.md",lastUpdated:1732240239e3,description:"\u6570\u636E\u8868\u7EE7\u627F\u662F PostgreSQL \u6570\u636E\u5E93\u72EC\u6709\u7684\u529F\u80FD\uFF08\u9700\u8981\u8FDE\u63A5 PostgreSQL \uFF09\uFF0C\u5B83\u5141\u8BB8\u5728\u4E3B\u8868\u7684\u57FA\u7840\u4E0A\u521B\u5EFA\u5B50\u8868\uFF0C\u5B50\u8868\u7EE7\u627F\u4E86\u4E3B\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u5B9A\u4E49\u548C\u7D22\u5F15\u3002\u8FD9\u4E2A\u7279\u6027\u4E3B\u8981\u7528\u4E8E\u7BA1\u7406\u5927\u91CF\u6570\u636E\uFF0C\u5B9E\u73B0\u6570\u636E\u5206\u533A\u548C\u6027\u80FD\u4F18\u5316\u3002\u6BCF\u4E2A\u5B50\u8868\u53EF\u4EE5\u5B58\u50A8\u7279\u5B9A\u6761\u4EF6\u4E0B\u7684\u6570\u636E\uFF0C\u4F8B\u5982\u6309\u65F6\u95F4\u5206\u5272\u6570\u636E\uFF0C\u4ECE\u800C\u51CF\u5C11\u67E5\u8BE2\u65F6\u7684\u6570\u636E\u626B\u63CF\u91CF\uFF0C\u63D0\u9AD8\u67E5\u8BE2\u6027\u80FD\u3002\u6B64\u5916\uFF0C\u4E3B\u8868\u548C\u5B50\u8868\u7684\u67E5\u8BE2\u900F\u660E\u5316\uFF0C\u7528\u6237\u53EF\u4EE5\u50CF\u64CD\u4F5C\u5355\u4E2A\u8868\u4E00\u6837\u67E5\u8BE2\u6574\u4E2A\u7EE7\u627F\u8868\u96C6\u5408\uFF0C\u7B80\u5316\u4E86\u6570\u636E\u64CD\u4F5C\u548C\u67E5\u8BE2\u7684\u590D\u6742\u6027\uFF0C\u4F7F\u6570\u636E\u5E93\u66F4\u9AD8\u6548\u5730\u5904\u7406\u5927\u89C4\u6A21\u6570\u636E\u3002"},lW=[{id:"\u6570\u636E\u8868\u7EE7\u627F",depth:1,title:"\u6570\u636E\u8868\u7EE7\u627F"},{id:"\u5355\u7EE7\u627F",depth:2,title:"\u5355\u7EE7\u627F"},{id:"\u591A\u7EE7\u627F",depth:2,title:"\u591A\u7EE7\u627F"},{id:"\u5B57\u6BB5\u91CD\u5199",depth:2,title:"\u5B57\u6BB5\u91CD\u5199"},{id:"\u5173\u7CFB\u5B57\u6BB5\u91CD\u5199",depth:3,title:"\u5173\u7CFB\u5B57\u6BB5\u91CD\u5199"},{id:"\u53EF\u9009\u9879\u7C7B\u578B\u5B57\u6BB5\u7684\u91CD\u5199",depth:3,title:"\u53EF\u9009\u9879\u7C7B\u578B\u5B57\u6BB5\u7684\u91CD\u5199"},{id:"\u5173\u7CFB\u5916\u952E\u5171\u4EAB",depth:2,title:"\u5173\u7CFB\u5916\u952E\u5171\u4EAB"}],cW=[{value:"\u6570\u636E\u8868\u7EE7\u627F\u662F PostgreSQL \u6570\u636E\u5E93\u72EC\u6709\u7684\u529F\u80FD\uFF08\u9700\u8981\u8FDE\u63A5 PostgreSQL \uFF09\uFF0C\u5B83\u5141\u8BB8\u5728\u4E3B\u8868\u7684\u57FA\u7840\u4E0A\u521B\u5EFA\u5B50\u8868\uFF0C\u5B50\u8868\u7EE7\u627F\u4E86\u4E3B\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u5B9A\u4E49\u548C\u7D22\u5F15\u3002\u8FD9\u4E2A\u7279\u6027\u4E3B\u8981\u7528\u4E8E\u7BA1\u7406\u5927\u91CF\u6570\u636E\uFF0C\u5B9E\u73B0\u6570\u636E\u5206\u533A\u548C\u6027\u80FD\u4F18\u5316\u3002\u6BCF\u4E2A\u5B50\u8868\u53EF\u4EE5\u5B58\u50A8\u7279\u5B9A\u6761\u4EF6\u4E0B\u7684\u6570\u636E\uFF0C\u4F8B\u5982\u6309\u65F6\u95F4\u5206\u5272\u6570\u636E\uFF0C\u4ECE\u800C\u51CF\u5C11\u67E5\u8BE2\u65F6\u7684\u6570\u636E\u626B\u63CF\u91CF\uFF0C\u63D0\u9AD8\u67E5\u8BE2\u6027\u80FD\u3002\u6B64\u5916\uFF0C\u4E3B\u8868\u548C\u5B50\u8868\u7684\u67E5\u8BE2\u900F\u660E\u5316\uFF0C\u7528\u6237\u53EF\u4EE5\u50CF\u64CD\u4F5C\u5355\u4E2A\u8868\u4E00\u6837\u67E5\u8BE2\u6574\u4E2A\u7EE7\u627F\u8868\u96C6\u5408\uFF0C\u7B80\u5316\u4E86\u6570\u636E\u64CD\u4F5C\u548C\u67E5\u8BE2\u7684\u590D\u6742\u6027\uFF0C\u4F7F\u6570\u636E\u5E93\u66F4\u9AD8\u6548\u5730\u5904\u7406\u5927\u89C4\u6A21\u6570\u636E\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5355\u7EE7\u627F\u6A21\u5F0F\u4E2D\uFF0C\u4E00\u4E2A\u8868\u53EF\u4EE5\u7EE7\u627F\u53E6\u4E00\u4E2A\u8868\uFF0C\u5B50\u8868\u7EE7\u627F\u4E86\u7236\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u548C\u7EA6\u675F\u3002\u8FD9\u79CD\u6A21\u5F0F\u7528\u4E8E\u8868\u793A\u5B9E\u4F53\u7684\u5C42\u6B21\u7ED3\u6784\uFF0C\u5141\u8BB8\u5B50\u8868\u5728\u4FDD\u7559\u901A\u7528\u5C5E\u6027\u7684\u540C\u65F6\u6DFB\u52A0\u7279\u5B9A\u5C5E\u6027\u3002",paraId:1,tocIndex:1},{value:'\u5728\u8BA2\u5355\u7CFB\u7EDF\u4E2D\uFF0C\u914D\u7F6E"\u6279\u53D1\u8BA2\u5355\u8868"\u7EE7\u627F\u81EA\u4E3B\u8868 "\u8BA2\u5355"\uFF0C\u7528\u4E8E\u5904\u7406\u6279\u53D1\u8BA2\u5355\uFF0C\u914D\u7F6E\u4E86\u6279\u53D1\u5BA2\u6237\u7279\u6709\u7684\u5B57\u6BB5\uFF0C\u5982\u6279\u53D1\u4EF7\u683C\u3001\u6279\u6B21\u53F7\u7B49\u3002',paraId:2,tocIndex:1},{value:"\u5546\u54C1\u8868\u7684\u7EE7\u627F\u5173\u7CFB\u4E5F\u53EF\u4EE5\u505A\u5982\u4E0B\u68B3\u7406",paraId:3,tocIndex:1},{value:'\u4E3B\u8868 "\u5546\u54C1"\uFF08Products\uFF09\uFF1A\u5305\u542B\u901A\u7528\u5546\u54C1\u4FE1\u606F\uFF0C\u5982\u5546\u54C1 ID\u3001\u540D\u79F0\u3001\u4EF7\u683C\u3001\u5E93\u5B58\u7B49\u3002',paraId:4,tocIndex:1},{value:'\u5B50\u8868 "\u7535\u5B50\u4EA7\u54C1"\uFF08ElectronicsProduct\uFF09\uFF1A\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u5E76\u6DFB\u52A0\u4E86\u7279\u5B9A\u4E8E\u7535\u5B50\u4EA7\u54C1\u7684\u5B57\u6BB5\uFF0C\u5982\u5C4F\u5E55\u5C3A\u5BF8\u3001\u64CD\u4F5C\u7CFB\u7EDF\u7B49\u5B57\u6BB5\u3002',paraId:4,tocIndex:1},{value:'\u5B50\u8868 "\u670D\u88C5\u4EA7\u54C1"\uFF08ApparelProduct\uFF09\uFF1A\u540C\u6837\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u4F46\u5305\u542B\u670D\u88C5\u4EA7\u54C1\u7279\u6709\u7684\u5C5E\u6027\uFF0C\u5982\u5C3A\u5BF8\u3001\u989C\u8272\u3001\u6750\u8D28\u7B49\u5B57\u6BB5\u3002',paraId:4,tocIndex:1},{value:'\u5B50\u8868 "\u98DF\u54C1\u4EA7\u54C1"\uFF08FoodProduct\uFF09\uFF1A\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u7528\u4E8E\u5904\u7406\u98DF\u54C1\u4EA7\u54C1\uFF0C\u5305\u62EC\u4FDD\u8D28\u671F\u3001\u98DF\u54C1\u7C7B\u578B\u7B49\u5B57\u6BB5\u3002',paraId:4,tocIndex:1},{value:'\u5B50\u8868 "\u5BB6\u5177\u4EA7\u54C1"\uFF08FurnitureProduct\uFF09\uFF1A\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u5305\u542B\u5BB6\u5177\u4EA7\u54C1\u7684\u7279\u5B9A\u5C5E\u6027\uFF0C\u5982\u5C3A\u5BF8\u3001\u6750\u6599\u7B49\u5B57\u6BB5\u3002',paraId:4,tocIndex:1},{value:"\u591A\u7EE7\u627F\u5141\u8BB8\u4E00\u4E2A\u8868\u540C\u65F6\u7EE7\u627F\u591A\u4E2A\u7236\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u548C\u7EA6\u675F\u3002\u8FD9\u79CD\u6A21\u5F0F\u7528\u4E8E\u5177\u6709\u591A\u4E2A\u5173\u8054\u7684\u5B9E\u4F53\u5EFA\u6A21\u3002",paraId:5,tocIndex:2},{value:"\u4EE5\u8BA2\u5355\u3001\u8FD0\u5355\u548C\u5546\u54C1\u8FDB\u884C\u6570\u636E\u5EFA\u6A21\u4E3A\u4F8B\uFF0C\u5728\u8FD9\u4E2A\u7CFB\u7EDF\u4E2D\uFF0C\u6709\u4E09\u4E2A\u6838\u5FC3\u5B9E\u4F53\uFF1A\u8BA2\u5355\u3001\u8FD0\u5355\u548C\u5546\u54C1\u3002\u4E00\u4E2A\u8BA2\u5355\u53EF\u4EE5\u5305\u542B\u591A\u4E2A\u5546\u54C1\uFF0C\u4E00\u4E2A\u8BA2\u5355\u53EF\u4EE5\u5BF9\u5E94\u591A\u4E2A\u8FD0\u5355\uFF08\u4F8B\u5982\uFF0C\u90E8\u5206\u5546\u54C1\u8FD0\u9001\u5230\u4E0D\u540C\u5730\u70B9\uFF09\uFF0C\u540C\u65F6\u4E00\u4E2A\u8FD0\u5355\u53EF\u80FD\u6D89\u53CA\u591A\u4E2A\u8BA2\u5355\u3002\u8FD9\u79CD\u591A\u91CD\u5173\u7CFB\u53EF\u4EE5\u4F7F\u7528\u4E00\u4E2A\u5B50\u8868\uFF08\u8054\u63A5\u8868\uFF09\u6765\u5B9E\u73B0\uFF0C\u4E00\u4E2A\u8868\u5177\u6709\u591A\u4E2A\u7236\u8868\uFF08\u591A\u7EE7\u627F\uFF09\u3002",paraId:6,tocIndex:2},{value:'\u7236\u8868 "\u8BA2\u5355"\uFF08Orders\uFF09\uFF1A\u5305\u542B\u8BA2\u5355\u7684\u57FA\u672C\u4FE1\u606F\uFF0C\u5982\u8BA2\u5355 ID\u3002',paraId:7,tocIndex:2},{value:'\u7236\u8868 "\u8FD0\u5355"\uFF08Shipments\uFF09\uFF1A\u5305\u542B\u8FD0\u5355\u53F7\u3001\u8FD0\u8F93\u65B9\u5F0F\u4FE1\u606F\u7B49\u3002',paraId:7,tocIndex:2},{value:'\u7236\u8868 "\u5546\u54C1"\uFF08Products\uFF09\uFF1A\u5305\u542B\u5546\u54C1\u7684\u5C5E\u6027\uFF0C\u5982\u5546\u54C1 ID\u3001\u540D\u79F0\u3001\u4EF7\u683C\u7B49\u3002',paraId:7,tocIndex:2},{value:'\u5B50\u8868"\u8BA2\u5355\u5546\u54C1"\uFF08OrderProduct\uFF09\uFF1A\u7528\u4E8E\u7EE7\u627F\u8BA2\u5355\u548C\u5546\u54C1\u3002\u6BCF\u4E2A\u8BB0\u5F55\u8868\u793A\u4E00\u4E2A\u8BA2\u5355\u4E2D\u7684\u4E00\u4E2A\u5546\u54C1\uFF0C\u540C\u65F6\u8BB0\u5F55\u4E86\u6570\u91CF\u7B49\u4FE1\u606F\u3002',paraId:7,tocIndex:2},{value:'\u5B50\u8868 "\u8BA2\u5355\u8FD0\u5355\u5173\u8054"\uFF08OrderShipment\uFF09\uFF1A\u7528\u4E8E\u7EE7\u627F\u8BA2\u5355\u548C\u8FD0\u5355\u3002\u6BCF\u4E2A\u8BB0\u5F55\u8868\u793A\u4E00\u4E2A\u8BA2\u5355\u4E0E\u4E00\u4E2A\u8FD0\u5355\u7684\u5173\u7CFB\uFF0C\u540C\u65F6\u8BB0\u5F55\u4E86\u76F8\u5173\u4FE1\u606F',paraId:7,tocIndex:2},{value:"\u7EE7\u627F\u5173\u7CFB\u4E2D\u5B50\u8868\u53EF\u91CD\u65B0\u5B9A\u4E49\u6216\u8986\u76D6\u4ECE\u7236\u8868\u7EE7\u627F\u7684\u5B57\u6BB5\uFF0C\u81EA\u5B9A\u4E49\u5B57\u6BB5\u5C5E\u6027\u4EE5\u9002\u5E94\u7279\u5B9A\u9700\u6C42",paraId:8,tocIndex:3},{value:`\u5982 A \u591A\u5BF9\u591A B\uFF0CA1 \u7EE7\u627F A\uFF0CB1 \u7EE7\u627F B -\u5219 A1 \u4E5F\u5173\u8054 B\uFF0C\u8FD9\u65F6\u5019 B \u6709\u6240\u6709\uFF08\u672C\u8EAB\u53CA\u6240\u6709\u5B50\u8868\uFF09\u7684\u6570\u636E\uFF0C\u4F46\u662F A1 \u53EA\u9700\u8981\u770B B1 \u7684\u6570\u636E\uFF0C\u5219\u53EF\u4EE5 \u5728 A1 \u4E2D\u91CD\u5199 \u628A B target \u6539\u6210 B1\u3002\u5373\u5728\u5173\u7CFB A1.B \u4E2D\uFF0C\u53EF\u4EE5\u4FEE\u6539\u5173\u8054\u7684\u76EE\u6807\u8868 B\uFF08\u53EF\u9009\u8303\u56F4\u4E3A B \u548C B \u7684\u5B50\u8868\uFF09\u4E3A B1`,paraId:9,tocIndex:4},{value:"\u5982\u56FE\uFF1A\u6279\u53D1\u8BA2\u5355\u8868\u4E2D\u91CD\u5199\u5546\u54C1\u5173\u7CFB\u5B57\u6BB5\uFF08\u5C06\u76EE\u6807\u8868\u91CD\u5199\u4E3A\u7535\u5B50\u5546\u54C1\u8868\uFF09",paraId:10,tocIndex:4},{value:"\u5546\u54C1\u8868\uFF08\u4E3B\u8868\uFF09\u4E2D\u6709\u53EF\u9009\u9879\u5B57\u6BB5\u300C\u5C3A\u5BF8\u300D\uFF1A\u670D\u88C5\u5546\u54C1\u53EF\u4EE5\u5B9A\u4E49\u91CD\u5199\u4E3A\u8863\u670D\u5C3A\u5BF8\uFF08S\u3001M\u3001L\uFF09\uFF0C\u7535\u5B50\u5546\u54C1\u8868\u5219\u53EF\u4EE5\u91CD\u5199\u5B57\u6BB5\u4E3A\u300C\u5B58\u50A8\u5BB9\u91CF\u300D\uFF0832GB\u300164GB\u3001128GB\uFF09",paraId:11,tocIndex:5},{value:"\u5173\u7CFB\u5916\u952E\u5171\u4EAB\u662F\u4E00\u79CD\u7B56\u7565\uFF0C\u5141\u8BB8\u591A\u4E2A\u8868\u5171\u4EAB\u76F8\u540C\u7684\u5916\u952E\u5B57\u6BB5\uFF0C\u4EE5\u5EFA\u7ACB\u8868\u4E4B\u95F4\u7684\u5173\u7CFB\u3002\u8FD9\u5728\u591A\u4E2A\u8868\u9700\u8981\u5F15\u7528\u76F8\u540C\u5B9E\u4F53\u65F6\u975E\u5E38\u6709\u7528\u3002\u5728\u6570\u636E\u8868\u7EE7\u627F\u7684\u60C5\u51B5\u4E0B\uFF0C\u8FD9\u4E2A\u5171\u4EAB\u7684\u5916\u952E\u53EF\u4EE5\u7528\u4E8E\u786E\u4FDD\u6BCF\u4E2A\u5B50\u8868\u4E0E\u5176\u4ED6\u8868\u4E4B\u95F4\u7684\u5173\u7CFB\u6216\u5F15\u7528\uFF0C\u4ECE\u800C\u6784\u5EFA\u66F4\u590D\u6742\u7684\u6570\u636E\u6A21\u578B",paraId:12,tocIndex:6}],sW={},uW={title:"\u6587\u4EF6\u7BA1\u7406\u5668",toc:"menu",filename:"docs/en-US/manual/file-manager/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},pW=[{id:"\u6587\u4EF6\u7BA1\u7406\u5668",depth:1,title:"\u6587\u4EF6\u7BA1\u7406\u5668"}],IW=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],_W={},vW={title:"\u672C\u5730\u5B58\u50A8",toc:"menu",filename:"docs/en-US/manual/file-manager/local.md",lastUpdated:1732240239e3},mW=[{id:"\u672C\u5730\u5B58\u50A8",depth:1,title:"\u672C\u5730\u5B58\u50A8"}],hW=[],fW={},xW={title:"\u4E3B\u9898\u7F16\u8F91\u5668",toc:"menu",filename:"docs/en-US/manual/theme-editor/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},gW=[{id:"\u4E3B\u9898\u7F16\u8F91\u5668",depth:1,title:"\u4E3B\u9898\u7F16\u8F91\u5668"}],bW=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],yW={},wW={title:"\u6DFB\u52A0",toc:"menu",filename:"docs/en-US/manual/ui/actions/add-new.md",lastUpdated:1732240239e3},kW=[{id:"\u6DFB\u52A0",depth:1,title:"\u6DFB\u52A0"}],SW=[],UW={},PW={title:"\u5237\u65B0",toc:"menu",filename:"docs/en-US/manual/ui/actions/refresh.md",lastUpdated:1732240239e3,description:"\u5237\u65B0\u64CD\u4F5C\u7528\u4E8E\u91CD\u65B0\u52A0\u8F7D\u6570\u636E\u533A\u5757\u4E2D\u7684\u6570\u636E\uFF0C\u652F\u6301\u624B\u52A8\u5237\u65B0"},TW=[{id:"\u5237\u65B0",depth:1,title:"\u5237\u65B0"}],CW=[{value:"\u5237\u65B0\u64CD\u4F5C\u7528\u4E8E\u91CD\u65B0\u52A0\u8F7D\u6570\u636E\u533A\u5757\u4E2D\u7684\u6570\u636E\uFF0C\u652F\u6301\u624B\u52A8\u5237\u65B0",paraId:0,tocIndex:0}],AW={},qW={title:"SQL \u64CD\u4F5C",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/sql.md",lastUpdated:1732240239e3,description:"\u5728\u4E00\u4E9B\u7279\u6B8A\u573A\u666F\u91CC\uFF0C\u4E0A\u9762\u7B80\u5355\u7684\u6570\u636E\u8868\u64CD\u4F5C\u8282\u70B9\u53EF\u80FD\u65E0\u6CD5\u590D\u6742\u7684\u64CD\u4F5C\uFF0C\u5219\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 SQL \u8282\u70B9\uFF0C\u4F7F\u6570\u636E\u5E93\u76F4\u63A5\u6267\u884C\u590D\u6742\u7684 SQL \u8BED\u53E5\u8FDB\u884C\u6570\u636E\u64CD\u4F5C\u3002"},EW=[{id:"sql-\u64CD\u4F5C",depth:1,title:"SQL \u64CD\u4F5C"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"}],DW=[{value:"\u5728\u4E00\u4E9B\u7279\u6B8A\u573A\u666F\u91CC\uFF0C\u4E0A\u9762\u7B80\u5355\u7684\u6570\u636E\u8868\u64CD\u4F5C\u8282\u70B9\u53EF\u80FD\u65E0\u6CD5\u590D\u6742\u7684\u64CD\u4F5C\uFF0C\u5219\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 SQL \u8282\u70B9\uFF0C\u4F7F\u6570\u636E\u5E93\u76F4\u63A5\u6267\u884C\u590D\u6742\u7684 SQL \u8BED\u53E5\u8FDB\u884C\u6570\u636E\u64CD\u4F5C\u3002",paraId:0,tocIndex:0},{value:"\u4E0E\u5728\u5E94\u7528\u5916\u90E8\u76F4\u63A5\u8FDE\u63A5\u6570\u636E\u5E93\u8FDB\u884C SQL \u64CD\u4F5C\u7684\u533A\u522B\u662F\uFF0C\u5728\u5DE5\u4F5C\u6D41\u5185\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4F5C\u4E3A SQL \u8BED\u53E5\u4E2D\u7684\u90E8\u5206\u53C2\u6570\u3002",paraId:1,tocIndex:0},{value:"\u76EE\u524D SQL \u8282\u70B9\u8FD8\u4E0D\u652F\u6301 ",paraId:2},{value:"SELECT",paraId:2},{value:" \u8BED\u53E5\u7684\u7ED3\u679C\u4F5C\u4E3A\u8282\u70B9\u7ED3\u679C\u4F7F\u7528\uFF0C\u53EF\u80FD\u4F1A\u5728\u672A\u6765\u652F\u6301\u3002",paraId:2},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201CSQL \u64CD\u4F5C\u201D\u8282\u70B9\uFF1A",paraId:3,tocIndex:1},{value:"\u901A\u8FC7\u7F16\u8F91\u6846\u53F3\u4E0A\u89D2\u7684\u53D8\u91CF\u6309\u94AE\u63D2\u5165\u9700\u8981\u7684\u53D8\u91CF\uFF0C\u4F1A\u5728\u6267\u884C\u524D\u901A\u8FC7\u6587\u672C\u66FF\u6362\u4E3A\u5BF9\u5E94\u53D8\u91CF\u7684\u503C\uFF1A",paraId:4,tocIndex:2}],OW={},RW={title:"\u4F7F\u7528\u624B\u518C",toc:"menu",filename:"docs/en-US/plugins/client/user/index.md",lastUpdated:1732240239e3,description:"\u5185\u7F6E\u6838\u5FC3\u63D2\u4EF6\u4E4B\u4E00\uFF0C\u4E3A NocoBase \u63D0\u4F9B\u5BA2\u6237\u7AEF\u754C\u9762\u3002\u5BA2\u6237\u7AEF\u5185\u7F6E\u4E00\u5957 AdminLayout \u5E03\u5C40\uFF0C\u5E03\u5C40\u7684\u4E3B\u8981\u7EC4\u6210\u90E8\u5206\u5305\u62EC\uFF1A"},MW=[{id:"\u4F7F\u7528\u624B\u518C",depth:1,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u63D2\u4EF6\u7BA1\u7406\u5668",depth:2,title:"\u63D2\u4EF6\u7BA1\u7406\u5668"},{id:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3",depth:2,title:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3"},{id:"\u7528\u6237\u4E2A\u4EBA\u4E2D\u5FC3",depth:2,title:"\u7528\u6237\u4E2A\u4EBA\u4E2D\u5FC3"},{id:"\u754C\u9762\u8BBE\u8BA1\u5668",depth:2,title:"\u754C\u9762\u8BBE\u8BA1\u5668"}],LW=[{value:"\u5185\u7F6E\u6838\u5FC3\u63D2\u4EF6\u4E4B\u4E00\uFF0C\u4E3A NocoBase \u63D0\u4F9B\u5BA2\u6237\u7AEF\u754C\u9762\u3002\u5BA2\u6237\u7AEF\u5185\u7F6E\u4E00\u5957 AdminLayout \u5E03\u5C40\uFF0C\u5E03\u5C40\u7684\u4E3B\u8981\u7EC4\u6210\u90E8\u5206\u5305\u62EC\uFF1A",paraId:0,tocIndex:0},{value:"\u7BA1\u7406\u63D2\u4EF6\uFF0C\u5305\u62EC\uFF1A\u6DFB\u52A0\u3001\u6FC0\u6D3B\u3001\u7981\u7528\u3001\u5220\u9664",paraId:1,tocIndex:1},{value:"\u5404\u4E2A\u63D2\u4EF6\u7684\u914D\u7F6E\u9875\u9762",paraId:2,tocIndex:2}],NW={},zW={title:"Middleware",toc:"menu",filename:"docs/en-US/api/resourcer/middleware.md",lastUpdated:1732240239e3,description:"It is similar to the middleware of Koa, but with more enhanced features for easy extensions."},FW=[{id:"middleware",depth:1,title:"Middleware"},{id:"constructor",depth:2,title:"Constructor"},{id:"instance-methods",depth:2,title:"Instance Methods"},{id:"gethandler",depth:3,title:"getHandler()"},{id:"use",depth:3,title:"use()"},{id:"disuse",depth:3,title:"disuse()"},{id:"canaccess",depth:3,title:"canAccess()"},{id:"other-exports",depth:2,title:"Other Exports"},{id:"branch",depth:3,title:"branch()"}],BW=[{value:"It is similar to the middleware of Koa, but with more enhanced features for easy extensions.",paraId:0,tocIndex:0},{value:"The defined middleware can be inserted for use in multiple places, such as the resourcer, and it is up to the developer for when to invoke it.",paraId:1,tocIndex:0},{value:"Signature",paraId:2,tocIndex:1},{value:"constructor(options: Function)",paraId:3,tocIndex:1},{value:"constructor(options: MiddlewareOptions)",paraId:3,tocIndex:1},{value:"Parameter",paraId:4,tocIndex:1},{value:"Name",paraId:5,tocIndex:1},{value:"Type",paraId:5,tocIndex:1},{value:"Default",paraId:5,tocIndex:1},{value:"Description",paraId:5,tocIndex:1},{value:"options",paraId:5,tocIndex:1},{value:"Function",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"Handler function of middlware",paraId:5,tocIndex:1},{value:"options",paraId:5,tocIndex:1},{value:"MiddlewareOptions ",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"Configuration items of middlware",paraId:5,tocIndex:1},{value:"options.only",paraId:5,tocIndex:1},{value:"string[]",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"Only the specified actions are allowed",paraId:5,tocIndex:1},{value:"options.except",paraId:5,tocIndex:1},{value:"string[]",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"The specified actions are excluded",paraId:5,tocIndex:1},{value:"options.handler",paraId:5,tocIndex:1},{value:"Function",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"Handler function",paraId:5,tocIndex:1},{value:"Example",paraId:6,tocIndex:1},{value:"Simple definition:",paraId:7,tocIndex:1},{value:`const middleware = new Middleware((ctx, next) => { +`,paraId:34,tocIndex:13}],tW={},nW={title:"Actions",toc:"menu",filename:"docs/en-US/handbook/ui/actions/index.md",lastUpdated:173254844e4,description:"In the UI, Actions are represented by buttons that trigger specific commands. These buttons can be directly placed on pages, within dialogs, or inside drawers, and they can also be combined with blocks. The current dynamic configuration options for Actions are primarily used when combined with blocks."},oW=[{id:"actions",depth:1,title:"Actions"},{id:"actions-within-blocks",depth:4,title:"Actions within Blocks"},{id:"operation-designer-toolbar",depth:4,title:"Operation Designer (Toolbar)"},{id:"operation-drag-and-drop-sorting",depth:4,title:"Operation Drag-and-Drop Sorting"}],rW=[{value:"In the UI, Actions are represented by buttons that trigger specific commands. These buttons can be directly placed on pages, within dialogs, or inside drawers, and they can also be combined with blocks. The current dynamic configuration options for Actions are primarily used when combined with blocks.",paraId:0,tocIndex:0},{value:"Unlike blocks and fields, the operation designer features only two icons:",paraId:1,tocIndex:2},{value:"Drag",paraId:2,tocIndex:2},{value:"Configuration actions",paraId:2,tocIndex:2},{value:'To reorder buttons, simply hold down the "Drag" icon in the button designer and rearrange the buttons as needed.',paraId:3,tocIndex:3}],dW={},iW={title:"\u6570\u636E\u8868\u7EE7\u627F",toc:"menu",filename:"docs/en-US/manual/collection/inherit.md",lastUpdated:173254844e4,description:"\u6570\u636E\u8868\u7EE7\u627F\u662F PostgreSQL \u6570\u636E\u5E93\u72EC\u6709\u7684\u529F\u80FD\uFF08\u9700\u8981\u8FDE\u63A5 PostgreSQL \uFF09\uFF0C\u5B83\u5141\u8BB8\u5728\u4E3B\u8868\u7684\u57FA\u7840\u4E0A\u521B\u5EFA\u5B50\u8868\uFF0C\u5B50\u8868\u7EE7\u627F\u4E86\u4E3B\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u5B9A\u4E49\u548C\u7D22\u5F15\u3002\u8FD9\u4E2A\u7279\u6027\u4E3B\u8981\u7528\u4E8E\u7BA1\u7406\u5927\u91CF\u6570\u636E\uFF0C\u5B9E\u73B0\u6570\u636E\u5206\u533A\u548C\u6027\u80FD\u4F18\u5316\u3002\u6BCF\u4E2A\u5B50\u8868\u53EF\u4EE5\u5B58\u50A8\u7279\u5B9A\u6761\u4EF6\u4E0B\u7684\u6570\u636E\uFF0C\u4F8B\u5982\u6309\u65F6\u95F4\u5206\u5272\u6570\u636E\uFF0C\u4ECE\u800C\u51CF\u5C11\u67E5\u8BE2\u65F6\u7684\u6570\u636E\u626B\u63CF\u91CF\uFF0C\u63D0\u9AD8\u67E5\u8BE2\u6027\u80FD\u3002\u6B64\u5916\uFF0C\u4E3B\u8868\u548C\u5B50\u8868\u7684\u67E5\u8BE2\u900F\u660E\u5316\uFF0C\u7528\u6237\u53EF\u4EE5\u50CF\u64CD\u4F5C\u5355\u4E2A\u8868\u4E00\u6837\u67E5\u8BE2\u6574\u4E2A\u7EE7\u627F\u8868\u96C6\u5408\uFF0C\u7B80\u5316\u4E86\u6570\u636E\u64CD\u4F5C\u548C\u67E5\u8BE2\u7684\u590D\u6742\u6027\uFF0C\u4F7F\u6570\u636E\u5E93\u66F4\u9AD8\u6548\u5730\u5904\u7406\u5927\u89C4\u6A21\u6570\u636E\u3002"},lW=[{id:"\u6570\u636E\u8868\u7EE7\u627F",depth:1,title:"\u6570\u636E\u8868\u7EE7\u627F"},{id:"\u5355\u7EE7\u627F",depth:2,title:"\u5355\u7EE7\u627F"},{id:"\u591A\u7EE7\u627F",depth:2,title:"\u591A\u7EE7\u627F"},{id:"\u5B57\u6BB5\u91CD\u5199",depth:2,title:"\u5B57\u6BB5\u91CD\u5199"},{id:"\u5173\u7CFB\u5B57\u6BB5\u91CD\u5199",depth:3,title:"\u5173\u7CFB\u5B57\u6BB5\u91CD\u5199"},{id:"\u53EF\u9009\u9879\u7C7B\u578B\u5B57\u6BB5\u7684\u91CD\u5199",depth:3,title:"\u53EF\u9009\u9879\u7C7B\u578B\u5B57\u6BB5\u7684\u91CD\u5199"},{id:"\u5173\u7CFB\u5916\u952E\u5171\u4EAB",depth:2,title:"\u5173\u7CFB\u5916\u952E\u5171\u4EAB"}],cW=[{value:"\u6570\u636E\u8868\u7EE7\u627F\u662F PostgreSQL \u6570\u636E\u5E93\u72EC\u6709\u7684\u529F\u80FD\uFF08\u9700\u8981\u8FDE\u63A5 PostgreSQL \uFF09\uFF0C\u5B83\u5141\u8BB8\u5728\u4E3B\u8868\u7684\u57FA\u7840\u4E0A\u521B\u5EFA\u5B50\u8868\uFF0C\u5B50\u8868\u7EE7\u627F\u4E86\u4E3B\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u5B9A\u4E49\u548C\u7D22\u5F15\u3002\u8FD9\u4E2A\u7279\u6027\u4E3B\u8981\u7528\u4E8E\u7BA1\u7406\u5927\u91CF\u6570\u636E\uFF0C\u5B9E\u73B0\u6570\u636E\u5206\u533A\u548C\u6027\u80FD\u4F18\u5316\u3002\u6BCF\u4E2A\u5B50\u8868\u53EF\u4EE5\u5B58\u50A8\u7279\u5B9A\u6761\u4EF6\u4E0B\u7684\u6570\u636E\uFF0C\u4F8B\u5982\u6309\u65F6\u95F4\u5206\u5272\u6570\u636E\uFF0C\u4ECE\u800C\u51CF\u5C11\u67E5\u8BE2\u65F6\u7684\u6570\u636E\u626B\u63CF\u91CF\uFF0C\u63D0\u9AD8\u67E5\u8BE2\u6027\u80FD\u3002\u6B64\u5916\uFF0C\u4E3B\u8868\u548C\u5B50\u8868\u7684\u67E5\u8BE2\u900F\u660E\u5316\uFF0C\u7528\u6237\u53EF\u4EE5\u50CF\u64CD\u4F5C\u5355\u4E2A\u8868\u4E00\u6837\u67E5\u8BE2\u6574\u4E2A\u7EE7\u627F\u8868\u96C6\u5408\uFF0C\u7B80\u5316\u4E86\u6570\u636E\u64CD\u4F5C\u548C\u67E5\u8BE2\u7684\u590D\u6742\u6027\uFF0C\u4F7F\u6570\u636E\u5E93\u66F4\u9AD8\u6548\u5730\u5904\u7406\u5927\u89C4\u6A21\u6570\u636E\u3002",paraId:0,tocIndex:0},{value:"\u5728\u5355\u7EE7\u627F\u6A21\u5F0F\u4E2D\uFF0C\u4E00\u4E2A\u8868\u53EF\u4EE5\u7EE7\u627F\u53E6\u4E00\u4E2A\u8868\uFF0C\u5B50\u8868\u7EE7\u627F\u4E86\u7236\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u548C\u7EA6\u675F\u3002\u8FD9\u79CD\u6A21\u5F0F\u7528\u4E8E\u8868\u793A\u5B9E\u4F53\u7684\u5C42\u6B21\u7ED3\u6784\uFF0C\u5141\u8BB8\u5B50\u8868\u5728\u4FDD\u7559\u901A\u7528\u5C5E\u6027\u7684\u540C\u65F6\u6DFB\u52A0\u7279\u5B9A\u5C5E\u6027\u3002",paraId:1,tocIndex:1},{value:'\u5728\u8BA2\u5355\u7CFB\u7EDF\u4E2D\uFF0C\u914D\u7F6E"\u6279\u53D1\u8BA2\u5355\u8868"\u7EE7\u627F\u81EA\u4E3B\u8868 "\u8BA2\u5355"\uFF0C\u7528\u4E8E\u5904\u7406\u6279\u53D1\u8BA2\u5355\uFF0C\u914D\u7F6E\u4E86\u6279\u53D1\u5BA2\u6237\u7279\u6709\u7684\u5B57\u6BB5\uFF0C\u5982\u6279\u53D1\u4EF7\u683C\u3001\u6279\u6B21\u53F7\u7B49\u3002',paraId:2,tocIndex:1},{value:"\u5546\u54C1\u8868\u7684\u7EE7\u627F\u5173\u7CFB\u4E5F\u53EF\u4EE5\u505A\u5982\u4E0B\u68B3\u7406",paraId:3,tocIndex:1},{value:'\u4E3B\u8868 "\u5546\u54C1"\uFF08Products\uFF09\uFF1A\u5305\u542B\u901A\u7528\u5546\u54C1\u4FE1\u606F\uFF0C\u5982\u5546\u54C1 ID\u3001\u540D\u79F0\u3001\u4EF7\u683C\u3001\u5E93\u5B58\u7B49\u3002',paraId:4,tocIndex:1},{value:'\u5B50\u8868 "\u7535\u5B50\u4EA7\u54C1"\uFF08ElectronicsProduct\uFF09\uFF1A\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u5E76\u6DFB\u52A0\u4E86\u7279\u5B9A\u4E8E\u7535\u5B50\u4EA7\u54C1\u7684\u5B57\u6BB5\uFF0C\u5982\u5C4F\u5E55\u5C3A\u5BF8\u3001\u64CD\u4F5C\u7CFB\u7EDF\u7B49\u5B57\u6BB5\u3002',paraId:4,tocIndex:1},{value:'\u5B50\u8868 "\u670D\u88C5\u4EA7\u54C1"\uFF08ApparelProduct\uFF09\uFF1A\u540C\u6837\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u4F46\u5305\u542B\u670D\u88C5\u4EA7\u54C1\u7279\u6709\u7684\u5C5E\u6027\uFF0C\u5982\u5C3A\u5BF8\u3001\u989C\u8272\u3001\u6750\u8D28\u7B49\u5B57\u6BB5\u3002',paraId:4,tocIndex:1},{value:'\u5B50\u8868 "\u98DF\u54C1\u4EA7\u54C1"\uFF08FoodProduct\uFF09\uFF1A\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u7528\u4E8E\u5904\u7406\u98DF\u54C1\u4EA7\u54C1\uFF0C\u5305\u62EC\u4FDD\u8D28\u671F\u3001\u98DF\u54C1\u7C7B\u578B\u7B49\u5B57\u6BB5\u3002',paraId:4,tocIndex:1},{value:'\u5B50\u8868 "\u5BB6\u5177\u4EA7\u54C1"\uFF08FurnitureProduct\uFF09\uFF1A\u7EE7\u627F\u81EA\u4E3B\u8868 "\u5546\u54C1"\uFF0C\u5305\u542B\u5BB6\u5177\u4EA7\u54C1\u7684\u7279\u5B9A\u5C5E\u6027\uFF0C\u5982\u5C3A\u5BF8\u3001\u6750\u6599\u7B49\u5B57\u6BB5\u3002',paraId:4,tocIndex:1},{value:"\u591A\u7EE7\u627F\u5141\u8BB8\u4E00\u4E2A\u8868\u540C\u65F6\u7EE7\u627F\u591A\u4E2A\u7236\u8868\u7684\u7ED3\u6784\u3001\u5B57\u6BB5\u548C\u7EA6\u675F\u3002\u8FD9\u79CD\u6A21\u5F0F\u7528\u4E8E\u5177\u6709\u591A\u4E2A\u5173\u8054\u7684\u5B9E\u4F53\u5EFA\u6A21\u3002",paraId:5,tocIndex:2},{value:"\u4EE5\u8BA2\u5355\u3001\u8FD0\u5355\u548C\u5546\u54C1\u8FDB\u884C\u6570\u636E\u5EFA\u6A21\u4E3A\u4F8B\uFF0C\u5728\u8FD9\u4E2A\u7CFB\u7EDF\u4E2D\uFF0C\u6709\u4E09\u4E2A\u6838\u5FC3\u5B9E\u4F53\uFF1A\u8BA2\u5355\u3001\u8FD0\u5355\u548C\u5546\u54C1\u3002\u4E00\u4E2A\u8BA2\u5355\u53EF\u4EE5\u5305\u542B\u591A\u4E2A\u5546\u54C1\uFF0C\u4E00\u4E2A\u8BA2\u5355\u53EF\u4EE5\u5BF9\u5E94\u591A\u4E2A\u8FD0\u5355\uFF08\u4F8B\u5982\uFF0C\u90E8\u5206\u5546\u54C1\u8FD0\u9001\u5230\u4E0D\u540C\u5730\u70B9\uFF09\uFF0C\u540C\u65F6\u4E00\u4E2A\u8FD0\u5355\u53EF\u80FD\u6D89\u53CA\u591A\u4E2A\u8BA2\u5355\u3002\u8FD9\u79CD\u591A\u91CD\u5173\u7CFB\u53EF\u4EE5\u4F7F\u7528\u4E00\u4E2A\u5B50\u8868\uFF08\u8054\u63A5\u8868\uFF09\u6765\u5B9E\u73B0\uFF0C\u4E00\u4E2A\u8868\u5177\u6709\u591A\u4E2A\u7236\u8868\uFF08\u591A\u7EE7\u627F\uFF09\u3002",paraId:6,tocIndex:2},{value:'\u7236\u8868 "\u8BA2\u5355"\uFF08Orders\uFF09\uFF1A\u5305\u542B\u8BA2\u5355\u7684\u57FA\u672C\u4FE1\u606F\uFF0C\u5982\u8BA2\u5355 ID\u3002',paraId:7,tocIndex:2},{value:'\u7236\u8868 "\u8FD0\u5355"\uFF08Shipments\uFF09\uFF1A\u5305\u542B\u8FD0\u5355\u53F7\u3001\u8FD0\u8F93\u65B9\u5F0F\u4FE1\u606F\u7B49\u3002',paraId:7,tocIndex:2},{value:'\u7236\u8868 "\u5546\u54C1"\uFF08Products\uFF09\uFF1A\u5305\u542B\u5546\u54C1\u7684\u5C5E\u6027\uFF0C\u5982\u5546\u54C1 ID\u3001\u540D\u79F0\u3001\u4EF7\u683C\u7B49\u3002',paraId:7,tocIndex:2},{value:'\u5B50\u8868"\u8BA2\u5355\u5546\u54C1"\uFF08OrderProduct\uFF09\uFF1A\u7528\u4E8E\u7EE7\u627F\u8BA2\u5355\u548C\u5546\u54C1\u3002\u6BCF\u4E2A\u8BB0\u5F55\u8868\u793A\u4E00\u4E2A\u8BA2\u5355\u4E2D\u7684\u4E00\u4E2A\u5546\u54C1\uFF0C\u540C\u65F6\u8BB0\u5F55\u4E86\u6570\u91CF\u7B49\u4FE1\u606F\u3002',paraId:7,tocIndex:2},{value:'\u5B50\u8868 "\u8BA2\u5355\u8FD0\u5355\u5173\u8054"\uFF08OrderShipment\uFF09\uFF1A\u7528\u4E8E\u7EE7\u627F\u8BA2\u5355\u548C\u8FD0\u5355\u3002\u6BCF\u4E2A\u8BB0\u5F55\u8868\u793A\u4E00\u4E2A\u8BA2\u5355\u4E0E\u4E00\u4E2A\u8FD0\u5355\u7684\u5173\u7CFB\uFF0C\u540C\u65F6\u8BB0\u5F55\u4E86\u76F8\u5173\u4FE1\u606F',paraId:7,tocIndex:2},{value:"\u7EE7\u627F\u5173\u7CFB\u4E2D\u5B50\u8868\u53EF\u91CD\u65B0\u5B9A\u4E49\u6216\u8986\u76D6\u4ECE\u7236\u8868\u7EE7\u627F\u7684\u5B57\u6BB5\uFF0C\u81EA\u5B9A\u4E49\u5B57\u6BB5\u5C5E\u6027\u4EE5\u9002\u5E94\u7279\u5B9A\u9700\u6C42",paraId:8,tocIndex:3},{value:`\u5982 A \u591A\u5BF9\u591A B\uFF0CA1 \u7EE7\u627F A\uFF0CB1 \u7EE7\u627F B +\u5219 A1 \u4E5F\u5173\u8054 B\uFF0C\u8FD9\u65F6\u5019 B \u6709\u6240\u6709\uFF08\u672C\u8EAB\u53CA\u6240\u6709\u5B50\u8868\uFF09\u7684\u6570\u636E\uFF0C\u4F46\u662F A1 \u53EA\u9700\u8981\u770B B1 \u7684\u6570\u636E\uFF0C\u5219\u53EF\u4EE5 \u5728 A1 \u4E2D\u91CD\u5199 \u628A B target \u6539\u6210 B1\u3002\u5373\u5728\u5173\u7CFB A1.B \u4E2D\uFF0C\u53EF\u4EE5\u4FEE\u6539\u5173\u8054\u7684\u76EE\u6807\u8868 B\uFF08\u53EF\u9009\u8303\u56F4\u4E3A B \u548C B \u7684\u5B50\u8868\uFF09\u4E3A B1`,paraId:9,tocIndex:4},{value:"\u5982\u56FE\uFF1A\u6279\u53D1\u8BA2\u5355\u8868\u4E2D\u91CD\u5199\u5546\u54C1\u5173\u7CFB\u5B57\u6BB5\uFF08\u5C06\u76EE\u6807\u8868\u91CD\u5199\u4E3A\u7535\u5B50\u5546\u54C1\u8868\uFF09",paraId:10,tocIndex:4},{value:"\u5546\u54C1\u8868\uFF08\u4E3B\u8868\uFF09\u4E2D\u6709\u53EF\u9009\u9879\u5B57\u6BB5\u300C\u5C3A\u5BF8\u300D\uFF1A\u670D\u88C5\u5546\u54C1\u53EF\u4EE5\u5B9A\u4E49\u91CD\u5199\u4E3A\u8863\u670D\u5C3A\u5BF8\uFF08S\u3001M\u3001L\uFF09\uFF0C\u7535\u5B50\u5546\u54C1\u8868\u5219\u53EF\u4EE5\u91CD\u5199\u5B57\u6BB5\u4E3A\u300C\u5B58\u50A8\u5BB9\u91CF\u300D\uFF0832GB\u300164GB\u3001128GB\uFF09",paraId:11,tocIndex:5},{value:"\u5173\u7CFB\u5916\u952E\u5171\u4EAB\u662F\u4E00\u79CD\u7B56\u7565\uFF0C\u5141\u8BB8\u591A\u4E2A\u8868\u5171\u4EAB\u76F8\u540C\u7684\u5916\u952E\u5B57\u6BB5\uFF0C\u4EE5\u5EFA\u7ACB\u8868\u4E4B\u95F4\u7684\u5173\u7CFB\u3002\u8FD9\u5728\u591A\u4E2A\u8868\u9700\u8981\u5F15\u7528\u76F8\u540C\u5B9E\u4F53\u65F6\u975E\u5E38\u6709\u7528\u3002\u5728\u6570\u636E\u8868\u7EE7\u627F\u7684\u60C5\u51B5\u4E0B\uFF0C\u8FD9\u4E2A\u5171\u4EAB\u7684\u5916\u952E\u53EF\u4EE5\u7528\u4E8E\u786E\u4FDD\u6BCF\u4E2A\u5B50\u8868\u4E0E\u5176\u4ED6\u8868\u4E4B\u95F4\u7684\u5173\u7CFB\u6216\u5F15\u7528\uFF0C\u4ECE\u800C\u6784\u5EFA\u66F4\u590D\u6742\u7684\u6570\u636E\u6A21\u578B",paraId:12,tocIndex:6}],sW={},uW={title:"\u6587\u4EF6\u7BA1\u7406\u5668",toc:"menu",filename:"docs/en-US/manual/file-manager/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},pW=[{id:"\u6587\u4EF6\u7BA1\u7406\u5668",depth:1,title:"\u6587\u4EF6\u7BA1\u7406\u5668"}],IW=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],_W={},vW={title:"\u672C\u5730\u5B58\u50A8",toc:"menu",filename:"docs/en-US/manual/file-manager/local.md",lastUpdated:173254844e4},mW=[{id:"\u672C\u5730\u5B58\u50A8",depth:1,title:"\u672C\u5730\u5B58\u50A8"}],hW=[],fW={},xW={title:"\u4E3B\u9898\u7F16\u8F91\u5668",toc:"menu",filename:"docs/en-US/manual/theme-editor/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},gW=[{id:"\u4E3B\u9898\u7F16\u8F91\u5668",depth:1,title:"\u4E3B\u9898\u7F16\u8F91\u5668"}],bW=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],yW={},wW={title:"\u6DFB\u52A0",toc:"menu",filename:"docs/en-US/manual/ui/actions/add-new.md",lastUpdated:173254844e4},kW=[{id:"\u6DFB\u52A0",depth:1,title:"\u6DFB\u52A0"}],SW=[],UW={},PW={title:"\u5237\u65B0",toc:"menu",filename:"docs/en-US/manual/ui/actions/refresh.md",lastUpdated:173254844e4,description:"\u5237\u65B0\u64CD\u4F5C\u7528\u4E8E\u91CD\u65B0\u52A0\u8F7D\u6570\u636E\u533A\u5757\u4E2D\u7684\u6570\u636E\uFF0C\u652F\u6301\u624B\u52A8\u5237\u65B0"},TW=[{id:"\u5237\u65B0",depth:1,title:"\u5237\u65B0"}],CW=[{value:"\u5237\u65B0\u64CD\u4F5C\u7528\u4E8E\u91CD\u65B0\u52A0\u8F7D\u6570\u636E\u533A\u5757\u4E2D\u7684\u6570\u636E\uFF0C\u652F\u6301\u624B\u52A8\u5237\u65B0",paraId:0,tocIndex:0}],AW={},qW={title:"SQL \u64CD\u4F5C",toc:"menu",filename:"docs/en-US/manual/workflow/nodes/sql.md",lastUpdated:173254844e4,description:"\u5728\u4E00\u4E9B\u7279\u6B8A\u573A\u666F\u91CC\uFF0C\u4E0A\u9762\u7B80\u5355\u7684\u6570\u636E\u8868\u64CD\u4F5C\u8282\u70B9\u53EF\u80FD\u65E0\u6CD5\u590D\u6742\u7684\u64CD\u4F5C\uFF0C\u5219\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 SQL \u8282\u70B9\uFF0C\u4F7F\u6570\u636E\u5E93\u76F4\u63A5\u6267\u884C\u590D\u6742\u7684 SQL \u8BED\u53E5\u8FDB\u884C\u6570\u636E\u64CD\u4F5C\u3002"},EW=[{id:"sql-\u64CD\u4F5C",depth:1,title:"SQL \u64CD\u4F5C"},{id:"\u521B\u5EFA\u8282\u70B9",depth:2,title:"\u521B\u5EFA\u8282\u70B9"},{id:"\u8282\u70B9\u914D\u7F6E",depth:2,title:"\u8282\u70B9\u914D\u7F6E"}],DW=[{value:"\u5728\u4E00\u4E9B\u7279\u6B8A\u573A\u666F\u91CC\uFF0C\u4E0A\u9762\u7B80\u5355\u7684\u6570\u636E\u8868\u64CD\u4F5C\u8282\u70B9\u53EF\u80FD\u65E0\u6CD5\u590D\u6742\u7684\u64CD\u4F5C\uFF0C\u5219\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 SQL \u8282\u70B9\uFF0C\u4F7F\u6570\u636E\u5E93\u76F4\u63A5\u6267\u884C\u590D\u6742\u7684 SQL \u8BED\u53E5\u8FDB\u884C\u6570\u636E\u64CD\u4F5C\u3002",paraId:0,tocIndex:0},{value:"\u4E0E\u5728\u5E94\u7528\u5916\u90E8\u76F4\u63A5\u8FDE\u63A5\u6570\u636E\u5E93\u8FDB\u884C SQL \u64CD\u4F5C\u7684\u533A\u522B\u662F\uFF0C\u5728\u5DE5\u4F5C\u6D41\u5185\u53EF\u4EE5\u4F7F\u7528\u6D41\u7A0B\u4E0A\u4E0B\u6587\u7684\u53D8\u91CF\uFF0C\u4F5C\u4E3A SQL \u8BED\u53E5\u4E2D\u7684\u90E8\u5206\u53C2\u6570\u3002",paraId:1,tocIndex:0},{value:"\u76EE\u524D SQL \u8282\u70B9\u8FD8\u4E0D\u652F\u6301 ",paraId:2},{value:"SELECT",paraId:2},{value:" \u8BED\u53E5\u7684\u7ED3\u679C\u4F5C\u4E3A\u8282\u70B9\u7ED3\u679C\u4F7F\u7528\uFF0C\u53EF\u80FD\u4F1A\u5728\u672A\u6765\u652F\u6301\u3002",paraId:2},{value:"\u5728\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\u4E2D\uFF0C\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\uFF08\u201C+\u201D\uFF09\u6309\u94AE\uFF0C\u6DFB\u52A0\u201CSQL \u64CD\u4F5C\u201D\u8282\u70B9\uFF1A",paraId:3,tocIndex:1},{value:"\u901A\u8FC7\u7F16\u8F91\u6846\u53F3\u4E0A\u89D2\u7684\u53D8\u91CF\u6309\u94AE\u63D2\u5165\u9700\u8981\u7684\u53D8\u91CF\uFF0C\u4F1A\u5728\u6267\u884C\u524D\u901A\u8FC7\u6587\u672C\u66FF\u6362\u4E3A\u5BF9\u5E94\u53D8\u91CF\u7684\u503C\uFF1A",paraId:4,tocIndex:2}],OW={},RW={title:"\u4F7F\u7528\u624B\u518C",toc:"menu",filename:"docs/en-US/plugins/client/user/index.md",lastUpdated:173254844e4,description:"\u5185\u7F6E\u6838\u5FC3\u63D2\u4EF6\u4E4B\u4E00\uFF0C\u4E3A NocoBase \u63D0\u4F9B\u5BA2\u6237\u7AEF\u754C\u9762\u3002\u5BA2\u6237\u7AEF\u5185\u7F6E\u4E00\u5957 AdminLayout \u5E03\u5C40\uFF0C\u5E03\u5C40\u7684\u4E3B\u8981\u7EC4\u6210\u90E8\u5206\u5305\u62EC\uFF1A"},MW=[{id:"\u4F7F\u7528\u624B\u518C",depth:1,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u63D2\u4EF6\u7BA1\u7406\u5668",depth:2,title:"\u63D2\u4EF6\u7BA1\u7406\u5668"},{id:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3",depth:2,title:"\u63D2\u4EF6\u7BA1\u7406\u4E2D\u5FC3"},{id:"\u7528\u6237\u4E2A\u4EBA\u4E2D\u5FC3",depth:2,title:"\u7528\u6237\u4E2A\u4EBA\u4E2D\u5FC3"},{id:"\u754C\u9762\u8BBE\u8BA1\u5668",depth:2,title:"\u754C\u9762\u8BBE\u8BA1\u5668"}],LW=[{value:"\u5185\u7F6E\u6838\u5FC3\u63D2\u4EF6\u4E4B\u4E00\uFF0C\u4E3A NocoBase \u63D0\u4F9B\u5BA2\u6237\u7AEF\u754C\u9762\u3002\u5BA2\u6237\u7AEF\u5185\u7F6E\u4E00\u5957 AdminLayout \u5E03\u5C40\uFF0C\u5E03\u5C40\u7684\u4E3B\u8981\u7EC4\u6210\u90E8\u5206\u5305\u62EC\uFF1A",paraId:0,tocIndex:0},{value:"\u7BA1\u7406\u63D2\u4EF6\uFF0C\u5305\u62EC\uFF1A\u6DFB\u52A0\u3001\u6FC0\u6D3B\u3001\u7981\u7528\u3001\u5220\u9664",paraId:1,tocIndex:1},{value:"\u5404\u4E2A\u63D2\u4EF6\u7684\u914D\u7F6E\u9875\u9762",paraId:2,tocIndex:2}],NW={},zW={title:"Middleware",toc:"menu",filename:"docs/en-US/api/resourcer/middleware.md",lastUpdated:173254844e4,description:"It is similar to the middleware of Koa, but with more enhanced features for easy extensions."},FW=[{id:"middleware",depth:1,title:"Middleware"},{id:"constructor",depth:2,title:"Constructor"},{id:"instance-methods",depth:2,title:"Instance Methods"},{id:"gethandler",depth:3,title:"getHandler()"},{id:"use",depth:3,title:"use()"},{id:"disuse",depth:3,title:"disuse()"},{id:"canaccess",depth:3,title:"canAccess()"},{id:"other-exports",depth:2,title:"Other Exports"},{id:"branch",depth:3,title:"branch()"}],BW=[{value:"It is similar to the middleware of Koa, but with more enhanced features for easy extensions.",paraId:0,tocIndex:0},{value:"The defined middleware can be inserted for use in multiple places, such as the resourcer, and it is up to the developer for when to invoke it.",paraId:1,tocIndex:0},{value:"Signature",paraId:2,tocIndex:1},{value:"constructor(options: Function)",paraId:3,tocIndex:1},{value:"constructor(options: MiddlewareOptions)",paraId:3,tocIndex:1},{value:"Parameter",paraId:4,tocIndex:1},{value:"Name",paraId:5,tocIndex:1},{value:"Type",paraId:5,tocIndex:1},{value:"Default",paraId:5,tocIndex:1},{value:"Description",paraId:5,tocIndex:1},{value:"options",paraId:5,tocIndex:1},{value:"Function",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"Handler function of middlware",paraId:5,tocIndex:1},{value:"options",paraId:5,tocIndex:1},{value:"MiddlewareOptions ",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"Configuration items of middlware",paraId:5,tocIndex:1},{value:"options.only",paraId:5,tocIndex:1},{value:"string[]",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"Only the specified actions are allowed",paraId:5,tocIndex:1},{value:"options.except",paraId:5,tocIndex:1},{value:"string[]",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"The specified actions are excluded",paraId:5,tocIndex:1},{value:"options.handler",paraId:5,tocIndex:1},{value:"Function",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"Handler function",paraId:5,tocIndex:1},{value:"Example",paraId:6,tocIndex:1},{value:"Simple definition:",paraId:7,tocIndex:1},{value:`const middleware = new Middleware((ctx, next) => { await next(); }); `,paraId:8,tocIndex:1},{value:"Definition with relevant parameters:",paraId:9,tocIndex:1},{value:`const middleware = new Middleware({ @@ -15887,7 +15940,7 @@ middleware.disuse(fn1); }, ), ); -`,paraId:41,tocIndex:8}],jW={},HW={title:"Overview",toc:"menu",filename:"docs/en-US/development/client/index.md",lastUpdated:1732240239e3,description:"Initialized empty plugin, the client directory structure is as follows:"},WW=[{id:"overview",depth:1,title:"Overview"},{id:"directory-structure",depth:2,title:"Directory Structure"},{id:"plugin-class",depth:2,title:"Plugin Class"},{id:"plugin-lifecycle",depth:2,title:"Plugin Lifecycle"},{id:"common-properties-and-methods-in-the-plugin-class",depth:2,title:"Common Properties and Methods in the Plugin Class"},{id:"commonly-used-react-hooks-in-components",depth:2,title:"Commonly Used React hooks in Components"}],$W=[{value:"Initialized empty plugin, the client directory structure is as follows:",paraId:0,tocIndex:1},{value:`|- /plugin-sample-hello +`,paraId:41,tocIndex:8}],jW={},HW={title:"Overview",toc:"menu",filename:"docs/en-US/development/client/index.md",lastUpdated:173254844e4,description:"Initialized empty plugin, the client directory structure is as follows:"},WW=[{id:"overview",depth:1,title:"Overview"},{id:"directory-structure",depth:2,title:"Directory Structure"},{id:"plugin-class",depth:2,title:"Plugin Class"},{id:"plugin-lifecycle",depth:2,title:"Plugin Lifecycle"},{id:"common-properties-and-methods-in-the-plugin-class",depth:2,title:"Common Properties and Methods in the Plugin Class"},{id:"commonly-used-react-hooks-in-components",depth:2,title:"Commonly Used React hooks in Components"}],$W=[{value:"Initialized empty plugin, the client directory structure is as follows:",paraId:0,tocIndex:1},{value:`|- /plugin-sample-hello |- /src |- /client |- index.tsx @@ -15904,7 +15957,7 @@ export class PluginSampleHelloClient extends Plugin { } export default PluginSampleHelloClient; -`,paraId:3,tocIndex:2},{value:"After the plugin is initialized, ",paraId:4,tocIndex:3},{value:"afterAdd",paraId:4,tocIndex:3},{value:" is triggered. It's important to note that the addition of plugins is unordered, so do not attempt to obtain instances of other plugins in ",paraId:4,tocIndex:3},{value:"afterAdd",paraId:4,tocIndex:3},{value:". If you need to get instances of other plugins, you can do so in ",paraId:4,tocIndex:3},{value:"beforeLoad",paraId:4,tocIndex:3},{value:" or ",paraId:4,tocIndex:3},{value:"load",paraId:4,tocIndex:3},{value:".",paraId:4,tocIndex:3},{value:"In ",paraId:4,tocIndex:3},{value:"beforeLoad",paraId:4,tocIndex:3},{value:", all activated plugins have been instantiated, and by then, instances can be obtained through ",paraId:4,tocIndex:3},{value:"app.pluginManager.get()",paraId:4,tocIndex:3},{value:".",paraId:4,tocIndex:3},{value:"In ",paraId:4,tocIndex:3},{value:"load",paraId:4,tocIndex:3},{value:", the ",paraId:4,tocIndex:3},{value:"beforeLoad",paraId:4,tocIndex:3},{value:" method of all plugins has been executed.",paraId:4,tocIndex:3},{value:"API",paraId:5,tocIndex:4},{value:"Tutorial",paraId:5,tocIndex:4},{value:"app.i18n",paraId:5,tocIndex:4},{value:"Internationalization",paraId:6,tocIndex:4},{value:"app.apiClient",paraId:5,tocIndex:4},{value:"API Client",paraId:7,tocIndex:4},{value:"app.pluginManager",paraId:5,tocIndex:4},{value:"Plugin Manager",paraId:5,tocIndex:4},{value:"app.router",paraId:5,tocIndex:4},{value:"Routing Management",paraId:8,tocIndex:4},{value:"app.pluginSettingsManager",paraId:5,tocIndex:4},{value:"Plugin Settings Page",paraId:9,tocIndex:4},{value:"app.schemaInitializerManager",paraId:5,tocIndex:4},{value:"Schema Initializer Config",paraId:10,tocIndex:4},{value:"app.schemaSettingsManager",paraId:5,tocIndex:4},{value:"Schema Settings Config",paraId:11,tocIndex:4},{value:"app.addProviders",paraId:5,tocIndex:4},{value:"Provider Components",paraId:12,tocIndex:4},{value:"app.addComponents",paraId:5,tocIndex:4},{value:"Schema Rendering",paraId:13,tocIndex:4},{value:"app.addScopes",paraId:5,tocIndex:4},{value:"Schema Rendering",paraId:14,tocIndex:4},{value:"hooks",paraId:15},{value:"API",paraId:16,tocIndex:5},{value:"Tutorial",paraId:16,tocIndex:5},{value:"useApp()",paraId:16,tocIndex:5},{value:"useApp() API",paraId:16,tocIndex:5},{value:"usePlugin()",paraId:16,tocIndex:5},{value:"usePlugin() API",paraId:16,tocIndex:5},{value:"useAPIClient()",paraId:16,tocIndex:5},{value:"API Client",paraId:17,tocIndex:5},{value:"useRequest()",paraId:16,tocIndex:5},{value:"API Client",paraId:18,tocIndex:5}],GW={},VW={title:"Building",toc:"menu",filename:"docs/en-US/development/others/build.md",lastUpdated:1732240239e3,description:"If you want to customize the build configuration, you can create a build.config.ts file in the root directory of the plugin with the following content:"},KW=[{id:"building",depth:1,title:"Building"},{id:"custom-build-configuration",depth:2,title:"Custom Build Configuration"},{id:"plugin-example",depth:2,title:"Plugin Example"}],ZW=[{value:"If you want to customize the build configuration, you can create a ",paraId:0,tocIndex:1},{value:"build.config.ts",paraId:0,tocIndex:1},{value:" file in the root directory of the plugin with the following content:",paraId:0,tocIndex:1},{value:`import { defineConfig } from '@nocobase/build'; +`,paraId:3,tocIndex:2},{value:"After the plugin is initialized, ",paraId:4,tocIndex:3},{value:"afterAdd",paraId:4,tocIndex:3},{value:" is triggered. It's important to note that the addition of plugins is unordered, so do not attempt to obtain instances of other plugins in ",paraId:4,tocIndex:3},{value:"afterAdd",paraId:4,tocIndex:3},{value:". If you need to get instances of other plugins, you can do so in ",paraId:4,tocIndex:3},{value:"beforeLoad",paraId:4,tocIndex:3},{value:" or ",paraId:4,tocIndex:3},{value:"load",paraId:4,tocIndex:3},{value:".",paraId:4,tocIndex:3},{value:"In ",paraId:4,tocIndex:3},{value:"beforeLoad",paraId:4,tocIndex:3},{value:", all activated plugins have been instantiated, and by then, instances can be obtained through ",paraId:4,tocIndex:3},{value:"app.pluginManager.get()",paraId:4,tocIndex:3},{value:".",paraId:4,tocIndex:3},{value:"In ",paraId:4,tocIndex:3},{value:"load",paraId:4,tocIndex:3},{value:", the ",paraId:4,tocIndex:3},{value:"beforeLoad",paraId:4,tocIndex:3},{value:" method of all plugins has been executed.",paraId:4,tocIndex:3},{value:"API",paraId:5,tocIndex:4},{value:"Tutorial",paraId:5,tocIndex:4},{value:"app.i18n",paraId:5,tocIndex:4},{value:"Internationalization",paraId:6,tocIndex:4},{value:"app.apiClient",paraId:5,tocIndex:4},{value:"API Client",paraId:7,tocIndex:4},{value:"app.pluginManager",paraId:5,tocIndex:4},{value:"Plugin Manager",paraId:5,tocIndex:4},{value:"app.router",paraId:5,tocIndex:4},{value:"Routing Management",paraId:8,tocIndex:4},{value:"app.pluginSettingsManager",paraId:5,tocIndex:4},{value:"Plugin Settings Page",paraId:9,tocIndex:4},{value:"app.schemaInitializerManager",paraId:5,tocIndex:4},{value:"Schema Initializer Config",paraId:10,tocIndex:4},{value:"app.schemaSettingsManager",paraId:5,tocIndex:4},{value:"Schema Settings Config",paraId:11,tocIndex:4},{value:"app.addProviders",paraId:5,tocIndex:4},{value:"Provider Components",paraId:12,tocIndex:4},{value:"app.addComponents",paraId:5,tocIndex:4},{value:"Schema Rendering",paraId:13,tocIndex:4},{value:"app.addScopes",paraId:5,tocIndex:4},{value:"Schema Rendering",paraId:14,tocIndex:4},{value:"hooks",paraId:15},{value:"API",paraId:16,tocIndex:5},{value:"Tutorial",paraId:16,tocIndex:5},{value:"useApp()",paraId:16,tocIndex:5},{value:"useApp() API",paraId:16,tocIndex:5},{value:"usePlugin()",paraId:16,tocIndex:5},{value:"usePlugin() API",paraId:16,tocIndex:5},{value:"useAPIClient()",paraId:16,tocIndex:5},{value:"API Client",paraId:17,tocIndex:5},{value:"useRequest()",paraId:16,tocIndex:5},{value:"API Client",paraId:18,tocIndex:5}],GW={},VW={title:"Building",toc:"menu",filename:"docs/en-US/development/others/build.md",lastUpdated:173254844e4,description:"If you want to customize the build configuration, you can create a build.config.ts file in the root directory of the plugin with the following content:"},KW=[{id:"building",depth:1,title:"Building"},{id:"custom-build-configuration",depth:2,title:"Custom Build Configuration"},{id:"plugin-example",depth:2,title:"Plugin Example"}],ZW=[{value:"If you want to customize the build configuration, you can create a ",paraId:0,tocIndex:1},{value:"build.config.ts",paraId:0,tocIndex:1},{value:" file in the root directory of the plugin with the following content:",paraId:0,tocIndex:1},{value:`import { defineConfig } from '@nocobase/build'; export default defineConfig({ modifyViteConfig: (config) => { @@ -15926,7 +15979,7 @@ export default defineConfig({ // Callback function after the build is completed. You can perform some actions after the build. }; }); -`,paraId:1,tocIndex:1},{value:"@nocobase/plugin-sample-custom-build",paraId:2,tocIndex:2}],YW={},QW={title:"Overview",toc:"menu",filename:"docs/en-US/development/server/index.md",lastUpdated:1732240239e3,description:"The directory structure related to the server side of an initialized empty plugin is as follows:"},JW=[{id:"overview",depth:1,title:"Overview"},{id:"plugin",depth:2,title:"Plugin"},{id:"plugin-lifecycle",depth:2,title:"Plugin Lifecycle"},{id:"common-properties-and-methods-in-the-plugin-class",depth:2,title:"Common Properties and Methods in the Plugin Class"}],XW=[{value:"The directory structure related to the server side of an initialized empty plugin is as follows:",paraId:0,tocIndex:0},{value:`|- /plugin-sample-hello +`,paraId:1,tocIndex:1},{value:"@nocobase/plugin-sample-custom-build",paraId:2,tocIndex:2}],YW={},QW={title:"Overview",toc:"menu",filename:"docs/en-US/development/server/index.md",lastUpdated:173254844e4,description:"The directory structure related to the server side of an initialized empty plugin is as follows:"},JW=[{id:"overview",depth:1,title:"Overview"},{id:"plugin",depth:2,title:"Plugin"},{id:"plugin-lifecycle",depth:2,title:"Plugin Lifecycle"},{id:"common-properties-and-methods-in-the-plugin-class",depth:2,title:"Common Properties and Methods in the Plugin Class"}],XW=[{value:"The directory structure related to the server side of an initialized empty plugin is as follows:",paraId:0,tocIndex:0},{value:`|- /plugin-sample-hello |- /src |- /server # Plugin server-side code |- plugin.ts # Plugin class @@ -15986,10 +16039,10 @@ export class PluginSampleHelloServer extends Plugin { } export default MyPlugin; -`,paraId:3,tocIndex:1},{value:"After the plugin is initialized, ",paraId:4,tocIndex:2},{value:"afterAdd",paraId:4,tocIndex:2},{value:" is triggered. In ",paraId:4,tocIndex:2},{value:"afterAdd",paraId:4,tocIndex:2},{value:", not all other plugins might have been instantiated.",paraId:4,tocIndex:2},{value:"In ",paraId:4,tocIndex:2},{value:"beforeLoad",paraId:4,tocIndex:2},{value:", all activated plugins have been instantiated, and their instances can be retrieved via ",paraId:4,tocIndex:2},{value:"app.pluginManager.get()",paraId:4,tocIndex:2},{value:".",paraId:4,tocIndex:2},{value:"In ",paraId:4,tocIndex:2},{value:"load",paraId:4,tocIndex:2},{value:", the ",paraId:4,tocIndex:2},{value:"beforeLoad",paraId:4,tocIndex:2},{value:" method of all plugins has been executed.",paraId:4,tocIndex:2},{value:"API",paraId:5,tocIndex:3},{value:"Tutorial",paraId:5,tocIndex:3},{value:"this.name",paraId:5,tocIndex:3},{value:"Plugin name",paraId:5,tocIndex:3},{value:"this.enabled",paraId:5,tocIndex:3},{value:"Activated",paraId:5,tocIndex:3},{value:"this.installed",paraId:5,tocIndex:3},{value:"Installed",paraId:5,tocIndex:3},{value:"this.app",paraId:5,tocIndex:3},{value:"Application instance",paraId:5,tocIndex:3},{value:"this.pm",paraId:5,tocIndex:3},{value:"Plugin manager instance",paraId:5,tocIndex:3},{value:"this.db",paraId:5,tocIndex:3},{value:"Database instance",paraId:5,tocIndex:3},{value:"this.resourcer",paraId:5,tocIndex:3},{value:"Resource manager",paraId:5,tocIndex:3},{value:"this.acl",paraId:5,tocIndex:3},{value:"Access control",paraId:5,tocIndex:3},{value:"this.log",paraId:5,tocIndex:3},{value:"Logging",paraId:5,tocIndex:3},{value:"this.app.i18n",paraId:5,tocIndex:3},{value:"Internationalization",paraId:5,tocIndex:3},{value:"this.db.registerFieldTypes()",paraId:5,tocIndex:3},{value:"Register field types",paraId:5,tocIndex:3},{value:"this.db.registerModels()",paraId:5,tocIndex:3},{value:"Register Models",paraId:5,tocIndex:3},{value:"this.db.registerRepositories()",paraId:5,tocIndex:3},{value:"Register Repositories",paraId:5,tocIndex:3},{value:"this.db.registerOperators()",paraId:5,tocIndex:3},{value:"Register custom operators",paraId:5,tocIndex:3},{value:"this.app.on()",paraId:5,tocIndex:3},{value:"Application events",paraId:5,tocIndex:3},{value:"this.db.on()",paraId:5,tocIndex:3},{value:"Database events",paraId:5,tocIndex:3},{value:"this.db.collection()",paraId:5,tocIndex:3},{value:"Configure data tables",paraId:5,tocIndex:3},{value:"this.db.import()",paraId:5,tocIndex:3},{value:"Import data table configurations",paraId:5,tocIndex:3},{value:"this.db.addMigrations()",paraId:5,tocIndex:3},{value:"Migrations",paraId:5,tocIndex:3},{value:"this.resourcer.registerActions()",paraId:5,tocIndex:3},{value:"Register resource actions",paraId:5,tocIndex:3},{value:"this.resourcer.use()",paraId:5,tocIndex:3},{value:"Middleware",paraId:5,tocIndex:3},{value:"this.acl.use()",paraId:5,tocIndex:3},{value:"Middleware",paraId:5,tocIndex:3},{value:"this.app.use()",paraId:5,tocIndex:3},{value:"Middleware",paraId:5,tocIndex:3},{value:"this.app.command()",paraId:5,tocIndex:3},{value:"Command line",paraId:5,tocIndex:3}],e$={},a$={title:"User Guide",toc:"menu",filename:"docs/en-US/handbook/auth/user/index.md",lastUpdated:1732240239e3,description:"When the user authentication plugin is installed, it will initialize an authentication method of password, based on the user's username and email."},t$=[{id:"user-guide",depth:1,title:"User Guide"},{id:"user-authentication-management",depth:2,title:"User Authentication Management"},{id:"activate-authentication-type",depth:2,title:"Activate Authentication Type"},{id:"user-authentication-types",depth:2,title:"User Authentication Types"},{id:"password-authentication",depth:2,title:"Password Authentication"},{id:"configuration-interface",depth:3,title:"Configuration Interface"},{id:"allow-registration",depth:3,title:"Allow Registration"}],n$=[{value:"When the user authentication plugin is installed, it will initialize an authentication method of ",paraId:0,tocIndex:1},{value:"password",paraId:0,tocIndex:1},{value:", based on the user's username and email.",paraId:0,tocIndex:1},{value:"Only activated authentication types will be displayed on the login page",paraId:1,tocIndex:2},{value:"The user authentication types currently supported by NocoBase are:",paraId:2,tocIndex:3},{value:"Password (Password), built-in user authentication plugin",paraId:3,tocIndex:3},{value:"SMS (SMS), expanded by ",paraId:3,tocIndex:3},{value:"sms-auth plugin",paraId:4,tocIndex:3},{value:"CAS, expanded by ",paraId:3,tocIndex:3},{value:"cas-auth plugin",paraId:5,tocIndex:3},{value:"SAML, expanded by ",paraId:3,tocIndex:3},{value:"saml-auth plugin",paraId:6,tocIndex:3},{value:"OIDC, expanded by ",paraId:3,tocIndex:3},{value:"oidc-auth plugin",paraId:7,tocIndex:3},{value:"In addition, you can also expand user authentication by yourself, refer to the ",paraId:8,tocIndex:3},{value:"Developer's Guide",paraId:9,tocIndex:3},{value:".",paraId:8,tocIndex:3},{value:"When registration is allowed, the login page will display the link to create an account, and you can go to the registration page",paraId:10,tocIndex:6},{value:"Registration page",paraId:11,tocIndex:6},{value:"When registration is not allowed, the login page will not display the link to create an account",paraId:12,tocIndex:6},{value:"When registration is not allowed, the registration page cannot be accessed",paraId:13,tocIndex:6}],o$={},r$={title:"Auth: LDAP",toc:"menu",filename:"docs/en-US/handbook/auth-ldap/index.md",lastUpdated:1732240239e3,description:"The Auth: LDAP plugin follows the LDAP (Lightweight Directory Access Protocol) protocol standard, enabling users to sign in to NocoBase using their LDAP server credentials."},d$=[{id:"auth-ldap",depth:1,title:"Auth: LDAP"},{id:"introduction",depth:2,title:"Introduction"},{id:"activate-plugin",depth:2,title:"Activate plugin"},{id:"add-ldap-authentication",depth:2,title:"Add LDAP Authentication"},{id:"configuration",depth:2,title:"Configuration"},{id:"basic-configuration",depth:3,title:"Basic Configuration"},{id:"search-configuration",depth:3,title:"Search Configuration"},{id:"attribute-mapping",depth:3,title:"Attribute Mapping"},{id:"sign-in",depth:2,title:"Sign In"}],i$=[{value:"The Auth: LDAP plugin follows the LDAP (Lightweight Directory Access Protocol) protocol standard, enabling users to sign in to NocoBase using their LDAP server credentials.",paraId:0,tocIndex:1},{value:"Go to the authentication plugin settings page.",paraId:1,tocIndex:3},{value:"Add - LDAP",paraId:2,tocIndex:3},{value:"Sign up automatically when the user does not exist - Whether to automatically create a new user when no matching existing user is found.",paraId:3,tocIndex:5},{value:"LDAP URL - LDAP server URL",paraId:3,tocIndex:5},{value:"Bind DN - DN used to test server connection and search for users",paraId:3,tocIndex:5},{value:"Bind password - Password of Bind DN",paraId:3,tocIndex:5},{value:"Test connection - Click the button to test server connection and Bind DN authentication.",paraId:3,tocIndex:5},{value:"Search DN - DN used to search for users",paraId:4,tocIndex:6},{value:"Search filter - Filtering condition for searching users, using ",paraId:4,tocIndex:6},{value:"{{account}}",paraId:4,tocIndex:6},{value:" to represent the user account used for login",paraId:4,tocIndex:6},{value:"Scope - ",paraId:4,tocIndex:6},{value:"Base",paraId:4,tocIndex:6},{value:", ",paraId:4,tocIndex:6},{value:"One level",paraId:4,tocIndex:6},{value:", ",paraId:4,tocIndex:6},{value:"Subtree",paraId:4,tocIndex:6},{value:", default ",paraId:4,tocIndex:6},{value:"Subtree",paraId:4,tocIndex:6},{value:"Size limit - Search page size",paraId:4,tocIndex:6},{value:"Use this field to bind the user - Field used to bind existing users. If the login account is a username, choose username; if it is an email, choose email. Default is username.",paraId:5,tocIndex:7},{value:"Attribute map - Mapping of user attributes to fields in the NocoBase user table.",paraId:5,tocIndex:7},{value:"Visit the sign in page and enter LDAP username and password in the sign in form.",paraId:6,tocIndex:8}],l$={},c$={title:"Auth: OIDC",toc:"menu",filename:"docs/en-US/handbook/auth-oidc/index.md",lastUpdated:1732240239e3,description:"The Auth: OIDC plugin follows the OIDC (Open ConnectID) protocol standard, using the Authorization Code Flow, to allow users to sign in to NocoBase using accounts provided by third-party identity authentication service providers (IdP)."},s$=[{id:"auth-oidc",depth:1,title:"Auth: OIDC"},{id:"introduction",depth:2,title:"Introduction"},{id:"activate-plugin",depth:2,title:"Activate Plugin"},{id:"add-oidc-authentication",depth:2,title:"Add OIDC Authentication"},{id:"configuration",depth:2,title:"Configuration"},{id:"basic-configuration",depth:3,title:"Basic Configuration"},{id:"field-mapping",depth:3,title:"Field Mapping"},{id:"advanced-configuration",depth:3,title:"Advanced Configuration"},{id:"usage",depth:3,title:"Usage"},{id:"sign-in",depth:2,title:"Sign In"}],u$=[{value:"The Auth: OIDC plugin follows the OIDC (Open ConnectID) protocol standard, using the Authorization Code Flow, to allow users to sign in to NocoBase using accounts provided by third-party identity authentication service providers (IdP).",paraId:0,tocIndex:1},{value:"Enter the user authentication plugin management page.",paraId:1,tocIndex:3},{value:"Add - OIDC",paraId:2,tocIndex:3},{value:"Sign up automatically when the user does not exist - Whether to automatically create a new user when no matching existing user is found.",paraId:3,tocIndex:5},{value:"Issuer - The issuer is provided by the IdP, usually ending with ",paraId:3,tocIndex:5},{value:"/.well-known/openid-configuration",paraId:3,tocIndex:5},{value:"Client ID - Client ID",paraId:3,tocIndex:5},{value:"Client Secret - Client Secret",paraId:3,tocIndex:5},{value:"scope - Optional, default is ",paraId:3,tocIndex:5},{value:"openid email profile",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:"id_token signed response algorithm - The signature method of id_token, default is ",paraId:3,tocIndex:5},{value:"RS256",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:"Field Map - Field mapping. The current fields available for mapping in Nocobase are nickname, email, and phone number. The default nickname is ",paraId:4,tocIndex:6},{value:"openid",paraId:4,tocIndex:6},{value:".",paraId:4,tocIndex:6},{value:"Use this field to bind the user - The field used to match and bind with existing users, can choose email or username, default is email. The user information carried by IdP needs to contain the ",paraId:4,tocIndex:6},{value:"email",paraId:4,tocIndex:6},{value:" or ",paraId:4,tocIndex:6},{value:"username",paraId:4,tocIndex:6},{value:" field.",paraId:4,tocIndex:6},{value:"HTTP - Whether the NocoBase callback address is http protocol, default is ",paraId:5,tocIndex:7},{value:"https",paraId:5,tocIndex:7},{value:".",paraId:5,tocIndex:7},{value:"Port - The port of the NocoBase callback address, default is ",paraId:5,tocIndex:7},{value:"443/80",paraId:5,tocIndex:7},{value:"State token - Used to verify the source of the request and prevent CSRF attacks. You can fill in a fixed value, ",paraId:5,tocIndex:7},{value:"it is strongly recommended to leave it blank, a random value will be generated by default. If you want to use a fixed value, please assess your usage environment and security risks yourself.",paraId:5,tocIndex:7},{value:"Pass parameters in the authorization code grant exchange - When using the code to exchange the token, some IdPs may require passing the Client ID or Client Secret as a parameter, you can check and fill in the corresponding parameter name.",paraId:5,tocIndex:7},{value:"Method to call the user info endpoint - The HTTP method when requesting to get user information API.",paraId:5,tocIndex:7},{value:`Where to put the access token when calling the user info endpoint - The way to pass the access token when requesting to get user information API. -`,paraId:5,tocIndex:7},{value:"Header - Request header, default.",paraId:6,tocIndex:7},{value:"Body - Request body, used with ",paraId:6,tocIndex:7},{value:"POST",paraId:6,tocIndex:7},{value:" method.",paraId:6,tocIndex:7},{value:"Query parameters - Request parameters, used with ",paraId:6,tocIndex:7},{value:"GET",paraId:6,tocIndex:7},{value:" method.",paraId:6,tocIndex:7},{value:"Usage - The callback URL (Redirect URL) is used to copy and fill in the corresponding configuration in the IdP.",paraId:7,tocIndex:8},{value:"When testing locally, please use ",paraId:8},{value:"127.0.0.1",paraId:8},{value:" instead of ",paraId:8},{value:"localhost",paraId:8},{value:", because the OIDC login method needs to write the state to the client cookie for security verification. If the login window flashes by but does not log in successfully, please check whether there are unmatched state logs on the server and whether the request cookie contains the state parameter. This situation is usually due to the mismatch between the state in the client cookie and the state carried in the request.",paraId:8},{value:"Visit the sign in page and click the button under the sign in form to initiate third-party login.",paraId:9,tocIndex:9}],p$={},I$={title:"Auth: SAML 2.0",toc:"menu",filename:"docs/en-US/handbook/auth-saml/index.md",lastUpdated:1732240239e3,description:"The Auth: SAML 2.0 plugin follows the SAML 2.0 (Security Assertion Markup Language 2.0) protocol standard, allowing users to sign in to NocoBase using accounts provided by third-party identity authentication service providers (IdP)."},_$=[{id:"auth-saml-20",depth:1,title:"Auth: SAML 2.0"},{id:"introduction",depth:2,title:"Introduction"},{id:"activate-plugin",depth:2,title:"Activate Plugin"},{id:"add-saml-authentication",depth:2,title:"Add SAML Authentication"},{id:"configuration",depth:2,title:"Configuration"},{id:"field-mapping",depth:2,title:"Field Mapping"},{id:"sign-in",depth:2,title:"Sign In"}],v$=[{value:"The Auth: SAML 2.0 plugin follows the SAML 2.0 (Security Assertion Markup Language 2.0) protocol standard, allowing users to sign in to NocoBase using accounts provided by third-party identity authentication service providers (IdP).",paraId:0,tocIndex:1},{value:"Enter the user authentication plugin management page.",paraId:1,tocIndex:3},{value:"Add - SAML",paraId:2,tocIndex:3},{value:"SSO URL - Provided by IdP, used for single sign-on",paraId:3,tocIndex:4},{value:"Public Certificate - Provided by IdP",paraId:3,tocIndex:4},{value:"Entity ID (IdP Issuer) - Optional, provided by IdP",paraId:3,tocIndex:4},{value:"http - If your NocoBase application is http protocol, please check",paraId:3,tocIndex:4},{value:"Use this field to bind the user - The field used to match and bind with existing users, can choose email or username, default is email. The user information carried by IdP needs to contain the ",paraId:3,tocIndex:4},{value:"email",paraId:3,tocIndex:4},{value:" or ",paraId:3,tocIndex:4},{value:"username",paraId:3,tocIndex:4},{value:" field.",paraId:3,tocIndex:4},{value:"Sign up automatically when the user does not exist - Whether to automatically create a new user when no matching existing user is found.",paraId:3,tocIndex:4},{value:"Usage - ",paraId:3,tocIndex:4},{value:"SP Issuer / EntityID",paraId:3,tocIndex:4},{value:" and ",paraId:3,tocIndex:4},{value:"ACS URL",paraId:3,tocIndex:4},{value:" are used to copy and fill in the corresponding configuration in the IdP.",paraId:3,tocIndex:4},{value:"Field mapping needs to be configured on the IdP's configuration platform, you can refer to the ",paraId:4,tocIndex:5},{value:"example",paraId:5,tocIndex:5},{value:".",paraId:4,tocIndex:5},{value:"The fields available for mapping in NocoBase are:",paraId:6,tocIndex:5},{value:"email (required)",paraId:7,tocIndex:5},{value:"phone (only effective for platforms that support ",paraId:7,tocIndex:5},{value:"phone",paraId:7,tocIndex:5},{value:" in scope, such as Alibaba Cloud, Lark)",paraId:7,tocIndex:5},{value:"nickname",paraId:7,tocIndex:5},{value:"username",paraId:7,tocIndex:5},{value:"firstName",paraId:7,tocIndex:5},{value:"lastName",paraId:7,tocIndex:5},{value:"nameID",paraId:8,tocIndex:5},{value:` is carried by the SAML protocol and does not need to be mapped, it will be saved as a unique user identifier. +`,paraId:3,tocIndex:1},{value:"After the plugin is initialized, ",paraId:4,tocIndex:2},{value:"afterAdd",paraId:4,tocIndex:2},{value:" is triggered. In ",paraId:4,tocIndex:2},{value:"afterAdd",paraId:4,tocIndex:2},{value:", not all other plugins might have been instantiated.",paraId:4,tocIndex:2},{value:"In ",paraId:4,tocIndex:2},{value:"beforeLoad",paraId:4,tocIndex:2},{value:", all activated plugins have been instantiated, and their instances can be retrieved via ",paraId:4,tocIndex:2},{value:"app.pluginManager.get()",paraId:4,tocIndex:2},{value:".",paraId:4,tocIndex:2},{value:"In ",paraId:4,tocIndex:2},{value:"load",paraId:4,tocIndex:2},{value:", the ",paraId:4,tocIndex:2},{value:"beforeLoad",paraId:4,tocIndex:2},{value:" method of all plugins has been executed.",paraId:4,tocIndex:2},{value:"API",paraId:5,tocIndex:3},{value:"Tutorial",paraId:5,tocIndex:3},{value:"this.name",paraId:5,tocIndex:3},{value:"Plugin name",paraId:5,tocIndex:3},{value:"this.enabled",paraId:5,tocIndex:3},{value:"Activated",paraId:5,tocIndex:3},{value:"this.installed",paraId:5,tocIndex:3},{value:"Installed",paraId:5,tocIndex:3},{value:"this.app",paraId:5,tocIndex:3},{value:"Application instance",paraId:5,tocIndex:3},{value:"this.pm",paraId:5,tocIndex:3},{value:"Plugin manager instance",paraId:5,tocIndex:3},{value:"this.db",paraId:5,tocIndex:3},{value:"Database instance",paraId:5,tocIndex:3},{value:"this.resourcer",paraId:5,tocIndex:3},{value:"Resource manager",paraId:5,tocIndex:3},{value:"this.acl",paraId:5,tocIndex:3},{value:"Access control",paraId:5,tocIndex:3},{value:"this.log",paraId:5,tocIndex:3},{value:"Logging",paraId:5,tocIndex:3},{value:"this.app.i18n",paraId:5,tocIndex:3},{value:"Internationalization",paraId:5,tocIndex:3},{value:"this.db.registerFieldTypes()",paraId:5,tocIndex:3},{value:"Register field types",paraId:5,tocIndex:3},{value:"this.db.registerModels()",paraId:5,tocIndex:3},{value:"Register Models",paraId:5,tocIndex:3},{value:"this.db.registerRepositories()",paraId:5,tocIndex:3},{value:"Register Repositories",paraId:5,tocIndex:3},{value:"this.db.registerOperators()",paraId:5,tocIndex:3},{value:"Register custom operators",paraId:5,tocIndex:3},{value:"this.app.on()",paraId:5,tocIndex:3},{value:"Application events",paraId:5,tocIndex:3},{value:"this.db.on()",paraId:5,tocIndex:3},{value:"Database events",paraId:5,tocIndex:3},{value:"this.db.collection()",paraId:5,tocIndex:3},{value:"Configure data tables",paraId:5,tocIndex:3},{value:"this.db.import()",paraId:5,tocIndex:3},{value:"Import data table configurations",paraId:5,tocIndex:3},{value:"this.db.addMigrations()",paraId:5,tocIndex:3},{value:"Migrations",paraId:5,tocIndex:3},{value:"this.resourcer.registerActions()",paraId:5,tocIndex:3},{value:"Register resource actions",paraId:5,tocIndex:3},{value:"this.resourcer.use()",paraId:5,tocIndex:3},{value:"Middleware",paraId:5,tocIndex:3},{value:"this.acl.use()",paraId:5,tocIndex:3},{value:"Middleware",paraId:5,tocIndex:3},{value:"this.app.use()",paraId:5,tocIndex:3},{value:"Middleware",paraId:5,tocIndex:3},{value:"this.app.command()",paraId:5,tocIndex:3},{value:"Command line",paraId:5,tocIndex:3}],e$={},a$={title:"User Manual",toc:"menu",filename:"docs/en-US/handbook/auth/user/index.md",lastUpdated:173254844e4,description:"When the user authentication plugin is installed, it will initialize an authentication method of password, based on the user's username and email."},t$=[{id:"user-manual",depth:1,title:"User Manual"},{id:"user-authentication-management",depth:2,title:"User Authentication Management"},{id:"activate-authentication-type",depth:2,title:"Activate Authentication Type"},{id:"user-authentication-types",depth:2,title:"User Authentication Types"},{id:"password-authentication",depth:2,title:"Password Authentication"},{id:"configuration-interface",depth:3,title:"Configuration Interface"},{id:"allow-registration",depth:3,title:"Allow Registration"},{id:"sign-up-form-settings",depth:3,title:"Sign up form Settings"}],n$=[{value:"When the user authentication plugin is installed, it will initialize an authentication method of ",paraId:0,tocIndex:1},{value:"password",paraId:0,tocIndex:1},{value:", based on the user's username and email.",paraId:0,tocIndex:1},{value:"Only activated authentication types will be displayed on the login page",paraId:1,tocIndex:2},{value:"The user authentication types currently supported by NocoBase are:",paraId:2,tocIndex:3},{value:"Password (Password), built-in user authentication plugin",paraId:3,tocIndex:3},{value:"SMS (SMS), expanded by ",paraId:3,tocIndex:3},{value:"sms-auth plugin",paraId:4,tocIndex:3},{value:"CAS, expanded by ",paraId:3,tocIndex:3},{value:"cas-auth plugin",paraId:5,tocIndex:3},{value:"SAML, expanded by ",paraId:3,tocIndex:3},{value:"saml-auth plugin",paraId:6,tocIndex:3},{value:"OIDC, expanded by ",paraId:3,tocIndex:3},{value:"oidc-auth plugin",paraId:7,tocIndex:3},{value:"In addition, you can also expand user authentication by yourself, refer to the ",paraId:8,tocIndex:3},{value:"Developer's Guide",paraId:9,tocIndex:3},{value:".",paraId:8,tocIndex:3},{value:"When registration is allowed, the login page will display the link to create an account, and you can go to the registration page",paraId:10,tocIndex:6},{value:"Registration page",paraId:11,tocIndex:6},{value:"When registration is not allowed, the login page will not display the link to create an account",paraId:12,tocIndex:6},{value:"When registration is not allowed, the registration page cannot be accessed",paraId:13,tocIndex:6},{value:`'v1.4.0-alpha.9' and later versions supported. +: : :`,paraId:14},{value:"You can set whether the user name and email fields of the registration form are displayed or required. At least one field needs to be set to display and required.",paraId:15},{value:"! ",paraId:16},{value:"Registration page",paraId:17},{value:"! ",paraId:18}],o$={},r$={title:"Auth: LDAP",toc:"menu",filename:"docs/en-US/handbook/auth-ldap/index.md",lastUpdated:173254844e4,description:"The Auth: LDAP plugin follows the LDAP (Lightweight Directory Access Protocol) protocol standard, enabling users to sign in to NocoBase using their LDAP server credentials."},d$=[{id:"auth-ldap",depth:1,title:"Auth: LDAP"},{id:"introduction",depth:2,title:"Introduction"},{id:"activate-plugin",depth:2,title:"Activate plugin"},{id:"add-ldap-authentication",depth:2,title:"Add LDAP Authentication"},{id:"configuration",depth:2,title:"Configuration"},{id:"basic-configuration",depth:3,title:"Basic Configuration"},{id:"search-configuration",depth:3,title:"Search Configuration"},{id:"attribute-mapping",depth:3,title:"Attribute Mapping"},{id:"sign-in",depth:2,title:"Sign In"}],i$=[{value:"The Auth: LDAP plugin follows the LDAP (Lightweight Directory Access Protocol) protocol standard, enabling users to sign in to NocoBase using their LDAP server credentials.",paraId:0,tocIndex:1},{value:"Go to the authentication plugin settings page.",paraId:1,tocIndex:3},{value:"Add - LDAP",paraId:2,tocIndex:3},{value:"Sign up automatically when the user does not exist - Whether to automatically create a new user when no matching existing user is found.",paraId:3,tocIndex:5},{value:"LDAP URL - LDAP server URL",paraId:3,tocIndex:5},{value:"Bind DN - DN used to test server connection and search for users",paraId:3,tocIndex:5},{value:"Bind password - Password of Bind DN",paraId:3,tocIndex:5},{value:"Test connection - Click the button to test server connection and Bind DN authentication.",paraId:3,tocIndex:5},{value:"Search DN - DN used to search for users",paraId:4,tocIndex:6},{value:"Search filter - Filtering condition for searching users, using ",paraId:4,tocIndex:6},{value:"{{account}}",paraId:4,tocIndex:6},{value:" to represent the user account used for login",paraId:4,tocIndex:6},{value:"Scope - ",paraId:4,tocIndex:6},{value:"Base",paraId:4,tocIndex:6},{value:", ",paraId:4,tocIndex:6},{value:"One level",paraId:4,tocIndex:6},{value:", ",paraId:4,tocIndex:6},{value:"Subtree",paraId:4,tocIndex:6},{value:", default ",paraId:4,tocIndex:6},{value:"Subtree",paraId:4,tocIndex:6},{value:"Size limit - Search page size",paraId:4,tocIndex:6},{value:"Use this field to bind the user - Field used to bind existing users. If the login account is a username, choose username; if it is an email, choose email. Default is username.",paraId:5,tocIndex:7},{value:"Attribute map - Mapping of user attributes to fields in the NocoBase user table.",paraId:5,tocIndex:7},{value:"Visit the sign in page and enter LDAP username and password in the sign in form.",paraId:6,tocIndex:8}],l$={},c$={title:"Auth: OIDC",toc:"menu",filename:"docs/en-US/handbook/auth-oidc/index.md",lastUpdated:173254844e4,description:"The Auth: OIDC plugin follows the OIDC (Open ConnectID) protocol standard, using the Authorization Code Flow, to allow users to sign in to NocoBase using accounts provided by third-party identity authentication service providers (IdP)."},s$=[{id:"auth-oidc",depth:1,title:"Auth: OIDC"},{id:"introduction",depth:2,title:"Introduction"},{id:"activate-plugin",depth:2,title:"Activate Plugin"},{id:"add-oidc-authentication",depth:2,title:"Add OIDC Authentication"},{id:"configuration",depth:2,title:"Configuration"},{id:"basic-configuration",depth:3,title:"Basic Configuration"},{id:"field-mapping",depth:3,title:"Field Mapping"},{id:"advanced-configuration",depth:3,title:"Advanced Configuration"},{id:"usage",depth:3,title:"Usage"},{id:"login",depth:3,title:"Login"}],u$=[{value:"The Auth: OIDC plugin follows the OIDC (Open ConnectID) protocol standard, using the Authorization Code Flow, to allow users to sign in to NocoBase using accounts provided by third-party identity authentication service providers (IdP).",paraId:0,tocIndex:1},{value:"Enter the user authentication plugin management page.",paraId:1,tocIndex:3},{value:"Add - OIDC",paraId:2,tocIndex:3},{value:"Configuration",paraId:3,tocIndex:5},{value:"Description",paraId:3,tocIndex:5},{value:"Version",paraId:3,tocIndex:5},{value:"Sign up automatically when the user does not exist",paraId:3,tocIndex:5},{value:"Whether to automatically create a new user if no matching existing user is found.",paraId:3,tocIndex:5},{value:"-",paraId:3,tocIndex:5},{value:"Issuer",paraId:3,tocIndex:5},{value:"The issuer provided by the IdP, usually ending with ",paraId:3,tocIndex:5},{value:"/.well-known/openid-configuration",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:"-",paraId:3,tocIndex:5},{value:"Client ID",paraId:3,tocIndex:5},{value:"The Client ID",paraId:3,tocIndex:5},{value:"-",paraId:3,tocIndex:5},{value:"Client Secret",paraId:3,tocIndex:5},{value:"The Client Secret",paraId:3,tocIndex:5},{value:"-",paraId:3,tocIndex:5},{value:"scope",paraId:3,tocIndex:5},{value:"Optional, defaults to ",paraId:3,tocIndex:5},{value:"openid email profile",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:"-",paraId:3,tocIndex:5},{value:"id_token signed response algorithm",paraId:3,tocIndex:5},{value:"The signing algorithm for ",paraId:3,tocIndex:5},{value:"id_token",paraId:3,tocIndex:5},{value:", defaults to ",paraId:3,tocIndex:5},{value:"RS256",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:"-",paraId:3,tocIndex:5},{value:"Enable RP-initiated logout",paraId:3,tocIndex:5},{value:"Enables RP-initiated logout. Logs out the IdP session when the user logs out. The IdP logout callback should use the Post logout redirect URL provided in ",paraId:3,tocIndex:5},{value:"Usage",paraId:4,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:"v1.3.44-beta",paraId:3,tocIndex:5},{value:"Configuration",paraId:5,tocIndex:6},{value:"Description",paraId:5,tocIndex:6},{value:"Field Map",paraId:5,tocIndex:6},{value:"Field mapping. NocoBase supports mapping fields such as nickname, email, and phone number. The default nickname uses ",paraId:5,tocIndex:6},{value:"openid",paraId:5,tocIndex:6},{value:".",paraId:5,tocIndex:6},{value:"Use this field to bind the user",paraId:5,tocIndex:6},{value:"Used to match and bind with existing users. You can choose email or username, with email as the default. The IdP must provide ",paraId:5,tocIndex:6},{value:"email",paraId:5,tocIndex:6},{value:" or ",paraId:5,tocIndex:6},{value:"username",paraId:5,tocIndex:6},{value:" information.",paraId:5,tocIndex:6},{value:"Configuration",paraId:6,tocIndex:7},{value:"Description",paraId:6,tocIndex:7},{value:"Version",paraId:6,tocIndex:7},{value:"HTTP",paraId:6,tocIndex:7},{value:"Whether the NocoBase callback URL uses HTTP protocol, default is ",paraId:6,tocIndex:7},{value:"https",paraId:6,tocIndex:7},{value:".",paraId:6,tocIndex:7},{value:"-",paraId:6,tocIndex:7},{value:"Port",paraId:6,tocIndex:7},{value:"Port for the NocoBase callback URL, defaults to ",paraId:6,tocIndex:7},{value:"443/80",paraId:6,tocIndex:7},{value:".",paraId:6,tocIndex:7},{value:"-",paraId:6,tocIndex:7},{value:"State token",paraId:6,tocIndex:7},{value:"Used to verify the request source and prevent CSRF attacks. You can provide a fixed value, but ",paraId:6,tocIndex:7},{value:"leaving it blank to generate random values by default is strongly recommended. If you use a fixed value, carefully evaluate your environment and security risks.",paraId:6,tocIndex:7},{value:"-",paraId:6,tocIndex:7},{value:"Pass parameters in the authorization code grant exchange",paraId:6,tocIndex:7},{value:"Some IdPs may require passing Client ID or Client Secret as parameters when exchanging a code for a token. You can select this option and specify the corresponding parameter names.",paraId:6,tocIndex:7},{value:"-",paraId:6,tocIndex:7},{value:"Method to call the user info endpoint",paraId:6,tocIndex:7},{value:"The HTTP method used when requesting the user info API.",paraId:6,tocIndex:7},{value:"-",paraId:6,tocIndex:7},{value:"Where to put the access token when calling the user info endpoint",paraId:6,tocIndex:7},{value:"How the access token is passed when calling the user info API:",paraId:6,tocIndex:7},{value:"- Header - In the request header (default).",paraId:6,tocIndex:7},{value:"- Body - In the request body, used with ",paraId:6,tocIndex:7},{value:"POST",paraId:6,tocIndex:7},{value:" method.",paraId:6,tocIndex:7},{value:"- Query parameters - As query parameters, used with ",paraId:6,tocIndex:7},{value:"GET",paraId:6,tocIndex:7},{value:" method.",paraId:6,tocIndex:7},{value:"-",paraId:6,tocIndex:7},{value:"Skip SSL verification",paraId:6,tocIndex:7},{value:"Skip SSL verification when requesting the IdP API. ",paraId:6,tocIndex:7},{value:"This option exposes your system to risks of man-in-the-middle attacks. Only enable this option if you understand its purpose and implications. It is strongly discouraged in production environments.",paraId:6,tocIndex:7},{value:"v1.3.40-beta",paraId:6,tocIndex:7},{value:"Configuration",paraId:7,tocIndex:8},{value:"Description",paraId:7,tocIndex:8},{value:"Redirect URL",paraId:7,tocIndex:8},{value:"Used to configure the callback URL in the IdP.",paraId:7,tocIndex:8},{value:"Post logout redirect URL",paraId:7,tocIndex:8},{value:"Used to configure the Post logout redirect URL in the IdP when RP-initiated logout is enabled.",paraId:7,tocIndex:8},{value:"When testing locally, use ",paraId:8},{value:"127.0.0.1",paraId:8},{value:" instead of ",paraId:8},{value:"localhost",paraId:8},{value:" for the URL, as OIDC login requires writing state to the client cookie for security validation. If you see a flash of the login window but fail to log in successfully, check the server logs for state mismatch issues and ensure the state parameter is included in the request cookie. This issue often occurs when the state in the client cookie does not match the state in the request.",paraId:8},{value:"Visit the login page and click the button below the login form to initiate third-party login.",paraId:9,tocIndex:9}],p$={},I$={title:"Auth: SAML 2.0",toc:"menu",filename:"docs/en-US/handbook/auth-saml/index.md",lastUpdated:173254844e4,description:"The Auth: SAML 2.0 plugin follows the SAML 2.0 (Security Assertion Markup Language 2.0) protocol standard, allowing users to sign in to NocoBase using accounts provided by third-party identity authentication service providers (IdP)."},_$=[{id:"auth-saml-20",depth:1,title:"Auth: SAML 2.0"},{id:"introduction",depth:2,title:"Introduction"},{id:"activate-plugin",depth:2,title:"Activate Plugin"},{id:"add-saml-authentication",depth:2,title:"Add SAML Authentication"},{id:"configuration",depth:2,title:"Configuration"},{id:"field-mapping",depth:2,title:"Field Mapping"},{id:"sign-in",depth:2,title:"Sign In"}],v$=[{value:"The Auth: SAML 2.0 plugin follows the SAML 2.0 (Security Assertion Markup Language 2.0) protocol standard, allowing users to sign in to NocoBase using accounts provided by third-party identity authentication service providers (IdP).",paraId:0,tocIndex:1},{value:"Enter the user authentication plugin management page.",paraId:1,tocIndex:3},{value:"Add - SAML",paraId:2,tocIndex:3},{value:"SSO URL - Provided by IdP, used for single sign-on",paraId:3,tocIndex:4},{value:"Public Certificate - Provided by IdP",paraId:3,tocIndex:4},{value:"Entity ID (IdP Issuer) - Optional, provided by IdP",paraId:3,tocIndex:4},{value:"http - If your NocoBase application is http protocol, please check",paraId:3,tocIndex:4},{value:"Use this field to bind the user - The field used to match and bind with existing users, can choose email or username, default is email. The user information carried by IdP needs to contain the ",paraId:3,tocIndex:4},{value:"email",paraId:3,tocIndex:4},{value:" or ",paraId:3,tocIndex:4},{value:"username",paraId:3,tocIndex:4},{value:" field.",paraId:3,tocIndex:4},{value:"Sign up automatically when the user does not exist - Whether to automatically create a new user when no matching existing user is found.",paraId:3,tocIndex:4},{value:"Usage - ",paraId:3,tocIndex:4},{value:"SP Issuer / EntityID",paraId:3,tocIndex:4},{value:" and ",paraId:3,tocIndex:4},{value:"ACS URL",paraId:3,tocIndex:4},{value:" are used to copy and fill in the corresponding configuration in the IdP.",paraId:3,tocIndex:4},{value:"Field mapping needs to be configured on the IdP's configuration platform, you can refer to the ",paraId:4,tocIndex:5},{value:"example",paraId:5,tocIndex:5},{value:".",paraId:4,tocIndex:5},{value:"The fields available for mapping in NocoBase are:",paraId:6,tocIndex:5},{value:"email (required)",paraId:7,tocIndex:5},{value:"phone (only effective for platforms that support ",paraId:7,tocIndex:5},{value:"phone",paraId:7,tocIndex:5},{value:" in scope, such as Alibaba Cloud, Lark)",paraId:7,tocIndex:5},{value:"nickname",paraId:7,tocIndex:5},{value:"username",paraId:7,tocIndex:5},{value:"firstName",paraId:7,tocIndex:5},{value:"lastName",paraId:7,tocIndex:5},{value:"nameID",paraId:8,tocIndex:5},{value:` is carried by the SAML protocol and does not need to be mapped, it will be saved as a unique user identifier. The priority of the new user nickname use rule is: `,paraId:8,tocIndex:5},{value:"nickname",paraId:8,tocIndex:5},{value:" > ",paraId:8,tocIndex:5},{value:"firstName lastName",paraId:8,tocIndex:5},{value:" > ",paraId:8,tocIndex:5},{value:"username",paraId:8,tocIndex:5},{value:" > ",paraId:8,tocIndex:5},{value:"nameID",paraId:8,tocIndex:5},{value:` -Currently, user organization and role mapping are not supported.`,paraId:8,tocIndex:5},{value:"Visit the sign in page and click the button under the sign in form to initiate third-party login.",paraId:9,tocIndex:6}],m$={},h$={title:"Block Map",toc:"menu",filename:"docs/en-US/handbook/block-map/index.md",lastUpdated:1732240239e3,description:"The Block Map is an essential tool for displaying and managing map-related data, offering support for four types of map fields: points, lines, circles, and polygons."},f$=[{id:"block-map",depth:1,title:"Block Map"},{id:"overview",depth:2,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"adding-map-blocks",depth:2,title:"Adding Map Blocks"},{id:"points",depth:2,title:"Points"},{id:"lines",depth:2,title:"Lines"},{id:"circles",depth:2,title:"Circles"},{id:"polygons",depth:2,title:"Polygons"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"sequential-field-connections",depth:2,title:"Sequential Field Connections"},{id:"default-map-zoom-level",depth:2,title:"Default Map Zoom Level"},{id:"defining-data-scope",depth:2,title:"Defining Data Scope"},{id:"adjusting-block-height",depth:2,title:"Adjusting Block Height"},{id:"configuration-operations",depth:2,title:"Configuration Operations"},{id:"batch-point-selection",depth:2,title:"Batch Point Selection"}],x$=[{value:"The Block Map is an essential tool for displaying and managing map-related data, offering support for four types of map fields: points, lines, circles, and polygons.",paraId:0,tocIndex:1},{value:"This plugin comes pre-installed but must be activated before use.",paraId:1,tocIndex:2},{value:"After activation, map authentication details need to be configured.",paraId:2,tocIndex:2},{value:"Once configured, map fields can be integrated into your data tables.",paraId:3,tocIndex:2},{value:"Map blocks can only be added if the associated data table includes map fields.",paraId:4,tocIndex:3},{value:"Map Field:",paraId:5,tocIndex:3},{value:" Defines the type of map element (point, line, polygon).",paraId:5,tocIndex:3},{value:"Marker Field:",paraId:5,tocIndex:3},{value:" Specifies map markers (applicable only for point types).",paraId:5,tocIndex:3},{value:"Use Case:",paraId:6,tocIndex:4},{value:" Ideal for visualizing the distribution of retail store locations.",paraId:6,tocIndex:4},{value:"Lines are constructed from a sequence of map points, commonly used to illustrate paths, such as delivery routes.",paraId:7,tocIndex:5},{value:"Use Case:",paraId:8,tocIndex:7},{value:" Perfect for area planning and zoning applications.",paraId:8,tocIndex:7},{value:"Connect points according to the order defined by sequential fields.",paraId:9,tocIndex:9},{value:"The zoom level defaults to 13 but can be adjusted as needed.",paraId:10,tocIndex:10},{value:"Example:",paraId:11,tocIndex:11},{value:' Filter for waybills marked as "shipped" (using relational fields). Only waybills within the specified data scope will be displayed.',paraId:11,tocIndex:11},{value:"For further details, refer to ",paraId:12,tocIndex:11},{value:"Setting Data Scope",paraId:13,tocIndex:11},{value:".",paraId:12,tocIndex:11},{value:"Example:",paraId:14,tocIndex:12},{value:" Modify the height of the map block to suit your layout.",paraId:14,tocIndex:12},{value:"For more information, see ",paraId:15,tocIndex:12},{value:"Block Height",paraId:16,tocIndex:12},{value:".",paraId:15,tocIndex:12},{value:"Edit Block Title",paraId:17,tocIndex:12},{value:"Connect Data Block",paraId:18,tocIndex:12},{value:"Save as Block Template",paraId:19,tocIndex:12},{value:"Filter",paraId:20,tocIndex:14},{value:"Add",paraId:21,tocIndex:14},{value:"Refresh",paraId:22,tocIndex:14},{value:"Bulk Update",paraId:23,tocIndex:14},{value:"Bulk Edit",paraId:24,tocIndex:14}],g$={},b$={title:"Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/index.md",lastUpdated:1732240239e3,description:"Blocks are carriers of data and content. They can be placed in a Page, a Modal dialog, or a Drawer, and multiple blocks can be freely dragged and arranged."},y$=[{id:"block",depth:1,title:"Block"},{id:"block-types",depth:2,title:"Block Types"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"blocks-in-a-page",depth:3,title:"Blocks in a Page"},{id:"blocks-in-a-popup-modal-or-drawer",depth:3,title:"Blocks in a Popup (Modal or Drawer)"},{id:"block-designer",depth:2,title:"Block Designer"},{id:"block-layout",depth:2,title:"Block Layout"}],w$=[{value:"Blocks are carriers of data and content. They can be placed in a Page, a Modal dialog, or a Drawer, and multiple blocks can be freely dragged and arranged.",paraId:0,tocIndex:0},{value:"Data Blocks: Used to display data from the data sources on the interface.",paraId:1,tocIndex:1},{value:"Filter Blocks: Used to use data from the data sources as filtering criteria for other data blocks.",paraId:1,tocIndex:1},{value:"Other Blocks: Used to contain specific or independent content such as workflow tasks, audit logs, Markdown, etc.",paraId:1,tocIndex:1},{value:"Blocks can be placed in a Page, Modal dialog, or Drawer.",paraId:2,tocIndex:2},{value:"Currently, the types of blocks in a page include: Data Blocks, Filter Blocks, and Other Blocks.",paraId:3,tocIndex:3},{value:"Popups come in two forms: Modals and Drawers, and, like pages, can also have blocks added to them. The difference is that blocks in popups are generally used for adding, editing, or viewing individual records. The types of blocks include Data Blocks and Other Blocks.",paraId:4,tocIndex:4},{value:"Every block has three small icons in the upper right corner, from left to right they are:",paraId:5,tocIndex:5},{value:"Drag Layout",paraId:6,tocIndex:5},{value:"Quick Add Block",paraId:6,tocIndex:5},{value:"Block Configuration",paraId:6,tocIndex:5},{value:'Simple blocks have all their configuration items concentrated in "Block Configuration," such as Markdown.',paraId:7,tocIndex:5},{value:'Complex data type blocks will also provide separate embedded "Configure Fields" and "Configure Actions".',paraId:8,tocIndex:5},{value:"Besides, there is also the potential for more nested possibilities, such as Chart Blocks.",paraId:9,tocIndex:5},{value:"Multiple blocks can adjust the layout by dragging.",paraId:10,tocIndex:6}],k$={},S$={title:"Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/index.md",lastUpdated:1732240239e3,description:"In the UI, fields refer to components that serve as carriers for individual data units. Various types of data are represented through different field components. Fields must be attached to blocks and cannot function independently."},U$=[{id:"fields",depth:1,title:"Fields"},{id:"fields-within-blocks",depth:2,title:"Fields within Blocks"},{id:"field-designer-toolbar",depth:2,title:"Field Designer (Toolbar)"},{id:"field-layout",depth:2,title:"Field Layout"},{id:"field-components",depth:2,title:"Field Components"}],P$=[{value:"In the UI, fields refer to components that serve as carriers for individual data units. Various types of data are represented through different field components. Fields must be attached to blocks and cannot function independently.",paraId:0,tocIndex:0},{value:'Fields are typically not used in isolation but rather as sub-elements within data-type blocks. These blocks generally include "configured columns," with the list of fields provided by the current data table.',paraId:1,tocIndex:1},{value:"Like blocks, field components feature three icons in the upper right corner:",paraId:2,tocIndex:2},{value:"Drag and Drop Layout",paraId:3,tocIndex:2},{value:"Quick Add Field",paraId:3,tocIndex:2},{value:"Field Parameter Configuration",paraId:3,tocIndex:2},{value:"You can customize the layout of fields within a block by dragging and rearranging them as needed.",paraId:4,tocIndex:3},{value:"Certain fields support switching between different components. For example, the ",paraId:5,tocIndex:4},{value:"URL",paraId:5,tocIndex:4},{value:" component can be switched to the ",paraId:5,tocIndex:4},{value:"Preview",paraId:5,tocIndex:4},{value:" component.",paraId:5,tocIndex:4},{value:"If you need to add more components, refer to ",paraId:6,tocIndex:4},{value:"Extending Value Field Components",paraId:7,tocIndex:4},{value:".",paraId:6,tocIndex:4}],T$={},C$={title:"\u5220\u9664",toc:"menu",filename:"docs/en-US/manual/ui/actions/delete.md",lastUpdated:1732240239e3,description:"\u5220\u9664\u64CD\u4F5C\u7528\u4E8E\u5220\u9664\u6570\u636E\u8BB0\u5F55\uFF08\u884C\u6309\u94AE/\u6279\u91CF\u64CD\u4F5C\u6309\u94AE\uFF09\uFF0C\u6709\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97"},A$=[{id:"\u5220\u9664",depth:1,title:"\u5220\u9664"}],q$=[{value:"\u5220\u9664\u64CD\u4F5C\u7528\u4E8E\u5220\u9664\u6570\u636E\u8BB0\u5F55\uFF08\u884C\u6309\u94AE/\u6279\u91CF\u64CD\u4F5C\u6309\u94AE\uFF09\uFF0C\u6709\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97",paraId:0,tocIndex:0}],E$={},D$={title:"\u5BFC\u51FA",toc:"menu",filename:"docs/en-US/manual/ui/actions/export.md",lastUpdated:1732240239e3,description:"\u5BFC\u51FA\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u6279\u91CF\u5BFC\u51FA\u533A\u5757\u4E2D\u6240\u7ED1\u5B9A\u7684\u6570\u636E\u8868\u7684\u6240\u6709\u6570\u636E\uFF0C\u652F\u6301\u914D\u7F6E\u5BFC\u51FA\u5B57\u6BB5\u7684\u6807\u9898"},O$=[{id:"\u5BFC\u51FA",depth:1,title:"\u5BFC\u51FA"}],R$=[{value:"\u5BFC\u51FA\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u6279\u91CF\u5BFC\u51FA\u533A\u5757\u4E2D\u6240\u7ED1\u5B9A\u7684\u6570\u636E\u8868\u7684\u6240\u6709\u6570\u636E\uFF0C\u652F\u6301\u914D\u7F6E\u5BFC\u51FA\u5B57\u6BB5\u7684\u6807\u9898",paraId:0,tocIndex:0},{value:"\u914D\u7F6E\u53EF\u5BFC\u51FA\u5B57\u6BB5",paraId:1,tocIndex:0}],M$={},L$={title:"\u7B5B\u9009",toc:"menu",filename:"docs/en-US/manual/ui/actions/filter.md",lastUpdated:1732240239e3,description:"\u7B5B\u9009\u64CD\u4F5C\u901A\u5E38\u51FA\u73B0\u5728\u6570\u636E\u533A\u5757\u4E2D\uFF0C\u53EF\u4EE5\u914D\u7F6E\u5404\u79CD\u6761\u4EF6\u6765\u8FC7\u6EE4\u6570\u636E\uFF0C\u9700\u8981\u6CE8\u610F\u7684\u662F\u5982\u679C\u533A\u5757\u5DF2\u7ECF\u914D\u7F6E\u4E86\u6570\u636E\u8303\u56F4\uFF0C\u7B5B\u9009\u64CD\u4F5C\u5C06\u4E0E\u6570\u636E\u8303\u56F4\u7684\u6761\u4EF6\u5408\u5E76\u4F5C\u4E3A\u6700\u7EC8\u8FC7\u6EE4\u6761\u4EF6\u3002"},N$=[{id:"\u7B5B\u9009",depth:1,title:"\u7B5B\u9009"}],z$=[{value:"\u7B5B\u9009\u64CD\u4F5C\u901A\u5E38\u51FA\u73B0\u5728\u6570\u636E\u533A\u5757\u4E2D\uFF0C\u53EF\u4EE5\u914D\u7F6E\u5404\u79CD\u6761\u4EF6\u6765\u8FC7\u6EE4\u6570\u636E\uFF0C\u9700\u8981\u6CE8\u610F\u7684\u662F\u5982\u679C\u533A\u5757\u5DF2\u7ECF\u914D\u7F6E\u4E86\u6570\u636E\u8303\u56F4\uFF0C\u7B5B\u9009\u64CD\u4F5C\u5C06\u4E0E\u6570\u636E\u8303\u56F4\u7684\u6761\u4EF6\u5408\u5E76\u4F5C\u4E3A\u6700\u7EC8\u8FC7\u6EE4\u6761\u4EF6\u3002",paraId:0,tocIndex:0},{value:"\u652F\u6301\u914D\u7F6E\u53EF\u7B5B\u9009\u7684\u5B57\u6BB5",paraId:1,tocIndex:0},{value:"\u5982\u4E0B\u56FE\u8FD0\u5355\u5217\u8868\u914D\u7F6E\u7B5B\u9009\u64CD\u4F5C\uFF1A\u901A\u8FC7\u8C03\u6574\u6761\u4EF6\u914D\u7F6E\u7B5B\u9009\u6570\u636E",paraId:2,tocIndex:0}],F$={},B$={title:"\u5BFC\u5165",toc:"menu",filename:"docs/en-US/manual/ui/actions/import.md",lastUpdated:1732240239e3,description:"\u5BFC\u5165\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u76EE\u524D\u652F\u6301\u901A\u8FC7\u5BFC\u5165xlsx\u6587\u4EF6\u6279\u91CF\u5BFC\u5165\u6570\u636E"},j$=[{id:"\u5BFC\u5165",depth:1,title:"\u5BFC\u5165"}],H$=[{value:"\u5BFC\u5165\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u76EE\u524D\u652F\u6301\u901A\u8FC7\u5BFC\u5165",paraId:0,tocIndex:0},{value:"xlsx",paraId:0,tocIndex:0},{value:"\u6587\u4EF6\u6279\u91CF\u5BFC\u5165\u6570\u636E",paraId:0,tocIndex:0},{value:"\u914D\u7F6E\u53EF\u5BFC\u5165\u7684\u5B57\u6BB5",paraId:1,tocIndex:0},{value:"\u4E0B\u8F7D\u5BFC\u5165\u7684\u6A21\u677F\uFF0C\u5728\u6A21\u677F\u4E2D\u6DFB\u52A0\u6570\u636E\u540E\u5BFC\u5165",paraId:2,tocIndex:0},{value:"\u8BE6\u89C1\u5BFC\u5165\u8BF4\u660E",paraId:3,tocIndex:0},{value:"https://github.com/nocobase/nocobase/tree/main/packages/plugins/%40nocobase/plugin-import#%E5%AF%BC%E5%85%A5%E8%AF%B4%E6%98%8E",paraId:4,tocIndex:0}],W$={},$$={title:"\u63D0\u4EA4",toc:"menu",filename:"docs/en-US/manual/ui/actions/submit.md",lastUpdated:1732240239e3,description:"\u63D0\u4EA4\u64CD\u4F5C\u7528\u4E8E\u4FDD\u5B58\u8868\u5355\u6570\u636E\uFF08\u8868\u5355\u533A\u5757\u7279\u6709\uFF09"},G$=[{id:"\u63D0\u4EA4",depth:1,title:"\u63D0\u4EA4"},{id:"\u53C2\u6570\u914D\u7F6E",depth:4,title:"\u53C2\u6570\u914D\u7F6E"}],V$=[{value:"\u63D0\u4EA4\u64CD\u4F5C\u7528\u4E8E\u4FDD\u5B58\u8868\u5355\u6570\u636E\uFF08\u8868\u5355\u533A\u5757\u7279\u6709\uFF09",paraId:0,tocIndex:0},{value:"\u4FDD\u5B58\u65B9\u5F0F\uFF1A\u4EC5\u9488\u5BF9",paraId:1,tocIndex:1},{value:"\u65B0\u5EFA",paraId:1,tocIndex:1},{value:"\u64CD\u4F5C\u4E2D\u8868\u5355\u533A\u5757\u7684\u63D0\u4EA4\u652F\u6301\u914D\u7F6E\u4FDD\u5B58\u65B9\u5F0F",paraId:1,tocIndex:1},{value:"\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\uFF1A\u652F\u6301\u4E0E\u5DE5\u4F5C\u6D41\u7684\u7ED1\u5B9A\u914D\u7F6E\uFF0C\u63D0\u4EA4\u540E\u81EA\u52A8\u89E6\u53D1\u5DE5\u4F5C\u6D41\uFF0C\u901A\u8FC7\u5B9A\u4E49\u89E6\u53D1\u6570\u636E\u4E0A\u4E0B\u6587\uFF0C\u5B9E\u73B0\u9AD8\u7EA7\u7684\u81EA\u52A8\u5316\u4EFB\u52A1\uFF0C\u63D0\u9AD8\u6570\u636E\u5904\u7406\u6548\u7387\u548C\u4E1A\u52A1\u6D41\u7A0B\u63A7\u5236",paraId:2,tocIndex:1},{value:"\u8BE6\u60C5\u53EF\u67E5\u770B\u5DE5\u4F5C\u6D41\u4F7F\u7528\u6587\u6863",paraId:3,tocIndex:1}],K$={},Z$={title:"\u8FDB\u9636\u4F7F\u7528",toc:"menu",filename:"docs/en-US/manual/workflow/advanced.md",lastUpdated:1732240239e3,description:"\u4ECE \u5FEB\u901F\u5F00\u59CB \u4E2D\u6211\u4EEC\u5DF2\u7ECF\u4E86\u89E3\u4E86\u5DE5\u4F5C\u6D41\u6700\u57FA\u672C\u7684\u7528\u6CD5\uFF0C\u672C\u7BC7\u8FDB\u4E00\u6B65\u4ECB\u7ECD\u5176\u4E2D\u4E00\u4E9B\u66F4\u6DF1\u5165\u7684\u6982\u5FF5\u3002"},Y$=[{id:"\u8FDB\u9636\u4F7F\u7528",depth:1,title:"\u8FDB\u9636\u4F7F\u7528"},{id:"\u4F7F\u7528\u53D8\u91CF",depth:2,title:"\u4F7F\u7528\u53D8\u91CF"},{id:"\u6267\u884C\u8BA1\u5212\u5386\u53F2\u8BB0\u5F55",depth:2,title:"\u6267\u884C\u8BA1\u5212\uFF08\u5386\u53F2\u8BB0\u5F55\uFF09"},{id:"\u8282\u70B9\u6267\u884C\u72B6\u6001",depth:2,title:"\u8282\u70B9\u6267\u884C\u72B6\u6001"},{id:"\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55",depth:2,title:"\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55"},{id:"\u5DE5\u4F5C\u6D41\u7684\u7248\u672C",depth:2,title:"\u5DE5\u4F5C\u6D41\u7684\u7248\u672C"}],Q$=[{value:"\u4ECE ",paraId:0,tocIndex:0},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:1,tocIndex:0},{value:" \u4E2D\u6211\u4EEC\u5DF2\u7ECF\u4E86\u89E3\u4E86\u5DE5\u4F5C\u6D41\u6700\u57FA\u672C\u7684\u7528\u6CD5\uFF0C\u672C\u7BC7\u8FDB\u4E00\u6B65\u4ECB\u7ECD\u5176\u4E2D\u4E00\u4E9B\u66F4\u6DF1\u5165\u7684\u6982\u5FF5\u3002",paraId:0,tocIndex:0},{value:"\u6B63\u5982\u7A0B\u5E8F\u8BED\u8A00\u4E2D\u7684\u53D8\u91CF\uFF0C\u5728\u5DE5\u4F5C\u6D41\u4E2D",paraId:2,tocIndex:1},{value:"\u53D8\u91CF",paraId:2,tocIndex:1},{value:"\u662F\u7528\u4E8E\u4E32\u63A5\u548C\u7EC4\u7EC7\u6D41\u7A0B\u7684\u91CD\u8981\u5DE5\u5177\u3002",paraId:2,tocIndex:1},{value:"\u5728\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\u6267\u884C\u6BCF\u4E2A\u8282\u70B9\u65F6\uFF0C\u4E00\u4E9B\u914D\u7F6E\u9879\u53EF\u4EE5\u9009\u62E9\u4F7F\u7528\u53D8\u91CF\uFF0C\u53D8\u91CF\u7684\u6765\u6E90\u5373\u8BE5\u8282\u70B9\u7684\u524D\u5E8F\u6570\u636E\uFF0C\u5305\u62EC\u4EE5\u4E0B\u51E0\u7C7B\uFF1A",paraId:3,tocIndex:1},{value:"\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF1A\u8868\u5355\u89E6\u53D1\u3001\u6570\u636E\u8868\u89E6\u53D1\u7B49\u60C5\u51B5\u4E0B\uFF0C\u5355\u884C\u6570\u636E\u5BF9\u8C61\u53EF\u4EE5\u88AB\u6240\u6709\u8282\u70B9\u4F7F\u7528\u3002",paraId:4,tocIndex:1},{value:"\u4E0A\u6E38\u8282\u70B9\u6570\u636E\uFF1A\u6D41\u7A0B\u8FDB\u884C\u5230\u4EFB\u610F\u8282\u70B9\u65F6\uFF0C\u4E4B\u524D\u5DF2\u5B8C\u6210\u7684\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u3002",paraId:4,tocIndex:1},{value:"\u5C40\u57DF\u53D8\u91CF\uFF1A\u5F53\u8282\u70B9\u5904\u5728\u4E00\u4E9B\u7279\u6B8A\u5206\u652F\u7ED3\u6784\u5185\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5BF9\u5E94\u5206\u652F\u5185\u7279\u6709\u7684\u5C40\u57DF\u53D8\u91CF\uFF0C\u4F8B\u5982\u5FAA\u73AF\u7ED3\u6784\u4E2D\u53EF\u4EE5\u4F7F\u7528\u6BCF\u8F6E\u5FAA\u73AF\u7684\u6570\u636E\u5BF9\u8C61\u3002",paraId:4,tocIndex:1},{value:"\u7CFB\u7EDF\u53D8\u91CF\uFF1A\u4E00\u4E9B\u5185\u7F6E\u7684\u7CFB\u7EDF\u53C2\u6570\uFF0C\u5982\u5F53\u524D\u65F6\u95F4\u7B49\u3002",paraId:4,tocIndex:1},{value:"\u6211\u4EEC\u5728 ",paraId:5,tocIndex:1},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:6,tocIndex:1},{value:" \u4E2D\u5DF2\u7ECF\u591A\u6B21\u4F7F\u7528\u4E86\u53D8\u91CF\u7684\u529F\u80FD\uFF0C\u4F8B\u5982\u5728\u8FD0\u7B97\u8282\u70B9\u4E2D\uFF0C\u6211\u4EEC\u53EF\u4EE5\u4F7F\u7528\u53D8\u91CF\u6765\u5F15\u7528\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u6765\u8FDB\u884C\u8BA1\u7B97\uFF1A",paraId:5,tocIndex:1},{value:"\u5728\u66F4\u65B0\u8282\u70B9\u4E2D\uFF0C\u4F7F\u7528\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u4F5C\u4E3A\u7B5B\u9009\u6761\u4EF6\u7684\u53D8\u91CF\uFF0C\u5E76\u5F15\u7528\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\u4F5C\u4E3A\u66F4\u65B0\u6570\u636E\u7684\u5B57\u6BB5\u503C\u53D8\u91CF\uFF1A",paraId:7,tocIndex:1},{value:"\u53D8\u91CF\u7684\u5185\u90E8\u662F\u4E00\u4E2A JSON \u7ED3\u6784\uFF0C\u901A\u5E38\u53EF\u4EE5\u6309 JSON \u7684\u8DEF\u5F84\u4F7F\u7528\u6570\u636E\u7684\u7279\u5B9A\u90E8\u5206\u3002\u7531\u4E8E\u5F88\u591A\u53D8\u91CF\u57FA\u4E8E NocoBase \u7684\u6570\u636E\u8868\u7ED3\u6784\uFF0C\u5173\u7CFB\u6570\u636E\u5C06\u4F1A\u4F5C\u4E3A\u5BF9\u8C61\u7684\u5C5E\u6027\u6309\u5C42\u7EA7\u7EC4\u6210\u7C7B\u4F3C\u6811\u7684\u7ED3\u6784\uFF0C\u4F8B\u5982\u6211\u4EEC\u53EF\u4EE5\u9009\u62E9\u67E5\u8BE2\u5230\u6570\u636E\u7684\u5173\u7CFB\u6570\u636E\u7684\u67D0\u4E2A\u5B57\u6BB5\u7684\u503C\u3002\u53E6\u5916\u5F53\u5173\u7CFB\u6570\u636E\u662F\u5BF9\u591A\u7684\u7ED3\u6784\u65F6\uFF0C\u53D8\u91CF\u53EF\u80FD\u4F1A\u662F\u4E00\u4E2A\u6570\u7EC4\u3002",paraId:8,tocIndex:1},{value:"\u9009\u62E9\u53D8\u91CF\u5728\u5927\u591A\u6570\u65F6\u5019\u4F1A\u9700\u8981\u9009\u5230\u6700\u540E\u4E00\u5C42\u503C\u5C5E\u6027\uFF0C\u901A\u5E38\u662F\u7B80\u5355\u6570\u636E\u7C7B\u578B\uFF0C\u5982\u6570\u5B57\u3001\u5B57\u7B26\u4E32\u7B49\u3002\u4F46\u5F53\u53D8\u91CF\u5C42\u7EA7\u4E2D\u6709\u6570\u7EC4\u65F6\uFF0C\u672B\u7EA7\u7684\u5C5E\u6027\u4E5F\u4F1A\u88AB\u6620\u5C04\u6210\u4E00\u4E2A\u6570\u7EC4\uFF0C\u53EA\u6709\u5BF9\u5E94\u7684\u8282\u70B9\u652F\u6301\u6570\u7EC4\u7684\u60C5\u51B5\u4E0B\uFF0C\u624D\u80FD\u6B63\u786E\u5904\u7406\u6570\u7EC4\u6570\u636E\u3002\u4F8B\u5982\u5728\u8FD0\u7B97\u8282\u70B9\u4E2D\uFF0C\u4E00\u4E9B\u8BA1\u7B97\u5F15\u64CE\u6709\u4E13\u95E8\u5904\u7406\u6570\u7EC4\u7684\u51FD\u6570\uFF0C\u53C8\u6BD4\u5982\u5728\u5FAA\u73AF\u8282\u70B9\u4E2D\uFF0C\u5FAA\u73AF\u5BF9\u8C61\u4E5F\u53EF\u4EE5\u76F4\u63A5\u9009\u62E9\u4E00\u4E2A\u6570\u7EC4\u3002",paraId:9,tocIndex:1},{value:"\u4E3E\u4E2A\u4F8B\u5B50\uFF0C\u5F53\u4E00\u4E2A\u67E5\u8BE2\u8282\u70B9\u67E5\u8BE2\u4E86\u591A\u6761\u6570\u636E\u65F6\uFF0C\u8282\u70B9\u7ED3\u679C\u5C06\u4F1A\u662F\u4E00\u4E2A\u5305\u542B\u591A\u884C\u540C\u6784\u6570\u636E\u7684\u6570\u7EC4\uFF1A",paraId:10,tocIndex:1},{value:`[ +Currently, user organization and role mapping are not supported.`,paraId:8,tocIndex:5},{value:"Visit the sign in page and click the button under the sign in form to initiate third-party login.",paraId:9,tocIndex:6}],m$={},h$={title:"Block Map",toc:"menu",filename:"docs/en-US/handbook/block-map/index.md",lastUpdated:173254844e4,description:"The Block Map is an essential tool for displaying and managing map-related data, offering support for four types of map fields: points, lines, circles, and polygons."},f$=[{id:"block-map",depth:1,title:"Block Map"},{id:"overview",depth:2,title:"Overview"},{id:"installation",depth:2,title:"Installation"},{id:"adding-map-blocks",depth:2,title:"Adding Map Blocks"},{id:"points",depth:2,title:"Points"},{id:"lines",depth:2,title:"Lines"},{id:"circles",depth:2,title:"Circles"},{id:"polygons",depth:2,title:"Polygons"},{id:"block-settings",depth:2,title:"Block Settings"},{id:"sequential-field-connections",depth:2,title:"Sequential Field Connections"},{id:"default-map-zoom-level",depth:2,title:"Default Map Zoom Level"},{id:"defining-data-scope",depth:2,title:"Defining Data Scope"},{id:"adjusting-block-height",depth:2,title:"Adjusting Block Height"},{id:"configuration-operations",depth:2,title:"Configuration Operations"},{id:"batch-point-selection",depth:2,title:"Batch Point Selection"}],x$=[{value:"The Block Map is an essential tool for displaying and managing map-related data, offering support for four types of map fields: points, lines, circles, and polygons.",paraId:0,tocIndex:1},{value:"This plugin comes pre-installed but must be activated before use.",paraId:1,tocIndex:2},{value:"After activation, map authentication details need to be configured.",paraId:2,tocIndex:2},{value:"Once configured, map fields can be integrated into your data tables.",paraId:3,tocIndex:2},{value:"Map blocks can only be added if the associated data table includes map fields.",paraId:4,tocIndex:3},{value:"Map Field:",paraId:5,tocIndex:3},{value:" Defines the type of map element (point, line, polygon).",paraId:5,tocIndex:3},{value:"Marker Field:",paraId:5,tocIndex:3},{value:" Specifies map markers (applicable only for point types).",paraId:5,tocIndex:3},{value:"Use Case:",paraId:6,tocIndex:4},{value:" Ideal for visualizing the distribution of retail store locations.",paraId:6,tocIndex:4},{value:"Lines are constructed from a sequence of map points, commonly used to illustrate paths, such as delivery routes.",paraId:7,tocIndex:5},{value:"Use Case:",paraId:8,tocIndex:7},{value:" Perfect for area planning and zoning applications.",paraId:8,tocIndex:7},{value:"Connect points according to the order defined by sequential fields.",paraId:9,tocIndex:9},{value:"The zoom level defaults to 13 but can be adjusted as needed.",paraId:10,tocIndex:10},{value:"Example:",paraId:11,tocIndex:11},{value:' Filter for waybills marked as "shipped" (using relational fields). Only waybills within the specified data scope will be displayed.',paraId:11,tocIndex:11},{value:"For further details, refer to ",paraId:12,tocIndex:11},{value:"Setting Data Scope",paraId:13,tocIndex:11},{value:".",paraId:12,tocIndex:11},{value:"Example:",paraId:14,tocIndex:12},{value:" Modify the height of the map block to suit your layout.",paraId:14,tocIndex:12},{value:"For more information, see ",paraId:15,tocIndex:12},{value:"Block Height",paraId:16,tocIndex:12},{value:".",paraId:15,tocIndex:12},{value:"Edit Block Title",paraId:17,tocIndex:12},{value:"Connect Data Block",paraId:18,tocIndex:12},{value:"Save as Block Template",paraId:19,tocIndex:12},{value:"Filter",paraId:20,tocIndex:14},{value:"Add",paraId:21,tocIndex:14},{value:"Refresh",paraId:22,tocIndex:14},{value:"Bulk Update",paraId:23,tocIndex:14},{value:"Bulk Edit",paraId:24,tocIndex:14}],g$={},b$={title:"Block",toc:"menu",filename:"docs/en-US/handbook/ui/blocks/index.md",lastUpdated:173254844e4,description:"Blocks are carriers of data and content. They can be placed in a Page, a Modal dialog, or a Drawer, and multiple blocks can be freely dragged and arranged."},y$=[{id:"block",depth:1,title:"Block"},{id:"block-types",depth:2,title:"Block Types"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"blocks-in-a-page",depth:3,title:"Blocks in a Page"},{id:"blocks-in-a-popup-modal-or-drawer",depth:3,title:"Blocks in a Popup (Modal or Drawer)"},{id:"block-designer",depth:2,title:"Block Designer"},{id:"block-layout",depth:2,title:"Block Layout"}],w$=[{value:"Blocks are carriers of data and content. They can be placed in a Page, a Modal dialog, or a Drawer, and multiple blocks can be freely dragged and arranged.",paraId:0,tocIndex:0},{value:"Data Blocks: Used to display data from the data sources on the interface.",paraId:1,tocIndex:1},{value:"Filter Blocks: Used to use data from the data sources as filtering criteria for other data blocks.",paraId:1,tocIndex:1},{value:"Other Blocks: Used to contain specific or independent content such as workflow tasks, audit logs, Markdown, etc.",paraId:1,tocIndex:1},{value:"Blocks can be placed in a Page, Modal dialog, or Drawer.",paraId:2,tocIndex:2},{value:"Currently, the types of blocks in a page include: Data Blocks, Filter Blocks, and Other Blocks.",paraId:3,tocIndex:3},{value:"Popups come in two forms: Modals and Drawers, and, like pages, can also have blocks added to them. The difference is that blocks in popups are generally used for adding, editing, or viewing individual records. The types of blocks include Data Blocks and Other Blocks.",paraId:4,tocIndex:4},{value:"Every block has three small icons in the upper right corner, from left to right they are:",paraId:5,tocIndex:5},{value:"Drag Layout",paraId:6,tocIndex:5},{value:"Quick Add Block",paraId:6,tocIndex:5},{value:"Block Configuration",paraId:6,tocIndex:5},{value:'Simple blocks have all their configuration items concentrated in "Block Configuration," such as Markdown.',paraId:7,tocIndex:5},{value:'Complex data type blocks will also provide separate embedded "Configure Fields" and "Configure Actions".',paraId:8,tocIndex:5},{value:"Besides, there is also the potential for more nested possibilities, such as Chart Blocks.",paraId:9,tocIndex:5},{value:"Multiple blocks can adjust the layout by dragging.",paraId:10,tocIndex:6}],k$={},S$={title:"Fields",toc:"menu",filename:"docs/en-US/handbook/ui/fields/index.md",lastUpdated:173254844e4,description:"In the UI, fields refer to components that serve as carriers for individual data units. Various types of data are represented through different field components. Fields must be attached to blocks and cannot function independently."},U$=[{id:"fields",depth:1,title:"Fields"},{id:"fields-within-blocks",depth:2,title:"Fields within Blocks"},{id:"field-designer-toolbar",depth:2,title:"Field Designer (Toolbar)"},{id:"field-layout",depth:2,title:"Field Layout"},{id:"field-components",depth:2,title:"Field Components"}],P$=[{value:"In the UI, fields refer to components that serve as carriers for individual data units. Various types of data are represented through different field components. Fields must be attached to blocks and cannot function independently.",paraId:0,tocIndex:0},{value:'Fields are typically not used in isolation but rather as sub-elements within data-type blocks. These blocks generally include "configured columns," with the list of fields provided by the current data table.',paraId:1,tocIndex:1},{value:"Like blocks, field components feature three icons in the upper right corner:",paraId:2,tocIndex:2},{value:"Drag and Drop Layout",paraId:3,tocIndex:2},{value:"Quick Add Field",paraId:3,tocIndex:2},{value:"Field Parameter Configuration",paraId:3,tocIndex:2},{value:"You can customize the layout of fields within a block by dragging and rearranging them as needed.",paraId:4,tocIndex:3},{value:"Certain fields support switching between different components. For example, the ",paraId:5,tocIndex:4},{value:"URL",paraId:5,tocIndex:4},{value:" component can be switched to the ",paraId:5,tocIndex:4},{value:"Preview",paraId:5,tocIndex:4},{value:" component.",paraId:5,tocIndex:4},{value:"If you need to add more components, refer to ",paraId:6,tocIndex:4},{value:"Extending Value Field Components",paraId:7,tocIndex:4},{value:".",paraId:6,tocIndex:4}],T$={},C$={title:"\u5220\u9664",toc:"menu",filename:"docs/en-US/manual/ui/actions/delete.md",lastUpdated:173254844e4,description:"\u5220\u9664\u64CD\u4F5C\u7528\u4E8E\u5220\u9664\u6570\u636E\u8BB0\u5F55\uFF08\u884C\u6309\u94AE/\u6279\u91CF\u64CD\u4F5C\u6309\u94AE\uFF09\uFF0C\u6709\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97"},A$=[{id:"\u5220\u9664",depth:1,title:"\u5220\u9664"}],q$=[{value:"\u5220\u9664\u64CD\u4F5C\u7528\u4E8E\u5220\u9664\u6570\u636E\u8BB0\u5F55\uFF08\u884C\u6309\u94AE/\u6279\u91CF\u64CD\u4F5C\u6309\u94AE\uFF09\uFF0C\u6709\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97",paraId:0,tocIndex:0}],E$={},D$={title:"\u5BFC\u51FA",toc:"menu",filename:"docs/en-US/manual/ui/actions/export.md",lastUpdated:173254844e4,description:"\u5BFC\u51FA\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u6279\u91CF\u5BFC\u51FA\u533A\u5757\u4E2D\u6240\u7ED1\u5B9A\u7684\u6570\u636E\u8868\u7684\u6240\u6709\u6570\u636E\uFF0C\u652F\u6301\u914D\u7F6E\u5BFC\u51FA\u5B57\u6BB5\u7684\u6807\u9898"},O$=[{id:"\u5BFC\u51FA",depth:1,title:"\u5BFC\u51FA"}],R$=[{value:"\u5BFC\u51FA\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u6279\u91CF\u5BFC\u51FA\u533A\u5757\u4E2D\u6240\u7ED1\u5B9A\u7684\u6570\u636E\u8868\u7684\u6240\u6709\u6570\u636E\uFF0C\u652F\u6301\u914D\u7F6E\u5BFC\u51FA\u5B57\u6BB5\u7684\u6807\u9898",paraId:0,tocIndex:0},{value:"\u914D\u7F6E\u53EF\u5BFC\u51FA\u5B57\u6BB5",paraId:1,tocIndex:0}],M$={},L$={title:"\u7B5B\u9009",toc:"menu",filename:"docs/en-US/manual/ui/actions/filter.md",lastUpdated:173254844e4,description:"\u7B5B\u9009\u64CD\u4F5C\u901A\u5E38\u51FA\u73B0\u5728\u6570\u636E\u533A\u5757\u4E2D\uFF0C\u53EF\u4EE5\u914D\u7F6E\u5404\u79CD\u6761\u4EF6\u6765\u8FC7\u6EE4\u6570\u636E\uFF0C\u9700\u8981\u6CE8\u610F\u7684\u662F\u5982\u679C\u533A\u5757\u5DF2\u7ECF\u914D\u7F6E\u4E86\u6570\u636E\u8303\u56F4\uFF0C\u7B5B\u9009\u64CD\u4F5C\u5C06\u4E0E\u6570\u636E\u8303\u56F4\u7684\u6761\u4EF6\u5408\u5E76\u4F5C\u4E3A\u6700\u7EC8\u8FC7\u6EE4\u6761\u4EF6\u3002"},N$=[{id:"\u7B5B\u9009",depth:1,title:"\u7B5B\u9009"}],z$=[{value:"\u7B5B\u9009\u64CD\u4F5C\u901A\u5E38\u51FA\u73B0\u5728\u6570\u636E\u533A\u5757\u4E2D\uFF0C\u53EF\u4EE5\u914D\u7F6E\u5404\u79CD\u6761\u4EF6\u6765\u8FC7\u6EE4\u6570\u636E\uFF0C\u9700\u8981\u6CE8\u610F\u7684\u662F\u5982\u679C\u533A\u5757\u5DF2\u7ECF\u914D\u7F6E\u4E86\u6570\u636E\u8303\u56F4\uFF0C\u7B5B\u9009\u64CD\u4F5C\u5C06\u4E0E\u6570\u636E\u8303\u56F4\u7684\u6761\u4EF6\u5408\u5E76\u4F5C\u4E3A\u6700\u7EC8\u8FC7\u6EE4\u6761\u4EF6\u3002",paraId:0,tocIndex:0},{value:"\u652F\u6301\u914D\u7F6E\u53EF\u7B5B\u9009\u7684\u5B57\u6BB5",paraId:1,tocIndex:0},{value:"\u5982\u4E0B\u56FE\u8FD0\u5355\u5217\u8868\u914D\u7F6E\u7B5B\u9009\u64CD\u4F5C\uFF1A\u901A\u8FC7\u8C03\u6574\u6761\u4EF6\u914D\u7F6E\u7B5B\u9009\u6570\u636E",paraId:2,tocIndex:0}],F$={},B$={title:"\u5BFC\u5165",toc:"menu",filename:"docs/en-US/manual/ui/actions/import.md",lastUpdated:173254844e4,description:"\u5BFC\u5165\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u76EE\u524D\u652F\u6301\u901A\u8FC7\u5BFC\u5165xlsx\u6587\u4EF6\u6279\u91CF\u5BFC\u5165\u6570\u636E"},j$=[{id:"\u5BFC\u5165",depth:1,title:"\u5BFC\u5165"}],H$=[{value:"\u5BFC\u5165\u64CD\u4F5C\u662F\u901A\u8FC7\u63D2\u4EF6\u6269\u5C55\u5B9E\u73B0\u7684\uFF0C\u76EE\u524D\u652F\u6301\u901A\u8FC7\u5BFC\u5165",paraId:0,tocIndex:0},{value:"xlsx",paraId:0,tocIndex:0},{value:"\u6587\u4EF6\u6279\u91CF\u5BFC\u5165\u6570\u636E",paraId:0,tocIndex:0},{value:"\u914D\u7F6E\u53EF\u5BFC\u5165\u7684\u5B57\u6BB5",paraId:1,tocIndex:0},{value:"\u4E0B\u8F7D\u5BFC\u5165\u7684\u6A21\u677F\uFF0C\u5728\u6A21\u677F\u4E2D\u6DFB\u52A0\u6570\u636E\u540E\u5BFC\u5165",paraId:2,tocIndex:0},{value:"\u8BE6\u89C1\u5BFC\u5165\u8BF4\u660E",paraId:3,tocIndex:0},{value:"https://github.com/nocobase/nocobase/tree/main/packages/plugins/%40nocobase/plugin-import#%E5%AF%BC%E5%85%A5%E8%AF%B4%E6%98%8E",paraId:4,tocIndex:0}],W$={},$$={title:"\u63D0\u4EA4",toc:"menu",filename:"docs/en-US/manual/ui/actions/submit.md",lastUpdated:173254844e4,description:"\u63D0\u4EA4\u64CD\u4F5C\u7528\u4E8E\u4FDD\u5B58\u8868\u5355\u6570\u636E\uFF08\u8868\u5355\u533A\u5757\u7279\u6709\uFF09"},G$=[{id:"\u63D0\u4EA4",depth:1,title:"\u63D0\u4EA4"},{id:"\u53C2\u6570\u914D\u7F6E",depth:4,title:"\u53C2\u6570\u914D\u7F6E"}],V$=[{value:"\u63D0\u4EA4\u64CD\u4F5C\u7528\u4E8E\u4FDD\u5B58\u8868\u5355\u6570\u636E\uFF08\u8868\u5355\u533A\u5757\u7279\u6709\uFF09",paraId:0,tocIndex:0},{value:"\u4FDD\u5B58\u65B9\u5F0F\uFF1A\u4EC5\u9488\u5BF9",paraId:1,tocIndex:1},{value:"\u65B0\u5EFA",paraId:1,tocIndex:1},{value:"\u64CD\u4F5C\u4E2D\u8868\u5355\u533A\u5757\u7684\u63D0\u4EA4\u652F\u6301\u914D\u7F6E\u4FDD\u5B58\u65B9\u5F0F",paraId:1,tocIndex:1},{value:"\u7ED1\u5B9A\u5DE5\u4F5C\u6D41\uFF1A\u652F\u6301\u4E0E\u5DE5\u4F5C\u6D41\u7684\u7ED1\u5B9A\u914D\u7F6E\uFF0C\u63D0\u4EA4\u540E\u81EA\u52A8\u89E6\u53D1\u5DE5\u4F5C\u6D41\uFF0C\u901A\u8FC7\u5B9A\u4E49\u89E6\u53D1\u6570\u636E\u4E0A\u4E0B\u6587\uFF0C\u5B9E\u73B0\u9AD8\u7EA7\u7684\u81EA\u52A8\u5316\u4EFB\u52A1\uFF0C\u63D0\u9AD8\u6570\u636E\u5904\u7406\u6548\u7387\u548C\u4E1A\u52A1\u6D41\u7A0B\u63A7\u5236",paraId:2,tocIndex:1},{value:"\u8BE6\u60C5\u53EF\u67E5\u770B\u5DE5\u4F5C\u6D41\u4F7F\u7528\u6587\u6863",paraId:3,tocIndex:1}],K$={},Z$={title:"\u8FDB\u9636\u4F7F\u7528",toc:"menu",filename:"docs/en-US/manual/workflow/advanced.md",lastUpdated:173254844e4,description:"\u4ECE \u5FEB\u901F\u5F00\u59CB \u4E2D\u6211\u4EEC\u5DF2\u7ECF\u4E86\u89E3\u4E86\u5DE5\u4F5C\u6D41\u6700\u57FA\u672C\u7684\u7528\u6CD5\uFF0C\u672C\u7BC7\u8FDB\u4E00\u6B65\u4ECB\u7ECD\u5176\u4E2D\u4E00\u4E9B\u66F4\u6DF1\u5165\u7684\u6982\u5FF5\u3002"},Y$=[{id:"\u8FDB\u9636\u4F7F\u7528",depth:1,title:"\u8FDB\u9636\u4F7F\u7528"},{id:"\u4F7F\u7528\u53D8\u91CF",depth:2,title:"\u4F7F\u7528\u53D8\u91CF"},{id:"\u6267\u884C\u8BA1\u5212\u5386\u53F2\u8BB0\u5F55",depth:2,title:"\u6267\u884C\u8BA1\u5212\uFF08\u5386\u53F2\u8BB0\u5F55\uFF09"},{id:"\u8282\u70B9\u6267\u884C\u72B6\u6001",depth:2,title:"\u8282\u70B9\u6267\u884C\u72B6\u6001"},{id:"\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55",depth:2,title:"\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55"},{id:"\u5DE5\u4F5C\u6D41\u7684\u7248\u672C",depth:2,title:"\u5DE5\u4F5C\u6D41\u7684\u7248\u672C"}],Q$=[{value:"\u4ECE ",paraId:0,tocIndex:0},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:1,tocIndex:0},{value:" \u4E2D\u6211\u4EEC\u5DF2\u7ECF\u4E86\u89E3\u4E86\u5DE5\u4F5C\u6D41\u6700\u57FA\u672C\u7684\u7528\u6CD5\uFF0C\u672C\u7BC7\u8FDB\u4E00\u6B65\u4ECB\u7ECD\u5176\u4E2D\u4E00\u4E9B\u66F4\u6DF1\u5165\u7684\u6982\u5FF5\u3002",paraId:0,tocIndex:0},{value:"\u6B63\u5982\u7A0B\u5E8F\u8BED\u8A00\u4E2D\u7684\u53D8\u91CF\uFF0C\u5728\u5DE5\u4F5C\u6D41\u4E2D",paraId:2,tocIndex:1},{value:"\u53D8\u91CF",paraId:2,tocIndex:1},{value:"\u662F\u7528\u4E8E\u4E32\u63A5\u548C\u7EC4\u7EC7\u6D41\u7A0B\u7684\u91CD\u8981\u5DE5\u5177\u3002",paraId:2,tocIndex:1},{value:"\u5728\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\u6267\u884C\u6BCF\u4E2A\u8282\u70B9\u65F6\uFF0C\u4E00\u4E9B\u914D\u7F6E\u9879\u53EF\u4EE5\u9009\u62E9\u4F7F\u7528\u53D8\u91CF\uFF0C\u53D8\u91CF\u7684\u6765\u6E90\u5373\u8BE5\u8282\u70B9\u7684\u524D\u5E8F\u6570\u636E\uFF0C\u5305\u62EC\u4EE5\u4E0B\u51E0\u7C7B\uFF1A",paraId:3,tocIndex:1},{value:"\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF1A\u8868\u5355\u89E6\u53D1\u3001\u6570\u636E\u8868\u89E6\u53D1\u7B49\u60C5\u51B5\u4E0B\uFF0C\u5355\u884C\u6570\u636E\u5BF9\u8C61\u53EF\u4EE5\u88AB\u6240\u6709\u8282\u70B9\u4F7F\u7528\u3002",paraId:4,tocIndex:1},{value:"\u4E0A\u6E38\u8282\u70B9\u6570\u636E\uFF1A\u6D41\u7A0B\u8FDB\u884C\u5230\u4EFB\u610F\u8282\u70B9\u65F6\uFF0C\u4E4B\u524D\u5DF2\u5B8C\u6210\u7684\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u3002",paraId:4,tocIndex:1},{value:"\u5C40\u57DF\u53D8\u91CF\uFF1A\u5F53\u8282\u70B9\u5904\u5728\u4E00\u4E9B\u7279\u6B8A\u5206\u652F\u7ED3\u6784\u5185\u65F6\uFF0C\u53EF\u4EE5\u4F7F\u7528\u5BF9\u5E94\u5206\u652F\u5185\u7279\u6709\u7684\u5C40\u57DF\u53D8\u91CF\uFF0C\u4F8B\u5982\u5FAA\u73AF\u7ED3\u6784\u4E2D\u53EF\u4EE5\u4F7F\u7528\u6BCF\u8F6E\u5FAA\u73AF\u7684\u6570\u636E\u5BF9\u8C61\u3002",paraId:4,tocIndex:1},{value:"\u7CFB\u7EDF\u53D8\u91CF\uFF1A\u4E00\u4E9B\u5185\u7F6E\u7684\u7CFB\u7EDF\u53C2\u6570\uFF0C\u5982\u5F53\u524D\u65F6\u95F4\u7B49\u3002",paraId:4,tocIndex:1},{value:"\u6211\u4EEC\u5728 ",paraId:5,tocIndex:1},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:6,tocIndex:1},{value:" \u4E2D\u5DF2\u7ECF\u591A\u6B21\u4F7F\u7528\u4E86\u53D8\u91CF\u7684\u529F\u80FD\uFF0C\u4F8B\u5982\u5728\u8FD0\u7B97\u8282\u70B9\u4E2D\uFF0C\u6211\u4EEC\u53EF\u4EE5\u4F7F\u7528\u53D8\u91CF\u6765\u5F15\u7528\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u6765\u8FDB\u884C\u8BA1\u7B97\uFF1A",paraId:5,tocIndex:1},{value:"\u5728\u66F4\u65B0\u8282\u70B9\u4E2D\uFF0C\u4F7F\u7528\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u4F5C\u4E3A\u7B5B\u9009\u6761\u4EF6\u7684\u53D8\u91CF\uFF0C\u5E76\u5F15\u7528\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\u4F5C\u4E3A\u66F4\u65B0\u6570\u636E\u7684\u5B57\u6BB5\u503C\u53D8\u91CF\uFF1A",paraId:7,tocIndex:1},{value:"\u53D8\u91CF\u7684\u5185\u90E8\u662F\u4E00\u4E2A JSON \u7ED3\u6784\uFF0C\u901A\u5E38\u53EF\u4EE5\u6309 JSON \u7684\u8DEF\u5F84\u4F7F\u7528\u6570\u636E\u7684\u7279\u5B9A\u90E8\u5206\u3002\u7531\u4E8E\u5F88\u591A\u53D8\u91CF\u57FA\u4E8E NocoBase \u7684\u6570\u636E\u8868\u7ED3\u6784\uFF0C\u5173\u7CFB\u6570\u636E\u5C06\u4F1A\u4F5C\u4E3A\u5BF9\u8C61\u7684\u5C5E\u6027\u6309\u5C42\u7EA7\u7EC4\u6210\u7C7B\u4F3C\u6811\u7684\u7ED3\u6784\uFF0C\u4F8B\u5982\u6211\u4EEC\u53EF\u4EE5\u9009\u62E9\u67E5\u8BE2\u5230\u6570\u636E\u7684\u5173\u7CFB\u6570\u636E\u7684\u67D0\u4E2A\u5B57\u6BB5\u7684\u503C\u3002\u53E6\u5916\u5F53\u5173\u7CFB\u6570\u636E\u662F\u5BF9\u591A\u7684\u7ED3\u6784\u65F6\uFF0C\u53D8\u91CF\u53EF\u80FD\u4F1A\u662F\u4E00\u4E2A\u6570\u7EC4\u3002",paraId:8,tocIndex:1},{value:"\u9009\u62E9\u53D8\u91CF\u5728\u5927\u591A\u6570\u65F6\u5019\u4F1A\u9700\u8981\u9009\u5230\u6700\u540E\u4E00\u5C42\u503C\u5C5E\u6027\uFF0C\u901A\u5E38\u662F\u7B80\u5355\u6570\u636E\u7C7B\u578B\uFF0C\u5982\u6570\u5B57\u3001\u5B57\u7B26\u4E32\u7B49\u3002\u4F46\u5F53\u53D8\u91CF\u5C42\u7EA7\u4E2D\u6709\u6570\u7EC4\u65F6\uFF0C\u672B\u7EA7\u7684\u5C5E\u6027\u4E5F\u4F1A\u88AB\u6620\u5C04\u6210\u4E00\u4E2A\u6570\u7EC4\uFF0C\u53EA\u6709\u5BF9\u5E94\u7684\u8282\u70B9\u652F\u6301\u6570\u7EC4\u7684\u60C5\u51B5\u4E0B\uFF0C\u624D\u80FD\u6B63\u786E\u5904\u7406\u6570\u7EC4\u6570\u636E\u3002\u4F8B\u5982\u5728\u8FD0\u7B97\u8282\u70B9\u4E2D\uFF0C\u4E00\u4E9B\u8BA1\u7B97\u5F15\u64CE\u6709\u4E13\u95E8\u5904\u7406\u6570\u7EC4\u7684\u51FD\u6570\uFF0C\u53C8\u6BD4\u5982\u5728\u5FAA\u73AF\u8282\u70B9\u4E2D\uFF0C\u5FAA\u73AF\u5BF9\u8C61\u4E5F\u53EF\u4EE5\u76F4\u63A5\u9009\u62E9\u4E00\u4E2A\u6570\u7EC4\u3002",paraId:9,tocIndex:1},{value:"\u4E3E\u4E2A\u4F8B\u5B50\uFF0C\u5F53\u4E00\u4E2A\u67E5\u8BE2\u8282\u70B9\u67E5\u8BE2\u4E86\u591A\u6761\u6570\u636E\u65F6\uFF0C\u8282\u70B9\u7ED3\u679C\u5C06\u4F1A\u662F\u4E00\u4E2A\u5305\u542B\u591A\u884C\u540C\u6784\u6570\u636E\u7684\u6570\u7EC4\uFF1A",paraId:10,tocIndex:1},{value:`[ { "id": 1, "title": "\u6807\u98981" @@ -16000,7 +16053,7 @@ Currently, user organization and role mapping are not supported.`,paraId:8,tocIn } ] `,paraId:11,tocIndex:1},{value:"\u4F46\u662F\u5728\u540E\u7EED\u8282\u70B9\u4E2D\u5C06\u5176\u4F5C\u4E3A\u53D8\u91CF\u4F7F\u7528\u65F6\uFF0C\u5982\u679C\u9009\u62E9\u7684\u53D8\u91CF\u662F ",paraId:12,tocIndex:1},{value:"\u8282\u70B9\u6570\u636E/\u67E5\u8BE2\u8282\u70B9/\u6807\u9898",paraId:12,tocIndex:1},{value:" \u7684\u5F62\u5F0F\uFF0C\u5C06\u4F1A\u5F97\u5230\u4E00\u4E2A\u88AB\u6620\u5C04\u540E\u662F\u5BF9\u5E94\u5B57\u6BB5\u503C\u7684\u6570\u7EC4\uFF1A",paraId:12,tocIndex:1},{value:`["\u6807\u98981", "\u6807\u98982"] -`,paraId:13,tocIndex:1},{value:"\u5982\u679C\u662F\u591A\u7EF4\u6570\u7EC4\uFF08\u5982\u591A\u5BF9\u591A\u5173\u7CFB\u5B57\u6BB5\uFF09\uFF0C\u5C06\u4F1A\u5F97\u5230\u4E00\u4E2A\u5BF9\u5E94\u5B57\u6BB5\u88AB\u62CD\u5E73\u540E\u7684\u4E00\u7EF4\u6570\u7EC4\u3002",paraId:14,tocIndex:1},{value:"\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\uFF0C\u4F1A\u521B\u5EFA\u5BF9\u5E94\u7684\u6267\u884C\u8BA1\u5212\uFF0C\u4EE5\u8DDF\u8E2A\u6B64\u6B21\u4EFB\u52A1\u7684\u6267\u884C\u3002\u6BCF\u4E2A\u6267\u884C\u8BA1\u5212\u90FD\u6709\u4E00\u4E2A\u72B6\u6001\u503C\u7528\u4E8E\u8868\u793A\u5F53\u524D\u7684\u6267\u884C\u72B6\u6001\uFF0C\u8BE5\u72B6\u6001\u5728\u6267\u884C\u5386\u53F2\u7684\u5217\u8868\u548C\u8BE6\u60C5\u4E2D\u90FD\u53EF\u4EE5\u67E5\u770B\u5230\uFF1A",paraId:15,tocIndex:2},{value:"\u5F53\u4E3B\u6D41\u7A0B\u5206\u652F\u4E2D\u7684\u8282\u70B9\u5168\u90E8\u90FD\u4EE5\u201C\u5B8C\u6210\u201D\u72B6\u6001\u6267\u884C\u5230\u6D41\u7A0B\u7EC8\u70B9\u65F6\uFF0C\u6574\u4E2A\u6267\u884C\u8BA1\u5212\u5C06\u4EE5\u201C\u5B8C\u6210\u201D\u72B6\u6001\u7ED3\u675F\u3002\u5F53\u4E3B\u6D41\u7A0B\u5206\u652F\u4E2D\u7684\u8282\u70B9\u51FA\u73B0\u201C\u5931\u8D25\u201D\u3001\u201C\u51FA\u9519\u201D\u3001\u201C\u53D6\u6D88\u201D\u3001\u201C\u62D2\u7EDD\u201D\u7B49\u7EC8\u6001\u65F6\uFF0C\u6574\u4E2A\u6267\u884C\u8BA1\u5212\u5C06\u4EE5\u5BF9\u5E94\u7684\u72B6\u6001",paraId:16,tocIndex:2},{value:"\u63D0\u524D\u7EC8\u6B62",paraId:16,tocIndex:2},{value:"\u3002\u5F53\u4E3B\u6D41\u7A0B\u5206\u652F\u4E2D\u7684\u8282\u70B9\u51FA\u73B0\u201C\u7B49\u5F85\u201D\u72B6\u6001\u65F6\uFF0C\u6574\u4E2A\u6267\u884C\u8BA1\u5212\u5C06\u6682\u505C\u6267\u884C\uFF0C\u4F46\u4ECD\u663E\u793A\u201C\u6267\u884C\u4E2D\u201D\u7684\u72B6\u6001\uFF0C\u76F4\u5230\u7B49\u5F85\u7684\u8282\u70B9\u88AB\u6062\u590D\u540E\u7EE7\u7EED\u6267\u884C\u3002\u4E0D\u540C\u7684\u8282\u70B9\u7C7B\u578B\u5BF9\u7B49\u5F85\u72B6\u6001\u7684\u5904\u7406\u65B9\u5F0F\u4E0D\u540C\uFF0C\u6BD4\u5982\u4EBA\u5DE5\u8282\u70B9\u9700\u8981\u7B49\u5F85\u4EBA\u5DE5\u5904\u7406\uFF0C\u800C\u5EF6\u65F6\u8282\u70B9\u9700\u8981\u7B49\u5F85\u65F6\u95F4\u5230\u8FBE\u540E\u7EE7\u7EED\u6267\u884C\u3002",paraId:16,tocIndex:2},{value:"\u6267\u884C\u8BA1\u5212\u7684\u72B6\u6001\u5982\u4E0B\u8868\uFF1A",paraId:17,tocIndex:2},{value:"\u72B6\u6001",paraId:18,tocIndex:2},{value:"\u5BF9\u5E94\u4E3B\u6D41\u7A0B\u6700\u540E\u6267\u884C\u7684\u8282\u70B9\u72B6\u6001",paraId:18,tocIndex:2},{value:"\u542B\u4E49",paraId:18,tocIndex:2},{value:"\u961F\u5217\u4E2D",paraId:18,tocIndex:2},{value:"-",paraId:18,tocIndex:2},{value:"\u6D41\u7A0B\u5DF2\u89E6\u53D1\u5E76\u751F\u6210\u6267\u884C\u8BA1\u5212\uFF0C\u6392\u961F\u7B49\u5F85\u8C03\u5EA6\u5668\u5B89\u6392\u6267\u884C",paraId:18,tocIndex:2},{value:"\u8FDB\u884C\u4E2D",paraId:18,tocIndex:2},{value:"\u7B49\u5F85",paraId:18,tocIndex:2},{value:"\u8282\u70B9\u8981\u6C42\u6682\u505C\uFF0C\u7B49\u5F85\u8FDB\u4E00\u6B65\u8F93\u5165\u6216\u56DE\u8C03\u518D\u7EE7\u7EED",paraId:18,tocIndex:2},{value:"\u5B8C\u6210",paraId:18,tocIndex:2},{value:"\u5B8C\u6210",paraId:18,tocIndex:2},{value:"\u672A\u9047\u5230\u4EFB\u4F55\u95EE\u9898\uFF0C\u6240\u6709\u8282\u70B9\u6309\u9884\u671F\u9010\u4E2A\u6267\u884C\u5B8C\u6210\u3002",paraId:18,tocIndex:2},{value:"\u5931\u8D25",paraId:18,tocIndex:2},{value:"\u5931\u8D25",paraId:18,tocIndex:2},{value:"\u7531\u4E8E\u672A\u6EE1\u8DB3\u8282\u70B9\u914D\u7F6E\uFF0C\u5BFC\u81F4\u5931\u8D25\u3002",paraId:18,tocIndex:2},{value:"\u51FA\u9519",paraId:18,tocIndex:2},{value:"\u51FA\u9519",paraId:18,tocIndex:2},{value:"\u8282\u70B9\u9047\u5230\u672A\u6355\u83B7\u7684\u7A0B\u5E8F\u9519\u8BEF\uFF0C\u63D0\u524D\u7ED3\u675F\u3002",paraId:18,tocIndex:2},{value:"\u53D6\u6D88",paraId:18,tocIndex:2},{value:"\u53D6\u6D88",paraId:18,tocIndex:2},{value:"\u7B49\u5F85\u4E2D\u7684\u8282\u70B9\u88AB\u6D41\u7A0B\u7BA1\u7406\u8005\u4ECE\u5916\u90E8\u53D6\u6D88\u6267\u884C\uFF0C\u63D0\u524D\u7ED3\u675F",paraId:18,tocIndex:2},{value:"\u62D2\u7EDD",paraId:18,tocIndex:2},{value:"\u62D2\u7EDD",paraId:18,tocIndex:2},{value:"\u5728\u4EBA\u5DE5\u5904\u7406\u7684\u8282\u70B9\u4E2D\uFF0C\u88AB\u4EBA\u5DE5\u62D2\u7EDD\u4E0D\u518D\u7EE7\u7EED\u540E\u7EED\u6D41\u7A0B",paraId:18,tocIndex:2},{value:"\u5728 ",paraId:19,tocIndex:2},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:20,tocIndex:2},{value:" \u7684\u4F8B\u5B50\u4E2D\uFF0C\u6211\u4EEC\u5DF2\u7ECF\u77E5\u9053\u67E5\u770B\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5386\u53F2\u7684\u8BE6\u60C5\u53EF\u4EE5\u68C0\u67E5\u6267\u884C\u8FC7\u7A0B\u4E2D\u6240\u6709\u8282\u70B9\u7684\u6267\u884C\u662F\u5426\u6B63\u5E38\uFF0C\u4EE5\u53CA\u6BCF\u4E2A\u5DF2\u6267\u884C\u7684\u8282\u70B9\u7684\u6267\u884C\u72B6\u6001\u548C\u7ED3\u679C\u6570\u636E\uFF0C\u5728\u4E00\u4E9B\u9AD8\u7EA7\u7684\u6D41\u7A0B\u548C\u8282\u70B9\u4E2D\uFF0C\u8282\u70B9\u7684\u7ED3\u679C\u8FD8\u53EF\u80FD\u6709\u591A\u4E2A\uFF0C\u4F8B\u5982\u5FAA\u73AF\u8282\u70B9\u7684\u7ED3\u679C\uFF1A",paraId:19,tocIndex:2},{value:"\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u88AB\u5E76\u53D1\u7684\u89E6\u53D1\uFF0C\u4F46\u6267\u884C\u662F\u9010\u4E2A\u6392\u961F\u6267\u884C\u7684\uFF0C\u5373\u4F7F\u540C\u65F6\u89E6\u53D1\u591A\u4E2A\u5DE5\u4F5C\u6D41\uFF0C\u4E5F\u4F1A\u4F9D\u6B21\u6267\u884C\uFF0C\u4E0D\u4F1A\u5E76\u884C\u6267\u884C\u3002\u6240\u4EE5\u51FA\u73B0\u201C\u961F\u5217\u4E2D\u201D\u7684\u60C5\u51B5\u65F6\uFF0C\u4EE3\u8868\u6709\u5176\u4ED6\u5DE5\u4F5C\u6D41\u6B63\u5728\u6267\u884C\uFF0C\u9700\u8981\u7B49\u5F85\u3002",paraId:21},{value:"\u201C\u8FDB\u884C\u4E2D\u201D\u7684\u72B6\u6001\u53EA\u4EE3\u8868\u8BE5\u6267\u884C\u8BA1\u5212\u5DF2\u7ECF\u5F00\u59CB\uFF0C\u4E14\u901A\u5E38\u7531\u4E8E\u5185\u90E8\u8282\u70B9\u7684\u7B49\u5F85\u72B6\u6001\u800C\u6682\u505C\uFF0C\u5E76\u4E0D\u4EE3\u8868\u8BE5\u6267\u884C\u8BA1\u5212\u62A2\u5360\u4E86\u961F\u5934\u7684\u6267\u884C\u8D44\u6E90\u3002\u6240\u4EE5\u5B58\u5728\u201C\u8FDB\u884C\u4E2D\u201D\u7684\u6267\u884C\u8BA1\u5212\u65F6\uFF0C\u5176\u4ED6\u201C\u961F\u5217\u4E2D\u201D\u7684\u6267\u884C\u8BA1\u5212\u4ECD\u53EF\u88AB\u8C03\u5EA6\u5F00\u59CB\u6267\u884C\u3002",paraId:22},{value:"\u6267\u884C\u8BA1\u5212\u7684\u72B6\u6001\u662F\u7531\u5176\u4E2D\u6BCF\u4E2A\u8282\u70B9\u7684\u6267\u884C\u51B3\u5B9A\u7684\uFF0C\u5728\u4E00\u6B21\u89E6\u53D1\u540E\u7684\u6267\u884C\u8BA1\u5212\u4E2D\uFF0C\u6BCF\u4E2A\u8282\u70B9\u6267\u884C\u540E\u4F1A\u4EA7\u751F\u4E00\u4E2A\u6267\u884C\u72B6\u6001\uFF0C\u72B6\u6001\u5219\u4F1A\u51B3\u5B9A\u540E\u7EED\u6D41\u7A0B\u662F\u5426\u7EE7\u7EED\u6267\u884C\u3002\u901A\u5E38\u60C5\u51B5\u4E0B\uFF0C\u8282\u70B9\u6267\u884C\u6210\u529F\u540E\uFF0C\u4F1A\u7EE7\u7EED\u6267\u884C\u4E0B\u4E00\u4E2A\u8282\u70B9\uFF0C\u76F4\u5230\u6240\u6709\u8282\u70B9\u4F9D\u6B21\u6267\u884C\u5B8C\u6210\uFF0C\u6216\u8005\u88AB\u4E2D\u65AD\u3002\u5F53\u9047\u5230\u6D41\u7A0B\u63A7\u5236\u76F8\u5173\u8282\u70B9\u65F6\uFF0C\u5982\u5206\u652F\u3001\u5FAA\u73AF\u3001\u5E76\u884C\u3001\u5EF6\u65F6\u7B49\uFF0C\u4F1A\u6839\u636E\u8282\u70B9\u914D\u7F6E\u7684\u6761\u4EF6\uFF0C\u4EE5\u53CA\u8FD0\u884C\u65F6\u7684\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u51B3\u5B9A\u4E0B\u4E00\u4E2A\u8282\u70B9\u7684\u6267\u884C\u6D41\u5411\u3002",paraId:23,tocIndex:3},{value:"\u6BCF\u4E2A\u8282\u70B9\u6267\u884C\u540E\u53EF\u80FD\u4EA7\u751F\u7684\u72B6\u6001\u5982\u4E0B\u8868\uFF1A",paraId:24,tocIndex:3},{value:"\u72B6\u6001",paraId:25,tocIndex:3},{value:"\u662F\u5426\u662F\u7EC8\u6001",paraId:25,tocIndex:3},{value:"\u662F\u5426\u63D0\u524D\u7EC8\u6B62",paraId:25,tocIndex:3},{value:"\u542B\u4E49",paraId:25,tocIndex:3},{value:"\u7B49\u5F85",paraId:25,tocIndex:3},{value:"\u5426",paraId:25,tocIndex:3},{value:"\u5426",paraId:25,tocIndex:3},{value:"\u8282\u70B9\u8981\u6C42\u6682\u505C\uFF0C\u7B49\u5F85\u8FDB\u4E00\u6B65\u8F93\u5165\u6216\u56DE\u8C03\u518D\u7EE7\u7EED",paraId:25,tocIndex:3},{value:"\u5B8C\u6210",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u5426",paraId:25,tocIndex:3},{value:"\u672A\u9047\u5230\u4EFB\u4F55\u95EE\u9898\uFF0C\u6267\u884C\u6210\u529F\uFF0C\u7EE7\u7EED\u6267\u884C\u4E0B\u4E00\u4E2A\u8282\u70B9\u76F4\u81F3\u7ED3\u675F\u3002",paraId:25,tocIndex:3},{value:"\u5931\u8D25",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u7531\u4E8E\u672A\u6EE1\u8DB3\u8282\u70B9\u914D\u7F6E\uFF0C\u5BFC\u81F4\u5931\u8D25\u3002",paraId:25,tocIndex:3},{value:"\u51FA\u9519",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u8282\u70B9\u9047\u5230\u672A\u6355\u83B7\u7684\u7A0B\u5E8F\u9519\u8BEF\uFF0C\u63D0\u524D\u7ED3\u675F\u3002",paraId:25,tocIndex:3},{value:"\u53D6\u6D88",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u7B49\u5F85\u4E2D\u7684\u8282\u70B9\u88AB\u6D41\u7A0B\u7BA1\u7406\u8005\u4ECE\u5916\u90E8\u53D6\u6D88\u6267\u884C\uFF0C\u63D0\u524D\u7ED3\u675F",paraId:25,tocIndex:3},{value:"\u62D2\u7EDD",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u5728\u4EBA\u5DE5\u5904\u7406\u7684\u8282\u70B9\u4E2D\uFF0C\u88AB\u4EBA\u5DE5\u62D2\u7EDD\u4E0D\u518D\u7EE7\u7EED\u540E\u7EED\u6D41\u7A0B",paraId:25,tocIndex:3},{value:"\u9664\u7B49\u5F85\u72B6\u6001\u5916\uFF0C\u5176\u4ED6\u72B6\u6001\u90FD\u662F\u8282\u70B9\u6267\u884C\u7684\u7EC8\u6001\uFF0C\u53EA\u6709\u7EC8\u6001\u662F\u201C\u5B8C\u6210\u201D\u7684\u72B6\u6001\uFF0C\u624D\u4F1A\u7EE7\u7EED\u6267\u884C\uFF0C\u5426\u5219\u90FD\u4F1A\u63D0\u524D\u7EC8\u6B62\u6574\u4E2A\u6D41\u7A0B\u7684\u6267\u884C\u3002\u5F53\u8282\u70B9\u5904\u5728\u5206\u652F\u6D41\u7A0B\u4E2D\u65F6\uFF08\u5E76\u884C\u5206\u652F\u3001\u6761\u4EF6\u5224\u65AD\u3001\u5FAA\u73AF\u7B49\uFF09\uFF0C\u8282\u70B9\u6267\u884C\u4EA7\u751F\u7684\u7EC8\u6001\u4F1A\u7531\u5F00\u542F\u5206\u652F\u7684\u8282\u70B9\u63A5\u7BA1\u5904\u7406\uFF0C\u5E76\u4EE5\u6B64\u7C7B\u63A8\u51B3\u5B9A\u6574\u4E2A\u6D41\u7A0B\u7684\u6D41\u8F6C\u3002",paraId:26,tocIndex:3},{value:"\u4F8B\u5982\u5F53\u6211\u4EEC\u4F7F\u7528\u4E86\u201C\u2018\u662F\u2019\u5219\u7EE7\u7EED\u201D\u6A21\u5F0F\u7684\u6761\u4EF6\u8282\u70B9\u65F6\uFF0C\u5F53\u6267\u884C\u65F6\u5982\u679C\u7ED3\u679C\u4E3A\u201C\u5426\u201D\uFF0C\u5219\u4F1A\u63D0\u524D\u7EC8\u6B62\u6574\u4E2A\u6D41\u7A0B\u7684\u6267\u884C\uFF0C\u5E76\u5DF2\u5931\u8D25\u72B6\u6001\u9000\u51FA\uFF0C\u4E0D\u518D\u6267\u884C\u540E\u7EED\u8282\u70B9\uFF0C\u5982\u4E0B\u56FE\u6240\u793A\uFF1A",paraId:27,tocIndex:3},{value:"\u6240\u6709\u975E\u201C\u5B8C\u6210\u201D\u7684\u7EC8\u6B62\u72B6\u6001\u90FD\u53EF\u4EE5\u88AB\u89C6\u4E3A\u5931\u8D25\uFF0C\u4F46\u5931\u8D25\u7684\u539F\u56E0\u4E0D\u540C\uFF0C\u53EF\u4EE5\u901A\u8FC7\u67E5\u770B\u8282\u70B9\u7684\u6267\u884C\u7ED3\u679C\u6765\u8FDB\u4E00\u6B65\u4E86\u89E3\u5931\u8D25\u7684\u539F\u56E0\u3002",paraId:28},{value:"\u5F53\u5DE5\u4F5C\u6D41\u7684\u89E6\u53D1\u8F83\u4E3A\u9891\u7E41\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u914D\u7F6E\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55\u6765\u51CF\u5C11\u5E72\u6270\uFF0C\u540C\u65F6\u4E5F\u5C06\u964D\u4F4E\u6570\u636E\u5E93\u7684\u5B58\u50A8\u538B\u529B\u3002",paraId:29,tocIndex:4},{value:"\u540C\u6837\u5728\u5DE5\u4F5C\u6D41\u7684\u65B0\u5EFA\u548C\u7F16\u8F91\u5F39\u7A97\u4E2D\u53EF\u4EE5\u914D\u7F6E\u5BF9\u5E94\u6D41\u7A0B\u662F\u5426\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55\uFF1A",paraId:30,tocIndex:4},{value:"\u81EA\u52A8\u5220\u9664\u53EF\u4EE5\u6839\u636E\u6267\u884C\u7ED3\u679C\u7684\u72B6\u6001\u6765\u8FDB\u884C\u914D\u7F6E\uFF0C\u5927\u90E8\u5206\u60C5\u51B5\u4E0B\uFF0C\u5EFA\u8BAE\u4EC5\u52FE\u9009\u201C\u5B8C\u6210\u201D\u72B6\u6001\uFF0C\u8FD9\u6837\u53EF\u4EE5\u4FDD\u7559\u6267\u884C\u5931\u8D25\u7684\u8BB0\u5F55\uFF0C\u4EE5\u4FBF\u540E\u7EED\u6392\u67E5\u95EE\u9898\u3002",paraId:31,tocIndex:4},{value:"\u5EFA\u8BAE\u5728\u8C03\u8BD5\u5DE5\u4F5C\u6D41\u65F6\u4E0D\u8981\u5F00\u542F\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55\uFF0C\u4EE5\u4FBF\u901A\u8FC7\u5386\u53F2\u8BB0\u5F55\u6765\u68C0\u67E5\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u903B\u8F91\u662F\u5426\u7B26\u5408\u9884\u671F\u3002",paraId:32,tocIndex:4},{value:"\u5220\u9664\u5DE5\u4F5C\u6D41\u7684\u5386\u53F2\u5E76\u4E0D\u4F1A\u51CF\u5C11\u5DE5\u4F5C\u6D41\u5DF2\u6267\u884C\u8FC7\u7684\u8BA1\u6570\u3002",paraId:33},{value:"\u5728\u5DF2\u914D\u7F6E\u7684\u5DE5\u4F5C\u6D41\u89E6\u53D1\u81F3\u5C11\u4E00\u6B21\u4EE5\u540E\uFF0C\u5982\u5E0C\u671B\u4FEE\u6539\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u6216\u5176\u4E2D\u7684\u8282\u70B9\uFF0C\u9700\u8981\u901A\u8FC7\u521B\u5EFA\u65B0\u7248\u672C\u540E\u518D\u4FEE\u6539\uFF0C\u8FD9\u6837\u540C\u65F6\u4E5F\u4FDD\u8BC1\u4E86\u5F53\u56DE\u987E\u5DF2\u89E6\u53D1\u8FC7\u7684\u5DE5\u4F5C\u6D41\u5386\u53F2\u6267\u884C\u8BB0\u5F55\u65F6\u4E0D\u53D7\u672A\u6765\u4FEE\u6539\u7684\u5F71\u54CD\u3002",paraId:34,tocIndex:5},{value:"\u5728\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u9875\u9762\uFF0C\u53EF\u4EE5\u5728\u53F3\u4E0A\u89D2\u7684\u7248\u672C\u83DC\u5355\u67E5\u770B\u5DF2\u6709\u7684\u5DE5\u4F5C\u6D41\u7248\u672C\uFF1A",paraId:35,tocIndex:5},{value:"\u5728\u5176\u53F3\u4FA7\u7684\u66F4\u591A\u64CD\u4F5C\uFF08\u201C\u2026\u201D\uFF09\u83DC\u5355\u4E2D\uFF0C\u53EF\u4EE5\u9009\u62E9\u57FA\u4E8E\u5F53\u524D\u67E5\u770B\u7684\u7248\u672C\u590D\u5236\u5230\u65B0\u7248\u672C\uFF1A",paraId:36,tocIndex:5},{value:"\u590D\u5236\u5230\u65B0\u7248\u672C\u4E4B\u540E\uFF0C\u70B9\u51FB\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\uFF0C\u5C06\u5BF9\u5E94\u7248\u672C\u5207\u6362\u5230\u542F\u7528\u72B6\u6001\u540E\uFF0C\u65B0\u7684\u5DE5\u4F5C\u6D41\u7248\u672C\u5C06\u4F1A\u751F\u6548\u3002",paraId:37,tocIndex:5},{value:"\u5982\u9700\u91CD\u65B0\u9009\u62E9\u65E7\u7248\u672C\uFF0C\u4ECE\u7248\u672C\u83DC\u5355\u4E2D\u5207\u6362\u540E\uFF0C\u518D\u6B21\u70B9\u51FB\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\u5207\u6362\u81F3\u542F\u7528\u72B6\u6001\u540E\uFF0C\u5F53\u524D\u67E5\u770B\u7684\u7248\u672C\u5C06\u751F\u6548\uFF0C\u540E\u7EED\u89E6\u53D1\u5C06\u6267\u884C\u5BF9\u5E94\u7248\u672C\u7684\u6D41\u7A0B\u3002",paraId:38,tocIndex:5},{value:"\u5F53\u9700\u8981\u505C\u7528\u5DE5\u4F5C\u6D41\u65F6\uFF0C\u70B9\u51FB\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\u5207\u6362\u81F3\u505C\u7528\u72B6\u6001\u540E\uFF0C\u8BE5\u5DE5\u4F5C\u6D41\u5C06\u4E0D\u518D\u4F1A\u88AB\u89E6\u53D1\u3002",paraId:39,tocIndex:5},{value:"\u4E0E\u5DE5\u4F5C\u6D41\u7BA1\u7406\u5217\u8868\u4E2D\u7684\u201C\u590D\u5236\u201D\u5DE5\u4F5C\u6D41\u4E0D\u540C\uFF0C\u201C\u590D\u5236\u5230\u65B0\u7248\u672C\u201D\u7684\u5DE5\u4F5C\u6D41\u4ECD\u4F1A\u5F52\u96C6\u5728\u540C\u4E00\u7EC4\u5DE5\u4F5C\u6D41\u4E2D\uFF0C\u53EA\u662F\u53EF\u4EE5\u901A\u8FC7\u7248\u672C\u533A\u5206\u3002\u4F46\u590D\u5236\u5DE5\u4F5C\u6D41\u5219\u4F1A\u88AB\u89C6\u4E3A\u4E00\u4E2A\u5168\u65B0\u7684\u5DE5\u4F5C\u6D41\uFF0C\u4E0E\u4E4B\u524D\u5DE5\u4F5C\u6D41\u7684\u7248\u672C\u65E0\u5173\uFF0C\u4E14\u6267\u884C\u6B21\u6570\u4E5F\u4F1A\u5F52\u96F6\u3002",paraId:40}],J$={},X$={title:"\u5BA1\u8BA1\u65E5\u5FD7",toc:"menu",filename:"docs/en-US/plugins/audit-logs/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},eG=[{id:"\u5BA1\u8BA1\u65E5\u5FD7",depth:1,title:"\u5BA1\u8BA1\u65E5\u5FD7"}],aG=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],tG={},nG={title:"Acknowledgements",toc:"menu",filename:"docs/en-US/welcome/community/thanks.md",lastUpdated:1732240239e3,description:"NocoBase uses excellent and proven open source products, to whom we express our sincere gratitude."},oG=[{id:"acknowledgements",depth:1,title:"Acknowledgements"}],rG=[{value:"NocoBase uses excellent and proven open source products, to whom we express our sincere gratitude.",paraId:0,tocIndex:0},{value:"Ant Design",paraId:1,tocIndex:0},{value:"Dnd Kit",paraId:1,tocIndex:0},{value:"Formily",paraId:1,tocIndex:0},{value:"I18next",paraId:1,tocIndex:0},{value:"Koa",paraId:1,tocIndex:0},{value:"React",paraId:1,tocIndex:0},{value:"Sequelize",paraId:1,tocIndex:0},{value:"UmiJS",paraId:1,tocIndex:0}],dG={},iG={title:"Why NocoBase",toc:"menu",filename:"docs/en-US/welcome/introduction/why.md",lastUpdated:1732240239e3,description:"NocoBase is open source under the AGPL-3.0 license, and can be used free of charge as long as you follow the license. Advanced features are provided through the commercial version, which also provides full source code and is privately deployed to keep data private and secure."},lG=[{id:"why-nocobase",depth:1,title:"Why NocoBase"},{id:"open-source-autonomous-and-controllable",depth:2,title:"Open source, autonomous and controllable"},{id:"strong-no-code-capability",depth:2,title:"Strong no-code capability"},{id:"high-scalability",depth:2,title:"High scalability"},{id:"integrate-with-existing-systems",depth:2,title:"Integrate with existing systems"},{id:"extremely-simple-and-lightweight",depth:2,title:"Extremely simple and lightweight"},{id:"pay-once-use-forever",depth:2,title:"Pay once, use forever"}],cG=[{value:"NocoBase is open source under the AGPL-3.0 license, and can be used free of charge as long as you follow the license. Advanced features are provided through the commercial version, which also provides full source code and is privately deployed to keep data private and secure.",paraId:0,tocIndex:1},{value:"NocoBase has three core concepts: collection, block, and action. By defining the data collections, to abstract the business; through the block to present the data; through the action to send the user's instructions to the server to complete the data interaction or change.",paraId:1,tocIndex:2},{value:"In the actual business, the ideal situation is to use no-code to meet 80% of the needs, the rest usually need to extend the development. NocoBase adopts the microkernel architecture, with a sound plugin system, all kinds of functions are extended in the form of plugins. NocoBase is based on Node.js and uses mainstream frameworks and technologies, including Koa, Sequelize, React and so on, which makes it extremely easy to expand.",paraId:2,tocIndex:3},{value:"Organizations usually have various systems and databases already in place, and NocoBase supports using third-party databases or APIs as data sources, as well as embedding NocoBase into third-party systems or embedding third-party systems into NocoBase.",paraId:3,tocIndex:4},{value:"NocoBase uses JavaScript/TypeScript technology stack, one person can complete the front-end and back-end development. It has low server requirements and can be deployed on a single low-configuration server.",paraId:4,tocIndex:5},{value:"NocoBase only charges for premium features. On top of the open source version, we offer commercial licenses, commercial services, and commercial plugins. Pay once and get lifetime licenses, as well as full source code for commercial plugins.",paraId:5,tocIndex:6}],sG={},uG={title:"v0.9.0\uFF1A\u5B57\u6BB5\u7684\u8BA1\u7B97\u516C\u5F0F\u63D2\u4EF6",toc:"menu",filename:"docs/en-US/welcome/release/formulas.md",lastUpdated:1732240239e3,description:"NocoBase \u76EE\u524D\u63D0\u4F9B\u4E86\u4E24\u79CD\u8BA1\u7B97\u516C\u5F0F\u63D2\u4EF6\uFF1A"},pG=[{id:"v090\u5B57\u6BB5\u7684\u8BA1\u7B97\u516C\u5F0F\u63D2\u4EF6",depth:1,title:"v0.9.0\uFF1A\u5B57\u6BB5\u7684\u8BA1\u7B97\u516C\u5F0F\u63D2\u4EF6"},{id:"math-formula",depth:2,title:"Math Formula"},{id:"excel-formula",depth:2,title:"Excel Formula"}],IG=[{value:"NocoBase \u76EE\u524D\u63D0\u4F9B\u4E86\u4E24\u79CD\u8BA1\u7B97\u516C\u5F0F\u63D2\u4EF6\uFF1A",paraId:0,tocIndex:0},{value:"@nocobase/plugin-math-formula-field",paraId:1,tocIndex:0},{value:" Math \u516C\u5F0F",paraId:1,tocIndex:0},{value:"@nocobase/plugin-excel-formula-field",paraId:1,tocIndex:0},{value:" Excel \u516C\u5F0F\uFF08\u611F\u8C22 ",paraId:1,tocIndex:0},{value:"azriel46d",paraId:1,tocIndex:0},{value:" \u8D21\u732E\uFF09",paraId:1,tocIndex:0},{value:"\u57FA\u4E8E ",paraId:2,tocIndex:1},{value:"Math.js",paraId:2,tocIndex:1},{value:" \u5B9E\u73B0\uFF0C\u5B83\u5177\u6709\u652F\u6301\u7B26\u53F7\u8BA1\u7B97\u7684\u7075\u6D3B\u8868\u8FBE\u5F0F\u89E3\u6790\u5668\uFF0C\u5927\u91CF\u5185\u7F6E\u51FD\u6570\u548C\u5E38\u91CF\uFF0C\u5E76\u63D0\u4F9B\u4E86\u96C6\u6210\u7684\u89E3\u51B3\u65B9\u6848\u6765\u5904\u7406\u4E0D\u540C\u7684\u6570\u636E\u7C7B\u578B\uFF0C\u4F8B\u5982\u6570\u5B57\uFF0C\u5927\u6570\uFF0C\u590D\u6570\uFF0C\u5206\u6570\uFF0C\u5355\u4F4D\u548C\u77E9\u9635\u3002",paraId:2,tocIndex:1},{value:`import { evaluate } from 'mathjs'; +`,paraId:13,tocIndex:1},{value:"\u5982\u679C\u662F\u591A\u7EF4\u6570\u7EC4\uFF08\u5982\u591A\u5BF9\u591A\u5173\u7CFB\u5B57\u6BB5\uFF09\uFF0C\u5C06\u4F1A\u5F97\u5230\u4E00\u4E2A\u5BF9\u5E94\u5B57\u6BB5\u88AB\u62CD\u5E73\u540E\u7684\u4E00\u7EF4\u6570\u7EC4\u3002",paraId:14,tocIndex:1},{value:"\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\uFF0C\u4F1A\u521B\u5EFA\u5BF9\u5E94\u7684\u6267\u884C\u8BA1\u5212\uFF0C\u4EE5\u8DDF\u8E2A\u6B64\u6B21\u4EFB\u52A1\u7684\u6267\u884C\u3002\u6BCF\u4E2A\u6267\u884C\u8BA1\u5212\u90FD\u6709\u4E00\u4E2A\u72B6\u6001\u503C\u7528\u4E8E\u8868\u793A\u5F53\u524D\u7684\u6267\u884C\u72B6\u6001\uFF0C\u8BE5\u72B6\u6001\u5728\u6267\u884C\u5386\u53F2\u7684\u5217\u8868\u548C\u8BE6\u60C5\u4E2D\u90FD\u53EF\u4EE5\u67E5\u770B\u5230\uFF1A",paraId:15,tocIndex:2},{value:"\u5F53\u4E3B\u6D41\u7A0B\u5206\u652F\u4E2D\u7684\u8282\u70B9\u5168\u90E8\u90FD\u4EE5\u201C\u5B8C\u6210\u201D\u72B6\u6001\u6267\u884C\u5230\u6D41\u7A0B\u7EC8\u70B9\u65F6\uFF0C\u6574\u4E2A\u6267\u884C\u8BA1\u5212\u5C06\u4EE5\u201C\u5B8C\u6210\u201D\u72B6\u6001\u7ED3\u675F\u3002\u5F53\u4E3B\u6D41\u7A0B\u5206\u652F\u4E2D\u7684\u8282\u70B9\u51FA\u73B0\u201C\u5931\u8D25\u201D\u3001\u201C\u51FA\u9519\u201D\u3001\u201C\u53D6\u6D88\u201D\u3001\u201C\u62D2\u7EDD\u201D\u7B49\u7EC8\u6001\u65F6\uFF0C\u6574\u4E2A\u6267\u884C\u8BA1\u5212\u5C06\u4EE5\u5BF9\u5E94\u7684\u72B6\u6001",paraId:16,tocIndex:2},{value:"\u63D0\u524D\u7EC8\u6B62",paraId:16,tocIndex:2},{value:"\u3002\u5F53\u4E3B\u6D41\u7A0B\u5206\u652F\u4E2D\u7684\u8282\u70B9\u51FA\u73B0\u201C\u7B49\u5F85\u201D\u72B6\u6001\u65F6\uFF0C\u6574\u4E2A\u6267\u884C\u8BA1\u5212\u5C06\u6682\u505C\u6267\u884C\uFF0C\u4F46\u4ECD\u663E\u793A\u201C\u6267\u884C\u4E2D\u201D\u7684\u72B6\u6001\uFF0C\u76F4\u5230\u7B49\u5F85\u7684\u8282\u70B9\u88AB\u6062\u590D\u540E\u7EE7\u7EED\u6267\u884C\u3002\u4E0D\u540C\u7684\u8282\u70B9\u7C7B\u578B\u5BF9\u7B49\u5F85\u72B6\u6001\u7684\u5904\u7406\u65B9\u5F0F\u4E0D\u540C\uFF0C\u6BD4\u5982\u4EBA\u5DE5\u8282\u70B9\u9700\u8981\u7B49\u5F85\u4EBA\u5DE5\u5904\u7406\uFF0C\u800C\u5EF6\u65F6\u8282\u70B9\u9700\u8981\u7B49\u5F85\u65F6\u95F4\u5230\u8FBE\u540E\u7EE7\u7EED\u6267\u884C\u3002",paraId:16,tocIndex:2},{value:"\u6267\u884C\u8BA1\u5212\u7684\u72B6\u6001\u5982\u4E0B\u8868\uFF1A",paraId:17,tocIndex:2},{value:"\u72B6\u6001",paraId:18,tocIndex:2},{value:"\u5BF9\u5E94\u4E3B\u6D41\u7A0B\u6700\u540E\u6267\u884C\u7684\u8282\u70B9\u72B6\u6001",paraId:18,tocIndex:2},{value:"\u542B\u4E49",paraId:18,tocIndex:2},{value:"\u961F\u5217\u4E2D",paraId:18,tocIndex:2},{value:"-",paraId:18,tocIndex:2},{value:"\u6D41\u7A0B\u5DF2\u89E6\u53D1\u5E76\u751F\u6210\u6267\u884C\u8BA1\u5212\uFF0C\u6392\u961F\u7B49\u5F85\u8C03\u5EA6\u5668\u5B89\u6392\u6267\u884C",paraId:18,tocIndex:2},{value:"\u8FDB\u884C\u4E2D",paraId:18,tocIndex:2},{value:"\u7B49\u5F85",paraId:18,tocIndex:2},{value:"\u8282\u70B9\u8981\u6C42\u6682\u505C\uFF0C\u7B49\u5F85\u8FDB\u4E00\u6B65\u8F93\u5165\u6216\u56DE\u8C03\u518D\u7EE7\u7EED",paraId:18,tocIndex:2},{value:"\u5B8C\u6210",paraId:18,tocIndex:2},{value:"\u5B8C\u6210",paraId:18,tocIndex:2},{value:"\u672A\u9047\u5230\u4EFB\u4F55\u95EE\u9898\uFF0C\u6240\u6709\u8282\u70B9\u6309\u9884\u671F\u9010\u4E2A\u6267\u884C\u5B8C\u6210\u3002",paraId:18,tocIndex:2},{value:"\u5931\u8D25",paraId:18,tocIndex:2},{value:"\u5931\u8D25",paraId:18,tocIndex:2},{value:"\u7531\u4E8E\u672A\u6EE1\u8DB3\u8282\u70B9\u914D\u7F6E\uFF0C\u5BFC\u81F4\u5931\u8D25\u3002",paraId:18,tocIndex:2},{value:"\u51FA\u9519",paraId:18,tocIndex:2},{value:"\u51FA\u9519",paraId:18,tocIndex:2},{value:"\u8282\u70B9\u9047\u5230\u672A\u6355\u83B7\u7684\u7A0B\u5E8F\u9519\u8BEF\uFF0C\u63D0\u524D\u7ED3\u675F\u3002",paraId:18,tocIndex:2},{value:"\u53D6\u6D88",paraId:18,tocIndex:2},{value:"\u53D6\u6D88",paraId:18,tocIndex:2},{value:"\u7B49\u5F85\u4E2D\u7684\u8282\u70B9\u88AB\u6D41\u7A0B\u7BA1\u7406\u8005\u4ECE\u5916\u90E8\u53D6\u6D88\u6267\u884C\uFF0C\u63D0\u524D\u7ED3\u675F",paraId:18,tocIndex:2},{value:"\u62D2\u7EDD",paraId:18,tocIndex:2},{value:"\u62D2\u7EDD",paraId:18,tocIndex:2},{value:"\u5728\u4EBA\u5DE5\u5904\u7406\u7684\u8282\u70B9\u4E2D\uFF0C\u88AB\u4EBA\u5DE5\u62D2\u7EDD\u4E0D\u518D\u7EE7\u7EED\u540E\u7EED\u6D41\u7A0B",paraId:18,tocIndex:2},{value:"\u5728 ",paraId:19,tocIndex:2},{value:"\u5FEB\u901F\u5F00\u59CB",paraId:20,tocIndex:2},{value:" \u7684\u4F8B\u5B50\u4E2D\uFF0C\u6211\u4EEC\u5DF2\u7ECF\u77E5\u9053\u67E5\u770B\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5386\u53F2\u7684\u8BE6\u60C5\u53EF\u4EE5\u68C0\u67E5\u6267\u884C\u8FC7\u7A0B\u4E2D\u6240\u6709\u8282\u70B9\u7684\u6267\u884C\u662F\u5426\u6B63\u5E38\uFF0C\u4EE5\u53CA\u6BCF\u4E2A\u5DF2\u6267\u884C\u7684\u8282\u70B9\u7684\u6267\u884C\u72B6\u6001\u548C\u7ED3\u679C\u6570\u636E\uFF0C\u5728\u4E00\u4E9B\u9AD8\u7EA7\u7684\u6D41\u7A0B\u548C\u8282\u70B9\u4E2D\uFF0C\u8282\u70B9\u7684\u7ED3\u679C\u8FD8\u53EF\u80FD\u6709\u591A\u4E2A\uFF0C\u4F8B\u5982\u5FAA\u73AF\u8282\u70B9\u7684\u7ED3\u679C\uFF1A",paraId:19,tocIndex:2},{value:"\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u88AB\u5E76\u53D1\u7684\u89E6\u53D1\uFF0C\u4F46\u6267\u884C\u662F\u9010\u4E2A\u6392\u961F\u6267\u884C\u7684\uFF0C\u5373\u4F7F\u540C\u65F6\u89E6\u53D1\u591A\u4E2A\u5DE5\u4F5C\u6D41\uFF0C\u4E5F\u4F1A\u4F9D\u6B21\u6267\u884C\uFF0C\u4E0D\u4F1A\u5E76\u884C\u6267\u884C\u3002\u6240\u4EE5\u51FA\u73B0\u201C\u961F\u5217\u4E2D\u201D\u7684\u60C5\u51B5\u65F6\uFF0C\u4EE3\u8868\u6709\u5176\u4ED6\u5DE5\u4F5C\u6D41\u6B63\u5728\u6267\u884C\uFF0C\u9700\u8981\u7B49\u5F85\u3002",paraId:21},{value:"\u201C\u8FDB\u884C\u4E2D\u201D\u7684\u72B6\u6001\u53EA\u4EE3\u8868\u8BE5\u6267\u884C\u8BA1\u5212\u5DF2\u7ECF\u5F00\u59CB\uFF0C\u4E14\u901A\u5E38\u7531\u4E8E\u5185\u90E8\u8282\u70B9\u7684\u7B49\u5F85\u72B6\u6001\u800C\u6682\u505C\uFF0C\u5E76\u4E0D\u4EE3\u8868\u8BE5\u6267\u884C\u8BA1\u5212\u62A2\u5360\u4E86\u961F\u5934\u7684\u6267\u884C\u8D44\u6E90\u3002\u6240\u4EE5\u5B58\u5728\u201C\u8FDB\u884C\u4E2D\u201D\u7684\u6267\u884C\u8BA1\u5212\u65F6\uFF0C\u5176\u4ED6\u201C\u961F\u5217\u4E2D\u201D\u7684\u6267\u884C\u8BA1\u5212\u4ECD\u53EF\u88AB\u8C03\u5EA6\u5F00\u59CB\u6267\u884C\u3002",paraId:22},{value:"\u6267\u884C\u8BA1\u5212\u7684\u72B6\u6001\u662F\u7531\u5176\u4E2D\u6BCF\u4E2A\u8282\u70B9\u7684\u6267\u884C\u51B3\u5B9A\u7684\uFF0C\u5728\u4E00\u6B21\u89E6\u53D1\u540E\u7684\u6267\u884C\u8BA1\u5212\u4E2D\uFF0C\u6BCF\u4E2A\u8282\u70B9\u6267\u884C\u540E\u4F1A\u4EA7\u751F\u4E00\u4E2A\u6267\u884C\u72B6\u6001\uFF0C\u72B6\u6001\u5219\u4F1A\u51B3\u5B9A\u540E\u7EED\u6D41\u7A0B\u662F\u5426\u7EE7\u7EED\u6267\u884C\u3002\u901A\u5E38\u60C5\u51B5\u4E0B\uFF0C\u8282\u70B9\u6267\u884C\u6210\u529F\u540E\uFF0C\u4F1A\u7EE7\u7EED\u6267\u884C\u4E0B\u4E00\u4E2A\u8282\u70B9\uFF0C\u76F4\u5230\u6240\u6709\u8282\u70B9\u4F9D\u6B21\u6267\u884C\u5B8C\u6210\uFF0C\u6216\u8005\u88AB\u4E2D\u65AD\u3002\u5F53\u9047\u5230\u6D41\u7A0B\u63A7\u5236\u76F8\u5173\u8282\u70B9\u65F6\uFF0C\u5982\u5206\u652F\u3001\u5FAA\u73AF\u3001\u5E76\u884C\u3001\u5EF6\u65F6\u7B49\uFF0C\u4F1A\u6839\u636E\u8282\u70B9\u914D\u7F6E\u7684\u6761\u4EF6\uFF0C\u4EE5\u53CA\u8FD0\u884C\u65F6\u7684\u4E0A\u4E0B\u6587\u6570\u636E\uFF0C\u51B3\u5B9A\u4E0B\u4E00\u4E2A\u8282\u70B9\u7684\u6267\u884C\u6D41\u5411\u3002",paraId:23,tocIndex:3},{value:"\u6BCF\u4E2A\u8282\u70B9\u6267\u884C\u540E\u53EF\u80FD\u4EA7\u751F\u7684\u72B6\u6001\u5982\u4E0B\u8868\uFF1A",paraId:24,tocIndex:3},{value:"\u72B6\u6001",paraId:25,tocIndex:3},{value:"\u662F\u5426\u662F\u7EC8\u6001",paraId:25,tocIndex:3},{value:"\u662F\u5426\u63D0\u524D\u7EC8\u6B62",paraId:25,tocIndex:3},{value:"\u542B\u4E49",paraId:25,tocIndex:3},{value:"\u7B49\u5F85",paraId:25,tocIndex:3},{value:"\u5426",paraId:25,tocIndex:3},{value:"\u5426",paraId:25,tocIndex:3},{value:"\u8282\u70B9\u8981\u6C42\u6682\u505C\uFF0C\u7B49\u5F85\u8FDB\u4E00\u6B65\u8F93\u5165\u6216\u56DE\u8C03\u518D\u7EE7\u7EED",paraId:25,tocIndex:3},{value:"\u5B8C\u6210",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u5426",paraId:25,tocIndex:3},{value:"\u672A\u9047\u5230\u4EFB\u4F55\u95EE\u9898\uFF0C\u6267\u884C\u6210\u529F\uFF0C\u7EE7\u7EED\u6267\u884C\u4E0B\u4E00\u4E2A\u8282\u70B9\u76F4\u81F3\u7ED3\u675F\u3002",paraId:25,tocIndex:3},{value:"\u5931\u8D25",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u7531\u4E8E\u672A\u6EE1\u8DB3\u8282\u70B9\u914D\u7F6E\uFF0C\u5BFC\u81F4\u5931\u8D25\u3002",paraId:25,tocIndex:3},{value:"\u51FA\u9519",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u8282\u70B9\u9047\u5230\u672A\u6355\u83B7\u7684\u7A0B\u5E8F\u9519\u8BEF\uFF0C\u63D0\u524D\u7ED3\u675F\u3002",paraId:25,tocIndex:3},{value:"\u53D6\u6D88",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u7B49\u5F85\u4E2D\u7684\u8282\u70B9\u88AB\u6D41\u7A0B\u7BA1\u7406\u8005\u4ECE\u5916\u90E8\u53D6\u6D88\u6267\u884C\uFF0C\u63D0\u524D\u7ED3\u675F",paraId:25,tocIndex:3},{value:"\u62D2\u7EDD",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u662F",paraId:25,tocIndex:3},{value:"\u5728\u4EBA\u5DE5\u5904\u7406\u7684\u8282\u70B9\u4E2D\uFF0C\u88AB\u4EBA\u5DE5\u62D2\u7EDD\u4E0D\u518D\u7EE7\u7EED\u540E\u7EED\u6D41\u7A0B",paraId:25,tocIndex:3},{value:"\u9664\u7B49\u5F85\u72B6\u6001\u5916\uFF0C\u5176\u4ED6\u72B6\u6001\u90FD\u662F\u8282\u70B9\u6267\u884C\u7684\u7EC8\u6001\uFF0C\u53EA\u6709\u7EC8\u6001\u662F\u201C\u5B8C\u6210\u201D\u7684\u72B6\u6001\uFF0C\u624D\u4F1A\u7EE7\u7EED\u6267\u884C\uFF0C\u5426\u5219\u90FD\u4F1A\u63D0\u524D\u7EC8\u6B62\u6574\u4E2A\u6D41\u7A0B\u7684\u6267\u884C\u3002\u5F53\u8282\u70B9\u5904\u5728\u5206\u652F\u6D41\u7A0B\u4E2D\u65F6\uFF08\u5E76\u884C\u5206\u652F\u3001\u6761\u4EF6\u5224\u65AD\u3001\u5FAA\u73AF\u7B49\uFF09\uFF0C\u8282\u70B9\u6267\u884C\u4EA7\u751F\u7684\u7EC8\u6001\u4F1A\u7531\u5F00\u542F\u5206\u652F\u7684\u8282\u70B9\u63A5\u7BA1\u5904\u7406\uFF0C\u5E76\u4EE5\u6B64\u7C7B\u63A8\u51B3\u5B9A\u6574\u4E2A\u6D41\u7A0B\u7684\u6D41\u8F6C\u3002",paraId:26,tocIndex:3},{value:"\u4F8B\u5982\u5F53\u6211\u4EEC\u4F7F\u7528\u4E86\u201C\u2018\u662F\u2019\u5219\u7EE7\u7EED\u201D\u6A21\u5F0F\u7684\u6761\u4EF6\u8282\u70B9\u65F6\uFF0C\u5F53\u6267\u884C\u65F6\u5982\u679C\u7ED3\u679C\u4E3A\u201C\u5426\u201D\uFF0C\u5219\u4F1A\u63D0\u524D\u7EC8\u6B62\u6574\u4E2A\u6D41\u7A0B\u7684\u6267\u884C\uFF0C\u5E76\u5DF2\u5931\u8D25\u72B6\u6001\u9000\u51FA\uFF0C\u4E0D\u518D\u6267\u884C\u540E\u7EED\u8282\u70B9\uFF0C\u5982\u4E0B\u56FE\u6240\u793A\uFF1A",paraId:27,tocIndex:3},{value:"\u6240\u6709\u975E\u201C\u5B8C\u6210\u201D\u7684\u7EC8\u6B62\u72B6\u6001\u90FD\u53EF\u4EE5\u88AB\u89C6\u4E3A\u5931\u8D25\uFF0C\u4F46\u5931\u8D25\u7684\u539F\u56E0\u4E0D\u540C\uFF0C\u53EF\u4EE5\u901A\u8FC7\u67E5\u770B\u8282\u70B9\u7684\u6267\u884C\u7ED3\u679C\u6765\u8FDB\u4E00\u6B65\u4E86\u89E3\u5931\u8D25\u7684\u539F\u56E0\u3002",paraId:28},{value:"\u5F53\u5DE5\u4F5C\u6D41\u7684\u89E6\u53D1\u8F83\u4E3A\u9891\u7E41\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u914D\u7F6E\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55\u6765\u51CF\u5C11\u5E72\u6270\uFF0C\u540C\u65F6\u4E5F\u5C06\u964D\u4F4E\u6570\u636E\u5E93\u7684\u5B58\u50A8\u538B\u529B\u3002",paraId:29,tocIndex:4},{value:"\u540C\u6837\u5728\u5DE5\u4F5C\u6D41\u7684\u65B0\u5EFA\u548C\u7F16\u8F91\u5F39\u7A97\u4E2D\u53EF\u4EE5\u914D\u7F6E\u5BF9\u5E94\u6D41\u7A0B\u662F\u5426\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55\uFF1A",paraId:30,tocIndex:4},{value:"\u81EA\u52A8\u5220\u9664\u53EF\u4EE5\u6839\u636E\u6267\u884C\u7ED3\u679C\u7684\u72B6\u6001\u6765\u8FDB\u884C\u914D\u7F6E\uFF0C\u5927\u90E8\u5206\u60C5\u51B5\u4E0B\uFF0C\u5EFA\u8BAE\u4EC5\u52FE\u9009\u201C\u5B8C\u6210\u201D\u72B6\u6001\uFF0C\u8FD9\u6837\u53EF\u4EE5\u4FDD\u7559\u6267\u884C\u5931\u8D25\u7684\u8BB0\u5F55\uFF0C\u4EE5\u4FBF\u540E\u7EED\u6392\u67E5\u95EE\u9898\u3002",paraId:31,tocIndex:4},{value:"\u5EFA\u8BAE\u5728\u8C03\u8BD5\u5DE5\u4F5C\u6D41\u65F6\u4E0D\u8981\u5F00\u542F\u81EA\u52A8\u5220\u9664\u5386\u53F2\u8BB0\u5F55\uFF0C\u4EE5\u4FBF\u901A\u8FC7\u5386\u53F2\u8BB0\u5F55\u6765\u68C0\u67E5\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u903B\u8F91\u662F\u5426\u7B26\u5408\u9884\u671F\u3002",paraId:32,tocIndex:4},{value:"\u5220\u9664\u5DE5\u4F5C\u6D41\u7684\u5386\u53F2\u5E76\u4E0D\u4F1A\u51CF\u5C11\u5DE5\u4F5C\u6D41\u5DF2\u6267\u884C\u8FC7\u7684\u8BA1\u6570\u3002",paraId:33},{value:"\u5728\u5DF2\u914D\u7F6E\u7684\u5DE5\u4F5C\u6D41\u89E6\u53D1\u81F3\u5C11\u4E00\u6B21\u4EE5\u540E\uFF0C\u5982\u5E0C\u671B\u4FEE\u6539\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u6216\u5176\u4E2D\u7684\u8282\u70B9\uFF0C\u9700\u8981\u901A\u8FC7\u521B\u5EFA\u65B0\u7248\u672C\u540E\u518D\u4FEE\u6539\uFF0C\u8FD9\u6837\u540C\u65F6\u4E5F\u4FDD\u8BC1\u4E86\u5F53\u56DE\u987E\u5DF2\u89E6\u53D1\u8FC7\u7684\u5DE5\u4F5C\u6D41\u5386\u53F2\u6267\u884C\u8BB0\u5F55\u65F6\u4E0D\u53D7\u672A\u6765\u4FEE\u6539\u7684\u5F71\u54CD\u3002",paraId:34,tocIndex:5},{value:"\u5728\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u9875\u9762\uFF0C\u53EF\u4EE5\u5728\u53F3\u4E0A\u89D2\u7684\u7248\u672C\u83DC\u5355\u67E5\u770B\u5DF2\u6709\u7684\u5DE5\u4F5C\u6D41\u7248\u672C\uFF1A",paraId:35,tocIndex:5},{value:"\u5728\u5176\u53F3\u4FA7\u7684\u66F4\u591A\u64CD\u4F5C\uFF08\u201C\u2026\u201D\uFF09\u83DC\u5355\u4E2D\uFF0C\u53EF\u4EE5\u9009\u62E9\u57FA\u4E8E\u5F53\u524D\u67E5\u770B\u7684\u7248\u672C\u590D\u5236\u5230\u65B0\u7248\u672C\uFF1A",paraId:36,tocIndex:5},{value:"\u590D\u5236\u5230\u65B0\u7248\u672C\u4E4B\u540E\uFF0C\u70B9\u51FB\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\uFF0C\u5C06\u5BF9\u5E94\u7248\u672C\u5207\u6362\u5230\u542F\u7528\u72B6\u6001\u540E\uFF0C\u65B0\u7684\u5DE5\u4F5C\u6D41\u7248\u672C\u5C06\u4F1A\u751F\u6548\u3002",paraId:37,tocIndex:5},{value:"\u5982\u9700\u91CD\u65B0\u9009\u62E9\u65E7\u7248\u672C\uFF0C\u4ECE\u7248\u672C\u83DC\u5355\u4E2D\u5207\u6362\u540E\uFF0C\u518D\u6B21\u70B9\u51FB\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\u5207\u6362\u81F3\u542F\u7528\u72B6\u6001\u540E\uFF0C\u5F53\u524D\u67E5\u770B\u7684\u7248\u672C\u5C06\u751F\u6548\uFF0C\u540E\u7EED\u89E6\u53D1\u5C06\u6267\u884C\u5BF9\u5E94\u7248\u672C\u7684\u6D41\u7A0B\u3002",paraId:38,tocIndex:5},{value:"\u5F53\u9700\u8981\u505C\u7528\u5DE5\u4F5C\u6D41\u65F6\uFF0C\u70B9\u51FB\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\u5207\u6362\u81F3\u505C\u7528\u72B6\u6001\u540E\uFF0C\u8BE5\u5DE5\u4F5C\u6D41\u5C06\u4E0D\u518D\u4F1A\u88AB\u89E6\u53D1\u3002",paraId:39,tocIndex:5},{value:"\u4E0E\u5DE5\u4F5C\u6D41\u7BA1\u7406\u5217\u8868\u4E2D\u7684\u201C\u590D\u5236\u201D\u5DE5\u4F5C\u6D41\u4E0D\u540C\uFF0C\u201C\u590D\u5236\u5230\u65B0\u7248\u672C\u201D\u7684\u5DE5\u4F5C\u6D41\u4ECD\u4F1A\u5F52\u96C6\u5728\u540C\u4E00\u7EC4\u5DE5\u4F5C\u6D41\u4E2D\uFF0C\u53EA\u662F\u53EF\u4EE5\u901A\u8FC7\u7248\u672C\u533A\u5206\u3002\u4F46\u590D\u5236\u5DE5\u4F5C\u6D41\u5219\u4F1A\u88AB\u89C6\u4E3A\u4E00\u4E2A\u5168\u65B0\u7684\u5DE5\u4F5C\u6D41\uFF0C\u4E0E\u4E4B\u524D\u5DE5\u4F5C\u6D41\u7684\u7248\u672C\u65E0\u5173\uFF0C\u4E14\u6267\u884C\u6B21\u6570\u4E5F\u4F1A\u5F52\u96F6\u3002",paraId:40}],J$={},X$={title:"\u5BA1\u8BA1\u65E5\u5FD7",toc:"menu",filename:"docs/en-US/plugins/audit-logs/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},eG=[{id:"\u5BA1\u8BA1\u65E5\u5FD7",depth:1,title:"\u5BA1\u8BA1\u65E5\u5FD7"}],aG=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],tG={},nG={title:"Acknowledgements",toc:"menu",filename:"docs/en-US/welcome/community/thanks.md",lastUpdated:173254844e4,description:"NocoBase uses excellent and proven open source products, to whom we express our sincere gratitude."},oG=[{id:"acknowledgements",depth:1,title:"Acknowledgements"}],rG=[{value:"NocoBase uses excellent and proven open source products, to whom we express our sincere gratitude.",paraId:0,tocIndex:0},{value:"Ant Design",paraId:1,tocIndex:0},{value:"Dnd Kit",paraId:1,tocIndex:0},{value:"Formily",paraId:1,tocIndex:0},{value:"I18next",paraId:1,tocIndex:0},{value:"Koa",paraId:1,tocIndex:0},{value:"React",paraId:1,tocIndex:0},{value:"Sequelize",paraId:1,tocIndex:0},{value:"UmiJS",paraId:1,tocIndex:0}],dG={},iG={title:"Why NocoBase",toc:"menu",filename:"docs/en-US/welcome/introduction/why.md",lastUpdated:173254844e4,description:"NocoBase is open source under the AGPL-3.0 license, and can be used free of charge as long as you follow the license. Advanced features are provided through the commercial version, which also provides full source code and is privately deployed to keep data private and secure."},lG=[{id:"why-nocobase",depth:1,title:"Why NocoBase"},{id:"open-source-autonomous-and-controllable",depth:2,title:"Open source, autonomous and controllable"},{id:"strong-no-code-capability",depth:2,title:"Strong no-code capability"},{id:"high-scalability",depth:2,title:"High scalability"},{id:"integrate-with-existing-systems",depth:2,title:"Integrate with existing systems"},{id:"extremely-simple-and-lightweight",depth:2,title:"Extremely simple and lightweight"},{id:"pay-once-use-forever",depth:2,title:"Pay once, use forever"}],cG=[{value:"NocoBase is open source under the AGPL-3.0 license, and can be used free of charge as long as you follow the license. Advanced features are provided through the commercial version, which also provides full source code and is privately deployed to keep data private and secure.",paraId:0,tocIndex:1},{value:"NocoBase has three core concepts: collection, block, and action. By defining the data collections, to abstract the business; through the block to present the data; through the action to send the user's instructions to the server to complete the data interaction or change.",paraId:1,tocIndex:2},{value:"In the actual business, the ideal situation is to use no-code to meet 80% of the needs, the rest usually need to extend the development. NocoBase adopts the microkernel architecture, with a sound plugin system, all kinds of functions are extended in the form of plugins. NocoBase is based on Node.js and uses mainstream frameworks and technologies, including Koa, Sequelize, React and so on, which makes it extremely easy to expand.",paraId:2,tocIndex:3},{value:"Organizations usually have various systems and databases already in place, and NocoBase supports using third-party databases or APIs as data sources, as well as embedding NocoBase into third-party systems or embedding third-party systems into NocoBase.",paraId:3,tocIndex:4},{value:"NocoBase uses JavaScript/TypeScript technology stack, one person can complete the front-end and back-end development. It has low server requirements and can be deployed on a single low-configuration server.",paraId:4,tocIndex:5},{value:"NocoBase only charges for premium features. On top of the open source version, we offer commercial licenses, commercial services, and commercial plugins. Pay once and get lifetime licenses, as well as full source code for commercial plugins.",paraId:5,tocIndex:6}],sG={},uG={title:"v0.9.0\uFF1A\u5B57\u6BB5\u7684\u8BA1\u7B97\u516C\u5F0F\u63D2\u4EF6",toc:"menu",filename:"docs/en-US/welcome/release/formulas.md",lastUpdated:173254844e4,description:"NocoBase \u76EE\u524D\u63D0\u4F9B\u4E86\u4E24\u79CD\u8BA1\u7B97\u516C\u5F0F\u63D2\u4EF6\uFF1A"},pG=[{id:"v090\u5B57\u6BB5\u7684\u8BA1\u7B97\u516C\u5F0F\u63D2\u4EF6",depth:1,title:"v0.9.0\uFF1A\u5B57\u6BB5\u7684\u8BA1\u7B97\u516C\u5F0F\u63D2\u4EF6"},{id:"math-formula",depth:2,title:"Math Formula"},{id:"excel-formula",depth:2,title:"Excel Formula"}],IG=[{value:"NocoBase \u76EE\u524D\u63D0\u4F9B\u4E86\u4E24\u79CD\u8BA1\u7B97\u516C\u5F0F\u63D2\u4EF6\uFF1A",paraId:0,tocIndex:0},{value:"@nocobase/plugin-math-formula-field",paraId:1,tocIndex:0},{value:" Math \u516C\u5F0F",paraId:1,tocIndex:0},{value:"@nocobase/plugin-excel-formula-field",paraId:1,tocIndex:0},{value:" Excel \u516C\u5F0F\uFF08\u611F\u8C22 ",paraId:1,tocIndex:0},{value:"azriel46d",paraId:1,tocIndex:0},{value:" \u8D21\u732E\uFF09",paraId:1,tocIndex:0},{value:"\u57FA\u4E8E ",paraId:2,tocIndex:1},{value:"Math.js",paraId:2,tocIndex:1},{value:" \u5B9E\u73B0\uFF0C\u5B83\u5177\u6709\u652F\u6301\u7B26\u53F7\u8BA1\u7B97\u7684\u7075\u6D3B\u8868\u8FBE\u5F0F\u89E3\u6790\u5668\uFF0C\u5927\u91CF\u5185\u7F6E\u51FD\u6570\u548C\u5E38\u91CF\uFF0C\u5E76\u63D0\u4F9B\u4E86\u96C6\u6210\u7684\u89E3\u51B3\u65B9\u6848\u6765\u5904\u7406\u4E0D\u540C\u7684\u6570\u636E\u7C7B\u578B\uFF0C\u4F8B\u5982\u6570\u5B57\uFF0C\u5927\u6570\uFF0C\u590D\u6570\uFF0C\u5206\u6570\uFF0C\u5355\u4F4D\u548C\u77E9\u9635\u3002",paraId:2,tocIndex:1},{value:`import { evaluate } from 'mathjs'; // expressions evaluate('1.2 * (2 + 4.5)'); // 7.8 evaluate('12.7 cm to inch'); // 5 inch @@ -16009,7 +16062,7 @@ evaluate('9 / 3 + 2i'); // 3 + 2i evaluate('det([-1, 2; 3, 1])'); // -7 `,paraId:3,tocIndex:1},{value:"\u57FA\u4E8E ",paraId:4,tocIndex:2},{value:"Formula.js",paraId:4,tocIndex:2},{value:" \u5B9E\u73B0\uFF0C\u8BE6\u7EC6\u7528\u6CD5\u53C2\u8003 ",paraId:4,tocIndex:2},{value:"Formula.js functions",paraId:4,tocIndex:2},{value:"\u3002",paraId:4,tocIndex:2},{value:`SUM(-5, 15, 32); // 42 IF(true, 'Hello!', 'Goodbye!'); // Hello! -`,paraId:5,tocIndex:2}],_G={},vG={title:"v0.9.0: \u6570\u636E\u8868\u7EE7\u627F",toc:"menu",filename:"docs/en-US/welcome/release/inherits.md",lastUpdated:1732240239e3,description:"\u6570\u636E\u8868\u7EE7\u627F\u57FA\u4E8E PostgreSQL \u7684 INHERITS \u8BED\u6CD5 \u5B9E\u73B0\uFF0C\u4EC5\u9650\u4E8E PostgreSQL \u6570\u636E\u5E93\u5B89\u88C5\u7684 NocoBase \u65F6\u624D\u4F1A\u63D0\u4F9B\u3002"},mG=[{id:"v090-\u6570\u636E\u8868\u7EE7\u627F",depth:1,title:"v0.9.0: \u6570\u636E\u8868\u7EE7\u627F"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u914D\u7F6E\u6570\u636E\u8868\u7EE7\u627F",depth:2,title:"\u914D\u7F6E\u6570\u636E\u8868\u7EE7\u627F"},{id:"\u6570\u636E\u8868\u5B57\u6BB5\u5217\u8868",depth:2,title:"\u6570\u636E\u8868\u5B57\u6BB5\u5217\u8868"},{id:"\u7236\u8868\u7684\u5B50\u8868\u533A\u5757",depth:2,title:"\u7236\u8868\u7684\u5B50\u8868\u533A\u5757"},{id:"\u65B0\u589E\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5\u7684\u914D\u7F6E",depth:2,title:"\u65B0\u589E\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5\u7684\u914D\u7F6E"}],hG=[{value:"\u6570\u636E\u8868\u7EE7\u627F\u57FA\u4E8E ",paraId:0,tocIndex:0},{value:"PostgreSQL \u7684 INHERITS \u8BED\u6CD5",paraId:0,tocIndex:0},{value:" \u5B9E\u73B0\uFF0C\u4EC5\u9650\u4E8E PostgreSQL \u6570\u636E\u5E93\u5B89\u88C5\u7684 NocoBase \u65F6\u624D\u4F1A\u63D0\u4F9B\u3002",paraId:0,tocIndex:0},{value:"\u6211\u4EEC\u4ECE\u4E00\u4E2A\u4F8B\u5B50\u5F00\u59CB\uFF0C\u5047\u8BBE\u8981\u505A\u4E00\u4E2A\u6559\u5B66\u7CFB\u7EDF\uFF0C\u6709\u4E09\u7C7B\u7528\u6237\uFF1A\u5B66\u751F\u3001\u5BB6\u957F\u548C\u8001\u5E08\u3002",paraId:1,tocIndex:1},{value:"\u5982\u679C\u6CA1\u6709\u7EE7\u627F\uFF0C\u8981\u5206\u522B\u4E3A\u4E09\u7C7B\u7528\u6237\u5EFA\u8868\uFF1A",paraId:2,tocIndex:1},{value:"\u5B66\u751F\uFF1A\u59D3\u540D\u3001\u5E74\u9F84\u3001\u6027\u522B\u3001\u8EAB\u4EFD\u8BC1",paraId:3,tocIndex:1},{value:"\u5BB6\u957F\uFF1A\u59D3\u540D\u3001\u5E74\u9F84\u3001\u6027\u522B\u3001\u804C\u4E1A\u3001\u5B66\u5386",paraId:3,tocIndex:1},{value:"\u8001\u5E08\uFF1A\u59D3\u540D\u3001\u5E74\u9F84\u3001\u6027\u522B\u3001\u6559\u9F84\u3001\u5DF2\u5A5A",paraId:3,tocIndex:1},{value:"\u6709\u4E86\u6570\u636E\u8868\u7EE7\u627F\u4E4B\u540E\uFF0C\u5171\u540C\u7684\u4FE1\u606F\u5C31\u53EF\u4EE5\u63D0\u70BC\u51FA\u6765\uFF1A",paraId:4,tocIndex:1},{value:"\u7528\u6237\uFF1A\u59D3\u540D\u3001\u5E74\u9F84\u3001\u6027\u522B",paraId:5,tocIndex:1},{value:"\u5B66\u751F\uFF1A\u8EAB\u4EFD\u8BC1",paraId:5,tocIndex:1},{value:"\u5BB6\u957F\uFF1A\u804C\u4E1A\u3001\u5B66\u5386",paraId:5,tocIndex:1},{value:"\u8001\u5E08\uFF1A\u6559\u9F84\u3001\u5DF2\u5A5A",paraId:5,tocIndex:1},{value:"ER \u56FE\u5982\u4E0B\uFF1A",paraId:6,tocIndex:1},{value:"\u6CE8\uFF1A\u5B50\u8868 ID \u548C\u7236\u8868 ID \u5171\u4EAB\u5E8F\u5217",paraId:7,tocIndex:1},{value:"Inherits \u5B57\u6BB5\u9009\u62E9\u9700\u8981\u7EE7\u627F\u7684\u6570\u636E\u8868",paraId:8,tocIndex:2},{value:"\u901A\u8FC7\u4EE3\u7801\u914D\u7F6E\u5982\u4E0B\uFF1A",paraId:9,tocIndex:2},{value:`db.collection({ +`,paraId:5,tocIndex:2}],_G={},vG={title:"v0.9.0: \u6570\u636E\u8868\u7EE7\u627F",toc:"menu",filename:"docs/en-US/welcome/release/inherits.md",lastUpdated:173254844e4,description:"\u6570\u636E\u8868\u7EE7\u627F\u57FA\u4E8E PostgreSQL \u7684 INHERITS \u8BED\u6CD5 \u5B9E\u73B0\uFF0C\u4EC5\u9650\u4E8E PostgreSQL \u6570\u636E\u5E93\u5B89\u88C5\u7684 NocoBase \u65F6\u624D\u4F1A\u63D0\u4F9B\u3002"},mG=[{id:"v090-\u6570\u636E\u8868\u7EE7\u627F",depth:1,title:"v0.9.0: \u6570\u636E\u8868\u7EE7\u627F"},{id:"\u793A\u4F8B",depth:2,title:"\u793A\u4F8B"},{id:"\u914D\u7F6E\u6570\u636E\u8868\u7EE7\u627F",depth:2,title:"\u914D\u7F6E\u6570\u636E\u8868\u7EE7\u627F"},{id:"\u6570\u636E\u8868\u5B57\u6BB5\u5217\u8868",depth:2,title:"\u6570\u636E\u8868\u5B57\u6BB5\u5217\u8868"},{id:"\u7236\u8868\u7684\u5B50\u8868\u533A\u5757",depth:2,title:"\u7236\u8868\u7684\u5B50\u8868\u533A\u5757"},{id:"\u65B0\u589E\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5\u7684\u914D\u7F6E",depth:2,title:"\u65B0\u589E\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5\u7684\u914D\u7F6E"}],hG=[{value:"\u6570\u636E\u8868\u7EE7\u627F\u57FA\u4E8E ",paraId:0,tocIndex:0},{value:"PostgreSQL \u7684 INHERITS \u8BED\u6CD5",paraId:0,tocIndex:0},{value:" \u5B9E\u73B0\uFF0C\u4EC5\u9650\u4E8E PostgreSQL \u6570\u636E\u5E93\u5B89\u88C5\u7684 NocoBase \u65F6\u624D\u4F1A\u63D0\u4F9B\u3002",paraId:0,tocIndex:0},{value:"\u6211\u4EEC\u4ECE\u4E00\u4E2A\u4F8B\u5B50\u5F00\u59CB\uFF0C\u5047\u8BBE\u8981\u505A\u4E00\u4E2A\u6559\u5B66\u7CFB\u7EDF\uFF0C\u6709\u4E09\u7C7B\u7528\u6237\uFF1A\u5B66\u751F\u3001\u5BB6\u957F\u548C\u8001\u5E08\u3002",paraId:1,tocIndex:1},{value:"\u5982\u679C\u6CA1\u6709\u7EE7\u627F\uFF0C\u8981\u5206\u522B\u4E3A\u4E09\u7C7B\u7528\u6237\u5EFA\u8868\uFF1A",paraId:2,tocIndex:1},{value:"\u5B66\u751F\uFF1A\u59D3\u540D\u3001\u5E74\u9F84\u3001\u6027\u522B\u3001\u8EAB\u4EFD\u8BC1",paraId:3,tocIndex:1},{value:"\u5BB6\u957F\uFF1A\u59D3\u540D\u3001\u5E74\u9F84\u3001\u6027\u522B\u3001\u804C\u4E1A\u3001\u5B66\u5386",paraId:3,tocIndex:1},{value:"\u8001\u5E08\uFF1A\u59D3\u540D\u3001\u5E74\u9F84\u3001\u6027\u522B\u3001\u6559\u9F84\u3001\u5DF2\u5A5A",paraId:3,tocIndex:1},{value:"\u6709\u4E86\u6570\u636E\u8868\u7EE7\u627F\u4E4B\u540E\uFF0C\u5171\u540C\u7684\u4FE1\u606F\u5C31\u53EF\u4EE5\u63D0\u70BC\u51FA\u6765\uFF1A",paraId:4,tocIndex:1},{value:"\u7528\u6237\uFF1A\u59D3\u540D\u3001\u5E74\u9F84\u3001\u6027\u522B",paraId:5,tocIndex:1},{value:"\u5B66\u751F\uFF1A\u8EAB\u4EFD\u8BC1",paraId:5,tocIndex:1},{value:"\u5BB6\u957F\uFF1A\u804C\u4E1A\u3001\u5B66\u5386",paraId:5,tocIndex:1},{value:"\u8001\u5E08\uFF1A\u6559\u9F84\u3001\u5DF2\u5A5A",paraId:5,tocIndex:1},{value:"ER \u56FE\u5982\u4E0B\uFF1A",paraId:6,tocIndex:1},{value:"\u6CE8\uFF1A\u5B50\u8868 ID \u548C\u7236\u8868 ID \u5171\u4EAB\u5E8F\u5217",paraId:7,tocIndex:1},{value:"Inherits \u5B57\u6BB5\u9009\u62E9\u9700\u8981\u7EE7\u627F\u7684\u6570\u636E\u8868",paraId:8,tocIndex:2},{value:"\u901A\u8FC7\u4EE3\u7801\u914D\u7F6E\u5982\u4E0B\uFF1A",paraId:9,tocIndex:2},{value:`db.collection({ name: 'users', }); @@ -16017,7 +16070,7 @@ db.collection({ name: 'students', inherits: 'users', }); -`,paraId:10,tocIndex:2},{value:"\u6CE8\u610F\uFF1A",paraId:11,tocIndex:2},{value:"\u7EE7\u627F\u7684\u8868\u5E76\u4E0D\u80FD\u968F\u610F\u9009\u62E9\uFF0C\u4E3B\u952E\u5FC5\u987B\u662F\u552F\u4E00\u5E8F\u5217\uFF0C\u6BD4\u5982 uuid \u6216\u8005\u6240\u6709\u7EE7\u627F\u7EBF\u8DEF\u4E0A\u7684\u8868\u7684 id \u81EA\u589E\u5E8F\u5217\u90FD\u7528\u540C\u4E00\u4E2A",paraId:12,tocIndex:2},{value:"Inherits \u53C2\u6570\u4E0D\u80FD\u88AB\u7F16\u8F91",paraId:12,tocIndex:2},{value:"\u5982\u679C\u6709\u7EE7\u627F\u5173\u7CFB\uFF0C\u88AB\u7EE7\u627F\u7684\u7236\u8868\u4E0D\u80FD\u88AB\u5220\u9664",paraId:12,tocIndex:2},{value:"\u5B57\u6BB5\u5217\u8868\u91CC\u540C\u6B65\u663E\u793A\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5\uFF0C\u7236\u8868\u5B57\u6BB5\u4E0D\u53EF\u4EE5\u4FEE\u6539\uFF0C\u4F46\u53EF\u4EE5\u91CD\u5199\uFF08Override\uFF09",paraId:13,tocIndex:3},{value:"\u91CD\u5199\u7236\u8868\u5B57\u6BB5\u7684\u6CE8\u610F\u4E8B\u9879\uFF1A",paraId:14,tocIndex:3},{value:"\u5B50\u8868\u5B57\u6BB5\u6807\u8BC6\u4E0E\u7236\u8868\u5B57\u6BB5\u4E00\u6837\u65F6\u4E3A\u91CD\u5199",paraId:15,tocIndex:3},{value:"\u91CD\u5199\u5B57\u6BB5\u7684\u7C7B\u578B\u5FC5\u987B\u4FDD\u6301\u4E00\u81F4",paraId:15,tocIndex:3},{value:"\u5173\u7CFB\u5B57\u6BB5\u9664\u4E86 target collection \u4EE5\u5916\u7684\u5176\u4ED6\u53C2\u6570\u9700\u8981\u4FDD\u6301\u4E00\u81F4",paraId:15,tocIndex:3},{value:"\u5728\u7236\u8868\u533A\u5757\u91CC\u53EF\u4EE5\u914D\u7F6E\u5B50\u8868\u7684\u533A\u5757",paraId:16,tocIndex:4},{value:"\u5F53\u6709\u7EE7\u627F\u7684\u7236\u8868\u65F6\uFF0C\u914D\u7F6E\u5B57\u6BB5\u65F6\uFF0C\u4F1A\u63D0\u4F9B\u4ECE\u7236\u8868\u7EE7\u627F\u7684\u5B57\u6BB5\u7684\u914D\u7F6E",paraId:17,tocIndex:5}],fG={},xG={title:"CacheManager",toc:"menu",filename:"docs/en-US/api/cache/cache-manager.md",lastUpdated:1732240239e3,description:"CacheManager is based on node-cache-manager and provides caching module management for NocoBase. The built-in cache types are:"},gG=[{id:"cachemanager",depth:1,title:"CacheManager"},{id:"overview",depth:2,title:"Overview"},{id:"concepts",depth:3,title:"Concepts"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"cachemanageroptions",depth:5,title:"CacheManagerOptions"},{id:"storeoptions",depth:5,title:"StoreOptions"},{id:"default-options",depth:4,title:"Default options"},{id:"registerstore",depth:3,title:"registerStore()"},{id:"signature-1",depth:4,title:"Signature"},{id:"createcache",depth:3,title:"createCache()"},{id:"signature-2",depth:4,title:"Signature"},{id:"details-1",depth:4,title:"Details"},{id:"options",depth:5,title:"options"}],bG=[{value:"CacheManager is based on ",paraId:0,tocIndex:1},{value:"node-cache-manager",paraId:0,tocIndex:1},{value:" and provides caching module management for NocoBase. The built-in cache types are:",paraId:0,tocIndex:1},{value:"memory",paraId:1,tocIndex:1},{value:": Provided by the default lru-cache of node-cache-manager.",paraId:1,tocIndex:1},{value:"redis",paraId:1,tocIndex:1},{value:": Supported by node-cache-manager-redis-yet for Redis caching.",paraId:1,tocIndex:1},{value:"More types can be extended and registered through the API.",paraId:2,tocIndex:1},{value:"Store",paraId:3,tocIndex:2},{value:": Defines a caching method, including a factory method for creating caches and other related configurations. Each caching method has a unique identifier provided during registration. The two built-in caching methods correspond to the unique identifiers ",paraId:3,tocIndex:2},{value:"memory",paraId:3,tocIndex:2},{value:" and ",paraId:3,tocIndex:2},{value:"redis",paraId:3,tocIndex:2},{value:".",paraId:3,tocIndex:2},{value:"Store Factory Method",paraId:4,tocIndex:2},{value:": Provided by ",paraId:4,tocIndex:2},{value:"node-cache-manager",paraId:4,tocIndex:2},{value:" and related extension packages, used to create caches. Examples include ",paraId:4,tocIndex:2},{value:"memory",paraId:4,tocIndex:2},{value:" provided by ",paraId:4,tocIndex:2},{value:"node-cache-manager",paraId:4,tocIndex:2},{value:" by default, and ",paraId:4,tocIndex:2},{value:"redisStore",paraId:4,tocIndex:2},{value:" provided by ",paraId:4,tocIndex:2},{value:"node-cache-manager-redis-yet",paraId:4,tocIndex:2},{value:". In this context, the object to be provided corresponds to ",paraId:4,tocIndex:2},{value:"StoreOptions",paraId:5,tocIndex:2},{value:", which is the first parameter of the ",paraId:4,tocIndex:2},{value:"caching",paraId:4,tocIndex:2},{value:" method in ",paraId:4,tocIndex:2},{value:"node-cache-manager",paraId:4,tocIndex:2},{value:".",paraId:4,tocIndex:2},{value:"Cache",paraId:6,tocIndex:2},{value:": A class encapsulated by NocoBase, providing methods related to cache usage. When actually using caching, operations are performed on instances of ",paraId:6,tocIndex:2},{value:"Cache",paraId:6,tocIndex:2},{value:". Each ",paraId:6,tocIndex:2},{value:"Cache",paraId:6,tocIndex:2},{value:" instance has a unique identifier, which serves as a namespace for distinguishing different modules.",paraId:6,tocIndex:2},{value:"constructor()",paraId:7},{value:"constructor(options?: CacheManagerOptions)",paraId:8,tocIndex:5},{value:`export type CacheManagerOptions = Partial<{ +`,paraId:10,tocIndex:2},{value:"\u6CE8\u610F\uFF1A",paraId:11,tocIndex:2},{value:"\u7EE7\u627F\u7684\u8868\u5E76\u4E0D\u80FD\u968F\u610F\u9009\u62E9\uFF0C\u4E3B\u952E\u5FC5\u987B\u662F\u552F\u4E00\u5E8F\u5217\uFF0C\u6BD4\u5982 uuid \u6216\u8005\u6240\u6709\u7EE7\u627F\u7EBF\u8DEF\u4E0A\u7684\u8868\u7684 id \u81EA\u589E\u5E8F\u5217\u90FD\u7528\u540C\u4E00\u4E2A",paraId:12,tocIndex:2},{value:"Inherits \u53C2\u6570\u4E0D\u80FD\u88AB\u7F16\u8F91",paraId:12,tocIndex:2},{value:"\u5982\u679C\u6709\u7EE7\u627F\u5173\u7CFB\uFF0C\u88AB\u7EE7\u627F\u7684\u7236\u8868\u4E0D\u80FD\u88AB\u5220\u9664",paraId:12,tocIndex:2},{value:"\u5B57\u6BB5\u5217\u8868\u91CC\u540C\u6B65\u663E\u793A\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5\uFF0C\u7236\u8868\u5B57\u6BB5\u4E0D\u53EF\u4EE5\u4FEE\u6539\uFF0C\u4F46\u53EF\u4EE5\u91CD\u5199\uFF08Override\uFF09",paraId:13,tocIndex:3},{value:"\u91CD\u5199\u7236\u8868\u5B57\u6BB5\u7684\u6CE8\u610F\u4E8B\u9879\uFF1A",paraId:14,tocIndex:3},{value:"\u5B50\u8868\u5B57\u6BB5\u6807\u8BC6\u4E0E\u7236\u8868\u5B57\u6BB5\u4E00\u6837\u65F6\u4E3A\u91CD\u5199",paraId:15,tocIndex:3},{value:"\u91CD\u5199\u5B57\u6BB5\u7684\u7C7B\u578B\u5FC5\u987B\u4FDD\u6301\u4E00\u81F4",paraId:15,tocIndex:3},{value:"\u5173\u7CFB\u5B57\u6BB5\u9664\u4E86 target collection \u4EE5\u5916\u7684\u5176\u4ED6\u53C2\u6570\u9700\u8981\u4FDD\u6301\u4E00\u81F4",paraId:15,tocIndex:3},{value:"\u5728\u7236\u8868\u533A\u5757\u91CC\u53EF\u4EE5\u914D\u7F6E\u5B50\u8868\u7684\u533A\u5757",paraId:16,tocIndex:4},{value:"\u5F53\u6709\u7EE7\u627F\u7684\u7236\u8868\u65F6\uFF0C\u914D\u7F6E\u5B57\u6BB5\u65F6\uFF0C\u4F1A\u63D0\u4F9B\u4ECE\u7236\u8868\u7EE7\u627F\u7684\u5B57\u6BB5\u7684\u914D\u7F6E",paraId:17,tocIndex:5}],fG={},xG={title:"CacheManager",toc:"menu",filename:"docs/en-US/api/cache/cache-manager.md",lastUpdated:173254844e4,description:"CacheManager is based on node-cache-manager and provides caching module management for NocoBase. The built-in cache types are:"},gG=[{id:"cachemanager",depth:1,title:"CacheManager"},{id:"overview",depth:2,title:"Overview"},{id:"concepts",depth:3,title:"Concepts"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"cachemanageroptions",depth:5,title:"CacheManagerOptions"},{id:"storeoptions",depth:5,title:"StoreOptions"},{id:"default-options",depth:4,title:"Default options"},{id:"registerstore",depth:3,title:"registerStore()"},{id:"signature-1",depth:4,title:"Signature"},{id:"createcache",depth:3,title:"createCache()"},{id:"signature-2",depth:4,title:"Signature"},{id:"details-1",depth:4,title:"Details"},{id:"options",depth:5,title:"options"}],bG=[{value:"CacheManager is based on ",paraId:0,tocIndex:1},{value:"node-cache-manager",paraId:0,tocIndex:1},{value:" and provides caching module management for NocoBase. The built-in cache types are:",paraId:0,tocIndex:1},{value:"memory",paraId:1,tocIndex:1},{value:": Provided by the default lru-cache of node-cache-manager.",paraId:1,tocIndex:1},{value:"redis",paraId:1,tocIndex:1},{value:": Supported by node-cache-manager-redis-yet for Redis caching.",paraId:1,tocIndex:1},{value:"More types can be extended and registered through the API.",paraId:2,tocIndex:1},{value:"Store",paraId:3,tocIndex:2},{value:": Defines a caching method, including a factory method for creating caches and other related configurations. Each caching method has a unique identifier provided during registration. The two built-in caching methods correspond to the unique identifiers ",paraId:3,tocIndex:2},{value:"memory",paraId:3,tocIndex:2},{value:" and ",paraId:3,tocIndex:2},{value:"redis",paraId:3,tocIndex:2},{value:".",paraId:3,tocIndex:2},{value:"Store Factory Method",paraId:4,tocIndex:2},{value:": Provided by ",paraId:4,tocIndex:2},{value:"node-cache-manager",paraId:4,tocIndex:2},{value:" and related extension packages, used to create caches. Examples include ",paraId:4,tocIndex:2},{value:"memory",paraId:4,tocIndex:2},{value:" provided by ",paraId:4,tocIndex:2},{value:"node-cache-manager",paraId:4,tocIndex:2},{value:" by default, and ",paraId:4,tocIndex:2},{value:"redisStore",paraId:4,tocIndex:2},{value:" provided by ",paraId:4,tocIndex:2},{value:"node-cache-manager-redis-yet",paraId:4,tocIndex:2},{value:". In this context, the object to be provided corresponds to ",paraId:4,tocIndex:2},{value:"StoreOptions",paraId:5,tocIndex:2},{value:", which is the first parameter of the ",paraId:4,tocIndex:2},{value:"caching",paraId:4,tocIndex:2},{value:" method in ",paraId:4,tocIndex:2},{value:"node-cache-manager",paraId:4,tocIndex:2},{value:".",paraId:4,tocIndex:2},{value:"Cache",paraId:6,tocIndex:2},{value:": A class encapsulated by NocoBase, providing methods related to cache usage. When actually using caching, operations are performed on instances of ",paraId:6,tocIndex:2},{value:"Cache",paraId:6,tocIndex:2},{value:". Each ",paraId:6,tocIndex:2},{value:"Cache",paraId:6,tocIndex:2},{value:" instance has a unique identifier, which serves as a namespace for distinguishing different modules.",paraId:6,tocIndex:2},{value:"constructor()",paraId:7},{value:"constructor(options?: CacheManagerOptions)",paraId:8,tocIndex:5},{value:`export type CacheManagerOptions = Partial<{ defaultStore: string; stores: { [storeType: string]: StoreOptions; @@ -16078,7 +16131,7 @@ cacheManager.registerStore({ // Other store configurations, custom configurations that will be merged with global store configurations max: 2000, }); -`,paraId:19,tocIndex:13},{value:"createCache(options: { name: string; prefix?: string; store?: string; [key: string]: any }): Promise",paraId:20,tocIndex:14},{value:"Property",paraId:21,tocIndex:16},{value:"Type",paraId:21,tocIndex:16},{value:"Description",paraId:21,tocIndex:16},{value:"name",paraId:21,tocIndex:16},{value:"string",paraId:21,tocIndex:16},{value:"Unique identifier for the cache",paraId:21,tocIndex:16},{value:"store",paraId:21,tocIndex:16},{value:"string",paraId:21,tocIndex:16},{value:"Unique identifier for the store",paraId:21,tocIndex:16},{value:"prefix",paraId:21,tocIndex:16},{value:"string",paraId:21,tocIndex:16},{value:"Optional. Prefix automatically added to cache keys",paraId:21,tocIndex:16},{value:"[key: string]",paraId:21,tocIndex:16},{value:"any",paraId:21,tocIndex:16},{value:"Other custom store configurations",paraId:21,tocIndex:16},{value:"When ",paraId:22,tocIndex:16},{value:"store",paraId:22,tocIndex:16},{value:" is omitted, the ",paraId:22,tocIndex:16},{value:"defaultStore",paraId:22,tocIndex:16},{value:" will be used. In this case, the caching",paraId:22,tocIndex:16}],yG={},wG={title:"Collection",toc:"menu",filename:"docs/en-US/api/database/collection.md",lastUpdated:1732240239e3,description:"Collection is used to define the data model in the system, such as model name, fields, indexes, associations, and other information. It is usually called through the collection method of the Database instance as a proxy entry."},kG=[{id:"collection",depth:1,title:"Collection"},{id:"overview",depth:2,title:"Overview"},{id:"constructor",depth:2,title:"Constructor"},{id:"instance-members",depth:2,title:"Instance Members"},{id:"options",depth:3,title:"options"},{id:"context",depth:3,title:"context"},{id:"name",depth:3,title:"name"},{id:"db",depth:3,title:"db"},{id:"filtertargetkey",depth:3,title:"filterTargetKey"},{id:"isthrough",depth:3,title:"isThrough"},{id:"model",depth:3,title:"model"},{id:"repository",depth:3,title:"repository"},{id:"field-configuration-methods",depth:2,title:"Field Configuration Methods"},{id:"getfield",depth:3,title:"getField()"},{id:"setfield",depth:3,title:"setField()"},{id:"setfields",depth:3,title:"setFields()"},{id:"removefield",depth:3,title:"removeField()"},{id:"resetfields",depth:3,title:"resetFields()"},{id:"hasfield",depth:3,title:"hasField()"},{id:"findfield",depth:3,title:"findField()"},{id:"foreachfield",depth:3,title:"forEachField()"},{id:"index-configuration-methods",depth:2,title:"Index Configuration Methods"},{id:"addindex",depth:3,title:"addIndex()"},{id:"removeindex",depth:3,title:"removeIndex()"},{id:"table-configuration-methods",depth:2,title:"Table Configuration Methods"},{id:"remove",depth:3,title:"remove()"},{id:"database-operation-methods",depth:2,title:"Database Operation Methods"},{id:"sync",depth:3,title:"sync()"},{id:"existsindb",depth:3,title:"existsInDb()"},{id:"removefromdb",depth:3,title:"removeFromDb()"}],SG=[{value:"Collection",paraId:0,tocIndex:1},{value:" is used to define the data model in the system, such as model name, fields, indexes, associations, and other information. It is usually called through the ",paraId:0,tocIndex:1},{value:"collection",paraId:0,tocIndex:1},{value:" method of the ",paraId:0,tocIndex:1},{value:"Database",paraId:0,tocIndex:1},{value:" instance as a proxy entry.",paraId:0,tocIndex:1},{value:`const { Database } = require('@nocobase/database') +`,paraId:19,tocIndex:13},{value:"createCache(options: { name: string; prefix?: string; store?: string; [key: string]: any }): Promise",paraId:20,tocIndex:14},{value:"Property",paraId:21,tocIndex:16},{value:"Type",paraId:21,tocIndex:16},{value:"Description",paraId:21,tocIndex:16},{value:"name",paraId:21,tocIndex:16},{value:"string",paraId:21,tocIndex:16},{value:"Unique identifier for the cache",paraId:21,tocIndex:16},{value:"store",paraId:21,tocIndex:16},{value:"string",paraId:21,tocIndex:16},{value:"Unique identifier for the store",paraId:21,tocIndex:16},{value:"prefix",paraId:21,tocIndex:16},{value:"string",paraId:21,tocIndex:16},{value:"Optional. Prefix automatically added to cache keys",paraId:21,tocIndex:16},{value:"[key: string]",paraId:21,tocIndex:16},{value:"any",paraId:21,tocIndex:16},{value:"Other custom store configurations",paraId:21,tocIndex:16},{value:"When ",paraId:22,tocIndex:16},{value:"store",paraId:22,tocIndex:16},{value:" is omitted, the ",paraId:22,tocIndex:16},{value:"defaultStore",paraId:22,tocIndex:16},{value:" will be used. In this case, the caching",paraId:22,tocIndex:16}],yG={},wG={title:"Collection",toc:"menu",filename:"docs/en-US/api/database/collection.md",lastUpdated:173254844e4,description:"Collection is used to define the data model in the system, such as model name, fields, indexes, associations, and other information. It is usually called through the collection method of the Database instance as a proxy entry."},kG=[{id:"collection",depth:1,title:"Collection"},{id:"overview",depth:2,title:"Overview"},{id:"constructor",depth:2,title:"Constructor"},{id:"instance-members",depth:2,title:"Instance Members"},{id:"options",depth:3,title:"options"},{id:"context",depth:3,title:"context"},{id:"name",depth:3,title:"name"},{id:"db",depth:3,title:"db"},{id:"filtertargetkey",depth:3,title:"filterTargetKey"},{id:"isthrough",depth:3,title:"isThrough"},{id:"model",depth:3,title:"model"},{id:"repository",depth:3,title:"repository"},{id:"field-configuration-methods",depth:2,title:"Field Configuration Methods"},{id:"getfield",depth:3,title:"getField()"},{id:"setfield",depth:3,title:"setField()"},{id:"setfields",depth:3,title:"setFields()"},{id:"removefield",depth:3,title:"removeField()"},{id:"resetfields",depth:3,title:"resetFields()"},{id:"hasfield",depth:3,title:"hasField()"},{id:"findfield",depth:3,title:"findField()"},{id:"foreachfield",depth:3,title:"forEachField()"},{id:"index-configuration-methods",depth:2,title:"Index Configuration Methods"},{id:"addindex",depth:3,title:"addIndex()"},{id:"removeindex",depth:3,title:"removeIndex()"},{id:"table-configuration-methods",depth:2,title:"Table Configuration Methods"},{id:"remove",depth:3,title:"remove()"},{id:"database-operation-methods",depth:2,title:"Database Operation Methods"},{id:"sync",depth:3,title:"sync()"},{id:"existsindb",depth:3,title:"existsInDb()"},{id:"removefromdb",depth:3,title:"removeFromDb()"}],SG=[{value:"Collection",paraId:0,tocIndex:1},{value:" is used to define the data model in the system, such as model name, fields, indexes, associations, and other information. It is usually called through the ",paraId:0,tocIndex:1},{value:"collection",paraId:0,tocIndex:1},{value:" method of the ",paraId:0,tocIndex:1},{value:"Database",paraId:0,tocIndex:1},{value:" instance as a proxy entry.",paraId:0,tocIndex:1},{value:`const { Database } = require('@nocobase/database') // Create database instance const db = new Database({...}); @@ -16270,7 +16323,7 @@ await db.sync(); // Remove the table books from the database await books.removeFromDb(); -`,paraId:111,tocIndex:29}],UG={},PG={title:"Repository",toc:"menu",filename:"docs/en-US/api/database/repository.md",lastUpdated:1732240239e3,description:"On a given Collection object, you can get its Repository object to perform read and write operations on the data table."},TG=[{id:"repository",depth:1,title:"Repository"},{id:"overview",depth:2,title:"Overview"},{id:"query",depth:3,title:"Query"},{id:"basic-query",depth:4,title:"Basic Query"},{id:"operator",depth:4,title:"Operator"},{id:"field-control",depth:4,title:"Field Control"},{id:"associated-field-query",depth:4,title:"Associated Field Query"},{id:"sort",depth:4,title:"Sort"},{id:"create",depth:3,title:"Create"},{id:"basic-create",depth:4,title:"Basic Create"},{id:"create-association",depth:4,title:"Create Association"},{id:"update",depth:3,title:"Update"},{id:"basic-update",depth:4,title:"Basic Update"},{id:"update-associated-field",depth:4,title:"Update Associated Field"},{id:"delete",depth:3,title:"Delete"},{id:"constructor",depth:2,title:"Constructor"},{id:"instance-members",depth:2,title:"Instance Members"},{id:"database",depth:3,title:"database"},{id:"collection",depth:3,title:"collection"},{id:"model",depth:3,title:"model"},{id:"instance-methods",depth:2,title:"Instance Methods"},{id:"find",depth:3,title:"find()"},{id:"filter-filter",depth:4,title:"filter: Filter"},{id:"filterbytk-targetkey",depth:4,title:"filterByTk: TargetKey"},{id:"fields-string",depth:4,title:"fields: string[]"},{id:"except-string",depth:4,title:"except: string[]"},{id:"appends-string",depth:4,title:"appends: string[]"},{id:"sort-string--string",depth:4,title:"sort: string[] | string"},{id:"limit-number",depth:4,title:"limit: number"},{id:"offset-number",depth:4,title:"offset: number"},{id:"findone",depth:3,title:"findOne()"},{id:"count",depth:3,title:"count()"},{id:"findandcount",depth:3,title:"findAndCount()"},{id:"create-1",depth:3,title:"create()"},{id:"createmany",depth:3,title:"createMany()"},{id:"update-1",depth:3,title:"update()"},{id:"destroy",depth:3,title:"destroy()"}],CG=[{value:"On a given ",paraId:0,tocIndex:1},{value:"Collection",paraId:0,tocIndex:1},{value:" object, you can get its ",paraId:0,tocIndex:1},{value:"Repository",paraId:0,tocIndex:1},{value:" object to perform read and write operations on the data table.",paraId:0,tocIndex:1},{value:`const { UserCollection } = require('./collections'); +`,paraId:111,tocIndex:29}],UG={},PG={title:"Repository",toc:"menu",filename:"docs/en-US/api/database/repository.md",lastUpdated:173254844e4,description:"On a given Collection object, you can get its Repository object to perform read and write operations on the data table."},TG=[{id:"repository",depth:1,title:"Repository"},{id:"overview",depth:2,title:"Overview"},{id:"query",depth:3,title:"Query"},{id:"basic-query",depth:4,title:"Basic Query"},{id:"operator",depth:4,title:"Operator"},{id:"field-control",depth:4,title:"Field Control"},{id:"associated-field-query",depth:4,title:"Associated Field Query"},{id:"sort",depth:4,title:"Sort"},{id:"create",depth:3,title:"Create"},{id:"basic-create",depth:4,title:"Basic Create"},{id:"create-association",depth:4,title:"Create Association"},{id:"update",depth:3,title:"Update"},{id:"basic-update",depth:4,title:"Basic Update"},{id:"update-associated-field",depth:4,title:"Update Associated Field"},{id:"delete",depth:3,title:"Delete"},{id:"constructor",depth:2,title:"Constructor"},{id:"instance-members",depth:2,title:"Instance Members"},{id:"database",depth:3,title:"database"},{id:"collection",depth:3,title:"collection"},{id:"model",depth:3,title:"model"},{id:"instance-methods",depth:2,title:"Instance Methods"},{id:"find",depth:3,title:"find()"},{id:"filter-filter",depth:4,title:"filter: Filter"},{id:"filterbytk-targetkey",depth:4,title:"filterByTk: TargetKey"},{id:"fields-string",depth:4,title:"fields: string[]"},{id:"except-string",depth:4,title:"except: string[]"},{id:"appends-string",depth:4,title:"appends: string[]"},{id:"sort-string--string",depth:4,title:"sort: string[] | string"},{id:"limit-number",depth:4,title:"limit: number"},{id:"offset-number",depth:4,title:"offset: number"},{id:"findone",depth:3,title:"findOne()"},{id:"count",depth:3,title:"count()"},{id:"findandcount",depth:3,title:"findAndCount()"},{id:"create-1",depth:3,title:"create()"},{id:"createmany",depth:3,title:"createMany()"},{id:"update-1",depth:3,title:"update()"},{id:"destroy",depth:3,title:"destroy()"}],CG=[{value:"On a given ",paraId:0,tocIndex:1},{value:"Collection",paraId:0,tocIndex:1},{value:" object, you can get its ",paraId:0,tocIndex:1},{value:"Repository",paraId:0,tocIndex:1},{value:" object to perform read and write operations on the data table.",paraId:0,tocIndex:1},{value:`const { UserCollection } = require('./collections'); const UserRepository = UserCollection.repository; @@ -16639,13 +16692,13 @@ const result = await posts.update({ truncate?: boolean; context?: any; } -`,paraId:122,tocIndex:36},{value:"Detailed Information",paraId:123,tocIndex:36},{value:"filter",paraId:124,tocIndex:36},{value:"\uFF1ASpecify the filtering conditions of the records to be deleted. Refer to the ",paraId:124,tocIndex:36},{value:"find()",paraId:125,tocIndex:36},{value:" method for the detailed usage of the filter.",paraId:124,tocIndex:36},{value:"filterByTk",paraId:124,tocIndex:36},{value:"\uFF1ASpecify the filtering conditions by TargetKey.",paraId:124,tocIndex:36},{value:"truncate",paraId:124,tocIndex:36},{value:": Whether to empty the table data, this parameter is valid if no ",paraId:124,tocIndex:36},{value:"filter",paraId:124,tocIndex:36},{value:" or ",paraId:124,tocIndex:36},{value:"filterByTk",paraId:124,tocIndex:36},{value:" parameter is passed.",paraId:124,tocIndex:36},{value:"transaction",paraId:124,tocIndex:36},{value:": Transaction object. If no transaction parameter is passed, the method will automatically create an internal transaction.",paraId:124,tocIndex:36}],AG={},qG={title:"Telemetry",toc:"menu",filename:"docs/en-US/api/telemetry/telemetry.md",lastUpdated:1732240239e3,description:"Telemetry is the telemetry module of NocoBase, encapsulating OpenTelemetry support for registering metrics and traces within the OpenTelemetry ecosystem."},EG=[{id:"telemetry",depth:1,title:"Telemetry"},{id:"overview",depth:2,title:"Overview"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"init",depth:3,title:"init()"},{id:"signature-1",depth:4,title:"Signature"},{id:"start",depth:3,title:"start()"},{id:"signature-2",depth:4,title:"Signature"},{id:"shutdown",depth:3,title:"shutdown()"},{id:"signature-3",depth:4,title:"Signature"},{id:"addinstrumentation",depth:3,title:"addInstrumentation()"},{id:"signature-4",depth:4,title:"Signature"}],DG=[{value:"Telemetry",paraId:0,tocIndex:1},{value:" is the telemetry module of NocoBase, encapsulating OpenTelemetry support for registering metrics and traces within the OpenTelemetry ecosystem.",paraId:0,tocIndex:1},{value:"constructor()",paraId:1},{value:"Constructor to create a ",paraId:2,tocIndex:3},{value:"Telemetry",paraId:2,tocIndex:3},{value:" instance.",paraId:2,tocIndex:3},{value:"constructor(options?: TelemetryOptions)",paraId:3,tocIndex:4},{value:`export interface TelemetryOptions { +`,paraId:122,tocIndex:36},{value:"Detailed Information",paraId:123,tocIndex:36},{value:"filter",paraId:124,tocIndex:36},{value:"\uFF1ASpecify the filtering conditions of the records to be deleted. Refer to the ",paraId:124,tocIndex:36},{value:"find()",paraId:125,tocIndex:36},{value:" method for the detailed usage of the filter.",paraId:124,tocIndex:36},{value:"filterByTk",paraId:124,tocIndex:36},{value:"\uFF1ASpecify the filtering conditions by TargetKey.",paraId:124,tocIndex:36},{value:"truncate",paraId:124,tocIndex:36},{value:": Whether to empty the table data, this parameter is valid if no ",paraId:124,tocIndex:36},{value:"filter",paraId:124,tocIndex:36},{value:" or ",paraId:124,tocIndex:36},{value:"filterByTk",paraId:124,tocIndex:36},{value:" parameter is passed.",paraId:124,tocIndex:36},{value:"transaction",paraId:124,tocIndex:36},{value:": Transaction object. If no transaction parameter is passed, the method will automatically create an internal transaction.",paraId:124,tocIndex:36}],AG={},qG={title:"Telemetry",toc:"menu",filename:"docs/en-US/api/telemetry/telemetry.md",lastUpdated:173254844e4,description:"Telemetry is the telemetry module of NocoBase, encapsulating OpenTelemetry support for registering metrics and traces within the OpenTelemetry ecosystem."},EG=[{id:"telemetry",depth:1,title:"Telemetry"},{id:"overview",depth:2,title:"Overview"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"init",depth:3,title:"init()"},{id:"signature-1",depth:4,title:"Signature"},{id:"start",depth:3,title:"start()"},{id:"signature-2",depth:4,title:"Signature"},{id:"shutdown",depth:3,title:"shutdown()"},{id:"signature-3",depth:4,title:"Signature"},{id:"addinstrumentation",depth:3,title:"addInstrumentation()"},{id:"signature-4",depth:4,title:"Signature"}],DG=[{value:"Telemetry",paraId:0,tocIndex:1},{value:" is the telemetry module of NocoBase, encapsulating OpenTelemetry support for registering metrics and traces within the OpenTelemetry ecosystem.",paraId:0,tocIndex:1},{value:"constructor()",paraId:1},{value:"Constructor to create a ",paraId:2,tocIndex:3},{value:"Telemetry",paraId:2,tocIndex:3},{value:" instance.",paraId:2,tocIndex:3},{value:"constructor(options?: TelemetryOptions)",paraId:3,tocIndex:4},{value:`export interface TelemetryOptions { serviceName?: string; version?: string; trace?: TraceOptions; metric?: MetricOptions; } -`,paraId:4,tocIndex:5},{value:"Property",paraId:5,tocIndex:6},{value:"Type",paraId:5,tocIndex:6},{value:"Description",paraId:5,tocIndex:6},{value:"Default Value",paraId:5,tocIndex:6},{value:"serviceName",paraId:5,tocIndex:6},{value:"string",paraId:5,tocIndex:6},{value:"Optional. Refer to ",paraId:5,tocIndex:6},{value:"Semantic Conventions",paraId:5,tocIndex:6},{value:"nocobase",paraId:5,tocIndex:6},{value:"version",paraId:5,tocIndex:6},{value:"string",paraId:5,tocIndex:6},{value:"Optional. Refer to ",paraId:5,tocIndex:6},{value:"Semantic Conventions",paraId:5,tocIndex:6},{value:"Optional, current NocoBase version",paraId:5,tocIndex:6},{value:"trace",paraId:5,tocIndex:6},{value:"TraceOptions",paraId:5,tocIndex:6},{value:"Optional. Refer to ",paraId:5,tocIndex:6},{value:"Trace",paraId:6,tocIndex:6},{value:"-",paraId:5,tocIndex:6},{value:"metric",paraId:5,tocIndex:6},{value:"MetricOptions",paraId:5,tocIndex:6},{value:"Optional. Refer to ",paraId:5,tocIndex:6},{value:"Metric",paraId:7,tocIndex:6},{value:"-",paraId:5,tocIndex:6},{value:"init()",paraId:1},{value:"Registers instrumentation and initializes ",paraId:8,tocIndex:7},{value:"Trace",paraId:8,tocIndex:7},{value:" and ",paraId:8,tocIndex:7},{value:"Metric",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"init(): void",paraId:9,tocIndex:8},{value:"start()",paraId:1},{value:"Starts the processing of ",paraId:10,tocIndex:9},{value:"Trace",paraId:10,tocIndex:9},{value:" and ",paraId:10,tocIndex:9},{value:"Metric",paraId:10,tocIndex:9},{value:" related data, such as exporting to Prometheus.",paraId:10,tocIndex:9},{value:"start(): void",paraId:11,tocIndex:10},{value:"shutdown()",paraId:1},{value:"Stops the processing of ",paraId:12,tocIndex:11},{value:"Trace",paraId:12,tocIndex:11},{value:" and ",paraId:12,tocIndex:11},{value:"Metric",paraId:12,tocIndex:11},{value:" related data.",paraId:12,tocIndex:11},{value:"shutdown(): Promise",paraId:13,tocIndex:12},{value:"addInstrumentation()",paraId:1},{value:"Adds instrumentation libraries.",paraId:14,tocIndex:13},{value:"addInstrumentation(...instrumentation: InstrumentationOption[])",paraId:15,tocIndex:14}],OG={},RG={title:"Internationalization",toc:"menu",filename:"docs/en-US/development/client/i18n.md",lastUpdated:1732240239e3,description:"In the plugin, both front-end and back-end multilingual files are stored in the src/locale folder. You can view all supported languages in NocoBase by clicking here."},MG=[{id:"internationalization",depth:1,title:"Internationalization"},{id:"internationalization-files",depth:2,title:"Internationalization Files"},{id:"how-to-support-internationalization",depth:2,title:"How to Support Internationalization"},{id:"appi18n-instance",depth:3,title:"app.i18n Instance"},{id:"react-hook-method",depth:3,title:"React Hook Method"},{id:"namespace",depth:3,title:"Namespace"},{id:"tval-method",depth:3,title:"tval Method"},{id:"important-notes",depth:2,title:"Important Notes"},{id:"complete-plugin-example",depth:2,title:"Complete Plugin Example"}],LG=[{value:"In the plugin, both front-end and back-end multilingual files are stored in the ",paraId:0,tocIndex:1},{value:"src/locale",paraId:0,tocIndex:1},{value:" folder. You can view ",paraId:0,tocIndex:1},{value:"all supported languages",paraId:1,tocIndex:1},{value:" in NocoBase by clicking here.",paraId:0,tocIndex:1},{value:`|- /plugin-sample-i18n +`,paraId:4,tocIndex:5},{value:"Property",paraId:5,tocIndex:6},{value:"Type",paraId:5,tocIndex:6},{value:"Description",paraId:5,tocIndex:6},{value:"Default Value",paraId:5,tocIndex:6},{value:"serviceName",paraId:5,tocIndex:6},{value:"string",paraId:5,tocIndex:6},{value:"Optional. Refer to ",paraId:5,tocIndex:6},{value:"Semantic Conventions",paraId:5,tocIndex:6},{value:"nocobase",paraId:5,tocIndex:6},{value:"version",paraId:5,tocIndex:6},{value:"string",paraId:5,tocIndex:6},{value:"Optional. Refer to ",paraId:5,tocIndex:6},{value:"Semantic Conventions",paraId:5,tocIndex:6},{value:"Optional, current NocoBase version",paraId:5,tocIndex:6},{value:"trace",paraId:5,tocIndex:6},{value:"TraceOptions",paraId:5,tocIndex:6},{value:"Optional. Refer to ",paraId:5,tocIndex:6},{value:"Trace",paraId:6,tocIndex:6},{value:"-",paraId:5,tocIndex:6},{value:"metric",paraId:5,tocIndex:6},{value:"MetricOptions",paraId:5,tocIndex:6},{value:"Optional. Refer to ",paraId:5,tocIndex:6},{value:"Metric",paraId:7,tocIndex:6},{value:"-",paraId:5,tocIndex:6},{value:"init()",paraId:1},{value:"Registers instrumentation and initializes ",paraId:8,tocIndex:7},{value:"Trace",paraId:8,tocIndex:7},{value:" and ",paraId:8,tocIndex:7},{value:"Metric",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"init(): void",paraId:9,tocIndex:8},{value:"start()",paraId:1},{value:"Starts the processing of ",paraId:10,tocIndex:9},{value:"Trace",paraId:10,tocIndex:9},{value:" and ",paraId:10,tocIndex:9},{value:"Metric",paraId:10,tocIndex:9},{value:" related data, such as exporting to Prometheus.",paraId:10,tocIndex:9},{value:"start(): void",paraId:11,tocIndex:10},{value:"shutdown()",paraId:1},{value:"Stops the processing of ",paraId:12,tocIndex:11},{value:"Trace",paraId:12,tocIndex:11},{value:" and ",paraId:12,tocIndex:11},{value:"Metric",paraId:12,tocIndex:11},{value:" related data.",paraId:12,tocIndex:11},{value:"shutdown(): Promise",paraId:13,tocIndex:12},{value:"addInstrumentation()",paraId:1},{value:"Adds instrumentation libraries.",paraId:14,tocIndex:13},{value:"addInstrumentation(...instrumentation: InstrumentationOption[])",paraId:15,tocIndex:14}],OG={},RG={title:"Internationalization",toc:"menu",filename:"docs/en-US/development/client/i18n.md",lastUpdated:173254844e4,description:"In the plugin, both front-end and back-end multilingual files are stored in the src/locale folder. You can view all supported languages in NocoBase by clicking here."},MG=[{id:"internationalization",depth:1,title:"Internationalization"},{id:"internationalization-files",depth:2,title:"Internationalization Files"},{id:"how-to-support-internationalization",depth:2,title:"How to Support Internationalization"},{id:"appi18n-instance",depth:3,title:"app.i18n Instance"},{id:"react-hook-method",depth:3,title:"React Hook Method"},{id:"namespace",depth:3,title:"Namespace"},{id:"tval-method",depth:3,title:"tval Method"},{id:"important-notes",depth:2,title:"Important Notes"},{id:"complete-plugin-example",depth:2,title:"Complete Plugin Example"}],LG=[{value:"In the plugin, both front-end and back-end multilingual files are stored in the ",paraId:0,tocIndex:1},{value:"src/locale",paraId:0,tocIndex:1},{value:" folder. You can view ",paraId:0,tocIndex:1},{value:"all supported languages",paraId:1,tocIndex:1},{value:" in NocoBase by clicking here.",paraId:0,tocIndex:1},{value:`|- /plugin-sample-i18n |- /src |- /locale # Multilingual files |- en_US.ts # English language @@ -16696,7 +16749,7 @@ class PluginDemoClient extends Plugin { this.app.i18n.t('hello'); } } -`,paraId:16,tocIndex:7},{value:"Why is it deprecated?",paraId:17,tocIndex:7},{value:"Each app instance operates independently, including its i18n. A global i18n instance can cause interference between multiple app instances, which violates design principles, making it an undesirable practice.",paraId:18,tocIndex:7},{value:"@nocobase/plugin-sample-i18n",paraId:19,tocIndex:8}],NG={},zG={title:"Testing",toc:"menu",filename:"docs/en-US/development/client/test.md",lastUpdated:1732240239e3},FG=[{id:"testing",depth:1,title:"Testing"}],BG=[],jG={},HG={title:"Dependencies",toc:"menu",filename:"docs/en-US/development/others/deps.md",lastUpdated:1732240239e3,description:"The plugin's dependencies are categorized into local dependencies and global dependencies. Global dependencies are provided by @nocobase/server and @nocobase/client, and they are not included in the plugin's final bundle. However, local dependencies will be bundled with the plugin."},WG=[{id:"dependencies",depth:1,title:"Dependencies"},{id:"global-dependencies",depth:2,title:"Global Dependencies"}],$G=[{value:"The plugin's dependencies are categorized into local dependencies and global dependencies. Global dependencies are provided by ",paraId:0,tocIndex:0},{value:"@nocobase/server",paraId:0,tocIndex:0},{value:" and ",paraId:0,tocIndex:0},{value:"@nocobase/client",paraId:0,tocIndex:0},{value:", and they are not included in the plugin's final bundle. However, local dependencies will be bundled with the plugin.",paraId:0,tocIndex:0},{value:"Since the local dependencies will be bundled (including npm packages required by the server, which will also be included in ",paraId:1,tocIndex:0},{value:"dist/node_modules",paraId:1,tocIndex:0},{value:"), when developing a plugin, all dependencies should be added to ",paraId:1,tocIndex:0},{value:"devDependencies",paraId:1,tocIndex:0},{value:".",paraId:1,tocIndex:0},{value:"\nWhen installing the following dependencies for the plugin, ensure that their **versions** are consistent with those of `@nocobase/server` and `@nocobase/client`.\n",paraId:2},{value:`// nocobase +`,paraId:16,tocIndex:7},{value:"Why is it deprecated?",paraId:17,tocIndex:7},{value:"Each app instance operates independently, including its i18n. A global i18n instance can cause interference between multiple app instances, which violates design principles, making it an undesirable practice.",paraId:18,tocIndex:7},{value:"@nocobase/plugin-sample-i18n",paraId:19,tocIndex:8}],NG={},zG={title:"Testing",toc:"menu",filename:"docs/en-US/development/client/test.md",lastUpdated:173254844e4},FG=[{id:"testing",depth:1,title:"Testing"}],BG=[],jG={},HG={title:"Dependencies",toc:"menu",filename:"docs/en-US/development/others/deps.md",lastUpdated:173254844e4,description:"The plugin's dependencies are categorized into local dependencies and global dependencies. Global dependencies are provided by @nocobase/server and @nocobase/client, and they are not included in the plugin's final bundle. However, local dependencies will be bundled with the plugin."},WG=[{id:"dependencies",depth:1,title:"Dependencies"},{id:"global-dependencies",depth:2,title:"Global Dependencies"}],$G=[{value:"The plugin's dependencies are categorized into local dependencies and global dependencies. Global dependencies are provided by ",paraId:0,tocIndex:0},{value:"@nocobase/server",paraId:0,tocIndex:0},{value:" and ",paraId:0,tocIndex:0},{value:"@nocobase/client",paraId:0,tocIndex:0},{value:", and they are not included in the plugin's final bundle. However, local dependencies will be bundled with the plugin.",paraId:0,tocIndex:0},{value:"Since the local dependencies will be bundled (including npm packages required by the server, which will also be included in ",paraId:1,tocIndex:0},{value:"dist/node_modules",paraId:1,tocIndex:0},{value:"), when developing a plugin, all dependencies should be added to ",paraId:1,tocIndex:0},{value:"devDependencies",paraId:1,tocIndex:0},{value:".",paraId:1,tocIndex:0},{value:"\nWhen installing the following dependencies for the plugin, ensure that their **versions** are consistent with those of `@nocobase/server` and `@nocobase/client`.\n",paraId:2},{value:`// nocobase '@nocobase/acl', '@nocobase/actions', '@nocobase/auth', @@ -16776,7 +16829,7 @@ class PluginDemoClient extends Plugin { '@emotion/css', 'ahooks', 'lodash'; -`,paraId:3,tocIndex:1}],GG={},VG={title:"Internalization",toc:"menu",filename:"docs/en-US/development/server/i18n.md",lastUpdated:1732240239e3,description:"In a plugin, both frontend and backend multilingual files are stored in the src/locale folder. Click here to see all languages supported by NocoBase."},KG=[{id:"internalization",depth:1,title:"Internalization"},{id:"internationalization-files",depth:2,title:"Internationalization Files"},{id:"how-to-support-internationalization",depth:2,title:"How to Support Internationalization"},{id:"appi18n",depth:3,title:"app.i18n"},{id:"ctxi18n",depth:3,title:"ctx.i18n"},{id:"api",depth:2,title:"API"},{id:"i18nt",depth:3,title:"i18n.t()"},{id:"i18nchangelanguage",depth:3,title:"i18n.changeLanguage()"},{id:"complete-plugin-example",depth:2,title:"Complete Plugin Example"}],ZG=[{value:"In a plugin, both frontend and backend multilingual files are stored in the ",paraId:0,tocIndex:1},{value:"src/locale",paraId:0,tocIndex:1},{value:" folder. Click here to see ",paraId:0,tocIndex:1},{value:"all languages",paraId:1,tocIndex:1},{value:" supported by NocoBase.",paraId:0,tocIndex:1},{value:`|- /plugin-sample-i18n +`,paraId:3,tocIndex:1}],GG={},VG={title:"Internalization",toc:"menu",filename:"docs/en-US/development/server/i18n.md",lastUpdated:173254844e4,description:"In a plugin, both frontend and backend multilingual files are stored in the src/locale folder. Click here to see all languages supported by NocoBase."},KG=[{id:"internalization",depth:1,title:"Internalization"},{id:"internationalization-files",depth:2,title:"Internationalization Files"},{id:"how-to-support-internationalization",depth:2,title:"How to Support Internationalization"},{id:"appi18n",depth:3,title:"app.i18n"},{id:"ctxi18n",depth:3,title:"ctx.i18n"},{id:"api",depth:2,title:"API"},{id:"i18nt",depth:3,title:"i18n.t()"},{id:"i18nchangelanguage",depth:3,title:"i18n.changeLanguage()"},{id:"complete-plugin-example",depth:2,title:"Complete Plugin Example"}],ZG=[{value:"In a plugin, both frontend and backend multilingual files are stored in the ",paraId:0,tocIndex:1},{value:"src/locale",paraId:0,tocIndex:1},{value:" folder. Click here to see ",paraId:0,tocIndex:1},{value:"all languages",paraId:1,tocIndex:1},{value:" supported by NocoBase.",paraId:0,tocIndex:1},{value:`|- /plugin-sample-i18n |- /src |- /locale # Multilingual folder |- en_US.ts # English language file @@ -16825,7 +16878,7 @@ X-Locale: en-US } `,paraId:14,tocIndex:4},{value:"Visit ",paraId:15,tocIndex:4},{value:"http://localhost:13000/api/test-i18n?locale=zh-CN",paraId:15,tocIndex:4},{value:"NocoBase's i18n is implemented based on i18next. For detailed usage instructions, refer to the ",paraId:16,tocIndex:5},{value:"I18next API documentation",paraId:16,tocIndex:5},{value:". Below are some important examples listed.",paraId:16,tocIndex:5},{value:"Each plugin's locale is distinguished by the namespace (ns), which is the plugin name, such as:",paraId:17,tocIndex:6},{value:`t('Hello', { ns: '@nocobase/plugin-sample-i18n' }); `,paraId:18,tocIndex:6},{value:"To change the current language",paraId:19,tocIndex:7},{value:`await i18n.changeLanguage('en-US'); -`,paraId:20,tocIndex:7},{value:"@nocobase/plugin-sample-i18n",paraId:21,tocIndex:8}],YG={},QG={title:"Testing",toc:"menu",filename:"docs/en-US/development/server/test.md",lastUpdated:1732240239e3,description:"Testing is based on the Jest testing framework. To facilitate writing tests, mockDatabase() and mockServer() are provided for testing database and server-side applications."},JG=[{id:"testing",depth:1,title:"Testing"},{id:"mockdatabase",depth:2,title:"mockDatabase()"},{id:"mockserver",depth:2,title:"mockServer()"},{id:"common-application-processes",depth:2,title:"Common Application Processes"},{id:"install-then-start",depth:3,title:"Install then Start"},{id:"start-then-install",depth:3,title:"Start then Install"},{id:"quickstart-auto-install-or-upgrade",depth:3,title:"Quickstart (Auto Install or Upgrade)"},{id:"reinstall-an-already-installed-and-started-application",depth:3,title:"Reinstall an Already Installed and Started Application"},{id:"upgrade-the-application-before-starting",depth:3,title:"Upgrade the Application (Before Starting)"},{id:"upgrade-the-application-after-starting",depth:3,title:"Upgrade the Application (After Starting)"},{id:"activate-a-plugin",depth:3,title:"Activate a Plugin"},{id:"disable-a-plugin",depth:3,title:"Disable a Plugin"}],XG=[{value:"Testing is based on the ",paraId:0,tocIndex:0},{value:"Jest",paraId:0,tocIndex:0},{value:" testing framework. To facilitate writing tests, ",paraId:0,tocIndex:0},{value:"mockDatabase()",paraId:0,tocIndex:0},{value:" and ",paraId:0,tocIndex:0},{value:"mockServer()",paraId:0,tocIndex:0},{value:" are provided for testing database and server-side applications.",paraId:0,tocIndex:0},{value:"The test environment variables are configured in the ",paraId:1},{value:".env.test",paraId:1},{value:" file. It's recommended to use a separate test database for testing.",paraId:1},{value:"mockDatabase()",paraId:2},{value:"A fully isolated db testing environment is provided by default.",paraId:3,tocIndex:1},{value:`import { mockDatabase } from '@nocobase/test'; +`,paraId:20,tocIndex:7},{value:"@nocobase/plugin-sample-i18n",paraId:21,tocIndex:8}],YG={},QG={title:"Testing",toc:"menu",filename:"docs/en-US/development/server/test.md",lastUpdated:173254844e4,description:"Testing is based on the Jest testing framework. To facilitate writing tests, mockDatabase() and mockServer() are provided for testing database and server-side applications."},JG=[{id:"testing",depth:1,title:"Testing"},{id:"mockdatabase",depth:2,title:"mockDatabase()"},{id:"mockserver",depth:2,title:"mockServer()"},{id:"common-application-processes",depth:2,title:"Common Application Processes"},{id:"install-then-start",depth:3,title:"Install then Start"},{id:"start-then-install",depth:3,title:"Start then Install"},{id:"quickstart-auto-install-or-upgrade",depth:3,title:"Quickstart (Auto Install or Upgrade)"},{id:"reinstall-an-already-installed-and-started-application",depth:3,title:"Reinstall an Already Installed and Started Application"},{id:"upgrade-the-application-before-starting",depth:3,title:"Upgrade the Application (Before Starting)"},{id:"upgrade-the-application-after-starting",depth:3,title:"Upgrade the Application (After Starting)"},{id:"activate-a-plugin",depth:3,title:"Activate a Plugin"},{id:"disable-a-plugin",depth:3,title:"Disable a Plugin"}],XG=[{value:"Testing is based on the ",paraId:0,tocIndex:0},{value:"Jest",paraId:0,tocIndex:0},{value:" testing framework. To facilitate writing tests, ",paraId:0,tocIndex:0},{value:"mockDatabase()",paraId:0,tocIndex:0},{value:" and ",paraId:0,tocIndex:0},{value:"mockServer()",paraId:0,tocIndex:0},{value:" are provided for testing database and server-side applications.",paraId:0,tocIndex:0},{value:"The test environment variables are configured in the ",paraId:1},{value:".env.test",paraId:1},{value:" file. It's recommended to use a separate test database for testing.",paraId:1},{value:"mockDatabase()",paraId:2},{value:"A fully isolated db testing environment is provided by default.",paraId:3,tocIndex:1},{value:`import { mockDatabase } from '@nocobase/test'; describe('my db suite', () => { let db; @@ -16947,13 +17000,13 @@ yarn pm disable @my-project/plugin-hello `,paraId:36,tocIndex:11},{value:"Preliminary test process",paraId:37,tocIndex:11},{value:`const app = mockServer(); await app.runCommand('start', '--quickstart'); await app.runCommand('pm', 'disable', '@my-project/plugin-hello'); -`,paraId:38,tocIndex:11}],eV={},aV={title:"Hand book",toc:"menu",filename:"docs/en-US/handbook/acl/user/index.md",lastUpdated:1732240239e3,description:'The application comes with two predefined roles: "Admin" and "Member," each with distinct default permission settings tailored to their functionalities.'},tV=[{id:"hand-book",depth:1,title:"Hand book"},{id:"management-center",depth:2,title:"Management Center"},{id:"role-management",depth:5,title:"Role Management"},{id:"adding-deleting-and-modifying-roles",depth:5,title:"Adding, Deleting, and Modifying Roles"},{id:"setting-the-default-role",depth:5,title:"Setting the Default Role"},{id:"configuring-permissions",depth:5,title:"Configuring Permissions"},{id:"general-permission-settings",depth:6,title:"General Permission Settings"},{id:"action-permissions",depth:6,title:"Action permissions"},{id:"data-table-operation-permissions",depth:5,title:"Data Table Operation Permissions"},{id:"menu-permissions",depth:5,title:"Menu permissions"},{id:"plugin-configuration-permissions",depth:5,title:"Plugin Configuration Permissions"},{id:"personal-center",depth:4,title:"Personal Center"},{id:"role-switching",depth:5,title:"Role Switching"},{id:"application-in-ui",depth:4,title:"Application in UI"},{id:"data-block-permissions",depth:5,title:"Data Block Permissions"},{id:"field-permissions",depth:6,title:"Field Permissions"},{id:"operation-permissions",depth:5,title:"Operation Permissions"},{id:"relationship-permissions",depth:4,title:"Relationship Permissions"},{id:"when-used-as-a-field",depth:5,title:"When Used as a Field"},{id:"when-used-as-a-block",depth:5,title:"When Used as a Block"}],nV=[{value:"Management Center",paraId:0},{value:"Role Management",paraId:0},{value:'The application comes with two predefined roles: "Admin" and "Member," each with distinct default permission settings tailored to their functionalities.',paraId:1,tocIndex:2},{value:"Adding, Deleting, and Modifying Roles",paraId:0},{value:"The role identifier, a unique system identifier, allows customization of default roles, but the system's predefined roles cannot be deleted.",paraId:2,tocIndex:3},{value:"Setting the Default Role",paraId:0},{value:"The default role is the one automatically assigned to new users if no specific role is provided during their creation.",paraId:3,tocIndex:4},{value:"Configuring Permissions",paraId:0},{value:"General Permission Settings",paraId:0},{value:"Allows to configure interface",paraId:4,tocIndex:6},{value:': This permission governs whether a user can configure the interface. Activating it adds a UI configuration button. The "admin" role has this permission enabled by default.',paraId:4,tocIndex:6},{value:"Allows to install, activate, disable plugins",paraId:4,tocIndex:6},{value:': This permission dictates whether a user can enable or disable plugins. When active, the user gains access to the plugin manager interface. The "admin" role has this permission enabled by default.',paraId:4,tocIndex:6},{value:"Allows to configure plugins",paraId:4,tocIndex:6},{value:': This permission lets the user configure plugin parameters or manage plugin backend data. The "admin" role has this permission enabled by default.',paraId:4,tocIndex:6},{value:"Allows to clear cache, reboot application",paraId:4,tocIndex:6},{value:": This permission is tied to system maintenance tasks like clearing the cache and restarting the application. Once activated, related operation buttons appear in the personal center. This permission is disabled by default.",paraId:4,tocIndex:6},{value:"New menu items are allowed to be accessed by default.",paraId:4,tocIndex:6},{value:": Newly created menus are accessible by default, and this setting is enabled by default.",paraId:4,tocIndex:6},{value:"Action permissions",paraId:0},{value:"Action permissions apply universally to all data tables and are categorized by operation type. These permissions can be configured based on data scope: all data or the user's own data. The former allows operations on the entire data table, while the latter restricts operations to data relevant to the user.",paraId:5,tocIndex:7},{value:"Data Table Operation Permissions",paraId:0},{value:"Collection operation permissions allow fine-tuning of Action permissions by configuring access to resources within each data table. These permissions include:",paraId:6,tocIndex:8},{value:"Action permissions",paraId:7,tocIndex:8},{value:": These include adding, viewing, editing, deleting, exporting, and importing actions. Permissions are set based on data scope:",paraId:7,tocIndex:8},{value:"All records",paraId:8,tocIndex:8},{value:": Grants the user the ability to perform actions on all records within the data table.",paraId:8,tocIndex:8},{value:"Own records",paraId:8,tocIndex:8},{value:": Restricts the user to perform actions only on records they have created.",paraId:8,tocIndex:8},{value:"Field Permissions",paraId:9,tocIndex:8},{value:": Field permissions enable you to set specific permissions for each field during different operations. For instance, certain fields can be configured to be view-only, without editing privileges.",paraId:9,tocIndex:8},{value:"Menu permissions",paraId:0},{value:"Menu permissions control access based on menu items.",paraId:10,tocIndex:9},{value:"Plugin Configuration Permissions",paraId:0},{value:"Plugin configuration permissions control the ability to configure specific plugin parameters. When enabled, the corresponding plugin management interface appears in the management center.",paraId:11,tocIndex:10},{value:"Personal Center",paraId:0},{value:"Role Switching",paraId:0},{value:"Users can be assigned multiple roles and switch between them in the personal center. The default role when logging in is determined by the most recently switched role (this value updates with each switch) or, if not applicable, the first role (system default role).",paraId:12,tocIndex:12},{value:"Application in UI",paraId:0},{value:"Data Block Permissions",paraId:0},{value:"Visibility of data blocks in a data table is controlled by view operation permissions, with individual configurations taking precedence over global settings.",paraId:13,tocIndex:14},{value:'For example, under global permissions, the "admin" role has full access, but the order table may have individual permissions configured, making it invisible.',paraId:14,tocIndex:14},{value:"Field Permissions",paraId:0},{value:"View",paraId:15,tocIndex:15},{value:": Determines whether specific fields are visible at the field level, allowing control over which fields are visible to certain roles within the order table.",paraId:15,tocIndex:15},{value:"In the UI, only fields with configured permissions are visible within the order table block. System fields (Id, CreatedAt, LastUpdatedAt) retain view permissions even without specific configuration.",paraId:16,tocIndex:15},{value:"Edit",paraId:17,tocIndex:15},{value:": Controls whether fields can be edited and saved (updated).",paraId:17,tocIndex:15},{value:"In the UI, only fields with edit permissions are shown in the edit operation form block within the order table.",paraId:18,tocIndex:15},{value:"Similarly, only fields with add permissions are shown in the add operation form block within the order table.",paraId:19,tocIndex:15},{value:"Add",paraId:20,tocIndex:15},{value:": Determines whether fields can be added (created).",paraId:20,tocIndex:15},{value:"In the UI, only fields with add permissions are displayed within the add operation form block of the order table.",paraId:21,tocIndex:15},{value:"Export",paraId:22,tocIndex:15},{value:": Controls whether fields can be exported.",paraId:22,tocIndex:15},{value:"Import",paraId:22,tocIndex:15},{value:": Controls whether fields can be imported.",paraId:22,tocIndex:15},{value:"Operation Permissions",paraId:0},{value:"Individually configured permissions take the highest priority. If specific permissions are configured, they override global settings; otherwise, the global settings are applied.",paraId:23,tocIndex:16},{value:"Add new",paraId:24,tocIndex:16},{value:": Controls whether the add operation button is visible within a block.",paraId:24,tocIndex:16},{value:"When the add operation is permitted, the add button appears within the operation area of the order table block in the UI.",paraId:25,tocIndex:16},{value:"View",paraId:26,tocIndex:16},{value:": Determines whether the data block is visible.",paraId:26,tocIndex:16},{value:"In the UI, data blocks for other data tables remain hidden, but the order table block is shown if individual permissions are set.",paraId:27,tocIndex:16},{value:"Edit",paraId:28,tocIndex:16},{value:": Controls whether the edit operation button is displayed within a block.",paraId:28,tocIndex:16},{value:"Operation permissions can be further refined by setting the data scope.",paraId:29,tocIndex:16},{value:"Delete",paraId:30,tocIndex:16},{value:": Controls whether the delete operation button is visible within a block.",paraId:30,tocIndex:16},{value:"Export",paraId:31,tocIndex:16},{value:": Controls whether the export operation button is visible within a block.",paraId:31,tocIndex:16},{value:"Import",paraId:31,tocIndex:16},{value:": Controls whether the import operation button is visible within a block.",paraId:31,tocIndex:16},{value:"The visibility of a relationship field is determined by the permissions set on the source table's fields. These permissions control whether the entire relationship field component appears in the user interface.",paraId:32,tocIndex:18},{value:'For example, in the Order table, the "Customer" relationship field is restricted to view and import/export permissions, as depicted below:',paraId:33,tocIndex:18},{value:'In the UI, this configuration ensures that the "Customer" relationship field does not appear in the add and edit operation sections of the Order table.',paraId:34,tocIndex:18},{value:"The complete configuration process is illustrated below:",paraId:35,tocIndex:18},{value:"The permissions for fields within the relationship field component (such as those found in sub-tables or sub-forms) are determined by the permissions of the target data table.",paraId:36,tocIndex:18},{value:"When the relationship field component is a sub-form:",paraId:37,tocIndex:18},{value:'In this case, as shown, the "Customer" relationship field in the Order table is granted full permissions, while the Customer table itself is configured to be read-only.',paraId:38,tocIndex:18},{value:'The permissions for the Order table are set as follows, granting the "Customer" relationship field full access:',paraId:39,tocIndex:18},{value:"The permissions for the Customer table are configured to allow view-only access:",paraId:40,tocIndex:18},{value:'In the UI, this configuration results in the "Customer" relationship field being visible in the Order table section. However, when the interface is switched to a sub-form (where fields within the sub-form are visible in the details but hidden during new or edit operations), the behavior changes accordingly.',paraId:41,tocIndex:18},{value:"The complete configuration process is demonstrated below:",paraId:42,tocIndex:18},{value:"Further refinement of sub-form field permissions allows individual fields to be specifically controlled.",paraId:43,tocIndex:18},{value:'For instance, as shown below, the Customer table can be configured so that the "Customer Name" field is neither visible nor editable:',paraId:44,tocIndex:18},{value:"The complete configuration process for this setting is illustrated here:",paraId:45,tocIndex:18},{value:"When dealing with a sub-table instead of a sub-form, the configuration principles remain the same:",paraId:46,tocIndex:18},{value:'As illustrated, the "shipment" relationship field in the Order table has full permissions, while the shipment collection itself is set to read-only.',paraId:47,tocIndex:18},{value:"In the UI, this setup allows the relationship field to be visible. However, when the interface is switched to a sub-table (where fields within the sub-table are visible during viewing operations but hidden during new or edit operations), the behavior adjusts accordingly.",paraId:48,tocIndex:18},{value:"Fine-tuning sub-collection field permissions also enables specific control over individual fields.",paraId:49,tocIndex:18},{value:"The visibility of a relationship block is governed by the permissions set on the target table associated with the relationship field, independent of the permissions on the relationship field itself.",paraId:50,tocIndex:19},{value:'For example, the visibility of the "Customer" relationship block is controlled by the permissions configured for the Customer table:',paraId:51,tocIndex:19},{value:"The fields within a relationship block are controlled by the permissions set on the target table\u2019s fields.",paraId:52,tocIndex:19},{value:"As depicted below, the Customer table can be configured to allow viewing of specific fields only:",paraId:53,tocIndex:19}],oV={},rV={title:"API Key",toc:"menu",filename:"docs/en-US/handbook/api-keys/index.md",lastUpdated:1732240239e3,description:"http://localhost:13000/admin/settings/api-keys/configuration"},dV=[{id:"api-key",depth:1,title:"API Key"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"add-api-key",depth:3,title:"Add API Key"},{id:"how-to-configure-app_key",depth:3,title:"How to configure APP_KEY"}],iV=[{value:"http://localhost:13000/admin/settings/api-keys/configuration",paraId:0,tocIndex:3},{value:"Notes",paraId:1,tocIndex:4},{value:"The added API key is for the current user, and the role is the role to which the current user belongs",paraId:2,tocIndex:4},{value:"Please make sure that the ",paraId:2,tocIndex:4},{value:"APP_KEY",paraId:2,tocIndex:4},{value:" environment variable has been configured and is kept confidential. If the APP_KEY changes, all added API keys will become invalid.",paraId:2,tocIndex:4},{value:"For the docker version, modify the docker-compose.yml file",paraId:3,tocIndex:5},{value:`services: +`,paraId:38,tocIndex:11}],eV={},aV={title:"Hand book",toc:"menu",filename:"docs/en-US/handbook/acl/user/index.md",lastUpdated:173254844e4,description:'The application comes with two predefined roles: "Admin" and "Member," each with distinct default permission settings tailored to their functionalities.'},tV=[{id:"hand-book",depth:1,title:"Hand book"},{id:"management-center",depth:2,title:"Management Center"},{id:"role-management",depth:5,title:"Role Management"},{id:"adding-deleting-and-modifying-roles",depth:5,title:"Adding, Deleting, and Modifying Roles"},{id:"setting-the-default-role",depth:5,title:"Setting the Default Role"},{id:"configuring-permissions",depth:5,title:"Configuring Permissions"},{id:"general-permission-settings",depth:6,title:"General Permission Settings"},{id:"action-permissions",depth:6,title:"Action permissions"},{id:"data-table-operation-permissions",depth:5,title:"Data Table Operation Permissions"},{id:"menu-permissions",depth:5,title:"Menu permissions"},{id:"plugin-configuration-permissions",depth:5,title:"Plugin Configuration Permissions"},{id:"personal-center",depth:4,title:"Personal Center"},{id:"role-switching",depth:5,title:"Role Switching"},{id:"application-in-ui",depth:4,title:"Application in UI"},{id:"data-block-permissions",depth:5,title:"Data Block Permissions"},{id:"field-permissions",depth:6,title:"Field Permissions"},{id:"operation-permissions",depth:5,title:"Operation Permissions"},{id:"relationship-permissions",depth:4,title:"Relationship Permissions"},{id:"when-used-as-a-field",depth:5,title:"When Used as a Field"},{id:"when-used-as-a-block",depth:5,title:"When Used as a Block"}],nV=[{value:"Management Center",paraId:0},{value:"Role Management",paraId:0},{value:'The application comes with two predefined roles: "Admin" and "Member," each with distinct default permission settings tailored to their functionalities.',paraId:1,tocIndex:2},{value:"Adding, Deleting, and Modifying Roles",paraId:0},{value:"The role identifier, a unique system identifier, allows customization of default roles, but the system's predefined roles cannot be deleted.",paraId:2,tocIndex:3},{value:"Setting the Default Role",paraId:0},{value:"The default role is the one automatically assigned to new users if no specific role is provided during their creation.",paraId:3,tocIndex:4},{value:"Configuring Permissions",paraId:0},{value:"General Permission Settings",paraId:0},{value:"Allows to configure interface",paraId:4,tocIndex:6},{value:': This permission governs whether a user can configure the interface. Activating it adds a UI configuration button. The "admin" role has this permission enabled by default.',paraId:4,tocIndex:6},{value:"Allows to install, activate, disable plugins",paraId:4,tocIndex:6},{value:': This permission dictates whether a user can enable or disable plugins. When active, the user gains access to the plugin manager interface. The "admin" role has this permission enabled by default.',paraId:4,tocIndex:6},{value:"Allows to configure plugins",paraId:4,tocIndex:6},{value:': This permission lets the user configure plugin parameters or manage plugin backend data. The "admin" role has this permission enabled by default.',paraId:4,tocIndex:6},{value:"Allows to clear cache, reboot application",paraId:4,tocIndex:6},{value:": This permission is tied to system maintenance tasks like clearing the cache and restarting the application. Once activated, related operation buttons appear in the personal center. This permission is disabled by default.",paraId:4,tocIndex:6},{value:"New menu items are allowed to be accessed by default.",paraId:4,tocIndex:6},{value:": Newly created menus are accessible by default, and this setting is enabled by default.",paraId:4,tocIndex:6},{value:"Action permissions",paraId:0},{value:"Action permissions apply universally to all data tables and are categorized by operation type. These permissions can be configured based on data scope: all data or the user's own data. The former allows operations on the entire data table, while the latter restricts operations to data relevant to the user.",paraId:5,tocIndex:7},{value:"Data Table Operation Permissions",paraId:0},{value:"Collection operation permissions allow fine-tuning of Action permissions by configuring access to resources within each data table. These permissions include:",paraId:6,tocIndex:8},{value:"Action permissions",paraId:7,tocIndex:8},{value:": These include adding, viewing, editing, deleting, exporting, and importing actions. Permissions are set based on data scope:",paraId:7,tocIndex:8},{value:"All records",paraId:8,tocIndex:8},{value:": Grants the user the ability to perform actions on all records within the data table.",paraId:8,tocIndex:8},{value:"Own records",paraId:8,tocIndex:8},{value:": Restricts the user to perform actions only on records they have created.",paraId:8,tocIndex:8},{value:"Field Permissions",paraId:9,tocIndex:8},{value:": Field permissions enable you to set specific permissions for each field during different operations. For instance, certain fields can be configured to be view-only, without editing privileges.",paraId:9,tocIndex:8},{value:"Menu permissions",paraId:0},{value:"Menu permissions control access based on menu items.",paraId:10,tocIndex:9},{value:"Plugin Configuration Permissions",paraId:0},{value:"Plugin configuration permissions control the ability to configure specific plugin parameters. When enabled, the corresponding plugin management interface appears in the management center.",paraId:11,tocIndex:10},{value:"Personal Center",paraId:0},{value:"Role Switching",paraId:0},{value:"Users can be assigned multiple roles and switch between them in the personal center. The default role when logging in is determined by the most recently switched role (this value updates with each switch) or, if not applicable, the first role (system default role).",paraId:12,tocIndex:12},{value:"Application in UI",paraId:0},{value:"Data Block Permissions",paraId:0},{value:"Visibility of data blocks in a data table is controlled by view operation permissions, with individual configurations taking precedence over global settings.",paraId:13,tocIndex:14},{value:'For example, under global permissions, the "admin" role has full access, but the order table may have individual permissions configured, making it invisible.',paraId:14,tocIndex:14},{value:"Field Permissions",paraId:0},{value:"View",paraId:15,tocIndex:15},{value:": Determines whether specific fields are visible at the field level, allowing control over which fields are visible to certain roles within the order table.",paraId:15,tocIndex:15},{value:"In the UI, only fields with configured permissions are visible within the order table block. System fields (Id, CreatedAt, LastUpdatedAt) retain view permissions even without specific configuration.",paraId:16,tocIndex:15},{value:"Edit",paraId:17,tocIndex:15},{value:": Controls whether fields can be edited and saved (updated).",paraId:17,tocIndex:15},{value:"In the UI, only fields with edit permissions are shown in the edit operation form block within the order table.",paraId:18,tocIndex:15},{value:"Similarly, only fields with add permissions are shown in the add operation form block within the order table.",paraId:19,tocIndex:15},{value:"Add",paraId:20,tocIndex:15},{value:": Determines whether fields can be added (created).",paraId:20,tocIndex:15},{value:"In the UI, only fields with add permissions are displayed within the add operation form block of the order table.",paraId:21,tocIndex:15},{value:"Export",paraId:22,tocIndex:15},{value:": Controls whether fields can be exported.",paraId:22,tocIndex:15},{value:"Import",paraId:22,tocIndex:15},{value:": Controls whether fields can be imported.",paraId:22,tocIndex:15},{value:"Operation Permissions",paraId:0},{value:"Individually configured permissions take the highest priority. If specific permissions are configured, they override global settings; otherwise, the global settings are applied.",paraId:23,tocIndex:16},{value:"Add new",paraId:24,tocIndex:16},{value:": Controls whether the add operation button is visible within a block.",paraId:24,tocIndex:16},{value:"When the add operation is permitted, the add button appears within the operation area of the order table block in the UI.",paraId:25,tocIndex:16},{value:"View",paraId:26,tocIndex:16},{value:": Determines whether the data block is visible.",paraId:26,tocIndex:16},{value:"In the UI, data blocks for other data tables remain hidden, but the order table block is shown if individual permissions are set.",paraId:27,tocIndex:16},{value:"Edit",paraId:28,tocIndex:16},{value:": Controls whether the edit operation button is displayed within a block.",paraId:28,tocIndex:16},{value:"Operation permissions can be further refined by setting the data scope.",paraId:29,tocIndex:16},{value:"Delete",paraId:30,tocIndex:16},{value:": Controls whether the delete operation button is visible within a block.",paraId:30,tocIndex:16},{value:"Export",paraId:31,tocIndex:16},{value:": Controls whether the export operation button is visible within a block.",paraId:31,tocIndex:16},{value:"Import",paraId:31,tocIndex:16},{value:": Controls whether the import operation button is visible within a block.",paraId:31,tocIndex:16},{value:"The visibility of a relationship field is determined by the permissions set on the source table's fields. These permissions control whether the entire relationship field component appears in the user interface.",paraId:32,tocIndex:18},{value:'For example, in the Order table, the "Customer" relationship field is restricted to view and import/export permissions, as depicted below:',paraId:33,tocIndex:18},{value:'In the UI, this configuration ensures that the "Customer" relationship field does not appear in the add and edit operation sections of the Order table.',paraId:34,tocIndex:18},{value:"The complete configuration process is illustrated below:",paraId:35,tocIndex:18},{value:"The permissions for fields within the relationship field component (such as those found in sub-tables or sub-forms) are determined by the permissions of the target data table.",paraId:36,tocIndex:18},{value:"When the relationship field component is a sub-form:",paraId:37,tocIndex:18},{value:'In this case, as shown, the "Customer" relationship field in the Order table is granted full permissions, while the Customer table itself is configured to be read-only.',paraId:38,tocIndex:18},{value:'The permissions for the Order table are set as follows, granting the "Customer" relationship field full access:',paraId:39,tocIndex:18},{value:"The permissions for the Customer table are configured to allow view-only access:",paraId:40,tocIndex:18},{value:'In the UI, this configuration results in the "Customer" relationship field being visible in the Order table section. However, when the interface is switched to a sub-form (where fields within the sub-form are visible in the details but hidden during new or edit operations), the behavior changes accordingly.',paraId:41,tocIndex:18},{value:"The complete configuration process is demonstrated below:",paraId:42,tocIndex:18},{value:"Further refinement of sub-form field permissions allows individual fields to be specifically controlled.",paraId:43,tocIndex:18},{value:'For instance, as shown below, the Customer table can be configured so that the "Customer Name" field is neither visible nor editable:',paraId:44,tocIndex:18},{value:"The complete configuration process for this setting is illustrated here:",paraId:45,tocIndex:18},{value:"When dealing with a sub-table instead of a sub-form, the configuration principles remain the same:",paraId:46,tocIndex:18},{value:'As illustrated, the "shipment" relationship field in the Order table has full permissions, while the shipment collection itself is set to read-only.',paraId:47,tocIndex:18},{value:"In the UI, this setup allows the relationship field to be visible. However, when the interface is switched to a sub-table (where fields within the sub-table are visible during viewing operations but hidden during new or edit operations), the behavior adjusts accordingly.",paraId:48,tocIndex:18},{value:"Fine-tuning sub-collection field permissions also enables specific control over individual fields.",paraId:49,tocIndex:18},{value:"The visibility of a relationship block is governed by the permissions set on the target table associated with the relationship field, independent of the permissions on the relationship field itself.",paraId:50,tocIndex:19},{value:'For example, the visibility of the "Customer" relationship block is controlled by the permissions configured for the Customer table:',paraId:51,tocIndex:19},{value:"The fields within a relationship block are controlled by the permissions set on the target table\u2019s fields.",paraId:52,tocIndex:19},{value:"As depicted below, the Customer table can be configured to allow viewing of specific fields only:",paraId:53,tocIndex:19}],oV={},rV={title:"API Key",toc:"menu",filename:"docs/en-US/handbook/api-keys/index.md",lastUpdated:173254844e4,description:"http://localhost:13000/admin/settings/api-keys/configuration"},dV=[{id:"api-key",depth:1,title:"API Key"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"add-api-key",depth:3,title:"Add API Key"},{id:"how-to-configure-app_key",depth:3,title:"How to configure APP_KEY"}],iV=[{value:"http://localhost:13000/admin/settings/api-keys/configuration",paraId:0,tocIndex:3},{value:"Notes",paraId:1,tocIndex:4},{value:"The added API key is for the current user, and the role is the role to which the current user belongs",paraId:2,tocIndex:4},{value:"Please make sure that the ",paraId:2,tocIndex:4},{value:"APP_KEY",paraId:2,tocIndex:4},{value:" environment variable has been configured and is kept confidential. If the APP_KEY changes, all added API keys will become invalid.",paraId:2,tocIndex:4},{value:"For the docker version, modify the docker-compose.yml file",paraId:3,tocIndex:5},{value:`services: app: image: nocobase/nocobase:main environment: + - APP_KEY=4jAokvLKTJgM0v_JseUkJ `,paraId:4,tocIndex:5},{value:"For the source code or create-nocobase-app installation, you can directly modify the APP_KEY in the .env file",paraId:5,tocIndex:5},{value:`APP_KEY=4jAokvLKTJgM0v_JseUkJ -`,paraId:6,tocIndex:5}],lV={},cV={title:"Extend Authentication Type",toc:"menu",filename:"docs/en-US/handbook/auth/dev/guide.md",lastUpdated:1732240239e3,description:"NocoBase supports extending user authentication types as needed. User authentication generally falls into two types: one is to determine user identity within the NocoBase application itself, such as password login, SMS login, etc.; the other is to have third-party services determine user identity and notify the NocoBase application of the result through callbacks, such as OIDC, SAML, and other authentication methods. The authentication process for these two different types of authentication methods in NocoBase is basically as follows:"},sV=[{id:"extend-authentication-type",depth:1,title:"Extend Authentication Type"},{id:"overview",depth:2,title:"Overview"},{id:"no-third-party-callbacks-are-required",depth:3,title:"No Third-party Callbacks are required"},{id:"dependent-on-third-party-callbacks",depth:3,title:"Dependent on Third-party Callbacks"},{id:"server",depth:2,title:"Server"},{id:"interface",depth:3,title:"Interface"},{id:"user-data",depth:3,title:"User Data"},{id:"authentication-type-registration",depth:3,title:"Authentication Type Registration"},{id:"client",depth:2,title:"Client"},{id:"sign-in-form",depth:3,title:"Sign In Form"},{id:"sign-in-button",depth:3,title:"Sign In Button"},{id:"sign-up-form",depth:3,title:"Sign Up Form"},{id:"backend-management-form",depth:3,title:"Backend Management Form"},{id:"request-apis",depth:3,title:"Request APIs"}],uV=[{value:"NocoBase supports extending user authentication types as needed. User authentication generally falls into two types: one is to determine user identity within the NocoBase application itself, such as password login, SMS login, etc.; the other is to have third-party services determine user identity and notify the NocoBase application of the result through callbacks, such as OIDC, SAML, and other authentication methods. The authentication process for these two different types of authentication methods in NocoBase is basically as follows:",paraId:0,tocIndex:1},{value:"The client uses the NocoBase SDK to call the login interface ",paraId:1,tocIndex:2},{value:"api.auth.signIn()",paraId:1,tocIndex:2},{value:", requesting the login interface ",paraId:1,tocIndex:2},{value:"auth:signIn",paraId:1,tocIndex:2},{value:", while carrying the current authenticator identifier through the request header ",paraId:1,tocIndex:2},{value:"X-Authenticator",paraId:1,tocIndex:2},{value:" to the backend.",paraId:1,tocIndex:2},{value:"The ",paraId:1,tocIndex:2},{value:"auth:signIn",paraId:1,tocIndex:2},{value:" interface forwards to the corresponding authentication type based on the authenticator identifier in the request header, and the ",paraId:1,tocIndex:2},{value:"validate",paraId:1,tocIndex:2},{value:" method in the registered authentication class of that authentication type performs the corresponding logical processing.",paraId:1,tocIndex:2},{value:"The client retrieves user information and authentication token from the ",paraId:1,tocIndex:2},{value:"auth:signIn",paraId:1,tocIndex:2},{value:" interface response, saves the token to Local Storage, and completes the login. This step is automatically handled internally by the SDK.",paraId:1,tocIndex:2},{value:"The client obtains the third-party login URL through its own registered interface (such as ",paraId:2,tocIndex:3},{value:"auth:getAuthUrl",paraId:2,tocIndex:3},{value:"), and carries information such as the application name and authenticator identifier according to the protocol.",paraId:2,tocIndex:3},{value:"Redirect to the third-party URL to complete the login. The third-party service calls the callback interface of the NocoBase application (which needs to be registered by itself, such as ",paraId:2,tocIndex:3},{value:"auth:redirect",paraId:2,tocIndex:3},{value:"), returns the authentication result, and returns information such as the application name and authenticator identifier.",paraId:2,tocIndex:3},{value:"In the callback interface method, parse the parameters to obtain the authenticator identifier, obtain the corresponding authentication class through ",paraId:2,tocIndex:3},{value:"AuthManager",paraId:2,tocIndex:3},{value:", and actively call the ",paraId:2,tocIndex:3},{value:"auth.signIn()",paraId:2,tocIndex:3},{value:" method. The ",paraId:2,tocIndex:3},{value:"auth.signIn()",paraId:2,tocIndex:3},{value:" method will call the ",paraId:2,tocIndex:3},{value:"validate()",paraId:2,tocIndex:3},{value:" method to handle the authentication logic.",paraId:2,tocIndex:3},{value:"After the callback method obtains the authentication token, it redirects back to the frontend page with a 302 status code, and carries the ",paraId:2,tocIndex:3},{value:"token",paraId:2,tocIndex:3},{value:" and authenticator identifier in the URL parameters, ",paraId:2,tocIndex:3},{value:"?authenticator=xxx&token=yyy",paraId:2,tocIndex:3},{value:".",paraId:2,tocIndex:3},{value:"Next, we'll discuss how to register server-side interfaces and client-side user interfaces.",paraId:3,tocIndex:3},{value:"The NocoBase kernel provides registration and management for extending authentication types. The core logic processing of extending the login plugin requires inheriting the ",paraId:4,tocIndex:5},{value:"Auth",paraId:4,tocIndex:5},{value:" abstract class of the kernel and implementing the corresponding standard interfaces.",paraId:4,tocIndex:5},{value:` +`,paraId:6,tocIndex:5}],lV={},cV={title:"Extend Authentication Type",toc:"menu",filename:"docs/en-US/handbook/auth/dev/guide.md",lastUpdated:173254844e4,description:"NocoBase supports extending user authentication types as needed. User authentication generally falls into two types: one is to determine user identity within the NocoBase application itself, such as password login, SMS login, etc.; the other is to have third-party services determine user identity and notify the NocoBase application of the result through callbacks, such as OIDC, SAML, and other authentication methods. The authentication process for these two different types of authentication methods in NocoBase is basically as follows:"},sV=[{id:"extend-authentication-type",depth:1,title:"Extend Authentication Type"},{id:"overview",depth:2,title:"Overview"},{id:"no-third-party-callbacks-are-required",depth:3,title:"No Third-party Callbacks are required"},{id:"dependent-on-third-party-callbacks",depth:3,title:"Dependent on Third-party Callbacks"},{id:"server",depth:2,title:"Server"},{id:"interface",depth:3,title:"Interface"},{id:"user-data",depth:3,title:"User Data"},{id:"authentication-type-registration",depth:3,title:"Authentication Type Registration"},{id:"client",depth:2,title:"Client"},{id:"sign-in-form",depth:3,title:"Sign In Form"},{id:"sign-in-button",depth:3,title:"Sign In Button"},{id:"sign-up-form",depth:3,title:"Sign Up Form"},{id:"backend-management-form",depth:3,title:"Backend Management Form"},{id:"request-apis",depth:3,title:"Request APIs"}],uV=[{value:"NocoBase supports extending user authentication types as needed. User authentication generally falls into two types: one is to determine user identity within the NocoBase application itself, such as password login, SMS login, etc.; the other is to have third-party services determine user identity and notify the NocoBase application of the result through callbacks, such as OIDC, SAML, and other authentication methods. The authentication process for these two different types of authentication methods in NocoBase is basically as follows:",paraId:0,tocIndex:1},{value:"The client uses the NocoBase SDK to call the login interface ",paraId:1,tocIndex:2},{value:"api.auth.signIn()",paraId:1,tocIndex:2},{value:", requesting the login interface ",paraId:1,tocIndex:2},{value:"auth:signIn",paraId:1,tocIndex:2},{value:", while carrying the current authenticator identifier through the request header ",paraId:1,tocIndex:2},{value:"X-Authenticator",paraId:1,tocIndex:2},{value:" to the backend.",paraId:1,tocIndex:2},{value:"The ",paraId:1,tocIndex:2},{value:"auth:signIn",paraId:1,tocIndex:2},{value:" interface forwards to the corresponding authentication type based on the authenticator identifier in the request header, and the ",paraId:1,tocIndex:2},{value:"validate",paraId:1,tocIndex:2},{value:" method in the registered authentication class of that authentication type performs the corresponding logical processing.",paraId:1,tocIndex:2},{value:"The client retrieves user information and authentication token from the ",paraId:1,tocIndex:2},{value:"auth:signIn",paraId:1,tocIndex:2},{value:" interface response, saves the token to Local Storage, and completes the login. This step is automatically handled internally by the SDK.",paraId:1,tocIndex:2},{value:"The client obtains the third-party login URL through its own registered interface (such as ",paraId:2,tocIndex:3},{value:"auth:getAuthUrl",paraId:2,tocIndex:3},{value:"), and carries information such as the application name and authenticator identifier according to the protocol.",paraId:2,tocIndex:3},{value:"Redirect to the third-party URL to complete the login. The third-party service calls the callback interface of the NocoBase application (which needs to be registered by itself, such as ",paraId:2,tocIndex:3},{value:"auth:redirect",paraId:2,tocIndex:3},{value:"), returns the authentication result, and returns information such as the application name and authenticator identifier.",paraId:2,tocIndex:3},{value:"In the callback interface method, parse the parameters to obtain the authenticator identifier, obtain the corresponding authentication class through ",paraId:2,tocIndex:3},{value:"AuthManager",paraId:2,tocIndex:3},{value:", and actively call the ",paraId:2,tocIndex:3},{value:"auth.signIn()",paraId:2,tocIndex:3},{value:" method. The ",paraId:2,tocIndex:3},{value:"auth.signIn()",paraId:2,tocIndex:3},{value:" method will call the ",paraId:2,tocIndex:3},{value:"validate()",paraId:2,tocIndex:3},{value:" method to handle the authentication logic.",paraId:2,tocIndex:3},{value:"After the callback method obtains the authentication token, it redirects back to the frontend page with a 302 status code, and carries the ",paraId:2,tocIndex:3},{value:"token",paraId:2,tocIndex:3},{value:" and authenticator identifier in the URL parameters, ",paraId:2,tocIndex:3},{value:"?authenticator=xxx&token=yyy",paraId:2,tocIndex:3},{value:".",paraId:2,tocIndex:3},{value:"Next, we'll discuss how to register server-side interfaces and client-side user interfaces.",paraId:3,tocIndex:3},{value:"The NocoBase kernel provides registration and management for extending authentication types. The core logic processing of extending the login plugin requires inheriting the ",paraId:4,tocIndex:5},{value:"Auth",paraId:4,tocIndex:5},{value:" abstract class of the kernel and implementing the corresponding standard interfaces.",paraId:4,tocIndex:5},{value:` For the complete API, see `,paraId:4,tocIndex:5},{value:"Auth",paraId:5,tocIndex:5},{value:".",paraId:4,tocIndex:5},{value:`import { Auth } from '@nocobase/auth'; class CustomAuth extends Auth { @@ -17014,12 +17067,12 @@ class CustomAuthPlugin extends Plugin { // Use in component const api = useAPIClient(); api.auth.signIn(data, authenticator); -`,paraId:28,tocIndex:13},{value:"For detailed API references, see ",paraId:29,tocIndex:13},{value:"@nocobase/sdk - Auth",paraId:30,tocIndex:13},{value:".",paraId:29,tocIndex:13}],pV={},IV={title:"Auth: CAS",toc:"menu",filename:"docs/en-US/handbook/auth-cas/index.md",lastUpdated:1732240239e3,description:"The Auth: CAS plugin follows the CAS (Central Authentication Service) protocol standard, allowing users to sign in to NocoBase using accounts provided by third-party identity authentication service providers (IdP)."},_V=[{id:"auth-cas",depth:1,title:"Auth: CAS"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"activate-plugin",depth:3,title:"Activate Plugin"},{id:"add-cas-authentication",depth:3,title:"Add CAS Authentication"},{id:"visit-the-sign-in-page",depth:3,title:"Visit the Sign in Page"}],vV=[{value:"The Auth: CAS plugin follows the CAS (Central Authentication Service) protocol standard, allowing users to sign in to NocoBase using accounts provided by third-party identity authentication service providers (IdP).",paraId:0,tocIndex:1},{value:"Visit the user authentication management page",paraId:1,tocIndex:5},{value:"http://localhost:13000/admin/settings/auth/authenticators",paraId:2,tocIndex:5},{value:"Add CAS authentication method",paraId:3,tocIndex:5},{value:"Configure CAS and activate",paraId:4,tocIndex:5},{value:"http://localhost:13000/signin",paraId:5,tocIndex:6}],mV={},hV={title:"Auth: SMS",toc:"menu",filename:"docs/en-US/handbook/auth-sms/index.md",lastUpdated:1732240239e3,description:"The SMS authentication plugin supports users to register through SMS and log in to NocoBase."},fV=[{id:"auth-sms",depth:1,title:"Auth: SMS"},{id:"introduction",depth:2,title:"Introduction"},{id:"add-sms-authentication",depth:2,title:"Add SMS Authentication"},{id:"configuration",depth:2,title:"Configuration"},{id:"log-in",depth:2,title:"Log In"}],xV=[{value:"The SMS authentication plugin supports users to register through SMS and log in to NocoBase.",paraId:0,tocIndex:1},{value:"It needs to be used in conjunction with the SMS verification code function provided by the ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-verification",paraId:2,tocIndex:1},{value:" plugin",paraId:2,tocIndex:1},{value:"Enter the user authentication plugin management page.",paraId:3,tocIndex:2},{value:"Add - SMS",paraId:4,tocIndex:2},{value:"For the configuration of the SMS verification code function, see the ",paraId:5,tocIndex:3},{value:"Verification Plugin (@nocobase/plugin-verification) Documentation",paraId:6,tocIndex:3},{value:", the SMS login authentication function will use the configured and set default SMS verification code Provider to send SMS.",paraId:5,tocIndex:3},{value:"Sign up automatically when the user does not exist: When this option is checked, when the user's mobile phone number does not exist, a new user will be registered using the mobile phone number as the nickname.",paraId:7,tocIndex:3},{value:"Visit the login page to use.",paraId:8,tocIndex:4}],gV={},bV={title:"Calendar Block",toc:"menu",filename:"docs/en-US/handbook/calendar/index.md",lastUpdated:1732240239e3,description:"The Calendar Block offers a streamlined way to view and manage events and date-related data in a calendar format, making it perfect for scheduling meetings, planning events, and organizing your time efficiently."},yV=[{id:"calendar-block",depth:1,title:"Calendar Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"configure-fields",depth:2,title:"Configure Fields"},{id:"display-lunar-calendar",depth:3,title:"Display Lunar Calendar"},{id:"set-data-range",depth:3,title:"Set Data Range"},{id:"set-block-height",depth:3,title:"Set Block Height"},{id:"background-color-field",depth:3,title:"Background Color Field"},{id:"configure-actions",depth:2,title:"Configure Actions"},{id:"today",depth:3,title:"Today"},{id:"switch-view",depth:3,title:"Switch View"}],wV=[{value:"The Calendar Block offers a streamlined way to view and manage events and date-related data in a calendar format, making it perfect for scheduling meetings, planning events, and organizing your time efficiently.",paraId:0,tocIndex:1},{value:"This plugin comes pre-installed, so no additional setup is required.",paraId:1,tocIndex:2},{value:` - `,paraId:2},{value:"Title Field: Displays key information directly on the calendar bars.",paraId:3,tocIndex:3},{value:"Start Time: Indicates when the task begins.",paraId:3,tocIndex:3},{value:"End Time: Marks when the task ends.",paraId:3,tocIndex:3},{value:"Clicking on a task bar highlights the selection and opens a detailed pop-up window.",paraId:4,tocIndex:3},{value:"Edit Block Title",paraId:5,tocIndex:5},{value:"Save as Block Template",paraId:6,tocIndex:5},{value:"For additional information, see ",paraId:7,tocIndex:6},{value:"Set Data Range",paraId:8,tocIndex:6},{value:".",paraId:7,tocIndex:6},{value:"Example: Adjust the height of the order calendar block. No scrollbar will appear inside the calendar block.",paraId:9,tocIndex:7},{value:"For more information, refer to ",paraId:10,tocIndex:7},{value:"Block Height",paraId:11,tocIndex:7},{value:"The version of NocoBase needs to be v1.4.0-beta or above.",paraId:12},{value:"This option can be used to configure the background color of calendar events. Here's how to use it:",paraId:13},{value:"The calendar data table needs to have a field of type ",paraId:14},{value:"Single select",paraId:14},{value:" or ",paraId:14},{value:"Radio group",paraId:14},{value:", and this field needs to be configured with colors.",paraId:14},{value:"Then, return to the calendar block configuration interface and select the field you just configured with colors in the ",paraId:14},{value:"Background Color Field",paraId:14},{value:".",paraId:14},{value:"Finally, you can try selecting a color for a calendar event and click submit. You'll see that the color has taken effect.",paraId:14},{value:'The "Today" button in the Calendar Block offers quick navigation, enabling users to instantly return to the current date after exploring other dates.',paraId:15,tocIndex:10},{value:"The default view is set to Month.",paraId:16,tocIndex:11}],kV={},SV={title:"Menu",toc:"menu",filename:"docs/en-US/handbook/ui/menus/index.md",lastUpdated:1732240239e3,description:"Menus are used to organize pages and external links. In the default page layout template of NocoBase, the menu is located at the top and on the left side. Among them, the top is the primary menu, and the left side is for secondary and infinitely nested sub-menus."},UV=[{id:"menu",depth:1,title:"Menu"},{id:"types-of-menu-items",depth:2,title:"Types of Menu Items"},{id:"group",depth:3,title:"Group"},{id:"page",depth:3,title:"Page"},{id:"link",depth:3,title:"Link"},{id:"configuring-the-menu",depth:2,title:"Configuring the Menu"},{id:"menu-item-configuration",depth:3,title:"Menu Item Configuration"}],PV=[{value:"Menus are used to organize pages and external links. In the default page layout template of NocoBase, the menu is located at the top and on the left side. Among them, the top is the primary menu, and the left side is for secondary and infinitely nested sub-menus.",paraId:0,tocIndex:0},{value:"NocoBase has three built-in types of menu items:",paraId:1,tocIndex:1},{value:"Group",paraId:2,tocIndex:1},{value:"Page",paraId:2,tocIndex:1},{value:"Link",paraId:2,tocIndex:1},{value:'"Group" is used to group menu items, which can be located at the top or on the left side. Within a group, you can continue to create sub-groups, meaning the menu can have an infinite hierarchy.',paraId:3,tocIndex:2},{value:"A page can serve as a container for blocks, housing a variety of blocks. (See ",paraId:4,tocIndex:3},{value:"Pages",paraId:5,tocIndex:3},{value:")",paraId:4,tocIndex:3},{value:"Links can redirect to third-party URLs. You can use variables in the URL and Search params.",paraId:6,tocIndex:4},{value:"After entering the interface configuration mode, there are two icons in the upper right corner of the menu item:",paraId:7,tocIndex:5},{value:"Drag to move",paraId:8,tocIndex:5},{value:"Menu item configuration",paraId:8,tocIndex:5},{value:"Edit: Includes the menu item's title, icon, etc.",paraId:9,tocIndex:6},{value:'Move to: In addition to dragging to move, you can also quickly move a menu item via "Move to", allowing you to move a menu item to the front, back, or inside of another menu item.',paraId:9,tocIndex:6},{value:"Insert before",paraId:9,tocIndex:6},{value:"Insert after",paraId:9,tocIndex:6},{value:"Insert inner (Only for group types)",paraId:9,tocIndex:6},{value:"Delete",paraId:9,tocIndex:6}],TV={},CV={title:"Page",toc:"menu",filename:"docs/en-US/handbook/ui/pages/index.md",lastUpdated:1732240239e3,description:"NocoBase's pages can act as containers for blocks. They are like a canvas where you can freely place a variety of blocks."},AV=[{id:"page",depth:1,title:"Page"},{id:"page-structure",depth:2,title:"Page Structure"},{id:"page-settings",depth:2,title:"Page Settings"},{id:"enable-header",depth:3,title:"Enable Header"},{id:"page-title",depth:3,title:"Page Title"},{id:"enable-tabs",depth:3,title:"Enable Tabs"},{id:"adding-blocks",depth:2,title:"Adding Blocks"}],qV=[{value:"NocoBase's pages can act as containers for blocks. They are like a canvas where you can freely place a variety of blocks.",paraId:0,tocIndex:0},{value:"After creating a page through the ",paraId:1,tocIndex:1},{value:"menu",paraId:2,tocIndex:1},{value:", you can see that an empty page consists of the following two parts:",paraId:1,tocIndex:1},{value:`Header -`,paraId:3,tocIndex:1},{value:"Page title",paraId:4,tocIndex:1},{value:"Tabs",paraId:4,tocIndex:1},{value:"Block container",paraId:3,tocIndex:1},{value:"Hovering the mouse over the configuration icon at the top right of the page, you can see the page configuration options:",paraId:5,tocIndex:2},{value:"Configurable items include:",paraId:6,tocIndex:2},{value:"Enable page header: Controls whether to display the header;",paraId:7,tocIndex:2},{value:"Display page title: Whether to display the page title in the header;",paraId:7,tocIndex:2},{value:"Edit page title: The default page title is the menu item title, which can be customized;",paraId:7,tocIndex:2},{value:"Enable tabs: Off by default, enabling this option allows adding multiple tabs.",paraId:7,tocIndex:2},{value:"Typically, we need to enable the header area to display the page title and tabs. However, there are situations where we might not want to enable it, for instance, when creating a Dashboard page where a top-level menu can effectively reflect the content of the page. In this case, we can disable the header and only display the blocks within the page.",paraId:8,tocIndex:3},{value:`The default page title is the name of the menu item. By clicking "Edit Page Title," it can be modified. Just like with the header, sometimes we don't need to display the page title and only need to show the tabs, in which case you can disable the title.`,paraId:9,tocIndex:4},{value:"When the content of a page is too much, or it is appropriate to divide it into several independent parts, we can enable tabs. Each tab is an independent block container. As shown below, we added 3 tabs to the orders page to display all orders, completed orders, and refunded orders. By moving the mouse to the tab title, you can see the sort and configuration buttons at the top right corner.",paraId:10,tocIndex:5},{value:'Click "Add block" to add an unlimited number of blocks to the page (see the introduction of ',paraId:11,tocIndex:6},{value:"Blocks",paraId:12,tocIndex:6},{value:").",paraId:11,tocIndex:6},{value:"After adding several blocks, you can use the move button at the top right corner of each block to drag and arrange them freely, adjusting the layout to achieve the most suitable effect.",paraId:13,tocIndex:6}],EV={},DV={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow/index.md",lastUpdated:1732240239e3,description:"The Workflow plugin is a powerful tool commonly known as a Business Process Management (BPM) tool in the industry. It is used for designing and orchestration of business processes based on data models. By organizing the trigger conditions and flow nodes, it makes the business process running automatically."},OV=[{id:"overview",depth:1,title:"Overview"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"learn-more",depth:2,title:"Learn More"}],RV=[{value:"The Workflow plugin is a powerful tool commonly known as a Business Process Management (BPM) tool in the industry. It is used for designing and orchestration of business processes based on data models. By organizing the trigger conditions and flow nodes, it makes the business process running automatically.",paraId:0,tocIndex:1},{value:"In NocoBase applications, the Workflow plugin is designed for no-code scenarios, allowing users to orchestrate and process common business tasks through the UI. Therefore they can change the business processes in the system runtime dynamically.",paraId:1,tocIndex:1},{value:"Each workflow consists of a trigger and several nodes. Through the specific functionality of each node, the workflow describes the business logic that needs to be processed when the corresponding event occurs in the system. A typical workflow is illustrated in the following diagram:",paraId:2,tocIndex:1},{value:"The functionality of the above workflow is as follows: When a user submits an order form, the system automatically checks the inventory of the products in the order. If there is sufficient stock, the inventory will be deducted; otherwise, the order will be updated as invalid.",paraId:3,tocIndex:1},{value:"As a more general perspective, workflows in NocoBase applications can address the following scenarios:",paraId:4,tocIndex:1},{value:"Data automation processing",paraId:5,tocIndex:1},{value:": For example, automatically process data in a collection according to predefined workflows, such as calculating and updating associated data after a triggered event.",paraId:5,tocIndex:1},{value:"Human-involved business processes",paraId:5,tocIndex:1},{value:": When a business process cannot be fully automated, partial decision-making can be assigned to user through manual nodes, such as approval and review. After the results of processing are submitted by user, the subsequent processes continue.",paraId:5,tocIndex:1},{value:"Integration with external systems",paraId:5,tocIndex:1},{value:": API interfaces of external systems can be called through request nodes (or nodes that extend various types of third-party function calls) to achieve data interaction with external systems.",paraId:5,tocIndex:1},{value:"Workflow is a built-in plugin in NocoBase and does not require additional installation.",paraId:6,tocIndex:2},{value:"Quick start",paraId:7,tocIndex:3},{value:`Advanced understanding -`,paraId:8,tocIndex:3},{value:"Executions",paraId:9,tocIndex:3},{value:"Advanced Options",paraId:10,tocIndex:3},{value:"Variables",paraId:11,tocIndex:3},{value:"Revisions",paraId:12,tocIndex:3},{value:"Triggers",paraId:13,tocIndex:3},{value:"Nodes",paraId:14,tocIndex:3},{value:"Development Guide",paraId:15,tocIndex:3}],MV={},LV={title:"Overview",toc:"menu",filename:"docs/en-US/manual/collection/index.md",lastUpdated:1732240239e3},NV=[{id:"overview",depth:1,title:"Overview"}],zV=[],FV={},BV={title:"\u64CD\u4F5C",toc:"menu",filename:"docs/en-US/manual/ui/actions/index.md",lastUpdated:1732240239e3,description:"\u5728 UI \u91CC\uFF0C\u64CD\u4F5C\u662F\u7528\u6765\u89E6\u53D1\u4E00\u6BB5\u6307\u4EE4\u7684\u6309\u94AE\u3002\u53EF\u4EE5\u76F4\u63A5\u653E\u5728\u9875\u9762\u3001\u5BF9\u8BDD\u6846\u3001\u62BD\u5C49\u91CC\uFF0C\u4E5F\u53EF\u4EE5\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528\u3002\u76EE\u524D\u53EF\u52A8\u6001\u914D\u7F6E\u7684\u64CD\u4F5C\uFF0C\u4E3B\u8981\u662F\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528"},jV=[{id:"\u64CD\u4F5C",depth:1,title:"\u64CD\u4F5C"},{id:"\u533A\u5757\u91CC\u7684\u64CD\u4F5C",depth:2,title:"\u533A\u5757\u91CC\u7684\u64CD\u4F5C"},{id:"\u64CD\u4F5C\u7684\u8BBE\u8BA1\u5668\u5DE5\u5177\u680F",depth:2,title:"\u64CD\u4F5C\u7684\u8BBE\u8BA1\u5668\uFF08\u5DE5\u5177\u680F\uFF09"},{id:"\u64CD\u4F5C\u7684\u62D6\u62FD\u6392\u5E8F",depth:2,title:"\u64CD\u4F5C\u7684\u62D6\u62FD\u6392\u5E8F"},{id:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E",depth:2,title:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E"},{id:"\u64CD\u4F5C\u7684\u8054\u52A8\u89C4\u5219",depth:2,title:"\u64CD\u4F5C\u7684\u8054\u52A8\u89C4\u5219"}],HV=[{value:"\u5728 UI \u91CC\uFF0C\u64CD\u4F5C\u662F\u7528\u6765\u89E6\u53D1\u4E00\u6BB5\u6307\u4EE4\u7684\u6309\u94AE\u3002\u53EF\u4EE5\u76F4\u63A5\u653E\u5728\u9875\u9762\u3001\u5BF9\u8BDD\u6846\u3001\u62BD\u5C49\u91CC\uFF0C\u4E5F\u53EF\u4EE5\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528\u3002\u76EE\u524D\u53EF\u52A8\u6001\u914D\u7F6E\u7684\u64CD\u4F5C\uFF0C\u4E3B\u8981\u662F\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528",paraId:0,tocIndex:0},{value:"\u548C\u533A\u5757\u3001\u5B57\u6BB5\u4E0D\u592A\u4E00\u6837\uFF0C\u64CD\u4F5C\u7684\u8BBE\u8BA1\u5668\u91CC\u53EA\u6709\u4E24\u4E2A\u56FE\u6807\uFF0C\u5206\u522B\u4E3A\uFF1A",paraId:1,tocIndex:2},{value:"\u62D6\u62FD",paraId:2,tocIndex:2},{value:"\u53C2\u6570\u914D\u7F6E",paraId:2,tocIndex:2},{value:"\u6309\u4F4F\u6309\u94AE\u8BBE\u8BA1\u5668\u91CC\u7684\u300C\u62D6\u62FD\u300D\u56FE\u6807\uFF0C\u53EF\u4EE5\u5BF9\u6309\u94AE\u8FDB\u884C\u6392\u5E8F",paraId:3,tocIndex:3},{value:`\u7F3A\u5C11\u4E00\u4E2A\u52A8\u56FE -`,paraId:4,tocIndex:3},{value:"\u7F16\u8F91\u6309\u94AE",paraId:5,tocIndex:4},{value:"\u6253\u5F00\u65B9\u5F0F\uFF1A\u62BD\u5C49\u3001\u5BF9\u8BDD\u6846",paraId:5,tocIndex:4},{value:"\u5F39\u7A97\u5C3A\u5BF8\uFF1A\u5927\u3001\u4E2D\u3001\u5C0F",paraId:5,tocIndex:4},{value:"\u5220\u9664",paraId:5,tocIndex:4},{value:"\u6709\u4E0A\u4E0B\u6587\u6570\u636E\u7684\u64CD\u4F5C\uFF0C\u8FD8\u53EF\u4EE5\u914D\u7F6E\u300C\u8054\u52A8\u89C4\u5219\u300D",paraId:6,tocIndex:5},{value:"\u8054\u52A8\u89C4\u5219\u914D\u7F6E",paraId:7,tocIndex:5},{value:"\u53EF\u4EE5\u6DFB\u52A0\u591A\u6761\uFF0C\u6761\u4EF6\u4E0E\u7B5B\u9009\u7528\u6CD5\u4E00\u81F4\uFF0C\u53EF\u4EE5\u63A7\u5236\u6309\u94AE\u7684\u663E\u793A\u3001\u9690\u85CF\u3001\u542F\u7528\u3001\u7981\u7528",paraId:8,tocIndex:5}],WV={},$V={title:"\u6253\u5370",toc:"menu",filename:"docs/en-US/manual/ui/actions/print.md",lastUpdated:1732240239e3},GV=[{id:"\u6253\u5370",depth:1,title:"\u6253\u5370"}],VV=[],KV={},ZV={title:"\u4F7F\u7528\u624B\u518C",toc:"menu",filename:"docs/en-US/plugins/auth/user/index.md",lastUpdated:1732240239e3,description:"\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B89\u88C5\u65F6\uFF0C\u4F1A\u521D\u59CB\u5316\u4E00\u4E2A \u5BC6\u7801 \u7684\u8BA4\u8BC1\u65B9\u5F0F\uFF0C\u57FA\u4E8E\u7528\u6237\u7684\u7528\u6237\u540D\u548C\u90AE\u7BB1\u3002"},YV=[{id:"\u4F7F\u7528\u624B\u518C",depth:1,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u7528\u6237\u8BA4\u8BC1\u7BA1\u7406",depth:2,title:"\u7528\u6237\u8BA4\u8BC1\u7BA1\u7406"},{id:"\u6FC0\u6D3B\u8BA4\u8BC1\u7C7B\u578B",depth:2,title:"\u6FC0\u6D3B\u8BA4\u8BC1\u7C7B\u578B"},{id:"\u7528\u6237\u8BA4\u8BC1\u7C7B\u578B",depth:2,title:"\u7528\u6237\u8BA4\u8BC1\u7C7B\u578B"},{id:"\u5BC6\u7801\u8BA4\u8BC1",depth:2,title:"\u5BC6\u7801\u8BA4\u8BC1"},{id:"\u914D\u7F6E\u754C\u9762",depth:3,title:"\u914D\u7F6E\u754C\u9762"},{id:"\u5141\u8BB8\u6CE8\u518C",depth:3,title:"\u5141\u8BB8\u6CE8\u518C"}],QV=[{value:"\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B89\u88C5\u65F6\uFF0C\u4F1A\u521D\u59CB\u5316\u4E00\u4E2A ",paraId:0,tocIndex:1},{value:"\u5BC6\u7801",paraId:0,tocIndex:1},{value:" \u7684\u8BA4\u8BC1\u65B9\u5F0F\uFF0C\u57FA\u4E8E\u7528\u6237\u7684\u7528\u6237\u540D\u548C\u90AE\u7BB1\u3002",paraId:0,tocIndex:1},{value:"\u53EA\u6709\u6FC0\u6D3B\u7684\u8BA4\u8BC1\u7C7B\u578B\u624D\u4F1A\u663E\u793A\u5728\u767B\u5F55\u9875\u9762",paraId:1,tocIndex:2},{value:"NocoBase \u76EE\u524D\u652F\u6301\u7684\u7528\u6237\u8BA4\u8BC1\u7C7B\u578B\u6709\uFF1A",paraId:2,tocIndex:3},{value:"\u5BC6\u7801 (Password)\uFF0C\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5185\u7F6E",paraId:3,tocIndex:3},{value:"\u77ED\u4FE1 (SMS)\uFF0C",paraId:3,tocIndex:3},{value:"sms-auth \u63D2\u4EF6",paraId:4,tocIndex:3},{value:" \u6269\u5C55",paraId:3,tocIndex:3},{value:"CAS\uFF0C",paraId:3,tocIndex:3},{value:"cas-auth \u63D2\u4EF6",paraId:5,tocIndex:3},{value:" \u6269\u5C55",paraId:3,tocIndex:3},{value:"SAML\uFF0C",paraId:3,tocIndex:3},{value:"saml-auth \u63D2\u4EF6",paraId:6,tocIndex:3},{value:" \u6269\u5C55",paraId:3,tocIndex:3},{value:"OIDC\uFF0C",paraId:3,tocIndex:3},{value:"oidc-auth \u63D2\u4EF6",paraId:7,tocIndex:3},{value:" \u6269\u5C55",paraId:3,tocIndex:3},{value:"\u9664\u6B64\u4E4B\u5916\uFF0C\u4E5F\u53EF\u4EE5\u81EA\u5DF1\u6269\u5C55\u7528\u6237\u8BA4\u8BC1\uFF0C\u53C2\u8003",paraId:8,tocIndex:3},{value:"\u5F00\u53D1\u6307\u5357",paraId:9,tocIndex:3},{value:"\u3002",paraId:8,tocIndex:3},{value:"\u5141\u8BB8\u6CE8\u518C\u65F6\uFF0C\u767B\u5F55\u9875\u4F1A\u663E\u793A\u521B\u5EFA\u8D26\u53F7\u7684\u8FDE\u63A5\uFF0C\u5E76\u53EF\u4EE5\u8DF3\u8F6C\u81F3\u6CE8\u518C\u9875",paraId:10,tocIndex:6},{value:"\u6CE8\u518C\u9875",paraId:11,tocIndex:6},{value:"\u4E0D\u5141\u8BB8\u6CE8\u518C\u65F6\uFF0C\u767B\u5F55\u9875\u4E0D\u4F1A\u663E\u793A\u521B\u5EFA\u8D26\u53F7\u7684\u8FDE\u63A5",paraId:12,tocIndex:6},{value:"\u4E0D\u5141\u8BB8\u6CE8\u518C\u65F6\uFF0C\u65E0\u6CD5\u8BBF\u95EE\u6CE8\u518C\u9875\u9762",paraId:13,tocIndex:6}],JV={},XV={title:"Roadmap",toc:"menu",filename:"docs/en-US/welcome/release/roadmap.md",lastUpdated:1732240239e3,description:"Updated on June 11, 2024"},eK=[{id:"roadmap",depth:1,title:"Roadmap"},{id:"features",depth:2,title:"Features:"},{id:"plugins",depth:2,title:"Plugins:"}],aK=[{value:"Updated on June 11, 2024",paraId:0,tocIndex:0},{value:"We are developing or have already planned the following new features and plugins, \u2611\uFE0F indicates just completed and published:",paraId:1,tocIndex:0},{value:"Field default values support expressions",paraId:2,tocIndex:1},{value:"Association fields support linkage rules",paraId:2,tocIndex:1},{value:"Record open mode: Page (alongside Dialog, Drawer)",paraId:2,tocIndex:1},{value:" Link action, supports variables and expressions",paraId:2,tocIndex:1},{value:" Data scope and field default values support Query params",paraId:2,tocIndex:1},{value:" Set block height",paraId:2,tocIndex:1},{value:" Markdown supports variables",paraId:2,tocIndex:1},{value:" Iframe address supports variables.",paraId:2,tocIndex:1},{value:"Support for linked refresh between blocks",paraId:2,tocIndex:1},{value:"Add Charts blocks in pop-ups",paraId:2,tocIndex:1},{value:" Refactor the Import and Export plugin to handle more data at a time",paraId:2,tocIndex:1},{value:"Single record/popup supports independent URL",paraId:2,tocIndex:1},{value:" Improved tree table block",paraId:2,tocIndex:1},{value:`Workflow refactoring -`,paraId:2,tocIndex:1},{value:" Create record node",paraId:3,tocIndex:1},{value:" Update record node",paraId:3,tocIndex:1},{value:"Automatically handle variable references (deprecate preload)",paraId:3,tocIndex:1},{value:"Date and time processing engine",paraId:2,tocIndex:1},{value:"Distributed architecture",paraId:2,tocIndex:1},{value:"Plugin tutorial",paraId:2,tocIndex:1},{value:" DingTalk",paraId:4,tocIndex:2},{value:"Wechat",paraId:4,tocIndex:2},{value:" Scan QR code",paraId:4,tocIndex:2},{value:" Workbench block",paraId:4,tocIndex:2},{value:" Tree block",paraId:4,tocIndex:2},{value:"Audit logs",paraId:4,tocIndex:2},{value:"Action: Import records pro",paraId:4,tocIndex:2},{value:"Action: Export records pro",paraId:4,tocIndex:2},{value:"Multi-application manager",paraId:4,tocIndex:2},{value:"Share pages",paraId:4,tocIndex:2},{value:"Data source: API",paraId:4,tocIndex:2},{value:"Workflow: Script node",paraId:4,tocIndex:2},{value:"Workflow: Webhook trigger",paraId:4,tocIndex:2},{value:"Input mask",paraId:4,tocIndex:2},{value:"Embed External Systems",paraId:4,tocIndex:2},{value:"New Mobile client",paraId:4,tocIndex:2},{value:"Notification",paraId:4,tocIndex:2}],tK={},nK={title:"Application",toc:"menu",filename:"docs/en-US/api/client/application.md",lastUpdated:1732240239e3,description:"Create an application instance."},oK=[{id:"application",depth:1,title:"Application"},{id:"constructor",depth:2,title:"Constructor"},{id:"constructor-1",depth:3,title:"constructor()"},{id:"methods",depth:2,title:"Methods"},{id:"use",depth:3,title:"use()"},{id:"render",depth:3,title:"render()"}],rK=[{value:"constructor()",paraId:0},{value:"Create an application instance.",paraId:1,tocIndex:2},{value:"Signature",paraId:2,tocIndex:2},{value:"constructor(options: ApplicationOptions)",paraId:3,tocIndex:2},{value:"Example",paraId:4,tocIndex:2},{value:`const app = new Application({ +`,paraId:28,tocIndex:13},{value:"For detailed API references, see ",paraId:29,tocIndex:13},{value:"@nocobase/sdk - Auth",paraId:30,tocIndex:13},{value:".",paraId:29,tocIndex:13}],pV={},IV={title:"Auth: CAS",toc:"menu",filename:"docs/en-US/handbook/auth-cas/index.md",lastUpdated:173254844e4,description:"The Auth: CAS plugin follows the CAS (Central Authentication Service) protocol standard, allowing users to sign in to NocoBase using accounts provided by third-party identity authentication service providers (IdP)."},_V=[{id:"auth-cas",depth:1,title:"Auth: CAS"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"activate-plugin",depth:3,title:"Activate Plugin"},{id:"add-cas-authentication",depth:3,title:"Add CAS Authentication"},{id:"visit-the-sign-in-page",depth:3,title:"Visit the Sign in Page"}],vV=[{value:"The Auth: CAS plugin follows the CAS (Central Authentication Service) protocol standard, allowing users to sign in to NocoBase using accounts provided by third-party identity authentication service providers (IdP).",paraId:0,tocIndex:1},{value:"Visit the user authentication management page",paraId:1,tocIndex:5},{value:"http://localhost:13000/admin/settings/auth/authenticators",paraId:2,tocIndex:5},{value:"Add CAS authentication method",paraId:3,tocIndex:5},{value:"Configure CAS and activate",paraId:4,tocIndex:5},{value:"http://localhost:13000/signin",paraId:5,tocIndex:6}],mV={},hV={title:"Auth: SMS",toc:"menu",filename:"docs/en-US/handbook/auth-sms/index.md",lastUpdated:173254844e4,description:"The SMS authentication plugin supports users to register through SMS and log in to NocoBase."},fV=[{id:"auth-sms",depth:1,title:"Auth: SMS"},{id:"introduction",depth:2,title:"Introduction"},{id:"add-sms-authentication",depth:2,title:"Add SMS Authentication"},{id:"configuration",depth:2,title:"Configuration"},{id:"log-in",depth:2,title:"Log In"}],xV=[{value:"The SMS authentication plugin supports users to register through SMS and log in to NocoBase.",paraId:0,tocIndex:1},{value:"It needs to be used in conjunction with the SMS verification code function provided by the ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-verification",paraId:2,tocIndex:1},{value:" plugin",paraId:2,tocIndex:1},{value:"Enter the user authentication plugin management page.",paraId:3,tocIndex:2},{value:"Add - SMS",paraId:4,tocIndex:2},{value:"For the configuration of the SMS verification code function, see the ",paraId:5,tocIndex:3},{value:"Verification Plugin (@nocobase/plugin-verification) Documentation",paraId:6,tocIndex:3},{value:", the SMS login authentication function will use the configured and set default SMS verification code Provider to send SMS.",paraId:5,tocIndex:3},{value:"Sign up automatically when the user does not exist: When this option is checked, when the user's mobile phone number does not exist, a new user will be registered using the mobile phone number as the nickname.",paraId:7,tocIndex:3},{value:"Visit the login page to use.",paraId:8,tocIndex:4}],gV={},bV={title:"Calendar Block",toc:"menu",filename:"docs/en-US/handbook/calendar/index.md",lastUpdated:173254844e4,description:"The Calendar Block offers a streamlined way to view and manage events and date-related data in a calendar format, making it perfect for scheduling meetings, planning events, and organizing your time efficiently."},yV=[{id:"calendar-block",depth:1,title:"Calendar Block"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"configure-fields",depth:2,title:"Configure Fields"},{id:"display-lunar-calendar",depth:3,title:"Display Lunar Calendar"},{id:"set-data-range",depth:3,title:"Set Data Range"},{id:"set-block-height",depth:3,title:"Set Block Height"},{id:"background-color-field",depth:3,title:"Background Color Field"},{id:"configure-actions",depth:2,title:"Configure Actions"},{id:"today",depth:3,title:"Today"},{id:"switch-view",depth:3,title:"Switch View"}],wV=[{value:"The Calendar Block offers a streamlined way to view and manage events and date-related data in a calendar format, making it perfect for scheduling meetings, planning events, and organizing your time efficiently.",paraId:0,tocIndex:1},{value:"This plugin comes pre-installed, so no additional setup is required.",paraId:1,tocIndex:2},{value:` + `,paraId:2},{value:"Title Field: Displays key information directly on the calendar bars.",paraId:3,tocIndex:3},{value:"Start Time: Indicates when the task begins.",paraId:3,tocIndex:3},{value:"End Time: Marks when the task ends.",paraId:3,tocIndex:3},{value:"Clicking on a task bar highlights the selection and opens a detailed pop-up window.",paraId:4,tocIndex:3},{value:"Edit Block Title",paraId:5,tocIndex:5},{value:"Save as Block Template",paraId:6,tocIndex:5},{value:"For additional information, see ",paraId:7,tocIndex:6},{value:"Set Data Range",paraId:8,tocIndex:6},{value:".",paraId:7,tocIndex:6},{value:"Example: Adjust the height of the order calendar block. No scrollbar will appear inside the calendar block.",paraId:9,tocIndex:7},{value:"For more information, refer to ",paraId:10,tocIndex:7},{value:"Block Height",paraId:11,tocIndex:7},{value:"The version of NocoBase needs to be v1.4.0-beta or above.",paraId:12},{value:"This option can be used to configure the background color of calendar events. Here's how to use it:",paraId:13},{value:"The calendar data table needs to have a field of type ",paraId:14},{value:"Single select",paraId:14},{value:" or ",paraId:14},{value:"Radio group",paraId:14},{value:", and this field needs to be configured with colors.",paraId:14},{value:"Then, return to the calendar block configuration interface and select the field you just configured with colors in the ",paraId:14},{value:"Background Color Field",paraId:14},{value:".",paraId:14},{value:"Finally, you can try selecting a color for a calendar event and click submit. You'll see that the color has taken effect.",paraId:14},{value:'The "Today" button in the Calendar Block offers quick navigation, enabling users to instantly return to the current date after exploring other dates.',paraId:15,tocIndex:10},{value:"The default view is set to Month.",paraId:16,tocIndex:11}],kV={},SV={title:"Menu",toc:"menu",filename:"docs/en-US/handbook/ui/menus/index.md",lastUpdated:173254844e4,description:"Menus are used to organize pages and external links. In the default page layout template of NocoBase, the menu is located at the top and on the left side. Among them, the top is the primary menu, and the left side is for secondary and infinitely nested sub-menus."},UV=[{id:"menu",depth:1,title:"Menu"},{id:"types-of-menu-items",depth:2,title:"Types of Menu Items"},{id:"group",depth:3,title:"Group"},{id:"page",depth:3,title:"Page"},{id:"link",depth:3,title:"Link"},{id:"configuring-the-menu",depth:2,title:"Configuring the Menu"},{id:"menu-item-configuration",depth:3,title:"Menu Item Configuration"}],PV=[{value:"Menus are used to organize pages and external links. In the default page layout template of NocoBase, the menu is located at the top and on the left side. Among them, the top is the primary menu, and the left side is for secondary and infinitely nested sub-menus.",paraId:0,tocIndex:0},{value:"NocoBase has three built-in types of menu items:",paraId:1,tocIndex:1},{value:"Group",paraId:2,tocIndex:1},{value:"Page",paraId:2,tocIndex:1},{value:"Link",paraId:2,tocIndex:1},{value:'"Group" is used to group menu items, which can be located at the top or on the left side. Within a group, you can continue to create sub-groups, meaning the menu can have an infinite hierarchy.',paraId:3,tocIndex:2},{value:"A page can serve as a container for blocks, housing a variety of blocks. (See ",paraId:4,tocIndex:3},{value:"Pages",paraId:5,tocIndex:3},{value:")",paraId:4,tocIndex:3},{value:"Links can redirect to third-party URLs. You can use variables in the URL and Search params.",paraId:6,tocIndex:4},{value:"After entering the interface configuration mode, there are two icons in the upper right corner of the menu item:",paraId:7,tocIndex:5},{value:"Drag to move",paraId:8,tocIndex:5},{value:"Menu item configuration",paraId:8,tocIndex:5},{value:"Edit: Includes the menu item's title, icon, etc.",paraId:9,tocIndex:6},{value:'Move to: In addition to dragging to move, you can also quickly move a menu item via "Move to", allowing you to move a menu item to the front, back, or inside of another menu item.',paraId:9,tocIndex:6},{value:"Insert before",paraId:9,tocIndex:6},{value:"Insert after",paraId:9,tocIndex:6},{value:"Insert inner (Only for group types)",paraId:9,tocIndex:6},{value:"Delete",paraId:9,tocIndex:6}],TV={},CV={title:"Page",toc:"menu",filename:"docs/en-US/handbook/ui/pages/index.md",lastUpdated:173254844e4,description:"NocoBase's pages can act as containers for blocks. They are like a canvas where you can freely place a variety of blocks."},AV=[{id:"page",depth:1,title:"Page"},{id:"page-structure",depth:2,title:"Page Structure"},{id:"page-settings",depth:2,title:"Page Settings"},{id:"enable-header",depth:3,title:"Enable Header"},{id:"page-title",depth:3,title:"Page Title"},{id:"enable-tabs",depth:3,title:"Enable Tabs"},{id:"adding-blocks",depth:2,title:"Adding Blocks"}],qV=[{value:"NocoBase's pages can act as containers for blocks. They are like a canvas where you can freely place a variety of blocks.",paraId:0,tocIndex:0},{value:"After creating a page through the ",paraId:1,tocIndex:1},{value:"menu",paraId:2,tocIndex:1},{value:", you can see that an empty page consists of the following two parts:",paraId:1,tocIndex:1},{value:`Header +`,paraId:3,tocIndex:1},{value:"Page title",paraId:4,tocIndex:1},{value:"Tabs",paraId:4,tocIndex:1},{value:"Block container",paraId:3,tocIndex:1},{value:"Hovering the mouse over the configuration icon at the top right of the page, you can see the page configuration options:",paraId:5,tocIndex:2},{value:"Configurable items include:",paraId:6,tocIndex:2},{value:"Enable page header: Controls whether to display the header;",paraId:7,tocIndex:2},{value:"Display page title: Whether to display the page title in the header;",paraId:7,tocIndex:2},{value:"Edit page title: The default page title is the menu item title, which can be customized;",paraId:7,tocIndex:2},{value:"Enable tabs: Off by default, enabling this option allows adding multiple tabs.",paraId:7,tocIndex:2},{value:"Typically, we need to enable the header area to display the page title and tabs. However, there are situations where we might not want to enable it, for instance, when creating a Dashboard page where a top-level menu can effectively reflect the content of the page. In this case, we can disable the header and only display the blocks within the page.",paraId:8,tocIndex:3},{value:`The default page title is the name of the menu item. By clicking "Edit Page Title," it can be modified. Just like with the header, sometimes we don't need to display the page title and only need to show the tabs, in which case you can disable the title.`,paraId:9,tocIndex:4},{value:"When the content of a page is too much, or it is appropriate to divide it into several independent parts, we can enable tabs. Each tab is an independent block container. As shown below, we added 3 tabs to the orders page to display all orders, completed orders, and refunded orders. By moving the mouse to the tab title, you can see the sort and configuration buttons at the top right corner.",paraId:10,tocIndex:5},{value:'Click "Add block" to add an unlimited number of blocks to the page (see the introduction of ',paraId:11,tocIndex:6},{value:"Blocks",paraId:12,tocIndex:6},{value:").",paraId:11,tocIndex:6},{value:"After adding several blocks, you can use the move button at the top right corner of each block to drag and arrange them freely, adjusting the layout to achieve the most suitable effect.",paraId:13,tocIndex:6}],EV={},DV={title:"Overview",toc:"menu",filename:"docs/en-US/handbook/workflow/index.md",lastUpdated:173254844e4,description:"The Workflow plugin is a powerful tool commonly known as a Business Process Management (BPM) tool in the industry. It is used for designing and orchestration of business processes based on data models. By organizing the trigger conditions and flow nodes, it makes the business process running automatically."},OV=[{id:"overview",depth:1,title:"Overview"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"learn-more",depth:2,title:"Learn More"}],RV=[{value:"The Workflow plugin is a powerful tool commonly known as a Business Process Management (BPM) tool in the industry. It is used for designing and orchestration of business processes based on data models. By organizing the trigger conditions and flow nodes, it makes the business process running automatically.",paraId:0,tocIndex:1},{value:"In NocoBase applications, the Workflow plugin is designed for no-code scenarios, allowing users to orchestrate and process common business tasks through the UI. Therefore they can change the business processes in the system runtime dynamically.",paraId:1,tocIndex:1},{value:"Each workflow consists of a trigger and several nodes. Through the specific functionality of each node, the workflow describes the business logic that needs to be processed when the corresponding event occurs in the system. A typical workflow is illustrated in the following diagram:",paraId:2,tocIndex:1},{value:"The functionality of the above workflow is as follows: When a user submits an order form, the system automatically checks the inventory of the products in the order. If there is sufficient stock, the inventory will be deducted; otherwise, the order will be updated as invalid.",paraId:3,tocIndex:1},{value:"As a more general perspective, workflows in NocoBase applications can address the following scenarios:",paraId:4,tocIndex:1},{value:"Data automation processing",paraId:5,tocIndex:1},{value:": For example, automatically process data in a collection according to predefined workflows, such as calculating and updating associated data after a triggered event.",paraId:5,tocIndex:1},{value:"Human-involved business processes",paraId:5,tocIndex:1},{value:": When a business process cannot be fully automated, partial decision-making can be assigned to user through manual nodes, such as approval and review. After the results of processing are submitted by user, the subsequent processes continue.",paraId:5,tocIndex:1},{value:"Integration with external systems",paraId:5,tocIndex:1},{value:": API interfaces of external systems can be called through request nodes (or nodes that extend various types of third-party function calls) to achieve data interaction with external systems.",paraId:5,tocIndex:1},{value:"Workflow is a built-in plugin in NocoBase and does not require additional installation.",paraId:6,tocIndex:2},{value:"Quick start",paraId:7,tocIndex:3},{value:`Advanced understanding +`,paraId:8,tocIndex:3},{value:"Executions",paraId:9,tocIndex:3},{value:"Advanced Options",paraId:10,tocIndex:3},{value:"Variables",paraId:11,tocIndex:3},{value:"Revisions",paraId:12,tocIndex:3},{value:"Triggers",paraId:13,tocIndex:3},{value:"Nodes",paraId:14,tocIndex:3},{value:"Development Guide",paraId:15,tocIndex:3}],MV={},LV={title:"Overview",toc:"menu",filename:"docs/en-US/manual/collection/index.md",lastUpdated:173254844e4},NV=[{id:"overview",depth:1,title:"Overview"}],zV=[],FV={},BV={title:"\u64CD\u4F5C",toc:"menu",filename:"docs/en-US/manual/ui/actions/index.md",lastUpdated:173254844e4,description:"\u5728 UI \u91CC\uFF0C\u64CD\u4F5C\u662F\u7528\u6765\u89E6\u53D1\u4E00\u6BB5\u6307\u4EE4\u7684\u6309\u94AE\u3002\u53EF\u4EE5\u76F4\u63A5\u653E\u5728\u9875\u9762\u3001\u5BF9\u8BDD\u6846\u3001\u62BD\u5C49\u91CC\uFF0C\u4E5F\u53EF\u4EE5\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528\u3002\u76EE\u524D\u53EF\u52A8\u6001\u914D\u7F6E\u7684\u64CD\u4F5C\uFF0C\u4E3B\u8981\u662F\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528"},jV=[{id:"\u64CD\u4F5C",depth:1,title:"\u64CD\u4F5C"},{id:"\u533A\u5757\u91CC\u7684\u64CD\u4F5C",depth:2,title:"\u533A\u5757\u91CC\u7684\u64CD\u4F5C"},{id:"\u64CD\u4F5C\u7684\u8BBE\u8BA1\u5668\u5DE5\u5177\u680F",depth:2,title:"\u64CD\u4F5C\u7684\u8BBE\u8BA1\u5668\uFF08\u5DE5\u5177\u680F\uFF09"},{id:"\u64CD\u4F5C\u7684\u62D6\u62FD\u6392\u5E8F",depth:2,title:"\u64CD\u4F5C\u7684\u62D6\u62FD\u6392\u5E8F"},{id:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E",depth:2,title:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E"},{id:"\u64CD\u4F5C\u7684\u8054\u52A8\u89C4\u5219",depth:2,title:"\u64CD\u4F5C\u7684\u8054\u52A8\u89C4\u5219"}],HV=[{value:"\u5728 UI \u91CC\uFF0C\u64CD\u4F5C\u662F\u7528\u6765\u89E6\u53D1\u4E00\u6BB5\u6307\u4EE4\u7684\u6309\u94AE\u3002\u53EF\u4EE5\u76F4\u63A5\u653E\u5728\u9875\u9762\u3001\u5BF9\u8BDD\u6846\u3001\u62BD\u5C49\u91CC\uFF0C\u4E5F\u53EF\u4EE5\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528\u3002\u76EE\u524D\u53EF\u52A8\u6001\u914D\u7F6E\u7684\u64CD\u4F5C\uFF0C\u4E3B\u8981\u662F\u548C\u533A\u5757\u7EC4\u5408\u4F7F\u7528",paraId:0,tocIndex:0},{value:"\u548C\u533A\u5757\u3001\u5B57\u6BB5\u4E0D\u592A\u4E00\u6837\uFF0C\u64CD\u4F5C\u7684\u8BBE\u8BA1\u5668\u91CC\u53EA\u6709\u4E24\u4E2A\u56FE\u6807\uFF0C\u5206\u522B\u4E3A\uFF1A",paraId:1,tocIndex:2},{value:"\u62D6\u62FD",paraId:2,tocIndex:2},{value:"\u53C2\u6570\u914D\u7F6E",paraId:2,tocIndex:2},{value:"\u6309\u4F4F\u6309\u94AE\u8BBE\u8BA1\u5668\u91CC\u7684\u300C\u62D6\u62FD\u300D\u56FE\u6807\uFF0C\u53EF\u4EE5\u5BF9\u6309\u94AE\u8FDB\u884C\u6392\u5E8F",paraId:3,tocIndex:3},{value:`\u7F3A\u5C11\u4E00\u4E2A\u52A8\u56FE +`,paraId:4,tocIndex:3},{value:"\u7F16\u8F91\u6309\u94AE",paraId:5,tocIndex:4},{value:"\u6253\u5F00\u65B9\u5F0F\uFF1A\u62BD\u5C49\u3001\u5BF9\u8BDD\u6846",paraId:5,tocIndex:4},{value:"\u5F39\u7A97\u5C3A\u5BF8\uFF1A\u5927\u3001\u4E2D\u3001\u5C0F",paraId:5,tocIndex:4},{value:"\u5220\u9664",paraId:5,tocIndex:4},{value:"\u6709\u4E0A\u4E0B\u6587\u6570\u636E\u7684\u64CD\u4F5C\uFF0C\u8FD8\u53EF\u4EE5\u914D\u7F6E\u300C\u8054\u52A8\u89C4\u5219\u300D",paraId:6,tocIndex:5},{value:"\u8054\u52A8\u89C4\u5219\u914D\u7F6E",paraId:7,tocIndex:5},{value:"\u53EF\u4EE5\u6DFB\u52A0\u591A\u6761\uFF0C\u6761\u4EF6\u4E0E\u7B5B\u9009\u7528\u6CD5\u4E00\u81F4\uFF0C\u53EF\u4EE5\u63A7\u5236\u6309\u94AE\u7684\u663E\u793A\u3001\u9690\u85CF\u3001\u542F\u7528\u3001\u7981\u7528",paraId:8,tocIndex:5}],WV={},$V={title:"\u6253\u5370",toc:"menu",filename:"docs/en-US/manual/ui/actions/print.md",lastUpdated:173254844e4},GV=[{id:"\u6253\u5370",depth:1,title:"\u6253\u5370"}],VV=[],KV={},ZV={title:"\u4F7F\u7528\u624B\u518C",toc:"menu",filename:"docs/en-US/plugins/auth/user/index.md",lastUpdated:173254844e4,description:"\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B89\u88C5\u65F6\uFF0C\u4F1A\u521D\u59CB\u5316\u4E00\u4E2A \u5BC6\u7801 \u7684\u8BA4\u8BC1\u65B9\u5F0F\uFF0C\u57FA\u4E8E\u7528\u6237\u7684\u7528\u6237\u540D\u548C\u90AE\u7BB1\u3002"},YV=[{id:"\u4F7F\u7528\u624B\u518C",depth:1,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u7528\u6237\u8BA4\u8BC1\u7BA1\u7406",depth:2,title:"\u7528\u6237\u8BA4\u8BC1\u7BA1\u7406"},{id:"\u6FC0\u6D3B\u8BA4\u8BC1\u7C7B\u578B",depth:2,title:"\u6FC0\u6D3B\u8BA4\u8BC1\u7C7B\u578B"},{id:"\u7528\u6237\u8BA4\u8BC1\u7C7B\u578B",depth:2,title:"\u7528\u6237\u8BA4\u8BC1\u7C7B\u578B"},{id:"\u5BC6\u7801\u8BA4\u8BC1",depth:2,title:"\u5BC6\u7801\u8BA4\u8BC1"},{id:"\u914D\u7F6E\u754C\u9762",depth:3,title:"\u914D\u7F6E\u754C\u9762"},{id:"\u5141\u8BB8\u6CE8\u518C",depth:3,title:"\u5141\u8BB8\u6CE8\u518C"}],QV=[{value:"\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5B89\u88C5\u65F6\uFF0C\u4F1A\u521D\u59CB\u5316\u4E00\u4E2A ",paraId:0,tocIndex:1},{value:"\u5BC6\u7801",paraId:0,tocIndex:1},{value:" \u7684\u8BA4\u8BC1\u65B9\u5F0F\uFF0C\u57FA\u4E8E\u7528\u6237\u7684\u7528\u6237\u540D\u548C\u90AE\u7BB1\u3002",paraId:0,tocIndex:1},{value:"\u53EA\u6709\u6FC0\u6D3B\u7684\u8BA4\u8BC1\u7C7B\u578B\u624D\u4F1A\u663E\u793A\u5728\u767B\u5F55\u9875\u9762",paraId:1,tocIndex:2},{value:"NocoBase \u76EE\u524D\u652F\u6301\u7684\u7528\u6237\u8BA4\u8BC1\u7C7B\u578B\u6709\uFF1A",paraId:2,tocIndex:3},{value:"\u5BC6\u7801 (Password)\uFF0C\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u5185\u7F6E",paraId:3,tocIndex:3},{value:"\u77ED\u4FE1 (SMS)\uFF0C",paraId:3,tocIndex:3},{value:"sms-auth \u63D2\u4EF6",paraId:4,tocIndex:3},{value:" \u6269\u5C55",paraId:3,tocIndex:3},{value:"CAS\uFF0C",paraId:3,tocIndex:3},{value:"cas-auth \u63D2\u4EF6",paraId:5,tocIndex:3},{value:" \u6269\u5C55",paraId:3,tocIndex:3},{value:"SAML\uFF0C",paraId:3,tocIndex:3},{value:"saml-auth \u63D2\u4EF6",paraId:6,tocIndex:3},{value:" \u6269\u5C55",paraId:3,tocIndex:3},{value:"OIDC\uFF0C",paraId:3,tocIndex:3},{value:"oidc-auth \u63D2\u4EF6",paraId:7,tocIndex:3},{value:" \u6269\u5C55",paraId:3,tocIndex:3},{value:"\u9664\u6B64\u4E4B\u5916\uFF0C\u4E5F\u53EF\u4EE5\u81EA\u5DF1\u6269\u5C55\u7528\u6237\u8BA4\u8BC1\uFF0C\u53C2\u8003",paraId:8,tocIndex:3},{value:"\u5F00\u53D1\u6307\u5357",paraId:9,tocIndex:3},{value:"\u3002",paraId:8,tocIndex:3},{value:"\u5141\u8BB8\u6CE8\u518C\u65F6\uFF0C\u767B\u5F55\u9875\u4F1A\u663E\u793A\u521B\u5EFA\u8D26\u53F7\u7684\u8FDE\u63A5\uFF0C\u5E76\u53EF\u4EE5\u8DF3\u8F6C\u81F3\u6CE8\u518C\u9875",paraId:10,tocIndex:6},{value:"\u6CE8\u518C\u9875",paraId:11,tocIndex:6},{value:"\u4E0D\u5141\u8BB8\u6CE8\u518C\u65F6\uFF0C\u767B\u5F55\u9875\u4E0D\u4F1A\u663E\u793A\u521B\u5EFA\u8D26\u53F7\u7684\u8FDE\u63A5",paraId:12,tocIndex:6},{value:"\u4E0D\u5141\u8BB8\u6CE8\u518C\u65F6\uFF0C\u65E0\u6CD5\u8BBF\u95EE\u6CE8\u518C\u9875\u9762",paraId:13,tocIndex:6}],JV={},XV={title:"Roadmap",toc:"menu",filename:"docs/en-US/welcome/release/roadmap.md",lastUpdated:173254844e4,description:"Updated on June 11, 2024"},eK=[{id:"roadmap",depth:1,title:"Roadmap"},{id:"features",depth:2,title:"Features:"},{id:"plugins",depth:2,title:"Plugins:"}],aK=[{value:"Updated on June 11, 2024",paraId:0,tocIndex:0},{value:"We are developing or have already planned the following new features and plugins, \u2611\uFE0F indicates just completed and published:",paraId:1,tocIndex:0},{value:"Field default values support expressions",paraId:2,tocIndex:1},{value:"Association fields support linkage rules",paraId:2,tocIndex:1},{value:"Record open mode: Page (alongside Dialog, Drawer)",paraId:2,tocIndex:1},{value:" Link action, supports variables and expressions",paraId:2,tocIndex:1},{value:" Data scope and field default values support Query params",paraId:2,tocIndex:1},{value:" Set block height",paraId:2,tocIndex:1},{value:" Markdown supports variables",paraId:2,tocIndex:1},{value:" Iframe address supports variables.",paraId:2,tocIndex:1},{value:"Support for linked refresh between blocks",paraId:2,tocIndex:1},{value:"Add Charts blocks in pop-ups",paraId:2,tocIndex:1},{value:" Refactor the Import and Export plugin to handle more data at a time",paraId:2,tocIndex:1},{value:"Single record/popup supports independent URL",paraId:2,tocIndex:1},{value:" Improved tree table block",paraId:2,tocIndex:1},{value:`Workflow refactoring +`,paraId:2,tocIndex:1},{value:" Create record node",paraId:3,tocIndex:1},{value:" Update record node",paraId:3,tocIndex:1},{value:"Automatically handle variable references (deprecate preload)",paraId:3,tocIndex:1},{value:"Date and time processing engine",paraId:2,tocIndex:1},{value:"Distributed architecture",paraId:2,tocIndex:1},{value:"Plugin tutorial",paraId:2,tocIndex:1},{value:" DingTalk",paraId:4,tocIndex:2},{value:"Wechat",paraId:4,tocIndex:2},{value:" Scan QR code",paraId:4,tocIndex:2},{value:" Workbench block",paraId:4,tocIndex:2},{value:" Tree block",paraId:4,tocIndex:2},{value:"Audit logs",paraId:4,tocIndex:2},{value:"Action: Import records pro",paraId:4,tocIndex:2},{value:"Action: Export records pro",paraId:4,tocIndex:2},{value:"Multi-application manager",paraId:4,tocIndex:2},{value:"Share pages",paraId:4,tocIndex:2},{value:"Data source: API",paraId:4,tocIndex:2},{value:"Workflow: Script node",paraId:4,tocIndex:2},{value:"Workflow: Webhook trigger",paraId:4,tocIndex:2},{value:"Input mask",paraId:4,tocIndex:2},{value:"Embed External Systems",paraId:4,tocIndex:2},{value:"New Mobile client",paraId:4,tocIndex:2},{value:"Notification",paraId:4,tocIndex:2}],tK={},nK={title:"Application",toc:"menu",filename:"docs/en-US/api/client/application.md",lastUpdated:173254844e4,description:"Create an application instance."},oK=[{id:"application",depth:1,title:"Application"},{id:"constructor",depth:2,title:"Constructor"},{id:"constructor-1",depth:3,title:"constructor()"},{id:"methods",depth:2,title:"Methods"},{id:"use",depth:3,title:"use()"},{id:"render",depth:3,title:"render()"}],rK=[{value:"constructor()",paraId:0},{value:"Create an application instance.",paraId:1,tocIndex:2},{value:"Signature",paraId:2,tocIndex:2},{value:"constructor(options: ApplicationOptions)",paraId:3,tocIndex:2},{value:"Example",paraId:4,tocIndex:2},{value:`const app = new Application({ apiClient: { baseURL: process.env.API_BASE_URL, }, @@ -17039,7 +17092,7 @@ export const app = new Application({ }); export default app.render(); -`,paraId:9,tocIndex:5}],dK={},iK={title:"Filter Operators",toc:"menu",filename:"docs/en-US/api/database/operators.md",lastUpdated:1732240239e3,description:"Used in the filter parameters of the find, findOne, findAndCount, count, etc. APIs of repository:"},lK=[{id:"filter-operators",depth:1,title:"Filter Operators"},{id:"general-operators",depth:2,title:"General Operators"},{id:"eq",depth:3,title:"$eq"},{id:"ne",depth:3,title:"$ne"},{id:"is",depth:3,title:"$is"},{id:"not",depth:3,title:"$not"},{id:"col",depth:3,title:"$col"},{id:"in",depth:3,title:"$in"},{id:"notin",depth:3,title:"$notIn"},{id:"empty",depth:3,title:"$empty"},{id:"notempty",depth:3,title:"$notEmpty"},{id:"logical-operators",depth:2,title:"Logical Operators"},{id:"and",depth:3,title:"$and"},{id:"or",depth:3,title:"$or"},{id:"boolean-field-operators",depth:2,title:"Boolean Field Operators"},{id:"isfalsy",depth:3,title:"$isFalsy"},{id:"istruly",depth:3,title:"$isTruly"},{id:"numeric-type-field-operators",depth:2,title:"Numeric Type Field Operators"},{id:"gt",depth:3,title:"$gt"},{id:"gte",depth:3,title:"$gte"},{id:"lt",depth:3,title:"$lt"},{id:"lte",depth:3,title:"$lte"},{id:"between",depth:3,title:"$between"},{id:"notbetween",depth:3,title:"$notBetween"},{id:"string-type-field-operators",depth:2,title:"String Type Field Operators"},{id:"includes",depth:3,title:"$includes"},{id:"notincludes",depth:3,title:"$notIncludes"},{id:"startswith",depth:3,title:"$startsWith"},{id:"notstatswith",depth:3,title:"$notStatsWith"},{id:"endswith",depth:3,title:"$endsWith"},{id:"notendswith",depth:3,title:"$notEndsWith"},{id:"like",depth:3,title:"$like"},{id:"notlike",depth:3,title:"$notLike"},{id:"ilike",depth:3,title:"$iLike"},{id:"notilike",depth:3,title:"$notILike"},{id:"regexp",depth:3,title:"$regexp"},{id:"notregexp",depth:3,title:"$notRegexp"},{id:"iregexp",depth:3,title:"$iRegexp"},{id:"notiregexp",depth:3,title:"$notIRegexp"},{id:"date-type-field-operators",depth:2,title:"Date Type Field Operators"},{id:"dateon",depth:3,title:"$dateOn"},{id:"datenoton",depth:3,title:"$dateNotOn"},{id:"datebefore",depth:3,title:"$dateBefore"},{id:"datenotbefore",depth:3,title:"$dateNotBefore"},{id:"dateafter",depth:3,title:"$dateAfter"},{id:"datenotafter",depth:3,title:"$dateNotAfter"},{id:"array-type-field-operators",depth:2,title:"Array Type Field Operators"},{id:"match",depth:3,title:"$match"},{id:"notmatch",depth:3,title:"$notMatch"},{id:"anyof",depth:3,title:"$anyOf"},{id:"noneof",depth:3,title:"$noneOf"},{id:"arrayempty",depth:3,title:"$arrayEmpty"},{id:"arraynotempty",depth:3,title:"$arrayNotEmpty"},{id:"relational-field-type-operators",depth:2,title:"Relational Field Type Operators"},{id:"exists",depth:3,title:"$exists"},{id:"notexists",depth:3,title:"$notExists"}],cK=[{value:"Used in the filter parameters of the ",paraId:0,tocIndex:0},{value:"find",paraId:0,tocIndex:0},{value:", ",paraId:0,tocIndex:0},{value:"findOne",paraId:0,tocIndex:0},{value:", ",paraId:0,tocIndex:0},{value:"findAndCount",paraId:0,tocIndex:0},{value:", ",paraId:0,tocIndex:0},{value:"count",paraId:0,tocIndex:0},{value:", etc. APIs of repository:",paraId:0,tocIndex:0},{value:`const repository = db.getRepository('books'); +`,paraId:9,tocIndex:5}],dK={},iK={title:"Filter Operators",toc:"menu",filename:"docs/en-US/api/database/operators.md",lastUpdated:173254844e4,description:"Used in the filter parameters of the find, findOne, findAndCount, count, etc. APIs of repository:"},lK=[{id:"filter-operators",depth:1,title:"Filter Operators"},{id:"general-operators",depth:2,title:"General Operators"},{id:"eq",depth:3,title:"$eq"},{id:"ne",depth:3,title:"$ne"},{id:"is",depth:3,title:"$is"},{id:"not",depth:3,title:"$not"},{id:"col",depth:3,title:"$col"},{id:"in",depth:3,title:"$in"},{id:"notin",depth:3,title:"$notIn"},{id:"empty",depth:3,title:"$empty"},{id:"notempty",depth:3,title:"$notEmpty"},{id:"logical-operators",depth:2,title:"Logical Operators"},{id:"and",depth:3,title:"$and"},{id:"or",depth:3,title:"$or"},{id:"boolean-field-operators",depth:2,title:"Boolean Field Operators"},{id:"isfalsy",depth:3,title:"$isFalsy"},{id:"istruly",depth:3,title:"$isTruly"},{id:"numeric-type-field-operators",depth:2,title:"Numeric Type Field Operators"},{id:"gt",depth:3,title:"$gt"},{id:"gte",depth:3,title:"$gte"},{id:"lt",depth:3,title:"$lt"},{id:"lte",depth:3,title:"$lte"},{id:"between",depth:3,title:"$between"},{id:"notbetween",depth:3,title:"$notBetween"},{id:"string-type-field-operators",depth:2,title:"String Type Field Operators"},{id:"includes",depth:3,title:"$includes"},{id:"notincludes",depth:3,title:"$notIncludes"},{id:"startswith",depth:3,title:"$startsWith"},{id:"notstatswith",depth:3,title:"$notStatsWith"},{id:"endswith",depth:3,title:"$endsWith"},{id:"notendswith",depth:3,title:"$notEndsWith"},{id:"like",depth:3,title:"$like"},{id:"notlike",depth:3,title:"$notLike"},{id:"ilike",depth:3,title:"$iLike"},{id:"notilike",depth:3,title:"$notILike"},{id:"regexp",depth:3,title:"$regexp"},{id:"notregexp",depth:3,title:"$notRegexp"},{id:"iregexp",depth:3,title:"$iRegexp"},{id:"notiregexp",depth:3,title:"$notIRegexp"},{id:"date-type-field-operators",depth:2,title:"Date Type Field Operators"},{id:"dateon",depth:3,title:"$dateOn"},{id:"datenoton",depth:3,title:"$dateNotOn"},{id:"datebefore",depth:3,title:"$dateBefore"},{id:"datenotbefore",depth:3,title:"$dateNotBefore"},{id:"dateafter",depth:3,title:"$dateAfter"},{id:"datenotafter",depth:3,title:"$dateNotAfter"},{id:"array-type-field-operators",depth:2,title:"Array Type Field Operators"},{id:"match",depth:3,title:"$match"},{id:"notmatch",depth:3,title:"$notMatch"},{id:"anyof",depth:3,title:"$anyOf"},{id:"noneof",depth:3,title:"$noneOf"},{id:"arrayempty",depth:3,title:"$arrayEmpty"},{id:"arraynotempty",depth:3,title:"$arrayNotEmpty"},{id:"relational-field-type-operators",depth:2,title:"Relational Field Type Operators"},{id:"exists",depth:3,title:"$exists"},{id:"notexists",depth:3,title:"$notExists"}],cK=[{value:"Used in the filter parameters of the ",paraId:0,tocIndex:0},{value:"find",paraId:0,tocIndex:0},{value:", ",paraId:0,tocIndex:0},{value:"findOne",paraId:0,tocIndex:0},{value:", ",paraId:0,tocIndex:0},{value:"findAndCount",paraId:0,tocIndex:0},{value:", ",paraId:0,tocIndex:0},{value:"count",paraId:0,tocIndex:0},{value:", etc. APIs of repository:",paraId:0,tocIndex:0},{value:`const repository = db.getRepository('books'); repository.find({ filter: { @@ -17376,7 +17429,7 @@ repository.find({ }, }, }); -`,paraId:155,tocIndex:55}],sK={},uK={title:"Resource",toc:"menu",filename:"docs/en-US/api/resourcer/resource.md",lastUpdated:1732240239e3,description:"Resource is used to define resource instance. Resource instances managed by resourcer can be accessed through HTTP requests."},pK=[{id:"resource",depth:1,title:"Resource"},{id:"constructor",depth:2,title:"Constructor"},{id:"instance-members",depth:2,title:"Instance Members"},{id:"options",depth:3,title:"options"},{id:"resourcer",depth:3,title:"resourcer"},{id:"middlewares",depth:3,title:"middlewares"},{id:"actions",depth:3,title:"actions"},{id:"except",depth:3,title:"except"},{id:"instance-methods",depth:2,title:"Instance Methods"},{id:"getname",depth:3,title:"getName()"},{id:"getaction",depth:3,title:"getAction()"}],IK=[{value:"Resource is used to define resource instance. Resource instances managed by resourcer can be accessed through HTTP requests.",paraId:0,tocIndex:0},{value:"To create resource instance. Normally it is not used directly, but replaced by the call of the ",paraId:1,tocIndex:1},{value:"define()",paraId:1,tocIndex:1},{value:" interface of resourcer.",paraId:1,tocIndex:1},{value:"Signature",paraId:2,tocIndex:1},{value:"constructor(options: ResourceOptions, resourcer: Resourcer)",paraId:3,tocIndex:1},{value:"Parameter",paraId:4,tocIndex:1},{value:"Name",paraId:5,tocIndex:1},{value:"Type",paraId:5,tocIndex:1},{value:"Default",paraId:5,tocIndex:1},{value:"Description",paraId:5,tocIndex:1},{value:"options.name",paraId:5,tocIndex:1},{value:"string",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"Name of the resource, corresponding to the resource address in the route of the URL",paraId:5,tocIndex:1},{value:"options.type",paraId:5,tocIndex:1},{value:"string",paraId:5,tocIndex:1},{value:"'single'",paraId:5,tocIndex:1},{value:"Type of the resource, options are ",paraId:5,tocIndex:1},{value:"'single'",paraId:5,tocIndex:1},{value:", ",paraId:5,tocIndex:1},{value:"'hasOne'",paraId:5,tocIndex:1},{value:", ",paraId:5,tocIndex:1},{value:"'hasMany'",paraId:5,tocIndex:1},{value:", ",paraId:5,tocIndex:1},{value:"'belongsTo'",paraId:5,tocIndex:1},{value:", ",paraId:5,tocIndex:1},{value:"'belongsToMany'",paraId:5,tocIndex:1},{value:"options.actions",paraId:5,tocIndex:1},{value:"Object",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"List of actions that can be taken on the resource, see the example for details",paraId:5,tocIndex:1},{value:"options.middlewares",paraId:5,tocIndex:1},{value:"MiddlewareType | MiddlewareType[]",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"List of middlewares for any operational access to the resource that is defining\uFF0Csee the example for details",paraId:5,tocIndex:1},{value:"options.only",paraId:5,tocIndex:1},{value:"ActionName[]",paraId:5,tocIndex:1},{value:"[]",paraId:5,tocIndex:1},{value:"Whitelist for global actions, only actions contained in the array (if ",paraId:5,tocIndex:1},{value:"length > 0",paraId:5,tocIndex:1},{value:") can be accessed",paraId:5,tocIndex:1},{value:"options.except",paraId:5,tocIndex:1},{value:"ActionName[]",paraId:5,tocIndex:1},{value:"[]",paraId:5,tocIndex:1},{value:"Blacklist for global actions, all actions except those contained in the array (if ",paraId:5,tocIndex:1},{value:"length > 0",paraId:5,tocIndex:1},{value:") can be accessed",paraId:5,tocIndex:1},{value:"resourcer",paraId:5,tocIndex:1},{value:"Resourcer",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"The resourcer instance",paraId:5,tocIndex:1},{value:"Example",paraId:6,tocIndex:1},{value:`app.resourcer.define({ +`,paraId:155,tocIndex:55}],sK={},uK={title:"Resource",toc:"menu",filename:"docs/en-US/api/resourcer/resource.md",lastUpdated:173254844e4,description:"Resource is used to define resource instance. Resource instances managed by resourcer can be accessed through HTTP requests."},pK=[{id:"resource",depth:1,title:"Resource"},{id:"constructor",depth:2,title:"Constructor"},{id:"instance-members",depth:2,title:"Instance Members"},{id:"options",depth:3,title:"options"},{id:"resourcer",depth:3,title:"resourcer"},{id:"middlewares",depth:3,title:"middlewares"},{id:"actions",depth:3,title:"actions"},{id:"except",depth:3,title:"except"},{id:"instance-methods",depth:2,title:"Instance Methods"},{id:"getname",depth:3,title:"getName()"},{id:"getaction",depth:3,title:"getAction()"}],IK=[{value:"Resource is used to define resource instance. Resource instances managed by resourcer can be accessed through HTTP requests.",paraId:0,tocIndex:0},{value:"To create resource instance. Normally it is not used directly, but replaced by the call of the ",paraId:1,tocIndex:1},{value:"define()",paraId:1,tocIndex:1},{value:" interface of resourcer.",paraId:1,tocIndex:1},{value:"Signature",paraId:2,tocIndex:1},{value:"constructor(options: ResourceOptions, resourcer: Resourcer)",paraId:3,tocIndex:1},{value:"Parameter",paraId:4,tocIndex:1},{value:"Name",paraId:5,tocIndex:1},{value:"Type",paraId:5,tocIndex:1},{value:"Default",paraId:5,tocIndex:1},{value:"Description",paraId:5,tocIndex:1},{value:"options.name",paraId:5,tocIndex:1},{value:"string",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"Name of the resource, corresponding to the resource address in the route of the URL",paraId:5,tocIndex:1},{value:"options.type",paraId:5,tocIndex:1},{value:"string",paraId:5,tocIndex:1},{value:"'single'",paraId:5,tocIndex:1},{value:"Type of the resource, options are ",paraId:5,tocIndex:1},{value:"'single'",paraId:5,tocIndex:1},{value:", ",paraId:5,tocIndex:1},{value:"'hasOne'",paraId:5,tocIndex:1},{value:", ",paraId:5,tocIndex:1},{value:"'hasMany'",paraId:5,tocIndex:1},{value:", ",paraId:5,tocIndex:1},{value:"'belongsTo'",paraId:5,tocIndex:1},{value:", ",paraId:5,tocIndex:1},{value:"'belongsToMany'",paraId:5,tocIndex:1},{value:"options.actions",paraId:5,tocIndex:1},{value:"Object",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"List of actions that can be taken on the resource, see the example for details",paraId:5,tocIndex:1},{value:"options.middlewares",paraId:5,tocIndex:1},{value:"MiddlewareType | MiddlewareType[]",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"List of middlewares for any operational access to the resource that is defining\uFF0Csee the example for details",paraId:5,tocIndex:1},{value:"options.only",paraId:5,tocIndex:1},{value:"ActionName[]",paraId:5,tocIndex:1},{value:"[]",paraId:5,tocIndex:1},{value:"Whitelist for global actions, only actions contained in the array (if ",paraId:5,tocIndex:1},{value:"length > 0",paraId:5,tocIndex:1},{value:") can be accessed",paraId:5,tocIndex:1},{value:"options.except",paraId:5,tocIndex:1},{value:"ActionName[]",paraId:5,tocIndex:1},{value:"[]",paraId:5,tocIndex:1},{value:"Blacklist for global actions, all actions except those contained in the array (if ",paraId:5,tocIndex:1},{value:"length > 0",paraId:5,tocIndex:1},{value:") can be accessed",paraId:5,tocIndex:1},{value:"resourcer",paraId:5,tocIndex:1},{value:"Resourcer",paraId:5,tocIndex:1},{value:"-",paraId:5,tocIndex:1},{value:"The resourcer instance",paraId:5,tocIndex:1},{value:"Example",paraId:6,tocIndex:1},{value:`app.resourcer.define({ name: 'books', actions: { // Extended action @@ -17406,7 +17459,7 @@ resource.getName(); // 'books' }); resource.getAction('publish'); // [Function: publish] -`,paraId:25,tocIndex:10}],_K={},vK={title:"Application",toc:"menu",filename:"docs/en-US/api/server/application.md",lastUpdated:1732240239e3,description:"Application is the core module of the NocoBase server, based on Koa extensions. It's responsible for major application initialization logic and managing the application lifecycle."},mK=[{id:"application",depth:1,title:"Application"},{id:"constructor",depth:2,title:"Constructor"},{id:"constructor-1",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"types",depth:4,title:"Types"},{id:"details",depth:4,title:"Details"},{id:"applicationoptions",depth:5,title:"ApplicationOptions"},{id:"resourceroptions",depth:5,title:"ResourcerOptions"},{id:"apploggeroptions",depth:5,title:"AppLoggerOptions"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"name",depth:3,title:"name"},{id:"version",depth:3,title:"version"},{id:"maindatasource",depth:3,title:"mainDataSource"},{id:"db",depth:3,title:"db"},{id:"acl",depth:3,title:"acl"},{id:"log",depth:3,title:"log"},{id:"logger",depth:3,title:"logger"},{id:"cache",depth:3,title:"cache"},{id:"cli",depth:3,title:"cli"},{id:"i18n",depth:3,title:"i18n"},{id:"telemetry",depth:3,title:"telemetry"},{id:"pm",depth:3,title:"pm"},{id:"datasourcemanager",depth:3,title:"dataSourceManager"},{id:"resourcemanager",depth:3,title:"resourceManager"},{id:"cachemanager",depth:3,title:"cacheManager"},{id:"authmanager",depth:3,title:"authManager"},{id:"cronjobmanager",depth:3,title:"cronJobManager"},{id:"localemanager",depth:3,title:"localeManager"},{id:"lifecycle-methods",depth:2,title:"Lifecycle Methods"},{id:"load",depth:3,title:"load()"},{id:"signature-1",depth:4,title:"Signature"},{id:"types-1",depth:4,title:"Types"},{id:"details-1",depth:4,title:"Details"},{id:"reload",depth:3,title:"reload()"},{id:"signature-2",depth:4,title:"Signature"},{id:"start",depth:3,title:"start()"},{id:"signature-3",depth:4,title:"Signature"},{id:"types-2",depth:4,title:"Types"},{id:"details-2",depth:4,title:"Details"},{id:"restart",depth:3,title:"restart()"},{id:"signature-4",depth:4,title:"Signature"},{id:"install",depth:3,title:"install()"},{id:"signature-5",depth:4,title:"Signature"},{id:"details-3",depth:4,title:"Details"},{id:"upgrade",depth:3,title:"upgrade()"},{id:"signature-6",depth:4,title:"Signature"},{id:"",depth:3,title:"`"},{id:"signature-7",depth:4,title:"Signature"},{id:"destroy",depth:3,title:"destroy()"},{id:"signature-8",depth:4,title:"Signature"},{id:"isinstalled",depth:3,title:"isInstalled()"},{id:"signature-9",depth:4,title:"Signature"},{id:"isstarted",depth:3,title:"isStarted()"},{id:"signature-10",depth:4,title:"Signature"},{id:"other-methods",depth:2,title:"Other Methods"},{id:"on",depth:3,title:"on()"},{id:"signature-11",depth:4,title:"Signature"},{id:"off",depth:3,title:"off()"},{id:"signature-12",depth:4,title:"Signature"},{id:"use",depth:3,title:"use()"},{id:"command",depth:3,title:"command()"},{id:"signature-13",depth:4,title:"Signature"},{id:"details-4",depth:4,title:"Details"},{id:"runcommand",depth:3,title:"runCommand()"},{id:"signature-14",depth:4,title:"Signature"},{id:"authenticate",depth:3,title:"authenticate()"},{id:"signature-15",depth:4,title:"Signature"},{id:"events",depth:2,title:"Events"},{id:"beforeload--afterload",depth:3,title:"'beforeLoad' / 'afterLoad'"},{id:"beforereload--afterreload",depth:3,title:"'beforeReload' / 'afterReload'"},{id:"beforeinstall--afterinstall",depth:3,title:"'beforeInstall' / 'afterInstall'"},{id:"beforeupgrade--afterupgrade",depth:3,title:"'beforeUpgrade' / 'afterUpgrade'"},{id:"beforestart--afterstart",depth:3,title:"'beforeStart' / 'afterStart'"},{id:"beforestop--afterstop",depth:3,title:"'beforeStop' / 'afterStop'"},{id:"beforedestroy--afterdestroy",depth:3,title:"'beforeDestroy' / 'afterDestroy'"}],hK=[{value:"Application",paraId:0,tocIndex:0},{value:" is the core module of the NocoBase server, based on ",paraId:0,tocIndex:0},{value:"Koa",paraId:0,tocIndex:0},{value:" extensions. It's responsible for major application initialization logic and managing the application lifecycle.",paraId:0,tocIndex:0},{value:"constructor()",paraId:1},{value:"constructor(public options: ApplicationOptions)",paraId:2,tocIndex:3},{value:`export type PluginType = string | typeof Plugin; +`,paraId:25,tocIndex:10}],_K={},vK={title:"Application",toc:"menu",filename:"docs/en-US/api/server/application.md",lastUpdated:173254844e4,description:"Application is the core module of the NocoBase server, based on Koa extensions. It's responsible for major application initialization logic and managing the application lifecycle."},mK=[{id:"application",depth:1,title:"Application"},{id:"constructor",depth:2,title:"Constructor"},{id:"constructor-1",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"types",depth:4,title:"Types"},{id:"details",depth:4,title:"Details"},{id:"applicationoptions",depth:5,title:"ApplicationOptions"},{id:"resourceroptions",depth:5,title:"ResourcerOptions"},{id:"apploggeroptions",depth:5,title:"AppLoggerOptions"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"name",depth:3,title:"name"},{id:"version",depth:3,title:"version"},{id:"maindatasource",depth:3,title:"mainDataSource"},{id:"db",depth:3,title:"db"},{id:"acl",depth:3,title:"acl"},{id:"log",depth:3,title:"log"},{id:"logger",depth:3,title:"logger"},{id:"cache",depth:3,title:"cache"},{id:"cli",depth:3,title:"cli"},{id:"i18n",depth:3,title:"i18n"},{id:"telemetry",depth:3,title:"telemetry"},{id:"pm",depth:3,title:"pm"},{id:"datasourcemanager",depth:3,title:"dataSourceManager"},{id:"resourcemanager",depth:3,title:"resourceManager"},{id:"cachemanager",depth:3,title:"cacheManager"},{id:"authmanager",depth:3,title:"authManager"},{id:"cronjobmanager",depth:3,title:"cronJobManager"},{id:"localemanager",depth:3,title:"localeManager"},{id:"lifecycle-methods",depth:2,title:"Lifecycle Methods"},{id:"load",depth:3,title:"load()"},{id:"signature-1",depth:4,title:"Signature"},{id:"types-1",depth:4,title:"Types"},{id:"details-1",depth:4,title:"Details"},{id:"reload",depth:3,title:"reload()"},{id:"signature-2",depth:4,title:"Signature"},{id:"start",depth:3,title:"start()"},{id:"signature-3",depth:4,title:"Signature"},{id:"types-2",depth:4,title:"Types"},{id:"details-2",depth:4,title:"Details"},{id:"restart",depth:3,title:"restart()"},{id:"signature-4",depth:4,title:"Signature"},{id:"install",depth:3,title:"install()"},{id:"signature-5",depth:4,title:"Signature"},{id:"details-3",depth:4,title:"Details"},{id:"upgrade",depth:3,title:"upgrade()"},{id:"signature-6",depth:4,title:"Signature"},{id:"",depth:3,title:"`"},{id:"signature-7",depth:4,title:"Signature"},{id:"destroy",depth:3,title:"destroy()"},{id:"signature-8",depth:4,title:"Signature"},{id:"isinstalled",depth:3,title:"isInstalled()"},{id:"signature-9",depth:4,title:"Signature"},{id:"isstarted",depth:3,title:"isStarted()"},{id:"signature-10",depth:4,title:"Signature"},{id:"other-methods",depth:2,title:"Other Methods"},{id:"on",depth:3,title:"on()"},{id:"signature-11",depth:4,title:"Signature"},{id:"off",depth:3,title:"off()"},{id:"signature-12",depth:4,title:"Signature"},{id:"use",depth:3,title:"use()"},{id:"command",depth:3,title:"command()"},{id:"signature-13",depth:4,title:"Signature"},{id:"details-4",depth:4,title:"Details"},{id:"runcommand",depth:3,title:"runCommand()"},{id:"signature-14",depth:4,title:"Signature"},{id:"authenticate",depth:3,title:"authenticate()"},{id:"signature-15",depth:4,title:"Signature"},{id:"events",depth:2,title:"Events"},{id:"beforeload--afterload",depth:3,title:"'beforeLoad' / 'afterLoad'"},{id:"beforereload--afterreload",depth:3,title:"'beforeReload' / 'afterReload'"},{id:"beforeinstall--afterinstall",depth:3,title:"'beforeInstall' / 'afterInstall'"},{id:"beforeupgrade--afterupgrade",depth:3,title:"'beforeUpgrade' / 'afterUpgrade'"},{id:"beforestart--afterstart",depth:3,title:"'beforeStart' / 'afterStart'"},{id:"beforestop--afterstop",depth:3,title:"'beforeStop' / 'afterStop'"},{id:"beforedestroy--afterdestroy",depth:3,title:"'beforeDestroy' / 'afterDestroy'"}],hK=[{value:"Application",paraId:0,tocIndex:0},{value:" is the core module of the NocoBase server, based on ",paraId:0,tocIndex:0},{value:"Koa",paraId:0,tocIndex:0},{value:" extensions. It's responsible for major application initialization logic and managing the application lifecycle.",paraId:0,tocIndex:0},{value:"constructor()",paraId:1},{value:"constructor(public options: ApplicationOptions)",paraId:2,tocIndex:3},{value:`export type PluginType = string | typeof Plugin; export type PluginConfiguration = PluginType | [PluginType, any]; export interface ResourceManagerOptions { @@ -17447,7 +17500,7 @@ export interface ApplicationOptions { `,paraId:41,tocIndex:31},{value:"Property",paraId:42,tocIndex:32},{value:"Type",paraId:42,tocIndex:32},{value:"Description",paraId:42,tocIndex:32},{value:"Default",paraId:42,tocIndex:32},{value:"reload",paraId:42,tocIndex:32},{value:"boolean",paraId:42,tocIndex:32},{value:"Indicates if it's a reload operation",paraId:42,tocIndex:32},{value:"false",paraId:42,tocIndex:32},{value:"hooks",paraId:42,tocIndex:32},{value:"boolean",paraId:42,tocIndex:32},{value:"Whether to trigger ",paraId:42,tocIndex:32},{value:"beforeLoad",paraId:42,tocIndex:32},{value:" / ",paraId:42,tocIndex:32},{value:"afterLoad",paraId:42,tocIndex:32},{value:" hooks",paraId:42,tocIndex:32},{value:"true",paraId:42,tocIndex:32},{value:"sync",paraId:42,tocIndex:32},{value:"boolean",paraId:42,tocIndex:32},{value:"Whether to synchronize data table configuration changes",paraId:42,tocIndex:32},{value:"false",paraId:42,tocIndex:32},{value:"[key: string]",paraId:42,tocIndex:32},{value:"any",paraId:42,tocIndex:32},{value:"Additional configuration, will be passed to hooks",paraId:42,tocIndex:32},{value:"-",paraId:42,tocIndex:32},{value:"reload()",paraId:1},{value:"Reloads the application, triggering a re-initialization.",paraId:43,tocIndex:33},{value:"reload(options?: LoadOptions): Promise",paraId:44,tocIndex:34},{value:"start()",paraId:1},{value:"Starts the application to accept requests.",paraId:45,tocIndex:35},{value:"start(options: StartOptions = {}): Promise",paraId:46,tocIndex:36},{value:`interface StartOptions { checkInstall?: boolean; } -`,paraId:47,tocIndex:37},{value:"Property",paraId:48,tocIndex:38},{value:"Type",paraId:48,tocIndex:38},{value:"Description",paraId:48,tocIndex:38},{value:"Default",paraId:48,tocIndex:38},{value:"checkInstall",paraId:48,tocIndex:38},{value:"boolean",paraId:48,tocIndex:38},{value:"Indicates whether to check if the application is installed",paraId:48,tocIndex:38},{value:"false",paraId:48,tocIndex:38},{value:"restart()",paraId:1},{value:"Restarts the application, executing ",paraId:49,tocIndex:39},{value:"reload()",paraId:49,tocIndex:39},{value:" and ",paraId:49,tocIndex:39},{value:"start()",paraId:49,tocIndex:39},{value:".",paraId:49,tocIndex:39},{value:"restart(options: StartOptions = {}): Promise",paraId:50,tocIndex:40},{value:"install()",paraId:1},{value:"Installs the application, which involves application initialization, synchronization of data table configuration changes, plugin installation, and application restart if it's already started.",paraId:51,tocIndex:41},{value:"install(options: InstallOptions = {}): Promise",paraId:52,tocIndex:42},{value:"Property",paraId:53,tocIndex:43},{value:"Type",paraId:53,tocIndex:43},{value:"Description",paraId:53,tocIndex:43},{value:"Default",paraId:53,tocIndex:43},{value:"force",paraId:53,tocIndex:43},{value:"boolean",paraId:53,tocIndex:43},{value:"Indicates whether to reinstall the application if it's already installed",paraId:53,tocIndex:43},{value:"false",paraId:53,tocIndex:43},{value:"upgrade()",paraId:1},{value:"Upgrades the application by executing migration scripts for each plugin and restarting the application.",paraId:54,tocIndex:44},{value:"upgrade(): Promise",paraId:55,tocIndex:45},{value:"stop()`",paraId:56,tocIndex:46},{value:"Stops the application by closing database connections, cache middleware, and telemetry connections.",paraId:57,tocIndex:46},{value:"stop(): Promise",paraId:58,tocIndex:47},{value:"destroy()",paraId:1},{value:"Destroys the application, equivalent to calling ",paraId:59,tocIndex:48},{value:"stop()",paraId:59,tocIndex:48},{value:".",paraId:59,tocIndex:48},{value:"destroy(): Promise",paraId:60,tocIndex:49},{value:"isInstalled()",paraId:1},{value:"Checks if the application is installed.",paraId:61,tocIndex:50},{value:"isInstalled(): Promise",paraId:62,tocIndex:51},{value:"isStarted()",paraId:1},{value:"Checks if the application is started.",paraId:63,tocIndex:52},{value:"isStarted(): Promise",paraId:64,tocIndex:53},{value:"on()",paraId:1},{value:"Listens for application events. Refer to ",paraId:65,tocIndex:55},{value:"emitter.on(eventName, listener)",paraId:65,tocIndex:55},{value:".",paraId:65,tocIndex:55},{value:"on(eventName: string | symbol, listener: (...args: any[]) => void): this",paraId:66,tocIndex:56},{value:"off()",paraId:1},{value:"Removes event listeners. Refer to ",paraId:67,tocIndex:57},{value:"emitter.off(eventName, listener)",paraId:67,tocIndex:57},{value:".",paraId:67,tocIndex:57},{value:"off(eventName: string | symbol, listener: (...args: any[]) => void): this",paraId:68,tocIndex:58},{value:"use()",paraId:1},{value:"Adds application middleware. Refer to ",paraId:69,tocIndex:59},{value:"Koa - Application",paraId:69,tocIndex:59},{value:".",paraId:69,tocIndex:59},{value:"command()",paraId:1},{value:"Adds application command-line commands.",paraId:70,tocIndex:60},{value:"command(name: string, desc?: string, opts?: CommandOptions): AppCommand",paraId:71,tocIndex:61},{value:"Property",paraId:72,tocIndex:62},{value:"Type",paraId:72,tocIndex:62},{value:"Description",paraId:72,tocIndex:62},{value:"name",paraId:72,tocIndex:62},{value:"string",paraId:72,tocIndex:62},{value:"Command",paraId:72,tocIndex:62},{value:"desc",paraId:72,tocIndex:62},{value:"string",paraId:72,tocIndex:62},{value:"Command description",paraId:72,tocIndex:62},{value:"opts",paraId:72,tocIndex:62},{value:"CommandOptions",paraId:72,tocIndex:62},{value:"Command configuration, refer to ",paraId:72,tocIndex:62},{value:"Commander.js",paraId:72,tocIndex:62},{value:"runCommand()",paraId:1},{value:"Runs application commands.",paraId:73,tocIndex:63},{value:"runCommand(command: string, ...args: any[])",paraId:74,tocIndex:64},{value:"authenticate()",paraId:1},{value:"Performs DB connection check and version check.",paraId:75,tocIndex:65},{value:"authenticate(): Promise",paraId:76,tocIndex:66},{value:"'beforeLoad'",paraId:1},{value:"'afterLoad'",paraId:1},{value:"Triggered before and after ",paraId:77,tocIndex:68},{value:"load()",paraId:78,tocIndex:68},{value:" and ",paraId:77,tocIndex:68},{value:"reload()",paraId:79,tocIndex:68},{value:".",paraId:77,tocIndex:68},{value:"'beforeReload'",paraId:1},{value:"'afterReload'",paraId:1},{value:"Triggered before and after ",paraId:80,tocIndex:69},{value:"reload()",paraId:81,tocIndex:69},{value:".",paraId:80,tocIndex:69},{value:"'beforeInstall'",paraId:1},{value:"'afterInstall'",paraId:1},{value:"Triggered before and after ",paraId:82,tocIndex:70},{value:"install()",paraId:83,tocIndex:70},{value:".",paraId:82,tocIndex:70},{value:"'beforeUpgrade'",paraId:1},{value:"'afterUpgrade'",paraId:1},{value:"Triggered before and after ",paraId:84,tocIndex:71},{value:"upgrade()",paraId:85,tocIndex:71},{value:".",paraId:84,tocIndex:71},{value:"'beforeStart'",paraId:1},{value:"'afterStart'",paraId:1},{value:"Triggered before and after ",paraId:86,tocIndex:72},{value:"start()",paraId:87,tocIndex:72},{value:".",paraId:86,tocIndex:72},{value:"'beforeStop'",paraId:1},{value:"'afterStop'",paraId:1},{value:"Triggered before and after ",paraId:88,tocIndex:73},{value:"stop()",paraId:89,tocIndex:73},{value:" and ",paraId:88,tocIndex:73},{value:"destroy()",paraId:90,tocIndex:73},{value:". ",paraId:88,tocIndex:73},{value:"'beforeStop'",paraId:88,tocIndex:73},{value:" is triggered before ",paraId:88,tocIndex:73},{value:"restart()",paraId:91,tocIndex:73},{value:".",paraId:88,tocIndex:73},{value:"'beforeDestroy'",paraId:1},{value:"'afterDestroy'",paraId:1},{value:"Triggered before and after ",paraId:92,tocIndex:74},{value:"destroy()",paraId:93,tocIndex:74},{value:".",paraId:92,tocIndex:74}],fK={},xK={title:"Breaking Changes",toc:"menu",filename:"docs/en-US/breaking-changes/index.md",lastUpdated:1732240239e3},gK=[],bK=[],yK={},wK={title:"Lifecycle",toc:"menu",filename:"docs/en-US/development/life-cycle.md",lastUpdated:1732240239e3,description:"Triggered by app.on(), see Server-side - Events for details."},kK=[{id:"lifecycle",depth:1,title:"Lifecycle"},{id:"lifecycle-of-the-server-side-application",depth:2,title:"Lifecycle of the server-side application"},{id:"lifecycle-of-the-server-side-plugin",depth:2,title:"Lifecycle of the server-side plugin"},{id:"lifecycle-of-the-client-side-plugin",depth:2,title:"Lifecycle of the client-side plugin"}],SK=[{value:"Triggered by ",paraId:0,tocIndex:1},{value:"app.on()",paraId:0,tocIndex:1},{value:", see ",paraId:0,tocIndex:1},{value:"Server-side - Events",paraId:1,tocIndex:1},{value:" for details.",paraId:0,tocIndex:1},{value:`class PluginSampleHelloServer extends Plugin { +`,paraId:47,tocIndex:37},{value:"Property",paraId:48,tocIndex:38},{value:"Type",paraId:48,tocIndex:38},{value:"Description",paraId:48,tocIndex:38},{value:"Default",paraId:48,tocIndex:38},{value:"checkInstall",paraId:48,tocIndex:38},{value:"boolean",paraId:48,tocIndex:38},{value:"Indicates whether to check if the application is installed",paraId:48,tocIndex:38},{value:"false",paraId:48,tocIndex:38},{value:"restart()",paraId:1},{value:"Restarts the application, executing ",paraId:49,tocIndex:39},{value:"reload()",paraId:49,tocIndex:39},{value:" and ",paraId:49,tocIndex:39},{value:"start()",paraId:49,tocIndex:39},{value:".",paraId:49,tocIndex:39},{value:"restart(options: StartOptions = {}): Promise",paraId:50,tocIndex:40},{value:"install()",paraId:1},{value:"Installs the application, which involves application initialization, synchronization of data table configuration changes, plugin installation, and application restart if it's already started.",paraId:51,tocIndex:41},{value:"install(options: InstallOptions = {}): Promise",paraId:52,tocIndex:42},{value:"Property",paraId:53,tocIndex:43},{value:"Type",paraId:53,tocIndex:43},{value:"Description",paraId:53,tocIndex:43},{value:"Default",paraId:53,tocIndex:43},{value:"force",paraId:53,tocIndex:43},{value:"boolean",paraId:53,tocIndex:43},{value:"Indicates whether to reinstall the application if it's already installed",paraId:53,tocIndex:43},{value:"false",paraId:53,tocIndex:43},{value:"upgrade()",paraId:1},{value:"Upgrades the application by executing migration scripts for each plugin and restarting the application.",paraId:54,tocIndex:44},{value:"upgrade(): Promise",paraId:55,tocIndex:45},{value:"stop()`",paraId:56,tocIndex:46},{value:"Stops the application by closing database connections, cache middleware, and telemetry connections.",paraId:57,tocIndex:46},{value:"stop(): Promise",paraId:58,tocIndex:47},{value:"destroy()",paraId:1},{value:"Destroys the application, equivalent to calling ",paraId:59,tocIndex:48},{value:"stop()",paraId:59,tocIndex:48},{value:".",paraId:59,tocIndex:48},{value:"destroy(): Promise",paraId:60,tocIndex:49},{value:"isInstalled()",paraId:1},{value:"Checks if the application is installed.",paraId:61,tocIndex:50},{value:"isInstalled(): Promise",paraId:62,tocIndex:51},{value:"isStarted()",paraId:1},{value:"Checks if the application is started.",paraId:63,tocIndex:52},{value:"isStarted(): Promise",paraId:64,tocIndex:53},{value:"on()",paraId:1},{value:"Listens for application events. Refer to ",paraId:65,tocIndex:55},{value:"emitter.on(eventName, listener)",paraId:65,tocIndex:55},{value:".",paraId:65,tocIndex:55},{value:"on(eventName: string | symbol, listener: (...args: any[]) => void): this",paraId:66,tocIndex:56},{value:"off()",paraId:1},{value:"Removes event listeners. Refer to ",paraId:67,tocIndex:57},{value:"emitter.off(eventName, listener)",paraId:67,tocIndex:57},{value:".",paraId:67,tocIndex:57},{value:"off(eventName: string | symbol, listener: (...args: any[]) => void): this",paraId:68,tocIndex:58},{value:"use()",paraId:1},{value:"Adds application middleware. Refer to ",paraId:69,tocIndex:59},{value:"Koa - Application",paraId:69,tocIndex:59},{value:".",paraId:69,tocIndex:59},{value:"command()",paraId:1},{value:"Adds application command-line commands.",paraId:70,tocIndex:60},{value:"command(name: string, desc?: string, opts?: CommandOptions): AppCommand",paraId:71,tocIndex:61},{value:"Property",paraId:72,tocIndex:62},{value:"Type",paraId:72,tocIndex:62},{value:"Description",paraId:72,tocIndex:62},{value:"name",paraId:72,tocIndex:62},{value:"string",paraId:72,tocIndex:62},{value:"Command",paraId:72,tocIndex:62},{value:"desc",paraId:72,tocIndex:62},{value:"string",paraId:72,tocIndex:62},{value:"Command description",paraId:72,tocIndex:62},{value:"opts",paraId:72,tocIndex:62},{value:"CommandOptions",paraId:72,tocIndex:62},{value:"Command configuration, refer to ",paraId:72,tocIndex:62},{value:"Commander.js",paraId:72,tocIndex:62},{value:"runCommand()",paraId:1},{value:"Runs application commands.",paraId:73,tocIndex:63},{value:"runCommand(command: string, ...args: any[])",paraId:74,tocIndex:64},{value:"authenticate()",paraId:1},{value:"Performs DB connection check and version check.",paraId:75,tocIndex:65},{value:"authenticate(): Promise",paraId:76,tocIndex:66},{value:"'beforeLoad'",paraId:1},{value:"'afterLoad'",paraId:1},{value:"Triggered before and after ",paraId:77,tocIndex:68},{value:"load()",paraId:78,tocIndex:68},{value:" and ",paraId:77,tocIndex:68},{value:"reload()",paraId:79,tocIndex:68},{value:".",paraId:77,tocIndex:68},{value:"'beforeReload'",paraId:1},{value:"'afterReload'",paraId:1},{value:"Triggered before and after ",paraId:80,tocIndex:69},{value:"reload()",paraId:81,tocIndex:69},{value:".",paraId:80,tocIndex:69},{value:"'beforeInstall'",paraId:1},{value:"'afterInstall'",paraId:1},{value:"Triggered before and after ",paraId:82,tocIndex:70},{value:"install()",paraId:83,tocIndex:70},{value:".",paraId:82,tocIndex:70},{value:"'beforeUpgrade'",paraId:1},{value:"'afterUpgrade'",paraId:1},{value:"Triggered before and after ",paraId:84,tocIndex:71},{value:"upgrade()",paraId:85,tocIndex:71},{value:".",paraId:84,tocIndex:71},{value:"'beforeStart'",paraId:1},{value:"'afterStart'",paraId:1},{value:"Triggered before and after ",paraId:86,tocIndex:72},{value:"start()",paraId:87,tocIndex:72},{value:".",paraId:86,tocIndex:72},{value:"'beforeStop'",paraId:1},{value:"'afterStop'",paraId:1},{value:"Triggered before and after ",paraId:88,tocIndex:73},{value:"stop()",paraId:89,tocIndex:73},{value:" and ",paraId:88,tocIndex:73},{value:"destroy()",paraId:90,tocIndex:73},{value:". ",paraId:88,tocIndex:73},{value:"'beforeStop'",paraId:88,tocIndex:73},{value:" is triggered before ",paraId:88,tocIndex:73},{value:"restart()",paraId:91,tocIndex:73},{value:".",paraId:88,tocIndex:73},{value:"'beforeDestroy'",paraId:1},{value:"'afterDestroy'",paraId:1},{value:"Triggered before and after ",paraId:92,tocIndex:74},{value:"destroy()",paraId:93,tocIndex:74},{value:".",paraId:92,tocIndex:74}],fK={},xK={title:"Breaking Changes",toc:"menu",filename:"docs/en-US/breaking-changes/index.md",lastUpdated:173254844e4},gK=[],bK=[],yK={},wK={title:"Lifecycle",toc:"menu",filename:"docs/en-US/development/life-cycle.md",lastUpdated:173254844e4,description:"Triggered by app.on(), see Server-side - Events for details."},kK=[{id:"lifecycle",depth:1,title:"Lifecycle"},{id:"lifecycle-of-the-server-side-application",depth:2,title:"Lifecycle of the server-side application"},{id:"lifecycle-of-the-server-side-plugin",depth:2,title:"Lifecycle of the server-side plugin"},{id:"lifecycle-of-the-client-side-plugin",depth:2,title:"Lifecycle of the client-side plugin"}],SK=[{value:"Triggered by ",paraId:0,tocIndex:1},{value:"app.on()",paraId:0,tocIndex:1},{value:", see ",paraId:0,tocIndex:1},{value:"Server-side - Events",paraId:1,tocIndex:1},{value:" for details.",paraId:0,tocIndex:1},{value:`class PluginSampleHelloServer extends Plugin { async beforeLoad() { this.app.on('beforeInstall', async () => { // coding... @@ -17457,7 +17510,7 @@ export interface ApplicationOptions { `,paraId:2,tocIndex:1},{value:"Written in the plugin class, see ",paraId:3,tocIndex:2},{value:"Server - Overview",paraId:4,tocIndex:2},{value:" for usage details.",paraId:3,tocIndex:2},{value:`class PluginSampleHelloServer extends Plugin { async beforeLoad() {} } -`,paraId:5,tocIndex:2},{value:"Written in the plugin class, see ",paraId:6,tocIndex:3},{value:"Client - Overview",paraId:7,tocIndex:3},{value:" for usage details.",paraId:6,tocIndex:3}],UK={},PK={title:"API Documentation",toc:"menu",filename:"docs/en-US/handbook/api-doc/index.md",lastUpdated:1732240239e3,description:"The plugin generates NocoBase HTTP API documentation based on Swagger."},TK=[{id:"api-documentation",depth:1,title:"API Documentation"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"accessing-the-api-documentation-page",depth:3,title:"Accessing the API Documentation Page"},{id:"documentation-overview",depth:3,title:"Documentation Overview"},{id:"developer-guide",depth:2,title:"Developer Guide"},{id:"how-to-write-swagger-documentation-for-plugins",depth:3,title:"How to Write Swagger Documentation for Plugins"}],CK=[{value:"The plugin generates NocoBase HTTP API documentation based on Swagger.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, no installation required. Activate to use.",paraId:1,tocIndex:2},{value:"http://localhost:13000/admin/settings/api-doc/documentation",paraId:2,tocIndex:4},{value:"Total API Documentation: ",paraId:3,tocIndex:5},{value:"/api/swagger:get",paraId:3,tocIndex:5},{value:"Core API Documentation: ",paraId:3,tocIndex:5},{value:"/api/swagger:get?ns=core",paraId:3,tocIndex:5},{value:"All Plugins API Documentation: ",paraId:3,tocIndex:5},{value:"/api/swagger:get?ns=plugins",paraId:3,tocIndex:5},{value:"Each Plugin's Documentation: ",paraId:3,tocIndex:5},{value:"/api/swagger:get?ns=plugins/{name}",paraId:3,tocIndex:5},{value:"User Customized Collections API Documentation: ",paraId:3,tocIndex:5},{value:"/api/swagger:get?ns=collections",paraId:3,tocIndex:5},{value:"Specified ",paraId:3,tocIndex:5},{value:"${collection}",paraId:3,tocIndex:5},{value:" and related ",paraId:3,tocIndex:5},{value:"${collection}.${association}",paraId:3,tocIndex:5},{value:" resources: ",paraId:3,tocIndex:5},{value:"/api/swagger:get?ns=collections/{name}",paraId:3,tocIndex:5},{value:"Add a ",paraId:4,tocIndex:7},{value:"swagger/index.ts",paraId:4,tocIndex:7},{value:" file in the plugin's ",paraId:4,tocIndex:7},{value:"src",paraId:4,tocIndex:7},{value:" folder with the following content:",paraId:4,tocIndex:7},{value:`export default { +`,paraId:5,tocIndex:2},{value:"Written in the plugin class, see ",paraId:6,tocIndex:3},{value:"Client - Overview",paraId:7,tocIndex:3},{value:" for usage details.",paraId:6,tocIndex:3}],UK={},PK={title:"API Documentation",toc:"menu",filename:"docs/en-US/handbook/api-doc/index.md",lastUpdated:173254844e4,description:"The plugin generates NocoBase HTTP API documentation based on Swagger."},TK=[{id:"api-documentation",depth:1,title:"API Documentation"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"accessing-the-api-documentation-page",depth:3,title:"Accessing the API Documentation Page"},{id:"documentation-overview",depth:3,title:"Documentation Overview"},{id:"developer-guide",depth:2,title:"Developer Guide"},{id:"how-to-write-swagger-documentation-for-plugins",depth:3,title:"How to Write Swagger Documentation for Plugins"}],CK=[{value:"The plugin generates NocoBase HTTP API documentation based on Swagger.",paraId:0,tocIndex:1},{value:"This is a built-in plugin, no installation required. Activate to use.",paraId:1,tocIndex:2},{value:"http://localhost:13000/admin/settings/api-doc/documentation",paraId:2,tocIndex:4},{value:"Total API Documentation: ",paraId:3,tocIndex:5},{value:"/api/swagger:get",paraId:3,tocIndex:5},{value:"Core API Documentation: ",paraId:3,tocIndex:5},{value:"/api/swagger:get?ns=core",paraId:3,tocIndex:5},{value:"All Plugins API Documentation: ",paraId:3,tocIndex:5},{value:"/api/swagger:get?ns=plugins",paraId:3,tocIndex:5},{value:"Each Plugin's Documentation: ",paraId:3,tocIndex:5},{value:"/api/swagger:get?ns=plugins/{name}",paraId:3,tocIndex:5},{value:"User Customized Collections API Documentation: ",paraId:3,tocIndex:5},{value:"/api/swagger:get?ns=collections",paraId:3,tocIndex:5},{value:"Specified ",paraId:3,tocIndex:5},{value:"${collection}",paraId:3,tocIndex:5},{value:" and related ",paraId:3,tocIndex:5},{value:"${collection}.${association}",paraId:3,tocIndex:5},{value:" resources: ",paraId:3,tocIndex:5},{value:"/api/swagger:get?ns=collections/{name}",paraId:3,tocIndex:5},{value:"Add a ",paraId:4,tocIndex:7},{value:"swagger/index.ts",paraId:4,tocIndex:7},{value:" file in the plugin's ",paraId:4,tocIndex:7},{value:"src",paraId:4,tocIndex:7},{value:" folder with the following content:",paraId:4,tocIndex:7},{value:`export default { info: { title: 'NocoBase API - Auth plugin', }, @@ -17467,18 +17520,18 @@ export interface ApplicationOptions { schemas: {}, }, }; -`,paraId:5,tocIndex:7},{value:"For detailed writing rules, please refer to the ",paraId:6,tocIndex:7},{value:"Swagger Official Documentation",paraId:6,tocIndex:7},{value:".",paraId:6,tocIndex:7}],AK={},qK={title:"Backups Manager",toc:"menu",filename:"docs/en-US/handbook/backups/index.md",lastUpdated:1732240239e3,description:"The NocoBase backup manager plugin provides features for fully backing up of the NocoBase database and user uploaded files, including backup's scheduling, downloading, deleting, and restoring operation."},EK=[{id:"backups-manager",depth:1,title:"Backups Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"create-new-backup",depth:3,title:"Create New Backup"},{id:"restore-backup",depth:3,title:"Restore Backup"},{id:"restore-from-the-backup-list",depth:4,title:"Restore from the backup list"},{id:"restore-from-local-backup-file",depth:4,title:"Restore from local backup file"},{id:"download-backup-file",depth:4,title:"Download Backup File"},{id:"delete-backup",depth:4,title:"Delete Backup"},{id:"backup-settings",depth:2,title:"Backup Settings"},{id:"backup-settings-description",depth:3,title:"Backup Settings Description"}],DK=[{value:"The NocoBase backup manager plugin provides features for fully backing up of the NocoBase database and user uploaded files, including backup's scheduling, downloading, deleting, and restoring operation.",paraId:0,tocIndex:1},{value:"This plugin is built into the NocoBase Professional Edition and does not require manual installation. Please refer to the ",paraId:1,tocIndex:2},{value:"commercial version",paraId:1,tocIndex:2},{value:" for more details.",paraId:1,tocIndex:2},{value:`This plugin is based on the native database client. Before using it, the corresponding database client must be installed in the NocoBase server environment. +`,paraId:5,tocIndex:7},{value:"For detailed writing rules, please refer to the ",paraId:6,tocIndex:7},{value:"Swagger Official Documentation",paraId:6,tocIndex:7},{value:".",paraId:6,tocIndex:7}],AK={},qK={title:"Backups Manager",toc:"menu",filename:"docs/en-US/handbook/backups/index.md",lastUpdated:173254844e4,description:"The NocoBase backup manager plugin provides features for fully backing up of the NocoBase database and user uploaded files, including backup's scheduling, downloading, deleting, and restoring operation."},EK=[{id:"backups-manager",depth:1,title:"Backups Manager"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"create-new-backup",depth:3,title:"Create New Backup"},{id:"restore-backup",depth:3,title:"Restore Backup"},{id:"restore-from-the-backup-list",depth:4,title:"Restore from the backup list"},{id:"restore-from-local-backup-file",depth:4,title:"Restore from local backup file"},{id:"download-backup-file",depth:4,title:"Download Backup File"},{id:"delete-backup",depth:4,title:"Delete Backup"},{id:"backup-settings",depth:2,title:"Backup Settings"},{id:"backup-settings-description",depth:3,title:"Backup Settings Description"}],DK=[{value:"The NocoBase backup manager plugin provides features for fully backing up of the NocoBase database and user uploaded files, including backup's scheduling, downloading, deleting, and restoring operation.",paraId:0,tocIndex:1},{value:"This plugin is built into the NocoBase Professional Edition and does not require manual installation. Please refer to the ",paraId:1,tocIndex:2},{value:"commercial version",paraId:1,tocIndex:2},{value:" for more details.",paraId:1,tocIndex:2},{value:`This plugin is based on the native database client. Before using it, the corresponding database client must be installed in the NocoBase server environment. `,paraId:2},{value:"PostgreSQL client installation",paraId:3},{value:"MySQL client installation",paraId:4},{value:"MariaDB client installation",paraId:5},{value:"During the restore operation, the version of the target database should not be lower than the version of the database that created the backup.",paraId:2},{value:`Click the "New backup" button to create a new backup based on the backup configuration and display the backup status in the backup list. `,paraId:6,tocIndex:4},{value:`Supports restoring backups from the backup list or uploading local backup files to restore backups. Restore operations are not allowed in the following scenarios:`,paraId:7,tocIndex:5},{value:"When the current NocoBase version is lower than the NocoBase version in the backup file.",paraId:8,tocIndex:5},{value:`When the current NocoBase database is inconsistent with the following configurations in the backup file: `,paraId:8,tocIndex:5},{value:"dialect",paraId:9,tocIndex:5},{value:"underscored",paraId:9,tocIndex:5},{value:"table prefix",paraId:9,tocIndex:5},{value:"schema",paraId:9,tocIndex:5},{value:"When the ",paraId:8,tocIndex:5},{value:"Tolerant mode",paraId:8,tocIndex:5},{value:" is not enabled, and the database version when creating the backup is higher than the current application database version.",paraId:8,tocIndex:5},{value:"Restore is a full database operation. It is recommended to back up the current database before restoring a backup.",paraId:10,tocIndex:5},{value:'Click the "Restore" button of the backup item in the backup list, enter the backup file encryption password in the pop-up window, and click "Confirm" to restore the backup.',paraId:11,tocIndex:6},{value:"Leave password empty for unencrypted backup.",paraId:12,tocIndex:6},{value:"If you need to restore the backup to a lower version of the database, you need to enable the tolerant mode.",paraId:13,tocIndex:6},{value:"Click the ",paraId:14,tocIndex:7},{value:"Restore from local backup",paraId:14,tocIndex:7},{value:' button, select the local backup file in the pop-up window, enter the backup file encryption password, and click "Confirm" to restore the backup.',paraId:14,tocIndex:7},{value:"Leave password empty for unencrypted backup.",paraId:15,tocIndex:7},{value:"If you need to restore the backup to a lower version of the database, you need to enable the tolerant mode.",paraId:16,tocIndex:7},{value:"Click the ",paraId:17,tocIndex:8},{value:"Download",paraId:17,tocIndex:8},{value:" button of the backup item in the backup list to download the backup file.",paraId:17,tocIndex:8},{value:"Click the ",paraId:18,tocIndex:9},{value:"Delete",paraId:18,tocIndex:9},{value:" button of the backup item in the backup list to delete the backup file.",paraId:18,tocIndex:9},{value:'Switch to the "Settings" tab, modify the backup settings, and click ',paraId:19,tocIndex:10},{value:"Save",paraId:19,tocIndex:10},{value:` to take effect. -`,paraId:19,tocIndex:10},{value:"Automatic backup",paraId:20,tocIndex:11},{value:": When enable ",paraId:20,tocIndex:11},{value:"Run automatic backup on the cron schedule",paraId:20,tocIndex:11},{value:", you can set automatic backups at specified times.",paraId:20,tocIndex:11},{value:"Maximum number of backups",paraId:20,tocIndex:11},{value:": Set the maximum number of locally saved backup files. After exceeding the number, the earliest backup files will be automatically deleted.",paraId:20,tocIndex:11},{value:"Sync backup to cloud storage",paraId:20,tocIndex:11},{value:": Set the cloud storage location where the backup files are automatically uploaded after successful backup, only support cloud storage.",paraId:20,tocIndex:11},{value:"Backup local storage files",paraId:20,tocIndex:11},{value:": Whether to include files uploaded by users to the server's local storage (storage/uploads) in the backup.",paraId:20,tocIndex:11},{value:"Restore password",paraId:20,tocIndex:11},{value:": If a restore password is set, it must be entered when restoring the backup.",paraId:20,tocIndex:11},{value:"Please keep the restore password safe. Forgetting the password will make it impossible to restore the backup file.",paraId:21,tocIndex:11}],OK={},RK={title:"\u7F16\u8F91",toc:"menu",filename:"docs/en-US/manual/ui/actions/edit.md",lastUpdated:1732240239e3,description:"\u7F16\u8F91\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5BF9\u6570\u636E\u8FDB\u884C\u4FEE\u6539\uFF0C\u901A\u5E38\u914D\u7F6E\u8868\u5355\u533A\u5757"},MK=[{id:"\u7F16\u8F91",depth:1,title:"\u7F16\u8F91"}],LK=[{value:"\u7F16\u8F91\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5BF9\u6570\u636E\u8FDB\u884C\u4FEE\u6539\uFF0C\u901A\u5E38\u914D\u7F6E\u8868\u5355\u533A\u5757",paraId:0,tocIndex:0}],NK={},zK={title:"\u67E5\u770B",toc:"menu",filename:"docs/en-US/manual/ui/actions/view.md",lastUpdated:1732240239e3,description:"\u8BE6\u60C5\u64CD\u4F5C\u7528\u4E8E\u67E5\u770B\u6570\u636E\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u901A\u5E38\u914D\u7F6E\u8BE6\u60C5\u533A\u5757,\u8BE6\u60C5\u533A\u5757"},FK=[{id:"\u67E5\u770B",depth:1,title:"\u67E5\u770B"}],BK=[{value:"\u8BE6\u60C5\u64CD\u4F5C\u7528\u4E8E\u67E5\u770B\u6570\u636E\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u901A\u5E38\u914D\u7F6E\u8BE6\u60C5\u533A\u5757,\u8BE6\u60C5\u533A\u5757",paraId:0,tocIndex:0}],jK={},HK={title:"\u533A\u5757",toc:"menu",filename:"docs/en-US/manual/ui/blocks/index.md",lastUpdated:1732240239e3,description:"\u533A\u5757\u662F\u5185\u5BB9\u7684\u8F7D\u4F53\uFF0C\u53EF\u4EE5\u653E\u7F6E\u4E8E\u9875\u9762\uFF08Page\uFF09\u3001\u5BF9\u8BDD\u6846\uFF08Modal\uFF09\u6216\u62BD\u5C49\uFF08Drawer\uFF09\u91CC\uFF0C\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u81EA\u7531\u62D6\u62FD\u6392\u5217\u3002"},WK=[{id:"\u533A\u5757",depth:1,title:"\u533A\u5757"},{id:"\u6DFB\u52A0\u533A\u5757",depth:2,title:"\u6DFB\u52A0\u533A\u5757"},{id:"\u9875\u9762\u91CC\u7684\u533A\u5757",depth:3,title:"\u9875\u9762\u91CC\u7684\u533A\u5757"},{id:"\u5F39\u7A97\u5BF9\u8BDD\u6846\u6216\u62BD\u5C49\u91CC\u7684\u533A\u5757",depth:3,title:"\u5F39\u7A97\uFF08\u5BF9\u8BDD\u6846\u6216\u62BD\u5C49\uFF09\u91CC\u7684\u533A\u5757"},{id:"\u62BD\u5C49",depth:4,title:"\u62BD\u5C49"},{id:"\u5BF9\u8BDD\u6846",depth:4,title:"\u5BF9\u8BDD\u6846"},{id:"\u533A\u5757\u7684\u8BBE\u8BA1\u5668",depth:2,title:"\u533A\u5757\u7684\u8BBE\u8BA1\u5668"},{id:"\u533A\u5757\u5E03\u5C40",depth:2,title:"\u533A\u5757\u5E03\u5C40"},{id:"\u533A\u5757\u6A21\u677F",depth:2,title:"\u533A\u5757\u6A21\u677F"},{id:"\u5982\u4F55\u6DFB\u52A0\u548C\u4F7F\u7528\u6A21\u677F",depth:3,title:"\u5982\u4F55\u6DFB\u52A0\u548C\u4F7F\u7528\u6A21\u677F\uFF1F"},{id:"\u590D\u5236\u548C\u5F15\u7528\u7684\u533A\u522B",depth:3,title:"\u590D\u5236\u548C\u5F15\u7528\u7684\u533A\u522B"},{id:"\u533A\u5757\u7C7B\u578B",depth:2,title:"\u533A\u5757\u7C7B\u578B"},{id:"\u6570\u636E\u533A\u5757",depth:3,title:"\u6570\u636E\u533A\u5757"},{id:"\u7B5B\u9009\u533A\u5757",depth:3,title:"\u7B5B\u9009\u533A\u5757"},{id:"\u5173\u7CFB\u533A\u5757",depth:3,title:"\u5173\u7CFB\u533A\u5757"},{id:"\u5176\u4ED6\u533A\u5757",depth:3,title:"\u5176\u4ED6\u533A\u5757"},{id:"\u7B5B\u9009\u8054\u52A8",depth:2,title:"\u7B5B\u9009\u8054\u52A8"}],$K=[{value:"\u533A\u5757\u662F\u5185\u5BB9\u7684\u8F7D\u4F53\uFF0C\u53EF\u4EE5\u653E\u7F6E\u4E8E\u9875\u9762\uFF08Page\uFF09\u3001\u5BF9\u8BDD\u6846\uFF08Modal\uFF09\u6216\u62BD\u5C49\uFF08Drawer\uFF09\u91CC\uFF0C\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u81EA\u7531\u62D6\u62FD\u6392\u5217\u3002",paraId:0,tocIndex:0},{value:"\u533A\u5757\u53EF\u4EE5\u653E\u7F6E\u4E8E\u9875\u9762\uFF08Page\uFF09\u3001\u5BF9\u8BDD\u6846\uFF08Modal\uFF09\u6216\u62BD\u5C49\uFF08Drawer\uFF09\u91CC",paraId:1,tocIndex:1},{value:"\u76EE\u524D\u9875\u9762\u91CC\u7684\u533A\u5757\u7C7B\u578B\u5305\u62EC\uFF1A\u6570\u636E\u533A\u5757\u3001\u7B5B\u9009\u533A\u5757\u3001\u5176\u4ED6\u533A\u5757",paraId:2,tocIndex:2},{value:"\u5F39\u7A97\u6709\u5BF9\u8BDD\u6846\u548C\u62BD\u5C49\u4E24\u79CD\uFF0C\u548C\u9875\u9762\u4E00\u6837\u4E5F\u53EF\u4EE5\u6DFB\u52A0\u533A\u5757\uFF0C\u533A\u522B\u5728\u4E8E\u5F39\u7A97\u91CC\u7684\u533A\u5757\u901A\u5E38\u4E3A\u5355\u6761\u8BB0\u5F55\u7684\u6DFB\u52A0\u3001\u7F16\u8F91\u6216\u67E5\u770B\u7B49\uFF0C\u533A\u5757\u7C7B\u578B\u5305\u62EC\u5F53\u524D\u6570\u636E\u533A\u5757\u3001\u5173\u7CFB\u533A\u5757\u3001\u5176\u4ED6\u533A\u5757\u3002",paraId:3,tocIndex:3},{value:"\u6BCF\u4E2A\u533A\u5757\u53F3\u4E0A\u89D2\u90FD\u6709\u4E09\u4E2A\u5C0F\u56FE\u6807\uFF0C\u4ECE\u5DE6\u5230\u53F3\u5206\u522B\u4E3A\uFF1A",paraId:4,tocIndex:6},{value:"\u62D6\u62FD\u5E03\u5C40",paraId:5,tocIndex:6},{value:"\u5FEB\u6377\u6DFB\u52A0\u533A\u5757",paraId:5,tocIndex:6},{value:"\u533A\u5757\u53C2\u6570\u914D\u7F6E",paraId:5,tocIndex:6},{value:"\u7B80\u5355\u7684\u533A\u5757\u6240\u6709\u7684\u914D\u7F6E\u9879\u90FD\u96C6\u4E2D\u5728\u300C\u533A\u5757\u53C2\u6570\u914D\u7F6E\u300D\u91CC\uFF0C\u5982 Markdown",paraId:6,tocIndex:6},{value:"\u590D\u6742\u7684\u6570\u636E\u7C7B\u578B\u533A\u5757\u8FD8\u4F1A\u63D0\u4F9B\u72EC\u7ACB\u7684\u5185\u5D4C\u7684\u300C\u914D\u7F6E\u5B57\u6BB5\u300D\u548C\u300C\u914D\u7F6E\u64CD\u4F5C\u300D",paraId:7,tocIndex:6},{value:"\u9664\u6B64\u4E4B\u5916\uFF0C\u4E5F\u53EF\u4EE5\u81EA\u7531\u53D1\u6325\uFF0C\u63D0\u4F9B\u66F4\u591A\u5D4C\u5957\u7684\u53EF\u80FD\uFF0C\u5982\u56FE\u8868\u533A\u5757",paraId:8,tocIndex:6},{value:"\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u901A\u8FC7\u62D6\u62FD\u8C03\u6574\u5E03\u5C40",paraId:9,tocIndex:7},{value:"\u53EF\u4EE5\u5C06\u4E00\u4E2A\u6570\u636E\u7C7B\u578B\u533A\u5757\u4FDD\u5B58\u4E3A\u6A21\u677F\uFF0C\u4EE5\u540E\u6DFB\u52A0\u533A\u5757\u65F6\u53EF\u4EE5\u76F4\u63A5\u590D\u5236\u6216\u5F15\u7528\u8FD9\u4E2A\u6A21\u677F\u3002\u6BD4\u5982\uFF0C\u4E00\u4E2A\u6570\u636E\u8868\u7684\u8868\u5355\uFF0C\u65E2\u7528\u4E8E\u65B0\u589E\u6570\u636E\uFF0C\u53C8\u7528\u4E8E\u7F16\u8F91\u6570\u636E\uFF0C\u90A3\u5C31\u53EF\u4EE5\u5C06\u8FD9\u4E2A\u8868\u5355\u4FDD\u5B58\u4E3A\u6A21\u677F\uFF0C\u5728\u65B0\u589E\u6570\u636E\u548C\u7F16\u8F91\u6570\u636E\u7684\u754C\u9762\u91CC\u5F15\u7528\u5B83\u3002",paraId:10,tocIndex:8},{value:"\u5C06\u6570\u636E\u533A\u5757\u4FDD\u5B58\u4E3A\u533A\u5757\u6A21\u677F\uFF08\u53EA\u6709\u6570\u636E\u7C7B\u578B\u7684\u533A\u5757\u624D\u6709\u8FD9\u4E2A\u914D\u7F6E\u9879\uFF09",paraId:11,tocIndex:9},{value:"\u6DFB\u52A0\u533A\u5757\u65F6\uFF0C\u9009\u62E9\u590D\u5236\u6216\u5F15\u7528\u6A21\u677F",paraId:12,tocIndex:9},{value:"\u590D\u5236\u662F\u57FA\u4E8E\u533A\u5757\u6A21\u677F\u521B\u5EFA\u7684\u5168\u65B0\u533A\u5757\uFF0C\u533A\u5757\u6709\u8C03\u6574\u4E0D\u5F71\u54CD\u6A21\u5757\uFF1B\u5F15\u7528\u662F\u76F4\u63A5\u4F7F\u7528\u533A\u5757\u6A21\u677F\uFF0C\u533A\u5757\u8C03\u6574\u4F1A\u6539\u53D8\u6A21\u677F\uFF0C\u6240\u6709\u5F15\u7528\u4E86\u5F53\u524D\u6A21\u677F\u7684\u533A\u5757\u90FD\u4F1A\u4EA7\u751F\u53D8\u5316\u3002",paraId:13,tocIndex:10},{value:"NocoBase \u9ED8\u8BA4\u5C06\u533A\u5757\u5206\u4E3A\u56DB\u79CD\u7C7B\u578B\uFF1A",paraId:14,tocIndex:11},{value:"\u6570\u636E\u533A\u5757\uFF1A\u53EF\u4EE5\u5C06 Collection \u7684\u6570\u636E\u5C55\u793A\u5728\u533A\u5757\u91CC",paraId:15,tocIndex:11},{value:"\u7B5B\u9009\u533A\u5757\uFF1A\u76EE\u524D\u53EA\u80FD\u5728\u9875\u9762\u91CC\u6DFB\u52A0\uFF0C\u53EF\u7528\u4E8E\u6570\u636E\u533A\u5757\u7684\u6570\u636E\u7B5B\u9009",paraId:15,tocIndex:11},{value:"\u5173\u7CFB\u533A\u5757\uFF1A\u76EE\u524D\u53EA\u80FD\u5728\u5F39\u7A97\u91CC\u6DFB\u52A0\uFF0C\u53EF\u7528\u4E8E\u5F53\u524D\u8BB0\u5F55\u7684\u5173\u7CFB\u6570\u636E\u7684\u589E\u5220\u6539\u67E5\u7B49",paraId:15,tocIndex:11},{value:"\u5176\u4ED6\u533A\u5757\uFF1A\u7528\u4E8E\u653E\u7F6E\u72EC\u7ACB\u533A\u5757\uFF0C\u5982 Markdown\u3001\u5BA1\u8BA1\u65E5\u5FD7\u533A\u5757\u3001\u5DE5\u4F5C\u6D41\u5F85\u529E\u533A\u5757\u7B49",paraId:15,tocIndex:11}],GK={},VK={title:"Overview",toc:"menu",filename:"docs/en-US/manual/ui/fields/index.md",lastUpdated:1732240239e3,description:"\u5728 UI \u91CC\uFF0C\u5B57\u6BB5\u5373\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u662F\u5355\u5143\u6570\u636E\u7684\u8F7D\u4F53\uFF0C\u4E0D\u540C\u7C7B\u578B\u6570\u636E\u4EE5\u4E0D\u540C\u5B57\u6BB5\u7EC4\u4EF6\u5448\u73B0\u3002\u5B57\u6BB5\u53EA\u80FD\u9644\u5C5E\u4E8E\u533A\u5757\uFF0C\u4E0D\u80FD\u72EC\u7ACB\u4F7F\u7528\u3002"},KK=[{id:"overview",depth:1,title:"Overview"},{id:"\u533A\u5757\u91CC\u7684\u5B57\u6BB5",depth:2,title:"\u533A\u5757\u91CC\u7684\u5B57\u6BB5"},{id:"\u5B57\u6BB5\u7684\u8BBE\u8BA1\u5668\u5DE5\u5177\u680F",depth:2,title:"\u5B57\u6BB5\u7684\u8BBE\u8BA1\u5668\uFF08\u5DE5\u5177\u680F\uFF09"},{id:"\u5B57\u6BB5\u7684\u5E03\u5C40",depth:2,title:"\u5B57\u6BB5\u7684\u5E03\u5C40"},{id:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E",depth:2,title:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E"},{id:"\u9A8C\u8BC1\u89C4\u5219",depth:3,title:"\u9A8C\u8BC1\u89C4\u5219"},{id:"\u9ED8\u8BA4\u503C",depth:3,title:"\u9ED8\u8BA4\u503C"},{id:"\u663E\u793A\u6A21\u5F0F",depth:3,title:"\u663E\u793A\u6A21\u5F0F"},{id:"\u5B57\u6BB5\u7EC4\u4EF6",depth:3,title:"\u5B57\u6BB5\u7EC4\u4EF6"},{id:"\u5B57\u6BB5\u7684\u7C7B\u578B",depth:2,title:"\u5B57\u6BB5\u7684\u7C7B\u578B"}],ZK=[{value:"\u5728 UI \u91CC\uFF0C\u5B57\u6BB5\u5373\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u662F\u5355\u5143\u6570\u636E\u7684\u8F7D\u4F53\uFF0C\u4E0D\u540C\u7C7B\u578B\u6570\u636E\u4EE5\u4E0D\u540C\u5B57\u6BB5\u7EC4\u4EF6\u5448\u73B0\u3002\u5B57\u6BB5\u53EA\u80FD\u9644\u5C5E\u4E8E\u533A\u5757\uFF0C\u4E0D\u80FD\u72EC\u7ACB\u4F7F\u7528\u3002",paraId:0,tocIndex:0},{value:"\u5B57\u6BB5\u4E00\u822C\u4E0D\u5355\u72EC\u4F7F\u7528\uFF0C\u800C\u662F\u4F5C\u4E3A\u6570\u636E\u7C7B\u578B\u533A\u5757\u7684\u5B50\u5143\u7D20\u5B58\u5728\u3002\u6570\u636E\u7C7B\u578B\u7684\u533A\u5757\u901A\u5E38\u90FD\u6709\u300C\u914D\u7F6E\u5B57\u6BB5\u300D\uFF0C\u5B57\u6BB5\u5217\u8868\u7531\u5F53\u524D\u6570\u636E\u8868\u63D0\u4F9B\u3002",paraId:1,tocIndex:1},{value:"\u548C\u533A\u5757\u4E00\u6837\uFF0C\u5B57\u6BB5\u7EC4\u4EF6\u7684\u53F3\u4E0A\u89D2\u4E5F\u6709\u4E09\u4E2A\u56FE\u6807\uFF0C\u5206\u522B\u4E3A\uFF1A",paraId:2,tocIndex:2},{value:"\u62D6\u62FD\u5E03\u5C40",paraId:3,tocIndex:2},{value:"\u5FEB\u6377\u6DFB\u52A0\u5B57\u6BB5",paraId:3,tocIndex:2},{value:"\u5B57\u6BB5\u53C2\u6570\u914D\u7F6E",paraId:3,tocIndex:2},{value:"\u901A\u8FC7\u62D6\u62FD\u79FB\u52A8\u53EF\u4EE5\u81EA\u5B9A\u4E49\u8C03\u6574\u5B57\u6BB5\u5728\u533A\u5757\u4E2D\u7684\u5E03\u5C40",paraId:4,tocIndex:3},{value:"\u7F16\u8F91\u5B57\u6BB5\u6807\u9898",paraId:5,tocIndex:4},{value:"\u663E\u793A\u6807\u9898",paraId:5,tocIndex:4},{value:"\u7F16\u8F91\u63CF\u8FF0",paraId:5,tocIndex:4},{value:"\u5FC5\u586B",paraId:5,tocIndex:4},{value:"\u9A8C\u8BC1\u89C4\u5219",paraId:5,tocIndex:4},{value:"\u9ED8\u8BA4\u503C",paraId:5,tocIndex:4},{value:"\u663E\u793A\u6A21\u5F0F",paraId:5,tocIndex:4},{value:"\u91CD\u8981\u53C2\u6570\u914D\u7F6E\u8BF4\u660E\uFF1A",paraId:6,tocIndex:4},{value:"\u5F85\u8865\u5145",paraId:7,tocIndex:5},{value:"\u5F85\u8865\u5145",paraId:8,tocIndex:6},{value:"\u548C\u533A\u5757\u4E0D\u540C\u7684\u662F\u5B57\u6BB5\u7EC4\u4EF6\u6709\u4E09\u79CD\u663E\u793A\u6A21\u5F0F\uFF1A",paraId:9,tocIndex:7},{value:"\u53EF\u7F16\u8F91 - editable",paraId:10,tocIndex:7},{value:"\u53EA\u8BFB\uFF08\u4E0D\u53EF\u7F16\u8F91\uFF09- readonly",paraId:10,tocIndex:7},{value:"\u53EA\u8BFB\uFF08\u9605\u8BFB\u6A21\u5F0F\uFF09- read friendly",paraId:10,tocIndex:7},{value:"\u90E8\u5206\u5B57\u6BB5\u652F\u6301\u5207\u6362\u4E3A\u5176\u4ED6\u7EC4\u4EF6\uFF0C\u4F8B\u5982\uFF1A",paraId:11,tocIndex:8},{value:"URL",paraId:11,tocIndex:8},{value:" \u7EC4\u4EF6\u53EF\u4EE5\u5207\u6362\u4E3A ",paraId:11,tocIndex:8},{value:"Preview",paraId:11,tocIndex:8},{value:" \u7EC4\u4EF6\u3002",paraId:11,tocIndex:8},{value:"\u5982\u679C\u4F60\u9700\u8981\u6269\u5C55\u66F4\u591A\u7684\u7EC4\u4EF6\uFF0C\u53EF\u4EE5\u53C2\u8003 ",paraId:12,tocIndex:8},{value:"\u6269\u5C55\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6\u7EC4\u4EF6",paraId:13,tocIndex:8},{value:"\u3002",paraId:12,tocIndex:8},{value:"\u533A\u5757\u7684\u5B57\u6BB5\u7531\u6570\u636E\u8868\u63D0\u4F9B\uFF0C\u66F4\u591A\u5B57\u6BB5\u7C7B\u578B\u7684\u914D\u7F6E\u53C2\u8003 ",paraId:14,tocIndex:9},{value:"\u6570\u636E\u8868\u5B57\u6BB5\u7C7B\u578B",paraId:14,tocIndex:9}],YK={},QK={title:"\u4F7F\u7528\u624B\u518C",toc:"menu",filename:"docs/en-US/plugins/acl/user/index.md",lastUpdated:1732240239e3,description:'\u521D\u59CB\u5316\u5B89\u88C5\u7684\u5E94\u7528\u5185\u7F6E\u4E86\u4E24\u4E2A\u89D2\u8272\uFF0C\u5206\u522B\u662F "Admin" \u548C "Member"\uFF0C\u5B83\u4EEC\u5177\u6709\u4E0D\u540C\u7684\u9ED8\u8BA4\u6743\u9650\u8BBE\u7F6E\u3002'},JK=[{id:"\u4F7F\u7528\u624B\u518C",depth:1,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u7BA1\u7406\u4E2D\u5FC3",depth:2,title:"\u7BA1\u7406\u4E2D\u5FC3"},{id:"\u89D2\u8272\u7684\u7BA1\u7406",depth:3,title:"\u89D2\u8272\u7684\u7BA1\u7406"},{id:"\u89D2\u8272\u7684\u589E\u5220\u6539",depth:3,title:"\u89D2\u8272\u7684\u589E\u5220\u6539"},{id:"\u8BBE\u7F6E\u9ED8\u8BA4\u89D2\u8272",depth:3,title:"\u8BBE\u7F6E\u9ED8\u8BA4\u89D2\u8272"},{id:"\u914D\u7F6E\u6743\u9650",depth:3,title:"\u914D\u7F6E\u6743\u9650"},{id:"\u901A\u7528\u6743\u9650\u914D\u7F6E",depth:4,title:"\u901A\u7528\u6743\u9650\u914D\u7F6E"},{id:"\u914D\u7F6E\u6743\u9650-1",depth:5,title:"\u914D\u7F6E\u6743\u9650"},{id:"\u5168\u5C40\u64CD\u4F5C\u6743\u9650",depth:5,title:"\u5168\u5C40\u64CD\u4F5C\u6743\u9650"},{id:"\u6570\u636E\u8868\u64CD\u4F5C\u6743\u9650",depth:4,title:"\u6570\u636E\u8868\u64CD\u4F5C\u6743\u9650"},{id:"\u83DC\u5355\u8BBF\u95EE\u6743\u9650",depth:4,title:"\u83DC\u5355\u8BBF\u95EE\u6743\u9650"},{id:"\u63D2\u4EF6\u914D\u7F6E\u6743\u9650",depth:4,title:"\u63D2\u4EF6\u914D\u7F6E\u6743\u9650"},{id:"\u4E2A\u4EBA\u4E2D\u5FC3",depth:2,title:"\u4E2A\u4EBA\u4E2D\u5FC3"},{id:"\u89D2\u8272\u5207\u6362",depth:3,title:"\u89D2\u8272\u5207\u6362"},{id:"\u5728-ui-\u4E2D\u7684\u5E94\u7528",depth:2,title:"\u5728 UI \u4E2D\u7684\u5E94\u7528"},{id:"\u6570\u636E\u533A\u5757\u7684\u6743\u9650",depth:3,title:"\u6570\u636E\u533A\u5757\u7684\u6743\u9650"},{id:"\u5B57\u6BB5\u6743\u9650",depth:3,title:"\u5B57\u6BB5\u6743\u9650"},{id:"\u64CD\u4F5C\u6743\u9650",depth:3,title:"\u64CD\u4F5C\u6743\u9650"},{id:"\u5173\u7CFB\u6743\u9650",depth:3,title:"\u5173\u7CFB\u6743\u9650"},{id:"\u4F5C\u4E3A\u5B57\u6BB5\u65F6",depth:4,title:"\u4F5C\u4E3A\u5B57\u6BB5\u65F6"},{id:"\u4F5C\u4E3A\u533A\u5757\u65F6",depth:4,title:"\u4F5C\u4E3A\u533A\u5757\u65F6"}],XK=[{value:'\u521D\u59CB\u5316\u5B89\u88C5\u7684\u5E94\u7528\u5185\u7F6E\u4E86\u4E24\u4E2A\u89D2\u8272\uFF0C\u5206\u522B\u662F "Admin" \u548C "Member"\uFF0C\u5B83\u4EEC\u5177\u6709\u4E0D\u540C\u7684\u9ED8\u8BA4\u6743\u9650\u8BBE\u7F6E\u3002',paraId:0,tocIndex:2},{value:"\u89D2\u8272\u6807\u8BC6\uFF08\u7CFB\u7EDF\u552F\u4E00\u6807\u8BC6\uFF09\uFF0C\u53EF\u4EE5\u81EA\u5B9A\u4E49\u9ED8\u8BA4\u89D2\u8272\uFF0C\u4E0D\u53EF\u5C06\u7CFB\u7EDF\u9ED8\u8BA4\u89D2\u8272\u5220\u9664",paraId:1,tocIndex:3},{value:"\u8FD9\u91CC\u7684\u9ED8\u8BA4\u89D2\u8272\u662F\u6307\u5F53\u65B0\u5EFA\u7684\u7528\u6237\u6CA1\u6709\u914D\u89D2\u8272\u65F6\uFF0C\u9ED8\u8BA4\u7528\u54EA\u4E2A\u89D2\u8272",paraId:2,tocIndex:4},{value:'\u5141\u8BB8\u914D\u7F6E\u754C\u9762\uFF1A\u8BE5\u6743\u9650\u63A7\u5236\u662F\u5426\u5141\u8BB8\u7528\u6237\u914D\u7F6E\u754C\u9762\u3002\u6FC0\u6D3B\u6B64\u6743\u9650\u540E\uFF0C\u51FA\u73B0 UI \u914D\u7F6E\u6309\u94AE\u3002"admin" \u89D2\u8272\u9ED8\u8BA4\u542F\u7528\u6B64\u6743\u9650\u3002',paraId:3,tocIndex:7},{value:'\u5141\u8BB8\u5B89\u88C5\u3001\u6FC0\u6D3B\u3001\u7981\u7528\u63D2\u4EF6\uFF1A\u8BE5\u6743\u9650\u63A7\u5236\u662F\u5426\u5141\u8BB8\u7528\u6237\u542F\u7528\u6216\u7981\u7528\u63D2\u4EF6\u3002\u6FC0\u6D3B\u6B64\u6743\u9650\u540E\uFF0C\u7528\u6237\u53EF\u4EE5\u8BBF\u95EE\u63D2\u4EF6\u7BA1\u7406\u5668\u754C\u9762\u3002"admin" \u89D2\u8272\u9ED8\u8BA4\u542F\u7528\u6B64\u6743\u9650\u3002',paraId:3,tocIndex:7},{value:'\u5141\u8BB8\u914D\u7F6E\u63D2\u4EF6\uFF1A\u8BE5\u6743\u9650\u63A7\u5236\u662F\u5426\u5141\u8BB8\u7528\u6237\u914D\u7F6E\u63D2\u4EF6\u53C2\u6570\u6216\u7BA1\u7406\u63D2\u4EF6\u540E\u53F0\u6570\u636E\u3002"admin" \u89D2\u8272\u9ED8\u8BA4\u542F\u7528\u6B64\u6743\u9650\u3002',paraId:3,tocIndex:7},{value:"\u5141\u8BB8\u6E05\u9664\u7F13\u5B58\uFF0C\u91CD\u542F\u5E94\u7528\uFF1A\u8BE5\u6743\u9650\u63A7\u5236\u7684\u662F\u7528\u6237\u7684\u7CFB\u7EDF\u8FD0\u7EF4\u6743\u9650\uFF1A \u6E05\u7A7A\u7F13\u5B58\u548C\u91CD\u542F\u5E94\u7528\u3002\u6FC0\u6D3B\u540E\uFF0C\u76F8\u5173\u64CD\u4F5C\u6309\u94AE\u5C06\u51FA\u73B0\u5728\u4E2A\u4EBA\u4E2D\u5FC3,\u9ED8\u8BA4\u4E0D\u542F\u7528\u3002",paraId:3,tocIndex:7},{value:"\u65B0\u589E\u83DC\u5355\u9879\u9ED8\u8BA4\u5141\u8BB8\u8BBF\u95EE\uFF1A\u9ED8\u8BA4\u65B0\u5EFA\u7684\u83DC\u5355\u5141\u8BB8\u8BBF\u95EE\uFF0C\u9ED8\u8BA4\u5F00\u542F",paraId:3,tocIndex:7},{value:"\u5168\u5C40\u64CD\u4F5C\u6743\u9650\u5BF9\u5168\u5C40\u751F\u6548\uFF08\u6240\u6709\u6570\u636E\u8868\uFF09\u6309\u7167\u64CD\u4F5C\u7C7B\u578B\u5212\u5206\uFF0C\u652F\u6301\u6839\u636E\u6570\u636E\u8303\u56F4\u7EF4\u5EA6\u914D\u7F6E\uFF1A\u6240\u6709\u6570\u636E\u548C\u81EA\u5DF1\u7684\u6570\u636E\u3002\u524D\u8005\u5141\u8BB8\u5BF9\u6574\u4E2A\u6570\u636E\u8868\u6267\u884C\u64CD\u4F5C\uFF0C\u800C\u540E\u8005\u9650\u5236\u4EC5\u80FD\u5904\u7406\u81EA\u5DF1\u76F8\u5173\u7684\u6570\u636E\u3002",paraId:4,tocIndex:8},{value:"\u6570\u636E\u8868\u64CD\u4F5C\u6743\u9650\u8FDB\u4E00\u6B65\u7EC6\u5316\u4E86\u5168\u5C40\u64CD\u4F5C\u6743\u9650\uFF0C\u53EF\u4EE5\u9488\u5BF9\u6BCF\u4E2A\u6570\u636E\u8868\u7684\u8D44\u6E90\u8BBF\u95EE\u8FDB\u884C\u4E2A\u522B\u7684\u6743\u9650\u914D\u7F6E\u3002\u8FD9\u4E9B\u6743\u9650\u5206\u4E3A\u4E24\u4E2A\u65B9\u9762\uFF1A",paraId:5,tocIndex:9},{value:"\u64CD\u4F5C\u6743\u9650\uFF1A\u64CD\u4F5C\u6743\u9650\u5305\u62EC\u6DFB\u52A0\u3001\u67E5\u770B\u3001\u7F16\u8F91\u3001\u5220\u9664\u3001\u5BFC\u51FA\u548C\u5BFC\u5165\u64CD\u4F5C\u3002\u8FD9\u4E9B\u6743\u9650\u6839\u636E\u6570\u636E\u8303\u56F4\u7684\u7EF4\u5EA6\u8FDB\u884C\u914D\u7F6E\uFF1A",paraId:6,tocIndex:9},{value:"\u6240\u6709\u6570\u636E\uFF1A\u5141\u8BB8\u7528\u6237\u5BF9\u6570\u636E\u8868\u4E2D\u7684\u6240\u6709\u8BB0\u5F55\u6267\u884C\u64CD\u4F5C\u3002",paraId:7,tocIndex:9},{value:"\u81EA\u5DF1\u7684\u6570\u636E\uFF1A\u9650\u5236\u7528\u6237\u4EC5\u5BF9\u81EA\u5DF1\u521B\u5EFA\u7684\u6570\u636E\u8BB0\u5F55\u6267\u884C\u64CD\u4F5C\u3002",paraId:7,tocIndex:9},{value:"\u5B57\u6BB5\u6743\u9650\uFF1A\u5B57\u6BB5\u6743\u9650\u5141\u8BB8\u5BF9\u6BCF\u4E2A\u5B57\u6BB5\u5728\u4E0D\u540C\u64CD\u4F5C\u4E2D\u8FDB\u884C\u6743\u9650\u914D\u7F6E\u3002\u4F8B\u5982\uFF0C\u67D0\u4E9B\u5B57\u6BB5\u53EF\u4EE5\u914D\u7F6E\u4E3A\u53EA\u5141\u8BB8\u67E5\u770B\u800C\u4E0D\u5141\u8BB8\u7F16\u8F91\u3002",paraId:8,tocIndex:9},{value:"\u83DC\u5355\u8BBF\u95EE\u6743\u9650\u4EE5\u83DC\u5355\u4E3A\u7EF4\u5EA6\u63A7\u5236\u8BBF\u95EE\u6743\u9650",paraId:9,tocIndex:10},{value:"\u63D2\u4EF6\u914D\u7F6E\u6743\u9650\u7528\u4E8E\u63A7\u5236\u5BF9\u7279\u5B9A\u63D2\u4EF6\u53C2\u6570\u7684\u914D\u7F6E\u6743\u9650\uFF0C\u5F53\u63D2\u4EF6\u914D\u7F6E\u6743\u9650\u52FE\u9009\u540E\u7BA1\u7406\u4E2D\u5FC3\u5C06\u51FA\u73B0\u5BF9\u5E94\u7684\u63D2\u4EF6\u7BA1\u7406\u754C\u9762",paraId:10,tocIndex:11},{value:"\u53EF\u4EE5\u4E3A\u4E00\u4E2A\u7528\u6237\u5206\u914D\u591A\u4E2A\u89D2\u8272\uFF0C\u5F53\u7528\u6237\u62E5\u6709\u591A\u4E2A\u89D2\u8272\u65F6\uFF0C\u53EF\u5728\u4E2A\u4EBA\u4E2D\u5FC3\u5207\u6362\u89D2\u8272",paraId:11,tocIndex:13},{value:"\u7528\u6237\u8FDB\u5165\u7CFB\u7EDF\u7684\u7684\u9ED8\u8BA4\u89D2\u8272\u4F18\u5148\u7EA7\u4E3A\uFF1A\u4E0A\u4E00\u6B21\u5207\u6362\u7684\u89D2\u8272\uFF08\u6BCF\u6B21\u5207\u6362\u89D2\u8272\u65F6\u4F1A\u66F4\u65B0\u9ED8\u8BA4\u89D2\u8272\u503C\uFF09> \u7B2C\u4E00\u4E2A\u89D2\u8272\uFF08\u7CFB\u7EDF\u9ED8\u8BA4\u89D2\u8272\uFF09",paraId:12,tocIndex:13},{value:"\u6570\u636E\u8868\u6570\u636E\u533A\u5757\u662F\u5426\u53EF\u89C1\u7531\u67E5\u770B\u64CD\u4F5C\u6743\u9650\u63A7\u5236\uFF08\u5355\u72EC\u914D\u7F6E\u7684\u4F18\u5148\u7EA7\u9AD8\u4E8E\u5168\u5C40\uFF09",paraId:13,tocIndex:15},{value:"\u5982\u4E0B\u56FE\uFF1A\u5168\u5C40\u6743\u9650\u4E0B admin \u62E5\u6709\u6240\u6709\u6743\u9650\uFF0C\u8BA2\u5355\u8868\u914D\u7F6E\u5355\u72EC\u6743\u9650\uFF08\u4E0D\u53EF\u89C1\uFF09",paraId:14,tocIndex:15},{value:"\u5168\u5C40\u6743\u9650\u914D\u7F6E\u5982\u4E0B\uFF1A",paraId:15,tocIndex:15},{value:"\u8BA2\u5355\u8868\u5355\u72EC\u6743\u9650\u914D\u7F6E\u5982\u4E0B\uFF1A",paraId:16,tocIndex:15},{value:"\u5728 UI \u4E0A\u7684\u8868\u73B0\u4E3A\u8BA2\u5355\u8868\u7684\u6240\u6709\u533A\u5757\u5747\u4E0D\u663E\u793A",paraId:17,tocIndex:15},{value:"\u5B8C\u6574\u914D\u7F6E\u6D41\u7A0B\u5982\u4E0B",paraId:18,tocIndex:15},{value:"\u67E5\u770B: \u63A7\u5236\u5B57\u6BB5\u5B57\u6BB5\u7EA7\u522B\u662F\u5426\u53EF\u89C1\uFF0C\u4F8B\u5982\u63A7\u5236\u67D0\u4E2A\u89D2\u8272\u5BF9\u8BA2\u5355\u8868\u7684\u67D0\u4E9B\u5B57\u6BB5\u53EF\u89C1",paraId:19,tocIndex:16},{value:"\u5728 UI \u4E0A\u8868\u73B0\u4E3A\u8BA2\u5355\u8868\u7684\u533A\u5757\u4E2D\u53EA\u663E\u793A\u6709\u914D\u7F6E\u6743\u9650\u7684\u5B57\u6BB5\uFF0C\u7CFB\u7EDF\u5B57\u6BB5\uFF08Id,CreateAt ,Last updated at\uFF09\u5373\u4F7F\u4E0D\u914D\u7F6E\u4E5F\u6709\u67E5\u770B\u6743\u9650",paraId:20,tocIndex:16},{value:"\u7F16\u8F91:\u63A7\u5236\u5B57\u6BB5\u662F\u5426\u53EF\u4EE5\u7F16\u8F91\u4FDD\u5B58(\u66F4\u65B0)",paraId:21,tocIndex:16},{value:"\u5982\u56FE\u914D\u7F6E\u8BA2\u5355\u8868\u5B57\u6BB5\u7684\u7F16\u8F91\u6743\u9650\uFF08\u6570\u91CF\u548C\u5173\u8054\u7684\u5546\u54C1\u6709\u7F16\u8F91\u6743\u9650\uFF09",paraId:22,tocIndex:16},{value:"\u5728 UI \u4E0A\u7684\u8868\u73B0\u4E3A\u8BA2\u5355\u8868\u533A\u5757\u7684\u7F16\u8F91\u64CD\u4F5C\u8868\u5355\u533A\u5757\u53EA\u663E\u793A\u6709\u7F16\u8F91\u6743\u9650\u7684\u5B57\u6BB5",paraId:23,tocIndex:16},{value:"\u5B8C\u6574\u914D\u7F6E\u6D41\u7A0B\u5982\u4E0B\uFF1A",paraId:24,tocIndex:16},{value:"\u6DFB\u52A0:\u63A7\u5236\u5B57\u6BB5\u662F\u5426\u53EF\u4EE5\u6DFB\u52A0\uFF08\u521B\u5EFA\uFF09",paraId:25,tocIndex:16},{value:"\u5982\u56FE\u914D\u7F6E\u8BA2\u5355\u8868\u5B57\u6BB5\u7684\u6DFB\u52A0\u6743\u9650\uFF08\u8BA2\u5355\u7F16\u53F7\u3001\u6570\u91CF\u3001\u5546\u54C1\u3001\u8FD0\u5355\u6709\u6DFB\u52A0\u6743\u9650)",paraId:26,tocIndex:16},{value:"\u5728 UI \u4E2D\u8868\u73B0\u4E3A\u8BA2\u5355\u8868\u533A\u5757\u7684\u6DFB\u52A0\u64CD\u4F5C\u8868\u5355\u533A\u5757\u4E2D\u53EA\u663E\u793A\u6709\u6DFB\u52A0\u6743\u9650\u7684\u5B57\u6BB5",paraId:27,tocIndex:16},{value:"\u5BFC\u51FA:\u63A7\u5236\u5B57\u6BB5\u662F\u5426\u53EF\u4EE5\u5BFC\u51FA",paraId:28,tocIndex:16},{value:"\u5BFC\u5165:\u63A7\u5236\u5B57\u6BB5\u662F\u5426\u652F\u6301\u5BFC\u5165",paraId:28,tocIndex:16},{value:"\u5355\u72EC\u914D\u7F6E\u7684\u4F18\u5148\u7EA7\u6700\u9AD8\uFF0C\u6709\u5355\u72EC\u914D\u7F6E\u6309\u5355\u72EC\u914D\u7F6E\u6743\u9650\u6CA1\u6709\u5219\u8D70\u5168\u5C40\u914D\u7F6E\u7684\u6743\u9650",paraId:29,tocIndex:17},{value:"\u6DFB\u52A0\uFF0C\u63A7\u5236\u533A\u5757\u4E2D\u6DFB\u52A0\u64CD\u4F5C\u6309\u94AE\u662F\u5426\u663E\u793A",paraId:30,tocIndex:17},{value:"\u5982\u56FE\u8BA2\u5355\u8868\u5355\u72EC\u914D\u7F6E\u64CD\u4F5C\u6743\u9650\uFF0C\u5141\u8BB8\u6DFB\u52A0",paraId:31,tocIndex:17},{value:"\u5728 UI \u4E2D\u8868\u73B0\u4E3A\u8BA2\u5355\u8868\u533A\u5757\u4E2D\u64CD\u4F5C\u533A\u57DF\u4E2D\u6DFB\u52A0\u6309\u94AE\u663E\u793A",paraId:32,tocIndex:17},{value:"\u67E5\u770B",paraId:33,tocIndex:17},{value:"\u63A7\u5236\u6570\u636E\u533A\u5757\u662F\u5426\u663E\u793A",paraId:34,tocIndex:17},{value:"\u5982\u56FE\u5168\u5C40\u6743\u9650\u914D\u7F6E\u5982\u4E0B\uFF08\u6CA1\u6709\u67E5\u770B\u6743\u9650\uFF09",paraId:35,tocIndex:17},{value:"\u8BA2\u5355\u8868\u5355\u72EC\u914D\u7F6E\u6743\u9650\u5982\u4E0B",paraId:36,tocIndex:17},{value:"\u5728 UI \u4E2D\u8868\u73B0\u4E3A\uFF1A\u5176\u4ED6\u6240\u6709\u6570\u636E\u8868\u7684\u533A\u5757\u5747\u4E0D\u663E\u793A\uFF0C\u8BA2\u5355\u8868\u7684\u533A\u5757\u663E\u793A\u3002",paraId:37,tocIndex:17},{value:"\u5B8C\u6574\u793A\u4F8B\u914D\u7F6E\u6D41\u7A0B\u5982\u4E0B",paraId:38,tocIndex:17},{value:"\u7F16\u8F91",paraId:39,tocIndex:17},{value:"\u63A7\u5236\u533A\u5757\u5185\u7684\u7F16\u8F91\u64CD\u4F5C\u6309\u94AE\u662F\u5426\u663E\u793A",paraId:40,tocIndex:17},{value:"\u901A\u8FC7\u8BBE\u7F6E\u6570\u636E\u8303\u56F4\u53EF\u4EE5\u8FDB\u4E00\u6B65\u63A7\u5236\u64CD\u4F5C\u7684\u6743\u9650",paraId:41,tocIndex:17},{value:"\u5982\u56FE\u8BBE\u7F6E\u8BA2\u5355\u6570\u636E\u8868\u4E2D\u7528\u6237\u53EA\u80FD\u7F16\u8F91\u6570\u636E\u81EA\u5DF1\u7684\u6570\u636E",paraId:42,tocIndex:17},{value:"\u5220\u9664",paraId:43,tocIndex:17},{value:"\u63A7\u5236\u533A\u5757\u4E2D\u5220\u9664\u64CD\u4F5C\u6309\u94AE\u7684\u663E\u793A",paraId:44,tocIndex:17},{value:"\u5BFC\u51FA",paraId:45,tocIndex:17},{value:"\u63A7\u5236\u533A\u5757\u4E2D\u5BFC\u51FA\u64CD\u4F5C\u6309\u94AE\u7684\u663E\u793A",paraId:46,tocIndex:17},{value:"\u5BFC\u5165",paraId:47,tocIndex:17},{value:"\u63A7\u5236\u533A\u5757\u4E2D\u5BFC\u5165\u64CD\u4F5C\u6309\u94AE\u7684\u663E\u793A",paraId:48,tocIndex:17},{value:"\u5173\u7CFB\u5B57\u6BB5\u7684\u6743\u9650\u7531\u6E90\u8868\u7684\u5B57\u6BB5\u6743\u9650\u63A7\u5236\uFF0C\u63A7\u5236\u6574\u4E2A\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u662F\u5426\u663E\u793A",paraId:49,tocIndex:19},{value:"\u5982\u56FE\u8BA2\u5355\u8868\u4E2D\u5173\u7CFB\u5B57\u6BB5\u5BA2\u6237\u53EA\u6709\u67E5\u770B\u548C\u5BFC\u5165\u5BFC\u51FA\u6743\u9650",paraId:50,tocIndex:19},{value:"\u5728 UI \u4E2D\u8868\u73B0\u4E3A\u8BA2\u5355\u8868\u533A\u5757\u4E2D\u6DFB\u52A0\u548C\u7F16\u8F91\u64CD\u4F5C\u533A\u5757\u4E2D\u5BA2\u6237\u5173\u7CFB\u5B57\u6BB5\u4E0D\u4F1A\u663E\u793A",paraId:51,tocIndex:19},{value:"\u5B8C\u6574\u793A\u4F8B\u914D\u7F6E\u6D41\u7A0B\u5982\u4E0B",paraId:52,tocIndex:19},{value:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u5185\uFF08\u5982\u5B50\u8868\u683C/\u5B50\u8868\u5355\uFF09\u5B57\u6BB5\u7684\u6743\u9650\u7531\u76EE\u6807\u6570\u636E\u8868\u6743\u9650\u51B3\u5B9A",paraId:53,tocIndex:19},{value:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u4E3A\u5B50\u8868\u5355\u65F6\uFF1A",paraId:54,tocIndex:19},{value:"\u5982\u4E0B\u56FE\u8BA2\u5355\u8868\u4E2D\u5173\u7CFB\u5B57\u6BB5\u300C\u5BA2\u6237\u300D\uFF0C\u8BA2\u5355\u4E2D\u7684\u5173\u7CFB\u5B57\u6BB5\u300C\u5BA2\u6237\u300D\u6709\u6240\u6709\u6743\u9650\uFF0C\u800C\u5BA2\u6237\u8868\u8BBE\u7F6E\u5355\u72EC\u6743\u9650\u4E3A\u53EA\u8BFB",paraId:55,tocIndex:19},{value:"\u8BA2\u5355\u8868\u5355\u72EC\u914D\u7F6E\u6743\u9650\u5982\u4E0B\uFF0C\u300C\u5BA2\u6237\u300D\u5173\u7CFB\u5B57\u6BB5\u6709\u6240\u6709\u5B57\u6BB5\u6743\u9650",paraId:56,tocIndex:19},{value:"\u5BA2\u6237\u8868\u5355\u72EC\u914D\u7F6E\u6743\u9650\u5982\u4E0B\uFF0C\u5BA2\u6237\u8868\u4E2D\u5B57\u6BB5\u53EA\u6709\u67E5\u770B\u6743\u9650",paraId:57,tocIndex:19},{value:"\u5728 UI \u4E2D\u8868\u73B0\u4E3A\uFF1A\u5728\u8BA2\u5355\u8868\u533A\u5757\u4E2D\u5BA2\u6237\u5173\u7CFB\u5B57\u6BB5\u53EF\u89C1\uFF0C\u800C\u5F53\u5207\u6362\u4E3A\u5B50\u8868\u5355\u65F6\uFF08\u5B50\u8868\u5355\u5185\u7684\u5B57\u6BB5\u5728\u8BE6\u60C5\u4E2D\u53EF\u89C1\uFF0C\u5728\u65B0\u5EFA\u548C\u7F16\u8F91\u64CD\u4F5C\u4E2D\u4E0D\u663E\u793A\uFF09",paraId:58,tocIndex:19},{value:"\u5B8C\u6574\u793A\u4F8B\u914D\u7F6E\u6D41\u7A0B\u5982\u4E0B",paraId:59,tocIndex:19},{value:"\u8FDB\u4E00\u6B65\u63A7\u5236\u5B50\u8868\u5355\u5185\u5B57\u6BB5\u6743\u9650\uFF1A\u4E2A\u522B\u5B57\u6BB5\u62E5\u6709\u6743\u9650",paraId:60,tocIndex:19},{value:"\u5982\u56FE\u5BA2\u6237\u8868\u5355\u72EC\u914D\u7F6E\u5B57\u6BB5\u6743\u9650\uFF08\u5BA2\u6237\u540D\u79F0\u4E0D\u53EF\u89C1\u4E0D\u53EF\u7F16\u8F91\uFF09",paraId:61,tocIndex:19},{value:"\u5B8C\u6574\u793A\u4F8B\u914D\u7F6E\u6D41\u7A0B\u5982\u4E0B",paraId:62,tocIndex:19},{value:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u4E3A\u5B50\u8868\u683C\u65F6\u60C5\u51B5\u548C\u5B50\u8868\u5355\u4E00\u81F4\uFF1A",paraId:63,tocIndex:19},{value:"\u5982\u56FE\u8BA2\u5355\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u8FD0\u5355\u300D\uFF0C\u8BA2\u5355\u4E2D\u7684\u5173\u7CFB\u5B57\u6BB5\u300C\u8FD0\u5355\u300D\u6709\u6240\u6709\u6743\u9650\uFF0C\u800C\u8FD0\u5355\u8868\u8BBE\u7F6E\u5355\u72EC\u6743\u9650\u4E3A\u53EA\u8BFB",paraId:64,tocIndex:19},{value:"\u5728 UI \u4E2D\u8868\u73B0\u4E3A\uFF1A\u8BE5\u5173\u7CFB\u5B57\u6BB5\u53EF\u89C1\uFF0C\u800C\u5F53\u5207\u6362\u4E3A\u5B50\u8868\u683C\u65F6\uFF08\u5B50\u8868\u683C\u5185\u7684\u5B57\u6BB5\u5728\u67E5\u770B\u64CD\u4F5C\u4E2D\u53EF\u89C1\uFF0C\u5728\u65B0\u5EFA\u548C\u7F16\u8F91\u64CD\u4F5C\u4E2D\u4E0D\u53EF\u89C1\uFF09",paraId:65,tocIndex:19},{value:"\u8FDB\u4E00\u6B65\u63A7\u5236\u5B50\u8868\u683C\u5185\u5B57\u6BB5\u6743\u9650\uFF1A\u4E2A\u522B\u5B57\u6BB5\u62E5\u6709\u6743\u9650",paraId:66,tocIndex:19},{value:"\u5173\u7CFB\u533A\u5757\u7684\u7531\u5BF9\u5E94\u5173\u7CFB\u5B57\u6BB5\u76EE\u6807\u8868\u6743\u9650\u63A7\u5236\uFF0C\u548C\u5173\u7CFB\u5B57\u6BB5\u6743\u9650\u65E0\u5173",paraId:67,tocIndex:20},{value:"\u5982\u56FE\u300C\u5BA2\u6237\u300D\u5173\u7CFB\u533A\u5757\u662F\u5426\u663E\u793A\u7531\u5BA2\u6237\u8868\u6743\u9650\u63A7\u5236",paraId:68,tocIndex:20},{value:"\u5173\u7CFB\u533A\u5757\u5185\u7684\u5B57\u6BB5\u7531\u76EE\u6807\u8868\u4E2D\u7684\u5B57\u6BB5\u6743\u9650\u63A7\u5236",paraId:69,tocIndex:20},{value:"\u5982\u56FE\u4E3A\u5BA2\u6237\u8868\u8BBE\u7F6E\u4E2A\u522B\u5B57\u6BB5\u62E5\u6709\u67E5\u770B\u6743\u9650",paraId:70,tocIndex:20}],eZ={},aZ={title:"API \u5BC6\u94A5",toc:"menu",filename:"docs/en-US/plugins/api-keys/index.md",lastUpdated:1732240239e3,description:"http://localhost:13000/admin/settings/api-keys/configuration"},tZ=[{id:"api-\u5BC6\u94A5",depth:1,title:"API \u5BC6\u94A5"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u8BF4\u660E",depth:2,title:"\u4F7F\u7528\u8BF4\u660E"},{id:"\u6DFB\u52A0-api-\u5BC6\u94A5",depth:3,title:"\u6DFB\u52A0 API \u5BC6\u94A5"},{id:"\u5982\u4F55\u914D\u7F6E-app_key",depth:3,title:"\u5982\u4F55\u914D\u7F6E APP_KEY"}],nZ=[{value:"http://localhost:13000/admin/settings/api-keys/configuration",paraId:0,tocIndex:3},{value:"\u6CE8\u610F\u4E8B\u9879",paraId:1,tocIndex:4},{value:"\u6DFB\u52A0\u7684 API \u5BC6\u94A5\u4E3A\u5F53\u524D\u7528\u6237\u7684\uFF0C\u89D2\u8272\u4E3A\u5F53\u524D\u7528\u6237\u6240\u5C5E\u89D2\u8272",paraId:2,tocIndex:4},{value:"\u8BF7\u786E\u4FDD\u5DF2\u7ECF\u914D\u7F6E\u4E86 ",paraId:2,tocIndex:4},{value:"APP_KEY",paraId:2,tocIndex:4},{value:" \u73AF\u5883\u53D8\u91CF\uFF0C\u5E76\u4FDD\u8BC1\u4E0D\u53D8\u6CC4\u6F0F\uFF0C\u5982\u679C APP_KEY \u53D8\u66F4\u4E86\uFF0C\u6240\u6709\u5DF2\u6DFB\u52A0\u7684 API \u5BC6\u94A5\u4F1A\u5931\u6548\u3002",paraId:2,tocIndex:4},{value:"docker \u7248\u672C\uFF0C\u4FEE\u6539 docker-compose.yml \u6587\u4EF6",paraId:3,tocIndex:5},{value:`services: +`,paraId:19,tocIndex:10},{value:"Automatic backup",paraId:20,tocIndex:11},{value:": When enable ",paraId:20,tocIndex:11},{value:"Run automatic backup on the cron schedule",paraId:20,tocIndex:11},{value:", you can set automatic backups at specified times.",paraId:20,tocIndex:11},{value:"Maximum number of backups",paraId:20,tocIndex:11},{value:": Set the maximum number of locally saved backup files. After exceeding the number, the earliest backup files will be automatically deleted.",paraId:20,tocIndex:11},{value:"Sync backup to cloud storage",paraId:20,tocIndex:11},{value:": Set the cloud storage location where the backup files are automatically uploaded after successful backup, only support cloud storage.",paraId:20,tocIndex:11},{value:"Backup local storage files",paraId:20,tocIndex:11},{value:": Whether to include files uploaded by users to the server's local storage (storage/uploads) in the backup.",paraId:20,tocIndex:11},{value:"Restore password",paraId:20,tocIndex:11},{value:": If a restore password is set, it must be entered when restoring the backup.",paraId:20,tocIndex:11},{value:"Please keep the restore password safe. Forgetting the password will make it impossible to restore the backup file.",paraId:21,tocIndex:11}],OK={},RK={title:"\u7F16\u8F91",toc:"menu",filename:"docs/en-US/manual/ui/actions/edit.md",lastUpdated:173254844e4,description:"\u7F16\u8F91\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5BF9\u6570\u636E\u8FDB\u884C\u4FEE\u6539\uFF0C\u901A\u5E38\u914D\u7F6E\u8868\u5355\u533A\u5757"},MK=[{id:"\u7F16\u8F91",depth:1,title:"\u7F16\u8F91"}],LK=[{value:"\u7F16\u8F91\u64CD\u4F5C\u5141\u8BB8\u7528\u6237\u5BF9\u6570\u636E\u8FDB\u884C\u4FEE\u6539\uFF0C\u901A\u5E38\u914D\u7F6E\u8868\u5355\u533A\u5757",paraId:0,tocIndex:0}],NK={},zK={title:"\u67E5\u770B",toc:"menu",filename:"docs/en-US/manual/ui/actions/view.md",lastUpdated:173254844e4,description:"\u8BE6\u60C5\u64CD\u4F5C\u7528\u4E8E\u67E5\u770B\u6570\u636E\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u901A\u5E38\u914D\u7F6E\u8BE6\u60C5\u533A\u5757,\u8BE6\u60C5\u533A\u5757"},FK=[{id:"\u67E5\u770B",depth:1,title:"\u67E5\u770B"}],BK=[{value:"\u8BE6\u60C5\u64CD\u4F5C\u7528\u4E8E\u67E5\u770B\u6570\u636E\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u901A\u5E38\u914D\u7F6E\u8BE6\u60C5\u533A\u5757,\u8BE6\u60C5\u533A\u5757",paraId:0,tocIndex:0}],jK={},HK={title:"\u533A\u5757",toc:"menu",filename:"docs/en-US/manual/ui/blocks/index.md",lastUpdated:173254844e4,description:"\u533A\u5757\u662F\u5185\u5BB9\u7684\u8F7D\u4F53\uFF0C\u53EF\u4EE5\u653E\u7F6E\u4E8E\u9875\u9762\uFF08Page\uFF09\u3001\u5BF9\u8BDD\u6846\uFF08Modal\uFF09\u6216\u62BD\u5C49\uFF08Drawer\uFF09\u91CC\uFF0C\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u81EA\u7531\u62D6\u62FD\u6392\u5217\u3002"},WK=[{id:"\u533A\u5757",depth:1,title:"\u533A\u5757"},{id:"\u6DFB\u52A0\u533A\u5757",depth:2,title:"\u6DFB\u52A0\u533A\u5757"},{id:"\u9875\u9762\u91CC\u7684\u533A\u5757",depth:3,title:"\u9875\u9762\u91CC\u7684\u533A\u5757"},{id:"\u5F39\u7A97\u5BF9\u8BDD\u6846\u6216\u62BD\u5C49\u91CC\u7684\u533A\u5757",depth:3,title:"\u5F39\u7A97\uFF08\u5BF9\u8BDD\u6846\u6216\u62BD\u5C49\uFF09\u91CC\u7684\u533A\u5757"},{id:"\u62BD\u5C49",depth:4,title:"\u62BD\u5C49"},{id:"\u5BF9\u8BDD\u6846",depth:4,title:"\u5BF9\u8BDD\u6846"},{id:"\u533A\u5757\u7684\u8BBE\u8BA1\u5668",depth:2,title:"\u533A\u5757\u7684\u8BBE\u8BA1\u5668"},{id:"\u533A\u5757\u5E03\u5C40",depth:2,title:"\u533A\u5757\u5E03\u5C40"},{id:"\u533A\u5757\u6A21\u677F",depth:2,title:"\u533A\u5757\u6A21\u677F"},{id:"\u5982\u4F55\u6DFB\u52A0\u548C\u4F7F\u7528\u6A21\u677F",depth:3,title:"\u5982\u4F55\u6DFB\u52A0\u548C\u4F7F\u7528\u6A21\u677F\uFF1F"},{id:"\u590D\u5236\u548C\u5F15\u7528\u7684\u533A\u522B",depth:3,title:"\u590D\u5236\u548C\u5F15\u7528\u7684\u533A\u522B"},{id:"\u533A\u5757\u7C7B\u578B",depth:2,title:"\u533A\u5757\u7C7B\u578B"},{id:"\u6570\u636E\u533A\u5757",depth:3,title:"\u6570\u636E\u533A\u5757"},{id:"\u7B5B\u9009\u533A\u5757",depth:3,title:"\u7B5B\u9009\u533A\u5757"},{id:"\u5173\u7CFB\u533A\u5757",depth:3,title:"\u5173\u7CFB\u533A\u5757"},{id:"\u5176\u4ED6\u533A\u5757",depth:3,title:"\u5176\u4ED6\u533A\u5757"},{id:"\u7B5B\u9009\u8054\u52A8",depth:2,title:"\u7B5B\u9009\u8054\u52A8"}],$K=[{value:"\u533A\u5757\u662F\u5185\u5BB9\u7684\u8F7D\u4F53\uFF0C\u53EF\u4EE5\u653E\u7F6E\u4E8E\u9875\u9762\uFF08Page\uFF09\u3001\u5BF9\u8BDD\u6846\uFF08Modal\uFF09\u6216\u62BD\u5C49\uFF08Drawer\uFF09\u91CC\uFF0C\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u81EA\u7531\u62D6\u62FD\u6392\u5217\u3002",paraId:0,tocIndex:0},{value:"\u533A\u5757\u53EF\u4EE5\u653E\u7F6E\u4E8E\u9875\u9762\uFF08Page\uFF09\u3001\u5BF9\u8BDD\u6846\uFF08Modal\uFF09\u6216\u62BD\u5C49\uFF08Drawer\uFF09\u91CC",paraId:1,tocIndex:1},{value:"\u76EE\u524D\u9875\u9762\u91CC\u7684\u533A\u5757\u7C7B\u578B\u5305\u62EC\uFF1A\u6570\u636E\u533A\u5757\u3001\u7B5B\u9009\u533A\u5757\u3001\u5176\u4ED6\u533A\u5757",paraId:2,tocIndex:2},{value:"\u5F39\u7A97\u6709\u5BF9\u8BDD\u6846\u548C\u62BD\u5C49\u4E24\u79CD\uFF0C\u548C\u9875\u9762\u4E00\u6837\u4E5F\u53EF\u4EE5\u6DFB\u52A0\u533A\u5757\uFF0C\u533A\u522B\u5728\u4E8E\u5F39\u7A97\u91CC\u7684\u533A\u5757\u901A\u5E38\u4E3A\u5355\u6761\u8BB0\u5F55\u7684\u6DFB\u52A0\u3001\u7F16\u8F91\u6216\u67E5\u770B\u7B49\uFF0C\u533A\u5757\u7C7B\u578B\u5305\u62EC\u5F53\u524D\u6570\u636E\u533A\u5757\u3001\u5173\u7CFB\u533A\u5757\u3001\u5176\u4ED6\u533A\u5757\u3002",paraId:3,tocIndex:3},{value:"\u6BCF\u4E2A\u533A\u5757\u53F3\u4E0A\u89D2\u90FD\u6709\u4E09\u4E2A\u5C0F\u56FE\u6807\uFF0C\u4ECE\u5DE6\u5230\u53F3\u5206\u522B\u4E3A\uFF1A",paraId:4,tocIndex:6},{value:"\u62D6\u62FD\u5E03\u5C40",paraId:5,tocIndex:6},{value:"\u5FEB\u6377\u6DFB\u52A0\u533A\u5757",paraId:5,tocIndex:6},{value:"\u533A\u5757\u53C2\u6570\u914D\u7F6E",paraId:5,tocIndex:6},{value:"\u7B80\u5355\u7684\u533A\u5757\u6240\u6709\u7684\u914D\u7F6E\u9879\u90FD\u96C6\u4E2D\u5728\u300C\u533A\u5757\u53C2\u6570\u914D\u7F6E\u300D\u91CC\uFF0C\u5982 Markdown",paraId:6,tocIndex:6},{value:"\u590D\u6742\u7684\u6570\u636E\u7C7B\u578B\u533A\u5757\u8FD8\u4F1A\u63D0\u4F9B\u72EC\u7ACB\u7684\u5185\u5D4C\u7684\u300C\u914D\u7F6E\u5B57\u6BB5\u300D\u548C\u300C\u914D\u7F6E\u64CD\u4F5C\u300D",paraId:7,tocIndex:6},{value:"\u9664\u6B64\u4E4B\u5916\uFF0C\u4E5F\u53EF\u4EE5\u81EA\u7531\u53D1\u6325\uFF0C\u63D0\u4F9B\u66F4\u591A\u5D4C\u5957\u7684\u53EF\u80FD\uFF0C\u5982\u56FE\u8868\u533A\u5757",paraId:8,tocIndex:6},{value:"\u591A\u4E2A\u533A\u5757\u53EF\u4EE5\u901A\u8FC7\u62D6\u62FD\u8C03\u6574\u5E03\u5C40",paraId:9,tocIndex:7},{value:"\u53EF\u4EE5\u5C06\u4E00\u4E2A\u6570\u636E\u7C7B\u578B\u533A\u5757\u4FDD\u5B58\u4E3A\u6A21\u677F\uFF0C\u4EE5\u540E\u6DFB\u52A0\u533A\u5757\u65F6\u53EF\u4EE5\u76F4\u63A5\u590D\u5236\u6216\u5F15\u7528\u8FD9\u4E2A\u6A21\u677F\u3002\u6BD4\u5982\uFF0C\u4E00\u4E2A\u6570\u636E\u8868\u7684\u8868\u5355\uFF0C\u65E2\u7528\u4E8E\u65B0\u589E\u6570\u636E\uFF0C\u53C8\u7528\u4E8E\u7F16\u8F91\u6570\u636E\uFF0C\u90A3\u5C31\u53EF\u4EE5\u5C06\u8FD9\u4E2A\u8868\u5355\u4FDD\u5B58\u4E3A\u6A21\u677F\uFF0C\u5728\u65B0\u589E\u6570\u636E\u548C\u7F16\u8F91\u6570\u636E\u7684\u754C\u9762\u91CC\u5F15\u7528\u5B83\u3002",paraId:10,tocIndex:8},{value:"\u5C06\u6570\u636E\u533A\u5757\u4FDD\u5B58\u4E3A\u533A\u5757\u6A21\u677F\uFF08\u53EA\u6709\u6570\u636E\u7C7B\u578B\u7684\u533A\u5757\u624D\u6709\u8FD9\u4E2A\u914D\u7F6E\u9879\uFF09",paraId:11,tocIndex:9},{value:"\u6DFB\u52A0\u533A\u5757\u65F6\uFF0C\u9009\u62E9\u590D\u5236\u6216\u5F15\u7528\u6A21\u677F",paraId:12,tocIndex:9},{value:"\u590D\u5236\u662F\u57FA\u4E8E\u533A\u5757\u6A21\u677F\u521B\u5EFA\u7684\u5168\u65B0\u533A\u5757\uFF0C\u533A\u5757\u6709\u8C03\u6574\u4E0D\u5F71\u54CD\u6A21\u5757\uFF1B\u5F15\u7528\u662F\u76F4\u63A5\u4F7F\u7528\u533A\u5757\u6A21\u677F\uFF0C\u533A\u5757\u8C03\u6574\u4F1A\u6539\u53D8\u6A21\u677F\uFF0C\u6240\u6709\u5F15\u7528\u4E86\u5F53\u524D\u6A21\u677F\u7684\u533A\u5757\u90FD\u4F1A\u4EA7\u751F\u53D8\u5316\u3002",paraId:13,tocIndex:10},{value:"NocoBase \u9ED8\u8BA4\u5C06\u533A\u5757\u5206\u4E3A\u56DB\u79CD\u7C7B\u578B\uFF1A",paraId:14,tocIndex:11},{value:"\u6570\u636E\u533A\u5757\uFF1A\u53EF\u4EE5\u5C06 Collection \u7684\u6570\u636E\u5C55\u793A\u5728\u533A\u5757\u91CC",paraId:15,tocIndex:11},{value:"\u7B5B\u9009\u533A\u5757\uFF1A\u76EE\u524D\u53EA\u80FD\u5728\u9875\u9762\u91CC\u6DFB\u52A0\uFF0C\u53EF\u7528\u4E8E\u6570\u636E\u533A\u5757\u7684\u6570\u636E\u7B5B\u9009",paraId:15,tocIndex:11},{value:"\u5173\u7CFB\u533A\u5757\uFF1A\u76EE\u524D\u53EA\u80FD\u5728\u5F39\u7A97\u91CC\u6DFB\u52A0\uFF0C\u53EF\u7528\u4E8E\u5F53\u524D\u8BB0\u5F55\u7684\u5173\u7CFB\u6570\u636E\u7684\u589E\u5220\u6539\u67E5\u7B49",paraId:15,tocIndex:11},{value:"\u5176\u4ED6\u533A\u5757\uFF1A\u7528\u4E8E\u653E\u7F6E\u72EC\u7ACB\u533A\u5757\uFF0C\u5982 Markdown\u3001\u5BA1\u8BA1\u65E5\u5FD7\u533A\u5757\u3001\u5DE5\u4F5C\u6D41\u5F85\u529E\u533A\u5757\u7B49",paraId:15,tocIndex:11}],GK={},VK={title:"Overview",toc:"menu",filename:"docs/en-US/manual/ui/fields/index.md",lastUpdated:173254844e4,description:"\u5728 UI \u91CC\uFF0C\u5B57\u6BB5\u5373\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u662F\u5355\u5143\u6570\u636E\u7684\u8F7D\u4F53\uFF0C\u4E0D\u540C\u7C7B\u578B\u6570\u636E\u4EE5\u4E0D\u540C\u5B57\u6BB5\u7EC4\u4EF6\u5448\u73B0\u3002\u5B57\u6BB5\u53EA\u80FD\u9644\u5C5E\u4E8E\u533A\u5757\uFF0C\u4E0D\u80FD\u72EC\u7ACB\u4F7F\u7528\u3002"},KK=[{id:"overview",depth:1,title:"Overview"},{id:"\u533A\u5757\u91CC\u7684\u5B57\u6BB5",depth:2,title:"\u533A\u5757\u91CC\u7684\u5B57\u6BB5"},{id:"\u5B57\u6BB5\u7684\u8BBE\u8BA1\u5668\u5DE5\u5177\u680F",depth:2,title:"\u5B57\u6BB5\u7684\u8BBE\u8BA1\u5668\uFF08\u5DE5\u5177\u680F\uFF09"},{id:"\u5B57\u6BB5\u7684\u5E03\u5C40",depth:2,title:"\u5B57\u6BB5\u7684\u5E03\u5C40"},{id:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E",depth:2,title:"\u901A\u7528\u7684\u53C2\u6570\u914D\u7F6E"},{id:"\u9A8C\u8BC1\u89C4\u5219",depth:3,title:"\u9A8C\u8BC1\u89C4\u5219"},{id:"\u9ED8\u8BA4\u503C",depth:3,title:"\u9ED8\u8BA4\u503C"},{id:"\u663E\u793A\u6A21\u5F0F",depth:3,title:"\u663E\u793A\u6A21\u5F0F"},{id:"\u5B57\u6BB5\u7EC4\u4EF6",depth:3,title:"\u5B57\u6BB5\u7EC4\u4EF6"},{id:"\u5B57\u6BB5\u7684\u7C7B\u578B",depth:2,title:"\u5B57\u6BB5\u7684\u7C7B\u578B"}],ZK=[{value:"\u5728 UI \u91CC\uFF0C\u5B57\u6BB5\u5373\u5B57\u6BB5\u7EC4\u4EF6\uFF0C\u662F\u5355\u5143\u6570\u636E\u7684\u8F7D\u4F53\uFF0C\u4E0D\u540C\u7C7B\u578B\u6570\u636E\u4EE5\u4E0D\u540C\u5B57\u6BB5\u7EC4\u4EF6\u5448\u73B0\u3002\u5B57\u6BB5\u53EA\u80FD\u9644\u5C5E\u4E8E\u533A\u5757\uFF0C\u4E0D\u80FD\u72EC\u7ACB\u4F7F\u7528\u3002",paraId:0,tocIndex:0},{value:"\u5B57\u6BB5\u4E00\u822C\u4E0D\u5355\u72EC\u4F7F\u7528\uFF0C\u800C\u662F\u4F5C\u4E3A\u6570\u636E\u7C7B\u578B\u533A\u5757\u7684\u5B50\u5143\u7D20\u5B58\u5728\u3002\u6570\u636E\u7C7B\u578B\u7684\u533A\u5757\u901A\u5E38\u90FD\u6709\u300C\u914D\u7F6E\u5B57\u6BB5\u300D\uFF0C\u5B57\u6BB5\u5217\u8868\u7531\u5F53\u524D\u6570\u636E\u8868\u63D0\u4F9B\u3002",paraId:1,tocIndex:1},{value:"\u548C\u533A\u5757\u4E00\u6837\uFF0C\u5B57\u6BB5\u7EC4\u4EF6\u7684\u53F3\u4E0A\u89D2\u4E5F\u6709\u4E09\u4E2A\u56FE\u6807\uFF0C\u5206\u522B\u4E3A\uFF1A",paraId:2,tocIndex:2},{value:"\u62D6\u62FD\u5E03\u5C40",paraId:3,tocIndex:2},{value:"\u5FEB\u6377\u6DFB\u52A0\u5B57\u6BB5",paraId:3,tocIndex:2},{value:"\u5B57\u6BB5\u53C2\u6570\u914D\u7F6E",paraId:3,tocIndex:2},{value:"\u901A\u8FC7\u62D6\u62FD\u79FB\u52A8\u53EF\u4EE5\u81EA\u5B9A\u4E49\u8C03\u6574\u5B57\u6BB5\u5728\u533A\u5757\u4E2D\u7684\u5E03\u5C40",paraId:4,tocIndex:3},{value:"\u7F16\u8F91\u5B57\u6BB5\u6807\u9898",paraId:5,tocIndex:4},{value:"\u663E\u793A\u6807\u9898",paraId:5,tocIndex:4},{value:"\u7F16\u8F91\u63CF\u8FF0",paraId:5,tocIndex:4},{value:"\u5FC5\u586B",paraId:5,tocIndex:4},{value:"\u9A8C\u8BC1\u89C4\u5219",paraId:5,tocIndex:4},{value:"\u9ED8\u8BA4\u503C",paraId:5,tocIndex:4},{value:"\u663E\u793A\u6A21\u5F0F",paraId:5,tocIndex:4},{value:"\u91CD\u8981\u53C2\u6570\u914D\u7F6E\u8BF4\u660E\uFF1A",paraId:6,tocIndex:4},{value:"\u5F85\u8865\u5145",paraId:7,tocIndex:5},{value:"\u5F85\u8865\u5145",paraId:8,tocIndex:6},{value:"\u548C\u533A\u5757\u4E0D\u540C\u7684\u662F\u5B57\u6BB5\u7EC4\u4EF6\u6709\u4E09\u79CD\u663E\u793A\u6A21\u5F0F\uFF1A",paraId:9,tocIndex:7},{value:"\u53EF\u7F16\u8F91 - editable",paraId:10,tocIndex:7},{value:"\u53EA\u8BFB\uFF08\u4E0D\u53EF\u7F16\u8F91\uFF09- readonly",paraId:10,tocIndex:7},{value:"\u53EA\u8BFB\uFF08\u9605\u8BFB\u6A21\u5F0F\uFF09- read friendly",paraId:10,tocIndex:7},{value:"\u90E8\u5206\u5B57\u6BB5\u652F\u6301\u5207\u6362\u4E3A\u5176\u4ED6\u7EC4\u4EF6\uFF0C\u4F8B\u5982\uFF1A",paraId:11,tocIndex:8},{value:"URL",paraId:11,tocIndex:8},{value:" \u7EC4\u4EF6\u53EF\u4EE5\u5207\u6362\u4E3A ",paraId:11,tocIndex:8},{value:"Preview",paraId:11,tocIndex:8},{value:" \u7EC4\u4EF6\u3002",paraId:11,tocIndex:8},{value:"\u5982\u679C\u4F60\u9700\u8981\u6269\u5C55\u66F4\u591A\u7684\u7EC4\u4EF6\uFF0C\u53EF\u4EE5\u53C2\u8003 ",paraId:12,tocIndex:8},{value:"\u6269\u5C55\u6709\u503C\u5B57\u6BB5\u7EC4\u4EF6\u7EC4\u4EF6",paraId:13,tocIndex:8},{value:"\u3002",paraId:12,tocIndex:8},{value:"\u533A\u5757\u7684\u5B57\u6BB5\u7531\u6570\u636E\u8868\u63D0\u4F9B\uFF0C\u66F4\u591A\u5B57\u6BB5\u7C7B\u578B\u7684\u914D\u7F6E\u53C2\u8003 ",paraId:14,tocIndex:9},{value:"\u6570\u636E\u8868\u5B57\u6BB5\u7C7B\u578B",paraId:14,tocIndex:9}],YK={},QK={title:"\u4F7F\u7528\u624B\u518C",toc:"menu",filename:"docs/en-US/plugins/acl/user/index.md",lastUpdated:173254844e4,description:'\u521D\u59CB\u5316\u5B89\u88C5\u7684\u5E94\u7528\u5185\u7F6E\u4E86\u4E24\u4E2A\u89D2\u8272\uFF0C\u5206\u522B\u662F "Admin" \u548C "Member"\uFF0C\u5B83\u4EEC\u5177\u6709\u4E0D\u540C\u7684\u9ED8\u8BA4\u6743\u9650\u8BBE\u7F6E\u3002'},JK=[{id:"\u4F7F\u7528\u624B\u518C",depth:1,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u7BA1\u7406\u4E2D\u5FC3",depth:2,title:"\u7BA1\u7406\u4E2D\u5FC3"},{id:"\u89D2\u8272\u7684\u7BA1\u7406",depth:3,title:"\u89D2\u8272\u7684\u7BA1\u7406"},{id:"\u89D2\u8272\u7684\u589E\u5220\u6539",depth:3,title:"\u89D2\u8272\u7684\u589E\u5220\u6539"},{id:"\u8BBE\u7F6E\u9ED8\u8BA4\u89D2\u8272",depth:3,title:"\u8BBE\u7F6E\u9ED8\u8BA4\u89D2\u8272"},{id:"\u914D\u7F6E\u6743\u9650",depth:3,title:"\u914D\u7F6E\u6743\u9650"},{id:"\u901A\u7528\u6743\u9650\u914D\u7F6E",depth:4,title:"\u901A\u7528\u6743\u9650\u914D\u7F6E"},{id:"\u914D\u7F6E\u6743\u9650-1",depth:5,title:"\u914D\u7F6E\u6743\u9650"},{id:"\u5168\u5C40\u64CD\u4F5C\u6743\u9650",depth:5,title:"\u5168\u5C40\u64CD\u4F5C\u6743\u9650"},{id:"\u6570\u636E\u8868\u64CD\u4F5C\u6743\u9650",depth:4,title:"\u6570\u636E\u8868\u64CD\u4F5C\u6743\u9650"},{id:"\u83DC\u5355\u8BBF\u95EE\u6743\u9650",depth:4,title:"\u83DC\u5355\u8BBF\u95EE\u6743\u9650"},{id:"\u63D2\u4EF6\u914D\u7F6E\u6743\u9650",depth:4,title:"\u63D2\u4EF6\u914D\u7F6E\u6743\u9650"},{id:"\u4E2A\u4EBA\u4E2D\u5FC3",depth:2,title:"\u4E2A\u4EBA\u4E2D\u5FC3"},{id:"\u89D2\u8272\u5207\u6362",depth:3,title:"\u89D2\u8272\u5207\u6362"},{id:"\u5728-ui-\u4E2D\u7684\u5E94\u7528",depth:2,title:"\u5728 UI \u4E2D\u7684\u5E94\u7528"},{id:"\u6570\u636E\u533A\u5757\u7684\u6743\u9650",depth:3,title:"\u6570\u636E\u533A\u5757\u7684\u6743\u9650"},{id:"\u5B57\u6BB5\u6743\u9650",depth:3,title:"\u5B57\u6BB5\u6743\u9650"},{id:"\u64CD\u4F5C\u6743\u9650",depth:3,title:"\u64CD\u4F5C\u6743\u9650"},{id:"\u5173\u7CFB\u6743\u9650",depth:3,title:"\u5173\u7CFB\u6743\u9650"},{id:"\u4F5C\u4E3A\u5B57\u6BB5\u65F6",depth:4,title:"\u4F5C\u4E3A\u5B57\u6BB5\u65F6"},{id:"\u4F5C\u4E3A\u533A\u5757\u65F6",depth:4,title:"\u4F5C\u4E3A\u533A\u5757\u65F6"}],XK=[{value:'\u521D\u59CB\u5316\u5B89\u88C5\u7684\u5E94\u7528\u5185\u7F6E\u4E86\u4E24\u4E2A\u89D2\u8272\uFF0C\u5206\u522B\u662F "Admin" \u548C "Member"\uFF0C\u5B83\u4EEC\u5177\u6709\u4E0D\u540C\u7684\u9ED8\u8BA4\u6743\u9650\u8BBE\u7F6E\u3002',paraId:0,tocIndex:2},{value:"\u89D2\u8272\u6807\u8BC6\uFF08\u7CFB\u7EDF\u552F\u4E00\u6807\u8BC6\uFF09\uFF0C\u53EF\u4EE5\u81EA\u5B9A\u4E49\u9ED8\u8BA4\u89D2\u8272\uFF0C\u4E0D\u53EF\u5C06\u7CFB\u7EDF\u9ED8\u8BA4\u89D2\u8272\u5220\u9664",paraId:1,tocIndex:3},{value:"\u8FD9\u91CC\u7684\u9ED8\u8BA4\u89D2\u8272\u662F\u6307\u5F53\u65B0\u5EFA\u7684\u7528\u6237\u6CA1\u6709\u914D\u89D2\u8272\u65F6\uFF0C\u9ED8\u8BA4\u7528\u54EA\u4E2A\u89D2\u8272",paraId:2,tocIndex:4},{value:'\u5141\u8BB8\u914D\u7F6E\u754C\u9762\uFF1A\u8BE5\u6743\u9650\u63A7\u5236\u662F\u5426\u5141\u8BB8\u7528\u6237\u914D\u7F6E\u754C\u9762\u3002\u6FC0\u6D3B\u6B64\u6743\u9650\u540E\uFF0C\u51FA\u73B0 UI \u914D\u7F6E\u6309\u94AE\u3002"admin" \u89D2\u8272\u9ED8\u8BA4\u542F\u7528\u6B64\u6743\u9650\u3002',paraId:3,tocIndex:7},{value:'\u5141\u8BB8\u5B89\u88C5\u3001\u6FC0\u6D3B\u3001\u7981\u7528\u63D2\u4EF6\uFF1A\u8BE5\u6743\u9650\u63A7\u5236\u662F\u5426\u5141\u8BB8\u7528\u6237\u542F\u7528\u6216\u7981\u7528\u63D2\u4EF6\u3002\u6FC0\u6D3B\u6B64\u6743\u9650\u540E\uFF0C\u7528\u6237\u53EF\u4EE5\u8BBF\u95EE\u63D2\u4EF6\u7BA1\u7406\u5668\u754C\u9762\u3002"admin" \u89D2\u8272\u9ED8\u8BA4\u542F\u7528\u6B64\u6743\u9650\u3002',paraId:3,tocIndex:7},{value:'\u5141\u8BB8\u914D\u7F6E\u63D2\u4EF6\uFF1A\u8BE5\u6743\u9650\u63A7\u5236\u662F\u5426\u5141\u8BB8\u7528\u6237\u914D\u7F6E\u63D2\u4EF6\u53C2\u6570\u6216\u7BA1\u7406\u63D2\u4EF6\u540E\u53F0\u6570\u636E\u3002"admin" \u89D2\u8272\u9ED8\u8BA4\u542F\u7528\u6B64\u6743\u9650\u3002',paraId:3,tocIndex:7},{value:"\u5141\u8BB8\u6E05\u9664\u7F13\u5B58\uFF0C\u91CD\u542F\u5E94\u7528\uFF1A\u8BE5\u6743\u9650\u63A7\u5236\u7684\u662F\u7528\u6237\u7684\u7CFB\u7EDF\u8FD0\u7EF4\u6743\u9650\uFF1A \u6E05\u7A7A\u7F13\u5B58\u548C\u91CD\u542F\u5E94\u7528\u3002\u6FC0\u6D3B\u540E\uFF0C\u76F8\u5173\u64CD\u4F5C\u6309\u94AE\u5C06\u51FA\u73B0\u5728\u4E2A\u4EBA\u4E2D\u5FC3,\u9ED8\u8BA4\u4E0D\u542F\u7528\u3002",paraId:3,tocIndex:7},{value:"\u65B0\u589E\u83DC\u5355\u9879\u9ED8\u8BA4\u5141\u8BB8\u8BBF\u95EE\uFF1A\u9ED8\u8BA4\u65B0\u5EFA\u7684\u83DC\u5355\u5141\u8BB8\u8BBF\u95EE\uFF0C\u9ED8\u8BA4\u5F00\u542F",paraId:3,tocIndex:7},{value:"\u5168\u5C40\u64CD\u4F5C\u6743\u9650\u5BF9\u5168\u5C40\u751F\u6548\uFF08\u6240\u6709\u6570\u636E\u8868\uFF09\u6309\u7167\u64CD\u4F5C\u7C7B\u578B\u5212\u5206\uFF0C\u652F\u6301\u6839\u636E\u6570\u636E\u8303\u56F4\u7EF4\u5EA6\u914D\u7F6E\uFF1A\u6240\u6709\u6570\u636E\u548C\u81EA\u5DF1\u7684\u6570\u636E\u3002\u524D\u8005\u5141\u8BB8\u5BF9\u6574\u4E2A\u6570\u636E\u8868\u6267\u884C\u64CD\u4F5C\uFF0C\u800C\u540E\u8005\u9650\u5236\u4EC5\u80FD\u5904\u7406\u81EA\u5DF1\u76F8\u5173\u7684\u6570\u636E\u3002",paraId:4,tocIndex:8},{value:"\u6570\u636E\u8868\u64CD\u4F5C\u6743\u9650\u8FDB\u4E00\u6B65\u7EC6\u5316\u4E86\u5168\u5C40\u64CD\u4F5C\u6743\u9650\uFF0C\u53EF\u4EE5\u9488\u5BF9\u6BCF\u4E2A\u6570\u636E\u8868\u7684\u8D44\u6E90\u8BBF\u95EE\u8FDB\u884C\u4E2A\u522B\u7684\u6743\u9650\u914D\u7F6E\u3002\u8FD9\u4E9B\u6743\u9650\u5206\u4E3A\u4E24\u4E2A\u65B9\u9762\uFF1A",paraId:5,tocIndex:9},{value:"\u64CD\u4F5C\u6743\u9650\uFF1A\u64CD\u4F5C\u6743\u9650\u5305\u62EC\u6DFB\u52A0\u3001\u67E5\u770B\u3001\u7F16\u8F91\u3001\u5220\u9664\u3001\u5BFC\u51FA\u548C\u5BFC\u5165\u64CD\u4F5C\u3002\u8FD9\u4E9B\u6743\u9650\u6839\u636E\u6570\u636E\u8303\u56F4\u7684\u7EF4\u5EA6\u8FDB\u884C\u914D\u7F6E\uFF1A",paraId:6,tocIndex:9},{value:"\u6240\u6709\u6570\u636E\uFF1A\u5141\u8BB8\u7528\u6237\u5BF9\u6570\u636E\u8868\u4E2D\u7684\u6240\u6709\u8BB0\u5F55\u6267\u884C\u64CD\u4F5C\u3002",paraId:7,tocIndex:9},{value:"\u81EA\u5DF1\u7684\u6570\u636E\uFF1A\u9650\u5236\u7528\u6237\u4EC5\u5BF9\u81EA\u5DF1\u521B\u5EFA\u7684\u6570\u636E\u8BB0\u5F55\u6267\u884C\u64CD\u4F5C\u3002",paraId:7,tocIndex:9},{value:"\u5B57\u6BB5\u6743\u9650\uFF1A\u5B57\u6BB5\u6743\u9650\u5141\u8BB8\u5BF9\u6BCF\u4E2A\u5B57\u6BB5\u5728\u4E0D\u540C\u64CD\u4F5C\u4E2D\u8FDB\u884C\u6743\u9650\u914D\u7F6E\u3002\u4F8B\u5982\uFF0C\u67D0\u4E9B\u5B57\u6BB5\u53EF\u4EE5\u914D\u7F6E\u4E3A\u53EA\u5141\u8BB8\u67E5\u770B\u800C\u4E0D\u5141\u8BB8\u7F16\u8F91\u3002",paraId:8,tocIndex:9},{value:"\u83DC\u5355\u8BBF\u95EE\u6743\u9650\u4EE5\u83DC\u5355\u4E3A\u7EF4\u5EA6\u63A7\u5236\u8BBF\u95EE\u6743\u9650",paraId:9,tocIndex:10},{value:"\u63D2\u4EF6\u914D\u7F6E\u6743\u9650\u7528\u4E8E\u63A7\u5236\u5BF9\u7279\u5B9A\u63D2\u4EF6\u53C2\u6570\u7684\u914D\u7F6E\u6743\u9650\uFF0C\u5F53\u63D2\u4EF6\u914D\u7F6E\u6743\u9650\u52FE\u9009\u540E\u7BA1\u7406\u4E2D\u5FC3\u5C06\u51FA\u73B0\u5BF9\u5E94\u7684\u63D2\u4EF6\u7BA1\u7406\u754C\u9762",paraId:10,tocIndex:11},{value:"\u53EF\u4EE5\u4E3A\u4E00\u4E2A\u7528\u6237\u5206\u914D\u591A\u4E2A\u89D2\u8272\uFF0C\u5F53\u7528\u6237\u62E5\u6709\u591A\u4E2A\u89D2\u8272\u65F6\uFF0C\u53EF\u5728\u4E2A\u4EBA\u4E2D\u5FC3\u5207\u6362\u89D2\u8272",paraId:11,tocIndex:13},{value:"\u7528\u6237\u8FDB\u5165\u7CFB\u7EDF\u7684\u7684\u9ED8\u8BA4\u89D2\u8272\u4F18\u5148\u7EA7\u4E3A\uFF1A\u4E0A\u4E00\u6B21\u5207\u6362\u7684\u89D2\u8272\uFF08\u6BCF\u6B21\u5207\u6362\u89D2\u8272\u65F6\u4F1A\u66F4\u65B0\u9ED8\u8BA4\u89D2\u8272\u503C\uFF09> \u7B2C\u4E00\u4E2A\u89D2\u8272\uFF08\u7CFB\u7EDF\u9ED8\u8BA4\u89D2\u8272\uFF09",paraId:12,tocIndex:13},{value:"\u6570\u636E\u8868\u6570\u636E\u533A\u5757\u662F\u5426\u53EF\u89C1\u7531\u67E5\u770B\u64CD\u4F5C\u6743\u9650\u63A7\u5236\uFF08\u5355\u72EC\u914D\u7F6E\u7684\u4F18\u5148\u7EA7\u9AD8\u4E8E\u5168\u5C40\uFF09",paraId:13,tocIndex:15},{value:"\u5982\u4E0B\u56FE\uFF1A\u5168\u5C40\u6743\u9650\u4E0B admin \u62E5\u6709\u6240\u6709\u6743\u9650\uFF0C\u8BA2\u5355\u8868\u914D\u7F6E\u5355\u72EC\u6743\u9650\uFF08\u4E0D\u53EF\u89C1\uFF09",paraId:14,tocIndex:15},{value:"\u5168\u5C40\u6743\u9650\u914D\u7F6E\u5982\u4E0B\uFF1A",paraId:15,tocIndex:15},{value:"\u8BA2\u5355\u8868\u5355\u72EC\u6743\u9650\u914D\u7F6E\u5982\u4E0B\uFF1A",paraId:16,tocIndex:15},{value:"\u5728 UI \u4E0A\u7684\u8868\u73B0\u4E3A\u8BA2\u5355\u8868\u7684\u6240\u6709\u533A\u5757\u5747\u4E0D\u663E\u793A",paraId:17,tocIndex:15},{value:"\u5B8C\u6574\u914D\u7F6E\u6D41\u7A0B\u5982\u4E0B",paraId:18,tocIndex:15},{value:"\u67E5\u770B: \u63A7\u5236\u5B57\u6BB5\u5B57\u6BB5\u7EA7\u522B\u662F\u5426\u53EF\u89C1\uFF0C\u4F8B\u5982\u63A7\u5236\u67D0\u4E2A\u89D2\u8272\u5BF9\u8BA2\u5355\u8868\u7684\u67D0\u4E9B\u5B57\u6BB5\u53EF\u89C1",paraId:19,tocIndex:16},{value:"\u5728 UI \u4E0A\u8868\u73B0\u4E3A\u8BA2\u5355\u8868\u7684\u533A\u5757\u4E2D\u53EA\u663E\u793A\u6709\u914D\u7F6E\u6743\u9650\u7684\u5B57\u6BB5\uFF0C\u7CFB\u7EDF\u5B57\u6BB5\uFF08Id,CreateAt ,Last updated at\uFF09\u5373\u4F7F\u4E0D\u914D\u7F6E\u4E5F\u6709\u67E5\u770B\u6743\u9650",paraId:20,tocIndex:16},{value:"\u7F16\u8F91:\u63A7\u5236\u5B57\u6BB5\u662F\u5426\u53EF\u4EE5\u7F16\u8F91\u4FDD\u5B58(\u66F4\u65B0)",paraId:21,tocIndex:16},{value:"\u5982\u56FE\u914D\u7F6E\u8BA2\u5355\u8868\u5B57\u6BB5\u7684\u7F16\u8F91\u6743\u9650\uFF08\u6570\u91CF\u548C\u5173\u8054\u7684\u5546\u54C1\u6709\u7F16\u8F91\u6743\u9650\uFF09",paraId:22,tocIndex:16},{value:"\u5728 UI \u4E0A\u7684\u8868\u73B0\u4E3A\u8BA2\u5355\u8868\u533A\u5757\u7684\u7F16\u8F91\u64CD\u4F5C\u8868\u5355\u533A\u5757\u53EA\u663E\u793A\u6709\u7F16\u8F91\u6743\u9650\u7684\u5B57\u6BB5",paraId:23,tocIndex:16},{value:"\u5B8C\u6574\u914D\u7F6E\u6D41\u7A0B\u5982\u4E0B\uFF1A",paraId:24,tocIndex:16},{value:"\u6DFB\u52A0:\u63A7\u5236\u5B57\u6BB5\u662F\u5426\u53EF\u4EE5\u6DFB\u52A0\uFF08\u521B\u5EFA\uFF09",paraId:25,tocIndex:16},{value:"\u5982\u56FE\u914D\u7F6E\u8BA2\u5355\u8868\u5B57\u6BB5\u7684\u6DFB\u52A0\u6743\u9650\uFF08\u8BA2\u5355\u7F16\u53F7\u3001\u6570\u91CF\u3001\u5546\u54C1\u3001\u8FD0\u5355\u6709\u6DFB\u52A0\u6743\u9650)",paraId:26,tocIndex:16},{value:"\u5728 UI \u4E2D\u8868\u73B0\u4E3A\u8BA2\u5355\u8868\u533A\u5757\u7684\u6DFB\u52A0\u64CD\u4F5C\u8868\u5355\u533A\u5757\u4E2D\u53EA\u663E\u793A\u6709\u6DFB\u52A0\u6743\u9650\u7684\u5B57\u6BB5",paraId:27,tocIndex:16},{value:"\u5BFC\u51FA:\u63A7\u5236\u5B57\u6BB5\u662F\u5426\u53EF\u4EE5\u5BFC\u51FA",paraId:28,tocIndex:16},{value:"\u5BFC\u5165:\u63A7\u5236\u5B57\u6BB5\u662F\u5426\u652F\u6301\u5BFC\u5165",paraId:28,tocIndex:16},{value:"\u5355\u72EC\u914D\u7F6E\u7684\u4F18\u5148\u7EA7\u6700\u9AD8\uFF0C\u6709\u5355\u72EC\u914D\u7F6E\u6309\u5355\u72EC\u914D\u7F6E\u6743\u9650\u6CA1\u6709\u5219\u8D70\u5168\u5C40\u914D\u7F6E\u7684\u6743\u9650",paraId:29,tocIndex:17},{value:"\u6DFB\u52A0\uFF0C\u63A7\u5236\u533A\u5757\u4E2D\u6DFB\u52A0\u64CD\u4F5C\u6309\u94AE\u662F\u5426\u663E\u793A",paraId:30,tocIndex:17},{value:"\u5982\u56FE\u8BA2\u5355\u8868\u5355\u72EC\u914D\u7F6E\u64CD\u4F5C\u6743\u9650\uFF0C\u5141\u8BB8\u6DFB\u52A0",paraId:31,tocIndex:17},{value:"\u5728 UI \u4E2D\u8868\u73B0\u4E3A\u8BA2\u5355\u8868\u533A\u5757\u4E2D\u64CD\u4F5C\u533A\u57DF\u4E2D\u6DFB\u52A0\u6309\u94AE\u663E\u793A",paraId:32,tocIndex:17},{value:"\u67E5\u770B",paraId:33,tocIndex:17},{value:"\u63A7\u5236\u6570\u636E\u533A\u5757\u662F\u5426\u663E\u793A",paraId:34,tocIndex:17},{value:"\u5982\u56FE\u5168\u5C40\u6743\u9650\u914D\u7F6E\u5982\u4E0B\uFF08\u6CA1\u6709\u67E5\u770B\u6743\u9650\uFF09",paraId:35,tocIndex:17},{value:"\u8BA2\u5355\u8868\u5355\u72EC\u914D\u7F6E\u6743\u9650\u5982\u4E0B",paraId:36,tocIndex:17},{value:"\u5728 UI \u4E2D\u8868\u73B0\u4E3A\uFF1A\u5176\u4ED6\u6240\u6709\u6570\u636E\u8868\u7684\u533A\u5757\u5747\u4E0D\u663E\u793A\uFF0C\u8BA2\u5355\u8868\u7684\u533A\u5757\u663E\u793A\u3002",paraId:37,tocIndex:17},{value:"\u5B8C\u6574\u793A\u4F8B\u914D\u7F6E\u6D41\u7A0B\u5982\u4E0B",paraId:38,tocIndex:17},{value:"\u7F16\u8F91",paraId:39,tocIndex:17},{value:"\u63A7\u5236\u533A\u5757\u5185\u7684\u7F16\u8F91\u64CD\u4F5C\u6309\u94AE\u662F\u5426\u663E\u793A",paraId:40,tocIndex:17},{value:"\u901A\u8FC7\u8BBE\u7F6E\u6570\u636E\u8303\u56F4\u53EF\u4EE5\u8FDB\u4E00\u6B65\u63A7\u5236\u64CD\u4F5C\u7684\u6743\u9650",paraId:41,tocIndex:17},{value:"\u5982\u56FE\u8BBE\u7F6E\u8BA2\u5355\u6570\u636E\u8868\u4E2D\u7528\u6237\u53EA\u80FD\u7F16\u8F91\u6570\u636E\u81EA\u5DF1\u7684\u6570\u636E",paraId:42,tocIndex:17},{value:"\u5220\u9664",paraId:43,tocIndex:17},{value:"\u63A7\u5236\u533A\u5757\u4E2D\u5220\u9664\u64CD\u4F5C\u6309\u94AE\u7684\u663E\u793A",paraId:44,tocIndex:17},{value:"\u5BFC\u51FA",paraId:45,tocIndex:17},{value:"\u63A7\u5236\u533A\u5757\u4E2D\u5BFC\u51FA\u64CD\u4F5C\u6309\u94AE\u7684\u663E\u793A",paraId:46,tocIndex:17},{value:"\u5BFC\u5165",paraId:47,tocIndex:17},{value:"\u63A7\u5236\u533A\u5757\u4E2D\u5BFC\u5165\u64CD\u4F5C\u6309\u94AE\u7684\u663E\u793A",paraId:48,tocIndex:17},{value:"\u5173\u7CFB\u5B57\u6BB5\u7684\u6743\u9650\u7531\u6E90\u8868\u7684\u5B57\u6BB5\u6743\u9650\u63A7\u5236\uFF0C\u63A7\u5236\u6574\u4E2A\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u662F\u5426\u663E\u793A",paraId:49,tocIndex:19},{value:"\u5982\u56FE\u8BA2\u5355\u8868\u4E2D\u5173\u7CFB\u5B57\u6BB5\u5BA2\u6237\u53EA\u6709\u67E5\u770B\u548C\u5BFC\u5165\u5BFC\u51FA\u6743\u9650",paraId:50,tocIndex:19},{value:"\u5728 UI \u4E2D\u8868\u73B0\u4E3A\u8BA2\u5355\u8868\u533A\u5757\u4E2D\u6DFB\u52A0\u548C\u7F16\u8F91\u64CD\u4F5C\u533A\u5757\u4E2D\u5BA2\u6237\u5173\u7CFB\u5B57\u6BB5\u4E0D\u4F1A\u663E\u793A",paraId:51,tocIndex:19},{value:"\u5B8C\u6574\u793A\u4F8B\u914D\u7F6E\u6D41\u7A0B\u5982\u4E0B",paraId:52,tocIndex:19},{value:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u5185\uFF08\u5982\u5B50\u8868\u683C/\u5B50\u8868\u5355\uFF09\u5B57\u6BB5\u7684\u6743\u9650\u7531\u76EE\u6807\u6570\u636E\u8868\u6743\u9650\u51B3\u5B9A",paraId:53,tocIndex:19},{value:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u4E3A\u5B50\u8868\u5355\u65F6\uFF1A",paraId:54,tocIndex:19},{value:"\u5982\u4E0B\u56FE\u8BA2\u5355\u8868\u4E2D\u5173\u7CFB\u5B57\u6BB5\u300C\u5BA2\u6237\u300D\uFF0C\u8BA2\u5355\u4E2D\u7684\u5173\u7CFB\u5B57\u6BB5\u300C\u5BA2\u6237\u300D\u6709\u6240\u6709\u6743\u9650\uFF0C\u800C\u5BA2\u6237\u8868\u8BBE\u7F6E\u5355\u72EC\u6743\u9650\u4E3A\u53EA\u8BFB",paraId:55,tocIndex:19},{value:"\u8BA2\u5355\u8868\u5355\u72EC\u914D\u7F6E\u6743\u9650\u5982\u4E0B\uFF0C\u300C\u5BA2\u6237\u300D\u5173\u7CFB\u5B57\u6BB5\u6709\u6240\u6709\u5B57\u6BB5\u6743\u9650",paraId:56,tocIndex:19},{value:"\u5BA2\u6237\u8868\u5355\u72EC\u914D\u7F6E\u6743\u9650\u5982\u4E0B\uFF0C\u5BA2\u6237\u8868\u4E2D\u5B57\u6BB5\u53EA\u6709\u67E5\u770B\u6743\u9650",paraId:57,tocIndex:19},{value:"\u5728 UI \u4E2D\u8868\u73B0\u4E3A\uFF1A\u5728\u8BA2\u5355\u8868\u533A\u5757\u4E2D\u5BA2\u6237\u5173\u7CFB\u5B57\u6BB5\u53EF\u89C1\uFF0C\u800C\u5F53\u5207\u6362\u4E3A\u5B50\u8868\u5355\u65F6\uFF08\u5B50\u8868\u5355\u5185\u7684\u5B57\u6BB5\u5728\u8BE6\u60C5\u4E2D\u53EF\u89C1\uFF0C\u5728\u65B0\u5EFA\u548C\u7F16\u8F91\u64CD\u4F5C\u4E2D\u4E0D\u663E\u793A\uFF09",paraId:58,tocIndex:19},{value:"\u5B8C\u6574\u793A\u4F8B\u914D\u7F6E\u6D41\u7A0B\u5982\u4E0B",paraId:59,tocIndex:19},{value:"\u8FDB\u4E00\u6B65\u63A7\u5236\u5B50\u8868\u5355\u5185\u5B57\u6BB5\u6743\u9650\uFF1A\u4E2A\u522B\u5B57\u6BB5\u62E5\u6709\u6743\u9650",paraId:60,tocIndex:19},{value:"\u5982\u56FE\u5BA2\u6237\u8868\u5355\u72EC\u914D\u7F6E\u5B57\u6BB5\u6743\u9650\uFF08\u5BA2\u6237\u540D\u79F0\u4E0D\u53EF\u89C1\u4E0D\u53EF\u7F16\u8F91\uFF09",paraId:61,tocIndex:19},{value:"\u5B8C\u6574\u793A\u4F8B\u914D\u7F6E\u6D41\u7A0B\u5982\u4E0B",paraId:62,tocIndex:19},{value:"\u5173\u7CFB\u5B57\u6BB5\u7EC4\u4EF6\u4E3A\u5B50\u8868\u683C\u65F6\u60C5\u51B5\u548C\u5B50\u8868\u5355\u4E00\u81F4\uFF1A",paraId:63,tocIndex:19},{value:"\u5982\u56FE\u8BA2\u5355\u8868\u4E2D\u6709\u5173\u7CFB\u5B57\u6BB5\u300C\u8FD0\u5355\u300D\uFF0C\u8BA2\u5355\u4E2D\u7684\u5173\u7CFB\u5B57\u6BB5\u300C\u8FD0\u5355\u300D\u6709\u6240\u6709\u6743\u9650\uFF0C\u800C\u8FD0\u5355\u8868\u8BBE\u7F6E\u5355\u72EC\u6743\u9650\u4E3A\u53EA\u8BFB",paraId:64,tocIndex:19},{value:"\u5728 UI \u4E2D\u8868\u73B0\u4E3A\uFF1A\u8BE5\u5173\u7CFB\u5B57\u6BB5\u53EF\u89C1\uFF0C\u800C\u5F53\u5207\u6362\u4E3A\u5B50\u8868\u683C\u65F6\uFF08\u5B50\u8868\u683C\u5185\u7684\u5B57\u6BB5\u5728\u67E5\u770B\u64CD\u4F5C\u4E2D\u53EF\u89C1\uFF0C\u5728\u65B0\u5EFA\u548C\u7F16\u8F91\u64CD\u4F5C\u4E2D\u4E0D\u53EF\u89C1\uFF09",paraId:65,tocIndex:19},{value:"\u8FDB\u4E00\u6B65\u63A7\u5236\u5B50\u8868\u683C\u5185\u5B57\u6BB5\u6743\u9650\uFF1A\u4E2A\u522B\u5B57\u6BB5\u62E5\u6709\u6743\u9650",paraId:66,tocIndex:19},{value:"\u5173\u7CFB\u533A\u5757\u7684\u7531\u5BF9\u5E94\u5173\u7CFB\u5B57\u6BB5\u76EE\u6807\u8868\u6743\u9650\u63A7\u5236\uFF0C\u548C\u5173\u7CFB\u5B57\u6BB5\u6743\u9650\u65E0\u5173",paraId:67,tocIndex:20},{value:"\u5982\u56FE\u300C\u5BA2\u6237\u300D\u5173\u7CFB\u533A\u5757\u662F\u5426\u663E\u793A\u7531\u5BA2\u6237\u8868\u6743\u9650\u63A7\u5236",paraId:68,tocIndex:20},{value:"\u5173\u7CFB\u533A\u5757\u5185\u7684\u5B57\u6BB5\u7531\u76EE\u6807\u8868\u4E2D\u7684\u5B57\u6BB5\u6743\u9650\u63A7\u5236",paraId:69,tocIndex:20},{value:"\u5982\u56FE\u4E3A\u5BA2\u6237\u8868\u8BBE\u7F6E\u4E2A\u522B\u5B57\u6BB5\u62E5\u6709\u67E5\u770B\u6743\u9650",paraId:70,tocIndex:20}],eZ={},aZ={title:"API \u5BC6\u94A5",toc:"menu",filename:"docs/en-US/plugins/api-keys/index.md",lastUpdated:173254844e4,description:"http://localhost:13000/admin/settings/api-keys/configuration"},tZ=[{id:"api-\u5BC6\u94A5",depth:1,title:"API \u5BC6\u94A5"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u8BF4\u660E",depth:2,title:"\u4F7F\u7528\u8BF4\u660E"},{id:"\u6DFB\u52A0-api-\u5BC6\u94A5",depth:3,title:"\u6DFB\u52A0 API \u5BC6\u94A5"},{id:"\u5982\u4F55\u914D\u7F6E-app_key",depth:3,title:"\u5982\u4F55\u914D\u7F6E APP_KEY"}],nZ=[{value:"http://localhost:13000/admin/settings/api-keys/configuration",paraId:0,tocIndex:3},{value:"\u6CE8\u610F\u4E8B\u9879",paraId:1,tocIndex:4},{value:"\u6DFB\u52A0\u7684 API \u5BC6\u94A5\u4E3A\u5F53\u524D\u7528\u6237\u7684\uFF0C\u89D2\u8272\u4E3A\u5F53\u524D\u7528\u6237\u6240\u5C5E\u89D2\u8272",paraId:2,tocIndex:4},{value:"\u8BF7\u786E\u4FDD\u5DF2\u7ECF\u914D\u7F6E\u4E86 ",paraId:2,tocIndex:4},{value:"APP_KEY",paraId:2,tocIndex:4},{value:" \u73AF\u5883\u53D8\u91CF\uFF0C\u5E76\u4FDD\u8BC1\u4E0D\u53D8\u6CC4\u6F0F\uFF0C\u5982\u679C APP_KEY \u53D8\u66F4\u4E86\uFF0C\u6240\u6709\u5DF2\u6DFB\u52A0\u7684 API \u5BC6\u94A5\u4F1A\u5931\u6548\u3002",paraId:2,tocIndex:4},{value:"docker \u7248\u672C\uFF0C\u4FEE\u6539 docker-compose.yml \u6587\u4EF6",paraId:3,tocIndex:5},{value:`services: app: image: nocobase/nocobase:main environment: + - APP_KEY=4jAokvLKTJgM0v_JseUkJ `,paraId:4,tocIndex:5},{value:"\u6E90\u7801\u6216 create-nocobase-app \u5B89\u88C5\uFF0C\u76F4\u63A5\u4FEE\u6539 .env \u6587\u4EF6\u7684 APP_KEY \u5373\u53EF",paraId:5,tocIndex:5},{value:`APP_KEY=4jAokvLKTJgM0v_JseUkJ -`,paraId:6,tocIndex:5}],oZ={},rZ={title:"\u6269\u5C55\u8BA4\u8BC1\u7C7B\u578B",toc:"menu",filename:"docs/en-US/plugins/auth/dev/guide.md",lastUpdated:1732240239e3,description:"NocoBase \u652F\u6301\u6309\u9700\u8981\u6269\u5C55\u7528\u6237\u8BA4\u8BC1\u7C7B\u578B\u3002\u4E0B\u9762\u4ECB\u7ECD\u5982\u4F55\u6CE8\u518C\u670D\u52A1\u7AEF\u63A5\u53E3\u548C\u5BA2\u6237\u7AEF\u7528\u6237\u754C\u9762\u3002"},dZ=[{id:"\u6269\u5C55\u8BA4\u8BC1\u7C7B\u578B",depth:1,title:"\u6269\u5C55\u8BA4\u8BC1\u7C7B\u578B"},{id:"\u6982\u89C8",depth:2,title:"\u6982\u89C8"},{id:"\u670D\u52A1\u7AEF",depth:2,title:"\u670D\u52A1\u7AEF"},{id:"\u63A5\u53E3",depth:3,title:"\u63A5\u53E3"},{id:"\u7528\u6237\u6570\u636E",depth:3,title:"\u7528\u6237\u6570\u636E"},{id:"\u8BA4\u8BC1\u7C7B\u578B\u6CE8\u518C",depth:3,title:"\u8BA4\u8BC1\u7C7B\u578B\u6CE8\u518C"},{id:"\u5BA2\u6237\u7AEF",depth:2,title:"\u5BA2\u6237\u7AEF"},{id:"\u767B\u5F55\u8868\u5355",depth:3,title:"\u767B\u5F55\u8868\u5355"},{id:"\u767B\u5F55\u6309\u94AE",depth:3,title:"\u767B\u5F55\u6309\u94AE"},{id:"\u6CE8\u518C\u8868\u5355",depth:3,title:"\u6CE8\u518C\u8868\u5355"},{id:"\u540E\u53F0\u7BA1\u7406\u8868\u5355",depth:3,title:"\u540E\u53F0\u7BA1\u7406\u8868\u5355"}],iZ=[{value:"NocoBase \u652F\u6301\u6309\u9700\u8981\u6269\u5C55\u7528\u6237\u8BA4\u8BC1\u7C7B\u578B\u3002\u4E0B\u9762\u4ECB\u7ECD\u5982\u4F55\u6CE8\u518C\u670D\u52A1\u7AEF\u63A5\u53E3\u548C\u5BA2\u6237\u7AEF\u7528\u6237\u754C\u9762\u3002",paraId:0,tocIndex:1},{value:"NocoBase \u5185\u6838\u63D0\u4F9B\u4E86\u6269\u5C55\u8BA4\u8BC1\u7C7B\u578B\u7684\u6CE8\u518C\u548C\u7BA1\u7406\u3002\u6269\u5C55\u767B\u5F55\u63D2\u4EF6\u7684\u6838\u5FC3\u903B\u8F91\u5904\u7406\uFF0C\u9700\u8981\u7EE7\u627F\u5185\u6838\u7684 ",paraId:1,tocIndex:3},{value:"Auth",paraId:1,tocIndex:3},{value:" \u62BD\u8C61\u7C7B\uFF0C\u5E76\u5BF9\u76F8\u5E94\u7684\u6807\u51C6\u63A5\u53E3\u8FDB\u884C\u5B9E\u73B0\u3002",paraId:1,tocIndex:3},{value:` +`,paraId:6,tocIndex:5}],oZ={},rZ={title:"\u6269\u5C55\u8BA4\u8BC1\u7C7B\u578B",toc:"menu",filename:"docs/en-US/plugins/auth/dev/guide.md",lastUpdated:173254844e4,description:"NocoBase \u652F\u6301\u6309\u9700\u8981\u6269\u5C55\u7528\u6237\u8BA4\u8BC1\u7C7B\u578B\u3002\u4E0B\u9762\u4ECB\u7ECD\u5982\u4F55\u6CE8\u518C\u670D\u52A1\u7AEF\u63A5\u53E3\u548C\u5BA2\u6237\u7AEF\u7528\u6237\u754C\u9762\u3002"},dZ=[{id:"\u6269\u5C55\u8BA4\u8BC1\u7C7B\u578B",depth:1,title:"\u6269\u5C55\u8BA4\u8BC1\u7C7B\u578B"},{id:"\u6982\u89C8",depth:2,title:"\u6982\u89C8"},{id:"\u670D\u52A1\u7AEF",depth:2,title:"\u670D\u52A1\u7AEF"},{id:"\u63A5\u53E3",depth:3,title:"\u63A5\u53E3"},{id:"\u7528\u6237\u6570\u636E",depth:3,title:"\u7528\u6237\u6570\u636E"},{id:"\u8BA4\u8BC1\u7C7B\u578B\u6CE8\u518C",depth:3,title:"\u8BA4\u8BC1\u7C7B\u578B\u6CE8\u518C"},{id:"\u5BA2\u6237\u7AEF",depth:2,title:"\u5BA2\u6237\u7AEF"},{id:"\u767B\u5F55\u8868\u5355",depth:3,title:"\u767B\u5F55\u8868\u5355"},{id:"\u767B\u5F55\u6309\u94AE",depth:3,title:"\u767B\u5F55\u6309\u94AE"},{id:"\u6CE8\u518C\u8868\u5355",depth:3,title:"\u6CE8\u518C\u8868\u5355"},{id:"\u540E\u53F0\u7BA1\u7406\u8868\u5355",depth:3,title:"\u540E\u53F0\u7BA1\u7406\u8868\u5355"}],iZ=[{value:"NocoBase \u652F\u6301\u6309\u9700\u8981\u6269\u5C55\u7528\u6237\u8BA4\u8BC1\u7C7B\u578B\u3002\u4E0B\u9762\u4ECB\u7ECD\u5982\u4F55\u6CE8\u518C\u670D\u52A1\u7AEF\u63A5\u53E3\u548C\u5BA2\u6237\u7AEF\u7528\u6237\u754C\u9762\u3002",paraId:0,tocIndex:1},{value:"NocoBase \u5185\u6838\u63D0\u4F9B\u4E86\u6269\u5C55\u8BA4\u8BC1\u7C7B\u578B\u7684\u6CE8\u518C\u548C\u7BA1\u7406\u3002\u6269\u5C55\u767B\u5F55\u63D2\u4EF6\u7684\u6838\u5FC3\u903B\u8F91\u5904\u7406\uFF0C\u9700\u8981\u7EE7\u627F\u5185\u6838\u7684 ",paraId:1,tocIndex:3},{value:"Auth",paraId:1,tocIndex:3},{value:" \u62BD\u8C61\u7C7B\uFF0C\u5E76\u5BF9\u76F8\u5E94\u7684\u6807\u51C6\u63A5\u53E3\u8FDB\u884C\u5B9E\u73B0\u3002",paraId:1,tocIndex:3},{value:` \u5B8C\u6574 API \u53C2\u8003 `,paraId:1,tocIndex:3},{value:"Auth",paraId:2,tocIndex:3},{value:".",paraId:1,tocIndex:3},{value:`import { Auth } from '@nocobase/auth'; class CustomAuth extends Auth { @@ -17534,7 +17587,7 @@ class CustomAuthPlugin extends Plugin { }); } } -`,paraId:19,tocIndex:6},{value:"\u5982\u679C\u6709\u591A\u4E2A\u8BA4\u8BC1\u5668\u5BF9\u5E94\u7684\u8BA4\u8BC1\u7C7B\u578B\u90FD\u6CE8\u518C\u4E86\u767B\u5F55\u8868\u5355\uFF0C\u4F1A\u4EE5 Tab \u7684\u5F62\u5F0F\u5C55\u793A\u3002Tab \u6807\u9898\u4E3A\u540E\u53F0\u914D\u7F6E\u7684\u8BA4\u8BC1\u5668\u6807\u9898\u3002",paraId:20,tocIndex:7},{value:"\u901A\u5E38\u4E3A\u7B2C\u4E09\u65B9\u767B\u5F55\u6309\u94AE\uFF0C\u5B9E\u9645\u4E0A\u53EF\u4EE5\u662F\u4EFB\u610F\u7EC4\u4EF6\u3002",paraId:21,tocIndex:8},{value:"\u5982\u679C\u9700\u8981\u4ECE\u767B\u5F55\u9875\u8DF3\u8F6C\u5230\u6CE8\u518C\u9875\uFF0C\u9700\u8981\u5728\u767B\u5F55\u7EC4\u4EF6\u4E2D\u81EA\u5DF1\u5904\u7406\u3002",paraId:22,tocIndex:9},{value:"\u4E0A\u65B9\u4E3A\u901A\u7528\u7684\u8BA4\u8BC1\u5668\u914D\u7F6E\uFF0C\u4E0B\u65B9\u4E3A\u53EF\u6CE8\u518C\u7684\u81EA\u5B9A\u4E49\u914D\u7F6E\u8868\u5355\u90E8\u5206\u3002",paraId:23,tocIndex:10}],lZ={},cZ={title:"\u77ED\u4FE1\u8BA4\u8BC1",toc:"menu",filename:"docs/en-US/plugins/sms-auth/index.md",lastUpdated:1732240239e3,description:"\u77ED\u4FE1\u8BA4\u8BC1\u63D2\u4EF6\u652F\u6301\u7528\u6237\u901A\u8FC7\u77ED\u4FE1\u6CE8\u518C\u7528\u6237\uFF0C\u767B\u5F55 NocoBase."},sZ=[{id:"\u77ED\u4FE1\u8BA4\u8BC1",depth:1,title:"\u77ED\u4FE1\u8BA4\u8BC1"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u6DFB\u52A0\u77ED\u4FE1\u8BA4\u8BC1",depth:2,title:"\u6DFB\u52A0\u77ED\u4FE1\u8BA4\u8BC1"},{id:"\u914D\u7F6E",depth:2,title:"\u914D\u7F6E"},{id:"\u767B\u5F55",depth:2,title:"\u767B\u5F55"}],uZ=[{value:"\u77ED\u4FE1\u8BA4\u8BC1\u63D2\u4EF6\u652F\u6301\u7528\u6237\u901A\u8FC7\u77ED\u4FE1\u6CE8\u518C\u7528\u6237\uFF0C\u767B\u5F55 NocoBase.",paraId:0,tocIndex:1},{value:"\u9700\u8981\u914D\u5408 ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-verification",paraId:2,tocIndex:1},{value:" \u63D2\u4EF6",paraId:2,tocIndex:1},{value:"\u63D0\u4F9B\u7684\u77ED\u4FE1\u9A8C\u8BC1\u7801\u529F\u80FD\u4F7F\u7528",paraId:1,tocIndex:1},{value:"\u8FDB\u5165\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u7BA1\u7406\u9875\u9762\u3002",paraId:3,tocIndex:2},{value:"\u6DFB\u52A0 - \u77ED\u4FE1 (SMS)",paraId:4,tocIndex:2},{value:"\u77ED\u4FE1\u9A8C\u8BC1\u7801\u529F\u80FD\u914D\u7F6E\u89C1",paraId:5,tocIndex:3},{value:"\u9A8C\u8BC1\u7801\u63D2\u4EF6 (@nocobase/plugin-verification) \u6587\u6863",paraId:6,tocIndex:3},{value:"\uFF0C\u77ED\u4FE1\u767B\u5F55\u8BA4\u8BC1\u529F\u80FD\u5C06\u4F7F\u7528\u5DF2\u914D\u7F6E\u5E76\u8BBE\u7F6E\u4E3A\u9ED8\u8BA4\u7684\u77ED\u4FE1\u9A8C\u8BC1\u7801 Provider \u6765\u53D1\u9001\u77ED\u4FE1\u3002",paraId:5,tocIndex:3},{value:"\u7528\u6237\u4E0D\u5B58\u5728\u65F6\u81EA\u52A8\u6CE8\u518C (Sign up automatically when the user does not exist): \u8BE5\u9009\u9879\u52FE\u9009\u540E\uFF0C\u5F53\u7528\u6237\u4F7F\u7528\u7684\u624B\u673A\u53F7\u4E0D\u5B58\u5728\u65F6\uFF0C\u5C06\u4F7F\u7528\u624B\u673A\u53F7\u4F5C\u4E3A\u6635\u79F0\u6CE8\u518C\u65B0\u7528\u6237\u3002",paraId:7,tocIndex:3},{value:"\u8BBF\u95EE\u767B\u5F55\u9875\u9762\u4F7F\u7528\u3002",paraId:8,tocIndex:4}],pZ={},IZ={title:"\u5DE5\u4F5C\u6D41",toc:"menu",filename:"docs/en-US/plugins/workflow/index.md",lastUpdated:1732240239e3,description:"\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u662F\u4E00\u4E2A\u7F16\u6392\u548C\u914D\u7F6E\u81EA\u52A8\u5316\u6D41\u7A0B\u7684\u5F3A\u5927\u5DE5\u5177\uFF0C\u4E1A\u754C\u901A\u5E38\u79F0\u4E3A\u4E1A\u52A1\u6D41\u7A0B\u7BA1\u7406\uFF08BPM\uFF09\u5DE5\u5177\u3002\u5E38\u7528\u4E8E\u57FA\u4E8E\u6570\u636E\u6A21\u578B\u7684\u4E1A\u52A1\u6D41\u7A0B\u8BBE\u8BA1\u4E0E\u7F16\u6392\uFF0C\u901A\u8FC7\u89E6\u53D1\u6761\u4EF6\u4E0E\u6267\u884C\u6D41\u7A0B\u8282\u70B9\u7F16\u6392\u5B9E\u73B0\u4E1A\u52A1\u6D41\u7A0B\u7684\u81EA\u52A8\u5316\u6D41\u8F6C\u3002"},_Z=[{id:"\u5DE5\u4F5C\u6D41",depth:1,title:"\u5DE5\u4F5C\u6D41"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u6DF1\u5165\u4E86\u89E3",depth:2,title:"\u6DF1\u5165\u4E86\u89E3"}],vZ=[{value:"\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u662F\u4E00\u4E2A\u7F16\u6392\u548C\u914D\u7F6E\u81EA\u52A8\u5316\u6D41\u7A0B\u7684\u5F3A\u5927\u5DE5\u5177\uFF0C\u4E1A\u754C\u901A\u5E38\u79F0\u4E3A\u4E1A\u52A1\u6D41\u7A0B\u7BA1\u7406\uFF08BPM\uFF09\u5DE5\u5177\u3002\u5E38\u7528\u4E8E\u57FA\u4E8E\u6570\u636E\u6A21\u578B\u7684\u4E1A\u52A1\u6D41\u7A0B\u8BBE\u8BA1\u4E0E\u7F16\u6392\uFF0C\u901A\u8FC7\u89E6\u53D1\u6761\u4EF6\u4E0E\u6267\u884C\u6D41\u7A0B\u8282\u70B9\u7F16\u6392\u5B9E\u73B0\u4E1A\u52A1\u6D41\u7A0B\u7684\u81EA\u52A8\u5316\u6D41\u8F6C\u3002",paraId:0,tocIndex:1},{value:"\u5728 NocoBase \u5E94\u7528\u4E2D\uFF0C\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u9488\u5BF9\u65E0\u4EE3\u7801\u573A\u666F\u8BBE\u8BA1\uFF0C\u4F7F\u7528\u8BE5\u63D2\u4EF6\u53EF\u4EE5\u5728 UI \u754C\u9762\u4E0A\u5B8C\u6210\u5927\u90E8\u5206\u5E38\u89C1\u4E1A\u52A1\u7684\u7F16\u6392\u4E0E\u6570\u636E\u5904\u7406\uFF0C\u4EE5\u52A8\u6001\u5730\u5B9E\u73B0\u7CFB\u7EDF\u4E2D\u7684\u4E1A\u52A1\u6D41\u7A0B\u53D8\u66F4\u3002",paraId:1,tocIndex:1},{value:"\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u901A\u8FC7\u4E00\u4E2A\u89E6\u53D1\u5668\u4E0E\u82E5\u5E72\u8282\u70B9\u7F16\u6392\u800C\u6210\uFF0C\u901A\u8FC7\u6BCF\u4E2A\u8282\u70B9\u7684\u7279\u5B9A\u529F\u80FD\uFF0C\u63CF\u8FF0\u7CFB\u7EDF\u4E2D\u5BF9\u5E94\u4E8B\u4EF6\u4EA7\u751F\u540E\u9700\u8981\u5904\u7406\u7684\u4E1A\u52A1\u903B\u8F91\u3002\u4E00\u4E2A\u5178\u578B\u7684\u5DE5\u4F5C\u6D41\u5982\u4E0B\u56FE\u6240\u793A\uFF1A",paraId:2,tocIndex:1},{value:"\u4EE5\u4E0A\u5DE5\u4F5C\u6D41\u7684\u529F\u80FD\u662F\uFF1A\u5F53\u7528\u6237\u63D0\u4EA4\u4E00\u4E2A\u8BA2\u5355\u8868\u5355\u540E\uFF0C\u7CFB\u7EDF\u81EA\u52A8\u68C0\u67E5\u8BA2\u5355\u4E2D\u7684\u5546\u54C1\u5E93\u5B58\uFF0C\u5982\u679C\u5E93\u5B58\u5145\u8DB3\uFF0C\u5219\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u66F4\u65B0\u4E3A\u65E0\u6548\u3002",paraId:3,tocIndex:1},{value:"\u4ECE\u66F4\u901A\u7528\u7684\u89D2\u5EA6\uFF0C\u5DE5\u4F5C\u6D41\u5728 NocoBase \u5E94\u7528\u4E2D\u53EF\u4EE5\u89E3\u51B3\u51E0\u5927\u573A\u666F\u7684\u95EE\u9898\uFF1A",paraId:4,tocIndex:1},{value:"\u6570\u636E\u81EA\u52A8\u5316\u5904\u7406\uFF1A\u6BD4\u5982\u5728\u6570\u636E\u8868\u4E2D\u65B0\u589E\u4E00\u6761\u6570\u636E\u540E\uFF0C\u81EA\u52A8\u6309\u9884\u5B9A\u6D41\u7A0B\u5904\u7406\u6570\u636E\uFF0C\u5982\u8BA1\u7B97\u89E6\u53D1\u6570\u636E\u540E\u66F4\u65B0\u5173\u8054\u6570\u636E\u7B49\u3002",paraId:5,tocIndex:1},{value:"\u4EBA\u5DE5\u4ECB\u5165\u7684\u4E1A\u52A1\u6D41\u7A0B\uFF1A\u5F53\u4E1A\u52A1\u6D41\u7A0B\u4E0D\u80FD\u5B8C\u5168\u81EA\u52A8\u5316\u51B3\u7B56\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4EBA\u5DE5\u7C7B\u578B\u7684\u8282\u70B9\uFF0C\u5C06\u90E8\u5206\u51B3\u7B56\u6743\u4EA4\u7ED9\u4EBA\u5DE5\u5904\u7406\uFF0C\u6BD4\u5982\u5BA1\u6279\u3001\u590D\u6838\u7B49\u3002\u4EBA\u5DE5\u5904\u7406\u7684\u7ED3\u679C\u63D0\u4EA4\u4EE5\u540E\uFF0C\u518D\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u6D41\u7A0B\u3002",paraId:5,tocIndex:1},{value:"\u4E0E\u5916\u90E8\u7CFB\u7EDF\u8FDE\u63A5\uFF1A\u53EF\u4EE5\u901A\u8FC7\u8BF7\u6C42\u8282\u70B9\uFF08\u6216\u6269\u5C55\u5404\u7C7B\u8C03\u7528\u7B2C\u4E09\u65B9\u529F\u80FD\u7684\u8282\u70B9\uFF09\u8C03\u7528\u5916\u90E8\u7CFB\u7EDF\u7684 API \u63A5\u53E3\uFF0C\u5B9E\u73B0\u548C\u5916\u90E8\u7CFB\u7EDF\u7684\u6570\u636E\u4EA4\u4E92\u3002",paraId:5,tocIndex:1},{value:"\u5DE5\u4F5C\u6D41\u662F NocoBase \u7684\u5185\u7F6E\u63D2\u4EF6\uFF0C\u65E0\u9700\u989D\u5916\u5B89\u88C5\u3002",paraId:6,tocIndex:2},{value:"\u4F7F\u7528\u624B\u518C",paraId:7,tocIndex:3},{value:"\u5F00\u53D1\u6307\u5357",paraId:8,tocIndex:3}],mZ={},hZ={title:"v0.9.0\uFF1ANocoBase \u7684 Logging \u7CFB\u7EDF",toc:"menu",filename:"docs/en-US/welcome/release/logger.md",lastUpdated:1732240239e3,description:"\u57FA\u4E8E Winston \u5B9E\u73B0\uFF0C\u63D0\u4F9B\u4E86\u4FBF\u6377\u7684\u521B\u5EFA logger \u5B9E\u4F8B\u7684\u65B9\u6CD5\u3002"},fZ=[{id:"v090nocobase-\u7684-logging-\u7CFB\u7EDF",depth:1,title:"v0.9.0\uFF1ANocoBase \u7684 Logging \u7CFB\u7EDF"},{id:"nocobaselogger",depth:2,title:"@nocobase/logger"},{id:"\u65B0\u589E\u7684\u73AF\u5883\u53D8\u91CF",depth:2,title:"\u65B0\u589E\u7684\u73AF\u5883\u53D8\u91CF"},{id:"application-\u7684-logger-\u914D\u7F6E",depth:2,title:"Application \u7684 logger \u914D\u7F6E"},{id:"applogger--ctxlogger",depth:2,title:"app.logger & ctx.logger"},{id:"\u81EA\u5B9A\u4E49-transports",depth:2,title:"\u81EA\u5B9A\u4E49 Transports"}],xZ=[{value:"@nocobase/logger",paraId:0},{value:"\u57FA\u4E8E Winston \u5B9E\u73B0\uFF0C\u63D0\u4F9B\u4E86\u4FBF\u6377\u7684\u521B\u5EFA logger \u5B9E\u4F8B\u7684\u65B9\u6CD5\u3002",paraId:1,tocIndex:1},{value:`const logger = createLogger(); +`,paraId:19,tocIndex:6},{value:"\u5982\u679C\u6709\u591A\u4E2A\u8BA4\u8BC1\u5668\u5BF9\u5E94\u7684\u8BA4\u8BC1\u7C7B\u578B\u90FD\u6CE8\u518C\u4E86\u767B\u5F55\u8868\u5355\uFF0C\u4F1A\u4EE5 Tab \u7684\u5F62\u5F0F\u5C55\u793A\u3002Tab \u6807\u9898\u4E3A\u540E\u53F0\u914D\u7F6E\u7684\u8BA4\u8BC1\u5668\u6807\u9898\u3002",paraId:20,tocIndex:7},{value:"\u901A\u5E38\u4E3A\u7B2C\u4E09\u65B9\u767B\u5F55\u6309\u94AE\uFF0C\u5B9E\u9645\u4E0A\u53EF\u4EE5\u662F\u4EFB\u610F\u7EC4\u4EF6\u3002",paraId:21,tocIndex:8},{value:"\u5982\u679C\u9700\u8981\u4ECE\u767B\u5F55\u9875\u8DF3\u8F6C\u5230\u6CE8\u518C\u9875\uFF0C\u9700\u8981\u5728\u767B\u5F55\u7EC4\u4EF6\u4E2D\u81EA\u5DF1\u5904\u7406\u3002",paraId:22,tocIndex:9},{value:"\u4E0A\u65B9\u4E3A\u901A\u7528\u7684\u8BA4\u8BC1\u5668\u914D\u7F6E\uFF0C\u4E0B\u65B9\u4E3A\u53EF\u6CE8\u518C\u7684\u81EA\u5B9A\u4E49\u914D\u7F6E\u8868\u5355\u90E8\u5206\u3002",paraId:23,tocIndex:10}],lZ={},cZ={title:"\u77ED\u4FE1\u8BA4\u8BC1",toc:"menu",filename:"docs/en-US/plugins/sms-auth/index.md",lastUpdated:173254844e4,description:"\u77ED\u4FE1\u8BA4\u8BC1\u63D2\u4EF6\u652F\u6301\u7528\u6237\u901A\u8FC7\u77ED\u4FE1\u6CE8\u518C\u7528\u6237\uFF0C\u767B\u5F55 NocoBase."},sZ=[{id:"\u77ED\u4FE1\u8BA4\u8BC1",depth:1,title:"\u77ED\u4FE1\u8BA4\u8BC1"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u6DFB\u52A0\u77ED\u4FE1\u8BA4\u8BC1",depth:2,title:"\u6DFB\u52A0\u77ED\u4FE1\u8BA4\u8BC1"},{id:"\u914D\u7F6E",depth:2,title:"\u914D\u7F6E"},{id:"\u767B\u5F55",depth:2,title:"\u767B\u5F55"}],uZ=[{value:"\u77ED\u4FE1\u8BA4\u8BC1\u63D2\u4EF6\u652F\u6301\u7528\u6237\u901A\u8FC7\u77ED\u4FE1\u6CE8\u518C\u7528\u6237\uFF0C\u767B\u5F55 NocoBase.",paraId:0,tocIndex:1},{value:"\u9700\u8981\u914D\u5408 ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-verification",paraId:2,tocIndex:1},{value:" \u63D2\u4EF6",paraId:2,tocIndex:1},{value:"\u63D0\u4F9B\u7684\u77ED\u4FE1\u9A8C\u8BC1\u7801\u529F\u80FD\u4F7F\u7528",paraId:1,tocIndex:1},{value:"\u8FDB\u5165\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u7BA1\u7406\u9875\u9762\u3002",paraId:3,tocIndex:2},{value:"\u6DFB\u52A0 - \u77ED\u4FE1 (SMS)",paraId:4,tocIndex:2},{value:"\u77ED\u4FE1\u9A8C\u8BC1\u7801\u529F\u80FD\u914D\u7F6E\u89C1",paraId:5,tocIndex:3},{value:"\u9A8C\u8BC1\u7801\u63D2\u4EF6 (@nocobase/plugin-verification) \u6587\u6863",paraId:6,tocIndex:3},{value:"\uFF0C\u77ED\u4FE1\u767B\u5F55\u8BA4\u8BC1\u529F\u80FD\u5C06\u4F7F\u7528\u5DF2\u914D\u7F6E\u5E76\u8BBE\u7F6E\u4E3A\u9ED8\u8BA4\u7684\u77ED\u4FE1\u9A8C\u8BC1\u7801 Provider \u6765\u53D1\u9001\u77ED\u4FE1\u3002",paraId:5,tocIndex:3},{value:"\u7528\u6237\u4E0D\u5B58\u5728\u65F6\u81EA\u52A8\u6CE8\u518C (Sign up automatically when the user does not exist): \u8BE5\u9009\u9879\u52FE\u9009\u540E\uFF0C\u5F53\u7528\u6237\u4F7F\u7528\u7684\u624B\u673A\u53F7\u4E0D\u5B58\u5728\u65F6\uFF0C\u5C06\u4F7F\u7528\u624B\u673A\u53F7\u4F5C\u4E3A\u6635\u79F0\u6CE8\u518C\u65B0\u7528\u6237\u3002",paraId:7,tocIndex:3},{value:"\u8BBF\u95EE\u767B\u5F55\u9875\u9762\u4F7F\u7528\u3002",paraId:8,tocIndex:4}],pZ={},IZ={title:"\u5DE5\u4F5C\u6D41",toc:"menu",filename:"docs/en-US/plugins/workflow/index.md",lastUpdated:173254844e4,description:"\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u662F\u4E00\u4E2A\u7F16\u6392\u548C\u914D\u7F6E\u81EA\u52A8\u5316\u6D41\u7A0B\u7684\u5F3A\u5927\u5DE5\u5177\uFF0C\u4E1A\u754C\u901A\u5E38\u79F0\u4E3A\u4E1A\u52A1\u6D41\u7A0B\u7BA1\u7406\uFF08BPM\uFF09\u5DE5\u5177\u3002\u5E38\u7528\u4E8E\u57FA\u4E8E\u6570\u636E\u6A21\u578B\u7684\u4E1A\u52A1\u6D41\u7A0B\u8BBE\u8BA1\u4E0E\u7F16\u6392\uFF0C\u901A\u8FC7\u89E6\u53D1\u6761\u4EF6\u4E0E\u6267\u884C\u6D41\u7A0B\u8282\u70B9\u7F16\u6392\u5B9E\u73B0\u4E1A\u52A1\u6D41\u7A0B\u7684\u81EA\u52A8\u5316\u6D41\u8F6C\u3002"},_Z=[{id:"\u5DE5\u4F5C\u6D41",depth:1,title:"\u5DE5\u4F5C\u6D41"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u6DF1\u5165\u4E86\u89E3",depth:2,title:"\u6DF1\u5165\u4E86\u89E3"}],vZ=[{value:"\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u662F\u4E00\u4E2A\u7F16\u6392\u548C\u914D\u7F6E\u81EA\u52A8\u5316\u6D41\u7A0B\u7684\u5F3A\u5927\u5DE5\u5177\uFF0C\u4E1A\u754C\u901A\u5E38\u79F0\u4E3A\u4E1A\u52A1\u6D41\u7A0B\u7BA1\u7406\uFF08BPM\uFF09\u5DE5\u5177\u3002\u5E38\u7528\u4E8E\u57FA\u4E8E\u6570\u636E\u6A21\u578B\u7684\u4E1A\u52A1\u6D41\u7A0B\u8BBE\u8BA1\u4E0E\u7F16\u6392\uFF0C\u901A\u8FC7\u89E6\u53D1\u6761\u4EF6\u4E0E\u6267\u884C\u6D41\u7A0B\u8282\u70B9\u7F16\u6392\u5B9E\u73B0\u4E1A\u52A1\u6D41\u7A0B\u7684\u81EA\u52A8\u5316\u6D41\u8F6C\u3002",paraId:0,tocIndex:1},{value:"\u5728 NocoBase \u5E94\u7528\u4E2D\uFF0C\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u9488\u5BF9\u65E0\u4EE3\u7801\u573A\u666F\u8BBE\u8BA1\uFF0C\u4F7F\u7528\u8BE5\u63D2\u4EF6\u53EF\u4EE5\u5728 UI \u754C\u9762\u4E0A\u5B8C\u6210\u5927\u90E8\u5206\u5E38\u89C1\u4E1A\u52A1\u7684\u7F16\u6392\u4E0E\u6570\u636E\u5904\u7406\uFF0C\u4EE5\u52A8\u6001\u5730\u5B9E\u73B0\u7CFB\u7EDF\u4E2D\u7684\u4E1A\u52A1\u6D41\u7A0B\u53D8\u66F4\u3002",paraId:1,tocIndex:1},{value:"\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u901A\u8FC7\u4E00\u4E2A\u89E6\u53D1\u5668\u4E0E\u82E5\u5E72\u8282\u70B9\u7F16\u6392\u800C\u6210\uFF0C\u901A\u8FC7\u6BCF\u4E2A\u8282\u70B9\u7684\u7279\u5B9A\u529F\u80FD\uFF0C\u63CF\u8FF0\u7CFB\u7EDF\u4E2D\u5BF9\u5E94\u4E8B\u4EF6\u4EA7\u751F\u540E\u9700\u8981\u5904\u7406\u7684\u4E1A\u52A1\u903B\u8F91\u3002\u4E00\u4E2A\u5178\u578B\u7684\u5DE5\u4F5C\u6D41\u5982\u4E0B\u56FE\u6240\u793A\uFF1A",paraId:2,tocIndex:1},{value:"\u4EE5\u4E0A\u5DE5\u4F5C\u6D41\u7684\u529F\u80FD\u662F\uFF1A\u5F53\u7528\u6237\u63D0\u4EA4\u4E00\u4E2A\u8BA2\u5355\u8868\u5355\u540E\uFF0C\u7CFB\u7EDF\u81EA\u52A8\u68C0\u67E5\u8BA2\u5355\u4E2D\u7684\u5546\u54C1\u5E93\u5B58\uFF0C\u5982\u679C\u5E93\u5B58\u5145\u8DB3\uFF0C\u5219\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u66F4\u65B0\u4E3A\u65E0\u6548\u3002",paraId:3,tocIndex:1},{value:"\u4ECE\u66F4\u901A\u7528\u7684\u89D2\u5EA6\uFF0C\u5DE5\u4F5C\u6D41\u5728 NocoBase \u5E94\u7528\u4E2D\u53EF\u4EE5\u89E3\u51B3\u51E0\u5927\u573A\u666F\u7684\u95EE\u9898\uFF1A",paraId:4,tocIndex:1},{value:"\u6570\u636E\u81EA\u52A8\u5316\u5904\u7406\uFF1A\u6BD4\u5982\u5728\u6570\u636E\u8868\u4E2D\u65B0\u589E\u4E00\u6761\u6570\u636E\u540E\uFF0C\u81EA\u52A8\u6309\u9884\u5B9A\u6D41\u7A0B\u5904\u7406\u6570\u636E\uFF0C\u5982\u8BA1\u7B97\u89E6\u53D1\u6570\u636E\u540E\u66F4\u65B0\u5173\u8054\u6570\u636E\u7B49\u3002",paraId:5,tocIndex:1},{value:"\u4EBA\u5DE5\u4ECB\u5165\u7684\u4E1A\u52A1\u6D41\u7A0B\uFF1A\u5F53\u4E1A\u52A1\u6D41\u7A0B\u4E0D\u80FD\u5B8C\u5168\u81EA\u52A8\u5316\u51B3\u7B56\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4EBA\u5DE5\u7C7B\u578B\u7684\u8282\u70B9\uFF0C\u5C06\u90E8\u5206\u51B3\u7B56\u6743\u4EA4\u7ED9\u4EBA\u5DE5\u5904\u7406\uFF0C\u6BD4\u5982\u5BA1\u6279\u3001\u590D\u6838\u7B49\u3002\u4EBA\u5DE5\u5904\u7406\u7684\u7ED3\u679C\u63D0\u4EA4\u4EE5\u540E\uFF0C\u518D\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u6D41\u7A0B\u3002",paraId:5,tocIndex:1},{value:"\u4E0E\u5916\u90E8\u7CFB\u7EDF\u8FDE\u63A5\uFF1A\u53EF\u4EE5\u901A\u8FC7\u8BF7\u6C42\u8282\u70B9\uFF08\u6216\u6269\u5C55\u5404\u7C7B\u8C03\u7528\u7B2C\u4E09\u65B9\u529F\u80FD\u7684\u8282\u70B9\uFF09\u8C03\u7528\u5916\u90E8\u7CFB\u7EDF\u7684 API \u63A5\u53E3\uFF0C\u5B9E\u73B0\u548C\u5916\u90E8\u7CFB\u7EDF\u7684\u6570\u636E\u4EA4\u4E92\u3002",paraId:5,tocIndex:1},{value:"\u5DE5\u4F5C\u6D41\u662F NocoBase \u7684\u5185\u7F6E\u63D2\u4EF6\uFF0C\u65E0\u9700\u989D\u5916\u5B89\u88C5\u3002",paraId:6,tocIndex:2},{value:"\u4F7F\u7528\u624B\u518C",paraId:7,tocIndex:3},{value:"\u5F00\u53D1\u6307\u5357",paraId:8,tocIndex:3}],mZ={},hZ={title:"v0.9.0\uFF1ANocoBase \u7684 Logging \u7CFB\u7EDF",toc:"menu",filename:"docs/en-US/welcome/release/logger.md",lastUpdated:173254844e4,description:"\u57FA\u4E8E Winston \u5B9E\u73B0\uFF0C\u63D0\u4F9B\u4E86\u4FBF\u6377\u7684\u521B\u5EFA logger \u5B9E\u4F8B\u7684\u65B9\u6CD5\u3002"},fZ=[{id:"v090nocobase-\u7684-logging-\u7CFB\u7EDF",depth:1,title:"v0.9.0\uFF1ANocoBase \u7684 Logging \u7CFB\u7EDF"},{id:"nocobaselogger",depth:2,title:"@nocobase/logger"},{id:"\u65B0\u589E\u7684\u73AF\u5883\u53D8\u91CF",depth:2,title:"\u65B0\u589E\u7684\u73AF\u5883\u53D8\u91CF"},{id:"application-\u7684-logger-\u914D\u7F6E",depth:2,title:"Application \u7684 logger \u914D\u7F6E"},{id:"applogger--ctxlogger",depth:2,title:"app.logger & ctx.logger"},{id:"\u81EA\u5B9A\u4E49-transports",depth:2,title:"\u81EA\u5B9A\u4E49 Transports"}],xZ=[{value:"@nocobase/logger",paraId:0},{value:"\u57FA\u4E8E Winston \u5B9E\u73B0\uFF0C\u63D0\u4F9B\u4E86\u4FBF\u6377\u7684\u521B\u5EFA logger \u5B9E\u4F8B\u7684\u65B9\u6CD5\u3002",paraId:1,tocIndex:1},{value:`const logger = createLogger(); logger.info('Hello distributed log files!'); const { instance, middleware } = createAppLogger(); // \u7528\u4E8E @nocobase/server @@ -17562,7 +17615,7 @@ const app = new Application({ transports: ['custom'], }, }); -`,paraId:12,tocIndex:5}],gZ={},bZ={title:"AuthManager",toc:"menu",filename:"docs/en-US/api/auth/auth-manager.md",lastUpdated:1732240239e3,description:"AuthManager is the user authentication management module in NocoBase, used for registering different types of user authentication."},yZ=[{id:"authmanager",depth:1,title:"AuthManager"},{id:"overview",depth:2,title:"Overview"},{id:"basic-usage",depth:3,title:"Basic Usage"},{id:"concepts",depth:3,title:"Concepts"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"types",depth:4,title:"Types"},{id:"details",depth:4,title:"Details"},{id:"authmanageroptions",depth:5,title:"AuthManagerOptions"},{id:"jwtoptions",depth:5,title:"JwtOptions"},{id:"setstorer",depth:3,title:"setStorer()"},{id:"signature-1",depth:4,title:"Signature"},{id:"types-1",depth:4,title:"Types"},{id:"details-1",depth:4,title:"Details"},{id:"authenticator",depth:5,title:"Authenticator"},{id:"storer",depth:5,title:"Storer"},{id:"registertypes",depth:3,title:"registerTypes()"},{id:"signature-2",depth:4,title:"Signature"},{id:"types-2",depth:4,title:"Types"},{id:"details-2",depth:4,title:"Details"},{id:"listtypes",depth:3,title:"listTypes()"},{id:"signature-3",depth:4,title:"Signature"},{id:"details-3",depth:4,title:"Details"},{id:"get",depth:3,title:"get()"},{id:"signature-4",depth:4,title:"Signature"},{id:"details-4",depth:4,title:"Details"},{id:"middleware",depth:3,title:"middleware()"}],wZ=[{value:"AuthManager",paraId:0,tocIndex:1},{value:" is the user authentication management module in NocoBase, used for registering different types of user authentication.",paraId:0,tocIndex:1},{value:`const authManager = new AuthManager({ +`,paraId:12,tocIndex:5}],gZ={},bZ={title:"AuthManager",toc:"menu",filename:"docs/en-US/api/auth/auth-manager.md",lastUpdated:173254844e4,description:"AuthManager is the user authentication management module in NocoBase, used for registering different types of user authentication."},yZ=[{id:"authmanager",depth:1,title:"AuthManager"},{id:"overview",depth:2,title:"Overview"},{id:"basic-usage",depth:3,title:"Basic Usage"},{id:"concepts",depth:3,title:"Concepts"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"types",depth:4,title:"Types"},{id:"details",depth:4,title:"Details"},{id:"authmanageroptions",depth:5,title:"AuthManagerOptions"},{id:"jwtoptions",depth:5,title:"JwtOptions"},{id:"setstorer",depth:3,title:"setStorer()"},{id:"signature-1",depth:4,title:"Signature"},{id:"types-1",depth:4,title:"Types"},{id:"details-1",depth:4,title:"Details"},{id:"authenticator",depth:5,title:"Authenticator"},{id:"storer",depth:5,title:"Storer"},{id:"registertypes",depth:3,title:"registerTypes()"},{id:"signature-2",depth:4,title:"Signature"},{id:"types-2",depth:4,title:"Types"},{id:"details-2",depth:4,title:"Details"},{id:"listtypes",depth:3,title:"listTypes()"},{id:"signature-3",depth:4,title:"Signature"},{id:"details-3",depth:4,title:"Details"},{id:"get",depth:3,title:"get()"},{id:"signature-4",depth:4,title:"Signature"},{id:"details-4",depth:4,title:"Details"},{id:"middleware",depth:3,title:"middleware()"}],wZ=[{value:"AuthManager",paraId:0,tocIndex:1},{value:" is the user authentication management module in NocoBase, used for registering different types of user authentication.",paraId:0,tocIndex:1},{value:`const authManager = new AuthManager({ // Key to retrieve the current authenticator identifier from the request header authKey: 'X-Authenticator', }); @@ -17607,7 +17660,7 @@ type AuthConfig = { auth: AuthExtend; // The authentication class. title?: string; // The display name of the authentication type. }; -`,paraId:19,tocIndex:19},{value:"Attribute",paraId:20,tocIndex:20},{value:"Type",paraId:20,tocIndex:20},{value:"Description",paraId:20,tocIndex:20},{value:"auth",paraId:20,tocIndex:20},{value:"AuthExtend",paraId:20,tocIndex:20},{value:"Authentication type implementation, refer to ",paraId:20,tocIndex:20},{value:"Auth",paraId:21,tocIndex:20},{value:"title",paraId:20,tocIndex:20},{value:"string",paraId:20,tocIndex:20},{value:"Optional. Title of the authentication type displayed on the frontend",paraId:20,tocIndex:20},{value:"listTypes()",paraId:3},{value:"Get a list of registered authentication types.",paraId:22,tocIndex:21},{value:"listTypes(): { name: string; title: string }[]",paraId:23,tocIndex:22},{value:"Attribute",paraId:24,tocIndex:23},{value:"Type",paraId:24,tocIndex:23},{value:"Description",paraId:24,tocIndex:23},{value:"name",paraId:24,tocIndex:23},{value:"string",paraId:24,tocIndex:23},{value:"Authentication type identifier",paraId:24,tocIndex:23},{value:"title",paraId:24,tocIndex:23},{value:"string",paraId:24,tocIndex:23},{value:"Title of the authentication type",paraId:24,tocIndex:23},{value:"get()",paraId:3},{value:"Get authenticator.",paraId:25,tocIndex:24},{value:"get(name: string, ctx: Context)",paraId:26,tocIndex:25},{value:"Attribute",paraId:27,tocIndex:26},{value:"Type",paraId:27,tocIndex:26},{value:"Description",paraId:27,tocIndex:26},{value:"name",paraId:27,tocIndex:26},{value:"string",paraId:27,tocIndex:26},{value:"Authenticator identifier",paraId:27,tocIndex:26},{value:"ctx",paraId:27,tocIndex:26},{value:"Context",paraId:27,tocIndex:26},{value:"Request context",paraId:27,tocIndex:26},{value:"middleware()",paraId:3},{value:"Authentication middleware. Get the current authenticator and perform user authentication.",paraId:28,tocIndex:27}],kZ={},SZ={title:"\u63D2\u4EF6\u76EE\u5F55\u7ED3\u6784",toc:"menu",filename:"docs/en-US/development/plugin-ds.md",lastUpdated:1732240239e3,description:"\u53EF\u4EE5\u901A\u8FC7 yarn pm create my-plugin \u5FEB\u901F\u521B\u5EFA\u4E00\u4E2A\u7A7A\u63D2\u4EF6\uFF0C\u76EE\u5F55\u7ED3\u6784\u5982\u4E0B\uFF1A"},UZ=[{id:"\u63D2\u4EF6\u76EE\u5F55\u7ED3\u6784",depth:1,title:"\u63D2\u4EF6\u76EE\u5F55\u7ED3\u6784"}],PZ=[{value:"\u53EF\u4EE5\u901A\u8FC7 ",paraId:0,tocIndex:0},{value:"yarn pm create my-plugin",paraId:0,tocIndex:0},{value:" \u5FEB\u901F\u521B\u5EFA\u4E00\u4E2A\u7A7A\u63D2\u4EF6\uFF0C\u76EE\u5F55\u7ED3\u6784\u5982\u4E0B\uFF1A",paraId:0,tocIndex:0},{value:`|- /my-plugin +`,paraId:19,tocIndex:19},{value:"Attribute",paraId:20,tocIndex:20},{value:"Type",paraId:20,tocIndex:20},{value:"Description",paraId:20,tocIndex:20},{value:"auth",paraId:20,tocIndex:20},{value:"AuthExtend",paraId:20,tocIndex:20},{value:"Authentication type implementation, refer to ",paraId:20,tocIndex:20},{value:"Auth",paraId:21,tocIndex:20},{value:"title",paraId:20,tocIndex:20},{value:"string",paraId:20,tocIndex:20},{value:"Optional. Title of the authentication type displayed on the frontend",paraId:20,tocIndex:20},{value:"listTypes()",paraId:3},{value:"Get a list of registered authentication types.",paraId:22,tocIndex:21},{value:"listTypes(): { name: string; title: string }[]",paraId:23,tocIndex:22},{value:"Attribute",paraId:24,tocIndex:23},{value:"Type",paraId:24,tocIndex:23},{value:"Description",paraId:24,tocIndex:23},{value:"name",paraId:24,tocIndex:23},{value:"string",paraId:24,tocIndex:23},{value:"Authentication type identifier",paraId:24,tocIndex:23},{value:"title",paraId:24,tocIndex:23},{value:"string",paraId:24,tocIndex:23},{value:"Title of the authentication type",paraId:24,tocIndex:23},{value:"get()",paraId:3},{value:"Get authenticator.",paraId:25,tocIndex:24},{value:"get(name: string, ctx: Context)",paraId:26,tocIndex:25},{value:"Attribute",paraId:27,tocIndex:26},{value:"Type",paraId:27,tocIndex:26},{value:"Description",paraId:27,tocIndex:26},{value:"name",paraId:27,tocIndex:26},{value:"string",paraId:27,tocIndex:26},{value:"Authenticator identifier",paraId:27,tocIndex:26},{value:"ctx",paraId:27,tocIndex:26},{value:"Context",paraId:27,tocIndex:26},{value:"Request context",paraId:27,tocIndex:26},{value:"middleware()",paraId:3},{value:"Authentication middleware. Get the current authenticator and perform user authentication.",paraId:28,tocIndex:27}],kZ={},SZ={title:"\u63D2\u4EF6\u76EE\u5F55\u7ED3\u6784",toc:"menu",filename:"docs/en-US/development/plugin-ds.md",lastUpdated:173254844e4,description:"\u53EF\u4EE5\u901A\u8FC7 yarn pm create my-plugin \u5FEB\u901F\u521B\u5EFA\u4E00\u4E2A\u7A7A\u63D2\u4EF6\uFF0C\u76EE\u5F55\u7ED3\u6784\u5982\u4E0B\uFF1A"},UZ=[{id:"\u63D2\u4EF6\u76EE\u5F55\u7ED3\u6784",depth:1,title:"\u63D2\u4EF6\u76EE\u5F55\u7ED3\u6784"}],PZ=[{value:"\u53EF\u4EE5\u901A\u8FC7 ",paraId:0,tocIndex:0},{value:"yarn pm create my-plugin",paraId:0,tocIndex:0},{value:" \u5FEB\u901F\u521B\u5EFA\u4E00\u4E2A\u7A7A\u63D2\u4EF6\uFF0C\u76EE\u5F55\u7ED3\u6784\u5982\u4E0B\uFF1A",paraId:0,tocIndex:0},{value:`|- /my-plugin |- /src |- /client # \u63D2\u4EF6\u5BA2\u6237\u7AEF\u4EE3\u7801 |- /server # \u63D2\u4EF6\u670D\u52A1\u7AEF\u4EE3\u7801 @@ -17639,7 +17692,7 @@ export default defineConfig({ // \u6784\u5EFA\u5B8C\u6210\u540E\u7684\u56DE\u8C03\u51FD\u6570\uFF0C\u53EF\u4EE5\u5728\u6784\u5EFA\u5B8C\u6210\u540E\u505A\u4E00\u4E9B\u64CD\u4F5C }; }); -`,paraId:6,tocIndex:0}],TZ={},CZ={title:"API Reference",toc:"menu",filename:"docs/en-US/handbook/auth/dev/api.md",lastUpdated:1732240239e3,description:"Kernel API, reference: Auth"},AZ=[{id:"api-reference",depth:1,title:"API Reference"},{id:"server-side",depth:2,title:"Server Side"},{id:"auth",depth:3,title:"Auth"},{id:"baseauth",depth:3,title:"BaseAuth"},{id:"authmodel",depth:3,title:"AuthModel"},{id:"overview",depth:4,title:"Overview"},{id:"class-methods",depth:4,title:"Class Methods"},{id:"client-side",depth:2,title:"Client Side"},{id:"pluginregistertype",depth:3,title:"plugin.registerType()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"route",depth:3,title:"Route"}],qZ=[{value:"Kernel API, reference: ",paraId:0,tocIndex:2},{value:"Auth",paraId:1,tocIndex:2},{value:"Kernel API, reference: ",paraId:2,tocIndex:3},{value:"BaseAuth",paraId:3,tocIndex:3},{value:"AuthModel",paraId:4,tocIndex:5},{value:" is the authenticator used in NocoBase applications (",paraId:4,tocIndex:5},{value:"Authenticator",paraId:4,tocIndex:5},{value:", reference: ",paraId:4,tocIndex:5},{value:"AuthManager - setStorer",paraId:5,tocIndex:5},{value:" and ",paraId:4,tocIndex:5},{value:"Auth - constructor",paraId:6,tocIndex:5},{value:") data model, providing some methods for interacting with the user data collection. In addition, methods provided by Sequelize Model can also be used.",paraId:4,tocIndex:5},{value:`import { AuthModel } from '@nocobase/plugin-auth'; +`,paraId:6,tocIndex:0}],TZ={},CZ={title:"API Reference",toc:"menu",filename:"docs/en-US/handbook/auth/dev/api.md",lastUpdated:173254844e4,description:"Kernel API, reference: Auth"},AZ=[{id:"api-reference",depth:1,title:"API Reference"},{id:"server-side",depth:2,title:"Server Side"},{id:"auth",depth:3,title:"Auth"},{id:"baseauth",depth:3,title:"BaseAuth"},{id:"authmodel",depth:3,title:"AuthModel"},{id:"overview",depth:4,title:"Overview"},{id:"class-methods",depth:4,title:"Class Methods"},{id:"client-side",depth:2,title:"Client Side"},{id:"pluginregistertype",depth:3,title:"plugin.registerType()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"route",depth:3,title:"Route"}],qZ=[{value:"Kernel API, reference: ",paraId:0,tocIndex:2},{value:"Auth",paraId:1,tocIndex:2},{value:"Kernel API, reference: ",paraId:2,tocIndex:3},{value:"BaseAuth",paraId:3,tocIndex:3},{value:"AuthModel",paraId:4,tocIndex:5},{value:" is the authenticator used in NocoBase applications (",paraId:4,tocIndex:5},{value:"Authenticator",paraId:4,tocIndex:5},{value:", reference: ",paraId:4,tocIndex:5},{value:"AuthManager - setStorer",paraId:5,tocIndex:5},{value:" and ",paraId:4,tocIndex:5},{value:"Auth - constructor",paraId:6,tocIndex:5},{value:") data model, providing some methods for interacting with the user data collection. In addition, methods provided by Sequelize Model can also be used.",paraId:4,tocIndex:5},{value:`import { AuthModel } from '@nocobase/plugin-auth'; class CustomAuth extends BaseAuth { async validate() { @@ -17674,7 +17727,7 @@ class CustomAuthPlugin extends Plugin { AdminSettingsForm: ComponentType; }>; }; -`,paraId:18,tocIndex:10},{value:"SignInForm",paraId:19,tocIndex:11},{value:" - Sign in form",paraId:19,tocIndex:11},{value:"SignInButton",paraId:19,tocIndex:11},{value:" - Sign in (third-party) button, can be used as an alternative to the sign-in form",paraId:19,tocIndex:11},{value:"SignUpForm",paraId:19,tocIndex:11},{value:" - Sign up form",paraId:19,tocIndex:11},{value:"AdminSettingsForm",paraId:19,tocIndex:11},{value:" - Admin configuration form",paraId:19,tocIndex:11},{value:"The frontend routes for registering the auth plugin are as follows:",paraId:20,tocIndex:12},{value:"Auth Layout",paraId:21,tocIndex:12},{value:"name: ",paraId:22,tocIndex:12},{value:"auth",paraId:22,tocIndex:12},{value:"path: ",paraId:22,tocIndex:12},{value:"-",paraId:22,tocIndex:12},{value:"component: ",paraId:22,tocIndex:12},{value:"AuthLayout",paraId:22,tocIndex:12},{value:"SignIn Page",paraId:23,tocIndex:12},{value:"name: ",paraId:24,tocIndex:12},{value:"auth.signin",paraId:24,tocIndex:12},{value:"path: ",paraId:24,tocIndex:12},{value:"/signin",paraId:24,tocIndex:12},{value:"component: ",paraId:24,tocIndex:12},{value:"SignInPage",paraId:24,tocIndex:12},{value:"SignUp Page",paraId:25,tocIndex:12},{value:"name: ",paraId:26,tocIndex:12},{value:"auth.signup",paraId:26,tocIndex:12},{value:"path: ",paraId:26,tocIndex:12},{value:"/signup",paraId:26,tocIndex:12},{value:"component: ",paraId:26,tocIndex:12},{value:"SignUpPage",paraId:26,tocIndex:12}],EZ={},DZ={title:"WEB Client",toc:"menu",filename:"docs/en-US/handbook/client/index.md",lastUpdated:1732240239e3,description:"Offers a seamless user interface for interacting with the NocoBase server."},OZ=[{id:"web-client",depth:1,title:"WEB Client"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"}],RZ=[{value:"Offers a seamless user interface for interacting with the NocoBase server.",paraId:0,tocIndex:1},{value:"As a built-in plugin, no additional installation is necessary.",paraId:1,tocIndex:2}],MZ={},LZ={title:"Logging",toc:"menu",filename:"docs/en-US/handbook/logger/index.md",lastUpdated:1732240239e3,description:"Logs are an important tool for us to locate system issues. NocoBase's server logs mainly include interface request logs and system operation logs, supporting configuration of log level, rolling strategy, size, printing format, and more. This document mainly introduces the related content of NocoBase server logs, as well as how to use the logging plugin to package and download server logs."},NZ=[{id:"logging",depth:1,title:"Logging"},{id:"introduction",depth:2,title:"Introduction"},{id:"log-configuration",depth:2,title:"Log Configuration"},{id:"log-formats",depth:2,title:"Log Formats"},{id:"console",depth:3,title:"console"},{id:"json",depth:3,title:"json"},{id:"logfmt",depth:3,title:"logfmt"},{id:"delimiter",depth:3,title:"delimiter"},{id:"log-directory",depth:2,title:"Log Directory"},{id:"log-files",depth:2,title:"Log Files"},{id:"request-log",depth:3,title:"Request Log"},{id:"system-log",depth:3,title:"System Log"},{id:"sql-execution-log",depth:3,title:"SQL Execution Log"},{id:"log-packaging-and-downloading",depth:2,title:"Log Packaging and Downloading"},{id:"related-documents",depth:2,title:"Related Documents"}],zZ=[{value:"Logs are an important tool for us to locate system issues. NocoBase's server logs mainly include interface request logs and system operation logs, supporting configuration of log level, rolling strategy, size, printing format, and more. This document mainly introduces the related content of NocoBase server logs, as well as how to use the logging plugin to package and download server logs.",paraId:0,tocIndex:1},{value:"Log-related parameters such as log level, output method, and printing format can be configured through ",paraId:1,tocIndex:2},{value:"environment variables",paraId:2,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:"NocoBase supports configuring four different log formats.",paraId:3,tocIndex:3},{value:"console",paraId:4},{value:"The default format in development environment, messages are highlighted in color.",paraId:5,tocIndex:4},{value:`2023-12-30 22:40:06 [info ] response method=GET path=/api/uiSchemas:getJsonSchema/nocobase-admin-menu res={"status":200} action={"actionName":"getJsonSchema","resourceName":"uiSchemas","params":{"filterByTk":"nocobase-admin-menu","resourceName":"uiSchemas","resourceIndex":"nocobase-admin-menu","actionName":"getJsonSchema"}} userId=1 status=200 cost=5 app=main reqId=ccf4e3bd-beb0-4350-af6e-b1fc1d9b6c3f +`,paraId:18,tocIndex:10},{value:"SignInForm",paraId:19,tocIndex:11},{value:" - Sign in form",paraId:19,tocIndex:11},{value:"SignInButton",paraId:19,tocIndex:11},{value:" - Sign in (third-party) button, can be used as an alternative to the sign-in form",paraId:19,tocIndex:11},{value:"SignUpForm",paraId:19,tocIndex:11},{value:" - Sign up form",paraId:19,tocIndex:11},{value:"AdminSettingsForm",paraId:19,tocIndex:11},{value:" - Admin configuration form",paraId:19,tocIndex:11},{value:"The frontend routes for registering the auth plugin are as follows:",paraId:20,tocIndex:12},{value:"Auth Layout",paraId:21,tocIndex:12},{value:"name: ",paraId:22,tocIndex:12},{value:"auth",paraId:22,tocIndex:12},{value:"path: ",paraId:22,tocIndex:12},{value:"-",paraId:22,tocIndex:12},{value:"component: ",paraId:22,tocIndex:12},{value:"AuthLayout",paraId:22,tocIndex:12},{value:"SignIn Page",paraId:23,tocIndex:12},{value:"name: ",paraId:24,tocIndex:12},{value:"auth.signin",paraId:24,tocIndex:12},{value:"path: ",paraId:24,tocIndex:12},{value:"/signin",paraId:24,tocIndex:12},{value:"component: ",paraId:24,tocIndex:12},{value:"SignInPage",paraId:24,tocIndex:12},{value:"SignUp Page",paraId:25,tocIndex:12},{value:"name: ",paraId:26,tocIndex:12},{value:"auth.signup",paraId:26,tocIndex:12},{value:"path: ",paraId:26,tocIndex:12},{value:"/signup",paraId:26,tocIndex:12},{value:"component: ",paraId:26,tocIndex:12},{value:"SignUpPage",paraId:26,tocIndex:12}],EZ={},DZ={title:"WEB Client",toc:"menu",filename:"docs/en-US/handbook/client/index.md",lastUpdated:173254844e4,description:"Offers a seamless user interface for interacting with the NocoBase server."},OZ=[{id:"web-client",depth:1,title:"WEB Client"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"}],RZ=[{value:"Offers a seamless user interface for interacting with the NocoBase server.",paraId:0,tocIndex:1},{value:"As a built-in plugin, no additional installation is necessary.",paraId:1,tocIndex:2}],MZ={},LZ={title:"Logging",toc:"menu",filename:"docs/en-US/handbook/logger/index.md",lastUpdated:173254844e4,description:"Logs are an important tool for us to locate system issues. NocoBase's server logs mainly include interface request logs and system operation logs, supporting configuration of log level, rolling strategy, size, printing format, and more. This document mainly introduces the related content of NocoBase server logs, as well as how to use the logging plugin to package and download server logs."},NZ=[{id:"logging",depth:1,title:"Logging"},{id:"introduction",depth:2,title:"Introduction"},{id:"log-configuration",depth:2,title:"Log Configuration"},{id:"log-formats",depth:2,title:"Log Formats"},{id:"console",depth:3,title:"console"},{id:"json",depth:3,title:"json"},{id:"logfmt",depth:3,title:"logfmt"},{id:"delimiter",depth:3,title:"delimiter"},{id:"log-directory",depth:2,title:"Log Directory"},{id:"log-files",depth:2,title:"Log Files"},{id:"request-log",depth:3,title:"Request Log"},{id:"system-log",depth:3,title:"System Log"},{id:"sql-execution-log",depth:3,title:"SQL Execution Log"},{id:"log-packaging-and-downloading",depth:2,title:"Log Packaging and Downloading"},{id:"related-documents",depth:2,title:"Related Documents"}],zZ=[{value:"Logs are an important tool for us to locate system issues. NocoBase's server logs mainly include interface request logs and system operation logs, supporting configuration of log level, rolling strategy, size, printing format, and more. This document mainly introduces the related content of NocoBase server logs, as well as how to use the logging plugin to package and download server logs.",paraId:0,tocIndex:1},{value:"Log-related parameters such as log level, output method, and printing format can be configured through ",paraId:1,tocIndex:2},{value:"environment variables",paraId:2,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:"NocoBase supports configuring four different log formats.",paraId:3,tocIndex:3},{value:"console",paraId:4},{value:"The default format in development environment, messages are highlighted in color.",paraId:5,tocIndex:4},{value:`2023-12-30 22:40:06 [info ] response method=GET path=/api/uiSchemas:getJsonSchema/nocobase-admin-menu res={"status":200} action={"actionName":"getJsonSchema","resourceName":"uiSchemas","params":{"filterByTk":"nocobase-admin-menu","resourceName":"uiSchemas","resourceIndex":"nocobase-admin-menu","actionName":"getJsonSchema"}} userId=1 status=200 cost=5 app=main reqId=ccf4e3bd-beb0-4350-af6e-b1fc1d9b6c3f 2023-12-30 22:43:12 [debug] Database dialect: mysql module=application method=install app=main reqId=31ffa8b5-f377-456b-a295-0c8a28938228 2023-12-30 22:43:12 [warn ] app is installed module=application method=install app=main reqId=31ffa8b5-f377-456b-a295-0c8a28938228 `,paraId:6,tocIndex:4},{value:"json",paraId:4},{value:"The default format in production environment.",paraId:7,tocIndex:5},{value:`{ @@ -17701,9 +17754,9 @@ userId=undefined status=200 cost=14 `,paraId:12,tocIndex:7},{value:"The main directory structure of NocoBase log files is:",paraId:13,tocIndex:8},{value:"storage/logs",paraId:14,tocIndex:8},{value:` - Log output directory `,paraId:14,tocIndex:8},{value:"main",paraId:15,tocIndex:8},{value:` - Main application name `,paraId:15,tocIndex:8},{value:"request_YYYY-MM-DD.log",paraId:16,tocIndex:8},{value:" - Request log",paraId:16,tocIndex:8},{value:"system_YYYY-MM-DD.log",paraId:16,tocIndex:8},{value:" - System log",paraId:16,tocIndex:8},{value:"system_error_YYYY-MM-DD.log",paraId:16,tocIndex:8},{value:" - System error log",paraId:16,tocIndex:8},{value:"sql_YYYY-MM-DD.log",paraId:16,tocIndex:8},{value:" - SQL execution log",paraId:16,tocIndex:8},{value:"...",paraId:16,tocIndex:8},{value:"sub-app",paraId:15,tocIndex:8},{value:` - Sub-application name -`,paraId:15,tocIndex:8},{value:"request_YYYY-MM-DD.log",paraId:17,tocIndex:8},{value:"...",paraId:17,tocIndex:8},{value:"request_YYYY-MM-DD.log",paraId:18,tocIndex:10},{value:", interface request and response logs.",paraId:18,tocIndex:10},{value:"Field",paraId:19,tocIndex:10},{value:"Description",paraId:19,tocIndex:10},{value:"level",paraId:19,tocIndex:10},{value:"Log level",paraId:19,tocIndex:10},{value:"timestamp",paraId:19,tocIndex:10},{value:"Log print time ",paraId:19,tocIndex:10},{value:"YYYY-MM-DD hh:mm:ss",paraId:19,tocIndex:10},{value:"message",paraId:19,tocIndex:10},{value:"request",paraId:19,tocIndex:10},{value:" or ",paraId:19,tocIndex:10},{value:"response",paraId:19,tocIndex:10},{value:"userId",paraId:19,tocIndex:10},{value:"Only in ",paraId:19,tocIndex:10},{value:"response",paraId:19,tocIndex:10},{value:"method",paraId:19,tocIndex:10},{value:"Request method",paraId:19,tocIndex:10},{value:"path",paraId:19,tocIndex:10},{value:"Request path",paraId:19,tocIndex:10},{value:"req",paraId:19,tocIndex:10},{value:" / ",paraId:19,tocIndex:10},{value:"res",paraId:19,tocIndex:10},{value:"Request/Response content",paraId:19,tocIndex:10},{value:"action",paraId:19,tocIndex:10},{value:"Requested resources and parameters",paraId:19,tocIndex:10},{value:"status",paraId:19,tocIndex:10},{value:"Response status code",paraId:19,tocIndex:10},{value:"cost",paraId:19,tocIndex:10},{value:"Request time",paraId:19,tocIndex:10},{value:"app",paraId:19,tocIndex:10},{value:"Current application name",paraId:19,tocIndex:10},{value:"reqId",paraId:19,tocIndex:10},{value:"Request ID",paraId:19,tocIndex:10},{value:"reqId",paraId:20},{value:" will be carried to the front end via the ",paraId:20},{value:"X-Request-Id",paraId:20},{value:" response header.",paraId:20},{value:"system_YYYY-MM-DD.log",paraId:21,tocIndex:11},{value:", application, middleware, plugins, and other system operation logs, ",paraId:21,tocIndex:11},{value:"error",paraId:21,tocIndex:11},{value:" level logs will be printed separately to ",paraId:21,tocIndex:11},{value:"system_error_YYYY-MM-DD.log",paraId:21,tocIndex:11},{value:".",paraId:21,tocIndex:11},{value:"Field",paraId:22,tocIndex:11},{value:"Description",paraId:22,tocIndex:11},{value:"level",paraId:22,tocIndex:11},{value:"Log level",paraId:22,tocIndex:11},{value:"timestamp",paraId:22,tocIndex:11},{value:"Log print time ",paraId:22,tocIndex:11},{value:"YYYY-MM-DD hh:mm:ss",paraId:22,tocIndex:11},{value:"message",paraId:22,tocIndex:11},{value:"Log message",paraId:22,tocIndex:11},{value:"module",paraId:22,tocIndex:11},{value:"Module",paraId:22,tocIndex:11},{value:"submodule",paraId:22,tocIndex:11},{value:"Submodule",paraId:22,tocIndex:11},{value:"method",paraId:22,tocIndex:11},{value:"Called method",paraId:22,tocIndex:11},{value:"meta",paraId:22,tocIndex:11},{value:"Other related information, JSON format",paraId:22,tocIndex:11},{value:"app",paraId:22,tocIndex:11},{value:"Current application name",paraId:22,tocIndex:11},{value:"reqId",paraId:22,tocIndex:11},{value:"Request ID",paraId:22,tocIndex:11},{value:"sql_YYYY-MM-DD.log",paraId:23,tocIndex:12},{value:", database SQL execution logs. ",paraId:23,tocIndex:12},{value:"INSERT INTO",paraId:23,tocIndex:12},{value:" statements are limited to the first 2000 characters.",paraId:23,tocIndex:12},{value:"Field",paraId:24,tocIndex:12},{value:"Description",paraId:24,tocIndex:12},{value:"level",paraId:24,tocIndex:12},{value:"Log level",paraId:24,tocIndex:12},{value:"timestamp",paraId:24,tocIndex:12},{value:"Log print time ",paraId:24,tocIndex:12},{value:"YYYY-MM-DD hh:mm:ss",paraId:24,tocIndex:12},{value:"sql",paraId:24,tocIndex:12},{value:"SQL statement",paraId:24,tocIndex:12},{value:"app",paraId:24,tocIndex:12},{value:"Current application name",paraId:24,tocIndex:12},{value:"reqId",paraId:24,tocIndex:12},{value:"Request ID",paraId:24,tocIndex:12},{value:"Navigate to the log management page.",paraId:25},{value:"Select the log files you wish to download.",paraId:25},{value:"Click the download button.",paraId:25},{value:"Plugin Development - Server - Logging",paraId:26,tocIndex:14},{value:"API Reference - @nocobase/logger",paraId:27,tocIndex:14}],FZ={},BZ={title:"Mobile",toc:"menu",filename:"docs/en-US/handbook/mobile/index.md",lastUpdated:1732240239e3,description:"This plugin facilitates the configuration of mobile pages, leveraging a core framework built on Ant Design Mobile. It offers a variety of extension points and supports the integration of specific desktop blocks."},jZ=[{id:"mobile",depth:1,title:"Mobile"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"ui-configuration-interface",depth:3,title:"UI Configuration Interface"},{id:"tab-bar",depth:3,title:"Tab Bar"},{id:"adding-blocks",depth:3,title:"Adding Blocks"},{id:"page-configuration",depth:3,title:"Page Configuration"},{id:"page-tabs",depth:3,title:"Page Tabs"},{id:"sub-pages",depth:3,title:"Sub-Pages"},{id:"filtering",depth:3,title:"Filtering"},{id:"configure-menu-access-permissions",depth:3,title:"Configure menu access permissions"},{id:"development-guide",depth:2,title:"Development Guide"}],HZ=[{value:"This plugin facilitates the configuration of mobile pages, leveraging a core framework built on Ant Design Mobile. It offers a variety of extension points and supports the integration of specific desktop blocks.",paraId:0,tocIndex:1},{value:"The older ",paraId:1},{value:"plugin-mobile-client",paraId:1},{value:" has been deprecated. Starting from version v1.3, it is recommended to transition to ",paraId:1},{value:"plugin-mobile",paraId:1},{value:". These two plugins are incompatible, so the new version will necessitate a complete reconfiguration of mobile settings.",paraId:1},{value:"This plugin comes pre-installed but requires activation to function.",paraId:2,tocIndex:2},{value:"NocoBase provides a specialized UI configuration interface tailored for mobile use.",paraId:3,tocIndex:4},{value:"Supports the addition of two types: links and pages.",paraId:4,tocIndex:5},{value:"The following desktop blocks can currently be added:",paraId:5,tocIndex:6},{value:"On mobile devices, pop-up actions open as sub-pages with swipe-back functionality.",paraId:6,tocIndex:9},{value:` - `,paraId:7},{value:"Filtering utilizes a ",paraId:8,tocIndex:10},{value:"Popup",paraId:8,tocIndex:10},{value:" interaction method.",paraId:8,tocIndex:10},{value:"You can configure menu access permissions just like on the desktop side, as shown below (the mobile plugin must be enabled first):",paraId:9,tocIndex:11},{value:"Currently supported extension points include:",paraId:10,tocIndex:12}],WZ={},$Z={title:"Variables",toc:"menu",filename:"docs/en-US/handbook/ui/variables.md",lastUpdated:1732240239e3,description:"Variables are a set of tokens used to identify a value in the current context. They can be used in scenarios such as configuration block data scope, field default values, linkage rules, workflows, etc."},GZ=[{id:"variables",depth:1,title:"Variables"},{id:"introduction",depth:2,title:"Introduction"},{id:"currently-supported-variables",depth:2,title:"Currently Supported Variables"},{id:"current-user",depth:3,title:"Current user"},{id:"current-role",depth:3,title:"Current Role"},{id:"current-form",depth:3,title:"Current form"},{id:"linkage-rules-of-the-current-form",depth:4,title:"Linkage rules of the current form"},{id:"default-values-for-form-fields-only-valid-when-adding-new-data",depth:4,title:"Default values for form fields (only valid when adding new data)"},{id:"data-scope-settings-for-association-fields",depth:4,title:"Data scope settings for association fields"},{id:"assign-field-values-configuration-for-submit-actions",depth:4,title:"Assign field values configuration for submit actions"},{id:"current-object",depth:3,title:"Current object"},{id:"default-values-for-subfields",depth:4,title:"Default values for subfields"},{id:"data-scope-for-sub-association-fields",depth:4,title:"Data scope for sub-association fields"},{id:"parent-object",depth:3,title:"Parent object"},{id:"current-record",depth:3,title:"Current record"},{id:"row-action-linkage-rules",depth:4,title:"Row Action Linkage Rules"},{id:"current-popup-record",depth:3,title:"Current popup record"},{id:"configuring-data-scope-for-blocks",depth:4,title:"Configuring data scope for blocks"},{id:"configuring-data-scope-for-association-fields",depth:4,title:"Configuring data scope for association fields"},{id:"configuring-default-values-for-fields-form-for-adding-data",depth:4,title:"Configuring default values for fields (form for adding data)"},{id:"configuring-linkage-rules-for-actions",depth:4,title:"Configuring linkage rules for actions"},{id:"assign-field-values-configuration-for-form-submit-actions",depth:4,title:"Assign field values configuration for form submit actions"},{id:"table-select-record",depth:3,title:"Table Select Record"},{id:"the-default-value-of-the-form-field-for-the-add-record-action",depth:4,title:"The default value of the form field for the Add record action"},{id:"parent-record-deprecated",depth:3,title:"Parent record (Deprecated)"},{id:"date-variables",depth:3,title:"Date variables"},{id:"url-search-params",depth:3,title:"URL search params"},{id:"api-token",depth:3,title:"API token"}],VZ=[{value:"Variables are a set of tokens used to identify a value in the current context. They can be used in scenarios such as configuration block data scope, field default values, linkage rules, workflows, etc.",paraId:0,tocIndex:1},{value:"Represents the data of the currently logged-in user.",paraId:1,tocIndex:3},{value:"Represents the role identifier (role name) of the currently logged-in user.",paraId:2,tocIndex:4},{value:"The value of the current form, only used in form blocks. It is used in the following scenarios:",paraId:3,tocIndex:5},{value:"Linkage rules of the current form",paraId:4,tocIndex:5},{value:"Default values for form fields (only valid when adding new data)",paraId:4,tocIndex:5},{value:"Data scope settings for association fields",paraId:4,tocIndex:5},{value:"Assign field values configuration for submit actions",paraId:4,tocIndex:5},{value:"Used to handle linkages between relationships, for example:",paraId:5,tocIndex:8},{value:"Currently only used for field configuration in subforms and subtables of form blocks, representing the value of each item:",paraId:6,tocIndex:10},{value:"Default values for subfields",paraId:7,tocIndex:10},{value:"Data scope for sub-association fields",paraId:7,tocIndex:10},{value:'Similar to the "Current object", it represents the parent object of the current object. Supported in NocoBase v1.3.34-beta and above.',paraId:8,tocIndex:13},{value:'A record refers to a row in a collection, with each row representing a record. The "Current record" variable is used in the "Row Action Linkage Rules" of display blocks.',paraId:9,tocIndex:14},{value:"Popup actions play a very important role in the NocoBase interface configuration.",paraId:10,tocIndex:16},{value:'Row action popup: Each popup has a "Current popup record" variable, representing the current row record.',paraId:11,tocIndex:16},{value:'Association field popup: Each popup has a "Current popup record" variable, representing the clicked relationship record.',paraId:11,tocIndex:16},{value:'The blocks in the popup can use the "Current popup record" variable, with the following use cases:',paraId:12,tocIndex:16},{value:"Configuring data scope for blocks",paraId:13,tocIndex:16},{value:"Configuring data scope for association fields",paraId:13,tocIndex:16},{value:"Configuring default values for fields (form for adding data)",paraId:13,tocIndex:16},{value:"Configuring linkage rules for actions",paraId:13,tocIndex:16},{value:"Assign field values configuration for form submit actions",paraId:13,tocIndex:16},{value:"Default values for form fields that are currently only used for the Add record action for a table block",paraId:14,tocIndex:22},{value:"Only used in association blocks, representing the source record of the association data.",paraId:15,tocIndex:24},{value:'"Parent record" is deprecated, it is recommended to use the equivalent "Current popup record" instead.',paraId:16},{value:"Related variables include:",paraId:17,tocIndex:25},{value:"Current time",paraId:18,tocIndex:25},{value:"Yesterday",paraId:18,tocIndex:25},{value:"Today",paraId:18,tocIndex:25},{value:"Tomorrow",paraId:18,tocIndex:25},{value:"Last week",paraId:18,tocIndex:25},{value:"This week",paraId:18,tocIndex:25},{value:"Next week",paraId:18,tocIndex:25},{value:"Last month",paraId:18,tocIndex:25},{value:"This month",paraId:18,tocIndex:25},{value:"Next month",paraId:18,tocIndex:25},{value:"Last quarter",paraId:18,tocIndex:25},{value:"This quarter",paraId:18,tocIndex:25},{value:"Next quarter",paraId:18,tocIndex:25},{value:"Last year",paraId:18,tocIndex:25},{value:"This year",paraId:18,tocIndex:25},{value:"Next year",paraId:18,tocIndex:25},{value:"Last 7 days",paraId:18,tocIndex:25},{value:"Next 7 days",paraId:18,tocIndex:25},{value:"Last 30 days",paraId:18,tocIndex:25},{value:"Next 30 days",paraId:18,tocIndex:25},{value:"Last 90 days",paraId:18,tocIndex:25},{value:"Next 90 days",paraId:18,tocIndex:25},{value:"Except for the Current time which is a moment (string), other date variables are time periods (arrays). Currently, time periods can only be used in data scope and cannot be used in field default values.",paraId:19},{value:"Related use cases include:",paraId:20},{value:"Date field condition settings for block data scope",paraId:21},{value:"Date field condition settings for association field data scopes",paraId:21},{value:"Date field condition settings for action linkage rules",paraId:21},{value:"Date field default value settings",paraId:21},{value:"This variable represents the search parameters in the current page URL. This variable is only available when there is a query string in the page URL. It is more convenient to use it together with ",paraId:22,tocIndex:26},{value:"Link",paraId:23,tocIndex:26},{value:".",paraId:22,tocIndex:26},{value:"This variable's value is a string that serves as a credential for accessing the NocoBase API. It can be used to authenticate the user's identity.",paraId:24,tocIndex:27}],KZ={},ZZ={title:"Menus",toc:"menu",filename:"docs/en-US/manual/ui/menus/index.md",lastUpdated:1732240239e3,description:"Menus are used to organize pages and external links. In NocoBase's default page layout template, menus are located on the top and left side. In this case, the top side is the first level menu, and the left side is the second level and infinite levels of submenus."},YZ=[{id:"menus",depth:1,title:"Menus"},{id:"menu-item-types",depth:2,title:"Menu Item Types"},{id:"group",depth:3,title:"Group"},{id:"page",depth:3,title:"Page"},{id:"link",depth:3,title:"Link"},{id:"configure-menu",depth:2,title:"Configure Menu"},{id:"menu-item-configuration",depth:3,title:"Menu Item Configuration"}],QZ=[{value:"Menus are used to organize pages and external links. In NocoBase's default page layout template, menus are located on the top and left side. In this case, the top side is the first level menu, and the left side is the second level and infinite levels of submenus.",paraId:0,tocIndex:0},{value:"NocoBase has three built-in menu item types:",paraId:1,tocIndex:1},{value:"Group",paraId:2,tocIndex:1},{value:"Page",paraId:2,tocIndex:1},{value:"Link",paraId:2,tocIndex:1},{value:'"Group" is used to group menu items, which can be on the top or left side. Within a group, you can continue to create groups, i.e. the menu can be infinitely hierarchical.',paraId:3,tocIndex:2},{value:"Page can be used as container for blocks, holding a wide variety of blocks. (See [pages and popups](. /pages/index.md) )",paraId:4,tocIndex:3},{value:"Can be used to jump to third-party URLs",paraId:5,tocIndex:4},{value:"Once you switch into UI Editor mode, there are two icons in the upper right corner of the menu item:",paraId:6,tocIndex:5},{value:"Drag and drop to move",paraId:7,tocIndex:5},{value:"Menu Item Configuration",paraId:7,tocIndex:5},{value:"Edit: includes menu item title, icon, etc.",paraId:8,tocIndex:6},{value:'Move to: besides drag and drop move, you can also move the menu item quickly by "Move to", you can move the menu item in front of, behind or inside of other menu items.',paraId:8,tocIndex:6},{value:"Insert before",paraId:8,tocIndex:6},{value:"Insert after",paraId:8,tocIndex:6},{value:"Insert inner (group type only)",paraId:8,tocIndex:6},{value:"Delete",paraId:8,tocIndex:6}],JZ={},XZ={title:"Page & pupup",toc:"menu",filename:"docs/en-US/manual/ui/pages/index.md",lastUpdated:1732240239e3,description:"NocoBase's pages and popups (dialog, drawer) can be used as containers for blocks; they are like a canvas on which various blocks can be freely placed."},eY=[{id:"page--pupup",depth:1,title:"Page & pupup"},{id:"pages",depth:2,title:"Pages"},{id:"header",depth:3,title:"Header"},{id:"page-title",depth:4,title:"Page Title"},{id:"tabs",depth:4,title:"Tabs"},{id:"block-container",depth:3,title:"Block Container"},{id:"popup",depth:2,title:"Popup"}],aY=[{value:"NocoBase's pages and popups (dialog, drawer) can be used as containers for blocks; they are like a canvas on which various blocks can be freely placed.",paraId:0,tocIndex:0},{value:"After creating a page by [menu](. /menus/index.md) , you can see that an empty page consists of the following two parts:",paraId:1,tocIndex:1},{value:`header -`,paraId:2,tocIndex:1},{value:"page title",paraId:3,tocIndex:1},{value:"tab",paraId:3,tocIndex:1},{value:"block container",paraId:2,tocIndex:1},{value:"Hover your mouse over the configuration item icon at the top right of the page to see the page configuration item:",paraId:4,tocIndex:1},{value:"Configurable items include:",paraId:5,tocIndex:1},{value:"Enable page header: used to control whether to display the header or not;",paraId:6,tocIndex:1},{value:"Display page title: whether to show the page title in the header;",paraId:6,tocIndex:1},{value:"Edit page title: the default page title is the menu item title, which can be customized;",paraId:6,tocIndex:1},{value:"Enable page tabs: off by default, you can add multiple tabs when enabled.",paraId:6,tocIndex:1},{value:"Usually, we need to enable the header area for displaying page title, tabs. There are also cases where you don't want to enable it, for example, when we create a Dashbodrd page and the first level menu is a good representation of the content of that page, in this case we can disable the header and only show the blocks within the page.",paraId:7,tocIndex:2},{value:`The default page title is the name of the menu item, which can be changed by clicking "Edit page title". As with the header, there are times when we don't need to show the page title, but only the tabs, in which case the title can be turned off.`,paraId:8,tocIndex:3},{value:"When there is too much content in a page, or when it is suitable to organize it into several separate parts, we can enable tabs, each tab is a separate block container. In the image below, we have added 3 tabs to the orders page to display all orders, completed orders, and refunded orders. Hover your mouse over the tab titles and you can see the Drag and Configure Items buttons in the upper right corner.",paraId:9,tocIndex:4},{value:'You can add an unlimited number of blocks to your page by clicking "Add block" (see [Blocks](. /blocks/index.md)).',paraId:10,tocIndex:5},{value:"After adding multiple blocks, you can drag and drop any layout of the blocks to adjust the layout to achieve the most suitable effect by using the dragbutton at the upper right corner of the block.",paraId:11,tocIndex:5},{value:"Currently, there are two kinds of popup windows in NocoBase: dialogs and drawers. Like pages, dialogs and drawers can be used as containers for blocks, and multiple tabs can be added to them. They are opened by actions such as Add, Edit, View, etc.",paraId:12,tocIndex:6}],tY={},nY={title:"\u5DE5\u4F5C\u6D41",toc:"menu",filename:"docs/en-US/manual/workflow/index.md",lastUpdated:1732240239e3,description:"\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u662F\u4E00\u4E2A\u7F16\u6392\u548C\u914D\u7F6E\u81EA\u52A8\u5316\u6D41\u7A0B\u7684\u5F3A\u5927\u5DE5\u5177\uFF0C\u4E1A\u754C\u901A\u5E38\u79F0\u4E3A\u4E1A\u52A1\u6D41\u7A0B\u7BA1\u7406\uFF08BPM\uFF09\u5DE5\u5177\u3002\u5E38\u7528\u4E8E\u57FA\u4E8E\u6570\u636E\u6A21\u578B\u7684\u4E1A\u52A1\u6D41\u7A0B\u8BBE\u8BA1\u4E0E\u7F16\u6392\uFF0C\u901A\u8FC7\u89E6\u53D1\u6761\u4EF6\u4E0E\u6267\u884C\u6D41\u7A0B\u8282\u70B9\u7F16\u6392\u5B9E\u73B0\u4E1A\u52A1\u6D41\u7A0B\u7684\u81EA\u52A8\u5316\u6D41\u8F6C\u3002"},oY=[{id:"\u5DE5\u4F5C\u6D41",depth:1,title:"\u5DE5\u4F5C\u6D41"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u6DF1\u5165\u4E86\u89E3",depth:2,title:"\u6DF1\u5165\u4E86\u89E3"}],rY=[{value:"\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u662F\u4E00\u4E2A\u7F16\u6392\u548C\u914D\u7F6E\u81EA\u52A8\u5316\u6D41\u7A0B\u7684\u5F3A\u5927\u5DE5\u5177\uFF0C\u4E1A\u754C\u901A\u5E38\u79F0\u4E3A\u4E1A\u52A1\u6D41\u7A0B\u7BA1\u7406\uFF08BPM\uFF09\u5DE5\u5177\u3002\u5E38\u7528\u4E8E\u57FA\u4E8E\u6570\u636E\u6A21\u578B\u7684\u4E1A\u52A1\u6D41\u7A0B\u8BBE\u8BA1\u4E0E\u7F16\u6392\uFF0C\u901A\u8FC7\u89E6\u53D1\u6761\u4EF6\u4E0E\u6267\u884C\u6D41\u7A0B\u8282\u70B9\u7F16\u6392\u5B9E\u73B0\u4E1A\u52A1\u6D41\u7A0B\u7684\u81EA\u52A8\u5316\u6D41\u8F6C\u3002",paraId:0,tocIndex:1},{value:"\u5728 NocoBase \u5E94\u7528\u4E2D\uFF0C\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u9488\u5BF9\u65E0\u4EE3\u7801\u573A\u666F\u8BBE\u8BA1\uFF0C\u4F7F\u7528\u8BE5\u63D2\u4EF6\u53EF\u4EE5\u5728 UI \u754C\u9762\u4E0A\u5B8C\u6210\u5927\u90E8\u5206\u5E38\u89C1\u4E1A\u52A1\u7684\u7F16\u6392\u4E0E\u6570\u636E\u5904\u7406\uFF0C\u4EE5\u52A8\u6001\u5730\u5B9E\u73B0\u7CFB\u7EDF\u4E2D\u7684\u4E1A\u52A1\u6D41\u7A0B\u53D8\u66F4\u3002",paraId:1,tocIndex:1},{value:"\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u901A\u8FC7\u4E00\u4E2A\u89E6\u53D1\u5668\u4E0E\u82E5\u5E72\u8282\u70B9\u7F16\u6392\u800C\u6210\uFF0C\u901A\u8FC7\u6BCF\u4E2A\u8282\u70B9\u7684\u7279\u5B9A\u529F\u80FD\uFF0C\u63CF\u8FF0\u7CFB\u7EDF\u4E2D\u5BF9\u5E94\u4E8B\u4EF6\u4EA7\u751F\u540E\u9700\u8981\u5904\u7406\u7684\u4E1A\u52A1\u903B\u8F91\u3002\u4E00\u4E2A\u5178\u578B\u7684\u5DE5\u4F5C\u6D41\u5982\u4E0B\u56FE\u6240\u793A\uFF1A",paraId:2,tocIndex:1},{value:"\u4EE5\u4E0A\u5DE5\u4F5C\u6D41\u7684\u529F\u80FD\u662F\uFF1A\u5F53\u7528\u6237\u63D0\u4EA4\u4E00\u4E2A\u8BA2\u5355\u8868\u5355\u540E\uFF0C\u7CFB\u7EDF\u81EA\u52A8\u68C0\u67E5\u8BA2\u5355\u4E2D\u7684\u5546\u54C1\u5E93\u5B58\uFF0C\u5982\u679C\u5E93\u5B58\u5145\u8DB3\uFF0C\u5219\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u66F4\u65B0\u4E3A\u65E0\u6548\u3002",paraId:3,tocIndex:1},{value:"\u4ECE\u66F4\u901A\u7528\u7684\u89D2\u5EA6\uFF0C\u5DE5\u4F5C\u6D41\u5728 NocoBase \u5E94\u7528\u4E2D\u53EF\u4EE5\u89E3\u51B3\u51E0\u5927\u573A\u666F\u7684\u95EE\u9898\uFF1A",paraId:4,tocIndex:1},{value:"\u6570\u636E\u81EA\u52A8\u5316\u5904\u7406\uFF1A\u6BD4\u5982\u5728\u6570\u636E\u8868\u4E2D\u65B0\u589E\u4E00\u6761\u6570\u636E\u540E\uFF0C\u81EA\u52A8\u6309\u9884\u5B9A\u6D41\u7A0B\u5904\u7406\u6570\u636E\uFF0C\u5982\u8BA1\u7B97\u89E6\u53D1\u6570\u636E\u540E\u66F4\u65B0\u5173\u8054\u6570\u636E\u7B49\u3002",paraId:5,tocIndex:1},{value:"\u4EBA\u5DE5\u4ECB\u5165\u7684\u4E1A\u52A1\u6D41\u7A0B\uFF1A\u5F53\u4E1A\u52A1\u6D41\u7A0B\u4E0D\u80FD\u5B8C\u5168\u81EA\u52A8\u5316\u51B3\u7B56\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4EBA\u5DE5\u7C7B\u578B\u7684\u8282\u70B9\uFF0C\u5C06\u90E8\u5206\u51B3\u7B56\u6743\u4EA4\u7ED9\u4EBA\u5DE5\u5904\u7406\uFF0C\u6BD4\u5982\u5BA1\u6279\u3001\u590D\u6838\u7B49\u3002\u4EBA\u5DE5\u5904\u7406\u7684\u7ED3\u679C\u63D0\u4EA4\u4EE5\u540E\uFF0C\u518D\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u6D41\u7A0B\u3002",paraId:5,tocIndex:1},{value:"\u4E0E\u5916\u90E8\u7CFB\u7EDF\u8FDE\u63A5\uFF1A\u53EF\u4EE5\u901A\u8FC7\u8BF7\u6C42\u8282\u70B9\uFF08\u6216\u6269\u5C55\u5404\u7C7B\u8C03\u7528\u7B2C\u4E09\u65B9\u529F\u80FD\u7684\u8282\u70B9\uFF09\u8C03\u7528\u5916\u90E8\u7CFB\u7EDF\u7684 API \u63A5\u53E3\uFF0C\u5B9E\u73B0\u548C\u5916\u90E8\u7CFB\u7EDF\u7684\u6570\u636E\u4EA4\u4E92\u3002",paraId:5,tocIndex:1},{value:"\u5DE5\u4F5C\u6D41\u662F NocoBase \u7684\u5185\u7F6E\u63D2\u4EF6\uFF0C\u65E0\u9700\u989D\u5916\u5B89\u88C5\u3002",paraId:6,tocIndex:2},{value:"\u4F7F\u7528\u624B\u518C",paraId:7,tocIndex:3},{value:"\u5F00\u53D1\u6307\u5357",paraId:8,tocIndex:3}],dY={},iY={title:"\u5FEB\u901F\u5165\u95E8",toc:"menu",filename:"docs/en-US/manual/workflow/start.md",lastUpdated:1732240239e3,description:"\u4ECE\u9876\u90E8\u83DC\u5355\u680F\u7684\u63D2\u4EF6\u914D\u7F6E\u83DC\u5355\u8FDB\u5165\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u7684\u7BA1\u7406\u9875\u9762\uFF1A"},lY=[{id:"\u5FEB\u901F\u5165\u95E8",depth:1,title:"\u5FEB\u901F\u5165\u95E8"},{id:"\u914D\u7F6E\u4E00\u4E2A\u5DE5\u4F5C\u6D41",depth:2,title:"\u914D\u7F6E\u4E00\u4E2A\u5DE5\u4F5C\u6D41"},{id:"\u89E6\u53D1\u5DE5\u4F5C\u6D41",depth:2,title:"\u89E6\u53D1\u5DE5\u4F5C\u6D41"},{id:"\u67E5\u770B\u6267\u884C\u5386\u53F2",depth:2,title:"\u67E5\u770B\u6267\u884C\u5386\u53F2"},{id:"\u5C0F\u7ED3",depth:2,title:"\u5C0F\u7ED3"}],cY=[{value:"\u4ECE\u9876\u90E8\u83DC\u5355\u680F\u7684\u63D2\u4EF6\u914D\u7F6E\u83DC\u5355\u8FDB\u5165\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u7684\u7BA1\u7406\u9875\u9762\uFF1A",paraId:0,tocIndex:1},{value:"\u7BA1\u7406\u754C\u9762\u4E2D\u4F1A\u5217\u51FA\u6240\u6709\u5DF2\u521B\u5EFA\u7684\u5DE5\u4F5C\u6D41\uFF1A",paraId:1,tocIndex:1},{value:"\u70B9\u51FB\u201C\u65B0\u5EFA\u201D\u6309\u94AE\uFF0C\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u5DE5\u4F5C\u6D41\uFF0C\u9009\u62E9\u6570\u636E\u8868\u4E8B\u4EF6\uFF1A",paraId:2,tocIndex:1},{value:"\u70B9\u51FB\u5217\u8868\u4E2D\u7684\u201C\u914D\u7F6E\u201D\u94FE\u63A5\uFF0C\u8FDB\u5165\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\uFF1A",paraId:3,tocIndex:1},{value:"\u7136\u540E\u70B9\u51FB\u89E6\u53D1\u5668\u7684\u5361\u7247\uFF0C\u6253\u5F00\u89E6\u53D1\u5668\u914D\u7F6E\u62BD\u5C49\uFF0C\u9009\u62E9\u4E00\u5F20\u4E4B\u524D\u521B\u5EFA\u7684\u6570\u636E\u8868\uFF08\u4F8B\u5982\u201C\u6587\u7AE0\u201D\u8868\uFF09\uFF0C\u89E6\u53D1\u65F6\u673A\u9879\u9009\u62E9\u201C\u65B0\u589E\u6570\u636E\u540E\u201D\u89E6\u53D1\uFF0C\u70B9\u51FB\u201C\u4FDD\u5B58\u201D\u6309\u94AE\uFF0C\u5B8C\u6210\u89E6\u53D1\u5668\u7684\u914D\u7F6E\uFF1A",paraId:4,tocIndex:1},{value:"\u63A5\u4E0B\u6765\u6211\u4EEC\u53EF\u4EE5\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\u6309\u94AE\u4E3A\u6D41\u7A0B\u589E\u52A0\u4E00\u4E2A\u8282\u70B9\uFF0C\u4F8B\u5982\u9009\u62E9\u4E00\u4E2A\u8FD0\u7B97\u8282\u70B9\uFF0C\u7528\u4E8E\u5C06\u89E6\u53D1\u5668\u4E2D\u7684\u6570\u636E\u7684\u201C\u6807\u9898\u201D\u5B57\u6BB5\u4E0E\u201CID\u201D\u5B57\u6BB5\u8FDB\u884C\u62FC\u63A5\u8BA1\u7B97\uFF1A",paraId:5,tocIndex:1},{value:"\u70B9\u51FB\u8282\u70B9\u5361\u7247\u6253\u5F00\u8282\u70B9\u914D\u7F6E\u62BD\u5C49\uFF0C\u4F7F\u7528 Formula.js \u63D0\u4F9B\u7684\u8FD0\u7B97\u51FD\u6570 ",paraId:6,tocIndex:1},{value:"CONCATENATE",paraId:6,tocIndex:1},{value:"\uFF0C\u62FC\u63A5\u201C\u6807\u9898\u201D\u4E0E\u201CID\u201D\u5B57\u6BB5\uFF0C\u4E24\u4E2A\u5B57\u6BB5\u901A\u8FC7\u53D8\u91CF\u9009\u62E9\u5668\u63D2\u5165\uFF1A",paraId:6,tocIndex:1},{value:"\u4E4B\u540E\u518D\u521B\u5EFA\u4E00\u4E2A\u66F4\u65B0\u6570\u636E\u8282\u70B9\uFF0C\u7528\u4E8E\u5C06\u7ED3\u679C\u4FDD\u5B58\u5230\u201C\u6807\u9898\u201D\u5B57\u6BB5\u4E2D\uFF1A",paraId:7,tocIndex:1},{value:"\u540C\u6837\u7684\u70B9\u51FB\u5361\u7247\u6253\u5F00\u66F4\u65B0\u6570\u636E\u8282\u70B9\u7684\u914D\u7F6E\u62BD\u5C49\uFF0C\u9009\u62E9\u201C\u6587\u7AE0\u201D\u8868\uFF0C\u66F4\u65B0\u7684\u6570\u636E ID \u9009\u62E9\u89E6\u53D1\u5668\u4E2D\u7684\u6570\u636E ID\uFF0C\u66F4\u65B0\u7684\u6570\u636E\u9879\u9009\u62E9\u201C\u6807\u9898\u201D\uFF0C\u66F4\u65B0\u7684\u6570\u636E\u503C\u9009\u62E9\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF1A",paraId:8,tocIndex:1},{value:"\u6700\u540E\u518D\u70B9\u51FB\u53F3\u4E0A\u89D2\u5DE5\u5177\u680F\u91CC\u7684\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\uFF0C\u5C06\u5DE5\u4F5C\u6D41\u5207\u6362\u81F3\u542F\u7528\u72B6\u6001\uFF0C\u8FD9\u6837\u5DE5\u4F5C\u6D41\u5C31\u53EF\u4EE5\u88AB\u89E6\u53D1\u6267\u884C\u4E86\u3002",paraId:9,tocIndex:1},{value:"\u56DE\u5230\u7CFB\u7EDF\u4E3B\u754C\u9762\uFF0C\u901A\u8FC7\u6587\u7AE0\u533A\u5757\u521B\u5EFA\u4E00\u7BC7\u6587\u7AE0\uFF0C\u586B\u5165\u6587\u7AE0\u6807\u9898\uFF1A",paraId:10,tocIndex:2},{value:"\u63D0\u4EA4\u540E\u5237\u65B0\u533A\u5757\u540E\u53EF\u4EE5\u770B\u5230\u6587\u7AE0\u6807\u9898\u88AB\u81EA\u52A8\u66F4\u65B0\u4E3A\u201C\u6587\u7AE0\u6807\u9898 + \u6587\u7AE0 ID\u201D\u7684\u5F62\u5F0F\uFF1A",paraId:11,tocIndex:2},{value:"\u7531\u4E8E\u6570\u636E\u8868\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\u662F\u5F02\u6B65\u6267\u884C\u7684\uFF0C\u6240\u4EE5\u5728\u63D0\u4EA4\u6570\u636E\u540E\u7684\u754C\u9762\u4E2D\u65E0\u6CD5\u9A6C\u4E0A\u770B\u5230\u6570\u636E\u66F4\u65B0\uFF0C\u4F46\u7247\u523B\u4E4B\u540E\u5237\u65B0\u9875\u9762\u6216\u533A\u5757\u540E\u5373\u53EF\u770B\u5230\u66F4\u65B0\u7684\u5185\u5BB9\u3002",paraId:12},{value:"\u521A\u624D\u7684\u5DE5\u4F5C\u6D41\u5DF2\u7ECF\u6210\u529F\u89E6\u53D1\u6267\u884C\u4E86\u4E00\u6B21\uFF0C\u6211\u4EEC\u53EF\u4EE5\u56DE\u5230\u5DE5\u4F5C\u6D41\u7684\u7BA1\u7406\u754C\u9762\u4E2D\u67E5\u770B\u5230\u5BF9\u5E94\u7684\u6267\u884C\u5386\u53F2\uFF1A",paraId:13,tocIndex:3},{value:"\u5DE5\u4F5C\u6D41\u5217\u8868\u4E2D\u53EF\u4EE5\u770B\u5230\u8FD9\u4E2A\u5DE5\u4F5C\u6D41\u5DF2\u7ECF\u4EA7\u751F\u4E86\u4E00\u6B21\u6267\u884C\u5386\u53F2\uFF0C\u70B9\u51FB\u6B21\u6570\u7684\u94FE\u63A5\uFF0C\u53EF\u4EE5\u6253\u5F00\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5386\u53F2\u8BB0\u5F55\uFF1A",paraId:14,tocIndex:3},{value:"\u518D\u70B9\u51FB\u201C\u67E5\u770B\u201D\u94FE\u63A5\u53EF\u4EE5\u8FDB\u5165\u5230\u5F53\u6B21\u6267\u884C\u7684\u8BE6\u60C5\u9875\u9762\uFF0C\u53EF\u4EE5\u770B\u5230\u6BCF\u4E2A\u8282\u70B9\u7684\u6267\u884C\u72B6\u6001\u548C\u7ED3\u679C\u6570\u636E\uFF1A",paraId:15,tocIndex:3},{value:"\u89E6\u53D1\u5668\u7684\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u548C\u8282\u70B9\u6267\u884C\u7684\u7ED3\u679C\u6570\u636E\u90FD\u53EF\u4EE5\u901A\u8FC7\u70B9\u51FB\u5BF9\u5E94\u5361\u7247\u53F3\u4E0A\u89D2\u7684\u72B6\u6001\u6309\u94AE\u6253\u5F00\u67E5\u770B\uFF0C\u6BD4\u5982\u6211\u4EEC\u67E5\u770B\u5176\u4E2D\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\uFF1A",paraId:16,tocIndex:3},{value:"\u53EF\u4EE5\u770B\u5230\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u4E2D\u5305\u542B\u4E86\u8FD0\u7B97\u540E\u7684\u6807\u9898\uFF0C\u8FD9\u4E2A\u6807\u9898\u5C31\u662F\u540E\u7EED\u66F4\u65B0\u6570\u636E\u8282\u70B9\u66F4\u65B0\u7684\u6570\u636E\u3002",paraId:17,tocIndex:3},{value:"\u901A\u8FC7\u4E0A\u9762\u7684\u6B65\u9AA4\uFF0C\u6211\u4EEC\u5DF2\u7ECF\u5B8C\u6210\u4E86\u4E00\u4E2A\u7B80\u5355\u7684\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u548C\u89E6\u53D1\uFF0C\u4E5F\u63A5\u89E6\u4E86\u4EE5\u4E0B\u51E0\u4E2A\u57FA\u7840\u6982\u5FF5\uFF1A",paraId:18,tocIndex:4},{value:"\u5DE5\u4F5C\u6D41",paraId:19,tocIndex:4},{value:"\uFF1A\u7528\u4E8E\u5B9A\u4E49\u6D41\u7A0B\u7684\u57FA\u672C\u4FE1\u606F\uFF0C\u5305\u62EC\u540D\u79F0\u3001\u89E6\u53D1\u5668\u7C7B\u578B\u548C\u542F\u7528\u72B6\u6001\u7B49\uFF0C\u53EF\u5728\u5176\u4E2D\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u6267\u884C\u8282\u70B9\uFF0C\u662F\u627F\u8F7D\u6D41\u7A0B\u7684\u5B9E\u4F53\u3002",paraId:19,tocIndex:4},{value:"\u89E6\u53D1\u5668",paraId:19,tocIndex:4},{value:"\uFF1A\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u90FD\u5305\u542B\u4E00\u4E2A\u89E6\u53D1\u5668\uFF0C\u53EF\u914D\u7F6E\u4E3A\u5DE5\u4F5C\u6D41\u88AB\u89E6\u53D1\u7684\u7279\u5B9A\u6761\u4EF6\uFF0C\u662F\u6D41\u7A0B\u7684\u5165\u53E3\u3002",paraId:19,tocIndex:4},{value:"\u8282\u70B9",paraId:19,tocIndex:4},{value:"\uFF1A\u8282\u70B9\u662F\u5DE5\u4F5C\u6D41\u5185\u7684\u6267\u884C\u7279\u5B9A\u64CD\u4F5C\u7684\u6307\u4EE4\u5355\u5143\uFF0C\u5DE5\u4F5C\u6D41\u4E2D\u591A\u4E2A\u8282\u70B9\u4E4B\u95F4\u901A\u8FC7\u4E0A\u4E0B\u6E38\u5173\u7CFB\u7EC4\u6210\u5B8C\u6574\u7684\u6267\u884C\u6D41\u7A0B\u3002",paraId:19,tocIndex:4},{value:"\u6267\u884C\u8BA1\u5212",paraId:19,tocIndex:4},{value:"\uFF1A\u6267\u884C\u8BA1\u5212\u662F\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\u7684\u5177\u4F53\u6267\u884C\u5BF9\u8C61\uFF0C\u4E5F\u79F0\u4E3A\u6267\u884C\u8BB0\u5F55\u6216\u6267\u884C\u5386\u53F2\uFF0C\u5305\u542B\u4E86\u6267\u884C\u7684\u72B6\u6001\u3001\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u7B49\u4FE1\u606F\u3002\u5176\u4E2D\u9488\u5BF9\u6BCF\u4E2A\u8282\u70B9\u4E5F\u6709\u5BF9\u5E94\u7684\u6267\u884C\u7ED3\u679C\uFF0C\u5305\u542B\u4E86\u8282\u70B9\u6267\u884C\u540E\u7684\u72B6\u6001\u548C\u7ED3\u679C\u6570\u636E\u4FE1\u606F\u3002",paraId:19,tocIndex:4},{value:"\u66F4\u6DF1\u5165\u7684\u4F7F\u7528\u53EF\u4EE5\u8FDB\u4E00\u6B65\u53C2\u8003\u4EE5\u4E0B\u5185\u5BB9\uFF1A",paraId:20,tocIndex:4},{value:"\u8FDB\u9636\u4F7F\u7528",paraId:21,tocIndex:4},{value:"\u89E6\u53D1\u5668\u4ECB\u7ECD",paraId:22,tocIndex:4},{value:"\u8282\u70B9\u4ECB\u7ECD",paraId:23,tocIndex:4}],sY={},uY={title:"API \u6587\u6863",toc:"menu",filename:"docs/en-US/plugins/api-doc/index.md",lastUpdated:1732240239e3,description:"http://localhost:13000/admin/settings/api-doc/documentation"},pY=[{id:"api-\u6587\u6863",depth:1,title:"API \u6587\u6863"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u8BF4\u660E",depth:2,title:"\u4F7F\u7528\u8BF4\u660E"},{id:"\u8BBF\u95EE-api-\u6587\u6863\u9875\u9762",depth:3,title:"\u8BBF\u95EE API \u6587\u6863\u9875\u9762"},{id:"\u6587\u6863\u6982\u89C8",depth:3,title:"\u6587\u6863\u6982\u89C8"},{id:"\u5F00\u53D1\u6307\u5357",depth:2,title:"\u5F00\u53D1\u6307\u5357"},{id:"\u5982\u4F55\u4E3A\u63D2\u4EF6\u7F16\u5199-swagger-\u6587\u6863",depth:3,title:"\u5982\u4F55\u4E3A\u63D2\u4EF6\u7F16\u5199 swagger \u6587\u6863"}],IY=[{value:"http://localhost:13000/admin/settings/api-doc/documentation",paraId:0,tocIndex:4},{value:"\u603B API \u6587\u6863\uFF1A",paraId:1,tocIndex:5},{value:"/api/swagger:get",paraId:1,tocIndex:5},{value:"\u5185\u6838 API \u6587\u6863\uFF1A",paraId:1,tocIndex:5},{value:"/api/swagger:get?ns=core",paraId:1,tocIndex:5},{value:"\u6240\u6709\u63D2\u4EF6 API \u6587\u6863\uFF1A",paraId:1,tocIndex:5},{value:"/api/swagger:get?ns=plugins",paraId:1,tocIndex:5},{value:"\u6BCF\u4E2A\u63D2\u4EF6\u7684\u6587\u6863\uFF1A",paraId:1,tocIndex:5},{value:"/api/swagger:get?ns=plugins/{name}",paraId:1,tocIndex:5},{value:"\u7528\u6237\u81EA\u5B9A\u4E49 collections \u7684 API \u6587\u6863\uFF1A",paraId:1,tocIndex:5},{value:"/api/swagger:get?ns=collections",paraId:1,tocIndex:5},{value:"\u6307\u5B9A ",paraId:1,tocIndex:5},{value:"${collection}",paraId:1,tocIndex:5},{value:" \u53CA\u76F8\u5173 ",paraId:1,tocIndex:5},{value:"${collection}.${association}",paraId:1,tocIndex:5},{value:" \u8D44\u6E90\uFF1A",paraId:1,tocIndex:5},{value:"/api/swagger:get?ns=collections/{name}",paraId:1,tocIndex:5},{value:"\u5728\u63D2\u4EF6 ",paraId:2,tocIndex:7},{value:"src",paraId:2,tocIndex:7},{value:" \u6587\u4EF6\u5939\u91CC\u6DFB\u52A0 ",paraId:2,tocIndex:7},{value:"swagger/index.ts",paraId:2,tocIndex:7},{value:" \u6587\u4EF6\uFF0C\u5185\u5BB9\u5982\u4E0B\uFF1A",paraId:2,tocIndex:7},{value:`export default { +`,paraId:15,tocIndex:8},{value:"request_YYYY-MM-DD.log",paraId:17,tocIndex:8},{value:"...",paraId:17,tocIndex:8},{value:"request_YYYY-MM-DD.log",paraId:18,tocIndex:10},{value:", interface request and response logs.",paraId:18,tocIndex:10},{value:"Field",paraId:19,tocIndex:10},{value:"Description",paraId:19,tocIndex:10},{value:"level",paraId:19,tocIndex:10},{value:"Log level",paraId:19,tocIndex:10},{value:"timestamp",paraId:19,tocIndex:10},{value:"Log print time ",paraId:19,tocIndex:10},{value:"YYYY-MM-DD hh:mm:ss",paraId:19,tocIndex:10},{value:"message",paraId:19,tocIndex:10},{value:"request",paraId:19,tocIndex:10},{value:" or ",paraId:19,tocIndex:10},{value:"response",paraId:19,tocIndex:10},{value:"userId",paraId:19,tocIndex:10},{value:"Only in ",paraId:19,tocIndex:10},{value:"response",paraId:19,tocIndex:10},{value:"method",paraId:19,tocIndex:10},{value:"Request method",paraId:19,tocIndex:10},{value:"path",paraId:19,tocIndex:10},{value:"Request path",paraId:19,tocIndex:10},{value:"req",paraId:19,tocIndex:10},{value:" / ",paraId:19,tocIndex:10},{value:"res",paraId:19,tocIndex:10},{value:"Request/Response content",paraId:19,tocIndex:10},{value:"action",paraId:19,tocIndex:10},{value:"Requested resources and parameters",paraId:19,tocIndex:10},{value:"status",paraId:19,tocIndex:10},{value:"Response status code",paraId:19,tocIndex:10},{value:"cost",paraId:19,tocIndex:10},{value:"Request time",paraId:19,tocIndex:10},{value:"app",paraId:19,tocIndex:10},{value:"Current application name",paraId:19,tocIndex:10},{value:"reqId",paraId:19,tocIndex:10},{value:"Request ID",paraId:19,tocIndex:10},{value:"reqId",paraId:20},{value:" will be carried to the front end via the ",paraId:20},{value:"X-Request-Id",paraId:20},{value:" response header.",paraId:20},{value:"system_YYYY-MM-DD.log",paraId:21,tocIndex:11},{value:", application, middleware, plugins, and other system operation logs, ",paraId:21,tocIndex:11},{value:"error",paraId:21,tocIndex:11},{value:" level logs will be printed separately to ",paraId:21,tocIndex:11},{value:"system_error_YYYY-MM-DD.log",paraId:21,tocIndex:11},{value:".",paraId:21,tocIndex:11},{value:"Field",paraId:22,tocIndex:11},{value:"Description",paraId:22,tocIndex:11},{value:"level",paraId:22,tocIndex:11},{value:"Log level",paraId:22,tocIndex:11},{value:"timestamp",paraId:22,tocIndex:11},{value:"Log print time ",paraId:22,tocIndex:11},{value:"YYYY-MM-DD hh:mm:ss",paraId:22,tocIndex:11},{value:"message",paraId:22,tocIndex:11},{value:"Log message",paraId:22,tocIndex:11},{value:"module",paraId:22,tocIndex:11},{value:"Module",paraId:22,tocIndex:11},{value:"submodule",paraId:22,tocIndex:11},{value:"Submodule",paraId:22,tocIndex:11},{value:"method",paraId:22,tocIndex:11},{value:"Called method",paraId:22,tocIndex:11},{value:"meta",paraId:22,tocIndex:11},{value:"Other related information, JSON format",paraId:22,tocIndex:11},{value:"app",paraId:22,tocIndex:11},{value:"Current application name",paraId:22,tocIndex:11},{value:"reqId",paraId:22,tocIndex:11},{value:"Request ID",paraId:22,tocIndex:11},{value:"sql_YYYY-MM-DD.log",paraId:23,tocIndex:12},{value:", database SQL execution logs. ",paraId:23,tocIndex:12},{value:"INSERT INTO",paraId:23,tocIndex:12},{value:" statements are limited to the first 2000 characters.",paraId:23,tocIndex:12},{value:"Field",paraId:24,tocIndex:12},{value:"Description",paraId:24,tocIndex:12},{value:"level",paraId:24,tocIndex:12},{value:"Log level",paraId:24,tocIndex:12},{value:"timestamp",paraId:24,tocIndex:12},{value:"Log print time ",paraId:24,tocIndex:12},{value:"YYYY-MM-DD hh:mm:ss",paraId:24,tocIndex:12},{value:"sql",paraId:24,tocIndex:12},{value:"SQL statement",paraId:24,tocIndex:12},{value:"app",paraId:24,tocIndex:12},{value:"Current application name",paraId:24,tocIndex:12},{value:"reqId",paraId:24,tocIndex:12},{value:"Request ID",paraId:24,tocIndex:12},{value:"Navigate to the log management page.",paraId:25},{value:"Select the log files you wish to download.",paraId:25},{value:"Click the download button.",paraId:25},{value:"Plugin Development - Server - Logging",paraId:26,tocIndex:14},{value:"API Reference - @nocobase/logger",paraId:27,tocIndex:14}],FZ={},BZ={title:"Mobile",toc:"menu",filename:"docs/en-US/handbook/mobile/index.md",lastUpdated:173254844e4,description:"This plugin facilitates the configuration of mobile pages, leveraging a core framework built on Ant Design Mobile. It offers a variety of extension points and supports the integration of specific desktop blocks."},jZ=[{id:"mobile",depth:1,title:"Mobile"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-manual",depth:2,title:"User Manual"},{id:"ui-configuration-interface",depth:3,title:"UI Configuration Interface"},{id:"tab-bar",depth:3,title:"Tab Bar"},{id:"adding-blocks",depth:3,title:"Adding Blocks"},{id:"page-configuration",depth:3,title:"Page Configuration"},{id:"page-tabs",depth:3,title:"Page Tabs"},{id:"sub-pages",depth:3,title:"Sub-Pages"},{id:"filtering",depth:3,title:"Filtering"},{id:"configure-menu-access-permissions",depth:3,title:"Configure menu access permissions"},{id:"development-guide",depth:2,title:"Development Guide"}],HZ=[{value:"This plugin facilitates the configuration of mobile pages, leveraging a core framework built on Ant Design Mobile. It offers a variety of extension points and supports the integration of specific desktop blocks.",paraId:0,tocIndex:1},{value:"The older ",paraId:1},{value:"plugin-mobile-client",paraId:1},{value:" has been deprecated. Starting from version v1.3, it is recommended to transition to ",paraId:1},{value:"plugin-mobile",paraId:1},{value:". These two plugins are incompatible, so the new version will necessitate a complete reconfiguration of mobile settings.",paraId:1},{value:"This plugin comes pre-installed but requires activation to function.",paraId:2,tocIndex:2},{value:"NocoBase provides a specialized UI configuration interface tailored for mobile use.",paraId:3,tocIndex:4},{value:"Supports the addition of two types: links and pages.",paraId:4,tocIndex:5},{value:"The following desktop blocks can currently be added:",paraId:5,tocIndex:6},{value:"On mobile devices, pop-up actions open as sub-pages with swipe-back functionality.",paraId:6,tocIndex:9},{value:` + `,paraId:7},{value:"Filtering utilizes a ",paraId:8,tocIndex:10},{value:"Popup",paraId:8,tocIndex:10},{value:" interaction method.",paraId:8,tocIndex:10},{value:"You can configure menu access permissions just like on the desktop side, as shown below (the mobile plugin must be enabled first):",paraId:9,tocIndex:11},{value:"Currently supported extension points include:",paraId:10,tocIndex:12}],WZ={},$Z={title:"Variables",toc:"menu",filename:"docs/en-US/handbook/ui/variables.md",lastUpdated:173254844e4,description:"Variables are a set of tokens used to identify a value in the current context. They can be used in scenarios such as configuration block data scope, field default values, linkage rules, workflows, etc."},GZ=[{id:"variables",depth:1,title:"Variables"},{id:"introduction",depth:2,title:"Introduction"},{id:"currently-supported-variables",depth:2,title:"Currently Supported Variables"},{id:"current-user",depth:3,title:"Current user"},{id:"current-role",depth:3,title:"Current Role"},{id:"current-form",depth:3,title:"Current form"},{id:"linkage-rules-of-the-current-form",depth:4,title:"Linkage rules of the current form"},{id:"default-values-for-form-fields-only-valid-when-adding-new-data",depth:4,title:"Default values for form fields (only valid when adding new data)"},{id:"data-scope-settings-for-association-fields",depth:4,title:"Data scope settings for association fields"},{id:"assign-field-values-configuration-for-submit-actions",depth:4,title:"Assign field values configuration for submit actions"},{id:"current-object",depth:3,title:"Current object"},{id:"default-values-for-subfields",depth:4,title:"Default values for subfields"},{id:"data-scope-for-sub-association-fields",depth:4,title:"Data scope for sub-association fields"},{id:"parent-object",depth:3,title:"Parent object"},{id:"current-record",depth:3,title:"Current record"},{id:"row-action-linkage-rules",depth:4,title:"Row Action Linkage Rules"},{id:"current-popup-record",depth:3,title:"Current popup record"},{id:"configuring-data-scope-for-blocks",depth:4,title:"Configuring data scope for blocks"},{id:"configuring-data-scope-for-association-fields",depth:4,title:"Configuring data scope for association fields"},{id:"configuring-default-values-for-fields-form-for-adding-data",depth:4,title:"Configuring default values for fields (form for adding data)"},{id:"configuring-linkage-rules-for-actions",depth:4,title:"Configuring linkage rules for actions"},{id:"assign-field-values-configuration-for-form-submit-actions",depth:4,title:"Assign field values configuration for form submit actions"},{id:"table-select-record",depth:3,title:"Table Select Record"},{id:"the-default-value-of-the-form-field-for-the-add-record-action",depth:4,title:"The default value of the form field for the Add record action"},{id:"parent-record-deprecated",depth:3,title:"Parent record (Deprecated)"},{id:"date-variables",depth:3,title:"Date variables"},{id:"url-search-params",depth:3,title:"URL search params"},{id:"api-token",depth:3,title:"API token"}],VZ=[{value:"Variables are a set of tokens used to identify a value in the current context. They can be used in scenarios such as configuration block data scope, field default values, linkage rules, workflows, etc.",paraId:0,tocIndex:1},{value:"Represents the data of the currently logged-in user.",paraId:1,tocIndex:3},{value:"Represents the role identifier (role name) of the currently logged-in user.",paraId:2,tocIndex:4},{value:"The value of the current form, only used in form blocks. It is used in the following scenarios:",paraId:3,tocIndex:5},{value:"Linkage rules of the current form",paraId:4,tocIndex:5},{value:"Default values for form fields (only valid when adding new data)",paraId:4,tocIndex:5},{value:"Data scope settings for association fields",paraId:4,tocIndex:5},{value:"Assign field values configuration for submit actions",paraId:4,tocIndex:5},{value:"Used to handle linkages between relationships, for example:",paraId:5,tocIndex:8},{value:"Currently only used for field configuration in subforms and subtables of form blocks, representing the value of each item:",paraId:6,tocIndex:10},{value:"Default values for subfields",paraId:7,tocIndex:10},{value:"Data scope for sub-association fields",paraId:7,tocIndex:10},{value:'Similar to the "Current object", it represents the parent object of the current object. Supported in NocoBase v1.3.34-beta and above.',paraId:8,tocIndex:13},{value:'A record refers to a row in a collection, with each row representing a record. The "Current record" variable is used in the "Row Action Linkage Rules" of display blocks.',paraId:9,tocIndex:14},{value:"Popup actions play a very important role in the NocoBase interface configuration.",paraId:10,tocIndex:16},{value:'Row action popup: Each popup has a "Current popup record" variable, representing the current row record.',paraId:11,tocIndex:16},{value:'Association field popup: Each popup has a "Current popup record" variable, representing the clicked relationship record.',paraId:11,tocIndex:16},{value:'The blocks in the popup can use the "Current popup record" variable, with the following use cases:',paraId:12,tocIndex:16},{value:"Configuring data scope for blocks",paraId:13,tocIndex:16},{value:"Configuring data scope for association fields",paraId:13,tocIndex:16},{value:"Configuring default values for fields (form for adding data)",paraId:13,tocIndex:16},{value:"Configuring linkage rules for actions",paraId:13,tocIndex:16},{value:"Assign field values configuration for form submit actions",paraId:13,tocIndex:16},{value:"Default values for form fields that are currently only used for the Add record action for a table block",paraId:14,tocIndex:22},{value:"Only used in association blocks, representing the source record of the association data.",paraId:15,tocIndex:24},{value:'"Parent record" is deprecated, it is recommended to use the equivalent "Current popup record" instead.',paraId:16},{value:"Related variables include:",paraId:17,tocIndex:25},{value:"Current time",paraId:18,tocIndex:25},{value:"Yesterday",paraId:18,tocIndex:25},{value:"Today",paraId:18,tocIndex:25},{value:"Tomorrow",paraId:18,tocIndex:25},{value:"Last week",paraId:18,tocIndex:25},{value:"This week",paraId:18,tocIndex:25},{value:"Next week",paraId:18,tocIndex:25},{value:"Last month",paraId:18,tocIndex:25},{value:"This month",paraId:18,tocIndex:25},{value:"Next month",paraId:18,tocIndex:25},{value:"Last quarter",paraId:18,tocIndex:25},{value:"This quarter",paraId:18,tocIndex:25},{value:"Next quarter",paraId:18,tocIndex:25},{value:"Last year",paraId:18,tocIndex:25},{value:"This year",paraId:18,tocIndex:25},{value:"Next year",paraId:18,tocIndex:25},{value:"Last 7 days",paraId:18,tocIndex:25},{value:"Next 7 days",paraId:18,tocIndex:25},{value:"Last 30 days",paraId:18,tocIndex:25},{value:"Next 30 days",paraId:18,tocIndex:25},{value:"Last 90 days",paraId:18,tocIndex:25},{value:"Next 90 days",paraId:18,tocIndex:25},{value:"Except for the Current time which is a moment (string), other date variables are time periods (arrays). Currently, time periods can only be used in data scope and cannot be used in field default values.",paraId:19},{value:"Related use cases include:",paraId:20},{value:"Date field condition settings for block data scope",paraId:21},{value:"Date field condition settings for association field data scopes",paraId:21},{value:"Date field condition settings for action linkage rules",paraId:21},{value:"Date field default value settings",paraId:21},{value:"This variable represents the search parameters in the current page URL. This variable is only available when there is a query string in the page URL. It is more convenient to use it together with ",paraId:22,tocIndex:26},{value:"Link",paraId:23,tocIndex:26},{value:".",paraId:22,tocIndex:26},{value:"This variable's value is a string that serves as a credential for accessing the NocoBase API. It can be used to authenticate the user's identity.",paraId:24,tocIndex:27}],KZ={},ZZ={title:"Menus",toc:"menu",filename:"docs/en-US/manual/ui/menus/index.md",lastUpdated:173254844e4,description:"Menus are used to organize pages and external links. In NocoBase's default page layout template, menus are located on the top and left side. In this case, the top side is the first level menu, and the left side is the second level and infinite levels of submenus."},YZ=[{id:"menus",depth:1,title:"Menus"},{id:"menu-item-types",depth:2,title:"Menu Item Types"},{id:"group",depth:3,title:"Group"},{id:"page",depth:3,title:"Page"},{id:"link",depth:3,title:"Link"},{id:"configure-menu",depth:2,title:"Configure Menu"},{id:"menu-item-configuration",depth:3,title:"Menu Item Configuration"}],QZ=[{value:"Menus are used to organize pages and external links. In NocoBase's default page layout template, menus are located on the top and left side. In this case, the top side is the first level menu, and the left side is the second level and infinite levels of submenus.",paraId:0,tocIndex:0},{value:"NocoBase has three built-in menu item types:",paraId:1,tocIndex:1},{value:"Group",paraId:2,tocIndex:1},{value:"Page",paraId:2,tocIndex:1},{value:"Link",paraId:2,tocIndex:1},{value:'"Group" is used to group menu items, which can be on the top or left side. Within a group, you can continue to create groups, i.e. the menu can be infinitely hierarchical.',paraId:3,tocIndex:2},{value:"Page can be used as container for blocks, holding a wide variety of blocks. (See [pages and popups](. /pages/index.md) )",paraId:4,tocIndex:3},{value:"Can be used to jump to third-party URLs",paraId:5,tocIndex:4},{value:"Once you switch into UI Editor mode, there are two icons in the upper right corner of the menu item:",paraId:6,tocIndex:5},{value:"Drag and drop to move",paraId:7,tocIndex:5},{value:"Menu Item Configuration",paraId:7,tocIndex:5},{value:"Edit: includes menu item title, icon, etc.",paraId:8,tocIndex:6},{value:'Move to: besides drag and drop move, you can also move the menu item quickly by "Move to", you can move the menu item in front of, behind or inside of other menu items.',paraId:8,tocIndex:6},{value:"Insert before",paraId:8,tocIndex:6},{value:"Insert after",paraId:8,tocIndex:6},{value:"Insert inner (group type only)",paraId:8,tocIndex:6},{value:"Delete",paraId:8,tocIndex:6}],JZ={},XZ={title:"Page & pupup",toc:"menu",filename:"docs/en-US/manual/ui/pages/index.md",lastUpdated:173254844e4,description:"NocoBase's pages and popups (dialog, drawer) can be used as containers for blocks; they are like a canvas on which various blocks can be freely placed."},eY=[{id:"page--pupup",depth:1,title:"Page & pupup"},{id:"pages",depth:2,title:"Pages"},{id:"header",depth:3,title:"Header"},{id:"page-title",depth:4,title:"Page Title"},{id:"tabs",depth:4,title:"Tabs"},{id:"block-container",depth:3,title:"Block Container"},{id:"popup",depth:2,title:"Popup"}],aY=[{value:"NocoBase's pages and popups (dialog, drawer) can be used as containers for blocks; they are like a canvas on which various blocks can be freely placed.",paraId:0,tocIndex:0},{value:"After creating a page by [menu](. /menus/index.md) , you can see that an empty page consists of the following two parts:",paraId:1,tocIndex:1},{value:`header +`,paraId:2,tocIndex:1},{value:"page title",paraId:3,tocIndex:1},{value:"tab",paraId:3,tocIndex:1},{value:"block container",paraId:2,tocIndex:1},{value:"Hover your mouse over the configuration item icon at the top right of the page to see the page configuration item:",paraId:4,tocIndex:1},{value:"Configurable items include:",paraId:5,tocIndex:1},{value:"Enable page header: used to control whether to display the header or not;",paraId:6,tocIndex:1},{value:"Display page title: whether to show the page title in the header;",paraId:6,tocIndex:1},{value:"Edit page title: the default page title is the menu item title, which can be customized;",paraId:6,tocIndex:1},{value:"Enable page tabs: off by default, you can add multiple tabs when enabled.",paraId:6,tocIndex:1},{value:"Usually, we need to enable the header area for displaying page title, tabs. There are also cases where you don't want to enable it, for example, when we create a Dashbodrd page and the first level menu is a good representation of the content of that page, in this case we can disable the header and only show the blocks within the page.",paraId:7,tocIndex:2},{value:`The default page title is the name of the menu item, which can be changed by clicking "Edit page title". As with the header, there are times when we don't need to show the page title, but only the tabs, in which case the title can be turned off.`,paraId:8,tocIndex:3},{value:"When there is too much content in a page, or when it is suitable to organize it into several separate parts, we can enable tabs, each tab is a separate block container. In the image below, we have added 3 tabs to the orders page to display all orders, completed orders, and refunded orders. Hover your mouse over the tab titles and you can see the Drag and Configure Items buttons in the upper right corner.",paraId:9,tocIndex:4},{value:'You can add an unlimited number of blocks to your page by clicking "Add block" (see [Blocks](. /blocks/index.md)).',paraId:10,tocIndex:5},{value:"After adding multiple blocks, you can drag and drop any layout of the blocks to adjust the layout to achieve the most suitable effect by using the dragbutton at the upper right corner of the block.",paraId:11,tocIndex:5},{value:"Currently, there are two kinds of popup windows in NocoBase: dialogs and drawers. Like pages, dialogs and drawers can be used as containers for blocks, and multiple tabs can be added to them. They are opened by actions such as Add, Edit, View, etc.",paraId:12,tocIndex:6}],tY={},nY={title:"\u5DE5\u4F5C\u6D41",toc:"menu",filename:"docs/en-US/manual/workflow/index.md",lastUpdated:173254844e4,description:"\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u662F\u4E00\u4E2A\u7F16\u6392\u548C\u914D\u7F6E\u81EA\u52A8\u5316\u6D41\u7A0B\u7684\u5F3A\u5927\u5DE5\u5177\uFF0C\u4E1A\u754C\u901A\u5E38\u79F0\u4E3A\u4E1A\u52A1\u6D41\u7A0B\u7BA1\u7406\uFF08BPM\uFF09\u5DE5\u5177\u3002\u5E38\u7528\u4E8E\u57FA\u4E8E\u6570\u636E\u6A21\u578B\u7684\u4E1A\u52A1\u6D41\u7A0B\u8BBE\u8BA1\u4E0E\u7F16\u6392\uFF0C\u901A\u8FC7\u89E6\u53D1\u6761\u4EF6\u4E0E\u6267\u884C\u6D41\u7A0B\u8282\u70B9\u7F16\u6392\u5B9E\u73B0\u4E1A\u52A1\u6D41\u7A0B\u7684\u81EA\u52A8\u5316\u6D41\u8F6C\u3002"},oY=[{id:"\u5DE5\u4F5C\u6D41",depth:1,title:"\u5DE5\u4F5C\u6D41"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u6DF1\u5165\u4E86\u89E3",depth:2,title:"\u6DF1\u5165\u4E86\u89E3"}],rY=[{value:"\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u662F\u4E00\u4E2A\u7F16\u6392\u548C\u914D\u7F6E\u81EA\u52A8\u5316\u6D41\u7A0B\u7684\u5F3A\u5927\u5DE5\u5177\uFF0C\u4E1A\u754C\u901A\u5E38\u79F0\u4E3A\u4E1A\u52A1\u6D41\u7A0B\u7BA1\u7406\uFF08BPM\uFF09\u5DE5\u5177\u3002\u5E38\u7528\u4E8E\u57FA\u4E8E\u6570\u636E\u6A21\u578B\u7684\u4E1A\u52A1\u6D41\u7A0B\u8BBE\u8BA1\u4E0E\u7F16\u6392\uFF0C\u901A\u8FC7\u89E6\u53D1\u6761\u4EF6\u4E0E\u6267\u884C\u6D41\u7A0B\u8282\u70B9\u7F16\u6392\u5B9E\u73B0\u4E1A\u52A1\u6D41\u7A0B\u7684\u81EA\u52A8\u5316\u6D41\u8F6C\u3002",paraId:0,tocIndex:1},{value:"\u5728 NocoBase \u5E94\u7528\u4E2D\uFF0C\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u9488\u5BF9\u65E0\u4EE3\u7801\u573A\u666F\u8BBE\u8BA1\uFF0C\u4F7F\u7528\u8BE5\u63D2\u4EF6\u53EF\u4EE5\u5728 UI \u754C\u9762\u4E0A\u5B8C\u6210\u5927\u90E8\u5206\u5E38\u89C1\u4E1A\u52A1\u7684\u7F16\u6392\u4E0E\u6570\u636E\u5904\u7406\uFF0C\u4EE5\u52A8\u6001\u5730\u5B9E\u73B0\u7CFB\u7EDF\u4E2D\u7684\u4E1A\u52A1\u6D41\u7A0B\u53D8\u66F4\u3002",paraId:1,tocIndex:1},{value:"\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u901A\u8FC7\u4E00\u4E2A\u89E6\u53D1\u5668\u4E0E\u82E5\u5E72\u8282\u70B9\u7F16\u6392\u800C\u6210\uFF0C\u901A\u8FC7\u6BCF\u4E2A\u8282\u70B9\u7684\u7279\u5B9A\u529F\u80FD\uFF0C\u63CF\u8FF0\u7CFB\u7EDF\u4E2D\u5BF9\u5E94\u4E8B\u4EF6\u4EA7\u751F\u540E\u9700\u8981\u5904\u7406\u7684\u4E1A\u52A1\u903B\u8F91\u3002\u4E00\u4E2A\u5178\u578B\u7684\u5DE5\u4F5C\u6D41\u5982\u4E0B\u56FE\u6240\u793A\uFF1A",paraId:2,tocIndex:1},{value:"\u4EE5\u4E0A\u5DE5\u4F5C\u6D41\u7684\u529F\u80FD\u662F\uFF1A\u5F53\u7528\u6237\u63D0\u4EA4\u4E00\u4E2A\u8BA2\u5355\u8868\u5355\u540E\uFF0C\u7CFB\u7EDF\u81EA\u52A8\u68C0\u67E5\u8BA2\u5355\u4E2D\u7684\u5546\u54C1\u5E93\u5B58\uFF0C\u5982\u679C\u5E93\u5B58\u5145\u8DB3\uFF0C\u5219\u6263\u51CF\u5E93\u5B58\uFF0C\u5426\u5219\u8BA2\u5355\u66F4\u65B0\u4E3A\u65E0\u6548\u3002",paraId:3,tocIndex:1},{value:"\u4ECE\u66F4\u901A\u7528\u7684\u89D2\u5EA6\uFF0C\u5DE5\u4F5C\u6D41\u5728 NocoBase \u5E94\u7528\u4E2D\u53EF\u4EE5\u89E3\u51B3\u51E0\u5927\u573A\u666F\u7684\u95EE\u9898\uFF1A",paraId:4,tocIndex:1},{value:"\u6570\u636E\u81EA\u52A8\u5316\u5904\u7406\uFF1A\u6BD4\u5982\u5728\u6570\u636E\u8868\u4E2D\u65B0\u589E\u4E00\u6761\u6570\u636E\u540E\uFF0C\u81EA\u52A8\u6309\u9884\u5B9A\u6D41\u7A0B\u5904\u7406\u6570\u636E\uFF0C\u5982\u8BA1\u7B97\u89E6\u53D1\u6570\u636E\u540E\u66F4\u65B0\u5173\u8054\u6570\u636E\u7B49\u3002",paraId:5,tocIndex:1},{value:"\u4EBA\u5DE5\u4ECB\u5165\u7684\u4E1A\u52A1\u6D41\u7A0B\uFF1A\u5F53\u4E1A\u52A1\u6D41\u7A0B\u4E0D\u80FD\u5B8C\u5168\u81EA\u52A8\u5316\u51B3\u7B56\u65F6\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4EBA\u5DE5\u7C7B\u578B\u7684\u8282\u70B9\uFF0C\u5C06\u90E8\u5206\u51B3\u7B56\u6743\u4EA4\u7ED9\u4EBA\u5DE5\u5904\u7406\uFF0C\u6BD4\u5982\u5BA1\u6279\u3001\u590D\u6838\u7B49\u3002\u4EBA\u5DE5\u5904\u7406\u7684\u7ED3\u679C\u63D0\u4EA4\u4EE5\u540E\uFF0C\u518D\u7EE7\u7EED\u6267\u884C\u540E\u7EED\u6D41\u7A0B\u3002",paraId:5,tocIndex:1},{value:"\u4E0E\u5916\u90E8\u7CFB\u7EDF\u8FDE\u63A5\uFF1A\u53EF\u4EE5\u901A\u8FC7\u8BF7\u6C42\u8282\u70B9\uFF08\u6216\u6269\u5C55\u5404\u7C7B\u8C03\u7528\u7B2C\u4E09\u65B9\u529F\u80FD\u7684\u8282\u70B9\uFF09\u8C03\u7528\u5916\u90E8\u7CFB\u7EDF\u7684 API \u63A5\u53E3\uFF0C\u5B9E\u73B0\u548C\u5916\u90E8\u7CFB\u7EDF\u7684\u6570\u636E\u4EA4\u4E92\u3002",paraId:5,tocIndex:1},{value:"\u5DE5\u4F5C\u6D41\u662F NocoBase \u7684\u5185\u7F6E\u63D2\u4EF6\uFF0C\u65E0\u9700\u989D\u5916\u5B89\u88C5\u3002",paraId:6,tocIndex:2},{value:"\u4F7F\u7528\u624B\u518C",paraId:7,tocIndex:3},{value:"\u5F00\u53D1\u6307\u5357",paraId:8,tocIndex:3}],dY={},iY={title:"\u5FEB\u901F\u5165\u95E8",toc:"menu",filename:"docs/en-US/manual/workflow/start.md",lastUpdated:173254844e4,description:"\u4ECE\u9876\u90E8\u83DC\u5355\u680F\u7684\u63D2\u4EF6\u914D\u7F6E\u83DC\u5355\u8FDB\u5165\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u7684\u7BA1\u7406\u9875\u9762\uFF1A"},lY=[{id:"\u5FEB\u901F\u5165\u95E8",depth:1,title:"\u5FEB\u901F\u5165\u95E8"},{id:"\u914D\u7F6E\u4E00\u4E2A\u5DE5\u4F5C\u6D41",depth:2,title:"\u914D\u7F6E\u4E00\u4E2A\u5DE5\u4F5C\u6D41"},{id:"\u89E6\u53D1\u5DE5\u4F5C\u6D41",depth:2,title:"\u89E6\u53D1\u5DE5\u4F5C\u6D41"},{id:"\u67E5\u770B\u6267\u884C\u5386\u53F2",depth:2,title:"\u67E5\u770B\u6267\u884C\u5386\u53F2"},{id:"\u5C0F\u7ED3",depth:2,title:"\u5C0F\u7ED3"}],cY=[{value:"\u4ECE\u9876\u90E8\u83DC\u5355\u680F\u7684\u63D2\u4EF6\u914D\u7F6E\u83DC\u5355\u8FDB\u5165\u5DE5\u4F5C\u6D41\u63D2\u4EF6\u7684\u7BA1\u7406\u9875\u9762\uFF1A",paraId:0,tocIndex:1},{value:"\u7BA1\u7406\u754C\u9762\u4E2D\u4F1A\u5217\u51FA\u6240\u6709\u5DF2\u521B\u5EFA\u7684\u5DE5\u4F5C\u6D41\uFF1A",paraId:1,tocIndex:1},{value:"\u70B9\u51FB\u201C\u65B0\u5EFA\u201D\u6309\u94AE\uFF0C\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684\u5DE5\u4F5C\u6D41\uFF0C\u9009\u62E9\u6570\u636E\u8868\u4E8B\u4EF6\uFF1A",paraId:2,tocIndex:1},{value:"\u70B9\u51FB\u5217\u8868\u4E2D\u7684\u201C\u914D\u7F6E\u201D\u94FE\u63A5\uFF0C\u8FDB\u5165\u5DE5\u4F5C\u6D41\u914D\u7F6E\u754C\u9762\uFF1A",paraId:3,tocIndex:1},{value:"\u7136\u540E\u70B9\u51FB\u89E6\u53D1\u5668\u7684\u5361\u7247\uFF0C\u6253\u5F00\u89E6\u53D1\u5668\u914D\u7F6E\u62BD\u5C49\uFF0C\u9009\u62E9\u4E00\u5F20\u4E4B\u524D\u521B\u5EFA\u7684\u6570\u636E\u8868\uFF08\u4F8B\u5982\u201C\u6587\u7AE0\u201D\u8868\uFF09\uFF0C\u89E6\u53D1\u65F6\u673A\u9879\u9009\u62E9\u201C\u65B0\u589E\u6570\u636E\u540E\u201D\u89E6\u53D1\uFF0C\u70B9\u51FB\u201C\u4FDD\u5B58\u201D\u6309\u94AE\uFF0C\u5B8C\u6210\u89E6\u53D1\u5668\u7684\u914D\u7F6E\uFF1A",paraId:4,tocIndex:1},{value:"\u63A5\u4E0B\u6765\u6211\u4EEC\u53EF\u4EE5\u70B9\u51FB\u6D41\u7A0B\u4E2D\u7684\u52A0\u53F7\u6309\u94AE\u4E3A\u6D41\u7A0B\u589E\u52A0\u4E00\u4E2A\u8282\u70B9\uFF0C\u4F8B\u5982\u9009\u62E9\u4E00\u4E2A\u8FD0\u7B97\u8282\u70B9\uFF0C\u7528\u4E8E\u5C06\u89E6\u53D1\u5668\u4E2D\u7684\u6570\u636E\u7684\u201C\u6807\u9898\u201D\u5B57\u6BB5\u4E0E\u201CID\u201D\u5B57\u6BB5\u8FDB\u884C\u62FC\u63A5\u8BA1\u7B97\uFF1A",paraId:5,tocIndex:1},{value:"\u70B9\u51FB\u8282\u70B9\u5361\u7247\u6253\u5F00\u8282\u70B9\u914D\u7F6E\u62BD\u5C49\uFF0C\u4F7F\u7528 Formula.js \u63D0\u4F9B\u7684\u8FD0\u7B97\u51FD\u6570 ",paraId:6,tocIndex:1},{value:"CONCATENATE",paraId:6,tocIndex:1},{value:"\uFF0C\u62FC\u63A5\u201C\u6807\u9898\u201D\u4E0E\u201CID\u201D\u5B57\u6BB5\uFF0C\u4E24\u4E2A\u5B57\u6BB5\u901A\u8FC7\u53D8\u91CF\u9009\u62E9\u5668\u63D2\u5165\uFF1A",paraId:6,tocIndex:1},{value:"\u4E4B\u540E\u518D\u521B\u5EFA\u4E00\u4E2A\u66F4\u65B0\u6570\u636E\u8282\u70B9\uFF0C\u7528\u4E8E\u5C06\u7ED3\u679C\u4FDD\u5B58\u5230\u201C\u6807\u9898\u201D\u5B57\u6BB5\u4E2D\uFF1A",paraId:7,tocIndex:1},{value:"\u540C\u6837\u7684\u70B9\u51FB\u5361\u7247\u6253\u5F00\u66F4\u65B0\u6570\u636E\u8282\u70B9\u7684\u914D\u7F6E\u62BD\u5C49\uFF0C\u9009\u62E9\u201C\u6587\u7AE0\u201D\u8868\uFF0C\u66F4\u65B0\u7684\u6570\u636E ID \u9009\u62E9\u89E6\u53D1\u5668\u4E2D\u7684\u6570\u636E ID\uFF0C\u66F4\u65B0\u7684\u6570\u636E\u9879\u9009\u62E9\u201C\u6807\u9898\u201D\uFF0C\u66F4\u65B0\u7684\u6570\u636E\u503C\u9009\u62E9\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\uFF1A",paraId:8,tocIndex:1},{value:"\u6700\u540E\u518D\u70B9\u51FB\u53F3\u4E0A\u89D2\u5DE5\u5177\u680F\u91CC\u7684\u201C\u542F\u7528\u201D/\u201C\u505C\u7528\u201D\u5F00\u5173\uFF0C\u5C06\u5DE5\u4F5C\u6D41\u5207\u6362\u81F3\u542F\u7528\u72B6\u6001\uFF0C\u8FD9\u6837\u5DE5\u4F5C\u6D41\u5C31\u53EF\u4EE5\u88AB\u89E6\u53D1\u6267\u884C\u4E86\u3002",paraId:9,tocIndex:1},{value:"\u56DE\u5230\u7CFB\u7EDF\u4E3B\u754C\u9762\uFF0C\u901A\u8FC7\u6587\u7AE0\u533A\u5757\u521B\u5EFA\u4E00\u7BC7\u6587\u7AE0\uFF0C\u586B\u5165\u6587\u7AE0\u6807\u9898\uFF1A",paraId:10,tocIndex:2},{value:"\u63D0\u4EA4\u540E\u5237\u65B0\u533A\u5757\u540E\u53EF\u4EE5\u770B\u5230\u6587\u7AE0\u6807\u9898\u88AB\u81EA\u52A8\u66F4\u65B0\u4E3A\u201C\u6587\u7AE0\u6807\u9898 + \u6587\u7AE0 ID\u201D\u7684\u5F62\u5F0F\uFF1A",paraId:11,tocIndex:2},{value:"\u7531\u4E8E\u6570\u636E\u8868\u89E6\u53D1\u7684\u5DE5\u4F5C\u6D41\u662F\u5F02\u6B65\u6267\u884C\u7684\uFF0C\u6240\u4EE5\u5728\u63D0\u4EA4\u6570\u636E\u540E\u7684\u754C\u9762\u4E2D\u65E0\u6CD5\u9A6C\u4E0A\u770B\u5230\u6570\u636E\u66F4\u65B0\uFF0C\u4F46\u7247\u523B\u4E4B\u540E\u5237\u65B0\u9875\u9762\u6216\u533A\u5757\u540E\u5373\u53EF\u770B\u5230\u66F4\u65B0\u7684\u5185\u5BB9\u3002",paraId:12},{value:"\u521A\u624D\u7684\u5DE5\u4F5C\u6D41\u5DF2\u7ECF\u6210\u529F\u89E6\u53D1\u6267\u884C\u4E86\u4E00\u6B21\uFF0C\u6211\u4EEC\u53EF\u4EE5\u56DE\u5230\u5DE5\u4F5C\u6D41\u7684\u7BA1\u7406\u754C\u9762\u4E2D\u67E5\u770B\u5230\u5BF9\u5E94\u7684\u6267\u884C\u5386\u53F2\uFF1A",paraId:13,tocIndex:3},{value:"\u5DE5\u4F5C\u6D41\u5217\u8868\u4E2D\u53EF\u4EE5\u770B\u5230\u8FD9\u4E2A\u5DE5\u4F5C\u6D41\u5DF2\u7ECF\u4EA7\u751F\u4E86\u4E00\u6B21\u6267\u884C\u5386\u53F2\uFF0C\u70B9\u51FB\u6B21\u6570\u7684\u94FE\u63A5\uFF0C\u53EF\u4EE5\u6253\u5F00\u5BF9\u5E94\u5DE5\u4F5C\u6D41\u7684\u6267\u884C\u5386\u53F2\u8BB0\u5F55\uFF1A",paraId:14,tocIndex:3},{value:"\u518D\u70B9\u51FB\u201C\u67E5\u770B\u201D\u94FE\u63A5\u53EF\u4EE5\u8FDB\u5165\u5230\u5F53\u6B21\u6267\u884C\u7684\u8BE6\u60C5\u9875\u9762\uFF0C\u53EF\u4EE5\u770B\u5230\u6BCF\u4E2A\u8282\u70B9\u7684\u6267\u884C\u72B6\u6001\u548C\u7ED3\u679C\u6570\u636E\uFF1A",paraId:15,tocIndex:3},{value:"\u89E6\u53D1\u5668\u7684\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u548C\u8282\u70B9\u6267\u884C\u7684\u7ED3\u679C\u6570\u636E\u90FD\u53EF\u4EE5\u901A\u8FC7\u70B9\u51FB\u5BF9\u5E94\u5361\u7247\u53F3\u4E0A\u89D2\u7684\u72B6\u6001\u6309\u94AE\u6253\u5F00\u67E5\u770B\uFF0C\u6BD4\u5982\u6211\u4EEC\u67E5\u770B\u5176\u4E2D\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\uFF1A",paraId:16,tocIndex:3},{value:"\u53EF\u4EE5\u770B\u5230\u8FD0\u7B97\u8282\u70B9\u7684\u7ED3\u679C\u6570\u636E\u4E2D\u5305\u542B\u4E86\u8FD0\u7B97\u540E\u7684\u6807\u9898\uFF0C\u8FD9\u4E2A\u6807\u9898\u5C31\u662F\u540E\u7EED\u66F4\u65B0\u6570\u636E\u8282\u70B9\u66F4\u65B0\u7684\u6570\u636E\u3002",paraId:17,tocIndex:3},{value:"\u901A\u8FC7\u4E0A\u9762\u7684\u6B65\u9AA4\uFF0C\u6211\u4EEC\u5DF2\u7ECF\u5B8C\u6210\u4E86\u4E00\u4E2A\u7B80\u5355\u7684\u5DE5\u4F5C\u6D41\u7684\u914D\u7F6E\u548C\u89E6\u53D1\uFF0C\u4E5F\u63A5\u89E6\u4E86\u4EE5\u4E0B\u51E0\u4E2A\u57FA\u7840\u6982\u5FF5\uFF1A",paraId:18,tocIndex:4},{value:"\u5DE5\u4F5C\u6D41",paraId:19,tocIndex:4},{value:"\uFF1A\u7528\u4E8E\u5B9A\u4E49\u6D41\u7A0B\u7684\u57FA\u672C\u4FE1\u606F\uFF0C\u5305\u62EC\u540D\u79F0\u3001\u89E6\u53D1\u5668\u7C7B\u578B\u548C\u542F\u7528\u72B6\u6001\u7B49\uFF0C\u53EF\u5728\u5176\u4E2D\u914D\u7F6E\u4EFB\u610F\u591A\u4E2A\u6267\u884C\u8282\u70B9\uFF0C\u662F\u627F\u8F7D\u6D41\u7A0B\u7684\u5B9E\u4F53\u3002",paraId:19,tocIndex:4},{value:"\u89E6\u53D1\u5668",paraId:19,tocIndex:4},{value:"\uFF1A\u6BCF\u4E2A\u5DE5\u4F5C\u6D41\u90FD\u5305\u542B\u4E00\u4E2A\u89E6\u53D1\u5668\uFF0C\u53EF\u914D\u7F6E\u4E3A\u5DE5\u4F5C\u6D41\u88AB\u89E6\u53D1\u7684\u7279\u5B9A\u6761\u4EF6\uFF0C\u662F\u6D41\u7A0B\u7684\u5165\u53E3\u3002",paraId:19,tocIndex:4},{value:"\u8282\u70B9",paraId:19,tocIndex:4},{value:"\uFF1A\u8282\u70B9\u662F\u5DE5\u4F5C\u6D41\u5185\u7684\u6267\u884C\u7279\u5B9A\u64CD\u4F5C\u7684\u6307\u4EE4\u5355\u5143\uFF0C\u5DE5\u4F5C\u6D41\u4E2D\u591A\u4E2A\u8282\u70B9\u4E4B\u95F4\u901A\u8FC7\u4E0A\u4E0B\u6E38\u5173\u7CFB\u7EC4\u6210\u5B8C\u6574\u7684\u6267\u884C\u6D41\u7A0B\u3002",paraId:19,tocIndex:4},{value:"\u6267\u884C\u8BA1\u5212",paraId:19,tocIndex:4},{value:"\uFF1A\u6267\u884C\u8BA1\u5212\u662F\u5DE5\u4F5C\u6D41\u89E6\u53D1\u540E\u7684\u5177\u4F53\u6267\u884C\u5BF9\u8C61\uFF0C\u4E5F\u79F0\u4E3A\u6267\u884C\u8BB0\u5F55\u6216\u6267\u884C\u5386\u53F2\uFF0C\u5305\u542B\u4E86\u6267\u884C\u7684\u72B6\u6001\u3001\u89E6\u53D1\u4E0A\u4E0B\u6587\u6570\u636E\u7B49\u4FE1\u606F\u3002\u5176\u4E2D\u9488\u5BF9\u6BCF\u4E2A\u8282\u70B9\u4E5F\u6709\u5BF9\u5E94\u7684\u6267\u884C\u7ED3\u679C\uFF0C\u5305\u542B\u4E86\u8282\u70B9\u6267\u884C\u540E\u7684\u72B6\u6001\u548C\u7ED3\u679C\u6570\u636E\u4FE1\u606F\u3002",paraId:19,tocIndex:4},{value:"\u66F4\u6DF1\u5165\u7684\u4F7F\u7528\u53EF\u4EE5\u8FDB\u4E00\u6B65\u53C2\u8003\u4EE5\u4E0B\u5185\u5BB9\uFF1A",paraId:20,tocIndex:4},{value:"\u8FDB\u9636\u4F7F\u7528",paraId:21,tocIndex:4},{value:"\u89E6\u53D1\u5668\u4ECB\u7ECD",paraId:22,tocIndex:4},{value:"\u8282\u70B9\u4ECB\u7ECD",paraId:23,tocIndex:4}],sY={},uY={title:"API \u6587\u6863",toc:"menu",filename:"docs/en-US/plugins/api-doc/index.md",lastUpdated:173254844e4,description:"http://localhost:13000/admin/settings/api-doc/documentation"},pY=[{id:"api-\u6587\u6863",depth:1,title:"API \u6587\u6863"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u8BF4\u660E",depth:2,title:"\u4F7F\u7528\u8BF4\u660E"},{id:"\u8BBF\u95EE-api-\u6587\u6863\u9875\u9762",depth:3,title:"\u8BBF\u95EE API \u6587\u6863\u9875\u9762"},{id:"\u6587\u6863\u6982\u89C8",depth:3,title:"\u6587\u6863\u6982\u89C8"},{id:"\u5F00\u53D1\u6307\u5357",depth:2,title:"\u5F00\u53D1\u6307\u5357"},{id:"\u5982\u4F55\u4E3A\u63D2\u4EF6\u7F16\u5199-swagger-\u6587\u6863",depth:3,title:"\u5982\u4F55\u4E3A\u63D2\u4EF6\u7F16\u5199 swagger \u6587\u6863"}],IY=[{value:"http://localhost:13000/admin/settings/api-doc/documentation",paraId:0,tocIndex:4},{value:"\u603B API \u6587\u6863\uFF1A",paraId:1,tocIndex:5},{value:"/api/swagger:get",paraId:1,tocIndex:5},{value:"\u5185\u6838 API \u6587\u6863\uFF1A",paraId:1,tocIndex:5},{value:"/api/swagger:get?ns=core",paraId:1,tocIndex:5},{value:"\u6240\u6709\u63D2\u4EF6 API \u6587\u6863\uFF1A",paraId:1,tocIndex:5},{value:"/api/swagger:get?ns=plugins",paraId:1,tocIndex:5},{value:"\u6BCF\u4E2A\u63D2\u4EF6\u7684\u6587\u6863\uFF1A",paraId:1,tocIndex:5},{value:"/api/swagger:get?ns=plugins/{name}",paraId:1,tocIndex:5},{value:"\u7528\u6237\u81EA\u5B9A\u4E49 collections \u7684 API \u6587\u6863\uFF1A",paraId:1,tocIndex:5},{value:"/api/swagger:get?ns=collections",paraId:1,tocIndex:5},{value:"\u6307\u5B9A ",paraId:1,tocIndex:5},{value:"${collection}",paraId:1,tocIndex:5},{value:" \u53CA\u76F8\u5173 ",paraId:1,tocIndex:5},{value:"${collection}.${association}",paraId:1,tocIndex:5},{value:" \u8D44\u6E90\uFF1A",paraId:1,tocIndex:5},{value:"/api/swagger:get?ns=collections/{name}",paraId:1,tocIndex:5},{value:"\u5728\u63D2\u4EF6 ",paraId:2,tocIndex:7},{value:"src",paraId:2,tocIndex:7},{value:" \u6587\u4EF6\u5939\u91CC\u6DFB\u52A0 ",paraId:2,tocIndex:7},{value:"swagger/index.ts",paraId:2,tocIndex:7},{value:" \u6587\u4EF6\uFF0C\u5185\u5BB9\u5982\u4E0B\uFF1A",paraId:2,tocIndex:7},{value:`export default { info: { title: 'NocoBase API - Auth plugin', }, @@ -17713,7 +17766,7 @@ userId=undefined status=200 cost=14 schemas: {}, }, }; -`,paraId:3,tocIndex:7},{value:"\u8BE6\u7EC6\u7F16\u5199\u89C4\u5219\u8BF7\u53C2\u8003 ",paraId:4,tocIndex:7},{value:"Swagger \u5B98\u65B9\u6587\u6863",paraId:4,tocIndex:7}],_Y={},vY={title:"FAQ",toc:"menu",filename:"docs/en-US/welcome/community/faq.md",lastUpdated:1732240239e3},mY=[{id:"faq",depth:1,title:"FAQ"}],hY=[],fY={},xY={title:"Release",toc:"menu",filename:"docs/en-US/welcome/release/index.md",lastUpdated:1732240239e3},gY=[],bY=[],yY={},wY={title:"ctx.action",toc:"menu",filename:"docs/en-US/api/resourcer/action.md",lastUpdated:1732240239e3,description:"After the resource operation request is parsed by resourceManager.middleware(), some important request parameters are stored in ctx.action for use by subsequent middleware."},kY=[{id:"ctxaction",depth:1,title:"ctx.action"},{id:"overview",depth:2,title:"Overview"},{id:"api",depth:2,title:"API"},{id:"resourcename",depth:3,title:"resourceName"},{id:"actionname",depth:3,title:"actionName"},{id:"sourceid",depth:3,title:"sourceId"},{id:"params",depth:3,title:"params"},{id:"mergeparams",depth:3,title:"mergeParams()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"actionparams",depth:5,title:"ActionParams"},{id:"mergestrategies",depth:5,title:"MergeStrategies"}],SY=[{value:"After the resource operation request is parsed by ",paraId:0,tocIndex:1},{value:"resourceManager.middleware()",paraId:1,tocIndex:1},{value:", some important request parameters are stored in ",paraId:0,tocIndex:1},{value:"ctx.action",paraId:0,tocIndex:1},{value:" for use by subsequent middleware.",paraId:0,tocIndex:1},{value:"ctx.action.resourceName",paraId:2,tocIndex:3},{value:"The name of the resource. It can take two forms:",paraId:3,tocIndex:3},{value:"a",paraId:4,tocIndex:3},{value:" - Operates on resource ",paraId:4,tocIndex:3},{value:"a",paraId:4,tocIndex:3},{value:".",paraId:4,tocIndex:3},{value:"a.b",paraId:4,tocIndex:3},{value:" - Operates on associated object ",paraId:4,tocIndex:3},{value:"b",paraId:4,tocIndex:3},{value:" of resource ",paraId:4,tocIndex:3},{value:"a",paraId:4,tocIndex:3},{value:".",paraId:4,tocIndex:3},{value:"ctx.action.actionName",paraId:5,tocIndex:4},{value:"The name of the action.",paraId:6,tocIndex:4},{value:"ctx.action.sourceId",paraId:7,tocIndex:5},{value:"When the operation object is an associated object of the resource, it represents the primary key value of the corresponding resource. For example: when ",paraId:8,tocIndex:5},{value:"resourceName",paraId:8,tocIndex:5},{value:" is ",paraId:8,tocIndex:5},{value:"a.b",paraId:8,tocIndex:5},{value:", ",paraId:8,tocIndex:5},{value:"sourceId",paraId:8,tocIndex:5},{value:" represents the primary key value of ",paraId:8,tocIndex:5},{value:"a",paraId:8,tocIndex:5},{value:".",paraId:8,tocIndex:5},{value:"Request parameters.",paraId:9,tocIndex:6},{value:"URL parameters can be directly obtained from ",paraId:10,tocIndex:6},{value:"ctx.action.params",paraId:10,tocIndex:6},{value:".",paraId:10,tocIndex:6},{value:`const { filterByTk } = ctx.action.params; +`,paraId:3,tocIndex:7},{value:"\u8BE6\u7EC6\u7F16\u5199\u89C4\u5219\u8BF7\u53C2\u8003 ",paraId:4,tocIndex:7},{value:"Swagger \u5B98\u65B9\u6587\u6863",paraId:4,tocIndex:7}],_Y={},vY={title:"FAQ",toc:"menu",filename:"docs/en-US/welcome/community/faq.md",lastUpdated:173254844e4},mY=[{id:"faq",depth:1,title:"FAQ"}],hY=[],fY={},xY={title:"Release",toc:"menu",filename:"docs/en-US/welcome/release/index.md",lastUpdated:173254844e4},gY=[],bY=[],yY={},wY={title:"ctx.action",toc:"menu",filename:"docs/en-US/api/resourcer/action.md",lastUpdated:173254844e4,description:"After the resource operation request is parsed by resourceManager.middleware(), some important request parameters are stored in ctx.action for use by subsequent middleware."},kY=[{id:"ctxaction",depth:1,title:"ctx.action"},{id:"overview",depth:2,title:"Overview"},{id:"api",depth:2,title:"API"},{id:"resourcename",depth:3,title:"resourceName"},{id:"actionname",depth:3,title:"actionName"},{id:"sourceid",depth:3,title:"sourceId"},{id:"params",depth:3,title:"params"},{id:"mergeparams",depth:3,title:"mergeParams()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"actionparams",depth:5,title:"ActionParams"},{id:"mergestrategies",depth:5,title:"MergeStrategies"}],SY=[{value:"After the resource operation request is parsed by ",paraId:0,tocIndex:1},{value:"resourceManager.middleware()",paraId:1,tocIndex:1},{value:", some important request parameters are stored in ",paraId:0,tocIndex:1},{value:"ctx.action",paraId:0,tocIndex:1},{value:" for use by subsequent middleware.",paraId:0,tocIndex:1},{value:"ctx.action.resourceName",paraId:2,tocIndex:3},{value:"The name of the resource. It can take two forms:",paraId:3,tocIndex:3},{value:"a",paraId:4,tocIndex:3},{value:" - Operates on resource ",paraId:4,tocIndex:3},{value:"a",paraId:4,tocIndex:3},{value:".",paraId:4,tocIndex:3},{value:"a.b",paraId:4,tocIndex:3},{value:" - Operates on associated object ",paraId:4,tocIndex:3},{value:"b",paraId:4,tocIndex:3},{value:" of resource ",paraId:4,tocIndex:3},{value:"a",paraId:4,tocIndex:3},{value:".",paraId:4,tocIndex:3},{value:"ctx.action.actionName",paraId:5,tocIndex:4},{value:"The name of the action.",paraId:6,tocIndex:4},{value:"ctx.action.sourceId",paraId:7,tocIndex:5},{value:"When the operation object is an associated object of the resource, it represents the primary key value of the corresponding resource. For example: when ",paraId:8,tocIndex:5},{value:"resourceName",paraId:8,tocIndex:5},{value:" is ",paraId:8,tocIndex:5},{value:"a.b",paraId:8,tocIndex:5},{value:", ",paraId:8,tocIndex:5},{value:"sourceId",paraId:8,tocIndex:5},{value:" represents the primary key value of ",paraId:8,tocIndex:5},{value:"a",paraId:8,tocIndex:5},{value:".",paraId:8,tocIndex:5},{value:"Request parameters.",paraId:9,tocIndex:6},{value:"URL parameters can be directly obtained from ",paraId:10,tocIndex:6},{value:"ctx.action.params",paraId:10,tocIndex:6},{value:".",paraId:10,tocIndex:6},{value:`const { filterByTk } = ctx.action.params; `,paraId:11,tocIndex:6},{value:"Request body parameters can be obtained using ",paraId:12,tocIndex:6},{value:"ctx.action.params.values",paraId:12,tocIndex:6},{value:".",paraId:12,tocIndex:6},{value:"Combines parameter content with request parameters.",paraId:13,tocIndex:7},{value:`ctx.action.mergeParams( { filter: { @@ -17786,7 +17839,7 @@ export interface MergeStrategies { blacklist: 'intersect', sort: 'overwrite', }; -`,paraId:21,tocIndex:10},{value:"Property",paraId:22,tocIndex:11},{value:"Type",paraId:22,tocIndex:11},{value:"Description",paraId:22,tocIndex:11},{value:"filterByTk",paraId:22,tocIndex:11},{value:"any",paraId:22,tocIndex:11},{value:"The primary key value of the operated resource",paraId:22,tocIndex:11},{value:"filter",paraId:22,tocIndex:11},{value:"Filter",paraId:22,tocIndex:11},{value:"Filtering parameters, refer to ",paraId:22,tocIndex:11},{value:"Filter Operators",paraId:23,tocIndex:11},{value:"fields",paraId:22,tocIndex:11},{value:"string[]",paraId:22,tocIndex:11},{value:"Fields to retrieve",paraId:22,tocIndex:11},{value:"except",paraId:22,tocIndex:11},{value:"string[]",paraId:22,tocIndex:11},{value:"Fields to exclude",paraId:22,tocIndex:11},{value:"appends",paraId:22,tocIndex:11},{value:"string[]",paraId:22,tocIndex:11},{value:"Related fields to append",paraId:22,tocIndex:11},{value:"whitelist",paraId:22,tocIndex:11},{value:"string[]",paraId:22,tocIndex:11},{value:"Field whitelist",paraId:22,tocIndex:11},{value:"blacklist",paraId:22,tocIndex:11},{value:"string[]",paraId:22,tocIndex:11},{value:"Field blacklist",paraId:22,tocIndex:11},{value:"sort",paraId:22,tocIndex:11},{value:"string[]",paraId:22,tocIndex:11},{value:"Sorting parameters",paraId:22,tocIndex:11},{value:"page",paraId:22,tocIndex:11},{value:"number",paraId:22,tocIndex:11},{value:"Current page",paraId:22,tocIndex:11},{value:"pageSize",paraId:22,tocIndex:11},{value:"number",paraId:22,tocIndex:11},{value:"Number of data items per page",paraId:22,tocIndex:11},{value:"values",paraId:22,tocIndex:11},{value:"any",paraId:22,tocIndex:11},{value:"Request body",paraId:22,tocIndex:11},{value:"[key: string]",paraId:22,tocIndex:11},{value:"any",paraId:22,tocIndex:11},{value:"Other extended configurations",paraId:22,tocIndex:11},{value:"Predefined merge strategies or custom merge functions.",paraId:24,tocIndex:12},{value:"Predefined merge strategies:",paraId:25,tocIndex:12},{value:"Strategy Name",paraId:26,tocIndex:12},{value:"Description",paraId:26,tocIndex:12},{value:"merge",paraId:26,tocIndex:12},{value:"Object.assign",paraId:26,tocIndex:12},{value:"deepMerge",paraId:26,tocIndex:12},{value:"Deep traversal merge",paraId:26,tocIndex:12},{value:"overwrite",paraId:26,tocIndex:12},{value:"Overwrite",paraId:26,tocIndex:12},{value:"andMerge",paraId:26,tocIndex:12},{value:"Merge filter parameters using the ",paraId:26,tocIndex:12},{value:"$and",paraId:26,tocIndex:12},{value:" operator",paraId:26,tocIndex:12},{value:"orMerge",paraId:26,tocIndex:12},{value:"Merge filter parameters using the ",paraId:26,tocIndex:12},{value:"$or",paraId:26,tocIndex:12},{value:" operator",paraId:26,tocIndex:12},{value:"intersect",paraId:26,tocIndex:12},{value:"Intersection",paraId:26,tocIndex:12},{value:"union",paraId:26,tocIndex:12},{value:"Union",paraId:26,tocIndex:12}],UY={},PY={title:"Migration",toc:"menu",filename:"docs/en-US/api/server/migration.md",lastUpdated:1732240239e3,description:"Migration is a class in NocoBase used for upgrade scripts, typically used to synchronize database-related changes."},TY=[{id:"migration",depth:1,title:"Migration"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"appversion",depth:3,title:"appVersion"},{id:"on",depth:3,title:"on"},{id:"app",depth:3,title:"app"},{id:"pm",depth:3,title:"pm"},{id:"plugin",depth:3,title:"plugin"},{id:"db",depth:3,title:"db"},{id:"sequelize",depth:3,title:"sequelize"},{id:"queryinterface",depth:3,title:"queryInterface"},{id:"instance-methods",depth:3,title:"Instance Methods"},{id:"up",depth:3,title:"up()"},{id:"down",depth:3,title:"down()"}],CY=[{value:"Migration",paraId:0,tocIndex:0},{value:" is a class in NocoBase used for upgrade scripts, typically used to synchronize database-related changes.",paraId:0,tocIndex:0},{value:"appVersion",paraId:1},{value:"Current application version. The script will be executed only if it matches the version.",paraId:2,tocIndex:2},{value:`export default class extends Migration { +`,paraId:21,tocIndex:10},{value:"Property",paraId:22,tocIndex:11},{value:"Type",paraId:22,tocIndex:11},{value:"Description",paraId:22,tocIndex:11},{value:"filterByTk",paraId:22,tocIndex:11},{value:"any",paraId:22,tocIndex:11},{value:"The primary key value of the operated resource",paraId:22,tocIndex:11},{value:"filter",paraId:22,tocIndex:11},{value:"Filter",paraId:22,tocIndex:11},{value:"Filtering parameters, refer to ",paraId:22,tocIndex:11},{value:"Filter Operators",paraId:23,tocIndex:11},{value:"fields",paraId:22,tocIndex:11},{value:"string[]",paraId:22,tocIndex:11},{value:"Fields to retrieve",paraId:22,tocIndex:11},{value:"except",paraId:22,tocIndex:11},{value:"string[]",paraId:22,tocIndex:11},{value:"Fields to exclude",paraId:22,tocIndex:11},{value:"appends",paraId:22,tocIndex:11},{value:"string[]",paraId:22,tocIndex:11},{value:"Related fields to append",paraId:22,tocIndex:11},{value:"whitelist",paraId:22,tocIndex:11},{value:"string[]",paraId:22,tocIndex:11},{value:"Field whitelist",paraId:22,tocIndex:11},{value:"blacklist",paraId:22,tocIndex:11},{value:"string[]",paraId:22,tocIndex:11},{value:"Field blacklist",paraId:22,tocIndex:11},{value:"sort",paraId:22,tocIndex:11},{value:"string[]",paraId:22,tocIndex:11},{value:"Sorting parameters",paraId:22,tocIndex:11},{value:"page",paraId:22,tocIndex:11},{value:"number",paraId:22,tocIndex:11},{value:"Current page",paraId:22,tocIndex:11},{value:"pageSize",paraId:22,tocIndex:11},{value:"number",paraId:22,tocIndex:11},{value:"Number of data items per page",paraId:22,tocIndex:11},{value:"values",paraId:22,tocIndex:11},{value:"any",paraId:22,tocIndex:11},{value:"Request body",paraId:22,tocIndex:11},{value:"[key: string]",paraId:22,tocIndex:11},{value:"any",paraId:22,tocIndex:11},{value:"Other extended configurations",paraId:22,tocIndex:11},{value:"Predefined merge strategies or custom merge functions.",paraId:24,tocIndex:12},{value:"Predefined merge strategies:",paraId:25,tocIndex:12},{value:"Strategy Name",paraId:26,tocIndex:12},{value:"Description",paraId:26,tocIndex:12},{value:"merge",paraId:26,tocIndex:12},{value:"Object.assign",paraId:26,tocIndex:12},{value:"deepMerge",paraId:26,tocIndex:12},{value:"Deep traversal merge",paraId:26,tocIndex:12},{value:"overwrite",paraId:26,tocIndex:12},{value:"Overwrite",paraId:26,tocIndex:12},{value:"andMerge",paraId:26,tocIndex:12},{value:"Merge filter parameters using the ",paraId:26,tocIndex:12},{value:"$and",paraId:26,tocIndex:12},{value:" operator",paraId:26,tocIndex:12},{value:"orMerge",paraId:26,tocIndex:12},{value:"Merge filter parameters using the ",paraId:26,tocIndex:12},{value:"$or",paraId:26,tocIndex:12},{value:" operator",paraId:26,tocIndex:12},{value:"intersect",paraId:26,tocIndex:12},{value:"Intersection",paraId:26,tocIndex:12},{value:"union",paraId:26,tocIndex:12},{value:"Union",paraId:26,tocIndex:12}],UY={},PY={title:"Migration",toc:"menu",filename:"docs/en-US/api/server/migration.md",lastUpdated:173254844e4,description:"Migration is a class in NocoBase used for upgrade scripts, typically used to synchronize database-related changes."},TY=[{id:"migration",depth:1,title:"Migration"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"appversion",depth:3,title:"appVersion"},{id:"on",depth:3,title:"on"},{id:"app",depth:3,title:"app"},{id:"pm",depth:3,title:"pm"},{id:"plugin",depth:3,title:"plugin"},{id:"db",depth:3,title:"db"},{id:"sequelize",depth:3,title:"sequelize"},{id:"queryinterface",depth:3,title:"queryInterface"},{id:"instance-methods",depth:3,title:"Instance Methods"},{id:"up",depth:3,title:"up()"},{id:"down",depth:3,title:"down()"}],CY=[{value:"Migration",paraId:0,tocIndex:0},{value:" is a class in NocoBase used for upgrade scripts, typically used to synchronize database-related changes.",paraId:0,tocIndex:0},{value:"appVersion",paraId:1},{value:"Current application version. The script will be executed only if it matches the version.",paraId:2,tocIndex:2},{value:`export default class extends Migration { appVersion = '<=1.0.0-alpha.1'; // ... } @@ -17794,7 +17847,7 @@ export interface MergeStrategies { on = 'afterLoad'; // ... } -`,paraId:6,tocIndex:3},{value:"app",paraId:1},{value:"The ",paraId:7,tocIndex:4},{value:"Application",paraId:7,tocIndex:4},{value:" instance of the current application. Refer to ",paraId:7,tocIndex:4},{value:"Application",paraId:8,tocIndex:4},{value:".",paraId:7,tocIndex:4},{value:"pm",paraId:1},{value:"The ",paraId:9,tocIndex:5},{value:"PluginManager",paraId:9,tocIndex:5},{value:" instance of the current application. Refer to ",paraId:9,tocIndex:5},{value:"PluginManager",paraId:10,tocIndex:5},{value:".",paraId:9,tocIndex:5},{value:"plugin",paraId:1},{value:"The ",paraId:11,tocIndex:6},{value:"Plugin",paraId:11,tocIndex:6},{value:" instance of the current plugin. Refer to ",paraId:11,tocIndex:6},{value:"Plugin",paraId:12,tocIndex:6},{value:".",paraId:11,tocIndex:6},{value:"db",paraId:1},{value:"The ",paraId:13,tocIndex:7},{value:"DataBase",paraId:13,tocIndex:7},{value:" instance of the current application. Refer to ",paraId:13,tocIndex:7},{value:"DataBase",paraId:14,tocIndex:7},{value:".",paraId:13,tocIndex:7},{value:"sequelize",paraId:1},{value:"The ",paraId:15,tocIndex:8},{value:"Sequelize",paraId:15,tocIndex:8},{value:" instance. Refer to ",paraId:15,tocIndex:8},{value:"Sequelize",paraId:15,tocIndex:8},{value:".",paraId:15,tocIndex:8},{value:"queryInterface",paraId:1},{value:"Refer to ",paraId:16,tocIndex:9},{value:"Sequelize - Query Interface",paraId:16,tocIndex:9},{value:".",paraId:16,tocIndex:9},{value:"up()",paraId:1},{value:"Method for upgrade execution.",paraId:17,tocIndex:11},{value:"down()",paraId:1},{value:"Method for downgrade execution.",paraId:18,tocIndex:12}],AY={},qY={title:"Metric",toc:"menu",filename:"docs/en-US/api/telemetry/metric.md",lastUpdated:1732240239e3,description:"Constructor to create a Metric instance."},EY=[{id:"metric",depth:1,title:"Metric"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"init",depth:3,title:"init()"},{id:"signature-1",depth:4,title:"Signature"},{id:"registerreader",depth:3,title:"registerReader()"},{id:"signature-2",depth:4,title:"Signature"},{id:"type-1",depth:4,title:"Type"},{id:"details-1",depth:4,title:"Details"},{id:"addview",depth:3,title:"addView()"},{id:"signature-3",depth:4,title:"Signature"},{id:"type-2",depth:4,title:"Type"},{id:"getmeter",depth:3,title:"getMeter()"},{id:"signature-4",depth:4,title:"Signature"},{id:"details-2",depth:4,title:"Details"},{id:"start",depth:3,title:"start()"},{id:"signature-5",depth:4,title:"Signature"},{id:"shutdown",depth:3,title:"shutdown()"},{id:"signature-6",depth:4,title:"Signature"}],DY=[{value:"constructor()",paraId:0},{value:"Constructor to create a ",paraId:1,tocIndex:2},{value:"Metric",paraId:1,tocIndex:2},{value:" instance.",paraId:1,tocIndex:2},{value:"constructor(options?: MetricOptions)",paraId:2,tocIndex:3},{value:`export type MetricOptions = { +`,paraId:6,tocIndex:3},{value:"app",paraId:1},{value:"The ",paraId:7,tocIndex:4},{value:"Application",paraId:7,tocIndex:4},{value:" instance of the current application. Refer to ",paraId:7,tocIndex:4},{value:"Application",paraId:8,tocIndex:4},{value:".",paraId:7,tocIndex:4},{value:"pm",paraId:1},{value:"The ",paraId:9,tocIndex:5},{value:"PluginManager",paraId:9,tocIndex:5},{value:" instance of the current application. Refer to ",paraId:9,tocIndex:5},{value:"PluginManager",paraId:10,tocIndex:5},{value:".",paraId:9,tocIndex:5},{value:"plugin",paraId:1},{value:"The ",paraId:11,tocIndex:6},{value:"Plugin",paraId:11,tocIndex:6},{value:" instance of the current plugin. Refer to ",paraId:11,tocIndex:6},{value:"Plugin",paraId:12,tocIndex:6},{value:".",paraId:11,tocIndex:6},{value:"db",paraId:1},{value:"The ",paraId:13,tocIndex:7},{value:"DataBase",paraId:13,tocIndex:7},{value:" instance of the current application. Refer to ",paraId:13,tocIndex:7},{value:"DataBase",paraId:14,tocIndex:7},{value:".",paraId:13,tocIndex:7},{value:"sequelize",paraId:1},{value:"The ",paraId:15,tocIndex:8},{value:"Sequelize",paraId:15,tocIndex:8},{value:" instance. Refer to ",paraId:15,tocIndex:8},{value:"Sequelize",paraId:15,tocIndex:8},{value:".",paraId:15,tocIndex:8},{value:"queryInterface",paraId:1},{value:"Refer to ",paraId:16,tocIndex:9},{value:"Sequelize - Query Interface",paraId:16,tocIndex:9},{value:".",paraId:16,tocIndex:9},{value:"up()",paraId:1},{value:"Method for upgrade execution.",paraId:17,tocIndex:11},{value:"down()",paraId:1},{value:"Method for downgrade execution.",paraId:18,tocIndex:12}],AY={},qY={title:"Metric",toc:"menu",filename:"docs/en-US/api/telemetry/metric.md",lastUpdated:173254844e4,description:"Constructor to create a Metric instance."},EY=[{id:"metric",depth:1,title:"Metric"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"init",depth:3,title:"init()"},{id:"signature-1",depth:4,title:"Signature"},{id:"registerreader",depth:3,title:"registerReader()"},{id:"signature-2",depth:4,title:"Signature"},{id:"type-1",depth:4,title:"Type"},{id:"details-1",depth:4,title:"Details"},{id:"addview",depth:3,title:"addView()"},{id:"signature-3",depth:4,title:"Signature"},{id:"type-2",depth:4,title:"Type"},{id:"getmeter",depth:3,title:"getMeter()"},{id:"signature-4",depth:4,title:"Signature"},{id:"details-2",depth:4,title:"Details"},{id:"start",depth:3,title:"start()"},{id:"signature-5",depth:4,title:"Signature"},{id:"shutdown",depth:3,title:"shutdown()"},{id:"signature-6",depth:4,title:"Signature"}],DY=[{value:"constructor()",paraId:0},{value:"Constructor to create a ",paraId:1,tocIndex:2},{value:"Metric",paraId:1,tocIndex:2},{value:" instance.",paraId:1,tocIndex:2},{value:"constructor(options?: MetricOptions)",paraId:2,tocIndex:3},{value:`export type MetricOptions = { meterName?: string; version?: string; readerName?: string | string[]; @@ -17803,13 +17856,13 @@ export interface MergeStrategies { type GetMetricReader = () => MetricReader; `,paraId:9,tocIndex:10},{value:"Parameter",paraId:10,tocIndex:11},{value:"Type",paraId:10,tocIndex:11},{value:"Description",paraId:10,tocIndex:11},{value:"name",paraId:10,tocIndex:11},{value:"string",paraId:10,tocIndex:11},{value:"Unique identifier for ",paraId:10,tocIndex:11},{value:"MetricReader",paraId:10,tocIndex:11},{value:"reader",paraId:10,tocIndex:11},{value:"() => MetricReader",paraId:10,tocIndex:11},{value:"Function to get ",paraId:10,tocIndex:11},{value:"MetricReader",paraId:10,tocIndex:11},{value:"addView()",paraId:0},{value:"Adds a ",paraId:11,tocIndex:12},{value:"View",paraId:11,tocIndex:12},{value:". Refer to ",paraId:11,tocIndex:12},{value:"Configure Metric Views",paraId:11,tocIndex:12},{value:".",paraId:11,tocIndex:12},{value:"addView(...view: View[])",paraId:12,tocIndex:13},{value:`import { View } from '@opentelemetry/sdk-metrics'; -`,paraId:13,tocIndex:14},{value:"getMeter()",paraId:0},{value:"Gets the ",paraId:14,tocIndex:15},{value:"Meter",paraId:14,tocIndex:15},{value:".",paraId:14,tocIndex:15},{value:"getMeter(name?: string, version?: string)",paraId:15,tocIndex:16},{value:"Parameter",paraId:16,tocIndex:17},{value:"Type",paraId:16,tocIndex:17},{value:"Description",paraId:16,tocIndex:17},{value:"Default Value",paraId:16,tocIndex:17},{value:"name",paraId:16,tocIndex:17},{value:"string",paraId:16,tocIndex:17},{value:"Meter identifier",paraId:16,tocIndex:17},{value:"nocobase-meter",paraId:16,tocIndex:17},{value:"version",paraId:16,tocIndex:17},{value:"string",paraId:16,tocIndex:17},{value:"Current version of NocoBase",paraId:16,tocIndex:17},{value:"start()",paraId:0},{value:"Starts the ",paraId:17,tocIndex:18},{value:"MetricReader",paraId:17,tocIndex:18},{value:".",paraId:17,tocIndex:18},{value:"start(): void",paraId:18,tocIndex:19},{value:"shutdown()",paraId:0},{value:"Stops the ",paraId:19,tocIndex:20},{value:"MetricReader",paraId:19,tocIndex:20},{value:".",paraId:19,tocIndex:20},{value:"shutdown(): Promise",paraId:20,tocIndex:21}],OY={},RY={title:"Embed NocoBase",toc:"menu",filename:"docs/en-US/handbook/embed/index.md",lastUpdated:1732240239e3,description:"This plugin is used to embed NocoBase pages into other websites or applications."},MY=[{id:"embed-nocobase",depth:1,title:"Embed NocoBase"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-guide",depth:2,title:"User Guide"}],LY=[{value:"This plugin is used to embed NocoBase pages into other websites or applications.",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin and needs to be uploaded and activated through the plugin manager.",paraId:1,tocIndex:2},{value:`After activating the interface configuration, click "Copy embedded link" in the page's configuration menu (top right corner).`,paraId:2,tocIndex:3},{value:"After clicking, you will get a link that can be opened separately, for example, ",paraId:3,tocIndex:3},{value:"https://xxx.com/embed/qs087rz4o2b",paraId:3,tocIndex:3},{value:".",paraId:3,tocIndex:3},{value:"If you want to embed NocoBase pages into other websites or applications, user authentication is required, and the ",paraId:4,tocIndex:3},{value:"token",paraId:4,tocIndex:3},{value:" needs to be appended to the link, for example, ",paraId:4,tocIndex:3},{value:"https://xxx.com/embed/qs087rz4o2b?token=xxx",paraId:4,tocIndex:3},{value:". For detailed instructions on user authentication, please refer to ",paraId:4,tocIndex:3},{value:"User Authentication",paraId:5,tocIndex:3},{value:".",paraId:4,tocIndex:3}],NY={},zY={title:"https://static-docs.nocobase.com",toc:"menu",filename:"docs/en-US/handbook/users/index.md",lastUpdated:1732240239e3,description:"The https://static-docs.nocobase.com plugin provides a basic user model and a user management interface."},FY=[{id:"httpsstatic-docsnocobasecom",depth:1,title:"https://static-docs.nocobase.com"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"user-management",depth:3,title:"User Management"},{id:"add-user",depth:3,title:"Add User"},{id:"modify-user-profile",depth:3,title:"Modify User Profile"},{id:"change-user-password",depth:3,title:"Change User Password"},{id:"settings",depth:3,title:"Settings"}],BY=[{value:"https://static-docs.nocobase.com",paraId:0},{value:"The ",paraId:1,tocIndex:1},{value:"https://static-docs.nocobase.com",paraId:1,tocIndex:1},{value:" plugin provides a basic user model and a user management interface.",paraId:1,tocIndex:1},{value:"Built-in plugin, no separate installation required.",paraId:2,tocIndex:2},{value:"This plugin provides a user management interface in the configuration center. After application initialization, an undeletable super admin account will be added. The super admin has Root permissions and can access all resources.",paraId:3,tocIndex:4},{value:"In addition, you can also add various different blocks of the ",paraId:4,tocIndex:4},{value:"https://static-docs.nocobase.com",paraId:4,tocIndex:4},{value:" collection to manage ",paraId:4,tocIndex:4},{value:"https://static-docs.nocobase.com",paraId:4,tocIndex:4},{value:", such as table blocks:",paraId:4,tocIndex:4},{value:"The version of NocoBase needs to be v1.3.34-beta or above.",paraId:5},{value:"Configure whether to allow editing user profiles and changing user passwords (applies to all users).",paraId:6}],jY={},HY={title:"Overview",toc:"menu",filename:"docs/en-US/plugin-samples/index.md",lastUpdated:1732240239e3},WY=[{id:"overview",depth:1,title:"Overview"}],$Y=[{value:"Creating the First Plugin",paraId:0,tocIndex:0},{value:"@my-project/plugin-hello",paraId:1,tocIndex:0},{value:"Tables and Fields",paraId:0,tocIndex:0},{value:"sample-collection-define",paraId:2,tocIndex:0},{value:"sample-collection-extend",paraId:2,tocIndex:0},{value:"sample-collection-model",paraId:2,tocIndex:0},{value:"sample-collection-repository",paraId:2,tocIndex:0},{value:"sample-collection-template",paraId:2,tocIndex:0},{value:"sample-collection-field-type",paraId:2,tocIndex:0},{value:"sample-collection-field-interface",paraId:2,tocIndex:0},{value:"Resources and Actions",paraId:0,tocIndex:0},{value:"sample-resource-manager-register-action-handlers",paraId:3,tocIndex:0},{value:"sample-resource-manager-define",paraId:3,tocIndex:0},{value:"sample-resource-manager-actions",paraId:3,tocIndex:0},{value:"Database Usage",paraId:0,tocIndex:0},{value:"sample-db-registerFieldTypes",paraId:4,tocIndex:0},{value:"sample-db-registerModels",paraId:4,tocIndex:0},{value:"sample-db-registerRepositories",paraId:4,tocIndex:0},{value:"sample-db-registerOperators",paraId:4,tocIndex:0},{value:"sample-db-repository",paraId:4,tocIndex:0},{value:"Custom Command Line",paraId:0,tocIndex:0},{value:"sample-cli-create-command",paraId:5,tocIndex:0},{value:"Migration Scripts",paraId:0,tocIndex:0},{value:"sample-migration-create-migration",paraId:6,tocIndex:0},{value:"Caching",paraId:0,tocIndex:0},{value:"sample-cache-register-store",paraId:7,tocIndex:0},{value:"sample-cache-create-cache",paraId:7,tocIndex:0},{value:"Server Middleware",paraId:0,tocIndex:0},{value:"sample-middleware-ratelimit",paraId:8,tocIndex:0},{value:"Data Source Extensions",paraId:0,tocIndex:0},{value:"sample-data-source-nocobase-api",paraId:9,tocIndex:0},{value:"Chart Extensions",paraId:0,tocIndex:0},{value:"sample-dv-echarts",paraId:10,tocIndex:0},{value:"Internationalization",paraId:0,tocIndex:0},{value:"sample-i18n-zh-cn",paraId:11,tocIndex:0},{value:"Frontend Routing Extensions",paraId:0,tocIndex:0},{value:"Add a New Page",paraId:12,tocIndex:0},{value:"Replace an Existing Page",paraId:12,tocIndex:0},{value:"Plugin Configuration Page (Single Route)",paraId:12,tocIndex:0},{value:"Plugin Configuration Page (Tabbed Layout)",paraId:12,tocIndex:0},{value:"Plugin Configuration Page (Different Layouts)",paraId:12,tocIndex:0},{value:"Plugin Configuration Pages",paraId:0,tocIndex:0},{value:"Form Configuration Page",paraId:13,tocIndex:0},{value:"Table Configuration Page",paraId:13,tocIndex:0},{value:"Polymorphic Table Configuration Page",paraId:13,tocIndex:0},{value:"Provider Components",paraId:0,tocIndex:0},{value:"Global Announcement Bar",paraId:14,tocIndex:0},{value:"Component Extensions",paraId:0,tocIndex:0},{value:"Schema Initializer",paraId:0,tocIndex:0},{value:"Add initialization items to existing Add blocks",paraId:15,tocIndex:0},{value:"Add initialization items to existing Configure actions",paraId:15,tocIndex:0},{value:"Add initialization items to existing Configure fields",paraId:15,tocIndex:0},{value:`Reuse existing SchemaInitializerItem +`,paraId:13,tocIndex:14},{value:"getMeter()",paraId:0},{value:"Gets the ",paraId:14,tocIndex:15},{value:"Meter",paraId:14,tocIndex:15},{value:".",paraId:14,tocIndex:15},{value:"getMeter(name?: string, version?: string)",paraId:15,tocIndex:16},{value:"Parameter",paraId:16,tocIndex:17},{value:"Type",paraId:16,tocIndex:17},{value:"Description",paraId:16,tocIndex:17},{value:"Default Value",paraId:16,tocIndex:17},{value:"name",paraId:16,tocIndex:17},{value:"string",paraId:16,tocIndex:17},{value:"Meter identifier",paraId:16,tocIndex:17},{value:"nocobase-meter",paraId:16,tocIndex:17},{value:"version",paraId:16,tocIndex:17},{value:"string",paraId:16,tocIndex:17},{value:"Current version of NocoBase",paraId:16,tocIndex:17},{value:"start()",paraId:0},{value:"Starts the ",paraId:17,tocIndex:18},{value:"MetricReader",paraId:17,tocIndex:18},{value:".",paraId:17,tocIndex:18},{value:"start(): void",paraId:18,tocIndex:19},{value:"shutdown()",paraId:0},{value:"Stops the ",paraId:19,tocIndex:20},{value:"MetricReader",paraId:19,tocIndex:20},{value:".",paraId:19,tocIndex:20},{value:"shutdown(): Promise",paraId:20,tocIndex:21}],OY={},RY={title:"Embed NocoBase",toc:"menu",filename:"docs/en-US/handbook/embed/index.md",lastUpdated:173254844e4,description:"This plugin is used to embed NocoBase pages into other websites or applications."},MY=[{id:"embed-nocobase",depth:1,title:"Embed NocoBase"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"user-guide",depth:2,title:"User Guide"}],LY=[{value:"This plugin is used to embed NocoBase pages into other websites or applications.",paraId:0,tocIndex:1},{value:"This plugin is a commercial plugin and needs to be uploaded and activated through the plugin manager.",paraId:1,tocIndex:2},{value:`After activating the interface configuration, click "Copy embedded link" in the page's configuration menu (top right corner).`,paraId:2,tocIndex:3},{value:"After clicking, you will get a link that can be opened separately, for example, ",paraId:3,tocIndex:3},{value:"https://xxx.com/embed/qs087rz4o2b",paraId:3,tocIndex:3},{value:".",paraId:3,tocIndex:3},{value:"If you want to embed NocoBase pages into other websites or applications, user authentication is required, and the ",paraId:4,tocIndex:3},{value:"token",paraId:4,tocIndex:3},{value:" needs to be appended to the link, for example, ",paraId:4,tocIndex:3},{value:"https://xxx.com/embed/qs087rz4o2b?token=xxx",paraId:4,tocIndex:3},{value:". For detailed instructions on user authentication, please refer to ",paraId:4,tocIndex:3},{value:"User Authentication",paraId:5,tocIndex:3},{value:".",paraId:4,tocIndex:3}],NY={},zY={title:"https://static-docs.nocobase.com",toc:"menu",filename:"docs/en-US/handbook/users/index.md",lastUpdated:173254844e4,description:"The https://static-docs.nocobase.com plugin provides a basic user model and a user management interface."},FY=[{id:"httpsstatic-docsnocobasecom",depth:1,title:"https://static-docs.nocobase.com"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"usage-instructions",depth:2,title:"Usage Instructions"},{id:"user-management",depth:3,title:"User Management"},{id:"add-user",depth:3,title:"Add User"},{id:"modify-user-profile",depth:3,title:"Modify User Profile"},{id:"change-user-password",depth:3,title:"Change User Password"},{id:"settings",depth:3,title:"Settings"}],BY=[{value:"https://static-docs.nocobase.com",paraId:0},{value:"The ",paraId:1,tocIndex:1},{value:"https://static-docs.nocobase.com",paraId:1,tocIndex:1},{value:" plugin provides a basic user model and a user management interface.",paraId:1,tocIndex:1},{value:"Built-in plugin, no separate installation required.",paraId:2,tocIndex:2},{value:"This plugin provides a user management interface in the configuration center. After application initialization, an undeletable super admin account will be added. The super admin has Root permissions and can access all resources.",paraId:3,tocIndex:4},{value:"In addition, you can also add various different blocks of the ",paraId:4,tocIndex:4},{value:"https://static-docs.nocobase.com",paraId:4,tocIndex:4},{value:" collection to manage ",paraId:4,tocIndex:4},{value:"https://static-docs.nocobase.com",paraId:4,tocIndex:4},{value:", such as table blocks:",paraId:4,tocIndex:4},{value:"The version of NocoBase needs to be v1.3.34-beta or above.",paraId:5},{value:"Configure whether to allow editing user profiles and changing user passwords (applies to all users).",paraId:6}],jY={},HY={title:"Overview",toc:"menu",filename:"docs/en-US/plugin-samples/index.md",lastUpdated:173254844e4},WY=[{id:"overview",depth:1,title:"Overview"}],$Y=[{value:"Creating the First Plugin",paraId:0,tocIndex:0},{value:"@my-project/plugin-hello",paraId:1,tocIndex:0},{value:"Tables and Fields",paraId:0,tocIndex:0},{value:"sample-collection-define",paraId:2,tocIndex:0},{value:"sample-collection-extend",paraId:2,tocIndex:0},{value:"sample-collection-model",paraId:2,tocIndex:0},{value:"sample-collection-repository",paraId:2,tocIndex:0},{value:"sample-collection-template",paraId:2,tocIndex:0},{value:"sample-collection-field-type",paraId:2,tocIndex:0},{value:"sample-collection-field-interface",paraId:2,tocIndex:0},{value:"Resources and Actions",paraId:0,tocIndex:0},{value:"sample-resource-manager-register-action-handlers",paraId:3,tocIndex:0},{value:"sample-resource-manager-define",paraId:3,tocIndex:0},{value:"sample-resource-manager-actions",paraId:3,tocIndex:0},{value:"Database Usage",paraId:0,tocIndex:0},{value:"sample-db-registerFieldTypes",paraId:4,tocIndex:0},{value:"sample-db-registerModels",paraId:4,tocIndex:0},{value:"sample-db-registerRepositories",paraId:4,tocIndex:0},{value:"sample-db-registerOperators",paraId:4,tocIndex:0},{value:"sample-db-repository",paraId:4,tocIndex:0},{value:"Custom Command Line",paraId:0,tocIndex:0},{value:"sample-cli-create-command",paraId:5,tocIndex:0},{value:"Migration Scripts",paraId:0,tocIndex:0},{value:"sample-migration-create-migration",paraId:6,tocIndex:0},{value:"Caching",paraId:0,tocIndex:0},{value:"sample-cache-register-store",paraId:7,tocIndex:0},{value:"sample-cache-create-cache",paraId:7,tocIndex:0},{value:"Server Middleware",paraId:0,tocIndex:0},{value:"sample-middleware-ratelimit",paraId:8,tocIndex:0},{value:"Data Source Extensions",paraId:0,tocIndex:0},{value:"sample-data-source-nocobase-api",paraId:9,tocIndex:0},{value:"Chart Extensions",paraId:0,tocIndex:0},{value:"sample-dv-echarts",paraId:10,tocIndex:0},{value:"Internationalization",paraId:0,tocIndex:0},{value:"sample-i18n-zh-cn",paraId:11,tocIndex:0},{value:"Frontend Routing Extensions",paraId:0,tocIndex:0},{value:"Add a New Page",paraId:12,tocIndex:0},{value:"Replace an Existing Page",paraId:12,tocIndex:0},{value:"Plugin Configuration Page (Single Route)",paraId:12,tocIndex:0},{value:"Plugin Configuration Page (Tabbed Layout)",paraId:12,tocIndex:0},{value:"Plugin Configuration Page (Different Layouts)",paraId:12,tocIndex:0},{value:"Plugin Configuration Pages",paraId:0,tocIndex:0},{value:"Form Configuration Page",paraId:13,tocIndex:0},{value:"Table Configuration Page",paraId:13,tocIndex:0},{value:"Polymorphic Table Configuration Page",paraId:13,tocIndex:0},{value:"Provider Components",paraId:0,tocIndex:0},{value:"Global Announcement Bar",paraId:14,tocIndex:0},{value:"Component Extensions",paraId:0,tocIndex:0},{value:"Schema Initializer",paraId:0,tocIndex:0},{value:"Add initialization items to existing Add blocks",paraId:15,tocIndex:0},{value:"Add initialization items to existing Configure actions",paraId:15,tocIndex:0},{value:"Add initialization items to existing Configure fields",paraId:15,tocIndex:0},{value:`Reuse existing SchemaInitializerItem `,paraId:15,tocIndex:0},{value:`Directly add a block `,paraId:16,tocIndex:0},{value:"Add after configuring a pop-up (such as a calendar)",paraId:17,tocIndex:0},{value:`Create new initializers `,paraId:15,tocIndex:0},{value:"Simple button and dropdown menu",paraId:18,tocIndex:0},{value:"Schema Settings",paraId:0,tocIndex:0},{value:"Add initialization items to existing Settings",paraId:19,tocIndex:0},{value:"Reuse existing SchemaSettingsItem",paraId:19,tocIndex:0},{value:"Create new settings",paraId:19,tocIndex:0},{value:"Block Extensions",paraId:0,tocIndex:0},{value:`Simple Block Example - Gallery Image Carousel Block `,paraId:20,tocIndex:0},{value:"Block component development",paraId:21,tocIndex:0},{value:"Initializer item",paraId:21,tocIndex:0},{value:"Block Settings",paraId:21,tocIndex:0},{value:`Embedded Block Initializer `,paraId:20,tocIndex:0},{value:"Configure operations",paraId:22,tocIndex:0},{value:"Configure fields",paraId:22,tocIndex:0},{value:"Custom initializer",paraId:22,tocIndex:0},{value:"Operation Extensions",paraId:0,tocIndex:0},{value:"Command-based operations",paraId:23,tocIndex:0},{value:"Pop-up-based operations",paraId:23,tocIndex:0},{value:"Field Extensions",paraId:0,tocIndex:0},{value:"Custom Field Interface Type",paraId:24,tocIndex:0},{value:"Custom Field Data Type",paraId:24,tocIndex:0},{value:`Field Component Development -`,paraId:24,tocIndex:0},{value:"connect + mapReadPretty",paraId:25,tocIndex:0},{value:"observer + mapReadPretty",paraId:25,tocIndex:0},{value:"Provide Setters for Fields",paraId:24,tocIndex:0}],GY={},VY={title:"API \u53C2\u8003",toc:"menu",filename:"docs/en-US/plugins/auth/dev/api.md",lastUpdated:1732240239e3,description:"\u5185\u6838 API\uFF0C\u53C2\u8003: Auth"},KY=[{id:"api-\u53C2\u8003",depth:1,title:"API \u53C2\u8003"},{id:"\u670D\u52A1\u7AEF",depth:2,title:"\u670D\u52A1\u7AEF"},{id:"auth",depth:3,title:"Auth"},{id:"baseauth",depth:3,title:"BaseAuth"},{id:"authmodel",depth:3,title:"AuthModel"},{id:"\u6982\u89C8",depth:4,title:"\u6982\u89C8"},{id:"\u7C7B\u65B9\u6CD5",depth:4,title:"\u7C7B\u65B9\u6CD5"},{id:"\u5BA2\u6237\u7AEF",depth:2,title:"\u5BA2\u6237\u7AEF"},{id:"pluginregistertype",depth:3,title:"plugin.registerType()"},{id:"\u7B7E\u540D",depth:4,title:"\u7B7E\u540D"},{id:"\u7C7B\u578B",depth:4,title:"\u7C7B\u578B"},{id:"\u8BE6\u7EC6\u4FE1\u606F",depth:4,title:"\u8BE6\u7EC6\u4FE1\u606F"}],ZY=[{value:"\u5185\u6838 API\uFF0C\u53C2\u8003: ",paraId:0,tocIndex:2},{value:"Auth",paraId:1,tocIndex:2},{value:"\u5185\u6838 API, \u53C2\u8003: ",paraId:2,tocIndex:3},{value:"BaseAuth",paraId:3,tocIndex:3},{value:"AuthModel",paraId:4,tocIndex:5},{value:" \u662F NocoBase \u5E94\u7528\u4E2D\u4F7F\u7528\u7684\u8BA4\u8BC1\u5668 (",paraId:4,tocIndex:5},{value:"Authenticator",paraId:4,tocIndex:5},{value:", \u53C2\u8003: ",paraId:4,tocIndex:5},{value:"AuthManager - setStorer",paraId:5,tocIndex:5},{value:" \u548C ",paraId:4,tocIndex:5},{value:"Auth - constructor",paraId:6,tocIndex:5},{value:") \u6570\u636E\u6A21\u578B\uFF0C\u63D0\u4F9B\u4E86\u4E00\u4E9B\u548C\u7528\u6237\u6570\u636E\u8868\u4EA4\u4E92\u7684\u65B9\u6CD5\u3002\u9664\u6B64\u4E4B\u5916\uFF0C\u4E5F\u53EF\u4EE5\u4F7F\u7528 Sequelize Model \u63D0\u4F9B\u7684\u65B9\u6CD5\u3002",paraId:4,tocIndex:5},{value:`import { AuthModel } from '@nocobase/plugin-auth'; +`,paraId:24,tocIndex:0},{value:"connect + mapReadPretty",paraId:25,tocIndex:0},{value:"observer + mapReadPretty",paraId:25,tocIndex:0},{value:"Provide Setters for Fields",paraId:24,tocIndex:0}],GY={},VY={title:"API \u53C2\u8003",toc:"menu",filename:"docs/en-US/plugins/auth/dev/api.md",lastUpdated:173254844e4,description:"\u5185\u6838 API\uFF0C\u53C2\u8003: Auth"},KY=[{id:"api-\u53C2\u8003",depth:1,title:"API \u53C2\u8003"},{id:"\u670D\u52A1\u7AEF",depth:2,title:"\u670D\u52A1\u7AEF"},{id:"auth",depth:3,title:"Auth"},{id:"baseauth",depth:3,title:"BaseAuth"},{id:"authmodel",depth:3,title:"AuthModel"},{id:"\u6982\u89C8",depth:4,title:"\u6982\u89C8"},{id:"\u7C7B\u65B9\u6CD5",depth:4,title:"\u7C7B\u65B9\u6CD5"},{id:"\u5BA2\u6237\u7AEF",depth:2,title:"\u5BA2\u6237\u7AEF"},{id:"pluginregistertype",depth:3,title:"plugin.registerType()"},{id:"\u7B7E\u540D",depth:4,title:"\u7B7E\u540D"},{id:"\u7C7B\u578B",depth:4,title:"\u7C7B\u578B"},{id:"\u8BE6\u7EC6\u4FE1\u606F",depth:4,title:"\u8BE6\u7EC6\u4FE1\u606F"}],ZY=[{value:"\u5185\u6838 API\uFF0C\u53C2\u8003: ",paraId:0,tocIndex:2},{value:"Auth",paraId:1,tocIndex:2},{value:"\u5185\u6838 API, \u53C2\u8003: ",paraId:2,tocIndex:3},{value:"BaseAuth",paraId:3,tocIndex:3},{value:"AuthModel",paraId:4,tocIndex:5},{value:" \u662F NocoBase \u5E94\u7528\u4E2D\u4F7F\u7528\u7684\u8BA4\u8BC1\u5668 (",paraId:4,tocIndex:5},{value:"Authenticator",paraId:4,tocIndex:5},{value:", \u53C2\u8003: ",paraId:4,tocIndex:5},{value:"AuthManager - setStorer",paraId:5,tocIndex:5},{value:" \u548C ",paraId:4,tocIndex:5},{value:"Auth - constructor",paraId:6,tocIndex:5},{value:") \u6570\u636E\u6A21\u578B\uFF0C\u63D0\u4F9B\u4E86\u4E00\u4E9B\u548C\u7528\u6237\u6570\u636E\u8868\u4EA4\u4E92\u7684\u65B9\u6CD5\u3002\u9664\u6B64\u4E4B\u5916\uFF0C\u4E5F\u53EF\u4EE5\u4F7F\u7528 Sequelize Model \u63D0\u4F9B\u7684\u65B9\u6CD5\u3002",paraId:4,tocIndex:5},{value:`import { AuthModel } from '@nocobase/plugin-auth'; class CustomAuth extends BaseAuth { async validate() { @@ -17844,7 +17897,7 @@ class CustomAuthPlugin extends Plugin { AdminSettingsForm: ComponentType; }>; }; -`,paraId:18,tocIndex:10},{value:"SignInForm",paraId:19,tocIndex:11},{value:" - \u767B\u5F55\u8868\u5355",paraId:19,tocIndex:11},{value:"SignInButton",paraId:19,tocIndex:11},{value:" - \u767B\u5F55\uFF08\u7B2C\u4E09\u65B9\uFF09\u6309\u94AE\uFF0C\u53EF\u4EE5\u548C\u767B\u5F55\u8868\u5355\u4E8C\u9009\u4E00",paraId:19,tocIndex:11},{value:"SignUpForm",paraId:19,tocIndex:11},{value:" - \u6CE8\u518C\u8868\u5355",paraId:19,tocIndex:11},{value:"AdminSettingsForm",paraId:19,tocIndex:11},{value:" - \u540E\u53F0\u914D\u7F6E\u8868\u5355",paraId:19,tocIndex:11}],YY={},QY={title:"\u5BA2\u6237\u7AEF",toc:"menu",filename:"docs/en-US/plugins/client/index.md",lastUpdated:1732240239e3,description:"\u4E3A NocoBase \u670D\u52A1\u7AEF\u63D0\u4F9B\u5BA2\u6237\u7AEF\u754C\u9762\u3002"},JY=[{id:"\u5BA2\u6237\u7AEF",depth:1,title:"\u5BA2\u6237\u7AEF"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"}],XY=[{value:"\u4E3A NocoBase \u670D\u52A1\u7AEF\u63D0\u4F9B\u5BA2\u6237\u7AEF\u754C\u9762\u3002",paraId:0,tocIndex:1},{value:"\u5185\u7F6E\u63D2\u4EF6\uFF0C\u65E0\u9700\u5355\u72EC\u5B89\u88C5\u3002",paraId:1,tocIndex:2}],eQ={},aQ={title:"\u5BFC\u51FA\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/export/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},tQ=[{id:"\u5BFC\u51FA\u6570\u636E",depth:1,title:"\u5BFC\u51FA\u6570\u636E"}],nQ=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],oQ={},rQ={title:"\u5BFC\u5165\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/import/index.md",lastUpdated:1732240239e3,description:"\u652F\u6301\u6570\u5B57\u548C\u767E\u5206\u6BD4\uFF0CN/A \u6216 - \u7684\u6587\u6848\u4F1A\u88AB\u8FC7\u6EE4\u6389"},dQ=[{id:"\u5BFC\u5165\u6570\u636E",depth:1,title:"\u5BFC\u5165\u6570\u636E"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u5BFC\u5165\u8BF4\u660E",depth:2,title:"\u5BFC\u5165\u8BF4\u660E"},{id:"\u6570\u5B57\u7C7B\u578B\u5B57\u6BB5",depth:3,title:"\u6570\u5B57\u7C7B\u578B\u5B57\u6BB5"},{id:"\u5E03\u5C14\u7C7B\u578B\u5B57\u6BB5",depth:3,title:"\u5E03\u5C14\u7C7B\u578B\u5B57\u6BB5"},{id:"\u65E5\u671F\u7C7B\u578B\u5B57\u6BB5",depth:3,title:"\u65E5\u671F\u7C7B\u578B\u5B57\u6BB5"},{id:"\u9009\u62E9\u7C7B\u578B\u5B57\u6BB5",depth:3,title:"\u9009\u62E9\u7C7B\u578B\u5B57\u6BB5"},{id:"\u4E2D\u56FD\u884C\u653F\u533A\u5B57\u6BB5",depth:3,title:"\u4E2D\u56FD\u884C\u653F\u533A\u5B57\u6BB5"},{id:"\u9644\u4EF6\u5B57\u6BB5",depth:3,title:"\u9644\u4EF6\u5B57\u6BB5"},{id:"\u5173\u7CFB\u7C7B\u578B\u5B57\u6BB5",depth:3,title:"\u5173\u7CFB\u7C7B\u578B\u5B57\u6BB5"},{id:"json-\u7C7B\u578B\u5B57\u6BB5",depth:3,title:"JSON \u7C7B\u578B\u5B57\u6BB5"},{id:"\u5730\u56FE\u51E0\u4F55\u56FE\u5F62\u7C7B\u578B",depth:3,title:"\u5730\u56FE\u51E0\u4F55\u56FE\u5F62\u7C7B\u578B"},{id:"\u81EA\u5B9A\u4E49\u5BFC\u5165\u683C\u5F0F",depth:2,title:"\u81EA\u5B9A\u4E49\u5BFC\u5165\u683C\u5F0F"}],iQ=[{value:"\u652F\u6301\u6570\u5B57\u548C\u767E\u5206\u6BD4\uFF0C",paraId:0,tocIndex:4},{value:"N/A",paraId:0,tocIndex:4},{value:" \u6216 ",paraId:0,tocIndex:4},{value:"-",paraId:0,tocIndex:4},{value:" \u7684\u6587\u6848\u4F1A\u88AB\u8FC7\u6EE4\u6389",paraId:0,tocIndex:4},{value:"\u6570\u5B571",paraId:1,tocIndex:4},{value:"\u767E\u5206\u6BD4",paraId:1,tocIndex:4},{value:"\u6570\u5B572",paraId:1,tocIndex:4},{value:"\u6570\u5B573",paraId:1,tocIndex:4},{value:"123",paraId:1,tocIndex:4},{value:"25%",paraId:1,tocIndex:4},{value:"N/A",paraId:1,tocIndex:4},{value:"-",paraId:1,tocIndex:4},{value:"\u8F6C JSON \u4E4B\u540E\u4E3A",paraId:2,tocIndex:4},{value:`{ +`,paraId:18,tocIndex:10},{value:"SignInForm",paraId:19,tocIndex:11},{value:" - \u767B\u5F55\u8868\u5355",paraId:19,tocIndex:11},{value:"SignInButton",paraId:19,tocIndex:11},{value:" - \u767B\u5F55\uFF08\u7B2C\u4E09\u65B9\uFF09\u6309\u94AE\uFF0C\u53EF\u4EE5\u548C\u767B\u5F55\u8868\u5355\u4E8C\u9009\u4E00",paraId:19,tocIndex:11},{value:"SignUpForm",paraId:19,tocIndex:11},{value:" - \u6CE8\u518C\u8868\u5355",paraId:19,tocIndex:11},{value:"AdminSettingsForm",paraId:19,tocIndex:11},{value:" - \u540E\u53F0\u914D\u7F6E\u8868\u5355",paraId:19,tocIndex:11}],YY={},QY={title:"\u5BA2\u6237\u7AEF",toc:"menu",filename:"docs/en-US/plugins/client/index.md",lastUpdated:173254844e4,description:"\u4E3A NocoBase \u670D\u52A1\u7AEF\u63D0\u4F9B\u5BA2\u6237\u7AEF\u754C\u9762\u3002"},JY=[{id:"\u5BA2\u6237\u7AEF",depth:1,title:"\u5BA2\u6237\u7AEF"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"}],XY=[{value:"\u4E3A NocoBase \u670D\u52A1\u7AEF\u63D0\u4F9B\u5BA2\u6237\u7AEF\u754C\u9762\u3002",paraId:0,tocIndex:1},{value:"\u5185\u7F6E\u63D2\u4EF6\uFF0C\u65E0\u9700\u5355\u72EC\u5B89\u88C5\u3002",paraId:1,tocIndex:2}],eQ={},aQ={title:"\u5BFC\u51FA\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/export/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},tQ=[{id:"\u5BFC\u51FA\u6570\u636E",depth:1,title:"\u5BFC\u51FA\u6570\u636E"}],nQ=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],oQ={},rQ={title:"\u5BFC\u5165\u6570\u636E",toc:"menu",filename:"docs/en-US/plugins/import/index.md",lastUpdated:173254844e4,description:"\u652F\u6301\u6570\u5B57\u548C\u767E\u5206\u6BD4\uFF0CN/A \u6216 - \u7684\u6587\u6848\u4F1A\u88AB\u8FC7\u6EE4\u6389"},dQ=[{id:"\u5BFC\u5165\u6570\u636E",depth:1,title:"\u5BFC\u5165\u6570\u636E"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u5BFC\u5165\u8BF4\u660E",depth:2,title:"\u5BFC\u5165\u8BF4\u660E"},{id:"\u6570\u5B57\u7C7B\u578B\u5B57\u6BB5",depth:3,title:"\u6570\u5B57\u7C7B\u578B\u5B57\u6BB5"},{id:"\u5E03\u5C14\u7C7B\u578B\u5B57\u6BB5",depth:3,title:"\u5E03\u5C14\u7C7B\u578B\u5B57\u6BB5"},{id:"\u65E5\u671F\u7C7B\u578B\u5B57\u6BB5",depth:3,title:"\u65E5\u671F\u7C7B\u578B\u5B57\u6BB5"},{id:"\u9009\u62E9\u7C7B\u578B\u5B57\u6BB5",depth:3,title:"\u9009\u62E9\u7C7B\u578B\u5B57\u6BB5"},{id:"\u4E2D\u56FD\u884C\u653F\u533A\u5B57\u6BB5",depth:3,title:"\u4E2D\u56FD\u884C\u653F\u533A\u5B57\u6BB5"},{id:"\u9644\u4EF6\u5B57\u6BB5",depth:3,title:"\u9644\u4EF6\u5B57\u6BB5"},{id:"\u5173\u7CFB\u7C7B\u578B\u5B57\u6BB5",depth:3,title:"\u5173\u7CFB\u7C7B\u578B\u5B57\u6BB5"},{id:"json-\u7C7B\u578B\u5B57\u6BB5",depth:3,title:"JSON \u7C7B\u578B\u5B57\u6BB5"},{id:"\u5730\u56FE\u51E0\u4F55\u56FE\u5F62\u7C7B\u578B",depth:3,title:"\u5730\u56FE\u51E0\u4F55\u56FE\u5F62\u7C7B\u578B"},{id:"\u81EA\u5B9A\u4E49\u5BFC\u5165\u683C\u5F0F",depth:2,title:"\u81EA\u5B9A\u4E49\u5BFC\u5165\u683C\u5F0F"}],iQ=[{value:"\u652F\u6301\u6570\u5B57\u548C\u767E\u5206\u6BD4\uFF0C",paraId:0,tocIndex:4},{value:"N/A",paraId:0,tocIndex:4},{value:" \u6216 ",paraId:0,tocIndex:4},{value:"-",paraId:0,tocIndex:4},{value:" \u7684\u6587\u6848\u4F1A\u88AB\u8FC7\u6EE4\u6389",paraId:0,tocIndex:4},{value:"\u6570\u5B571",paraId:1,tocIndex:4},{value:"\u767E\u5206\u6BD4",paraId:1,tocIndex:4},{value:"\u6570\u5B572",paraId:1,tocIndex:4},{value:"\u6570\u5B573",paraId:1,tocIndex:4},{value:"123",paraId:1,tocIndex:4},{value:"25%",paraId:1,tocIndex:4},{value:"N/A",paraId:1,tocIndex:4},{value:"-",paraId:1,tocIndex:4},{value:"\u8F6C JSON \u4E4B\u540E\u4E3A",paraId:2,tocIndex:4},{value:`{ "\u6570\u5B571": 123, "\u767E\u5206\u6BD4": 0.25, "\u6570\u5B572": null, @@ -17913,7 +17966,7 @@ db.registerFieldValueParsers({ `,paraId:36,tocIndex:13},{value:"\u5BFC\u5165\u793A\u4F8B",paraId:37,tocIndex:13},{value:"Point",paraId:38,tocIndex:13},{value:"1,2",paraId:38,tocIndex:13},{value:"\u8F6C JSON \u4E4B\u540E\u4E3A",paraId:39,tocIndex:13},{value:`{ "Point": [1,2] } -`,paraId:40,tocIndex:13}],lQ={},cQ={title:"\u770B\u677F\u533A\u5757",toc:"menu",filename:"docs/en-US/plugins/kanban/index.md",lastUpdated:1732240239e3,description:"Kanban \uFF08\u770B\u677F\uFF09\u662F\u4E00\u79CD\u654F\u6377\u9879\u76EE\u7BA1\u7406\u5DE5\u5177\uFF0C\u65E8\u5728\u5B9E\u73B0\u5DE5\u4F5C\u53EF\u89C6\u5316\u3001\u9650\u5236\u8FDB\u884C\u4E2D\u7684\u5DE5\u4F5C\u6570\u91CF\u5E76\u6700\u5927\u9650\u5EA6\u5730\u63D0\u9AD8\u5DE5\u4F5C\u6548\u7387\uFF0C\u770B\u677F\u533A\u5757\u662F\u4EFB\u52A1\u7BA1\u7406\u7684\u7406\u60F3\u9009\u62E9\uFF0C\u5B83\u4EE5\u770B\u677F\u89C6\u56FE\u5C55\u793A\u6570\u636E\uFF0C\u652F\u6301\u76F4\u63A5\u62D6\u62FD\u8C03\u6574\u6570\u636E\u72B6\u6001\u3002"},sQ=[{id:"\u770B\u677F\u533A\u5757",depth:1,title:"\u770B\u677F\u533A\u5757"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u914D\u7F6E\u770B\u677F\u533A\u5757",depth:3,title:"\u914D\u7F6E\u770B\u677F\u533A\u5757"},{id:"\u5206\u7EC4\u5B57\u6BB5",depth:3,title:"\u5206\u7EC4\u5B57\u6BB5"},{id:"\u6570\u636E\u8303\u56F4",depth:3,title:"\u6570\u636E\u8303\u56F4"},{id:"\u5E94\u7528\u573A\u666F",depth:3,title:"\u5E94\u7528\u573A\u666F"}],uQ=[{value:"Kanban \uFF08\u770B\u677F\uFF09\u662F\u4E00\u79CD\u654F\u6377\u9879\u76EE\u7BA1\u7406\u5DE5\u5177\uFF0C\u65E8\u5728\u5B9E\u73B0\u5DE5\u4F5C\u53EF\u89C6\u5316\u3001\u9650\u5236\u8FDB\u884C\u4E2D\u7684\u5DE5\u4F5C\u6570\u91CF\u5E76\u6700\u5927\u9650\u5EA6\u5730\u63D0\u9AD8\u5DE5\u4F5C\u6548\u7387\uFF0C\u770B\u677F\u533A\u5757\u662F\u4EFB\u52A1\u7BA1\u7406\u7684\u7406\u60F3\u9009\u62E9\uFF0C\u5B83\u4EE5\u770B\u677F\u89C6\u56FE\u5C55\u793A\u6570\u636E\uFF0C\u652F\u6301\u76F4\u63A5\u62D6\u62FD\u8C03\u6574\u6570\u636E\u72B6\u6001\u3002",paraId:0,tocIndex:1},{value:"\u5728\u521B\u5EFA\u6216\u914D\u7F6E\u770B\u677F\u533A\u5757\u65F6\uFF0C\u9700\u8981\u9009\u62E9\u5355\u9009\u5B57\u6BB5\u4F5C\u4E3A\u5206\u7EC4\u5B57\u6BB5\uFF0C\u4EE5\u4FBF\u6839\u636E\u9009\u5B9A\u7684\u5355\u9009\u5B57\u6BB5\u503C\u6765\u5BF9\u6570\u636E\u8FDB\u884C\u5206\u7EC4\u548C\u5C55\u793A",paraId:1,tocIndex:3},{value:"\u6570\u636E\u8303\u56F4\u914D\u7F6E\u9879\u5141\u8BB8\u7528\u6237\u5B9A\u4E49\u533A\u5757\u6240\u663E\u793A\u7684\u6570\u636E\u7684\u9ED8\u8BA4\u7B5B\u9009\u6761\u4EF6\uFF0C\u652F\u6301\u8BBE\u7F6E\u53D8\u91CF/\u9759\u6001\u503C",paraId:2,tocIndex:4},{value:"\u8BA2\u5355\u5904\u7406\u770B\u677F\uFF1A\u8FFD\u8E2A\u548C\u7BA1\u7406\u8BA2\u5355\u7684\u751F\u547D\u5468\u671F\u3002 \u663E\u793A\u5F53\u524D\u8BA2\u5355\u72B6\u6001\u3001\u5F85\u5904\u7406\u8BA2\u5355\u3001\u5DF2\u53D1\u8D27\u8BA2\u5355\u7B49\u4FE1\u606F\uFF0C\u4EE5\u4FBF\u56E2\u961F\u53EF\u4EE5\u8FC5\u901F\u8BC6\u522B\u548C\u5904\u7406\u8BA2\u5355\u6D41\u7A0B\u4E2D\u7684\u95EE\u9898",paraId:3,tocIndex:5},{value:"\u5E93\u5B58\u7BA1\u7406\u770B\u677F\uFF1A \u5B9E\u65F6\u76D1\u63A7\u548C\u7BA1\u7406\u5E93\u5B58\u6C34\u5E73\uFF0C\u53EF\u89C6\u5316\u5C55\u793A\u5404\u79CD\u5546\u54C1\u7684\u5E93\u5B58\u91CF\uFF0C\u4F4E\u5E93\u5B58\u6216\u8FC7\u5269\u5E93\u5B58\uFF0C\u652F\u6301\u5FEB\u901F\u7684\u5E93\u5B58\u8C03\u6574\u548C\u8865\u8D27\u51B3\u7B56",paraId:3,tocIndex:5},{value:"\u5982\u56FE\u793A\u4F8B\u914D\u7F6E\u5E93\u5B58\u7BA1\u7406\u770B\u677F",paraId:4,tocIndex:5}],pQ={},IQ={title:"\u65E5\u5FD7",toc:"menu",filename:"docs/en-US/plugins/logger/index.md",lastUpdated:1732240239e3,description:"\u65E5\u5FD7\u662F\u5E2E\u52A9\u6211\u4EEC\u5B9A\u4F4D\u7CFB\u7EDF\u95EE\u9898\u7684\u91CD\u8981\u624B\u6BB5\u3002NocoBase \u7684\u670D\u52A1\u7AEF\u65E5\u5FD7\u4E3B\u8981\u5305\u62EC\u63A5\u53E3\u8BF7\u6C42\u65E5\u5FD7\u548C\u7CFB\u7EDF\u8FD0\u884C\u65E5\u5FD7\uFF0C\u652F\u6301\u65E5\u5FD7\u7EA7\u522B\u3001\u6EDA\u52A8\u7B56\u7565\u3001\u5927\u5C0F\u3001\u6253\u5370\u683C\u5F0F\u7B49\u914D\u7F6E\u3002\u672C\u7BC7\u6587\u6863\u4E3B\u8981\u4ECB\u7ECD NocoBase \u670D\u52A1\u7AEF\u65E5\u5FD7\u7684\u76F8\u5173\u5185\u5BB9\uFF0C\u4EE5\u53CA\u5982\u4F55\u4F7F\u7528\u65E5\u5FD7\u63D2\u4EF6\u63D0\u4F9B\u7684\u670D\u52A1\u7AEF\u65E5\u5FD7\u6253\u5305\u548C\u4E0B\u8F7D\u7684\u529F\u80FD\u3002"},_Q=[{id:"\u65E5\u5FD7",depth:1,title:"\u65E5\u5FD7"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u65E5\u5FD7\u914D\u7F6E",depth:2,title:"\u65E5\u5FD7\u914D\u7F6E"},{id:"\u65E5\u5FD7\u683C\u5F0F",depth:2,title:"\u65E5\u5FD7\u683C\u5F0F"},{id:"console",depth:3,title:"console"},{id:"json",depth:3,title:"json"},{id:"logfmt",depth:3,title:"logfmt"},{id:"delimiter",depth:3,title:"delimiter"},{id:"\u65E5\u5FD7\u76EE\u5F55",depth:2,title:"\u65E5\u5FD7\u76EE\u5F55"},{id:"\u65E5\u5FD7\u6587\u4EF6",depth:2,title:"\u65E5\u5FD7\u6587\u4EF6"},{id:"\u8BF7\u6C42\u65E5\u5FD7",depth:3,title:"\u8BF7\u6C42\u65E5\u5FD7"},{id:"\u7CFB\u7EDF\u65E5\u5FD7",depth:3,title:"\u7CFB\u7EDF\u65E5\u5FD7"},{id:"sql-\u6267\u884C\u65E5\u5FD7",depth:3,title:"SQL \u6267\u884C\u65E5\u5FD7"},{id:"\u65E5\u5FD7\u6253\u5305\u4E0B\u8F7D",depth:2,title:"\u65E5\u5FD7\u6253\u5305\u4E0B\u8F7D"},{id:"\u76F8\u5173\u6587\u6863",depth:2,title:"\u76F8\u5173\u6587\u6863"}],vQ=[{value:"\u65E5\u5FD7\u662F\u5E2E\u52A9\u6211\u4EEC\u5B9A\u4F4D\u7CFB\u7EDF\u95EE\u9898\u7684\u91CD\u8981\u624B\u6BB5\u3002NocoBase \u7684\u670D\u52A1\u7AEF\u65E5\u5FD7\u4E3B\u8981\u5305\u62EC\u63A5\u53E3\u8BF7\u6C42\u65E5\u5FD7\u548C\u7CFB\u7EDF\u8FD0\u884C\u65E5\u5FD7\uFF0C\u652F\u6301\u65E5\u5FD7\u7EA7\u522B\u3001\u6EDA\u52A8\u7B56\u7565\u3001\u5927\u5C0F\u3001\u6253\u5370\u683C\u5F0F\u7B49\u914D\u7F6E\u3002\u672C\u7BC7\u6587\u6863\u4E3B\u8981\u4ECB\u7ECD NocoBase \u670D\u52A1\u7AEF\u65E5\u5FD7\u7684\u76F8\u5173\u5185\u5BB9\uFF0C\u4EE5\u53CA\u5982\u4F55\u4F7F\u7528\u65E5\u5FD7\u63D2\u4EF6\u63D0\u4F9B\u7684\u670D\u52A1\u7AEF\u65E5\u5FD7\u6253\u5305\u548C\u4E0B\u8F7D\u7684\u529F\u80FD\u3002",paraId:0,tocIndex:1},{value:"\u7528\u6237\u53EF\u4EE5\u901A\u8FC7 ",paraId:1,tocIndex:2},{value:"\u73AF\u5883\u53D8\u91CF",paraId:2,tocIndex:2},{value:" \u914D\u7F6E\u65E5\u5FD7\u7EA7\u522B\u3001\u8F93\u51FA\u65B9\u5F0F\u3001\u6253\u5370\u683C\u5F0F\u7B49\u7684\u65E5\u5FD7\u76F8\u5173\u53C2\u6570\u3002",paraId:1,tocIndex:2},{value:"NocoBase \u652F\u6301\u914D\u7F6E4\u79CD\u4E0D\u540C\u7684\u65E5\u5FD7\u683C\u5F0F\u3002",paraId:3,tocIndex:3},{value:"console",paraId:4},{value:"\u5F00\u53D1\u73AF\u5883\u9ED8\u8BA4\u683C\u5F0F\uFF0C\u6D88\u606F\u4EE5\u9AD8\u4EAE\u989C\u8272\u663E\u793A\u3002",paraId:5,tocIndex:4},{value:`2023-12-30 22:40:06 [info ] response method=GET path=/api/uiSchemas:getJsonSchema/nocobase-admin-menu res={"status":200} action={"actionName":"getJsonSchema","resourceName":"uiSchemas","params":{"filterByTk":"nocobase-admin-menu","resourceName":"uiSchemas","resourceIndex":"nocobase-admin-menu","actionName":"getJsonSchema"}} userId=1 status=200 cost=5 app=main reqId=ccf4e3bd-beb0-4350-af6e-b1fc1d9b6c3f +`,paraId:40,tocIndex:13}],lQ={},cQ={title:"\u770B\u677F\u533A\u5757",toc:"menu",filename:"docs/en-US/plugins/kanban/index.md",lastUpdated:173254844e4,description:"Kanban \uFF08\u770B\u677F\uFF09\u662F\u4E00\u79CD\u654F\u6377\u9879\u76EE\u7BA1\u7406\u5DE5\u5177\uFF0C\u65E8\u5728\u5B9E\u73B0\u5DE5\u4F5C\u53EF\u89C6\u5316\u3001\u9650\u5236\u8FDB\u884C\u4E2D\u7684\u5DE5\u4F5C\u6570\u91CF\u5E76\u6700\u5927\u9650\u5EA6\u5730\u63D0\u9AD8\u5DE5\u4F5C\u6548\u7387\uFF0C\u770B\u677F\u533A\u5757\u662F\u4EFB\u52A1\u7BA1\u7406\u7684\u7406\u60F3\u9009\u62E9\uFF0C\u5B83\u4EE5\u770B\u677F\u89C6\u56FE\u5C55\u793A\u6570\u636E\uFF0C\u652F\u6301\u76F4\u63A5\u62D6\u62FD\u8C03\u6574\u6570\u636E\u72B6\u6001\u3002"},sQ=[{id:"\u770B\u677F\u533A\u5757",depth:1,title:"\u770B\u677F\u533A\u5757"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u914D\u7F6E\u770B\u677F\u533A\u5757",depth:3,title:"\u914D\u7F6E\u770B\u677F\u533A\u5757"},{id:"\u5206\u7EC4\u5B57\u6BB5",depth:3,title:"\u5206\u7EC4\u5B57\u6BB5"},{id:"\u6570\u636E\u8303\u56F4",depth:3,title:"\u6570\u636E\u8303\u56F4"},{id:"\u5E94\u7528\u573A\u666F",depth:3,title:"\u5E94\u7528\u573A\u666F"}],uQ=[{value:"Kanban \uFF08\u770B\u677F\uFF09\u662F\u4E00\u79CD\u654F\u6377\u9879\u76EE\u7BA1\u7406\u5DE5\u5177\uFF0C\u65E8\u5728\u5B9E\u73B0\u5DE5\u4F5C\u53EF\u89C6\u5316\u3001\u9650\u5236\u8FDB\u884C\u4E2D\u7684\u5DE5\u4F5C\u6570\u91CF\u5E76\u6700\u5927\u9650\u5EA6\u5730\u63D0\u9AD8\u5DE5\u4F5C\u6548\u7387\uFF0C\u770B\u677F\u533A\u5757\u662F\u4EFB\u52A1\u7BA1\u7406\u7684\u7406\u60F3\u9009\u62E9\uFF0C\u5B83\u4EE5\u770B\u677F\u89C6\u56FE\u5C55\u793A\u6570\u636E\uFF0C\u652F\u6301\u76F4\u63A5\u62D6\u62FD\u8C03\u6574\u6570\u636E\u72B6\u6001\u3002",paraId:0,tocIndex:1},{value:"\u5728\u521B\u5EFA\u6216\u914D\u7F6E\u770B\u677F\u533A\u5757\u65F6\uFF0C\u9700\u8981\u9009\u62E9\u5355\u9009\u5B57\u6BB5\u4F5C\u4E3A\u5206\u7EC4\u5B57\u6BB5\uFF0C\u4EE5\u4FBF\u6839\u636E\u9009\u5B9A\u7684\u5355\u9009\u5B57\u6BB5\u503C\u6765\u5BF9\u6570\u636E\u8FDB\u884C\u5206\u7EC4\u548C\u5C55\u793A",paraId:1,tocIndex:3},{value:"\u6570\u636E\u8303\u56F4\u914D\u7F6E\u9879\u5141\u8BB8\u7528\u6237\u5B9A\u4E49\u533A\u5757\u6240\u663E\u793A\u7684\u6570\u636E\u7684\u9ED8\u8BA4\u7B5B\u9009\u6761\u4EF6\uFF0C\u652F\u6301\u8BBE\u7F6E\u53D8\u91CF/\u9759\u6001\u503C",paraId:2,tocIndex:4},{value:"\u8BA2\u5355\u5904\u7406\u770B\u677F\uFF1A\u8FFD\u8E2A\u548C\u7BA1\u7406\u8BA2\u5355\u7684\u751F\u547D\u5468\u671F\u3002 \u663E\u793A\u5F53\u524D\u8BA2\u5355\u72B6\u6001\u3001\u5F85\u5904\u7406\u8BA2\u5355\u3001\u5DF2\u53D1\u8D27\u8BA2\u5355\u7B49\u4FE1\u606F\uFF0C\u4EE5\u4FBF\u56E2\u961F\u53EF\u4EE5\u8FC5\u901F\u8BC6\u522B\u548C\u5904\u7406\u8BA2\u5355\u6D41\u7A0B\u4E2D\u7684\u95EE\u9898",paraId:3,tocIndex:5},{value:"\u5E93\u5B58\u7BA1\u7406\u770B\u677F\uFF1A \u5B9E\u65F6\u76D1\u63A7\u548C\u7BA1\u7406\u5E93\u5B58\u6C34\u5E73\uFF0C\u53EF\u89C6\u5316\u5C55\u793A\u5404\u79CD\u5546\u54C1\u7684\u5E93\u5B58\u91CF\uFF0C\u4F4E\u5E93\u5B58\u6216\u8FC7\u5269\u5E93\u5B58\uFF0C\u652F\u6301\u5FEB\u901F\u7684\u5E93\u5B58\u8C03\u6574\u548C\u8865\u8D27\u51B3\u7B56",paraId:3,tocIndex:5},{value:"\u5982\u56FE\u793A\u4F8B\u914D\u7F6E\u5E93\u5B58\u7BA1\u7406\u770B\u677F",paraId:4,tocIndex:5}],pQ={},IQ={title:"\u65E5\u5FD7",toc:"menu",filename:"docs/en-US/plugins/logger/index.md",lastUpdated:173254844e4,description:"\u65E5\u5FD7\u662F\u5E2E\u52A9\u6211\u4EEC\u5B9A\u4F4D\u7CFB\u7EDF\u95EE\u9898\u7684\u91CD\u8981\u624B\u6BB5\u3002NocoBase \u7684\u670D\u52A1\u7AEF\u65E5\u5FD7\u4E3B\u8981\u5305\u62EC\u63A5\u53E3\u8BF7\u6C42\u65E5\u5FD7\u548C\u7CFB\u7EDF\u8FD0\u884C\u65E5\u5FD7\uFF0C\u652F\u6301\u65E5\u5FD7\u7EA7\u522B\u3001\u6EDA\u52A8\u7B56\u7565\u3001\u5927\u5C0F\u3001\u6253\u5370\u683C\u5F0F\u7B49\u914D\u7F6E\u3002\u672C\u7BC7\u6587\u6863\u4E3B\u8981\u4ECB\u7ECD NocoBase \u670D\u52A1\u7AEF\u65E5\u5FD7\u7684\u76F8\u5173\u5185\u5BB9\uFF0C\u4EE5\u53CA\u5982\u4F55\u4F7F\u7528\u65E5\u5FD7\u63D2\u4EF6\u63D0\u4F9B\u7684\u670D\u52A1\u7AEF\u65E5\u5FD7\u6253\u5305\u548C\u4E0B\u8F7D\u7684\u529F\u80FD\u3002"},_Q=[{id:"\u65E5\u5FD7",depth:1,title:"\u65E5\u5FD7"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u65E5\u5FD7\u914D\u7F6E",depth:2,title:"\u65E5\u5FD7\u914D\u7F6E"},{id:"\u65E5\u5FD7\u683C\u5F0F",depth:2,title:"\u65E5\u5FD7\u683C\u5F0F"},{id:"console",depth:3,title:"console"},{id:"json",depth:3,title:"json"},{id:"logfmt",depth:3,title:"logfmt"},{id:"delimiter",depth:3,title:"delimiter"},{id:"\u65E5\u5FD7\u76EE\u5F55",depth:2,title:"\u65E5\u5FD7\u76EE\u5F55"},{id:"\u65E5\u5FD7\u6587\u4EF6",depth:2,title:"\u65E5\u5FD7\u6587\u4EF6"},{id:"\u8BF7\u6C42\u65E5\u5FD7",depth:3,title:"\u8BF7\u6C42\u65E5\u5FD7"},{id:"\u7CFB\u7EDF\u65E5\u5FD7",depth:3,title:"\u7CFB\u7EDF\u65E5\u5FD7"},{id:"sql-\u6267\u884C\u65E5\u5FD7",depth:3,title:"SQL \u6267\u884C\u65E5\u5FD7"},{id:"\u65E5\u5FD7\u6253\u5305\u4E0B\u8F7D",depth:2,title:"\u65E5\u5FD7\u6253\u5305\u4E0B\u8F7D"},{id:"\u76F8\u5173\u6587\u6863",depth:2,title:"\u76F8\u5173\u6587\u6863"}],vQ=[{value:"\u65E5\u5FD7\u662F\u5E2E\u52A9\u6211\u4EEC\u5B9A\u4F4D\u7CFB\u7EDF\u95EE\u9898\u7684\u91CD\u8981\u624B\u6BB5\u3002NocoBase \u7684\u670D\u52A1\u7AEF\u65E5\u5FD7\u4E3B\u8981\u5305\u62EC\u63A5\u53E3\u8BF7\u6C42\u65E5\u5FD7\u548C\u7CFB\u7EDF\u8FD0\u884C\u65E5\u5FD7\uFF0C\u652F\u6301\u65E5\u5FD7\u7EA7\u522B\u3001\u6EDA\u52A8\u7B56\u7565\u3001\u5927\u5C0F\u3001\u6253\u5370\u683C\u5F0F\u7B49\u914D\u7F6E\u3002\u672C\u7BC7\u6587\u6863\u4E3B\u8981\u4ECB\u7ECD NocoBase \u670D\u52A1\u7AEF\u65E5\u5FD7\u7684\u76F8\u5173\u5185\u5BB9\uFF0C\u4EE5\u53CA\u5982\u4F55\u4F7F\u7528\u65E5\u5FD7\u63D2\u4EF6\u63D0\u4F9B\u7684\u670D\u52A1\u7AEF\u65E5\u5FD7\u6253\u5305\u548C\u4E0B\u8F7D\u7684\u529F\u80FD\u3002",paraId:0,tocIndex:1},{value:"\u7528\u6237\u53EF\u4EE5\u901A\u8FC7 ",paraId:1,tocIndex:2},{value:"\u73AF\u5883\u53D8\u91CF",paraId:2,tocIndex:2},{value:" \u914D\u7F6E\u65E5\u5FD7\u7EA7\u522B\u3001\u8F93\u51FA\u65B9\u5F0F\u3001\u6253\u5370\u683C\u5F0F\u7B49\u7684\u65E5\u5FD7\u76F8\u5173\u53C2\u6570\u3002",paraId:1,tocIndex:2},{value:"NocoBase \u652F\u6301\u914D\u7F6E4\u79CD\u4E0D\u540C\u7684\u65E5\u5FD7\u683C\u5F0F\u3002",paraId:3,tocIndex:3},{value:"console",paraId:4},{value:"\u5F00\u53D1\u73AF\u5883\u9ED8\u8BA4\u683C\u5F0F\uFF0C\u6D88\u606F\u4EE5\u9AD8\u4EAE\u989C\u8272\u663E\u793A\u3002",paraId:5,tocIndex:4},{value:`2023-12-30 22:40:06 [info ] response method=GET path=/api/uiSchemas:getJsonSchema/nocobase-admin-menu res={"status":200} action={"actionName":"getJsonSchema","resourceName":"uiSchemas","params":{"filterByTk":"nocobase-admin-menu","resourceName":"uiSchemas","resourceIndex":"nocobase-admin-menu","actionName":"getJsonSchema"}} userId=1 status=200 cost=5 app=main reqId=ccf4e3bd-beb0-4350-af6e-b1fc1d9b6c3f 2023-12-30 22:43:12 [debug] Database dialect: mysql module=application method=install app=main reqId=31ffa8b5-f377-456b-a295-0c8a28938228 2023-12-30 22:43:12 [warn ] app is installed module=application method=install app=main reqId=31ffa8b5-f377-456b-a295-0c8a28938228 `,paraId:6,tocIndex:4},{value:"json",paraId:4},{value:"\u751F\u4EA7\u73AF\u5883\u9ED8\u8BA4\u683C\u5F0F",paraId:7,tocIndex:5},{value:`{ @@ -17940,13 +17993,13 @@ userId=undefined status=200 cost=14 `,paraId:12,tocIndex:7},{value:"NocoBase \u65E5\u5FD7\u6587\u4EF6\u7684\u4E3B\u8981\u76EE\u5F55\u7ED3\u6784\u4E3A\uFF1A",paraId:13,tocIndex:8},{value:"storage/logs",paraId:14,tocIndex:8},{value:` - \u65E5\u5FD7\u8F93\u51FA\u76EE\u5F55 `,paraId:14,tocIndex:8},{value:"main",paraId:15,tocIndex:8},{value:` - \u4E3B\u5E94\u7528\u540D\u79F0 `,paraId:15,tocIndex:8},{value:"request_YYYY-MM-DD.log",paraId:16,tocIndex:8},{value:" - \u8BF7\u6C42\u65E5\u5FD7",paraId:16,tocIndex:8},{value:"system_YYYY-MM-DD.log",paraId:16,tocIndex:8},{value:" - \u7CFB\u7EDF\u65E5\u5FD7",paraId:16,tocIndex:8},{value:"system_error_YYYY-MM-DD.log",paraId:16,tocIndex:8},{value:" - \u7CFB\u7EDF\u9519\u8BEF\u65E5\u5FD7",paraId:16,tocIndex:8},{value:"sql_YYYY-MM-DD.log",paraId:16,tocIndex:8},{value:" - SQL \u6267\u884C\u65E5\u5FD7",paraId:16,tocIndex:8},{value:"...",paraId:16,tocIndex:8},{value:"sub-app",paraId:15,tocIndex:8},{value:` - \u5B50\u5E94\u7528\u540D\u79F0 -`,paraId:15,tocIndex:8},{value:"request_YYYY-MM-DD.log",paraId:17,tocIndex:8},{value:"...",paraId:17,tocIndex:8},{value:"request_YYYY-MM-DD.log",paraId:18,tocIndex:10},{value:", \u63A5\u53E3\u8BF7\u6C42\u548C\u54CD\u5E94\u65E5\u5FD7\u3002",paraId:18,tocIndex:10},{value:"\u5B57\u6BB5",paraId:19,tocIndex:10},{value:"\u8BF4\u660E",paraId:19,tocIndex:10},{value:"level",paraId:19,tocIndex:10},{value:"\u65E5\u5FD7\u7EA7\u522B",paraId:19,tocIndex:10},{value:"timestamp",paraId:19,tocIndex:10},{value:"\u65E5\u5FD7\u6253\u5370\u65F6\u95F4 ",paraId:19,tocIndex:10},{value:"YYYY-MM-DD hh:mm:ss",paraId:19,tocIndex:10},{value:"message",paraId:19,tocIndex:10},{value:"request",paraId:19,tocIndex:10},{value:" \u6216 ",paraId:19,tocIndex:10},{value:"response",paraId:19,tocIndex:10},{value:"userId",paraId:19,tocIndex:10},{value:"response",paraId:19,tocIndex:10},{value:" \u4E2D\u624D\u6709",paraId:19,tocIndex:10},{value:"method",paraId:19,tocIndex:10},{value:"\u8BF7\u6C42\u65B9\u6CD5",paraId:19,tocIndex:10},{value:"path",paraId:19,tocIndex:10},{value:"\u8BF7\u6C42\u8DEF\u5F84",paraId:19,tocIndex:10},{value:"req",paraId:19,tocIndex:10},{value:" / ",paraId:19,tocIndex:10},{value:"res",paraId:19,tocIndex:10},{value:"\u8BF7\u6C42/\u54CD\u5E94\u5185\u5BB9",paraId:19,tocIndex:10},{value:"action",paraId:19,tocIndex:10},{value:"\u8BF7\u6C42\u8D44\u6E90\u548C\u53C2\u6570",paraId:19,tocIndex:10},{value:"status",paraId:19,tocIndex:10},{value:"\u54CD\u5E94\u72B6\u6001\u7801",paraId:19,tocIndex:10},{value:"cost",paraId:19,tocIndex:10},{value:"\u8BF7\u6C42\u8017\u65F6",paraId:19,tocIndex:10},{value:"app",paraId:19,tocIndex:10},{value:"\u5F53\u524D\u5E94\u7528\u540D\u79F0",paraId:19,tocIndex:10},{value:"reqId",paraId:19,tocIndex:10},{value:"\u8BF7\u6C42 ID",paraId:19,tocIndex:10},{value:"reqId",paraId:20},{value:" \u4F1A\u901A\u8FC7 ",paraId:20},{value:"X-Request-Id",paraId:20},{value:" \u54CD\u5E94\u5934\u643A\u5E26\u7ED9\u524D\u7AEF\u3002",paraId:20},{value:"system_YYYY-MM-DD.log",paraId:21,tocIndex:11},{value:", \u5E94\u7528\u3001\u4E2D\u95F4\u4EF6\u3001\u63D2\u4EF6\u7B49\u7CFB\u7EDF\u8FD0\u884C\u65E5\u5FD7\uFF0C",paraId:21,tocIndex:11},{value:"error",paraId:21,tocIndex:11},{value:" \u7EA7\u522B\u65E5\u5FD7\u4F1A\u5355\u72EC\u6253\u5370\u5230 ",paraId:21,tocIndex:11},{value:"system_error_YYYY-MM-DD.log",paraId:21,tocIndex:11},{value:"\u5B57\u6BB5",paraId:22,tocIndex:11},{value:"\u8BF4\u660E",paraId:22,tocIndex:11},{value:"level",paraId:22,tocIndex:11},{value:"\u65E5\u5FD7\u7EA7\u522B",paraId:22,tocIndex:11},{value:"timestamp",paraId:22,tocIndex:11},{value:"\u65E5\u5FD7\u6253\u5370\u65F6\u95F4 ",paraId:22,tocIndex:11},{value:"YYYY-MM-DD hh:mm:ss",paraId:22,tocIndex:11},{value:"message",paraId:22,tocIndex:11},{value:"\u65E5\u5FD7\u6D88\u606F",paraId:22,tocIndex:11},{value:"module",paraId:22,tocIndex:11},{value:"\u6A21\u5757",paraId:22,tocIndex:11},{value:"submodule",paraId:22,tocIndex:11},{value:"\u5B50\u6A21\u5757",paraId:22,tocIndex:11},{value:"method",paraId:22,tocIndex:11},{value:"\u8C03\u7528\u65B9\u6CD5",paraId:22,tocIndex:11},{value:"meta",paraId:22,tocIndex:11},{value:"\u5176\u4ED6\u76F8\u5173\u4FE1\u606F, JSON \u683C\u5F0F",paraId:22,tocIndex:11},{value:"app",paraId:22,tocIndex:11},{value:"\u5F53\u524D\u5E94\u7528\u540D\u79F0",paraId:22,tocIndex:11},{value:"reqId",paraId:22,tocIndex:11},{value:"\u8BF7\u6C42 ID",paraId:22,tocIndex:11},{value:"sql_YYYY-MM-DD.log",paraId:23,tocIndex:12},{value:", \u6570\u636E\u5E93 SQL \u6267\u884C\u65E5\u5FD7\u3002\u5176\u4E2D ",paraId:23,tocIndex:12},{value:"INSERT INTO",paraId:23,tocIndex:12},{value:" \u8BED\u53E5\u4EC5\u4FDD\u7559\u524D 2000 \u4E2A\u5B57\u7B26\u3002",paraId:23,tocIndex:12},{value:"\u5B57\u6BB5",paraId:24,tocIndex:12},{value:"\u8BF4\u660E",paraId:24,tocIndex:12},{value:"level",paraId:24,tocIndex:12},{value:"\u65E5\u5FD7\u7EA7\u522B",paraId:24,tocIndex:12},{value:"timestamp",paraId:24,tocIndex:12},{value:"\u65E5\u5FD7\u6253\u5370\u65F6\u95F4 ",paraId:24,tocIndex:12},{value:"YYYY-MM-DD hh:mm:ss",paraId:24,tocIndex:12},{value:"sql",paraId:24,tocIndex:12},{value:"SQL \u8BED\u53E5",paraId:24,tocIndex:12},{value:"app",paraId:24,tocIndex:12},{value:"\u5F53\u524D\u5E94\u7528\u540D\u79F0",paraId:24,tocIndex:12},{value:"reqId",paraId:24,tocIndex:12},{value:"\u8BF7\u6C42 ID",paraId:24,tocIndex:12},{value:"\u8FDB\u5165\u65E5\u5FD7\u7BA1\u7406\u9875\u9762\u3002",paraId:25,tocIndex:13},{value:"\u9009\u62E9\u60F3\u8981\u4E0B\u8F7D\u7684\u65E5\u5FD7\u6587\u4EF6\u3002",paraId:25,tocIndex:13},{value:"\u70B9\u51FB\u4E0B\u8F7D (Download) \u6309\u94AE\u3002",paraId:25,tocIndex:13},{value:"\u63D2\u4EF6\u5F00\u53D1 - \u670D\u52A1\u7AEF - \u65E5\u5FD7",paraId:26,tocIndex:14},{value:"API\u53C2\u8003 - @nocobase/logger",paraId:27,tocIndex:14}],mQ={},hQ={title:"Shared",toc:"menu",filename:"docs/en-US/api/database/shared.md",lastUpdated:1732240239e3,description:"\u53C2\u6570"},fQ=[],xQ=[{value:"\u53C2\u6570",paraId:0},{value:"\u53C2\u6570\u540D",paraId:1},{value:"\u7C7B\u578B",paraId:1},{value:"\u9ED8\u8BA4\u503C",paraId:1},{value:"\u63CF\u8FF0",paraId:1},{value:"options.values",paraId:1},{value:"M",paraId:1},{value:"{}",paraId:1},{value:"\u63D2\u5165\u7684\u6570\u636E\u5BF9\u8C61",paraId:1},{value:"options.whitelist?",paraId:1},{value:"string[]",paraId:1},{value:"-",paraId:1},{value:"values",paraId:1},{value:" \u5B57\u6BB5\u7684\u767D\u540D\u5355\uFF0C\u53EA\u6709\u540D\u5355\u5185\u7684\u5B57\u6BB5\u4F1A\u88AB\u5B58\u50A8",paraId:1},{value:"options.blacklist?",paraId:1},{value:"string[]",paraId:1},{value:"-",paraId:1},{value:"values",paraId:1},{value:" \u5B57\u6BB5\u7684\u9ED1\u540D\u5355\uFF0C\u540D\u5355\u5185\u7684\u5B57\u6BB5\u4E0D\u4F1A\u88AB\u5B58\u50A8",paraId:1},{value:"options.transaction?",paraId:1},{value:"Transaction",paraId:1},{value:"-",paraId:1},{value:"\u4E8B\u52A1",paraId:1}],gQ={},bQ={title:"Destroy Options",toc:"menu",filename:"docs/en-US/api/database/shared/destroy-options.md",lastUpdated:1732240239e3,description:"\u7C7B\u578B"},yQ=[],wQ=[{value:"\u7C7B\u578B",paraId:0},{value:`interface DestroyOptions extends SequelizeDestroyOptions { +`,paraId:15,tocIndex:8},{value:"request_YYYY-MM-DD.log",paraId:17,tocIndex:8},{value:"...",paraId:17,tocIndex:8},{value:"request_YYYY-MM-DD.log",paraId:18,tocIndex:10},{value:", \u63A5\u53E3\u8BF7\u6C42\u548C\u54CD\u5E94\u65E5\u5FD7\u3002",paraId:18,tocIndex:10},{value:"\u5B57\u6BB5",paraId:19,tocIndex:10},{value:"\u8BF4\u660E",paraId:19,tocIndex:10},{value:"level",paraId:19,tocIndex:10},{value:"\u65E5\u5FD7\u7EA7\u522B",paraId:19,tocIndex:10},{value:"timestamp",paraId:19,tocIndex:10},{value:"\u65E5\u5FD7\u6253\u5370\u65F6\u95F4 ",paraId:19,tocIndex:10},{value:"YYYY-MM-DD hh:mm:ss",paraId:19,tocIndex:10},{value:"message",paraId:19,tocIndex:10},{value:"request",paraId:19,tocIndex:10},{value:" \u6216 ",paraId:19,tocIndex:10},{value:"response",paraId:19,tocIndex:10},{value:"userId",paraId:19,tocIndex:10},{value:"response",paraId:19,tocIndex:10},{value:" \u4E2D\u624D\u6709",paraId:19,tocIndex:10},{value:"method",paraId:19,tocIndex:10},{value:"\u8BF7\u6C42\u65B9\u6CD5",paraId:19,tocIndex:10},{value:"path",paraId:19,tocIndex:10},{value:"\u8BF7\u6C42\u8DEF\u5F84",paraId:19,tocIndex:10},{value:"req",paraId:19,tocIndex:10},{value:" / ",paraId:19,tocIndex:10},{value:"res",paraId:19,tocIndex:10},{value:"\u8BF7\u6C42/\u54CD\u5E94\u5185\u5BB9",paraId:19,tocIndex:10},{value:"action",paraId:19,tocIndex:10},{value:"\u8BF7\u6C42\u8D44\u6E90\u548C\u53C2\u6570",paraId:19,tocIndex:10},{value:"status",paraId:19,tocIndex:10},{value:"\u54CD\u5E94\u72B6\u6001\u7801",paraId:19,tocIndex:10},{value:"cost",paraId:19,tocIndex:10},{value:"\u8BF7\u6C42\u8017\u65F6",paraId:19,tocIndex:10},{value:"app",paraId:19,tocIndex:10},{value:"\u5F53\u524D\u5E94\u7528\u540D\u79F0",paraId:19,tocIndex:10},{value:"reqId",paraId:19,tocIndex:10},{value:"\u8BF7\u6C42 ID",paraId:19,tocIndex:10},{value:"reqId",paraId:20},{value:" \u4F1A\u901A\u8FC7 ",paraId:20},{value:"X-Request-Id",paraId:20},{value:" \u54CD\u5E94\u5934\u643A\u5E26\u7ED9\u524D\u7AEF\u3002",paraId:20},{value:"system_YYYY-MM-DD.log",paraId:21,tocIndex:11},{value:", \u5E94\u7528\u3001\u4E2D\u95F4\u4EF6\u3001\u63D2\u4EF6\u7B49\u7CFB\u7EDF\u8FD0\u884C\u65E5\u5FD7\uFF0C",paraId:21,tocIndex:11},{value:"error",paraId:21,tocIndex:11},{value:" \u7EA7\u522B\u65E5\u5FD7\u4F1A\u5355\u72EC\u6253\u5370\u5230 ",paraId:21,tocIndex:11},{value:"system_error_YYYY-MM-DD.log",paraId:21,tocIndex:11},{value:"\u5B57\u6BB5",paraId:22,tocIndex:11},{value:"\u8BF4\u660E",paraId:22,tocIndex:11},{value:"level",paraId:22,tocIndex:11},{value:"\u65E5\u5FD7\u7EA7\u522B",paraId:22,tocIndex:11},{value:"timestamp",paraId:22,tocIndex:11},{value:"\u65E5\u5FD7\u6253\u5370\u65F6\u95F4 ",paraId:22,tocIndex:11},{value:"YYYY-MM-DD hh:mm:ss",paraId:22,tocIndex:11},{value:"message",paraId:22,tocIndex:11},{value:"\u65E5\u5FD7\u6D88\u606F",paraId:22,tocIndex:11},{value:"module",paraId:22,tocIndex:11},{value:"\u6A21\u5757",paraId:22,tocIndex:11},{value:"submodule",paraId:22,tocIndex:11},{value:"\u5B50\u6A21\u5757",paraId:22,tocIndex:11},{value:"method",paraId:22,tocIndex:11},{value:"\u8C03\u7528\u65B9\u6CD5",paraId:22,tocIndex:11},{value:"meta",paraId:22,tocIndex:11},{value:"\u5176\u4ED6\u76F8\u5173\u4FE1\u606F, JSON \u683C\u5F0F",paraId:22,tocIndex:11},{value:"app",paraId:22,tocIndex:11},{value:"\u5F53\u524D\u5E94\u7528\u540D\u79F0",paraId:22,tocIndex:11},{value:"reqId",paraId:22,tocIndex:11},{value:"\u8BF7\u6C42 ID",paraId:22,tocIndex:11},{value:"sql_YYYY-MM-DD.log",paraId:23,tocIndex:12},{value:", \u6570\u636E\u5E93 SQL \u6267\u884C\u65E5\u5FD7\u3002\u5176\u4E2D ",paraId:23,tocIndex:12},{value:"INSERT INTO",paraId:23,tocIndex:12},{value:" \u8BED\u53E5\u4EC5\u4FDD\u7559\u524D 2000 \u4E2A\u5B57\u7B26\u3002",paraId:23,tocIndex:12},{value:"\u5B57\u6BB5",paraId:24,tocIndex:12},{value:"\u8BF4\u660E",paraId:24,tocIndex:12},{value:"level",paraId:24,tocIndex:12},{value:"\u65E5\u5FD7\u7EA7\u522B",paraId:24,tocIndex:12},{value:"timestamp",paraId:24,tocIndex:12},{value:"\u65E5\u5FD7\u6253\u5370\u65F6\u95F4 ",paraId:24,tocIndex:12},{value:"YYYY-MM-DD hh:mm:ss",paraId:24,tocIndex:12},{value:"sql",paraId:24,tocIndex:12},{value:"SQL \u8BED\u53E5",paraId:24,tocIndex:12},{value:"app",paraId:24,tocIndex:12},{value:"\u5F53\u524D\u5E94\u7528\u540D\u79F0",paraId:24,tocIndex:12},{value:"reqId",paraId:24,tocIndex:12},{value:"\u8BF7\u6C42 ID",paraId:24,tocIndex:12},{value:"\u8FDB\u5165\u65E5\u5FD7\u7BA1\u7406\u9875\u9762\u3002",paraId:25,tocIndex:13},{value:"\u9009\u62E9\u60F3\u8981\u4E0B\u8F7D\u7684\u65E5\u5FD7\u6587\u4EF6\u3002",paraId:25,tocIndex:13},{value:"\u70B9\u51FB\u4E0B\u8F7D (Download) \u6309\u94AE\u3002",paraId:25,tocIndex:13},{value:"\u63D2\u4EF6\u5F00\u53D1 - \u670D\u52A1\u7AEF - \u65E5\u5FD7",paraId:26,tocIndex:14},{value:"API\u53C2\u8003 - @nocobase/logger",paraId:27,tocIndex:14}],mQ={},hQ={title:"Shared",toc:"menu",filename:"docs/en-US/api/database/shared.md",lastUpdated:173254844e4,description:"\u53C2\u6570"},fQ=[],xQ=[{value:"\u53C2\u6570",paraId:0},{value:"\u53C2\u6570\u540D",paraId:1},{value:"\u7C7B\u578B",paraId:1},{value:"\u9ED8\u8BA4\u503C",paraId:1},{value:"\u63CF\u8FF0",paraId:1},{value:"options.values",paraId:1},{value:"M",paraId:1},{value:"{}",paraId:1},{value:"\u63D2\u5165\u7684\u6570\u636E\u5BF9\u8C61",paraId:1},{value:"options.whitelist?",paraId:1},{value:"string[]",paraId:1},{value:"-",paraId:1},{value:"values",paraId:1},{value:" \u5B57\u6BB5\u7684\u767D\u540D\u5355\uFF0C\u53EA\u6709\u540D\u5355\u5185\u7684\u5B57\u6BB5\u4F1A\u88AB\u5B58\u50A8",paraId:1},{value:"options.blacklist?",paraId:1},{value:"string[]",paraId:1},{value:"-",paraId:1},{value:"values",paraId:1},{value:" \u5B57\u6BB5\u7684\u9ED1\u540D\u5355\uFF0C\u540D\u5355\u5185\u7684\u5B57\u6BB5\u4E0D\u4F1A\u88AB\u5B58\u50A8",paraId:1},{value:"options.transaction?",paraId:1},{value:"Transaction",paraId:1},{value:"-",paraId:1},{value:"\u4E8B\u52A1",paraId:1}],gQ={},bQ={title:"Destroy Options",toc:"menu",filename:"docs/en-US/api/database/shared/destroy-options.md",lastUpdated:173254844e4,description:"\u7C7B\u578B"},yQ=[],wQ=[{value:"\u7C7B\u578B",paraId:0},{value:`interface DestroyOptions extends SequelizeDestroyOptions { filter?: Filter; filterByTk?: TargetKey | TargetKey[]; truncate?: boolean; context?: any; } -`,paraId:1},{value:"\u8BE6\u7EC6\u4FE1\u606F",paraId:2},{value:"filter",paraId:3},{value:"\uFF1A\u6307\u5B9A\u8981\u5220\u9664\u7684\u8BB0\u5F55\u7684\u8FC7\u6EE4\u6761\u4EF6\u3002Filter \u8BE6\u7EC6\u7528\u6CD5\u53EF\u53C2\u8003 ",paraId:3},{value:"find()",paraId:4},{value:" \u65B9\u6CD5\u3002",paraId:3},{value:"filterByTk",paraId:3},{value:"\uFF1A\u6309 TargetKey \u6307\u5B9A\u8981\u5220\u9664\u7684\u8BB0\u5F55\u7684\u8FC7\u6EE4\u6761\u4EF6\u3002",paraId:3},{value:"truncate",paraId:3},{value:": \u662F\u5426\u6E05\u7A7A\u8868\u6570\u636E\uFF0C\u5728\u6CA1\u6709\u4F20\u5165 ",paraId:3},{value:"filter",paraId:3},{value:" \u6216 ",paraId:3},{value:"filterByTk",paraId:3},{value:" \u53C2\u6570\u65F6\u6709\u6548\u3002",paraId:3},{value:"transaction",paraId:3},{value:": \u4E8B\u52A1\u5BF9\u8C61\u3002\u5982\u679C\u6CA1\u6709\u4F20\u5165\u4E8B\u52A1\u53C2\u6570\uFF0C\u8BE5\u65B9\u6CD5\u4F1A\u81EA\u52A8\u521B\u5EFA\u4E00\u4E2A\u5185\u90E8\u4E8B\u52A1\u3002",paraId:3}],kQ={},SQ={title:"Create Options",toc:"menu",filename:"docs/en-US/api/database/shared/create-options.md",lastUpdated:1732240239e3,description:"\u7C7B\u578B"},UQ=[],PQ=[{value:"\u7C7B\u578B",paraId:0},{value:`type WhiteList = string[]; +`,paraId:1},{value:"\u8BE6\u7EC6\u4FE1\u606F",paraId:2},{value:"filter",paraId:3},{value:"\uFF1A\u6307\u5B9A\u8981\u5220\u9664\u7684\u8BB0\u5F55\u7684\u8FC7\u6EE4\u6761\u4EF6\u3002Filter \u8BE6\u7EC6\u7528\u6CD5\u53EF\u53C2\u8003 ",paraId:3},{value:"find()",paraId:4},{value:" \u65B9\u6CD5\u3002",paraId:3},{value:"filterByTk",paraId:3},{value:"\uFF1A\u6309 TargetKey \u6307\u5B9A\u8981\u5220\u9664\u7684\u8BB0\u5F55\u7684\u8FC7\u6EE4\u6761\u4EF6\u3002",paraId:3},{value:"truncate",paraId:3},{value:": \u662F\u5426\u6E05\u7A7A\u8868\u6570\u636E\uFF0C\u5728\u6CA1\u6709\u4F20\u5165 ",paraId:3},{value:"filter",paraId:3},{value:" \u6216 ",paraId:3},{value:"filterByTk",paraId:3},{value:" \u53C2\u6570\u65F6\u6709\u6548\u3002",paraId:3},{value:"transaction",paraId:3},{value:": \u4E8B\u52A1\u5BF9\u8C61\u3002\u5982\u679C\u6CA1\u6709\u4F20\u5165\u4E8B\u52A1\u53C2\u6570\uFF0C\u8BE5\u65B9\u6CD5\u4F1A\u81EA\u52A8\u521B\u5EFA\u4E00\u4E2A\u5185\u90E8\u4E8B\u52A1\u3002",paraId:3}],kQ={},SQ={title:"Create Options",toc:"menu",filename:"docs/en-US/api/database/shared/create-options.md",lastUpdated:173254844e4,description:"\u7C7B\u578B"},UQ=[],PQ=[{value:"\u7C7B\u578B",paraId:0},{value:`type WhiteList = string[]; type BlackList = string[]; type AssociationKeysToBeUpdate = string[]; @@ -17957,7 +18010,7 @@ interface CreateOptions extends SequelizeCreateOptions { updateAssociationValues?: AssociationKeysToBeUpdate; context?: any; } -`,paraId:1},{value:"\u8BE6\u7EC6\u4FE1\u606F",paraId:2},{value:"values",paraId:3},{value:"\uFF1A\u8981\u521B\u5EFA\u7684\u8BB0\u5F55\u7684\u6570\u636E\u5BF9\u8C61\u3002",paraId:3},{value:"whitelist",paraId:3},{value:"\uFF1A\u6307\u5B9A\u8981\u521B\u5EFA\u7684\u8BB0\u5F55\u7684\u6570\u636E\u5BF9\u8C61\u4E2D\uFF0C\u54EA\u4E9B\u5B57\u6BB5",paraId:3},{value:"\u53EF\u4EE5\u88AB\u5199\u5165",paraId:3},{value:"\u3002\u82E5\u4E0D\u4F20\u5165\u6B64\u53C2\u6570\uFF0C\u5219\u9ED8\u8BA4\u5141\u8BB8\u6240\u6709\u5B57\u6BB5\u5199\u5165\u3002",paraId:3},{value:"blacklist",paraId:3},{value:"\uFF1A\u6307\u5B9A\u8981\u521B\u5EFA\u7684\u8BB0\u5F55\u7684\u6570\u636E\u5BF9\u8C61\u4E2D\uFF0C\u54EA\u4E9B\u5B57\u6BB5",paraId:3},{value:"\u4E0D\u5141\u8BB8\u88AB\u5199\u5165",paraId:3},{value:"\u3002\u82E5\u4E0D\u4F20\u5165\u6B64\u53C2\u6570\uFF0C\u5219\u9ED8\u8BA4\u5141\u8BB8\u6240\u6709\u5B57\u6BB5\u5199\u5165\u3002",paraId:3},{value:"transaction",paraId:3},{value:": \u4E8B\u52A1\u5BF9\u8C61\u3002\u5982\u679C\u6CA1\u6709\u4F20\u5165\u4E8B\u52A1\u53C2\u6570\uFF0C\u8BE5\u65B9\u6CD5\u4F1A\u81EA\u52A8\u521B\u5EFA\u4E00\u4E2A\u5185\u90E8\u4E8B\u52A1\u3002",paraId:3}],TQ={},CQ={title:"Update Options",toc:"menu",filename:"docs/en-US/api/database/shared/update-options.md",lastUpdated:1732240239e3,description:"\u7C7B\u578B"},AQ=[],qQ=[{value:"\u7C7B\u578B",paraId:0},{value:`interface UpdateOptions extends Omit { +`,paraId:1},{value:"\u8BE6\u7EC6\u4FE1\u606F",paraId:2},{value:"values",paraId:3},{value:"\uFF1A\u8981\u521B\u5EFA\u7684\u8BB0\u5F55\u7684\u6570\u636E\u5BF9\u8C61\u3002",paraId:3},{value:"whitelist",paraId:3},{value:"\uFF1A\u6307\u5B9A\u8981\u521B\u5EFA\u7684\u8BB0\u5F55\u7684\u6570\u636E\u5BF9\u8C61\u4E2D\uFF0C\u54EA\u4E9B\u5B57\u6BB5",paraId:3},{value:"\u53EF\u4EE5\u88AB\u5199\u5165",paraId:3},{value:"\u3002\u82E5\u4E0D\u4F20\u5165\u6B64\u53C2\u6570\uFF0C\u5219\u9ED8\u8BA4\u5141\u8BB8\u6240\u6709\u5B57\u6BB5\u5199\u5165\u3002",paraId:3},{value:"blacklist",paraId:3},{value:"\uFF1A\u6307\u5B9A\u8981\u521B\u5EFA\u7684\u8BB0\u5F55\u7684\u6570\u636E\u5BF9\u8C61\u4E2D\uFF0C\u54EA\u4E9B\u5B57\u6BB5",paraId:3},{value:"\u4E0D\u5141\u8BB8\u88AB\u5199\u5165",paraId:3},{value:"\u3002\u82E5\u4E0D\u4F20\u5165\u6B64\u53C2\u6570\uFF0C\u5219\u9ED8\u8BA4\u5141\u8BB8\u6240\u6709\u5B57\u6BB5\u5199\u5165\u3002",paraId:3},{value:"transaction",paraId:3},{value:": \u4E8B\u52A1\u5BF9\u8C61\u3002\u5982\u679C\u6CA1\u6709\u4F20\u5165\u4E8B\u52A1\u53C2\u6570\uFF0C\u8BE5\u65B9\u6CD5\u4F1A\u81EA\u52A8\u521B\u5EFA\u4E00\u4E2A\u5185\u90E8\u4E8B\u52A1\u3002",paraId:3}],TQ={},CQ={title:"Update Options",toc:"menu",filename:"docs/en-US/api/database/shared/update-options.md",lastUpdated:173254844e4,description:"\u7C7B\u578B"},AQ=[],qQ=[{value:"\u7C7B\u578B",paraId:0},{value:`interface UpdateOptions extends Omit { values: Values; filter?: Filter; filterByTk?: TargetKey; @@ -17966,8 +18019,8 @@ interface CreateOptions extends SequelizeCreateOptions { updateAssociationValues?: AssociationKeysToBeUpdate; context?: any; } -`,paraId:1},{value:"\u8BE6\u7EC6\u4FE1\u606F",paraId:2},{value:"values",paraId:3},{value:"\uFF1A\u8981\u66F4\u65B0\u7684\u8BB0\u5F55\u7684\u6570\u636E\u5BF9\u8C61\u3002",paraId:3},{value:"filter",paraId:3},{value:"\uFF1A\u6307\u5B9A\u8981\u66F4\u65B0\u7684\u8BB0\u5F55\u7684\u8FC7\u6EE4\u6761\u4EF6, Filter \u8BE6\u7EC6\u7528\u6CD5\u53EF\u53C2\u8003 ",paraId:3},{value:"find()",paraId:4},{value:" \u65B9\u6CD5\u3002",paraId:3},{value:"filterByTk",paraId:3},{value:"\uFF1A\u6309 TargetKey \u6307\u5B9A\u8981\u66F4\u65B0\u7684\u8BB0\u5F55\u7684\u8FC7\u6EE4\u6761\u4EF6\u3002",paraId:3},{value:"whitelist",paraId:3},{value:": ",paraId:3},{value:"values",paraId:3},{value:" \u5B57\u6BB5\u7684\u767D\u540D\u5355\uFF0C\u53EA\u6709\u540D\u5355\u5185\u7684\u5B57\u6BB5\u4F1A\u88AB\u5199\u5165\u3002",paraId:3},{value:"blacklist",paraId:3},{value:": ",paraId:3},{value:"values",paraId:3},{value:" \u5B57\u6BB5\u7684\u9ED1\u540D\u5355\uFF0C\u540D\u5355\u5185\u7684\u5B57\u6BB5\u4E0D\u4F1A\u88AB\u5199\u5165\u3002",paraId:3},{value:"transaction",paraId:3},{value:": \u4E8B\u52A1\u5BF9\u8C61\u3002\u5982\u679C\u6CA1\u6709\u4F20\u5165\u4E8B\u52A1\u53C2\u6570\uFF0C\u8BE5\u65B9\u6CD5\u4F1A\u81EA\u52A8\u521B\u5EFA\u4E00\u4E2A\u5185\u90E8\u4E8B\u52A1\u3002",paraId:3},{value:"filterByTk",paraId:5},{value:" \u4E0E ",paraId:5},{value:"filter",paraId:5},{value:" \u81F3\u5C11\u8981\u4F20\u5176\u4E00\u3002",paraId:5}],EQ={},DQ={title:"Find Options",toc:"menu",filename:"docs/en-US/api/database/shared/find-options.md",lastUpdated:1732240239e3},OQ=[],RQ=[],MQ={},LQ={title:"Transaction",toc:"menu",filename:"docs/en-US/api/database/shared/transaction.md",lastUpdated:1732240239e3},NQ=[],zQ=[{value:"transaction",paraId:0},{value:": \u4E8B\u52A1\u5BF9\u8C61\u3002\u5982\u679C\u6CA1\u6709\u4F20\u5165\u4E8B\u52A1\u53C2\u6570\uFF0C\u8BE5\u65B9\u6CD5\u4F1A\u81EA\u52A8\u521B\u5EFA\u4E00\u4E2A\u5185\u90E8\u4E8B\u52A1\u3002",paraId:0}],FQ={},BQ={title:"Find One",toc:"menu",filename:"docs/en-US/api/database/shared/find-one.md",lastUpdated:1732240239e3,description:"\u7C7B\u578B"},jQ=[],HQ=[{value:"\u7C7B\u578B",paraId:0},{value:`type FindOneOptions = Omit; -`,paraId:1},{value:"\u53C2\u6570",paraId:2},{value:"\u5927\u90E8\u5206\u53C2\u6570\u4E0E ",paraId:3},{value:"find()",paraId:3},{value:" \u76F8\u540C\uFF0C\u4E0D\u540C\u4E4B\u5904\u5728\u4E8E ",paraId:3},{value:"findOne()",paraId:3},{value:" \u53EA\u8FD4\u56DE\u5355\u6761\u6570\u636E\uFF0C\u6240\u4EE5\u4E0D\u9700\u8981 ",paraId:3},{value:"limit",paraId:3},{value:" \u53C2\u6570\uFF0C\u4E14\u67E5\u8BE2\u65F6\u59CB\u7EC8\u4E3A ",paraId:3},{value:"1",paraId:3},{value:"\u3002",paraId:3}],WQ={},$Q={title:"Trace",toc:"menu",filename:"docs/en-US/api/telemetry/trace.md",lastUpdated:1732240239e3,description:"Constructor to create a Trace instance."},GQ=[{id:"trace",depth:1,title:"Trace"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"init",depth:3,title:"init()"},{id:"signature-1",depth:4,title:"Signature"},{id:"registerprocessor",depth:3,title:"registerProcessor()"},{id:"signature-2",depth:4,title:"Signature"},{id:"type-1",depth:4,title:"Type"},{id:"details-1",depth:4,title:"Details"},{id:"gettracer",depth:3,title:"getTracer()"},{id:"signature-3",depth:4,title:"Signature"},{id:"details-2",depth:4,title:"Details"},{id:"start",depth:3,title:"start()"},{id:"signature-4",depth:4,title:"Signature"},{id:"shutdown",depth:3,title:"shutdown()"},{id:"signature-5",depth:4,title:"Signature"}],VQ=[{value:"constructor()",paraId:0},{value:"Constructor to create a ",paraId:1,tocIndex:2},{value:"Trace",paraId:1,tocIndex:2},{value:" instance.",paraId:1,tocIndex:2},{value:"constructor(options?: TraceOptions)",paraId:2,tocIndex:3},{value:`export type TraceOptions = { +`,paraId:1},{value:"\u8BE6\u7EC6\u4FE1\u606F",paraId:2},{value:"values",paraId:3},{value:"\uFF1A\u8981\u66F4\u65B0\u7684\u8BB0\u5F55\u7684\u6570\u636E\u5BF9\u8C61\u3002",paraId:3},{value:"filter",paraId:3},{value:"\uFF1A\u6307\u5B9A\u8981\u66F4\u65B0\u7684\u8BB0\u5F55\u7684\u8FC7\u6EE4\u6761\u4EF6, Filter \u8BE6\u7EC6\u7528\u6CD5\u53EF\u53C2\u8003 ",paraId:3},{value:"find()",paraId:4},{value:" \u65B9\u6CD5\u3002",paraId:3},{value:"filterByTk",paraId:3},{value:"\uFF1A\u6309 TargetKey \u6307\u5B9A\u8981\u66F4\u65B0\u7684\u8BB0\u5F55\u7684\u8FC7\u6EE4\u6761\u4EF6\u3002",paraId:3},{value:"whitelist",paraId:3},{value:": ",paraId:3},{value:"values",paraId:3},{value:" \u5B57\u6BB5\u7684\u767D\u540D\u5355\uFF0C\u53EA\u6709\u540D\u5355\u5185\u7684\u5B57\u6BB5\u4F1A\u88AB\u5199\u5165\u3002",paraId:3},{value:"blacklist",paraId:3},{value:": ",paraId:3},{value:"values",paraId:3},{value:" \u5B57\u6BB5\u7684\u9ED1\u540D\u5355\uFF0C\u540D\u5355\u5185\u7684\u5B57\u6BB5\u4E0D\u4F1A\u88AB\u5199\u5165\u3002",paraId:3},{value:"transaction",paraId:3},{value:": \u4E8B\u52A1\u5BF9\u8C61\u3002\u5982\u679C\u6CA1\u6709\u4F20\u5165\u4E8B\u52A1\u53C2\u6570\uFF0C\u8BE5\u65B9\u6CD5\u4F1A\u81EA\u52A8\u521B\u5EFA\u4E00\u4E2A\u5185\u90E8\u4E8B\u52A1\u3002",paraId:3},{value:"filterByTk",paraId:5},{value:" \u4E0E ",paraId:5},{value:"filter",paraId:5},{value:" \u81F3\u5C11\u8981\u4F20\u5176\u4E00\u3002",paraId:5}],EQ={},DQ={title:"Find Options",toc:"menu",filename:"docs/en-US/api/database/shared/find-options.md",lastUpdated:173254844e4},OQ=[],RQ=[],MQ={},LQ={title:"Transaction",toc:"menu",filename:"docs/en-US/api/database/shared/transaction.md",lastUpdated:173254844e4},NQ=[],zQ=[{value:"transaction",paraId:0},{value:": \u4E8B\u52A1\u5BF9\u8C61\u3002\u5982\u679C\u6CA1\u6709\u4F20\u5165\u4E8B\u52A1\u53C2\u6570\uFF0C\u8BE5\u65B9\u6CD5\u4F1A\u81EA\u52A8\u521B\u5EFA\u4E00\u4E2A\u5185\u90E8\u4E8B\u52A1\u3002",paraId:0}],FQ={},BQ={title:"Find One",toc:"menu",filename:"docs/en-US/api/database/shared/find-one.md",lastUpdated:173254844e4,description:"\u7C7B\u578B"},jQ=[],HQ=[{value:"\u7C7B\u578B",paraId:0},{value:`type FindOneOptions = Omit; +`,paraId:1},{value:"\u53C2\u6570",paraId:2},{value:"\u5927\u90E8\u5206\u53C2\u6570\u4E0E ",paraId:3},{value:"find()",paraId:3},{value:" \u76F8\u540C\uFF0C\u4E0D\u540C\u4E4B\u5904\u5728\u4E8E ",paraId:3},{value:"findOne()",paraId:3},{value:" \u53EA\u8FD4\u56DE\u5355\u6761\u6570\u636E\uFF0C\u6240\u4EE5\u4E0D\u9700\u8981 ",paraId:3},{value:"limit",paraId:3},{value:" \u53C2\u6570\uFF0C\u4E14\u67E5\u8BE2\u65F6\u59CB\u7EC8\u4E3A ",paraId:3},{value:"1",paraId:3},{value:"\u3002",paraId:3}],WQ={},$Q={title:"Trace",toc:"menu",filename:"docs/en-US/api/telemetry/trace.md",lastUpdated:173254844e4,description:"Constructor to create a Trace instance."},GQ=[{id:"trace",depth:1,title:"Trace"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"init",depth:3,title:"init()"},{id:"signature-1",depth:4,title:"Signature"},{id:"registerprocessor",depth:3,title:"registerProcessor()"},{id:"signature-2",depth:4,title:"Signature"},{id:"type-1",depth:4,title:"Type"},{id:"details-1",depth:4,title:"Details"},{id:"gettracer",depth:3,title:"getTracer()"},{id:"signature-3",depth:4,title:"Signature"},{id:"details-2",depth:4,title:"Details"},{id:"start",depth:3,title:"start()"},{id:"signature-4",depth:4,title:"Signature"},{id:"shutdown",depth:3,title:"shutdown()"},{id:"signature-5",depth:4,title:"Signature"}],VQ=[{value:"constructor()",paraId:0},{value:"Constructor to create a ",paraId:1,tocIndex:2},{value:"Trace",paraId:1,tocIndex:2},{value:" instance.",paraId:1,tocIndex:2},{value:"constructor(options?: TraceOptions)",paraId:2,tocIndex:3},{value:`export type TraceOptions = { tracerName?: string; version?: string; processorName?: string | string[]; @@ -17975,7 +18028,7 @@ interface CreateOptions extends SequelizeCreateOptions { `,paraId:3,tocIndex:4},{value:"Property",paraId:4,tocIndex:5},{value:"Type",paraId:4,tocIndex:5},{value:"Description",paraId:4,tocIndex:5},{value:"Default Value",paraId:4,tocIndex:5},{value:"tracerName",paraId:4,tocIndex:5},{value:"string",paraId:4,tocIndex:5},{value:"Trace identifier",paraId:4,tocIndex:5},{value:"nocobase-trace",paraId:4,tocIndex:5},{value:"version",paraId:4,tocIndex:5},{value:"string",paraId:4,tocIndex:5},{value:"Current version of NocoBase",paraId:4,tocIndex:5},{value:"processorName",paraId:4,tocIndex:5},{value:"string",paraId:4,tocIndex:5},{value:" | ",paraId:4,tocIndex:5},{value:"string[]",paraId:4,tocIndex:5},{value:"Identifier(s) of registered ",paraId:4,tocIndex:5},{value:"SpanProcessor",paraId:4,tocIndex:5},{value:" to use",paraId:4,tocIndex:5},{value:"-",paraId:4,tocIndex:5},{value:"init()",paraId:0},{value:"Initializes ",paraId:5,tocIndex:6},{value:"NodeTracerProvider",paraId:5,tocIndex:6},{value:".",paraId:5,tocIndex:6},{value:"init(): void",paraId:6,tocIndex:7},{value:"registerProcessor()",paraId:0},{value:"Registers a ",paraId:7,tocIndex:8},{value:"SpanProcessor",paraId:7,tocIndex:8},{value:".",paraId:7,tocIndex:8},{value:"registerProcessor(name: string, processor: GetSpanProcessor)",paraId:8,tocIndex:9},{value:`import { SpanProcessor } from '@opentelemetry/sdk-trace-base'; type GetSpanProcessor = () => SpanProcessor; -`,paraId:9,tocIndex:10},{value:"Parameter",paraId:10,tocIndex:11},{value:"Type",paraId:10,tocIndex:11},{value:"Description",paraId:10,tocIndex:11},{value:"name",paraId:10,tocIndex:11},{value:"string",paraId:10,tocIndex:11},{value:"Unique identifier for ",paraId:10,tocIndex:11},{value:"SpanProcessor",paraId:10,tocIndex:11},{value:"processor",paraId:10,tocIndex:11},{value:"() => SpanProcessor",paraId:10,tocIndex:11},{value:"Function to get ",paraId:10,tocIndex:11},{value:"SpanProcessor",paraId:10,tocIndex:11},{value:"getTracer()",paraId:0},{value:"Gets the ",paraId:11,tocIndex:12},{value:"Tracer",paraId:11,tocIndex:12},{value:".",paraId:11,tocIndex:12},{value:"getTracer(name?: string, version?: string)",paraId:12,tocIndex:13},{value:"Parameter",paraId:13,tocIndex:14},{value:"Type",paraId:13,tocIndex:14},{value:"Description",paraId:13,tocIndex:14},{value:"Default Value",paraId:13,tocIndex:14},{value:"name",paraId:13,tocIndex:14},{value:"string",paraId:13,tocIndex:14},{value:"Trace identifier",paraId:13,tocIndex:14},{value:"nocobase-trace",paraId:13,tocIndex:14},{value:"version",paraId:13,tocIndex:14},{value:"string",paraId:13,tocIndex:14},{value:"Current version of NocoBase",paraId:13,tocIndex:14},{value:"start()",paraId:0},{value:"Starts the ",paraId:14,tocIndex:15},{value:"SpanProcessor",paraId:14,tocIndex:15},{value:".",paraId:14,tocIndex:15},{value:"start(): void",paraId:15,tocIndex:16},{value:"shutdown()",paraId:0},{value:"Stops the ",paraId:16,tocIndex:17},{value:"SpanProcessor",paraId:16,tocIndex:17},{value:".",paraId:16,tocIndex:17},{value:"shutdown(): Promise",paraId:17,tocIndex:18}],KQ={},ZQ={title:"User Authentication",toc:"menu",filename:"docs/en-US/handbook/auth/index.md",lastUpdated:1732240239e3,description:"The user authentication module of NocoBase mainly consists of two parts:"},YQ=[{id:"user-authentication",depth:1,title:"User Authentication"},{id:"introduction",depth:2,title:"Introduction"}],QQ=[{value:"The user authentication module of NocoBase mainly consists of two parts:",paraId:0,tocIndex:1},{value:"The ",paraId:1,tocIndex:1},{value:"@nocobase/auth",paraId:1,tocIndex:1},{value:" in the kernel defines login, registration, verification and other user authentication related expandable interfaces and middleware, and is also used for registering and managing various extended authentication methods.",paraId:1,tocIndex:1},{value:"The ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-auth",paraId:1,tocIndex:1},{value:" in the plugin is used to initialize the authentication management module in the kernel, and also provides basic username (or email) / password authentication method.",paraId:1,tocIndex:1},{value:"It needs to be used in conjunction with the user management function provided by the ",paraId:2,tocIndex:1},{value:"@nocobase/plugin-users",paraId:3,tocIndex:1},{value:" plugin",paraId:3,tocIndex:1},{value:"In addition, NocoBase also provides other various user authentication method plugins",paraId:4,tocIndex:1},{value:"@nocobase/plugin-auth-sms",paraId:5,tocIndex:1},{value:" - Provides SMS verification login function",paraId:6,tocIndex:1},{value:"@nocobase/plugin-auth-saml",paraId:7,tocIndex:1},{value:" - Provides SAML SSO login function",paraId:6,tocIndex:1},{value:"@nocobase/plugin-auth-oidc",paraId:8,tocIndex:1},{value:" - Provides OIDC SSO login function",paraId:6,tocIndex:1},{value:"@nocobase/plugin-auth-cas",paraId:9,tocIndex:1},{value:" - Provides CAS SSO login function",paraId:6,tocIndex:1},{value:"Through the above plugins, after the administrator configures the corresponding authentication method, users can directly use the user identity provided by platforms such as Google Workspace, Microsoft Azure to log in to the system, and can also connect to Auth0, Logto, Keycloak and other platform tools. In addition, developers can also conveniently expand other authentication methods they need through the basic interfaces we provide.",paraId:10,tocIndex:1}],JQ={},XQ={title:"\u79FB\u52A8\u7AEF",toc:"menu",filename:"docs/en-US/manual/mobile/index.md",lastUpdated:1732240239e3,description:"\u63D0\u4F9B\u79FB\u52A8\u7AEF\u9875\u9762\u914D\u7F6E\u7684\u80FD\u529B\u3002"},eJ=[{id:"\u79FB\u52A8\u7AEF",depth:1,title:"\u79FB\u52A8\u7AEF"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u7528\u6CD5",depth:2,title:"\u7528\u6CD5"}],aJ=[{value:"\u63D0\u4F9B\u79FB\u52A8\u7AEF\u9875\u9762\u914D\u7F6E\u7684\u80FD\u529B\u3002",paraId:0,tocIndex:1},{value:"\u9884\u7F6E\u63D2\u4EF6\uFF0C\u9700\u8981\u5148\u6FC0\u6D3B\u624D\u80FD\u4F7F\u7528\u3002",paraId:1,tocIndex:2}],tJ={},nJ={title:"\u7518\u7279\u56FE",toc:"menu",filename:"docs/en-US/plugins/gantt/index.md",lastUpdated:1732240239e3,description:"\u7518\u7279\u56FE\u533A\u5757\u4EE5\u65F6\u95F4\u7EBF\u7684\u5F62\u5F0F\u5448\u73B0\u6570\u636E\uFF0C\u7528\u4E8E\u53EF\u89C6\u5316\u4EFB\u52A1\u3001\u9879\u76EE\u6216\u4E8B\u4EF6\u7684\u65F6\u95F4\u7EBF\u548C\u8FDB\u5EA6\u3002\u9002\u7528\u4E8E\u9879\u76EE\u7BA1\u7406\u3001\u4E8B\u4EF6\u8BA1\u5212\u3001\u5DE5\u7A0B\u8BA1\u5212\u548C\u4EFB\u52A1\u8C03\u5EA6\u7B49\u573A\u666F\uFF0C\u652F\u6301\u62D6\u62FD\u7518\u7279\u56FE\u6761\u5F62\u8C03\u6574\u4EFB\u52A1\u7684\u65F6\u95F4\u548C\u8FDB\u5EA6"},oJ=[{id:"\u7518\u7279\u56FE",depth:1,title:"\u7518\u7279\u56FE"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u7518\u7279\u56FE\u533A\u5757\u53C2\u6570\u914D\u7F6E",depth:3,title:"\u7518\u7279\u56FE\u533A\u5757\u53C2\u6570\u914D\u7F6E"},{id:"\u7528\u7518\u7279\u56FE\u7BA1\u7406\u6570\u636E",depth:3,title:"\u7528\u7518\u7279\u56FE\u7BA1\u7406\u6570\u636E"},{id:"\u5E94\u7528\u573A\u666F",depth:3,title:"\u5E94\u7528\u573A\u666F"}],rJ=[{value:"\u7518\u7279\u56FE\u533A\u5757\u4EE5\u65F6\u95F4\u7EBF\u7684\u5F62\u5F0F\u5448\u73B0\u6570\u636E\uFF0C\u7528\u4E8E\u53EF\u89C6\u5316\u4EFB\u52A1\u3001\u9879\u76EE\u6216\u4E8B\u4EF6\u7684\u65F6\u95F4\u7EBF\u548C\u8FDB\u5EA6\u3002\u9002\u7528\u4E8E\u9879\u76EE\u7BA1\u7406\u3001\u4E8B\u4EF6\u8BA1\u5212\u3001\u5DE5\u7A0B\u8BA1\u5212\u548C\u4EFB\u52A1\u8C03\u5EA6\u7B49\u573A\u666F\uFF0C\u652F\u6301\u62D6\u62FD\u7518\u7279\u56FE\u6761\u5F62\u8C03\u6574\u4EFB\u52A1\u7684\u65F6\u95F4\u548C\u8FDB\u5EA6",paraId:0,tocIndex:3},{value:"\u6807\u9898\u5B57\u6BB5\uFF1A\u7528\u4E8E\u663E\u793A\u5728\u7518\u7279\u56FE\u6761\u5F62\u4E0A\u7684\u4FE1\u606F",paraId:1,tocIndex:4},{value:"\u65F6\u95F4\u7F29\u653E\u7B49\u7EA7\uFF1A\u65F6\u95F4\u7F29\u653E\u7B49\u7EA7\uFF0C\u9ED8\u8BA4\u5929",paraId:1,tocIndex:4},{value:"\u5F00\u59CB\u65E5\u671F\u5B57\u6BB5\uFF1A\u6BCF\u4E2A\u4EFB\u52A1\u7684\u5F00\u59CB\u65E5\u671F\uFF0C\u5FC5\u586B",paraId:1,tocIndex:4},{value:"\u7ED3\u675F\u65E5\u671F\u5B57\u6BB5\uFF1A\u6BCF\u4E2A\u4EFB\u52A1\u7684\u7ED3\u675F\u65E5\u671F\uFF0C\u5FC5\u586B",paraId:1,tocIndex:4},{value:"\u8FDB\u5EA6\u5B57\u6BB5\uFF1A\u8BBE\u7F6E\u8868\u793A\u8FDB\u5EA6\uFF08\u767E\u5206\u6BD4\u5B57\u6BB5\uFF09\u7684\u5B57\u6BB5\uFF0C\u975E\u5FC5\u586B",paraId:1,tocIndex:4},{value:"\u62D6\u62FD\u6761\u5F62\u8C03\u6574\u4EFB\u52A1\u7684\u5F00\u59CB\u65E5\u671F\u548C\u7ED3\u675F\u65E5\u671F",paraId:2,tocIndex:5},{value:"\u62D6\u62FD\u8FDB\u5EA6\u6761\u8C03\u6574\u4EFB\u52A1\u7684\u8FDB\u5EA6",paraId:2,tocIndex:5},{value:"\u5904\u7406\u6D41\u7A0B\u53EF\u89C6\u5316\uFF1A\u5982\u5C06\u6574\u4E2A\u8FD0\u5355\u6D41\u7A0B\u5212\u5206\u4E3A\u4E0D\u540C\u7684\u4EFB\u52A1\u9636\u6BB5\uFF0C\u4F8B\u5982\u8BA2\u5355\u786E\u8BA4\u3001\u5305\u88C5\u3001\u53D1\u8D27\u3001\u8FD0\u8F93\u3001\u5230\u8FBE\u76EE\u7684\u5730\u7B49\u3002\u6BCF\u4E2A\u4EFB\u52A1\u9636\u6BB5\u90FD\u53EF\u4EE5\u5728\u7518\u7279\u56FE\u4E0A\u8868\u793A\u4E3A\u4E00\u4E2A\u6761\u5F62\uFF0C\u5176\u957F\u5EA6\u4EE3\u8868\u8BE5\u9636\u6BB5\u7684\u6301\u7EED\u65F6\u95F4",paraId:3,tocIndex:6}],dJ={},iJ={title:"\u7528\u6237",toc:"menu",filename:"docs/en-US/plugins/users/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},lJ=[{id:"\u7528\u6237",depth:1,title:"\u7528\u6237"}],cJ=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],sJ={},uJ={title:"BaseAuth",toc:"menu",filename:"docs/en-US/api/auth/base-auth.md",lastUpdated:1732240239e3,description:"BaseAuth inherits from the abstract class Auth and serves as the basic implementation for user authentication types, using JWT as the authentication method. In most cases, extending user authentication types can be achieved by inheriting from BaseAuth instead of directly inheriting from the Auth abstract class."},pJ=[{id:"baseauth",depth:1,title:"BaseAuth"},{id:"overview",depth:2,title:"Overview"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"details",depth:4,title:"Details"},{id:"user",depth:3,title:"user()"},{id:"signature-1",depth:4,title:"Signature"},{id:"check",depth:3,title:"check()"},{id:"signin",depth:3,title:"signIn()"},{id:"signup",depth:3,title:"signUp()"},{id:"signout",depth:3,title:"signOut()"},{id:"validate-",depth:3,title:"validate() *"}],IJ=[{value:"BaseAuth",paraId:0,tocIndex:1},{value:" inherits from the abstract class ",paraId:0,tocIndex:1},{value:"Auth",paraId:1,tocIndex:1},{value:" and serves as the basic implementation for user authentication types, using JWT as the authentication method. In most cases, extending user authentication types can be achieved by inheriting from ",paraId:0,tocIndex:1},{value:"BaseAuth",paraId:0,tocIndex:1},{value:" instead of directly inheriting from the ",paraId:0,tocIndex:1},{value:"Auth",paraId:0,tocIndex:1},{value:" abstract class.",paraId:0,tocIndex:1},{value:`class BasicAuth extends BaseAuth { +`,paraId:9,tocIndex:10},{value:"Parameter",paraId:10,tocIndex:11},{value:"Type",paraId:10,tocIndex:11},{value:"Description",paraId:10,tocIndex:11},{value:"name",paraId:10,tocIndex:11},{value:"string",paraId:10,tocIndex:11},{value:"Unique identifier for ",paraId:10,tocIndex:11},{value:"SpanProcessor",paraId:10,tocIndex:11},{value:"processor",paraId:10,tocIndex:11},{value:"() => SpanProcessor",paraId:10,tocIndex:11},{value:"Function to get ",paraId:10,tocIndex:11},{value:"SpanProcessor",paraId:10,tocIndex:11},{value:"getTracer()",paraId:0},{value:"Gets the ",paraId:11,tocIndex:12},{value:"Tracer",paraId:11,tocIndex:12},{value:".",paraId:11,tocIndex:12},{value:"getTracer(name?: string, version?: string)",paraId:12,tocIndex:13},{value:"Parameter",paraId:13,tocIndex:14},{value:"Type",paraId:13,tocIndex:14},{value:"Description",paraId:13,tocIndex:14},{value:"Default Value",paraId:13,tocIndex:14},{value:"name",paraId:13,tocIndex:14},{value:"string",paraId:13,tocIndex:14},{value:"Trace identifier",paraId:13,tocIndex:14},{value:"nocobase-trace",paraId:13,tocIndex:14},{value:"version",paraId:13,tocIndex:14},{value:"string",paraId:13,tocIndex:14},{value:"Current version of NocoBase",paraId:13,tocIndex:14},{value:"start()",paraId:0},{value:"Starts the ",paraId:14,tocIndex:15},{value:"SpanProcessor",paraId:14,tocIndex:15},{value:".",paraId:14,tocIndex:15},{value:"start(): void",paraId:15,tocIndex:16},{value:"shutdown()",paraId:0},{value:"Stops the ",paraId:16,tocIndex:17},{value:"SpanProcessor",paraId:16,tocIndex:17},{value:".",paraId:16,tocIndex:17},{value:"shutdown(): Promise",paraId:17,tocIndex:18}],KQ={},ZQ={title:"User Authentication",toc:"menu",filename:"docs/en-US/handbook/auth/index.md",lastUpdated:173254844e4,description:"The user authentication module of NocoBase mainly consists of two parts:"},YQ=[{id:"user-authentication",depth:1,title:"User Authentication"},{id:"introduction",depth:2,title:"Introduction"}],QQ=[{value:"The user authentication module of NocoBase mainly consists of two parts:",paraId:0,tocIndex:1},{value:"The ",paraId:1,tocIndex:1},{value:"@nocobase/auth",paraId:1,tocIndex:1},{value:" in the kernel defines login, registration, verification and other user authentication related expandable interfaces and middleware, and is also used for registering and managing various extended authentication methods.",paraId:1,tocIndex:1},{value:"The ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-auth",paraId:1,tocIndex:1},{value:" in the plugin is used to initialize the authentication management module in the kernel, and also provides basic username (or email) / password authentication method.",paraId:1,tocIndex:1},{value:"It needs to be used in conjunction with the user management function provided by the ",paraId:2,tocIndex:1},{value:"@nocobase/plugin-users",paraId:3,tocIndex:1},{value:" plugin",paraId:3,tocIndex:1},{value:"In addition, NocoBase also provides other various user authentication method plugins",paraId:4,tocIndex:1},{value:"@nocobase/plugin-auth-sms",paraId:5,tocIndex:1},{value:" - Provides SMS verification login function",paraId:6,tocIndex:1},{value:"@nocobase/plugin-auth-saml",paraId:7,tocIndex:1},{value:" - Provides SAML SSO login function",paraId:6,tocIndex:1},{value:"@nocobase/plugin-auth-oidc",paraId:8,tocIndex:1},{value:" - Provides OIDC SSO login function",paraId:6,tocIndex:1},{value:"@nocobase/plugin-auth-cas",paraId:9,tocIndex:1},{value:" - Provides CAS SSO login function",paraId:6,tocIndex:1},{value:"Through the above plugins, after the administrator configures the corresponding authentication method, users can directly use the user identity provided by platforms such as Google Workspace, Microsoft Azure to log in to the system, and can also connect to Auth0, Logto, Keycloak and other platform tools. In addition, developers can also conveniently expand other authentication methods they need through the basic interfaces we provide.",paraId:10,tocIndex:1}],JQ={},XQ={title:"\u79FB\u52A8\u7AEF",toc:"menu",filename:"docs/en-US/manual/mobile/index.md",lastUpdated:173254844e4,description:"\u63D0\u4F9B\u79FB\u52A8\u7AEF\u9875\u9762\u914D\u7F6E\u7684\u80FD\u529B\u3002"},eJ=[{id:"\u79FB\u52A8\u7AEF",depth:1,title:"\u79FB\u52A8\u7AEF"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u7528\u6CD5",depth:2,title:"\u7528\u6CD5"}],aJ=[{value:"\u63D0\u4F9B\u79FB\u52A8\u7AEF\u9875\u9762\u914D\u7F6E\u7684\u80FD\u529B\u3002",paraId:0,tocIndex:1},{value:"\u9884\u7F6E\u63D2\u4EF6\uFF0C\u9700\u8981\u5148\u6FC0\u6D3B\u624D\u80FD\u4F7F\u7528\u3002",paraId:1,tocIndex:2}],tJ={},nJ={title:"\u7518\u7279\u56FE",toc:"menu",filename:"docs/en-US/plugins/gantt/index.md",lastUpdated:173254844e4,description:"\u7518\u7279\u56FE\u533A\u5757\u4EE5\u65F6\u95F4\u7EBF\u7684\u5F62\u5F0F\u5448\u73B0\u6570\u636E\uFF0C\u7528\u4E8E\u53EF\u89C6\u5316\u4EFB\u52A1\u3001\u9879\u76EE\u6216\u4E8B\u4EF6\u7684\u65F6\u95F4\u7EBF\u548C\u8FDB\u5EA6\u3002\u9002\u7528\u4E8E\u9879\u76EE\u7BA1\u7406\u3001\u4E8B\u4EF6\u8BA1\u5212\u3001\u5DE5\u7A0B\u8BA1\u5212\u548C\u4EFB\u52A1\u8C03\u5EA6\u7B49\u573A\u666F\uFF0C\u652F\u6301\u62D6\u62FD\u7518\u7279\u56FE\u6761\u5F62\u8C03\u6574\u4EFB\u52A1\u7684\u65F6\u95F4\u548C\u8FDB\u5EA6"},oJ=[{id:"\u7518\u7279\u56FE",depth:1,title:"\u7518\u7279\u56FE"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u7518\u7279\u56FE\u533A\u5757\u53C2\u6570\u914D\u7F6E",depth:3,title:"\u7518\u7279\u56FE\u533A\u5757\u53C2\u6570\u914D\u7F6E"},{id:"\u7528\u7518\u7279\u56FE\u7BA1\u7406\u6570\u636E",depth:3,title:"\u7528\u7518\u7279\u56FE\u7BA1\u7406\u6570\u636E"},{id:"\u5E94\u7528\u573A\u666F",depth:3,title:"\u5E94\u7528\u573A\u666F"}],rJ=[{value:"\u7518\u7279\u56FE\u533A\u5757\u4EE5\u65F6\u95F4\u7EBF\u7684\u5F62\u5F0F\u5448\u73B0\u6570\u636E\uFF0C\u7528\u4E8E\u53EF\u89C6\u5316\u4EFB\u52A1\u3001\u9879\u76EE\u6216\u4E8B\u4EF6\u7684\u65F6\u95F4\u7EBF\u548C\u8FDB\u5EA6\u3002\u9002\u7528\u4E8E\u9879\u76EE\u7BA1\u7406\u3001\u4E8B\u4EF6\u8BA1\u5212\u3001\u5DE5\u7A0B\u8BA1\u5212\u548C\u4EFB\u52A1\u8C03\u5EA6\u7B49\u573A\u666F\uFF0C\u652F\u6301\u62D6\u62FD\u7518\u7279\u56FE\u6761\u5F62\u8C03\u6574\u4EFB\u52A1\u7684\u65F6\u95F4\u548C\u8FDB\u5EA6",paraId:0,tocIndex:3},{value:"\u6807\u9898\u5B57\u6BB5\uFF1A\u7528\u4E8E\u663E\u793A\u5728\u7518\u7279\u56FE\u6761\u5F62\u4E0A\u7684\u4FE1\u606F",paraId:1,tocIndex:4},{value:"\u65F6\u95F4\u7F29\u653E\u7B49\u7EA7\uFF1A\u65F6\u95F4\u7F29\u653E\u7B49\u7EA7\uFF0C\u9ED8\u8BA4\u5929",paraId:1,tocIndex:4},{value:"\u5F00\u59CB\u65E5\u671F\u5B57\u6BB5\uFF1A\u6BCF\u4E2A\u4EFB\u52A1\u7684\u5F00\u59CB\u65E5\u671F\uFF0C\u5FC5\u586B",paraId:1,tocIndex:4},{value:"\u7ED3\u675F\u65E5\u671F\u5B57\u6BB5\uFF1A\u6BCF\u4E2A\u4EFB\u52A1\u7684\u7ED3\u675F\u65E5\u671F\uFF0C\u5FC5\u586B",paraId:1,tocIndex:4},{value:"\u8FDB\u5EA6\u5B57\u6BB5\uFF1A\u8BBE\u7F6E\u8868\u793A\u8FDB\u5EA6\uFF08\u767E\u5206\u6BD4\u5B57\u6BB5\uFF09\u7684\u5B57\u6BB5\uFF0C\u975E\u5FC5\u586B",paraId:1,tocIndex:4},{value:"\u62D6\u62FD\u6761\u5F62\u8C03\u6574\u4EFB\u52A1\u7684\u5F00\u59CB\u65E5\u671F\u548C\u7ED3\u675F\u65E5\u671F",paraId:2,tocIndex:5},{value:"\u62D6\u62FD\u8FDB\u5EA6\u6761\u8C03\u6574\u4EFB\u52A1\u7684\u8FDB\u5EA6",paraId:2,tocIndex:5},{value:"\u5904\u7406\u6D41\u7A0B\u53EF\u89C6\u5316\uFF1A\u5982\u5C06\u6574\u4E2A\u8FD0\u5355\u6D41\u7A0B\u5212\u5206\u4E3A\u4E0D\u540C\u7684\u4EFB\u52A1\u9636\u6BB5\uFF0C\u4F8B\u5982\u8BA2\u5355\u786E\u8BA4\u3001\u5305\u88C5\u3001\u53D1\u8D27\u3001\u8FD0\u8F93\u3001\u5230\u8FBE\u76EE\u7684\u5730\u7B49\u3002\u6BCF\u4E2A\u4EFB\u52A1\u9636\u6BB5\u90FD\u53EF\u4EE5\u5728\u7518\u7279\u56FE\u4E0A\u8868\u793A\u4E3A\u4E00\u4E2A\u6761\u5F62\uFF0C\u5176\u957F\u5EA6\u4EE3\u8868\u8BE5\u9636\u6BB5\u7684\u6301\u7EED\u65F6\u95F4",paraId:3,tocIndex:6}],dJ={},iJ={title:"\u7528\u6237",toc:"menu",filename:"docs/en-US/plugins/users/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},lJ=[{id:"\u7528\u6237",depth:1,title:"\u7528\u6237"}],cJ=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],sJ={},uJ={title:"BaseAuth",toc:"menu",filename:"docs/en-US/api/auth/base-auth.md",lastUpdated:173254844e4,description:"BaseAuth inherits from the abstract class Auth and serves as the basic implementation for user authentication types, using JWT as the authentication method. In most cases, extending user authentication types can be achieved by inheriting from BaseAuth instead of directly inheriting from the Auth abstract class."},pJ=[{id:"baseauth",depth:1,title:"BaseAuth"},{id:"overview",depth:2,title:"Overview"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"details",depth:4,title:"Details"},{id:"user",depth:3,title:"user()"},{id:"signature-1",depth:4,title:"Signature"},{id:"check",depth:3,title:"check()"},{id:"signin",depth:3,title:"signIn()"},{id:"signup",depth:3,title:"signUp()"},{id:"signout",depth:3,title:"signOut()"},{id:"validate-",depth:3,title:"validate() *"}],IJ=[{value:"BaseAuth",paraId:0,tocIndex:1},{value:" inherits from the abstract class ",paraId:0,tocIndex:1},{value:"Auth",paraId:1,tocIndex:1},{value:" and serves as the basic implementation for user authentication types, using JWT as the authentication method. In most cases, extending user authentication types can be achieved by inheriting from ",paraId:0,tocIndex:1},{value:"BaseAuth",paraId:0,tocIndex:1},{value:" instead of directly inheriting from the ",paraId:0,tocIndex:1},{value:"Auth",paraId:0,tocIndex:1},{value:" abstract class.",paraId:0,tocIndex:1},{value:`class BasicAuth extends BaseAuth { constructor(config: AuthConfig) { // Set user collection const userCollection = config.ctx.db.getCollection('users'); @@ -17991,7 +18044,7 @@ type GetSpanProcessor = () => SpanProcessor; return user; } } -`,paraId:2,tocIndex:1},{value:"constructor()",paraId:3},{value:"Constructor, creates an instance of ",paraId:4,tocIndex:3},{value:"BaseAuth",paraId:4,tocIndex:3},{value:".",paraId:4,tocIndex:3},{value:"constructor(config: AuthConfig & { userCollection: Collection })",paraId:5,tocIndex:4},{value:"Parameter",paraId:6,tocIndex:5},{value:"Type",paraId:6,tocIndex:5},{value:"Description",paraId:6,tocIndex:5},{value:"config",paraId:6,tocIndex:5},{value:"AuthConfig",paraId:6,tocIndex:5},{value:"Refer to ",paraId:6,tocIndex:5},{value:"Auth - AuthConfig",paraId:7,tocIndex:5},{value:"userCollection",paraId:6,tocIndex:5},{value:"Collection",paraId:6,tocIndex:5},{value:"User collection, e.g., ",paraId:6,tocIndex:5},{value:"db.getCollection('users')",paraId:6,tocIndex:5},{value:", refer to ",paraId:6,tocIndex:5},{value:"DataBase - Collection",paraId:8,tocIndex:5},{value:"user()",paraId:3},{value:"Accessor for setting and getting user information, defaulting to using the ",paraId:9,tocIndex:6},{value:"ctx.state.currentUser",paraId:9,tocIndex:6},{value:" object.",paraId:9,tocIndex:6},{value:"set user()",paraId:10,tocIndex:7},{value:"get user()",paraId:10,tocIndex:7},{value:"check()",paraId:3},{value:"Authenticates through the request token and returns user information.",paraId:11,tocIndex:8},{value:"signIn()",paraId:3},{value:"User login, generates a token.",paraId:12,tocIndex:9},{value:"signUp()",paraId:3},{value:"User registration.",paraId:13,tocIndex:10},{value:"signOut()",paraId:3},{value:"User logout, token expiration.",paraId:14,tocIndex:11},{value:"validate()",paraId:3},{value:"Core authentication logic, called by the ",paraId:15,tocIndex:12},{value:"signIn",paraId:15,tocIndex:12},{value:" interface, to determine whether the user can successfully log in.",paraId:15,tocIndex:12}],_J={},vJ={title:"Field",toc:"menu",filename:"docs/en-US/api/database/field.md",lastUpdated:1732240239e3,description:"Data table field management class (abstract class). It is also the base class for all field types, and any other field types are implemented by inheriting from this class."},mJ=[{id:"field",depth:1,title:"Field"},{id:"overview",depth:2,title:"Overview"},{id:"constructor",depth:2,title:"Constructor"},{id:"instance-members",depth:2,title:"Instance Members"},{id:"name",depth:3,title:"name"},{id:"type",depth:3,title:"type"},{id:"datatype",depth:3,title:"dataType"},{id:"options",depth:3,title:"options"},{id:"context",depth:3,title:"context"},{id:"configuration-methods",depth:2,title:"Configuration Methods"},{id:"on",depth:3,title:"on()"},{id:"off",depth:3,title:"off()"},{id:"bind",depth:3,title:"bind()"},{id:"unbind",depth:3,title:"unbind()"},{id:"get",depth:3,title:"get()"},{id:"merge",depth:3,title:"merge()"},{id:"remove",depth:3,title:"remove()"},{id:"database-methods",depth:2,title:"Database Methods"},{id:"removefromdb",depth:3,title:"removeFromDb()"},{id:"existsindb",depth:3,title:"existsInDb()"},{id:"built-in-field-types",depth:2,title:"Built-in Field Types"},{id:"boolean",depth:3,title:"'boolean'"},{id:"integer",depth:3,title:"'integer'"},{id:"bigint",depth:3,title:"'bigInt'"},{id:"double",depth:3,title:"'double'"},{id:"real",depth:3,title:"'real'"},{id:"decimal",depth:3,title:"'decimal'"},{id:"string",depth:3,title:"'string'"},{id:"text",depth:3,title:"'text'"},{id:"password",depth:3,title:"'password'"},{id:"date",depth:3,title:"'date'"},{id:"time",depth:3,title:"'time'"},{id:"array",depth:3,title:"'array'"},{id:"json",depth:3,title:"'json'"},{id:"jsonb",depth:3,title:"'jsonb'"},{id:"uuid",depth:3,title:"'uuid'"},{id:"uid",depth:3,title:"'uid'"},{id:"formula",depth:3,title:"'formula'"},{id:"radio",depth:3,title:"'radio'"},{id:"sort",depth:3,title:"'sort'"},{id:"virtual",depth:3,title:"'virtual'"},{id:"belongsto",depth:3,title:"'belongsTo'"},{id:"hasone",depth:3,title:"'hasOne'"},{id:"hasmany",depth:3,title:"'hasMany'"},{id:"belongstomany",depth:3,title:"'belongsToMany'"}],hJ=[{value:"Data table field management class (abstract class). It is also the base class for all field types, and any other field types are implemented by inheriting from this class.",paraId:0,tocIndex:1},{value:"Refer to ",paraId:1,tocIndex:1},{value:"Extended Field Types",paraId:2,tocIndex:1},{value:" to see how to customize fields.",paraId:1,tocIndex:1},{value:"It is usually not called directly by the developer, but mainly through the ",paraId:3,tocIndex:2},{value:"db.collection({ fields: [] })",paraId:3,tocIndex:2},{value:" method as a proxy entry.",paraId:3,tocIndex:2},{value:"Extended field is implemented mainly by inheriting the ",paraId:4,tocIndex:2},{value:"Field",paraId:4,tocIndex:2},{value:" abstract class and registering it to a Database instance.",paraId:4,tocIndex:2},{value:"Signature",paraId:5,tocIndex:2},{value:"constructor(options: FieldOptions, context: FieldContext)",paraId:6,tocIndex:2},{value:"Parameter",paraId:7,tocIndex:2},{value:"Name",paraId:8,tocIndex:2},{value:"Type",paraId:8,tocIndex:2},{value:"Default",paraId:8,tocIndex:2},{value:"Description",paraId:8,tocIndex:2},{value:"options",paraId:8,tocIndex:2},{value:"FieldOptions",paraId:8,tocIndex:2},{value:"-",paraId:8,tocIndex:2},{value:"Field configuration object",paraId:8,tocIndex:2},{value:"options.name",paraId:8,tocIndex:2},{value:"string",paraId:8,tocIndex:2},{value:"-",paraId:8,tocIndex:2},{value:"Field name",paraId:8,tocIndex:2},{value:"options.type",paraId:8,tocIndex:2},{value:"string",paraId:8,tocIndex:2},{value:"-",paraId:8,tocIndex:2},{value:"Field type, corresponding to the name of the field type registered in the db",paraId:8,tocIndex:2},{value:"context",paraId:8,tocIndex:2},{value:"FieldContext",paraId:8,tocIndex:2},{value:"-",paraId:8,tocIndex:2},{value:"Field context object",paraId:8,tocIndex:2},{value:"context.database",paraId:8,tocIndex:2},{value:"Database",paraId:8,tocIndex:2},{value:"-",paraId:8,tocIndex:2},{value:"Database instance",paraId:8,tocIndex:2},{value:"context.collection",paraId:8,tocIndex:2},{value:"Collection",paraId:8,tocIndex:2},{value:"-",paraId:8,tocIndex:2},{value:"Data table instance",paraId:8,tocIndex:2},{value:"name",paraId:9},{value:"Field name.",paraId:10,tocIndex:4},{value:"type",paraId:9},{value:"Field type.",paraId:11,tocIndex:5},{value:"dataType",paraId:9},{value:"Data type of the field.",paraId:12,tocIndex:6},{value:"options",paraId:9},{value:"Configuration parameters to initialize the field.",paraId:13,tocIndex:7},{value:"context",paraId:9},{value:"Field context object.",paraId:14,tocIndex:8},{value:"on()",paraId:9},{value:"Quick definition method based on data table events. It is equivalent to ",paraId:15,tocIndex:10},{value:"db.on(this.collection.name + '.' + eventName, listener)",paraId:15,tocIndex:10},{value:".",paraId:15,tocIndex:10},{value:"It is usually not necessary to override this method when inheriting.",paraId:16,tocIndex:10},{value:"Signature",paraId:17,tocIndex:10},{value:"on(eventName: string, listener: (...args: any[]) => void)",paraId:18,tocIndex:10},{value:"Parameter",paraId:19,tocIndex:10},{value:"Name",paraId:20,tocIndex:10},{value:"Type",paraId:20,tocIndex:10},{value:"Default",paraId:20,tocIndex:10},{value:"Description",paraId:20,tocIndex:10},{value:"eventName",paraId:20,tocIndex:10},{value:"string",paraId:20,tocIndex:10},{value:"-",paraId:20,tocIndex:10},{value:"Event name",paraId:20,tocIndex:10},{value:"listener",paraId:20,tocIndex:10},{value:"(...args: any[]) => void",paraId:20,tocIndex:10},{value:"-",paraId:20,tocIndex:10},{value:"Event listener",paraId:20,tocIndex:10},{value:"off()",paraId:9},{value:"Quick removal method based on data table events. It is equivalent to ",paraId:21,tocIndex:11},{value:"db.off(this.collection.name + '.' + eventName, listener)",paraId:21,tocIndex:11},{value:".",paraId:21,tocIndex:11},{value:"It is usually not necessary to override this method when inheriting.",paraId:22,tocIndex:11},{value:"Signature",paraId:23,tocIndex:11},{value:"off(eventName: string, listener: (...args: any[]) => void)",paraId:24,tocIndex:11},{value:"Parameter",paraId:25,tocIndex:11},{value:"Name",paraId:26,tocIndex:11},{value:"Type",paraId:26,tocIndex:11},{value:"Default",paraId:26,tocIndex:11},{value:"Description",paraId:26,tocIndex:11},{value:"eventName",paraId:26,tocIndex:11},{value:"string",paraId:26,tocIndex:11},{value:"-",paraId:26,tocIndex:11},{value:"Event name",paraId:26,tocIndex:11},{value:"listener",paraId:26,tocIndex:11},{value:"(...args: any[]) => void",paraId:26,tocIndex:11},{value:"-",paraId:26,tocIndex:11},{value:"Event listener",paraId:26,tocIndex:11},{value:"bind()",paraId:9},{value:"The execution content that is triggered when a field is added to data table. Typically used to add data table event listeners and other processing.",paraId:27,tocIndex:12},{value:"The corresponding ",paraId:28,tocIndex:12},{value:"super.bind()",paraId:28,tocIndex:12},{value:" method needs to be called first when inheriting.",paraId:28,tocIndex:12},{value:"Signature",paraId:29,tocIndex:12},{value:"bind()",paraId:30,tocIndex:12},{value:"unbind()",paraId:9},{value:"The execution content that is triggered when a field is removed from data table. Typically used to remove data table event listeners and other processing.",paraId:31,tocIndex:13},{value:"The corresponding ",paraId:32,tocIndex:13},{value:"super.unbind()",paraId:32,tocIndex:13},{value:" method needs to be called first when inheriting.",paraId:32,tocIndex:13},{value:"Signature",paraId:33,tocIndex:13},{value:"unbind()",paraId:34,tocIndex:13},{value:"get()",paraId:9},{value:"Get the values of a configuration item of the field.",paraId:35,tocIndex:14},{value:"Signature",paraId:36,tocIndex:14},{value:"get(key: string): any",paraId:37,tocIndex:14},{value:"Parameter",paraId:38,tocIndex:14},{value:"Name",paraId:39,tocIndex:14},{value:"Type",paraId:39,tocIndex:14},{value:"Default",paraId:39,tocIndex:14},{value:"Description",paraId:39,tocIndex:14},{value:"key",paraId:39,tocIndex:14},{value:"string",paraId:39,tocIndex:14},{value:"-",paraId:39,tocIndex:14},{value:"Name of the configuration item",paraId:39,tocIndex:14},{value:"Example",paraId:40,tocIndex:14},{value:`const field = db.collection('users').getField('name'); +`,paraId:2,tocIndex:1},{value:"constructor()",paraId:3},{value:"Constructor, creates an instance of ",paraId:4,tocIndex:3},{value:"BaseAuth",paraId:4,tocIndex:3},{value:".",paraId:4,tocIndex:3},{value:"constructor(config: AuthConfig & { userCollection: Collection })",paraId:5,tocIndex:4},{value:"Parameter",paraId:6,tocIndex:5},{value:"Type",paraId:6,tocIndex:5},{value:"Description",paraId:6,tocIndex:5},{value:"config",paraId:6,tocIndex:5},{value:"AuthConfig",paraId:6,tocIndex:5},{value:"Refer to ",paraId:6,tocIndex:5},{value:"Auth - AuthConfig",paraId:7,tocIndex:5},{value:"userCollection",paraId:6,tocIndex:5},{value:"Collection",paraId:6,tocIndex:5},{value:"User collection, e.g., ",paraId:6,tocIndex:5},{value:"db.getCollection('users')",paraId:6,tocIndex:5},{value:", refer to ",paraId:6,tocIndex:5},{value:"DataBase - Collection",paraId:8,tocIndex:5},{value:"user()",paraId:3},{value:"Accessor for setting and getting user information, defaulting to using the ",paraId:9,tocIndex:6},{value:"ctx.state.currentUser",paraId:9,tocIndex:6},{value:" object.",paraId:9,tocIndex:6},{value:"set user()",paraId:10,tocIndex:7},{value:"get user()",paraId:10,tocIndex:7},{value:"check()",paraId:3},{value:"Authenticates through the request token and returns user information.",paraId:11,tocIndex:8},{value:"signIn()",paraId:3},{value:"User login, generates a token.",paraId:12,tocIndex:9},{value:"signUp()",paraId:3},{value:"User registration.",paraId:13,tocIndex:10},{value:"signOut()",paraId:3},{value:"User logout, token expiration.",paraId:14,tocIndex:11},{value:"validate()",paraId:3},{value:"Core authentication logic, called by the ",paraId:15,tocIndex:12},{value:"signIn",paraId:15,tocIndex:12},{value:" interface, to determine whether the user can successfully log in.",paraId:15,tocIndex:12}],_J={},vJ={title:"Field",toc:"menu",filename:"docs/en-US/api/database/field.md",lastUpdated:173254844e4,description:"Data table field management class (abstract class). It is also the base class for all field types, and any other field types are implemented by inheriting from this class."},mJ=[{id:"field",depth:1,title:"Field"},{id:"overview",depth:2,title:"Overview"},{id:"constructor",depth:2,title:"Constructor"},{id:"instance-members",depth:2,title:"Instance Members"},{id:"name",depth:3,title:"name"},{id:"type",depth:3,title:"type"},{id:"datatype",depth:3,title:"dataType"},{id:"options",depth:3,title:"options"},{id:"context",depth:3,title:"context"},{id:"configuration-methods",depth:2,title:"Configuration Methods"},{id:"on",depth:3,title:"on()"},{id:"off",depth:3,title:"off()"},{id:"bind",depth:3,title:"bind()"},{id:"unbind",depth:3,title:"unbind()"},{id:"get",depth:3,title:"get()"},{id:"merge",depth:3,title:"merge()"},{id:"remove",depth:3,title:"remove()"},{id:"database-methods",depth:2,title:"Database Methods"},{id:"removefromdb",depth:3,title:"removeFromDb()"},{id:"existsindb",depth:3,title:"existsInDb()"},{id:"built-in-field-types",depth:2,title:"Built-in Field Types"},{id:"boolean",depth:3,title:"'boolean'"},{id:"integer",depth:3,title:"'integer'"},{id:"bigint",depth:3,title:"'bigInt'"},{id:"double",depth:3,title:"'double'"},{id:"real",depth:3,title:"'real'"},{id:"decimal",depth:3,title:"'decimal'"},{id:"string",depth:3,title:"'string'"},{id:"text",depth:3,title:"'text'"},{id:"password",depth:3,title:"'password'"},{id:"date",depth:3,title:"'date'"},{id:"time",depth:3,title:"'time'"},{id:"array",depth:3,title:"'array'"},{id:"json",depth:3,title:"'json'"},{id:"jsonb",depth:3,title:"'jsonb'"},{id:"uuid",depth:3,title:"'uuid'"},{id:"uid",depth:3,title:"'uid'"},{id:"formula",depth:3,title:"'formula'"},{id:"radio",depth:3,title:"'radio'"},{id:"sort",depth:3,title:"'sort'"},{id:"virtual",depth:3,title:"'virtual'"},{id:"belongsto",depth:3,title:"'belongsTo'"},{id:"hasone",depth:3,title:"'hasOne'"},{id:"hasmany",depth:3,title:"'hasMany'"},{id:"belongstomany",depth:3,title:"'belongsToMany'"}],hJ=[{value:"Data table field management class (abstract class). It is also the base class for all field types, and any other field types are implemented by inheriting from this class.",paraId:0,tocIndex:1},{value:"Refer to ",paraId:1,tocIndex:1},{value:"Extended Field Types",paraId:2,tocIndex:1},{value:" to see how to customize fields.",paraId:1,tocIndex:1},{value:"It is usually not called directly by the developer, but mainly through the ",paraId:3,tocIndex:2},{value:"db.collection({ fields: [] })",paraId:3,tocIndex:2},{value:" method as a proxy entry.",paraId:3,tocIndex:2},{value:"Extended field is implemented mainly by inheriting the ",paraId:4,tocIndex:2},{value:"Field",paraId:4,tocIndex:2},{value:" abstract class and registering it to a Database instance.",paraId:4,tocIndex:2},{value:"Signature",paraId:5,tocIndex:2},{value:"constructor(options: FieldOptions, context: FieldContext)",paraId:6,tocIndex:2},{value:"Parameter",paraId:7,tocIndex:2},{value:"Name",paraId:8,tocIndex:2},{value:"Type",paraId:8,tocIndex:2},{value:"Default",paraId:8,tocIndex:2},{value:"Description",paraId:8,tocIndex:2},{value:"options",paraId:8,tocIndex:2},{value:"FieldOptions",paraId:8,tocIndex:2},{value:"-",paraId:8,tocIndex:2},{value:"Field configuration object",paraId:8,tocIndex:2},{value:"options.name",paraId:8,tocIndex:2},{value:"string",paraId:8,tocIndex:2},{value:"-",paraId:8,tocIndex:2},{value:"Field name",paraId:8,tocIndex:2},{value:"options.type",paraId:8,tocIndex:2},{value:"string",paraId:8,tocIndex:2},{value:"-",paraId:8,tocIndex:2},{value:"Field type, corresponding to the name of the field type registered in the db",paraId:8,tocIndex:2},{value:"context",paraId:8,tocIndex:2},{value:"FieldContext",paraId:8,tocIndex:2},{value:"-",paraId:8,tocIndex:2},{value:"Field context object",paraId:8,tocIndex:2},{value:"context.database",paraId:8,tocIndex:2},{value:"Database",paraId:8,tocIndex:2},{value:"-",paraId:8,tocIndex:2},{value:"Database instance",paraId:8,tocIndex:2},{value:"context.collection",paraId:8,tocIndex:2},{value:"Collection",paraId:8,tocIndex:2},{value:"-",paraId:8,tocIndex:2},{value:"Data table instance",paraId:8,tocIndex:2},{value:"name",paraId:9},{value:"Field name.",paraId:10,tocIndex:4},{value:"type",paraId:9},{value:"Field type.",paraId:11,tocIndex:5},{value:"dataType",paraId:9},{value:"Data type of the field.",paraId:12,tocIndex:6},{value:"options",paraId:9},{value:"Configuration parameters to initialize the field.",paraId:13,tocIndex:7},{value:"context",paraId:9},{value:"Field context object.",paraId:14,tocIndex:8},{value:"on()",paraId:9},{value:"Quick definition method based on data table events. It is equivalent to ",paraId:15,tocIndex:10},{value:"db.on(this.collection.name + '.' + eventName, listener)",paraId:15,tocIndex:10},{value:".",paraId:15,tocIndex:10},{value:"It is usually not necessary to override this method when inheriting.",paraId:16,tocIndex:10},{value:"Signature",paraId:17,tocIndex:10},{value:"on(eventName: string, listener: (...args: any[]) => void)",paraId:18,tocIndex:10},{value:"Parameter",paraId:19,tocIndex:10},{value:"Name",paraId:20,tocIndex:10},{value:"Type",paraId:20,tocIndex:10},{value:"Default",paraId:20,tocIndex:10},{value:"Description",paraId:20,tocIndex:10},{value:"eventName",paraId:20,tocIndex:10},{value:"string",paraId:20,tocIndex:10},{value:"-",paraId:20,tocIndex:10},{value:"Event name",paraId:20,tocIndex:10},{value:"listener",paraId:20,tocIndex:10},{value:"(...args: any[]) => void",paraId:20,tocIndex:10},{value:"-",paraId:20,tocIndex:10},{value:"Event listener",paraId:20,tocIndex:10},{value:"off()",paraId:9},{value:"Quick removal method based on data table events. It is equivalent to ",paraId:21,tocIndex:11},{value:"db.off(this.collection.name + '.' + eventName, listener)",paraId:21,tocIndex:11},{value:".",paraId:21,tocIndex:11},{value:"It is usually not necessary to override this method when inheriting.",paraId:22,tocIndex:11},{value:"Signature",paraId:23,tocIndex:11},{value:"off(eventName: string, listener: (...args: any[]) => void)",paraId:24,tocIndex:11},{value:"Parameter",paraId:25,tocIndex:11},{value:"Name",paraId:26,tocIndex:11},{value:"Type",paraId:26,tocIndex:11},{value:"Default",paraId:26,tocIndex:11},{value:"Description",paraId:26,tocIndex:11},{value:"eventName",paraId:26,tocIndex:11},{value:"string",paraId:26,tocIndex:11},{value:"-",paraId:26,tocIndex:11},{value:"Event name",paraId:26,tocIndex:11},{value:"listener",paraId:26,tocIndex:11},{value:"(...args: any[]) => void",paraId:26,tocIndex:11},{value:"-",paraId:26,tocIndex:11},{value:"Event listener",paraId:26,tocIndex:11},{value:"bind()",paraId:9},{value:"The execution content that is triggered when a field is added to data table. Typically used to add data table event listeners and other processing.",paraId:27,tocIndex:12},{value:"The corresponding ",paraId:28,tocIndex:12},{value:"super.bind()",paraId:28,tocIndex:12},{value:" method needs to be called first when inheriting.",paraId:28,tocIndex:12},{value:"Signature",paraId:29,tocIndex:12},{value:"bind()",paraId:30,tocIndex:12},{value:"unbind()",paraId:9},{value:"The execution content that is triggered when a field is removed from data table. Typically used to remove data table event listeners and other processing.",paraId:31,tocIndex:13},{value:"The corresponding ",paraId:32,tocIndex:13},{value:"super.unbind()",paraId:32,tocIndex:13},{value:" method needs to be called first when inheriting.",paraId:32,tocIndex:13},{value:"Signature",paraId:33,tocIndex:13},{value:"unbind()",paraId:34,tocIndex:13},{value:"get()",paraId:9},{value:"Get the values of a configuration item of the field.",paraId:35,tocIndex:14},{value:"Signature",paraId:36,tocIndex:14},{value:"get(key: string): any",paraId:37,tocIndex:14},{value:"Parameter",paraId:38,tocIndex:14},{value:"Name",paraId:39,tocIndex:14},{value:"Type",paraId:39,tocIndex:14},{value:"Default",paraId:39,tocIndex:14},{value:"Description",paraId:39,tocIndex:14},{value:"key",paraId:39,tocIndex:14},{value:"string",paraId:39,tocIndex:14},{value:"-",paraId:39,tocIndex:14},{value:"Name of the configuration item",paraId:39,tocIndex:14},{value:"Example",paraId:40,tocIndex:14},{value:`const field = db.collection('users').getField('name'); // Get and return the values of the configuration item 'name' console.log(field.get('name')); @@ -18171,7 +18224,7 @@ db.collection({ }, ], }); -`,paraId:125,tocIndex:44}],fJ={},xJ={title:"Database",toc:"menu",filename:"docs/en-US/api/database/index.md",lastUpdated:1732240239e3,description:"Database is the database interaction tool provided by NocoBase, it provides very convenient database interaction features for no-code and low-code applications. The supported databases are:"},gJ=[{id:"database",depth:1,title:"Database"},{id:"overview",depth:2,title:"Overview"},{id:"connect-to-database",depth:3,title:"Connect to Database"},{id:"define-data-structure",depth:3,title:"Define Data Structure"},{id:"crud-data",depth:3,title:"CRUD Data"},{id:"constructor",depth:2,title:"Constructor"},{id:"migration-methods",depth:2,title:"Migration Methods"},{id:"addmigration",depth:3,title:"addMigration()"},{id:"addmigrations",depth:3,title:"addMigrations()"},{id:"tool-methods",depth:2,title:"Tool Methods"},{id:"indialect",depth:3,title:"inDialect()"},{id:"gettableprefix",depth:3,title:"getTablePrefix()"},{id:"data-table-configurations",depth:2,title:"Data Table Configurations"},{id:"collection",depth:3,title:"collection()"},{id:"getcollection",depth:3,title:"getCollection()"},{id:"hascollection",depth:3,title:"hasCollection()"},{id:"removecollection",depth:3,title:"removeCollection()"},{id:"import",depth:3,title:"import()"},{id:"extension-registrations-and-acquisitions",depth:2,title:"Extension Registrations and Acquisitions"},{id:"registerfieldtypes",depth:3,title:"registerFieldTypes()"},{id:"registermodels",depth:3,title:"registerModels()"},{id:"registerrepositories",depth:3,title:"registerRepositories()"},{id:"registeroperators",depth:3,title:"registerOperators()"},{id:"getmodel",depth:3,title:"getModel()"},{id:"getrepository",depth:3,title:"getRepository()"},{id:"database-events",depth:2,title:"Database Events"},{id:"on",depth:3,title:"on()"},{id:"off",depth:3,title:"off()"},{id:"database-operations",depth:2,title:"Database Operations"},{id:"auth",depth:3,title:"auth()"},{id:"reconnect",depth:3,title:"reconnect()"},{id:"closed",depth:3,title:"closed()"},{id:"close",depth:3,title:"close()"},{id:"sync",depth:3,title:"sync()"},{id:"clean",depth:3,title:"clean()"},{id:"package-level-export",depth:2,title:"Package-Level Export"},{id:"definecollection",depth:3,title:"defineCollection()"},{id:"extendcollection",depth:3,title:"extendCollection()"},{id:"built-in-events",depth:2,title:"Built-in Events"},{id:"beforesync--aftersync",depth:3,title:"'beforeSync' / 'afterSync'"},{id:"beforevalidate--aftervalidate",depth:3,title:"'beforeValidate' / 'afterValidate'"},{id:"beforecreate--aftercreate",depth:3,title:"'beforeCreate' / 'afterCreate'"},{id:"beforeupdate--afterupdate",depth:3,title:"'beforeUpdate' / 'afterUpdate'"},{id:"beforesave--aftersave",depth:3,title:"'beforeSave' / 'afterSave'"},{id:"beforedestroy--afterdestroy",depth:3,title:"'beforeDestroy' / 'afterDestroy'"},{id:"aftercreatewithassociations",depth:3,title:"'afterCreateWithAssociations'"},{id:"afterupdatewithassociations",depth:3,title:"'afterUpdateWithAssociations'"},{id:"aftersavewithassociations",depth:3,title:"'afterSaveWithAssociations'"},{id:"beforedefinecollection",depth:3,title:"'beforeDefineCollection'"},{id:"afterdefinecollection",depth:3,title:"'afterDefineCollection'"},{id:"beforeremovecollection--afterremovecollection",depth:3,title:"'beforeRemoveCollection' / 'afterRemoveCollection'"}],bJ=[{value:"Database is the database interaction tool provided by NocoBase, it provides very convenient database interaction features for no-code and low-code applications. The supported databases are:",paraId:0,tocIndex:1},{value:"SQLite 3.8.8+",paraId:1,tocIndex:1},{value:"MySQL 8.0.17+",paraId:1,tocIndex:1},{value:"PostgreSQL 10.0+",paraId:1,tocIndex:1},{value:"In ",paraId:2,tocIndex:2},{value:"Database",paraId:2,tocIndex:2},{value:" constructor, database connection can be configured by passing the ",paraId:2,tocIndex:2},{value:"options",paraId:2,tocIndex:2},{value:" parameter.",paraId:2,tocIndex:2},{value:`const { Database } = require('@nocobase/database'); +`,paraId:125,tocIndex:44}],fJ={},xJ={title:"Database",toc:"menu",filename:"docs/en-US/api/database/index.md",lastUpdated:173254844e4,description:"Database is the database interaction tool provided by NocoBase, it provides very convenient database interaction features for no-code and low-code applications. The supported databases are:"},gJ=[{id:"database",depth:1,title:"Database"},{id:"overview",depth:2,title:"Overview"},{id:"connect-to-database",depth:3,title:"Connect to Database"},{id:"define-data-structure",depth:3,title:"Define Data Structure"},{id:"crud-data",depth:3,title:"CRUD Data"},{id:"constructor",depth:2,title:"Constructor"},{id:"migration-methods",depth:2,title:"Migration Methods"},{id:"addmigration",depth:3,title:"addMigration()"},{id:"addmigrations",depth:3,title:"addMigrations()"},{id:"tool-methods",depth:2,title:"Tool Methods"},{id:"indialect",depth:3,title:"inDialect()"},{id:"gettableprefix",depth:3,title:"getTablePrefix()"},{id:"data-table-configurations",depth:2,title:"Data Table Configurations"},{id:"collection",depth:3,title:"collection()"},{id:"getcollection",depth:3,title:"getCollection()"},{id:"hascollection",depth:3,title:"hasCollection()"},{id:"removecollection",depth:3,title:"removeCollection()"},{id:"import",depth:3,title:"import()"},{id:"extension-registrations-and-acquisitions",depth:2,title:"Extension Registrations and Acquisitions"},{id:"registerfieldtypes",depth:3,title:"registerFieldTypes()"},{id:"registermodels",depth:3,title:"registerModels()"},{id:"registerrepositories",depth:3,title:"registerRepositories()"},{id:"registeroperators",depth:3,title:"registerOperators()"},{id:"getmodel",depth:3,title:"getModel()"},{id:"getrepository",depth:3,title:"getRepository()"},{id:"database-events",depth:2,title:"Database Events"},{id:"on",depth:3,title:"on()"},{id:"off",depth:3,title:"off()"},{id:"database-operations",depth:2,title:"Database Operations"},{id:"auth",depth:3,title:"auth()"},{id:"reconnect",depth:3,title:"reconnect()"},{id:"closed",depth:3,title:"closed()"},{id:"close",depth:3,title:"close()"},{id:"sync",depth:3,title:"sync()"},{id:"clean",depth:3,title:"clean()"},{id:"package-level-export",depth:2,title:"Package-Level Export"},{id:"definecollection",depth:3,title:"defineCollection()"},{id:"extendcollection",depth:3,title:"extendCollection()"},{id:"built-in-events",depth:2,title:"Built-in Events"},{id:"beforesync--aftersync",depth:3,title:"'beforeSync' / 'afterSync'"},{id:"beforevalidate--aftervalidate",depth:3,title:"'beforeValidate' / 'afterValidate'"},{id:"beforecreate--aftercreate",depth:3,title:"'beforeCreate' / 'afterCreate'"},{id:"beforeupdate--afterupdate",depth:3,title:"'beforeUpdate' / 'afterUpdate'"},{id:"beforesave--aftersave",depth:3,title:"'beforeSave' / 'afterSave'"},{id:"beforedestroy--afterdestroy",depth:3,title:"'beforeDestroy' / 'afterDestroy'"},{id:"aftercreatewithassociations",depth:3,title:"'afterCreateWithAssociations'"},{id:"afterupdatewithassociations",depth:3,title:"'afterUpdateWithAssociations'"},{id:"aftersavewithassociations",depth:3,title:"'afterSaveWithAssociations'"},{id:"beforedefinecollection",depth:3,title:"'beforeDefineCollection'"},{id:"afterdefinecollection",depth:3,title:"'afterDefineCollection'"},{id:"beforeremovecollection--afterremovecollection",depth:3,title:"'beforeRemoveCollection' / 'afterRemoveCollection'"}],bJ=[{value:"Database is the database interaction tool provided by NocoBase, it provides very convenient database interaction features for no-code and low-code applications. The supported databases are:",paraId:0,tocIndex:1},{value:"SQLite 3.8.8+",paraId:1,tocIndex:1},{value:"MySQL 8.0.17+",paraId:1,tocIndex:1},{value:"PostgreSQL 10.0+",paraId:1,tocIndex:1},{value:"In ",paraId:2,tocIndex:2},{value:"Database",paraId:2,tocIndex:2},{value:" constructor, database connection can be configured by passing the ",paraId:2,tocIndex:2},{value:"options",paraId:2,tocIndex:2},{value:" parameter.",paraId:2,tocIndex:2},{value:`const { Database } = require('@nocobase/database'); // SQLite database configuration parameters const database = new Database({ @@ -18579,7 +18632,7 @@ export type RemoveCollectionListener = (options: Collection) => void; db.on('afterRemoveCollection', (collection) => { // do something }); -`,paraId:279,tocIndex:50}],yJ={},wJ={title:"Directory Structure",toc:"menu",filename:"docs/en-US/development/app-ds.md",lastUpdated:1732240239e3,description:"Whether it is a NocoBase application created via Git source or create-nocobase-app, the directory structure is the same, as follows:"},kJ=[{id:"directory-structure",depth:1,title:"Directory Structure"},{id:"plugins-directory",depth:2,title:"Plugins Directory"},{id:"plugin-directory-structure",depth:2,title:"Plugin Directory Structure"}],SJ=[{value:"Whether it is a NocoBase application created via ",paraId:0,tocIndex:0},{value:"Git source",paraId:1,tocIndex:0},{value:" or ",paraId:0,tocIndex:0},{value:"create-nocobase-app",paraId:2,tocIndex:0},{value:", the directory structure is the same, as follows:",paraId:0,tocIndex:0},{value:`\u251C\u2500\u2500 my-nocobase-app +`,paraId:279,tocIndex:50}],yJ={},wJ={title:"Directory Structure",toc:"menu",filename:"docs/en-US/development/app-ds.md",lastUpdated:173254844e4,description:"Whether it is a NocoBase application created via Git source or create-nocobase-app, the directory structure is the same, as follows:"},kJ=[{id:"directory-structure",depth:1,title:"Directory Structure"},{id:"plugins-directory",depth:2,title:"Plugins Directory"},{id:"plugin-directory-structure",depth:2,title:"Plugin Directory Structure"}],SJ=[{value:"Whether it is a NocoBase application created via ",paraId:0,tocIndex:0},{value:"Git source",paraId:1,tocIndex:0},{value:" or ",paraId:0,tocIndex:0},{value:"create-nocobase-app",paraId:2,tocIndex:0},{value:", the directory structure is the same, as follows:",paraId:0,tocIndex:0},{value:`\u251C\u2500\u2500 my-nocobase-app \u251C\u2500\u2500 packages # Packages under development \u251C\u2500\u2500 plugins # Plugins under development \u251C\u2500\u2500 storage # Used to store database files, attachments, cache, etc. @@ -18625,7 +18678,7 @@ db.on('afterRemoveCollection', (collection) => { |- package.json # Plugin package information |- server.d.ts |- server.js -`,paraId:11,tocIndex:2}],UJ={},PJ={title:"Plugin",toc:"menu",filename:"docs/en-US/development/plugin.md",lastUpdated:1732240239e3,description:"NocoBase offers three distinct methods for organizing plugins, ensuring that all plugin packages are ultimately consolidated within the node_modules directory at the project's root:"},TJ=[{id:"plugin-organization-methods",depth:3,title:"Plugin Organization Methods"},{id:"storagesplugins",depth:4,title:"storages/plugins"},{id:"packagesplugins",depth:4,title:"packages/plugins"},{id:"packagejson--dependencies",depth:4,title:"package.json + dependencies"}],CJ=[{value:"NocoBase offers three distinct methods for organizing plugins, ensuring that all plugin packages are ultimately consolidated within the ",paraId:0,tocIndex:0},{value:"node_modules",paraId:0,tocIndex:0},{value:" directory at the project's root:",paraId:0,tocIndex:0},{value:"This directory is reserved for storing pre-compiled plugins that require no additional dependencies. These plugins are designed for immediate use\u2014simply plug and play. Plugins added via the interface are placed in this directory, and you can also add plugins using the ",paraId:1,tocIndex:1},{value:"pm add",paraId:1,tocIndex:1},{value:" command.",paraId:1,tocIndex:1},{value:`tar -xvzf /downloads/plugin-data-source-external-mysql-0.21.0-alpha.10.tgz -C /my-nocobase-app/storage/plugins/@nocobase/plugin-data-source-external-mysql --strip-components=1 +`,paraId:11,tocIndex:2}],UJ={},PJ={title:"Plugin",toc:"menu",filename:"docs/en-US/development/plugin.md",lastUpdated:173254844e4,description:"NocoBase offers three distinct methods for organizing plugins, ensuring that all plugin packages are ultimately consolidated within the node_modules directory at the project's root:"},TJ=[{id:"plugin-organization-methods",depth:3,title:"Plugin Organization Methods"},{id:"storagesplugins",depth:4,title:"storages/plugins"},{id:"packagesplugins",depth:4,title:"packages/plugins"},{id:"packagejson--dependencies",depth:4,title:"package.json + dependencies"}],CJ=[{value:"NocoBase offers three distinct methods for organizing plugins, ensuring that all plugin packages are ultimately consolidated within the ",paraId:0,tocIndex:0},{value:"node_modules",paraId:0,tocIndex:0},{value:" directory at the project's root:",paraId:0,tocIndex:0},{value:"This directory is reserved for storing pre-compiled plugins that require no additional dependencies. These plugins are designed for immediate use\u2014simply plug and play. Plugins added via the interface are placed in this directory, and you can also add plugins using the ",paraId:1,tocIndex:1},{value:"pm add",paraId:1,tocIndex:1},{value:" command.",paraId:1,tocIndex:1},{value:`tar -xvzf /downloads/plugin-data-source-external-mysql-0.21.0-alpha.10.tgz -C /my-nocobase-app/storage/plugins/@nocobase/plugin-data-source-external-mysql --strip-components=1 `,paraId:2,tocIndex:1},{value:"The directory structure is organized as follows:",paraId:3,tocIndex:1},{value:`|- /storage/ |- /plugins/ |- /@nocobase/ @@ -18700,7 +18753,7 @@ db.on('afterRemoveCollection', (collection) => { "@nocobase/plugin-workflow-sql": "0.21.0-alpha.15" } } -`,paraId:8,tocIndex:3}],AJ={},qJ={title:"Access Control",toc:"menu",filename:"docs/en-US/handbook/acl/index.md",lastUpdated:1732240239e3,description:"NocoBase's ACL module mainly consists of two parts:"},EJ=[{id:"access-control",depth:1,title:"Access Control"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"development-guide",depth:2,title:"Development Guide"},{id:"extending-a-new-permission-configuration-tab",depth:3,title:"Extending a new permission configuration tab"}],DJ=[{value:"NocoBase's ACL module mainly consists of two parts:",paraId:0,tocIndex:1},{value:"@nocobase/acl",paraId:1,tocIndex:1},{value:" in the kernel, which provides core functions",paraId:1,tocIndex:1},{value:"@nocobase/plugin-acl",paraId:1,tocIndex:1},{value:" in the plugin, which provides dynamic configuration capabilities",paraId:1,tocIndex:1},{value:"Built-in plugin, no separate installation required.",paraId:2,tocIndex:2},{value:'Below is an example of the "Mobile Menu" configuration item, demonstrating how to extend a new permission configuration tab. The effect is shown in the figure below:',paraId:3,tocIndex:4},{value:"The code is as follows:",paraId:4,tocIndex:4},{value:`import { Plugin } from '@nocobase/client'; +`,paraId:8,tocIndex:3}],AJ={},qJ={title:"Access Control",toc:"menu",filename:"docs/en-US/handbook/acl/index.md",lastUpdated:173254844e4,description:"NocoBase's ACL module mainly consists of two parts:"},EJ=[{id:"access-control",depth:1,title:"Access Control"},{id:"introduction",depth:2,title:"Introduction"},{id:"installation",depth:2,title:"Installation"},{id:"development-guide",depth:2,title:"Development Guide"},{id:"extending-a-new-permission-configuration-tab",depth:3,title:"Extending a new permission configuration tab"}],DJ=[{value:"NocoBase's ACL module mainly consists of two parts:",paraId:0,tocIndex:1},{value:"@nocobase/acl",paraId:1,tocIndex:1},{value:" in the kernel, which provides core functions",paraId:1,tocIndex:1},{value:"@nocobase/plugin-acl",paraId:1,tocIndex:1},{value:" in the plugin, which provides dynamic configuration capabilities",paraId:1,tocIndex:1},{value:"Built-in plugin, no separate installation required.",paraId:2,tocIndex:2},{value:'Below is an example of the "Mobile Menu" configuration item, demonstrating how to extend a new permission configuration tab. The effect is shown in the figure below:',paraId:3,tocIndex:4},{value:"The code is as follows:",paraId:4,tocIndex:4},{value:`import { Plugin } from '@nocobase/client'; import PluginACLClient from '@nocobase/plugin-acl/client'; class PluginMobileClient extends Plugin { @@ -18749,9 +18802,9 @@ interface PermissionsTabsProps { */ TabLayout: React.FC; } -`,paraId:8,tocIndex:4}],OJ={},RJ={title:"Popup",toc:"menu",filename:"docs/en-US/handbook/ui/pop-up.md",lastUpdated:1732240239e3,description:"A popup window is a small window on the page, used to display some extended content within the current page. It can be presented in the form of a drawer or a dialog box, such as the details of a particular order or product, and can also be used for editing data. Popup operations play a very important role in the NocoBase interface configuration. Many blocks provide various popup operations, which can be used to add, view, edit data, etc. At the same time, various popup operations can be customized to adapt to various scenarios and needs."},MJ=[{id:"popup",depth:1,title:"Popup"},{id:"introduction",depth:2,title:"Introduction"},{id:"types--size",depth:2,title:"Types & Size"},{id:"drawer",depth:3,title:"Drawer"},{id:"dialog",depth:3,title:"Dialog"},{id:"page",depth:3,title:"Page"},{id:"use-cases",depth:2,title:"Use Cases"},{id:"popup-actions-of-the-block",depth:3,title:"Popup Actions of the Block"},{id:"popup-actions-of-relationship-data",depth:3,title:"Popup Actions of Relationship Data"},{id:"sharing-a-single-records-data",depth:3,title:"Sharing a Single Record's Data"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"current-record",depth:3,title:"Current Record"},{id:"relationship-record",depth:3,title:"Relationship Record"},{id:"other-records",depth:3,title:"Other Records"},{id:"use-variables",depth:2,title:"Use Variables"}],LJ=[{value:"A popup window is a small window on the page, used to display some extended content within the current page. It can be presented in the form of a drawer or a dialog box, such as the details of a particular order or product, and can also be used for editing data. Popup operations play a very important role in the NocoBase interface configuration. Many blocks provide various popup operations, which can be used to add, view, edit data, etc. At the same time, various popup operations can be customized to adapt to various scenarios and needs.",paraId:0,tocIndex:1},{value:"In version v1.3.0-alpha and above, it supports opening as a ",paraId:1,tocIndex:2},{value:"page",paraId:2,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:"Pop-ups come in two types: drawer and dialog. Configure the type and size of the pop-up during the configuration of actions.",paraId:3,tocIndex:2},{value:` - `,paraId:4},{value:"The version of NocoBase needs to be v1.3.0-alpha or above.",paraId:5},{value:"The main scenarios of the popup window currently include:",paraId:6,tocIndex:6},{value:"Popup actions of the block, which can be used to add, view, edit the data of the block;",paraId:7,tocIndex:6},{value:"Popup actions of relationship data, which can be used to view and edit the extended information of relationship data.",paraId:7,tocIndex:6},{value:"The version of NocoBase needs to be v1.3.0-alpha or above.",paraId:8},{value:"If you want to share the data of a single record with others, you can directly copy the URL of the browser address bar after opening the popup window, and then share it with others. When others open this URL, the corresponding popup window will automatically pop up on the page.",paraId:9},{value:"The block added in the popup window can currently be used to add the following types of blocks.",paraId:10,tocIndex:10},{value:"The data in the popup window is divided into three dimensions:",paraId:11,tocIndex:10},{value:"Current record: used to display the current record;",paraId:12,tocIndex:10},{value:"Relationship record: used to display the relationship data related to the current record;",paraId:12,tocIndex:10},{value:"Other records: used to display data from other tables;",paraId:12,tocIndex:10},{value:"Example: Display the current order data.",paraId:13,tocIndex:11},{value:"Example: Display the product data associated with the current order.",paraId:14,tocIndex:12},{value:"Example: Configure the warehouse details block in the popup operation of the order table block.",paraId:15,tocIndex:13},{value:'Row action popup: Each popup has a "Current popup record" variable, representing the current row record.',paraId:16,tocIndex:14},{value:'Association field popup: Each popup has a "Current popup record" variable, representing the clicked relationship record.',paraId:16,tocIndex:14},{value:'The blocks in the popup can use the "Current popup record" variable, with the following use cases:',paraId:17,tocIndex:14},{value:"Configuring data scope for blocks",paraId:18,tocIndex:14},{value:"Configuring data scope for association fields",paraId:18,tocIndex:14},{value:"Configuring default values for fields (form for adding data)",paraId:18,tocIndex:14},{value:"Configuring linkage rules for actions",paraId:18,tocIndex:14},{value:"Assign field values configuration for form submit actions",paraId:18,tocIndex:14},{value:"For more content, refer to ",paraId:19,tocIndex:14},{value:"Variables",paraId:20,tocIndex:14}],NJ={},zJ={title:"\u7528\u6237\u8BA4\u8BC1",toc:"menu",filename:"docs/en-US/plugins/auth/index.md",lastUpdated:1732240239e3,description:"NocoBase \u7684\u7528\u6237\u8BA4\u8BC1\u6A21\u5757\u4E3B\u8981\u7531\u4E24\u90E8\u5206\u7EC4\u6210\uFF1A"},FJ=[{id:"\u7528\u6237\u8BA4\u8BC1",depth:1,title:"\u7528\u6237\u8BA4\u8BC1"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"}],BJ=[{value:"NocoBase \u7684\u7528\u6237\u8BA4\u8BC1\u6A21\u5757\u4E3B\u8981\u7531\u4E24\u90E8\u5206\u7EC4\u6210\uFF1A",paraId:0,tocIndex:1},{value:"\u5185\u6838\u4E2D\u7684 ",paraId:1,tocIndex:1},{value:"@nocobase/auth",paraId:1,tocIndex:1},{value:" \u5B9A\u4E49\u767B\u5F55\u3001\u6CE8\u518C\u3001\u6821\u9A8C\u7B49\u7528\u6237\u8BA4\u8BC1\u76F8\u5173\u7684\u53EF\u6269\u5C55\u63A5\u53E3\u548C\u4E2D\u95F4\u4EF6\uFF0C\u540C\u65F6\u7528\u4E8E\u6CE8\u518C\u548C\u7BA1\u7406\u5404\u79CD\u6269\u5C55\u8BA4\u8BC1\u65B9\u5F0F",paraId:1,tocIndex:1},{value:"\u63D2\u4EF6\u4E2D\u7684 ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-auth",paraId:1,tocIndex:1},{value:" \u7528\u4E8E\u521D\u59CB\u5316\u5185\u6838\u4E2D\u7684\u8BA4\u8BC1\u7BA1\u7406\u6A21\u5757\uFF0C\u540C\u65F6\u63D0\u4F9B\u57FA\u7840\u7684\u7528\u6237\u540D\uFF08\u6216\u90AE\u7BB1\uFF09/\u5BC6\u7801\u8BA4\u8BC1\u65B9\u5F0F\u3002",paraId:1,tocIndex:1},{value:"\u9700\u8981\u540C\u65F6\u914D\u5408 ",paraId:2,tocIndex:1},{value:"@nocobase/plugin-users",paraId:3,tocIndex:1},{value:" \u63D2\u4EF6",paraId:3,tocIndex:1},{value:" \u63D0\u4F9B\u7684\u7528\u6237\u7BA1\u7406\u529F\u80FD",paraId:2,tocIndex:1},{value:"\u9664\u6B64\u4E4B\u5916\uFF0CNocobase\u8FD8\u63D0\u4F9B\u4E86\u5176\u4ED6\u591A\u79CD\u7528\u6237\u8BA4\u8BC1\u65B9\u5F0F\u63D2\u4EF6",paraId:4,tocIndex:1},{value:"@nocobase/plugin-sms-auth",paraId:5,tocIndex:1},{value:" - \u63D0\u4F9B\u77ED\u4FE1\u9A8C\u8BC1\u767B\u5F55\u529F\u80FD",paraId:6,tocIndex:1},{value:"@nocobase/plugin-saml",paraId:7,tocIndex:1},{value:" - \u63D0\u4F9BSAML SSO\u767B\u5F55\u529F\u80FD",paraId:6,tocIndex:1},{value:"@nocobase/plugin-oidc",paraId:8,tocIndex:1},{value:" - \u63D0\u4F9BOIDC SSO\u767B\u5F55\u529F\u80FD",paraId:6,tocIndex:1},{value:"@nocobase/plugin-cas",paraId:9,tocIndex:1},{value:" - \u63D0\u4F9BCAS SSO\u767B\u5F55\u529F\u80FD",paraId:6,tocIndex:1},{value:"\u901A\u8FC7\u4EE5\u4E0A\u63D2\u4EF6\uFF0C\u7BA1\u7406\u5458\u914D\u7F6E\u597D\u76F8\u5E94\u7684\u8BA4\u8BC1\u65B9\u5F0F\u4EE5\u540E\uFF0C\u7528\u6237\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 Google Workspace, Microsoft Azure \u7B49\u5E73\u53F0\u63D0\u4F9B\u7684\u7528\u6237\u8EAB\u4EFD\u767B\u5F55\u7CFB\u7EDF\uFF0C\u4E5F\u53EF\u4EE5\u5BF9 \u63A5Auth0, Logto, Keycloak \u7B49\u5E73\u53F0\u5DE5\u5177\u3002\u9664\u6B64\u4E4B\u5916\uFF0C\u5F00\u53D1\u8005\u4E5F\u53EF\u4EE5\u901A\u8FC7\u6211\u4EEC\u63D0\u4F9B\u7684\u57FA\u7840\u63A5\u53E3\u5F88\u65B9\u4FBF\u5730\u6269\u5C55\u81EA\u5DF1\u6240\u9700\u8981\u7684\u5176\u4ED6\u8BA4\u8BC1\u65B9\u5F0F\u3002",paraId:10,tocIndex:1}],jJ={},HJ={title:"OIDC \u8BA4\u8BC1",toc:"menu",filename:"docs/en-US/plugins/oidc/index.md",lastUpdated:1732240239e3,description:"OIDC \u63D2\u4EF6\u9075\u5FAA OIDC (Open ConnectID) \u534F\u8BAE\u6807\u51C6\uFF0C\u4F7F\u7528\u6388\u6743\u7801\u6A21\u5F0F (Authorization Code Flow), \u5B9E\u73B0\u7528\u6237\u4F7F\u7528\u7B2C\u4E09\u65B9\u8EAB\u4EFD\u8BA4\u8BC1\u670D\u52A1\u5546 (IdP) \u63D0\u4F9B\u7684\u8D26\u53F7\u767B\u5F55 NocoBase\uFF0C\u65E0\u9700\u8F93\u5165\u7528\u6237\u540D\u548C\u5BC6\u7801\u3002"},WJ=[{id:"oidc-\u8BA4\u8BC1",depth:1,title:"OIDC \u8BA4\u8BC1"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:2,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u6DFB\u52A0-oidc-\u8BA4\u8BC1",depth:2,title:"\u6DFB\u52A0 OIDC \u8BA4\u8BC1"},{id:"\u914D\u7F6E",depth:2,title:"\u914D\u7F6E"},{id:"\u57FA\u7840\u914D\u7F6E",depth:3,title:"\u57FA\u7840\u914D\u7F6E"},{id:"\u5B57\u6BB5\u6620\u5C04",depth:3,title:"\u5B57\u6BB5\u6620\u5C04"},{id:"\u9AD8\u7EA7\u914D\u7F6E",depth:3,title:"\u9AD8\u7EA7\u914D\u7F6E"},{id:"\u4F7F\u7528",depth:3,title:"\u4F7F\u7528"},{id:"\u767B\u5F55",depth:2,title:"\u767B\u5F55"}],$J=[{value:"OIDC \u63D2\u4EF6\u9075\u5FAA OIDC (Open ConnectID) \u534F\u8BAE\u6807\u51C6\uFF0C\u4F7F\u7528\u6388\u6743\u7801\u6A21\u5F0F (Authorization Code Flow), \u5B9E\u73B0\u7528\u6237\u4F7F\u7528\u7B2C\u4E09\u65B9\u8EAB\u4EFD\u8BA4\u8BC1\u670D\u52A1\u5546 (IdP) \u63D0\u4F9B\u7684\u8D26\u53F7\u767B\u5F55 NocoBase\uFF0C\u65E0\u9700\u8F93\u5165\u7528\u6237\u540D\u548C\u5BC6\u7801\u3002",paraId:0,tocIndex:1},{value:"\u8FDB\u5165\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u7BA1\u7406\u9875\u9762\u3002",paraId:1,tocIndex:3},{value:"\u6DFB\u52A0 - OIDC",paraId:2,tocIndex:3},{value:"Sign up automatically when the user does not exist - \u5F53\u627E\u4E0D\u5230\u53EF\u5339\u914D\u7ED1\u5B9A\u7684\u5DF2\u6709\u7528\u6237\u65F6\uFF0C\u662F\u5426\u81EA\u52A8\u521B\u5EFA\u65B0\u7528\u6237\u3002",paraId:3,tocIndex:5},{value:"Issuer - issuer \u7531 IdP \u63D0\u4F9B\uFF0C\u901A\u5E38\u4EE5 ",paraId:3,tocIndex:5},{value:"/.well-known/openid-configuration",paraId:3,tocIndex:5},{value:" \u7ED3\u5C3E",paraId:3,tocIndex:5},{value:"Client ID - \u5BA2\u6237\u7AEFID",paraId:3,tocIndex:5},{value:"Client Secret - \u5BA2\u6237\u7AEF\u5BC6\u94A5",paraId:3,tocIndex:5},{value:"scope - \u9009\u586B\uFF0C\u9ED8\u8BA4\u4E3A ",paraId:3,tocIndex:5},{value:"openid email profile",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:"id_token signed response algorithm - id_token \u7684\u7B7E\u540D\u65B9\u6CD5\uFF0C\u9ED8\u8BA4\u4E3A ",paraId:3,tocIndex:5},{value:"RS256",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:"Field Map - \u5B57\u6BB5\u6620\u5C04\u3002Nocobase \u7AEF\u76EE\u524D\u53EF\u4F9B\u6620\u5C04\u7684\u5B57\u6BB5\u6709\u6635\u79F0\u3001\u90AE\u7BB1\u548C\u624B\u673A\u53F7\u3002\u9ED8\u8BA4\u6635\u79F0\u4F7F\u7528 ",paraId:4,tocIndex:6},{value:"openid",paraId:4,tocIndex:6},{value:".",paraId:4,tocIndex:6},{value:"Use this field to bind the user - \u7528\u4E8E\u548C\u5DF2\u6709\u7528\u6237\u5339\u914D\u7ED1\u5B9A\u7684\u5B57\u6BB5\uFF0C\u53EF\u9009\u62E9\u90AE\u7BB1\u6216\u7528\u6237\u540D\uFF0C\u9ED8\u8BA4\u4E3A\u90AE\u7BB1\u3002\u9700\u8981IdP\u643A\u5E26\u7684\u7528\u6237\u4FE1\u606F\u5305\u542B ",paraId:4,tocIndex:6},{value:"email",paraId:4,tocIndex:6},{value:" \u6216 ",paraId:4,tocIndex:6},{value:"username",paraId:4,tocIndex:6},{value:" \u5B57\u6BB5\u3002",paraId:4,tocIndex:6},{value:"HTTP - NocoBase \u56DE\u8C03\u5730\u5740\u662F\u5426\u4E3A http \u534F\u8BAE\uFF0C\u9ED8\u8BA4 ",paraId:5,tocIndex:7},{value:"https",paraId:5,tocIndex:7},{value:".",paraId:5,tocIndex:7},{value:"Port - NocoBase \u56DE\u8C03\u5730\u5740\u7AEF\u53E3\uFF0C\u9ED8\u8BA4\u4E3A ",paraId:5,tocIndex:7},{value:"443/80",paraId:5,tocIndex:7},{value:"State token - \u7528\u4E8E\u6821\u9A8C\u8BF7\u6C42\u6765\u6E90\uFF0C\u9632\u6B62 CSRF \u653B\u51FB\u3002\u53EF\u4EE5\u586B\u5199\u4E00\u4E2A\u56FA\u5B9A\u503C\uFF0C",paraId:5,tocIndex:7},{value:"\u5F3A\u70C8\u5EFA\u8BAE\u7559\u7A7A\uFF0C\u4F1A\u9ED8\u8BA4\u751F\u6210\u968F\u673A\u503C\u3002\u5982\u679C\u8981\u4F7F\u7528\u56FA\u5B9A\u503C\uFF0C\u8BF7\u81EA\u884C\u8BC4\u4F30\u4F60\u7684\u4F7F\u7528\u73AF\u5883\u548C\u5B89\u5168\u98CE\u9669\u3002",paraId:5,tocIndex:7},{value:"Pass parameters in the authorization code grant exchange - \u5728\u4F7F\u7528 code \u4EA4\u6362 token \u7684\u65F6\u5019\uFF0C\u90E8\u5206 IdP \u53EF\u80FD\u4F1A\u8981\u6C42\u4F20\u9012 Client ID \u6216\u8005 Client Secret \u4F5C\u4E3A\u53C2\u6570\uFF0C\u53EF\u4EE5\u52FE\u9009\u5E76\u586B\u5199\u5BF9\u5E94\u7684\u53C2\u6570\u540D\u3002",paraId:5,tocIndex:7},{value:"Method to call the user info endpoint - \u8BF7\u6C42\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u7684 API \u65F6\u7684 HTTP \u65B9\u6CD5\u3002",paraId:5,tocIndex:7},{value:`Where to put the access token when calling the user info endpoint - \u8BF7\u6C42\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u7684 API \u65F6 access token \u7684\u4F20\u9012\u65B9\u5F0F\u3002 -`,paraId:5,tocIndex:7},{value:"Header - \u8BF7\u6C42\u5934\uFF0C\u9ED8\u8BA4\u3002",paraId:6,tocIndex:7},{value:"Body - \u8BF7\u6C42\u4F53, \u914D\u5408 ",paraId:6,tocIndex:7},{value:"POST",paraId:6,tocIndex:7},{value:" \u65B9\u6CD5\u4F7F\u7528\u3002",paraId:6,tocIndex:7},{value:"Query parameters - \u8BF7\u6C42\u53C2\u6570\uFF0C\u914D\u5408 ",paraId:6,tocIndex:7},{value:"GET",paraId:6,tocIndex:7},{value:" \u65B9\u6CD5\u4F7F\u7528\u3002",paraId:6,tocIndex:7},{value:"\u4F7F\u7528 (Usage) - \u56DE\u8C03URL (Redirect URL) \u7528\u4E8E\u590D\u5236\u5E76\u586B\u5199\u5230 IdP \u76F8\u5E94\u914D\u7F6E\u4E2D\u3002",paraId:7,tocIndex:8},{value:"\u672C\u5730\u6D4B\u8BD5\u65F6\uFF0CURL\u8BF7\u4F7F\u7528 ",paraId:8},{value:"127.0.0.1",paraId:8},{value:" \u800C\u4E0D\u662F ",paraId:8},{value:"localhost",paraId:8},{value:"\uFF0C\u56E0\u4E3A OIDC \u767B\u5F55\u65B9\u5F0F\u9700\u8981\u5411\u5BA2\u6237\u7AEF cookie \u5199\u5165 state \u7528\u4E8E\u5B89\u5168\u6821\u9A8C\u3002\u5982\u679C\u767B\u5F55\u65F6\u51FA\u73B0\u7A97\u53E3\u4E00\u95EA\u800C\u8FC7\uFF0C\u4F46\u662F\u6CA1\u6709\u767B\u5F55\u6210\u529F\uFF0C\u8BF7\u68C0\u67E5\u670D\u52A1\u7AEF\u662F\u5426\u6709 state \u4E0D\u5339\u914D\u7684\u65E5\u5FD7\u4EE5\u53CA\u8BF7\u6C42 cookie \u4E2D\u662F\u5426\u5305\u542B\u4E86 state \u53C2\u6570\uFF0C\u8FD9\u79CD\u60C5\u51B5\u901A\u5E38\u662F\u7531\u4E8E\u5BA2\u6237\u7AEF cookie \u4E2D\u7684 state \u548C\u8BF7\u6C42\u4E2D\u643A\u5E26\u7684 state \u4E0D\u5339\u914D\u3002",paraId:8},{value:"\u8BBF\u95EE\u767B\u5F55\u9875\u9762\uFF0C\u70B9\u51FB\u767B\u5F55\u8868\u5355\u4E0B\u65B9\u6309\u94AE\u53D1\u8D77\u7B2C\u4E09\u65B9\u767B\u5F55\u3002",paraId:9,tocIndex:9}],GJ={},VJ={title:"SAML \u8BA4\u8BC1",toc:"menu",filename:"docs/en-US/plugins/saml/index.md",lastUpdated:1732240239e3,description:"SAML \u63D2\u4EF6\u9075\u5FAA SAML2.0 \u534F\u8BAE\u6807\u51C6\uFF0C\u5B9E\u73B0\u7528\u6237\u4F7F\u7528\u7B2C\u4E09\u65B9\u8EAB\u4EFD\u8BA4\u8BC1\u670D\u52A1\u5546 (IdP) \u63D0\u4F9B\u7684\u8D26\u53F7\u767B \u5F55NocoBase\uFF0C\u65E0\u9700\u8F93\u5165\u7528\u6237\u540D\u548C\u5BC6\u7801\u3002"},KJ=[{id:"saml-\u8BA4\u8BC1",depth:1,title:"SAML \u8BA4\u8BC1"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:2,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u6DFB\u52A0-saml-\u8BA4\u8BC1",depth:2,title:"\u6DFB\u52A0 SAML \u8BA4\u8BC1"},{id:"\u914D\u7F6E",depth:2,title:"\u914D\u7F6E"},{id:"\u5B57\u6BB5\u6620\u5C04",depth:2,title:"\u5B57\u6BB5\u6620\u5C04"},{id:"\u767B\u5F55",depth:2,title:"\u767B\u5F55"}],ZJ=[{value:"SAML \u63D2\u4EF6\u9075\u5FAA SAML2.0 \u534F\u8BAE\u6807\u51C6\uFF0C\u5B9E\u73B0\u7528\u6237\u4F7F\u7528\u7B2C\u4E09\u65B9\u8EAB\u4EFD\u8BA4\u8BC1\u670D\u52A1\u5546 (IdP) \u63D0\u4F9B\u7684\u8D26\u53F7\u767B \u5F55NocoBase\uFF0C\u65E0\u9700\u8F93\u5165\u7528\u6237\u540D\u548C\u5BC6\u7801\u3002",paraId:0,tocIndex:1},{value:"\u8FDB\u5165\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u7BA1\u7406\u9875\u9762\u3002",paraId:1,tocIndex:3},{value:"\u6DFB\u52A0 - SAML",paraId:2,tocIndex:3},{value:"SSO URL - \u7531 IdP \u63D0\u4F9B\uFF0C\u7528\u4E8E\u5355\u70B9\u767B\u5F55\u7684\u7F51\u5740",paraId:3,tocIndex:4},{value:"\u516C\u94A5 (Public Certificate) - \u7531 IdP \u63D0\u4F9B",paraId:3,tocIndex:4},{value:"\u5B9E\u4F53ID (IdP Issuer) - \u53EF\u9009\uFF0C\u7531 IdP \u63D0\u4F9B",paraId:3,tocIndex:4},{value:"http - \u5982\u679C\u4F60\u7684 NocoBase \u5E94\u7528\u662F http \u534F\u8BAE\u7684\uFF0C\u8BF7\u52FE\u9009",paraId:3,tocIndex:4},{value:"Use this field to bind the user - \u7528\u4E8E\u548C\u5DF2\u6709\u7528\u6237\u5339\u914D\u7ED1\u5B9A\u7684\u5B57\u6BB5\uFF0C\u53EF\u9009\u62E9\u90AE\u7BB1\u6216\u7528\u6237\u540D\uFF0C\u9ED8\u8BA4\u4E3A\u90AE\u7BB1\u3002\u9700\u8981 IdP \u643A\u5E26\u7684\u7528\u6237\u4FE1\u606F\u5305\u542B ",paraId:3,tocIndex:4},{value:"email",paraId:3,tocIndex:4},{value:" \u6216 ",paraId:3,tocIndex:4},{value:"username",paraId:3,tocIndex:4},{value:" \u5B57\u6BB5\u3002",paraId:3,tocIndex:4},{value:"Sign up automatically when the user does not exist - \u5F53\u627E\u4E0D\u5230\u53EF\u5339\u914D\u7ED1\u5B9A\u7684\u5DF2\u6709\u7528\u6237\u65F6\uFF0C\u662F\u5426\u81EA\u52A8\u521B\u5EFA\u65B0\u7528\u6237\u3002",paraId:3,tocIndex:4},{value:"\u4F7F\u7528 (Usage) - ",paraId:3,tocIndex:4},{value:"SP Issuer / EntityID",paraId:3,tocIndex:4},{value:" \u548C ",paraId:3,tocIndex:4},{value:"ACS URL",paraId:3,tocIndex:4},{value:" \u7528\u4E8E\u590D\u5236\u5E76\u586B\u5199\u5230 IdP \u76F8\u5E94\u914D\u7F6E\u4E2D\u3002",paraId:3,tocIndex:4},{value:"\u5B57\u6BB5\u6620\u5C04\u9700\u8981\u5728IdP\u7684\u914D\u7F6E\u5E73\u53F0\u4E0A\u8FDB\u884C\u914D\u7F6E\uFF0C\u53EF\u53C2\u8003",paraId:4,tocIndex:5},{value:"\u793A\u4F8B",paraId:5,tocIndex:5},{value:"\u3002",paraId:4,tocIndex:5},{value:"NocoBase\u53EF\u4F9B\u6620\u5C04\u7684\u5B57\u6BB5\u6709\uFF1A",paraId:6,tocIndex:5},{value:"email\uFF08\u5FC5\u586B\uFF09",paraId:7,tocIndex:5},{value:"phone (\u4EC5\u5BF9 scope \u652F\u6301 ",paraId:7,tocIndex:5},{value:"phone",paraId:7,tocIndex:5},{value:" \u7684\u5E73\u53F0\u751F\u6548\uFF0C\u5982\u963F\u91CC\u4E91\uFF0C\u98DE\u4E66)",paraId:7,tocIndex:5},{value:"nickname",paraId:7,tocIndex:5},{value:"username",paraId:7,tocIndex:5},{value:"firstName",paraId:7,tocIndex:5},{value:"lastName",paraId:7,tocIndex:5},{value:"nameID",paraId:8,tocIndex:5},{value:` \u4E3A SAML \u534F\u8BAE\u643A\u5E26\uFF0C\u65E0\u9700\u6620\u5C04\uFF0C\u5C06\u4F5C\u4E3A\u7528\u6237\u552F\u4E00\u6807\u8BC6\u4FDD\u5B58\u3002 +`,paraId:8,tocIndex:4}],OJ={},RJ={title:"Popup",toc:"menu",filename:"docs/en-US/handbook/ui/pop-up.md",lastUpdated:173254844e4,description:"A popup window is a small window on the page, used to display some extended content within the current page. It can be presented in the form of a drawer or a dialog box, such as the details of a particular order or product, and can also be used for editing data. Popup operations play a very important role in the NocoBase interface configuration. Many blocks provide various popup operations, which can be used to add, view, edit data, etc. At the same time, various popup operations can be customized to adapt to various scenarios and needs."},MJ=[{id:"popup",depth:1,title:"Popup"},{id:"introduction",depth:2,title:"Introduction"},{id:"types--size",depth:2,title:"Types & Size"},{id:"drawer",depth:3,title:"Drawer"},{id:"dialog",depth:3,title:"Dialog"},{id:"page",depth:3,title:"Page"},{id:"use-cases",depth:2,title:"Use Cases"},{id:"popup-actions-of-the-block",depth:3,title:"Popup Actions of the Block"},{id:"popup-actions-of-relationship-data",depth:3,title:"Popup Actions of Relationship Data"},{id:"sharing-a-single-records-data",depth:3,title:"Sharing a Single Record's Data"},{id:"adding-blocks",depth:2,title:"Adding Blocks"},{id:"current-record",depth:3,title:"Current Record"},{id:"relationship-record",depth:3,title:"Relationship Record"},{id:"other-records",depth:3,title:"Other Records"},{id:"use-variables",depth:2,title:"Use Variables"}],LJ=[{value:"A popup window is a small window on the page, used to display some extended content within the current page. It can be presented in the form of a drawer or a dialog box, such as the details of a particular order or product, and can also be used for editing data. Popup operations play a very important role in the NocoBase interface configuration. Many blocks provide various popup operations, which can be used to add, view, edit data, etc. At the same time, various popup operations can be customized to adapt to various scenarios and needs.",paraId:0,tocIndex:1},{value:"In version v1.3.0-alpha and above, it supports opening as a ",paraId:1,tocIndex:2},{value:"page",paraId:2,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:"Pop-ups come in two types: drawer and dialog. Configure the type and size of the pop-up during the configuration of actions.",paraId:3,tocIndex:2},{value:` + `,paraId:4},{value:"The version of NocoBase needs to be v1.3.0-alpha or above.",paraId:5},{value:"The main scenarios of the popup window currently include:",paraId:6,tocIndex:6},{value:"Popup actions of the block, which can be used to add, view, edit the data of the block;",paraId:7,tocIndex:6},{value:"Popup actions of relationship data, which can be used to view and edit the extended information of relationship data.",paraId:7,tocIndex:6},{value:"The version of NocoBase needs to be v1.3.0-alpha or above.",paraId:8},{value:"If you want to share the data of a single record with others, you can directly copy the URL of the browser address bar after opening the popup window, and then share it with others. When others open this URL, the corresponding popup window will automatically pop up on the page.",paraId:9},{value:"The block added in the popup window can currently be used to add the following types of blocks.",paraId:10,tocIndex:10},{value:"The data in the popup window is divided into three dimensions:",paraId:11,tocIndex:10},{value:"Current record: used to display the current record;",paraId:12,tocIndex:10},{value:"Relationship record: used to display the relationship data related to the current record;",paraId:12,tocIndex:10},{value:"Other records: used to display data from other tables;",paraId:12,tocIndex:10},{value:"Example: Display the current order data.",paraId:13,tocIndex:11},{value:"Example: Display the product data associated with the current order.",paraId:14,tocIndex:12},{value:"Example: Configure the warehouse details block in the popup operation of the order table block.",paraId:15,tocIndex:13},{value:'Row action popup: Each popup has a "Current popup record" variable, representing the current row record.',paraId:16,tocIndex:14},{value:'Association field popup: Each popup has a "Current popup record" variable, representing the clicked relationship record.',paraId:16,tocIndex:14},{value:'The blocks in the popup can use the "Current popup record" variable, with the following use cases:',paraId:17,tocIndex:14},{value:"Configuring data scope for blocks",paraId:18,tocIndex:14},{value:"Configuring data scope for association fields",paraId:18,tocIndex:14},{value:"Configuring default values for fields (form for adding data)",paraId:18,tocIndex:14},{value:"Configuring linkage rules for actions",paraId:18,tocIndex:14},{value:"Assign field values configuration for form submit actions",paraId:18,tocIndex:14},{value:"For more content, refer to ",paraId:19,tocIndex:14},{value:"Variables",paraId:20,tocIndex:14}],NJ={},zJ={title:"\u7528\u6237\u8BA4\u8BC1",toc:"menu",filename:"docs/en-US/plugins/auth/index.md",lastUpdated:173254844e4,description:"NocoBase \u7684\u7528\u6237\u8BA4\u8BC1\u6A21\u5757\u4E3B\u8981\u7531\u4E24\u90E8\u5206\u7EC4\u6210\uFF1A"},FJ=[{id:"\u7528\u6237\u8BA4\u8BC1",depth:1,title:"\u7528\u6237\u8BA4\u8BC1"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"}],BJ=[{value:"NocoBase \u7684\u7528\u6237\u8BA4\u8BC1\u6A21\u5757\u4E3B\u8981\u7531\u4E24\u90E8\u5206\u7EC4\u6210\uFF1A",paraId:0,tocIndex:1},{value:"\u5185\u6838\u4E2D\u7684 ",paraId:1,tocIndex:1},{value:"@nocobase/auth",paraId:1,tocIndex:1},{value:" \u5B9A\u4E49\u767B\u5F55\u3001\u6CE8\u518C\u3001\u6821\u9A8C\u7B49\u7528\u6237\u8BA4\u8BC1\u76F8\u5173\u7684\u53EF\u6269\u5C55\u63A5\u53E3\u548C\u4E2D\u95F4\u4EF6\uFF0C\u540C\u65F6\u7528\u4E8E\u6CE8\u518C\u548C\u7BA1\u7406\u5404\u79CD\u6269\u5C55\u8BA4\u8BC1\u65B9\u5F0F",paraId:1,tocIndex:1},{value:"\u63D2\u4EF6\u4E2D\u7684 ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-auth",paraId:1,tocIndex:1},{value:" \u7528\u4E8E\u521D\u59CB\u5316\u5185\u6838\u4E2D\u7684\u8BA4\u8BC1\u7BA1\u7406\u6A21\u5757\uFF0C\u540C\u65F6\u63D0\u4F9B\u57FA\u7840\u7684\u7528\u6237\u540D\uFF08\u6216\u90AE\u7BB1\uFF09/\u5BC6\u7801\u8BA4\u8BC1\u65B9\u5F0F\u3002",paraId:1,tocIndex:1},{value:"\u9700\u8981\u540C\u65F6\u914D\u5408 ",paraId:2,tocIndex:1},{value:"@nocobase/plugin-users",paraId:3,tocIndex:1},{value:" \u63D2\u4EF6",paraId:3,tocIndex:1},{value:" \u63D0\u4F9B\u7684\u7528\u6237\u7BA1\u7406\u529F\u80FD",paraId:2,tocIndex:1},{value:"\u9664\u6B64\u4E4B\u5916\uFF0CNocobase\u8FD8\u63D0\u4F9B\u4E86\u5176\u4ED6\u591A\u79CD\u7528\u6237\u8BA4\u8BC1\u65B9\u5F0F\u63D2\u4EF6",paraId:4,tocIndex:1},{value:"@nocobase/plugin-sms-auth",paraId:5,tocIndex:1},{value:" - \u63D0\u4F9B\u77ED\u4FE1\u9A8C\u8BC1\u767B\u5F55\u529F\u80FD",paraId:6,tocIndex:1},{value:"@nocobase/plugin-saml",paraId:7,tocIndex:1},{value:" - \u63D0\u4F9BSAML SSO\u767B\u5F55\u529F\u80FD",paraId:6,tocIndex:1},{value:"@nocobase/plugin-oidc",paraId:8,tocIndex:1},{value:" - \u63D0\u4F9BOIDC SSO\u767B\u5F55\u529F\u80FD",paraId:6,tocIndex:1},{value:"@nocobase/plugin-cas",paraId:9,tocIndex:1},{value:" - \u63D0\u4F9BCAS SSO\u767B\u5F55\u529F\u80FD",paraId:6,tocIndex:1},{value:"\u901A\u8FC7\u4EE5\u4E0A\u63D2\u4EF6\uFF0C\u7BA1\u7406\u5458\u914D\u7F6E\u597D\u76F8\u5E94\u7684\u8BA4\u8BC1\u65B9\u5F0F\u4EE5\u540E\uFF0C\u7528\u6237\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528 Google Workspace, Microsoft Azure \u7B49\u5E73\u53F0\u63D0\u4F9B\u7684\u7528\u6237\u8EAB\u4EFD\u767B\u5F55\u7CFB\u7EDF\uFF0C\u4E5F\u53EF\u4EE5\u5BF9 \u63A5Auth0, Logto, Keycloak \u7B49\u5E73\u53F0\u5DE5\u5177\u3002\u9664\u6B64\u4E4B\u5916\uFF0C\u5F00\u53D1\u8005\u4E5F\u53EF\u4EE5\u901A\u8FC7\u6211\u4EEC\u63D0\u4F9B\u7684\u57FA\u7840\u63A5\u53E3\u5F88\u65B9\u4FBF\u5730\u6269\u5C55\u81EA\u5DF1\u6240\u9700\u8981\u7684\u5176\u4ED6\u8BA4\u8BC1\u65B9\u5F0F\u3002",paraId:10,tocIndex:1}],jJ={},HJ={title:"OIDC \u8BA4\u8BC1",toc:"menu",filename:"docs/en-US/plugins/oidc/index.md",lastUpdated:173254844e4,description:"OIDC \u63D2\u4EF6\u9075\u5FAA OIDC (Open ConnectID) \u534F\u8BAE\u6807\u51C6\uFF0C\u4F7F\u7528\u6388\u6743\u7801\u6A21\u5F0F (Authorization Code Flow), \u5B9E\u73B0\u7528\u6237\u4F7F\u7528\u7B2C\u4E09\u65B9\u8EAB\u4EFD\u8BA4\u8BC1\u670D\u52A1\u5546 (IdP) \u63D0\u4F9B\u7684\u8D26\u53F7\u767B\u5F55 NocoBase\uFF0C\u65E0\u9700\u8F93\u5165\u7528\u6237\u540D\u548C\u5BC6\u7801\u3002"},WJ=[{id:"oidc-\u8BA4\u8BC1",depth:1,title:"OIDC \u8BA4\u8BC1"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:2,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u6DFB\u52A0-oidc-\u8BA4\u8BC1",depth:2,title:"\u6DFB\u52A0 OIDC \u8BA4\u8BC1"},{id:"\u914D\u7F6E",depth:2,title:"\u914D\u7F6E"},{id:"\u57FA\u7840\u914D\u7F6E",depth:3,title:"\u57FA\u7840\u914D\u7F6E"},{id:"\u5B57\u6BB5\u6620\u5C04",depth:3,title:"\u5B57\u6BB5\u6620\u5C04"},{id:"\u9AD8\u7EA7\u914D\u7F6E",depth:3,title:"\u9AD8\u7EA7\u914D\u7F6E"},{id:"\u4F7F\u7528",depth:3,title:"\u4F7F\u7528"},{id:"\u767B\u5F55",depth:2,title:"\u767B\u5F55"}],$J=[{value:"OIDC \u63D2\u4EF6\u9075\u5FAA OIDC (Open ConnectID) \u534F\u8BAE\u6807\u51C6\uFF0C\u4F7F\u7528\u6388\u6743\u7801\u6A21\u5F0F (Authorization Code Flow), \u5B9E\u73B0\u7528\u6237\u4F7F\u7528\u7B2C\u4E09\u65B9\u8EAB\u4EFD\u8BA4\u8BC1\u670D\u52A1\u5546 (IdP) \u63D0\u4F9B\u7684\u8D26\u53F7\u767B\u5F55 NocoBase\uFF0C\u65E0\u9700\u8F93\u5165\u7528\u6237\u540D\u548C\u5BC6\u7801\u3002",paraId:0,tocIndex:1},{value:"\u8FDB\u5165\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u7BA1\u7406\u9875\u9762\u3002",paraId:1,tocIndex:3},{value:"\u6DFB\u52A0 - OIDC",paraId:2,tocIndex:3},{value:"Sign up automatically when the user does not exist - \u5F53\u627E\u4E0D\u5230\u53EF\u5339\u914D\u7ED1\u5B9A\u7684\u5DF2\u6709\u7528\u6237\u65F6\uFF0C\u662F\u5426\u81EA\u52A8\u521B\u5EFA\u65B0\u7528\u6237\u3002",paraId:3,tocIndex:5},{value:"Issuer - issuer \u7531 IdP \u63D0\u4F9B\uFF0C\u901A\u5E38\u4EE5 ",paraId:3,tocIndex:5},{value:"/.well-known/openid-configuration",paraId:3,tocIndex:5},{value:" \u7ED3\u5C3E",paraId:3,tocIndex:5},{value:"Client ID - \u5BA2\u6237\u7AEFID",paraId:3,tocIndex:5},{value:"Client Secret - \u5BA2\u6237\u7AEF\u5BC6\u94A5",paraId:3,tocIndex:5},{value:"scope - \u9009\u586B\uFF0C\u9ED8\u8BA4\u4E3A ",paraId:3,tocIndex:5},{value:"openid email profile",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:"id_token signed response algorithm - id_token \u7684\u7B7E\u540D\u65B9\u6CD5\uFF0C\u9ED8\u8BA4\u4E3A ",paraId:3,tocIndex:5},{value:"RS256",paraId:3,tocIndex:5},{value:".",paraId:3,tocIndex:5},{value:"Field Map - \u5B57\u6BB5\u6620\u5C04\u3002Nocobase \u7AEF\u76EE\u524D\u53EF\u4F9B\u6620\u5C04\u7684\u5B57\u6BB5\u6709\u6635\u79F0\u3001\u90AE\u7BB1\u548C\u624B\u673A\u53F7\u3002\u9ED8\u8BA4\u6635\u79F0\u4F7F\u7528 ",paraId:4,tocIndex:6},{value:"openid",paraId:4,tocIndex:6},{value:".",paraId:4,tocIndex:6},{value:"Use this field to bind the user - \u7528\u4E8E\u548C\u5DF2\u6709\u7528\u6237\u5339\u914D\u7ED1\u5B9A\u7684\u5B57\u6BB5\uFF0C\u53EF\u9009\u62E9\u90AE\u7BB1\u6216\u7528\u6237\u540D\uFF0C\u9ED8\u8BA4\u4E3A\u90AE\u7BB1\u3002\u9700\u8981IdP\u643A\u5E26\u7684\u7528\u6237\u4FE1\u606F\u5305\u542B ",paraId:4,tocIndex:6},{value:"email",paraId:4,tocIndex:6},{value:" \u6216 ",paraId:4,tocIndex:6},{value:"username",paraId:4,tocIndex:6},{value:" \u5B57\u6BB5\u3002",paraId:4,tocIndex:6},{value:"HTTP - NocoBase \u56DE\u8C03\u5730\u5740\u662F\u5426\u4E3A http \u534F\u8BAE\uFF0C\u9ED8\u8BA4 ",paraId:5,tocIndex:7},{value:"https",paraId:5,tocIndex:7},{value:".",paraId:5,tocIndex:7},{value:"Port - NocoBase \u56DE\u8C03\u5730\u5740\u7AEF\u53E3\uFF0C\u9ED8\u8BA4\u4E3A ",paraId:5,tocIndex:7},{value:"443/80",paraId:5,tocIndex:7},{value:"State token - \u7528\u4E8E\u6821\u9A8C\u8BF7\u6C42\u6765\u6E90\uFF0C\u9632\u6B62 CSRF \u653B\u51FB\u3002\u53EF\u4EE5\u586B\u5199\u4E00\u4E2A\u56FA\u5B9A\u503C\uFF0C",paraId:5,tocIndex:7},{value:"\u5F3A\u70C8\u5EFA\u8BAE\u7559\u7A7A\uFF0C\u4F1A\u9ED8\u8BA4\u751F\u6210\u968F\u673A\u503C\u3002\u5982\u679C\u8981\u4F7F\u7528\u56FA\u5B9A\u503C\uFF0C\u8BF7\u81EA\u884C\u8BC4\u4F30\u4F60\u7684\u4F7F\u7528\u73AF\u5883\u548C\u5B89\u5168\u98CE\u9669\u3002",paraId:5,tocIndex:7},{value:"Pass parameters in the authorization code grant exchange - \u5728\u4F7F\u7528 code \u4EA4\u6362 token \u7684\u65F6\u5019\uFF0C\u90E8\u5206 IdP \u53EF\u80FD\u4F1A\u8981\u6C42\u4F20\u9012 Client ID \u6216\u8005 Client Secret \u4F5C\u4E3A\u53C2\u6570\uFF0C\u53EF\u4EE5\u52FE\u9009\u5E76\u586B\u5199\u5BF9\u5E94\u7684\u53C2\u6570\u540D\u3002",paraId:5,tocIndex:7},{value:"Method to call the user info endpoint - \u8BF7\u6C42\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u7684 API \u65F6\u7684 HTTP \u65B9\u6CD5\u3002",paraId:5,tocIndex:7},{value:`Where to put the access token when calling the user info endpoint - \u8BF7\u6C42\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u7684 API \u65F6 access token \u7684\u4F20\u9012\u65B9\u5F0F\u3002 +`,paraId:5,tocIndex:7},{value:"Header - \u8BF7\u6C42\u5934\uFF0C\u9ED8\u8BA4\u3002",paraId:6,tocIndex:7},{value:"Body - \u8BF7\u6C42\u4F53, \u914D\u5408 ",paraId:6,tocIndex:7},{value:"POST",paraId:6,tocIndex:7},{value:" \u65B9\u6CD5\u4F7F\u7528\u3002",paraId:6,tocIndex:7},{value:"Query parameters - \u8BF7\u6C42\u53C2\u6570\uFF0C\u914D\u5408 ",paraId:6,tocIndex:7},{value:"GET",paraId:6,tocIndex:7},{value:" \u65B9\u6CD5\u4F7F\u7528\u3002",paraId:6,tocIndex:7},{value:"\u4F7F\u7528 (Usage) - \u56DE\u8C03URL (Redirect URL) \u7528\u4E8E\u590D\u5236\u5E76\u586B\u5199\u5230 IdP \u76F8\u5E94\u914D\u7F6E\u4E2D\u3002",paraId:7,tocIndex:8},{value:"\u672C\u5730\u6D4B\u8BD5\u65F6\uFF0CURL\u8BF7\u4F7F\u7528 ",paraId:8},{value:"127.0.0.1",paraId:8},{value:" \u800C\u4E0D\u662F ",paraId:8},{value:"localhost",paraId:8},{value:"\uFF0C\u56E0\u4E3A OIDC \u767B\u5F55\u65B9\u5F0F\u9700\u8981\u5411\u5BA2\u6237\u7AEF cookie \u5199\u5165 state \u7528\u4E8E\u5B89\u5168\u6821\u9A8C\u3002\u5982\u679C\u767B\u5F55\u65F6\u51FA\u73B0\u7A97\u53E3\u4E00\u95EA\u800C\u8FC7\uFF0C\u4F46\u662F\u6CA1\u6709\u767B\u5F55\u6210\u529F\uFF0C\u8BF7\u68C0\u67E5\u670D\u52A1\u7AEF\u662F\u5426\u6709 state \u4E0D\u5339\u914D\u7684\u65E5\u5FD7\u4EE5\u53CA\u8BF7\u6C42 cookie \u4E2D\u662F\u5426\u5305\u542B\u4E86 state \u53C2\u6570\uFF0C\u8FD9\u79CD\u60C5\u51B5\u901A\u5E38\u662F\u7531\u4E8E\u5BA2\u6237\u7AEF cookie \u4E2D\u7684 state \u548C\u8BF7\u6C42\u4E2D\u643A\u5E26\u7684 state \u4E0D\u5339\u914D\u3002",paraId:8},{value:"\u8BBF\u95EE\u767B\u5F55\u9875\u9762\uFF0C\u70B9\u51FB\u767B\u5F55\u8868\u5355\u4E0B\u65B9\u6309\u94AE\u53D1\u8D77\u7B2C\u4E09\u65B9\u767B\u5F55\u3002",paraId:9,tocIndex:9}],GJ={},VJ={title:"SAML \u8BA4\u8BC1",toc:"menu",filename:"docs/en-US/plugins/saml/index.md",lastUpdated:173254844e4,description:"SAML \u63D2\u4EF6\u9075\u5FAA SAML2.0 \u534F\u8BAE\u6807\u51C6\uFF0C\u5B9E\u73B0\u7528\u6237\u4F7F\u7528\u7B2C\u4E09\u65B9\u8EAB\u4EFD\u8BA4\u8BC1\u670D\u52A1\u5546 (IdP) \u63D0\u4F9B\u7684\u8D26\u53F7\u767B \u5F55NocoBase\uFF0C\u65E0\u9700\u8F93\u5165\u7528\u6237\u540D\u548C\u5BC6\u7801\u3002"},KJ=[{id:"saml-\u8BA4\u8BC1",depth:1,title:"SAML \u8BA4\u8BC1"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:2,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u6DFB\u52A0-saml-\u8BA4\u8BC1",depth:2,title:"\u6DFB\u52A0 SAML \u8BA4\u8BC1"},{id:"\u914D\u7F6E",depth:2,title:"\u914D\u7F6E"},{id:"\u5B57\u6BB5\u6620\u5C04",depth:2,title:"\u5B57\u6BB5\u6620\u5C04"},{id:"\u767B\u5F55",depth:2,title:"\u767B\u5F55"}],ZJ=[{value:"SAML \u63D2\u4EF6\u9075\u5FAA SAML2.0 \u534F\u8BAE\u6807\u51C6\uFF0C\u5B9E\u73B0\u7528\u6237\u4F7F\u7528\u7B2C\u4E09\u65B9\u8EAB\u4EFD\u8BA4\u8BC1\u670D\u52A1\u5546 (IdP) \u63D0\u4F9B\u7684\u8D26\u53F7\u767B \u5F55NocoBase\uFF0C\u65E0\u9700\u8F93\u5165\u7528\u6237\u540D\u548C\u5BC6\u7801\u3002",paraId:0,tocIndex:1},{value:"\u8FDB\u5165\u7528\u6237\u8BA4\u8BC1\u63D2\u4EF6\u7BA1\u7406\u9875\u9762\u3002",paraId:1,tocIndex:3},{value:"\u6DFB\u52A0 - SAML",paraId:2,tocIndex:3},{value:"SSO URL - \u7531 IdP \u63D0\u4F9B\uFF0C\u7528\u4E8E\u5355\u70B9\u767B\u5F55\u7684\u7F51\u5740",paraId:3,tocIndex:4},{value:"\u516C\u94A5 (Public Certificate) - \u7531 IdP \u63D0\u4F9B",paraId:3,tocIndex:4},{value:"\u5B9E\u4F53ID (IdP Issuer) - \u53EF\u9009\uFF0C\u7531 IdP \u63D0\u4F9B",paraId:3,tocIndex:4},{value:"http - \u5982\u679C\u4F60\u7684 NocoBase \u5E94\u7528\u662F http \u534F\u8BAE\u7684\uFF0C\u8BF7\u52FE\u9009",paraId:3,tocIndex:4},{value:"Use this field to bind the user - \u7528\u4E8E\u548C\u5DF2\u6709\u7528\u6237\u5339\u914D\u7ED1\u5B9A\u7684\u5B57\u6BB5\uFF0C\u53EF\u9009\u62E9\u90AE\u7BB1\u6216\u7528\u6237\u540D\uFF0C\u9ED8\u8BA4\u4E3A\u90AE\u7BB1\u3002\u9700\u8981 IdP \u643A\u5E26\u7684\u7528\u6237\u4FE1\u606F\u5305\u542B ",paraId:3,tocIndex:4},{value:"email",paraId:3,tocIndex:4},{value:" \u6216 ",paraId:3,tocIndex:4},{value:"username",paraId:3,tocIndex:4},{value:" \u5B57\u6BB5\u3002",paraId:3,tocIndex:4},{value:"Sign up automatically when the user does not exist - \u5F53\u627E\u4E0D\u5230\u53EF\u5339\u914D\u7ED1\u5B9A\u7684\u5DF2\u6709\u7528\u6237\u65F6\uFF0C\u662F\u5426\u81EA\u52A8\u521B\u5EFA\u65B0\u7528\u6237\u3002",paraId:3,tocIndex:4},{value:"\u4F7F\u7528 (Usage) - ",paraId:3,tocIndex:4},{value:"SP Issuer / EntityID",paraId:3,tocIndex:4},{value:" \u548C ",paraId:3,tocIndex:4},{value:"ACS URL",paraId:3,tocIndex:4},{value:" \u7528\u4E8E\u590D\u5236\u5E76\u586B\u5199\u5230 IdP \u76F8\u5E94\u914D\u7F6E\u4E2D\u3002",paraId:3,tocIndex:4},{value:"\u5B57\u6BB5\u6620\u5C04\u9700\u8981\u5728IdP\u7684\u914D\u7F6E\u5E73\u53F0\u4E0A\u8FDB\u884C\u914D\u7F6E\uFF0C\u53EF\u53C2\u8003",paraId:4,tocIndex:5},{value:"\u793A\u4F8B",paraId:5,tocIndex:5},{value:"\u3002",paraId:4,tocIndex:5},{value:"NocoBase\u53EF\u4F9B\u6620\u5C04\u7684\u5B57\u6BB5\u6709\uFF1A",paraId:6,tocIndex:5},{value:"email\uFF08\u5FC5\u586B\uFF09",paraId:7,tocIndex:5},{value:"phone (\u4EC5\u5BF9 scope \u652F\u6301 ",paraId:7,tocIndex:5},{value:"phone",paraId:7,tocIndex:5},{value:" \u7684\u5E73\u53F0\u751F\u6548\uFF0C\u5982\u963F\u91CC\u4E91\uFF0C\u98DE\u4E66)",paraId:7,tocIndex:5},{value:"nickname",paraId:7,tocIndex:5},{value:"username",paraId:7,tocIndex:5},{value:"firstName",paraId:7,tocIndex:5},{value:"lastName",paraId:7,tocIndex:5},{value:"nameID",paraId:8,tocIndex:5},{value:` \u4E3A SAML \u534F\u8BAE\u643A\u5E26\uFF0C\u65E0\u9700\u6620\u5C04\uFF0C\u5C06\u4F5C\u4E3A\u7528\u6237\u552F\u4E00\u6807\u8BC6\u4FDD\u5B58\u3002 \u65B0\u7528\u6237\u6635\u79F0\u4F7F\u7528\u89C4\u5219\u4F18\u5148\u7EA7: `,paraId:8,tocIndex:5},{value:"nickname",paraId:8,tocIndex:5},{value:" > ",paraId:8,tocIndex:5},{value:"firstName lastName",paraId:8,tocIndex:5},{value:" > ",paraId:8,tocIndex:5},{value:"username",paraId:8,tocIndex:5},{value:" > ",paraId:8,tocIndex:5},{value:"nameID",paraId:8,tocIndex:5},{value:` \u6682\u65F6\u4E0D\u652F\u6301\u6620\u5C04\u7528\u6237\u7EC4\u7EC7\u3001\u89D2\u8272\u3002`,paraId:8,tocIndex:5},{value:"\u8BBF\u95EE\u767B\u5F55\u9875\u9762\uFF0C\u70B9\u51FB\u767B\u5F55\u8868\u5355\u4E0B\u65B9\u6309\u94AE\u53D1\u8D77\u7B2C\u4E09\u65B9\u767B\u5F55\u3002",paraId:9,tocIndex:6}],YJ={"docs-en-us-api-client-router-demo-0":{component:n.memo(n.lazy(io()(Ct()().mark(function Vt(){var Ga,va,Fa,lt,Ka,ft,Ba,vt,ct,Za,xt;return Ct()().wrap(function(st){for(;;)switch(st.prev=st.next){case 0:return st.next=2,Promise.resolve().then(e.t.bind(e,67294,19));case 2:return Ga=st.sent,va=Ga.default,st.next=6,Promise.resolve().then(e.bind(e,39711));case 6:return Fa=st.sent,lt=Fa.Link,Ka=Fa.Outlet,st.next=11,Promise.all([e.e(61485),e.e(57563),e.e(53189),e.e(29799),e.e(26985),e.e(25715),e.e(67050),e.e(95989),e.e(93969),e.e(53860),e.e(94350),e.e(83169),e.e(73377),e.e(40071)]).then(e.bind(e,73377));case 11:return ft=st.sent,Ba=ft.Application,vt=function(){return va.createElement("h1",null,"Home")},ct=function(){return va.createElement("h1",null,"About")},Za=function(){return va.createElement("div",null,va.createElement("div",null,va.createElement(lt,{to:"/"},"Home"),", ",va.createElement(lt,{to:"/about"},"About")),va.createElement(Ka,null))},xt=new Ba({router:{type:"memory",initialEntries:["/"]}}),xt.router.add("root",{element:va.createElement(Za,null)}),xt.router.add("root.home",{path:"/",element:va.createElement(vt,null)}),xt.router.add("root.about",{path:"/about",element:va.createElement(ct,null)}),st.abrupt("return",{default:xt.getRootComponent()});case 21:case"end":return st.stop()}},Vt)})))),asset:{type:"BLOCK",id:"docs-en-us-api-client-router-demo-0",refAtomIds:[],dependencies:{"index.tsx":{type:"FILE",value:`import React from 'react'; import { Link, Outlet } from 'react-router-dom'; @@ -18792,7 +18845,7 @@ app.router.add('root.about', { element: , }); -export default app.getRootComponent();`},react:{type:"NPM",value:"18.1.0"},"react-router-dom":{type:"NPM",value:"6.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"}}}}},QJ={title:"Router",toc:"menu",filename:"docs/en-US/api/client/router.md",lastUpdated:1732240239e3,description:"It will generate the following routes:"},JJ=[{id:"router",depth:1,title:"Router"},{id:"api",depth:2,title:"API"},{id:"initial",depth:3,title:"Initial"},{id:"add-route",depth:3,title:"add Route"},{id:"basic",depth:4,title:"basic"},{id:"component-is-string",depth:4,title:"Component is String"},{id:"nested",depth:4,title:"nested"},{id:"remove-route",depth:3,title:"remove Route"},{id:"router-in-plugin",depth:4,title:"Router in plugin"},{id:"example",depth:2,title:"Example"}],XJ=[{value:`const app = new Application({ +export default app.getRootComponent();`},react:{type:"NPM",value:"18.1.0"},"react-router-dom":{type:"NPM",value:"6.3.0"},"@nocobase/client":{type:"NPM",value:"0.21.0-alpha.6"}}}}},QJ={title:"Router",toc:"menu",filename:"docs/en-US/api/client/router.md",lastUpdated:173254844e4,description:"It will generate the following routes:"},JJ=[{id:"router",depth:1,title:"Router"},{id:"api",depth:2,title:"API"},{id:"initial",depth:3,title:"Initial"},{id:"add-route",depth:3,title:"add Route"},{id:"basic",depth:4,title:"basic"},{id:"component-is-string",depth:4,title:"Component is String"},{id:"nested",depth:4,title:"nested"},{id:"remove-route",depth:3,title:"remove Route"},{id:"router-in-plugin",depth:4,title:"Router in plugin"},{id:"example",depth:2,title:"Example"}],XJ=[{value:`const app = new Application({ router: { type: 'browser', // type default value is \`browser\` }, @@ -18889,7 +18942,7 @@ app.router.remove('hello'); this.app.router.remove('world'); } } -`,paraId:7,tocIndex:8}],eX={},aX={title:"REST API",toc:"menu",filename:"docs/en-US/api/http/rest-api.md",lastUpdated:1732240239e3,description:"HTTP API of NocoBase is a superset of REST API, and the standard CRUD API also supports the RESTful style."},tX=[{id:"rest-api",depth:1,title:"REST API"},{id:"collection-resources",depth:2,title:"Collection Resources"},{id:"create-collection",depth:3,title:"Create Collection"},{id:"view-collection-list",depth:3,title:"View Collection List"},{id:"view-collection-details",depth:3,title:"View Collection Details"},{id:"update-collection",depth:3,title:"Update Collection"},{id:"delete-collection",depth:3,title:"Delete Collection"},{id:"association-resources",depth:2,title:"Association Resources"},{id:"create-association",depth:3,title:"Create Association"},{id:"view-association-list",depth:3,title:"View Association List"},{id:"view-association-details",depth:3,title:"View Association Details"},{id:"update-association",depth:3,title:"Update Association"},{id:"delete-association",depth:3,title:"Delete Association"}],nX=[{value:"HTTP API of NocoBase is a superset of REST API, and the standard CRUD API also supports the RESTful style.",paraId:0,tocIndex:0},{value:"HTTP API",paraId:1,tocIndex:2},{value:`POST /api/:create +`,paraId:7,tocIndex:8}],eX={},aX={title:"REST API",toc:"menu",filename:"docs/en-US/api/http/rest-api.md",lastUpdated:173254844e4,description:"HTTP API of NocoBase is a superset of REST API, and the standard CRUD API also supports the RESTful style."},tX=[{id:"rest-api",depth:1,title:"REST API"},{id:"collection-resources",depth:2,title:"Collection Resources"},{id:"create-collection",depth:3,title:"Create Collection"},{id:"view-collection-list",depth:3,title:"View Collection List"},{id:"view-collection-details",depth:3,title:"View Collection Details"},{id:"update-collection",depth:3,title:"Update Collection"},{id:"delete-collection",depth:3,title:"Delete Collection"},{id:"association-resources",depth:2,title:"Association Resources"},{id:"create-association",depth:3,title:"Create Association"},{id:"view-association-list",depth:3,title:"View Association List"},{id:"view-association-details",depth:3,title:"View Association Details"},{id:"update-association",depth:3,title:"Update Association"},{id:"delete-association",depth:3,title:"Delete Association"}],nX=[{value:"HTTP API of NocoBase is a superset of REST API, and the standard CRUD API also supports the RESTful style.",paraId:0,tocIndex:0},{value:"HTTP API",paraId:1,tocIndex:2},{value:`POST /api/:create {} # JSON body `,paraId:2,tocIndex:2},{value:"REST API",paraId:3,tocIndex:2},{value:`POST /api/ @@ -18942,7 +18995,7 @@ POST /api///:update///:destroy/ `,paraId:38,tocIndex:12},{value:"REST API",paraId:39,tocIndex:12},{value:`DELETE /api//// -`,paraId:40,tocIndex:12}],oX={},rX={title:"Plugin",toc:"menu",filename:"docs/en-US/api/server/plugin.md",lastUpdated:1732240239e3,description:"Plugin is the plugin class for the NocoBase server, providing configuration properties and lifecycle methods related to server-side plugins."},dX=[{id:"plugin",depth:1,title:"Plugin"},{id:"overview",depth:2,title:"Overview"},{id:"basic-usage",depth:3,title:"Basic Usage"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"options",depth:3,title:"options"},{id:"name",depth:3,title:"name"},{id:"enabled",depth:3,title:"enabled"},{id:"installed",depth:3,title:"installed"},{id:"log",depth:3,title:"log"},{id:"app",depth:3,title:"app"},{id:"pm",depth:3,title:"pm"},{id:"db",depth:3,title:"db"},{id:"lifecycle-methods",depth:2,title:"Lifecycle Methods"},{id:"afteradd",depth:3,title:"afterAdd()"},{id:"beforeload",depth:3,title:"beforeLoad()"},{id:"load",depth:3,title:"load()"},{id:"install",depth:3,title:"install()"},{id:"beforeenable",depth:3,title:"beforeEnable()"},{id:"afterenable",depth:3,title:"afterEnable()"},{id:"beforedisable",depth:3,title:"beforeDisable()"},{id:"afterdisable",depth:3,title:"afterDisable()"},{id:"beforeremove",depth:3,title:"beforeRemove()"},{id:"afterremove",depth:3,title:"afterRemove()"},{id:"other-methods",depth:2,title:"Other Methods"},{id:"t",depth:3,title:"t()"},{id:"createlogger",depth:3,title:"createLogger()"},{id:"tojson",depth:3,title:"toJSON()"},{id:"sendsyncmessage",depth:3,title:"sendSyncMessage()"},{id:"signature",depth:4,title:"Signature"},{id:"arguments",depth:4,title:"Arguments"},{id:"example",depth:4,title:"Example"},{id:"handlesyncmessage",depth:3,title:"handleSyncMessage()"},{id:"signature-1",depth:4,title:"Signature"},{id:"arguments-1",depth:4,title:"Arguments"},{id:"example-1",depth:4,title:"Example"}],iX=[{value:"Plugin",paraId:0,tocIndex:1},{value:" is the plugin class for the NocoBase server, providing configuration properties and lifecycle methods related to server-side plugins.",paraId:0,tocIndex:1},{value:`import { Plugin } from '@nocobase/server'; +`,paraId:40,tocIndex:12}],oX={},rX={title:"Plugin",toc:"menu",filename:"docs/en-US/api/server/plugin.md",lastUpdated:173254844e4,description:"Plugin is the plugin class for the NocoBase server, providing configuration properties and lifecycle methods related to server-side plugins."},dX=[{id:"plugin",depth:1,title:"Plugin"},{id:"overview",depth:2,title:"Overview"},{id:"basic-usage",depth:3,title:"Basic Usage"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"options",depth:3,title:"options"},{id:"name",depth:3,title:"name"},{id:"enabled",depth:3,title:"enabled"},{id:"installed",depth:3,title:"installed"},{id:"log",depth:3,title:"log"},{id:"app",depth:3,title:"app"},{id:"pm",depth:3,title:"pm"},{id:"db",depth:3,title:"db"},{id:"lifecycle-methods",depth:2,title:"Lifecycle Methods"},{id:"afteradd",depth:3,title:"afterAdd()"},{id:"beforeload",depth:3,title:"beforeLoad()"},{id:"load",depth:3,title:"load()"},{id:"install",depth:3,title:"install()"},{id:"beforeenable",depth:3,title:"beforeEnable()"},{id:"afterenable",depth:3,title:"afterEnable()"},{id:"beforedisable",depth:3,title:"beforeDisable()"},{id:"afterdisable",depth:3,title:"afterDisable()"},{id:"beforeremove",depth:3,title:"beforeRemove()"},{id:"afterremove",depth:3,title:"afterRemove()"},{id:"other-methods",depth:2,title:"Other Methods"},{id:"t",depth:3,title:"t()"},{id:"createlogger",depth:3,title:"createLogger()"},{id:"tojson",depth:3,title:"toJSON()"},{id:"sendsyncmessage",depth:3,title:"sendSyncMessage()"},{id:"signature",depth:4,title:"Signature"},{id:"arguments",depth:4,title:"Arguments"},{id:"example",depth:4,title:"Example"},{id:"handlesyncmessage",depth:3,title:"handleSyncMessage()"},{id:"signature-1",depth:4,title:"Signature"},{id:"arguments-1",depth:4,title:"Arguments"},{id:"example-1",depth:4,title:"Example"}],iX=[{value:"Plugin",paraId:0,tocIndex:1},{value:" is the plugin class for the NocoBase server, providing configuration properties and lifecycle methods related to server-side plugins.",paraId:0,tocIndex:1},{value:`import { Plugin } from '@nocobase/server'; export class PluginDemoServer extends Plugin {} @@ -18956,9 +19009,9 @@ export default PluginDemoServer; console.log('handleSyncMessage', message); // this.reloadData(); } -`,paraId:40,tocIndex:34}],lX={},cX={title:"Introduction",toc:"menu",filename:"docs/en-US/development/index.md",lastUpdated:1732240239e3,description:"NocoBase adopts a microkernel architecture, where various functionalities are extended in the form of plugins. The plugin-based design reduces the coupling between modules, increasing reusability. With the continuous expansion of the plugin library, common scenarios can be easily built by combining plugins. NocoBase's no-code platform is composed of various plugins."},sX=[{id:"introduction",depth:1,title:"Introduction"},{id:"plugin-manager",depth:2,title:"Plugin Manager"},{id:"extensibility",depth:2,title:"Extensibility"}],uX=[{value:"NocoBase adopts a microkernel architecture, where various functionalities are extended in the form of plugins. The plugin-based design reduces the coupling between modules, increasing reusability. With the continuous expansion of the plugin library, common scenarios can be easily built by combining plugins. NocoBase's no-code platform is composed of various plugins.",paraId:0,tocIndex:0},{value:"NocoBase provides a powerful plugin manager to handle plugin management. No-code users can manage the addition, activation, deactivation, and deletion of plugins through the interface.",paraId:1,tocIndex:1},{value:"Developers can also manage plugins through the CLI.",paraId:2,tocIndex:1},{value:"For more plugin examples, see ",paraId:3,tocIndex:1},{value:"packages/samples",paraId:3,tocIndex:1},{value:".",paraId:3,tocIndex:1},{value:"Whether it's generic functionalities or personalized customization, they can be written in the form of plugins. NocoBase's extensibility is reflected in various aspects:",paraId:4,tocIndex:2},{value:"It can be visible user interface-related page modules, block types, operation types, field types, etc.",paraId:5,tocIndex:2},{value:"It can also be used for enhancing or restricting HTTP API filters, validators, access restrictions, etc.",paraId:5,tocIndex:2},{value:"It can also be more fundamental enhancements of features such as data tables, migrations, events, command-line, etc.",paraId:5,tocIndex:2},{value:"Modules are distributed as follows:",paraId:6,tocIndex:2},{value:`Server-side +`,paraId:40,tocIndex:34}],lX={},cX={title:"Introduction",toc:"menu",filename:"docs/en-US/development/index.md",lastUpdated:173254844e4,description:"NocoBase adopts a microkernel architecture, where various functionalities are extended in the form of plugins. The plugin-based design reduces the coupling between modules, increasing reusability. With the continuous expansion of the plugin library, common scenarios can be easily built by combining plugins. NocoBase's no-code platform is composed of various plugins."},sX=[{id:"introduction",depth:1,title:"Introduction"},{id:"plugin-manager",depth:2,title:"Plugin Manager"},{id:"extensibility",depth:2,title:"Extensibility"}],uX=[{value:"NocoBase adopts a microkernel architecture, where various functionalities are extended in the form of plugins. The plugin-based design reduces the coupling between modules, increasing reusability. With the continuous expansion of the plugin library, common scenarios can be easily built by combining plugins. NocoBase's no-code platform is composed of various plugins.",paraId:0,tocIndex:0},{value:"NocoBase provides a powerful plugin manager to handle plugin management. No-code users can manage the addition, activation, deactivation, and deletion of plugins through the interface.",paraId:1,tocIndex:1},{value:"Developers can also manage plugins through the CLI.",paraId:2,tocIndex:1},{value:"For more plugin examples, see ",paraId:3,tocIndex:1},{value:"packages/samples",paraId:3,tocIndex:1},{value:".",paraId:3,tocIndex:1},{value:"Whether it's generic functionalities or personalized customization, they can be written in the form of plugins. NocoBase's extensibility is reflected in various aspects:",paraId:4,tocIndex:2},{value:"It can be visible user interface-related page modules, block types, operation types, field types, etc.",paraId:5,tocIndex:2},{value:"It can also be used for enhancing or restricting HTTP API filters, validators, access restrictions, etc.",paraId:5,tocIndex:2},{value:"It can also be more fundamental enhancements of features such as data tables, migrations, events, command-line, etc.",paraId:5,tocIndex:2},{value:"Modules are distributed as follows:",paraId:6,tocIndex:2},{value:`Server-side `,paraId:7,tocIndex:2},{value:"Data tables and fields",paraId:8,tocIndex:2},{value:"Resources and operations",paraId:8,tocIndex:2},{value:"Middleware",paraId:8,tocIndex:2},{value:"Events",paraId:8,tocIndex:2},{value:"Custom command-line",paraId:8,tocIndex:2},{value:"Internationalization",paraId:8,tocIndex:2},{value:`Client-side -`,paraId:7,tocIndex:2},{value:"Route management and plugin configuration pages",paraId:9,tocIndex:2},{value:"Styles and themes",paraId:9,tocIndex:2},{value:"Providers and contexts",paraId:9,tocIndex:2},{value:"UI Schema",paraId:9,tocIndex:2},{value:"Internationalization",paraId:9,tocIndex:2}],pX={},IX={title:"\u7EE7\u627F",toc:"menu",filename:"docs/en-US/manual/ui/inherit.md",lastUpdated:1732240239e3,description:"\u5B50\u8868\u5728\u533A\u5757\u4E2D\u4F7F\u7528\u65F6\u9664\u4E86\u672C\u8868\u5B57\u6BB5\u8FD8\u6709\u6240\u6709\u7236\u8868\u7684\u5B57\u6BB5\u4F9B\u914D\u7F6E"},_X=[{id:"\u7EE7\u627F",depth:1,title:"\u7EE7\u627F"},{id:"\u914D\u7F6E\u5B57\u6BB5\u5305\u62EC\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5",depth:2,title:"\u914D\u7F6E\u5B57\u6BB5\u5305\u62EC\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5"},{id:"\u6DFB\u52A0\u64CD\u4F5C\u53EF\u4EE5\u542F\u7528\u5B50\u8868",depth:2,title:"\u6DFB\u52A0\u64CD\u4F5C\u53EF\u4EE5\u542F\u7528\u5B50\u8868"},{id:"\u7EE7\u627F\u8868\u6570\u636E\u7684\u67E5\u770B\u4E0E\u7F16\u8F91\u6309-__collection-\u663E\u793A",depth:2,title:"\u7EE7\u627F\u8868\u6570\u636E\u7684\u67E5\u770B\u4E0E\u7F16\u8F91\uFF08\u6309 __collection \u663E\u793A\uFF09"},{id:"\u5173\u7CFB\u6570\u636E\u7684\u5F39\u7A97\u6309-__collection-\u663E\u793A",depth:2,title:"\u5173\u7CFB\u6570\u636E\u7684\u5F39\u7A97\uFF08\u6309 __collection \u663E\u793A\uFF09"},{id:"\u7EE7\u627F\u4E0B\u7684\u7B5B\u9009\u8054\u52A8",depth:2,title:"\u7EE7\u627F\u4E0B\u7684\u7B5B\u9009\u8054\u52A8"}],vX=[{value:"\u5B50\u8868\u5728\u533A\u5757\u4E2D\u4F7F\u7528\u65F6\u9664\u4E86\u672C\u8868\u5B57\u6BB5\u8FD8\u6709\u6240\u6709\u7236\u8868\u7684\u5B57\u6BB5\u4F9B\u914D\u7F6E",paraId:0,tocIndex:1},{value:"\u7236\u8868\u914D\u7F6E TableOID(\u8BB0\u5F55\u662F\u7531\u54EA\u4E2A\u8868\u521B\u5EFA\u7684\u6570\u636E)",paraId:1,tocIndex:2},{value:"\u5B50\u8868\u7684\u6570\u636E\u6C47\u805A\u5728\u7236\u8868\u4E2D",paraId:2,tocIndex:2},{value:"\u5728\u7236\u8868\u4E2D\u4E3A\u5B50\u8868\u914D\u7F6E\u6DFB\u52A0\u64CD\u4F5C",paraId:3,tocIndex:2},{value:"\u53EF\u9009\u9879\u4E3A\u5F53\u524D\u8868\u7684\u6240\u6709\u5B50\u8868",paraId:4,tocIndex:2},{value:"UI \u914D\u7F6E\u72B6\u6001\u4E0B\u53EF\u4EE5\u4E3A\u5B50\u8868\u914D\u7F6E\u533A\u5757\uFF08\u8868\u5355/\u8BE6\u60C5\u533A\u5757\uFF09",paraId:5,tocIndex:3},{value:"\u975E UI \u914D\u7F6E\u72B6\u6001\u4E0B,\u6309 __collection \u53EA\u663E\u793A\u5BF9\u5E94\u6570\u636E\u8868\u8BB0\u5F55\u7684\u533A\u5757",paraId:6,tocIndex:3},{value:"\u5173\u7CFB\u6570\u636E\u7684\u8BE6\u60C5\u5728\u975E UI \u914D\u7F6E\u72B6\u6001\u4E0B\u6309 __collection \u4EC5\u663E\u793A\u5BF9\u5E94\u6570\u636E\u7684\u533A\u5757",paraId:7,tocIndex:4},{value:"B \u53EF\u4EE5\u8FDE\u63A5 A\uFF0CB \u7684\u5B50\u8868 B1 \u4E5F\u53EF\u4EE5\u8FDE\u63A5 A",paraId:8,tocIndex:5}],mX={},hX={title:"Linkage rules",toc:"menu",filename:"docs/en-US/manual/ui/linkage.md",lastUpdated:1732240239e3},fX=[{id:"linkage-rules",depth:1,title:"Linkage rules"}],xX=[],gX={},bX={title:"\u6743\u9650\u63A7\u5236",toc:"menu",filename:"docs/en-US/plugins/acl/index.md",lastUpdated:1732240239e3,description:"NocoBase \u7684 ACL \u6A21\u5757\u4E3B\u8981\u7531\u4E24\u90E8\u5206\u7EC4\u6210\uFF1A"},yX=[{id:"\u6743\u9650\u63A7\u5236",depth:1,title:"\u6743\u9650\u63A7\u5236"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"}],wX=[{value:"NocoBase \u7684 ACL \u6A21\u5757\u4E3B\u8981\u7531\u4E24\u90E8\u5206\u7EC4\u6210\uFF1A",paraId:0,tocIndex:1},{value:"\u5185\u6838\u4E2D\u7684 ",paraId:1,tocIndex:1},{value:"@nocobase/acl",paraId:1,tocIndex:1},{value:"\uFF0C\u63D0\u4F9B\u6838\u5FC3\u529F\u80FD",paraId:1,tocIndex:1},{value:"\u63D2\u4EF6\u4E2D\u7684 ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-acl",paraId:1,tocIndex:1},{value:"\uFF0C\u63D0\u4F9B\u52A8\u6001\u914D\u7F6E\u80FD\u529B",paraId:1,tocIndex:1},{value:"\u5185\u7F6E\u63D2\u4EF6\uFF0C\u65E0\u9700\u5355\u72EC\u5B89\u88C5\u3002",paraId:2,tocIndex:2}],kX={},SX={title:"CAS \u8BA4\u8BC1",toc:"menu",filename:"docs/en-US/plugins/cas/index.md",lastUpdated:1732240239e3,description:"CAS (Central Authentication Service) \u662F\u4E00\u79CD\u5355\u70B9\u767B\u5F55\u534F\u8BAE\uFF0C\u5B83\u5141\u8BB8\u7528\u6237\u5728\u4E00\u4E2A\u5E94\u7528\u7A0B\u5E8F\u4E2D\u8FDB\u884C\u8EAB\u4EFD\u9A8C\u8BC1\uFF0C\u7136\u540E\u5728\u4E0D\u9700\u8981\u91CD\u65B0\u767B\u5F55\u7684\u60C5\u51B5\u4E0B\u8BBF\u95EE\u5176\u4ED6\u5E94\u7528\u7A0B\u5E8F\u3002"},UX=[{id:"cas-\u8BA4\u8BC1",depth:1,title:"CAS \u8BA4\u8BC1"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:3,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u6DFB\u52A0-cas-\u8BA4\u8BC1",depth:3,title:"\u6DFB\u52A0 CAS \u8BA4\u8BC1"},{id:"\u8BBF\u95EE\u767B\u5F55\u9875",depth:3,title:"\u8BBF\u95EE\u767B\u5F55\u9875"}],PX=[{value:"CAS (Central Authentication Service) \u662F\u4E00\u79CD\u5355\u70B9\u767B\u5F55\u534F\u8BAE\uFF0C\u5B83\u5141\u8BB8\u7528\u6237\u5728\u4E00\u4E2A\u5E94\u7528\u7A0B\u5E8F\u4E2D\u8FDB\u884C\u8EAB\u4EFD\u9A8C\u8BC1\uFF0C\u7136\u540E\u5728\u4E0D\u9700\u8981\u91CD\u65B0\u767B\u5F55\u7684\u60C5\u51B5\u4E0B\u8BBF\u95EE\u5176\u4ED6\u5E94\u7528\u7A0B\u5E8F\u3002",paraId:0,tocIndex:1},{value:"\u8BBF\u95EE\u7528\u6237\u8BA4\u8BC1\u7BA1\u7406\u9875\u9762",paraId:1,tocIndex:5},{value:"http://localhost:13000/admin/settings/auth/authenticators",paraId:2,tocIndex:5},{value:"\u6DFB\u52A0 CAS \u8BA4\u8BC1\u65B9\u5F0F",paraId:3,tocIndex:5},{value:"\u914D\u7F6E CAS \u5E76\u6FC0\u6D3B",paraId:4,tocIndex:5},{value:"http://localhost:13000/signin",paraId:5,tocIndex:6}],TX={},CX={title:"\u5730\u56FE",toc:"menu",filename:"docs/en-US/plugins/map/index.md",lastUpdated:1732240239e3,description:"\u6587\u6863\u5F85\u8865\u5145"},AX=[{id:"\u5730\u56FE",depth:1,title:"\u5730\u56FE"}],qX=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],EX={},DX={title:"Overview",toc:"menu",filename:"docs/en-US/api/client/index.md",lastUpdated:1732240239e3,description:"test"},OX=[{id:"overview",depth:1,title:"Overview"}],RX=[{value:"test",paraId:0,tocIndex:0}],MX={},LX={title:"Cache",toc:"menu",filename:"docs/en-US/api/cache/cache.md",lastUpdated:1732240239e3,description:"You can refer to the documentation of node-cache-manager."},NX=[{id:"cache",depth:1,title:"Cache"},{id:"basic-methods",depth:2,title:"Basic Methods"},{id:"other-methods",depth:2,title:"Other Methods"},{id:"wrapwithcondition",depth:3,title:"wrapWithCondition()"},{id:"setvalueinobject",depth:3,title:"setValueInObject()"},{id:"getvalueinobject",depth:3,title:"getValueInObject()"},{id:"delvalueinobject",depth:3,title:"delValueInObject()"}],zX=[{value:"You can refer to the documentation of ",paraId:0,tocIndex:1},{value:"node-cache-manager",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:"get()",paraId:1,tocIndex:1},{value:"set()",paraId:1,tocIndex:1},{value:"del()",paraId:1,tocIndex:1},{value:"reset()",paraId:1,tocIndex:1},{value:"wrap()",paraId:1,tocIndex:1},{value:"mset()",paraId:1,tocIndex:1},{value:"mget()",paraId:1,tocIndex:1},{value:"mdel()",paraId:1,tocIndex:1},{value:"keys()",paraId:1,tocIndex:1},{value:"ttl()",paraId:1,tocIndex:1},{value:"wrapWithCondition()",paraId:2},{value:"Similar to ",paraId:3,tocIndex:3},{value:"wrap()",paraId:3,tocIndex:3},{value:", but can decide whether to use caching based on conditions.",paraId:3,tocIndex:3},{value:`async wrapWithCondition( +`,paraId:7,tocIndex:2},{value:"Route management and plugin configuration pages",paraId:9,tocIndex:2},{value:"Styles and themes",paraId:9,tocIndex:2},{value:"Providers and contexts",paraId:9,tocIndex:2},{value:"UI Schema",paraId:9,tocIndex:2},{value:"Internationalization",paraId:9,tocIndex:2}],pX={},IX={title:"\u7EE7\u627F",toc:"menu",filename:"docs/en-US/manual/ui/inherit.md",lastUpdated:173254844e4,description:"\u5B50\u8868\u5728\u533A\u5757\u4E2D\u4F7F\u7528\u65F6\u9664\u4E86\u672C\u8868\u5B57\u6BB5\u8FD8\u6709\u6240\u6709\u7236\u8868\u7684\u5B57\u6BB5\u4F9B\u914D\u7F6E"},_X=[{id:"\u7EE7\u627F",depth:1,title:"\u7EE7\u627F"},{id:"\u914D\u7F6E\u5B57\u6BB5\u5305\u62EC\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5",depth:2,title:"\u914D\u7F6E\u5B57\u6BB5\u5305\u62EC\u7EE7\u627F\u7684\u7236\u8868\u5B57\u6BB5"},{id:"\u6DFB\u52A0\u64CD\u4F5C\u53EF\u4EE5\u542F\u7528\u5B50\u8868",depth:2,title:"\u6DFB\u52A0\u64CD\u4F5C\u53EF\u4EE5\u542F\u7528\u5B50\u8868"},{id:"\u7EE7\u627F\u8868\u6570\u636E\u7684\u67E5\u770B\u4E0E\u7F16\u8F91\u6309-__collection-\u663E\u793A",depth:2,title:"\u7EE7\u627F\u8868\u6570\u636E\u7684\u67E5\u770B\u4E0E\u7F16\u8F91\uFF08\u6309 __collection \u663E\u793A\uFF09"},{id:"\u5173\u7CFB\u6570\u636E\u7684\u5F39\u7A97\u6309-__collection-\u663E\u793A",depth:2,title:"\u5173\u7CFB\u6570\u636E\u7684\u5F39\u7A97\uFF08\u6309 __collection \u663E\u793A\uFF09"},{id:"\u7EE7\u627F\u4E0B\u7684\u7B5B\u9009\u8054\u52A8",depth:2,title:"\u7EE7\u627F\u4E0B\u7684\u7B5B\u9009\u8054\u52A8"}],vX=[{value:"\u5B50\u8868\u5728\u533A\u5757\u4E2D\u4F7F\u7528\u65F6\u9664\u4E86\u672C\u8868\u5B57\u6BB5\u8FD8\u6709\u6240\u6709\u7236\u8868\u7684\u5B57\u6BB5\u4F9B\u914D\u7F6E",paraId:0,tocIndex:1},{value:"\u7236\u8868\u914D\u7F6E TableOID(\u8BB0\u5F55\u662F\u7531\u54EA\u4E2A\u8868\u521B\u5EFA\u7684\u6570\u636E)",paraId:1,tocIndex:2},{value:"\u5B50\u8868\u7684\u6570\u636E\u6C47\u805A\u5728\u7236\u8868\u4E2D",paraId:2,tocIndex:2},{value:"\u5728\u7236\u8868\u4E2D\u4E3A\u5B50\u8868\u914D\u7F6E\u6DFB\u52A0\u64CD\u4F5C",paraId:3,tocIndex:2},{value:"\u53EF\u9009\u9879\u4E3A\u5F53\u524D\u8868\u7684\u6240\u6709\u5B50\u8868",paraId:4,tocIndex:2},{value:"UI \u914D\u7F6E\u72B6\u6001\u4E0B\u53EF\u4EE5\u4E3A\u5B50\u8868\u914D\u7F6E\u533A\u5757\uFF08\u8868\u5355/\u8BE6\u60C5\u533A\u5757\uFF09",paraId:5,tocIndex:3},{value:"\u975E UI \u914D\u7F6E\u72B6\u6001\u4E0B,\u6309 __collection \u53EA\u663E\u793A\u5BF9\u5E94\u6570\u636E\u8868\u8BB0\u5F55\u7684\u533A\u5757",paraId:6,tocIndex:3},{value:"\u5173\u7CFB\u6570\u636E\u7684\u8BE6\u60C5\u5728\u975E UI \u914D\u7F6E\u72B6\u6001\u4E0B\u6309 __collection \u4EC5\u663E\u793A\u5BF9\u5E94\u6570\u636E\u7684\u533A\u5757",paraId:7,tocIndex:4},{value:"B \u53EF\u4EE5\u8FDE\u63A5 A\uFF0CB \u7684\u5B50\u8868 B1 \u4E5F\u53EF\u4EE5\u8FDE\u63A5 A",paraId:8,tocIndex:5}],mX={},hX={title:"Linkage rules",toc:"menu",filename:"docs/en-US/manual/ui/linkage.md",lastUpdated:173254844e4},fX=[{id:"linkage-rules",depth:1,title:"Linkage rules"}],xX=[],gX={},bX={title:"\u6743\u9650\u63A7\u5236",toc:"menu",filename:"docs/en-US/plugins/acl/index.md",lastUpdated:173254844e4,description:"NocoBase \u7684 ACL \u6A21\u5757\u4E3B\u8981\u7531\u4E24\u90E8\u5206\u7EC4\u6210\uFF1A"},yX=[{id:"\u6743\u9650\u63A7\u5236",depth:1,title:"\u6743\u9650\u63A7\u5236"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"}],wX=[{value:"NocoBase \u7684 ACL \u6A21\u5757\u4E3B\u8981\u7531\u4E24\u90E8\u5206\u7EC4\u6210\uFF1A",paraId:0,tocIndex:1},{value:"\u5185\u6838\u4E2D\u7684 ",paraId:1,tocIndex:1},{value:"@nocobase/acl",paraId:1,tocIndex:1},{value:"\uFF0C\u63D0\u4F9B\u6838\u5FC3\u529F\u80FD",paraId:1,tocIndex:1},{value:"\u63D2\u4EF6\u4E2D\u7684 ",paraId:1,tocIndex:1},{value:"@nocobase/plugin-acl",paraId:1,tocIndex:1},{value:"\uFF0C\u63D0\u4F9B\u52A8\u6001\u914D\u7F6E\u80FD\u529B",paraId:1,tocIndex:1},{value:"\u5185\u7F6E\u63D2\u4EF6\uFF0C\u65E0\u9700\u5355\u72EC\u5B89\u88C5\u3002",paraId:2,tocIndex:2}],kX={},SX={title:"CAS \u8BA4\u8BC1",toc:"menu",filename:"docs/en-US/plugins/cas/index.md",lastUpdated:173254844e4,description:"CAS (Central Authentication Service) \u662F\u4E00\u79CD\u5355\u70B9\u767B\u5F55\u534F\u8BAE\uFF0C\u5B83\u5141\u8BB8\u7528\u6237\u5728\u4E00\u4E2A\u5E94\u7528\u7A0B\u5E8F\u4E2D\u8FDB\u884C\u8EAB\u4EFD\u9A8C\u8BC1\uFF0C\u7136\u540E\u5728\u4E0D\u9700\u8981\u91CD\u65B0\u767B\u5F55\u7684\u60C5\u51B5\u4E0B\u8BBF\u95EE\u5176\u4ED6\u5E94\u7528\u7A0B\u5E8F\u3002"},UX=[{id:"cas-\u8BA4\u8BC1",depth:1,title:"CAS \u8BA4\u8BC1"},{id:"\u4ECB\u7ECD",depth:2,title:"\u4ECB\u7ECD"},{id:"\u5B89\u88C5",depth:2,title:"\u5B89\u88C5"},{id:"\u4F7F\u7528\u624B\u518C",depth:2,title:"\u4F7F\u7528\u624B\u518C"},{id:"\u6FC0\u6D3B\u63D2\u4EF6",depth:3,title:"\u6FC0\u6D3B\u63D2\u4EF6"},{id:"\u6DFB\u52A0-cas-\u8BA4\u8BC1",depth:3,title:"\u6DFB\u52A0 CAS \u8BA4\u8BC1"},{id:"\u8BBF\u95EE\u767B\u5F55\u9875",depth:3,title:"\u8BBF\u95EE\u767B\u5F55\u9875"}],PX=[{value:"CAS (Central Authentication Service) \u662F\u4E00\u79CD\u5355\u70B9\u767B\u5F55\u534F\u8BAE\uFF0C\u5B83\u5141\u8BB8\u7528\u6237\u5728\u4E00\u4E2A\u5E94\u7528\u7A0B\u5E8F\u4E2D\u8FDB\u884C\u8EAB\u4EFD\u9A8C\u8BC1\uFF0C\u7136\u540E\u5728\u4E0D\u9700\u8981\u91CD\u65B0\u767B\u5F55\u7684\u60C5\u51B5\u4E0B\u8BBF\u95EE\u5176\u4ED6\u5E94\u7528\u7A0B\u5E8F\u3002",paraId:0,tocIndex:1},{value:"\u8BBF\u95EE\u7528\u6237\u8BA4\u8BC1\u7BA1\u7406\u9875\u9762",paraId:1,tocIndex:5},{value:"http://localhost:13000/admin/settings/auth/authenticators",paraId:2,tocIndex:5},{value:"\u6DFB\u52A0 CAS \u8BA4\u8BC1\u65B9\u5F0F",paraId:3,tocIndex:5},{value:"\u914D\u7F6E CAS \u5E76\u6FC0\u6D3B",paraId:4,tocIndex:5},{value:"http://localhost:13000/signin",paraId:5,tocIndex:6}],TX={},CX={title:"\u5730\u56FE",toc:"menu",filename:"docs/en-US/plugins/map/index.md",lastUpdated:173254844e4,description:"\u6587\u6863\u5F85\u8865\u5145"},AX=[{id:"\u5730\u56FE",depth:1,title:"\u5730\u56FE"}],qX=[{value:"\u6587\u6863\u5F85\u8865\u5145",paraId:0}],EX={},DX={title:"Overview",toc:"menu",filename:"docs/en-US/api/client/index.md",lastUpdated:173254844e4,description:"test"},OX=[{id:"overview",depth:1,title:"Overview"}],RX=[{value:"test",paraId:0,tocIndex:0}],MX={},LX={title:"Cache",toc:"menu",filename:"docs/en-US/api/cache/cache.md",lastUpdated:173254844e4,description:"You can refer to the documentation of node-cache-manager."},NX=[{id:"cache",depth:1,title:"Cache"},{id:"basic-methods",depth:2,title:"Basic Methods"},{id:"other-methods",depth:2,title:"Other Methods"},{id:"wrapwithcondition",depth:3,title:"wrapWithCondition()"},{id:"setvalueinobject",depth:3,title:"setValueInObject()"},{id:"getvalueinobject",depth:3,title:"getValueInObject()"},{id:"delvalueinobject",depth:3,title:"delValueInObject()"}],zX=[{value:"You can refer to the documentation of ",paraId:0,tocIndex:1},{value:"node-cache-manager",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:"get()",paraId:1,tocIndex:1},{value:"set()",paraId:1,tocIndex:1},{value:"del()",paraId:1,tocIndex:1},{value:"reset()",paraId:1,tocIndex:1},{value:"wrap()",paraId:1,tocIndex:1},{value:"mset()",paraId:1,tocIndex:1},{value:"mget()",paraId:1,tocIndex:1},{value:"mdel()",paraId:1,tocIndex:1},{value:"keys()",paraId:1,tocIndex:1},{value:"ttl()",paraId:1,tocIndex:1},{value:"wrapWithCondition()",paraId:2},{value:"Similar to ",paraId:3,tocIndex:3},{value:"wrap()",paraId:3,tocIndex:3},{value:", but can decide whether to use caching based on conditions.",paraId:3,tocIndex:3},{value:`async wrapWithCondition( key: string, fn: () => T | Promise, options?: { @@ -18972,7 +19025,7 @@ export default PluginDemoServer; `,paraId:4,tocIndex:3},{value:"setValueInObject()",paraId:2},{value:"When the cached content is an object, changes the value of a specific key.",paraId:5,tocIndex:4},{value:`async setValueInObject(key: string, objectKey: string, value: unknown) `,paraId:6,tocIndex:4},{value:"getValueInObject()",paraId:2},{value:"When the cached content is an object, retrieves the value of a specific key.",paraId:7,tocIndex:5},{value:`async getValueInObject(key: string, objectKey: string) `,paraId:8,tocIndex:5},{value:"delValueInObject()",paraId:2},{value:"When the cached content is an object, deletes a specific key.",paraId:9,tocIndex:6},{value:`async delValueInObject(key: string, objectKey: string) -`,paraId:10,tocIndex:6}],FX={},BX={title:"Storage",toc:"menu",filename:"docs/en-US/api/sdk/storage.md",lastUpdated:1732240239e3,description:"The Storage class is used for client-side information storage, defaulting to localStorage."},jX=[{id:"storage",depth:1,title:"Storage"},{id:"overview",depth:2,title:"Overview"},{id:"basic-usage",depth:3,title:"Basic Usage"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"setitem",depth:3,title:"setItem()"},{id:"signature",depth:4,title:"Signature"},{id:"getitem",depth:3,title:"getItem()"},{id:"signature-1",depth:4,title:"Signature"},{id:"removeitem",depth:3,title:"removeItem()"},{id:"signature-2",depth:4,title:"Signature"},{id:"clear",depth:3,title:"clear()"},{id:"signature-3",depth:4,title:"Signature"}],HX=[{value:"The ",paraId:0,tocIndex:1},{value:"Storage",paraId:0,tocIndex:1},{value:" class is used for client-side information storage, defaulting to ",paraId:0,tocIndex:1},{value:"localStorage",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:`export abstract class Storage { +`,paraId:10,tocIndex:6}],FX={},BX={title:"Storage",toc:"menu",filename:"docs/en-US/api/sdk/storage.md",lastUpdated:173254844e4,description:"The Storage class is used for client-side information storage, defaulting to localStorage."},jX=[{id:"storage",depth:1,title:"Storage"},{id:"overview",depth:2,title:"Overview"},{id:"basic-usage",depth:3,title:"Basic Usage"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"setitem",depth:3,title:"setItem()"},{id:"signature",depth:4,title:"Signature"},{id:"getitem",depth:3,title:"getItem()"},{id:"signature-1",depth:4,title:"Signature"},{id:"removeitem",depth:3,title:"removeItem()"},{id:"signature-2",depth:4,title:"Signature"},{id:"clear",depth:3,title:"clear()"},{id:"signature-3",depth:4,title:"Signature"}],HX=[{value:"The ",paraId:0,tocIndex:1},{value:"Storage",paraId:0,tocIndex:1},{value:" class is used for client-side information storage, defaulting to ",paraId:0,tocIndex:1},{value:"localStorage",paraId:0,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:`export abstract class Storage { abstract clear(): void; abstract getItem(key: string): string | null; abstract removeItem(key: string): void; @@ -18982,14 +19035,14 @@ export default PluginDemoServer; export class CustomStorage extends Storage { // ... } -`,paraId:1,tocIndex:2},{value:"setItem()",paraId:2},{value:"Store content.",paraId:3,tocIndex:4},{value:"setItem(key: string, value: string): void",paraId:4,tocIndex:5},{value:"getItem()",paraId:2},{value:"Retrieve content.",paraId:5,tocIndex:6},{value:"getItem(key: string): string | null",paraId:6,tocIndex:7},{value:"removeItem()",paraId:2},{value:"Delete content.",paraId:7,tocIndex:8},{value:"removeItem(key: string): void",paraId:8,tocIndex:9},{value:"clear()",paraId:2},{value:"Clear all content.",paraId:9,tocIndex:10},{value:"clear(): void",paraId:10,tocIndex:11}],WX={},$X={title:"Client",toc:"menu",filename:"docs/en-US/api/test/client.md",lastUpdated:1732240239e3,description:"NocoBase utilizes Vitest for client-side testing. @nocobase/test/client provides convenient methods for writing client-side test cases."},GX=[{id:"client",depth:1,title:"Client"},{id:"overview",depth:2,title:"Overview"},{id:"api",depth:2,title:"API"},{id:"defineconfig",depth:3,title:"defineConfig()"},{id:"sleep",depth:3,title:"sleep()"},{id:"signature",depth:4,title:"Signature"},{id:"details",depth:4,title:"Details"},{id:"testing-libraryreact",depth:3,title:"@testing-library/react"},{id:"testing-libraryuser-event",depth:3,title:"@testing-library/user-event"}],VX=[{value:"NocoBase utilizes ",paraId:0,tocIndex:1},{value:"Vitest",paraId:0,tocIndex:1},{value:" for client-side testing. ",paraId:0,tocIndex:1},{value:"@nocobase/test/client",paraId:0,tocIndex:1},{value:" provides convenient methods for writing client-side test cases.",paraId:0,tocIndex:1},{value:"defineConfig()",paraId:1},{value:"Retrieve the Vitest configuration.",paraId:2,tocIndex:3},{value:`import { defineConfig } from '@nocobase/test/vitest.mjs'; +`,paraId:1,tocIndex:2},{value:"setItem()",paraId:2},{value:"Store content.",paraId:3,tocIndex:4},{value:"setItem(key: string, value: string): void",paraId:4,tocIndex:5},{value:"getItem()",paraId:2},{value:"Retrieve content.",paraId:5,tocIndex:6},{value:"getItem(key: string): string | null",paraId:6,tocIndex:7},{value:"removeItem()",paraId:2},{value:"Delete content.",paraId:7,tocIndex:8},{value:"removeItem(key: string): void",paraId:8,tocIndex:9},{value:"clear()",paraId:2},{value:"Clear all content.",paraId:9,tocIndex:10},{value:"clear(): void",paraId:10,tocIndex:11}],WX={},$X={title:"Client",toc:"menu",filename:"docs/en-US/api/test/client.md",lastUpdated:173254844e4,description:"NocoBase utilizes Vitest for client-side testing. @nocobase/test/client provides convenient methods for writing client-side test cases."},GX=[{id:"client",depth:1,title:"Client"},{id:"overview",depth:2,title:"Overview"},{id:"api",depth:2,title:"API"},{id:"defineconfig",depth:3,title:"defineConfig()"},{id:"sleep",depth:3,title:"sleep()"},{id:"signature",depth:4,title:"Signature"},{id:"details",depth:4,title:"Details"},{id:"testing-libraryreact",depth:3,title:"@testing-library/react"},{id:"testing-libraryuser-event",depth:3,title:"@testing-library/user-event"}],VX=[{value:"NocoBase utilizes ",paraId:0,tocIndex:1},{value:"Vitest",paraId:0,tocIndex:1},{value:" for client-side testing. ",paraId:0,tocIndex:1},{value:"@nocobase/test/client",paraId:0,tocIndex:1},{value:" provides convenient methods for writing client-side test cases.",paraId:0,tocIndex:1},{value:"defineConfig()",paraId:1},{value:"Retrieve the Vitest configuration.",paraId:2,tocIndex:3},{value:`import { defineConfig } from '@nocobase/test/vitest.mjs'; const config = defineConfig(); `,paraId:3,tocIndex:3},{value:"sleep()",paraId:1},{value:"Delay execution for a specified period of time.",paraId:4,tocIndex:4},{value:`sleep(5000); `,paraId:5,tocIndex:4},{value:"sleep: (timeout?: number) => Promise",paraId:6,tocIndex:5},{value:"Parameter",paraId:7,tocIndex:6},{value:"Type",paraId:7,tocIndex:6},{value:"Description",paraId:7,tocIndex:6},{value:"timeout",paraId:7,tocIndex:6},{value:"number",paraId:7,tocIndex:6},{value:"Delay time (in ms)",paraId:7,tocIndex:6},{value:"Used for testing React components. Refer to ",paraId:8,tocIndex:7},{value:"React Testing Library",paraId:8,tocIndex:7},{value:".",paraId:8,tocIndex:7},{value:"Used for simulating user interactions. Refer to ",paraId:9,tocIndex:8},{value:"User Interactions",paraId:9,tocIndex:8},{value:".",paraId:9,tocIndex:8},{value:`import { userEvent } from '@nocobase/test/client'; await userEvent.click(); -`,paraId:10,tocIndex:8}],KX={},ZX={title:"Server",toc:"menu",filename:"docs/en-US/api/test/server.md",lastUpdated:1732240239e3,description:"NocoBase conducts server-side testing based on Vitest. @nocobase/test provides convenient methods for server-side testing to mock services and databases."},YX=[{id:"server",depth:1,title:"Server"},{id:"overview",depth:2,title:"Overview"},{id:"basic-usage",depth:3,title:"Basic Usage"},{id:"api",depth:2,title:"API"},{id:"defineconfig",depth:3,title:"defineConfig()"},{id:"mockdatabase",depth:3,title:"mockDatabase()"},{id:"signature",depth:4,title:"Signature"},{id:"details",depth:4,title:"Details"},{id:"mockserver",depth:3,title:"mockServer()"},{id:"signature-1",depth:4,title:"Signature"},{id:"details-1",depth:4,title:"Details"},{id:"createmockserver",depth:3,title:"createMockServer()"},{id:"signature-2",depth:4,title:"Signature"},{id:"details-2",depth:4,title:"Details"},{id:"mockserver-1",depth:3,title:"MockServer"},{id:"class-methods",depth:4,title:"Class Methods"},{id:"loadandinstall",depth:5,title:"loadAndInstall()"},{id:"cleandb",depth:5,title:"cleanDb()"},{id:"quickstart",depth:5,title:"quickstart()"},{id:"destroy",depth:5,title:"destroy()"},{id:"agent",depth:5,title:"agent()"},{id:"sleep",depth:3,title:"sleep"}],QX=[{value:"NocoBase conducts server-side testing based on ",paraId:0,tocIndex:1},{value:"Vitest",paraId:0,tocIndex:1},{value:". ",paraId:0,tocIndex:1},{value:"@nocobase/test",paraId:0,tocIndex:1},{value:" provides convenient methods for server-side testing to mock services and databases.",paraId:0,tocIndex:1},{value:`describe('actions', () => { +`,paraId:10,tocIndex:8}],KX={},ZX={title:"Server",toc:"menu",filename:"docs/en-US/api/test/server.md",lastUpdated:173254844e4,description:"NocoBase conducts server-side testing based on Vitest. @nocobase/test provides convenient methods for server-side testing to mock services and databases."},YX=[{id:"server",depth:1,title:"Server"},{id:"overview",depth:2,title:"Overview"},{id:"basic-usage",depth:3,title:"Basic Usage"},{id:"api",depth:2,title:"API"},{id:"defineconfig",depth:3,title:"defineConfig()"},{id:"mockdatabase",depth:3,title:"mockDatabase()"},{id:"signature",depth:4,title:"Signature"},{id:"details",depth:4,title:"Details"},{id:"mockserver",depth:3,title:"mockServer()"},{id:"signature-1",depth:4,title:"Signature"},{id:"details-1",depth:4,title:"Details"},{id:"createmockserver",depth:3,title:"createMockServer()"},{id:"signature-2",depth:4,title:"Signature"},{id:"details-2",depth:4,title:"Details"},{id:"mockserver-1",depth:3,title:"MockServer"},{id:"class-methods",depth:4,title:"Class Methods"},{id:"loadandinstall",depth:5,title:"loadAndInstall()"},{id:"cleandb",depth:5,title:"cleanDb()"},{id:"quickstart",depth:5,title:"quickstart()"},{id:"destroy",depth:5,title:"destroy()"},{id:"agent",depth:5,title:"agent()"},{id:"sleep",depth:3,title:"sleep"}],QX=[{value:"NocoBase conducts server-side testing based on ",paraId:0,tocIndex:1},{value:"Vitest",paraId:0,tocIndex:1},{value:". ",paraId:0,tocIndex:1},{value:"@nocobase/test",paraId:0,tocIndex:1},{value:" provides convenient methods for server-side testing to mock services and databases.",paraId:0,tocIndex:1},{value:`describe('actions', () => { let app: MockServer; let db: Database; let agent: any; @@ -19020,7 +19073,7 @@ const config = defineConfig(); loginUsingId: (userId: number) => ExtendedAgent; resource: (name: string, resourceOf?: any) => Resource; } -`,paraId:26,tocIndex:20},{value:"Details",paraId:27,tocIndex:20},{value:"SuperAgentTest",paraId:28,tocIndex:20},{value:"Refer to ",paraId:29,tocIndex:20},{value:"superagent",paraId:29,tocIndex:20},{value:".",paraId:29,tocIndex:20},{value:"login()",paraId:30,tocIndex:20},{value:"Log in with a user model.",paraId:31,tocIndex:20},{value:"loginUsingId()",paraId:32,tocIndex:20},{value:"Log in with a user ID.",paraId:33,tocIndex:20},{value:"resource()",paraId:34,tocIndex:20},{value:"Retrieve a resource.",paraId:35,tocIndex:20},{value:"Parameter",paraId:36,tocIndex:20},{value:"Type",paraId:36,tocIndex:20},{value:"Description",paraId:36,tocIndex:20},{value:"name",paraId:36,tocIndex:20},{value:"string",paraId:36,tocIndex:20},{value:"1. Resource name, e.g., ",paraId:36,tocIndex:20},{value:"a",paraId:36,tocIndex:20},{value:" ",paraId:36,tocIndex:20},{value:" 2. Associated object name of the resource, e.g., ",paraId:36,tocIndex:20},{value:"a.b",paraId:36,tocIndex:20},{value:"resourceOf",paraId:36,tocIndex:20},{value:"any",paraId:36,tocIndex:20},{value:"Primary key value of the resource when ",paraId:36,tocIndex:20},{value:"resource",paraId:36,tocIndex:20},{value:" is the associated object name of the resource. For example, when ",paraId:36,tocIndex:20},{value:"a.b",paraId:36,tocIndex:20},{value:" is specified, it represents the primary key value of ",paraId:36,tocIndex:20},{value:"a",paraId:36,tocIndex:20},{value:".",paraId:36,tocIndex:20}],JX={},XX={title:"UI Editor",toc:"menu",filename:"docs/en-US/manual/ui/index.md",lastUpdated:1732240239e3,description:"NocoBase utilizes a WYSIWYG interface configuration mode. You can switch between configuration mode and usage mode by clicking the UI Editor button."},eee=[{id:"ui-editor",depth:1,title:"UI Editor"},{id:"what-you-see-is-what-you-get",depth:2,title:"What you see is what you get"},{id:"layout-templates",depth:2,title:"Layout Templates"},{id:"configuration-items",depth:2,title:"Configuration items"}],aee=[{value:"NocoBase utilizes a WYSIWYG interface configuration mode. You can switch between configuration mode and usage mode by clicking the UI Editor button.",paraId:0,tocIndex:1},{value:"Usage Mode:",paraId:1,tocIndex:1},{value:"Configuration mode:",paraId:2,tocIndex:1},{value:"NocoBase has a built-in layout template, with the navigation area on the top and left, and the content area on the right.",paraId:3,tocIndex:2},{value:"Once you enter the UI Editor mode, orange configurable items will appear on the interface. Typically, the configuration item entry for each configurable element is located in the upper right corner of the element. Almost all elements can be configured and viewed in effect in real time on the interface, here are a few examples:",paraId:4,tocIndex:3},{value:"Configurable items for menu items:",paraId:5,tocIndex:3},{value:"Configuration item for pages:",paraId:6,tocIndex:3},{value:"Configuration items for blocks:",paraId:7,tocIndex:3},{value:"Configuration item for actions:",paraId:8,tocIndex:3},{value:"Configuration items for table columns:",paraId:9,tocIndex:3}],tee={},nee={title:"Overview",toc:"menu",filename:"docs/en-US/api/http/index.md",lastUpdated:1732240239e3,description:"HTTP API of NocoBase is designed based on Resource & Action, a superset of REST API. The operation includes but not limited to create, read, update and delete. Resource Action can be extended arbitrarily in NocoBase."},oee=[{id:"overview",depth:1,title:"Overview"},{id:"resource",depth:2,title:"Resource"},{id:"example",depth:3,title:"Example"},{id:"action",depth:2,title:"Action"},{id:"example-1",depth:3,title:"Example"},{id:"request-url",depth:2,title:"Request URL"},{id:"example-2",depth:3,title:"Example"},{id:"locate-resource",depth:2,title:"Locate Resource"},{id:"request-parameters",depth:2,title:"Request Parameters"},{id:"filter",depth:3,title:"filter"},{id:"filterbytk",depth:3,title:"filterByTk"},{id:"sort",depth:3,title:"sort"},{id:"fields",depth:3,title:"fields"},{id:"appends",depth:3,title:"appends"},{id:"except",depth:3,title:"except"},{id:"whitelist",depth:3,title:"whitelist"},{id:"blacklist",depth:3,title:"blacklist"},{id:"request-response",depth:2,title:"Request Response"},{id:"example-3",depth:3,title:"Example"}],ree=[{value:"HTTP API of NocoBase is designed based on Resource & Action, a superset of REST API. The operation includes but not limited to create, read, update and delete. Resource Action can be extended arbitrarily in NocoBase.",paraId:0,tocIndex:0},{value:"In NocoBase, resource has two expressions:",paraId:1,tocIndex:1},{value:"",paraId:2,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"Collection is the set of all abstract data",paraId:3},{value:"Association is the associated data of collection",paraId:3},{value:"Resource includes both collection and collection.association",paraId:3},{value:"posts",paraId:4,tocIndex:2},{value:" Post",paraId:4,tocIndex:2},{value:"posts.user",paraId:4,tocIndex:2},{value:" Post user",paraId:4,tocIndex:2},{value:"posts.tags",paraId:4,tocIndex:2},{value:" Post tags",paraId:4,tocIndex:2},{value:"Action on resource is expressed by ",paraId:5,tocIndex:3},{value:":",paraId:5,tocIndex:3},{value:":",paraId:6,tocIndex:3},{value:".:",paraId:6,tocIndex:3},{value:"Built-in global actions for collection or association:",paraId:7,tocIndex:3},{value:"create",paraId:8,tocIndex:3},{value:"get",paraId:8,tocIndex:3},{value:"list",paraId:8,tocIndex:3},{value:"update",paraId:8,tocIndex:3},{value:"destroy",paraId:8,tocIndex:3},{value:"move",paraId:8,tocIndex:3},{value:"Built-in association actions for association only:",paraId:9,tocIndex:3},{value:"set",paraId:10,tocIndex:3},{value:"add",paraId:10,tocIndex:3},{value:"remove",paraId:10,tocIndex:3},{value:"toggle",paraId:10,tocIndex:3},{value:"posts:create",paraId:11,tocIndex:4},{value:" Create post",paraId:11,tocIndex:4},{value:"posts.user:get",paraId:11,tocIndex:4},{value:" Get post user",paraId:11,tocIndex:4},{value:"posts.tags:add",paraId:11,tocIndex:4},{value:" Add tags to post (associate existing tags with post)",paraId:11,tocIndex:4},{value:` /api/: +`,paraId:26,tocIndex:20},{value:"Details",paraId:27,tocIndex:20},{value:"SuperAgentTest",paraId:28,tocIndex:20},{value:"Refer to ",paraId:29,tocIndex:20},{value:"superagent",paraId:29,tocIndex:20},{value:".",paraId:29,tocIndex:20},{value:"login()",paraId:30,tocIndex:20},{value:"Log in with a user model.",paraId:31,tocIndex:20},{value:"loginUsingId()",paraId:32,tocIndex:20},{value:"Log in with a user ID.",paraId:33,tocIndex:20},{value:"resource()",paraId:34,tocIndex:20},{value:"Retrieve a resource.",paraId:35,tocIndex:20},{value:"Parameter",paraId:36,tocIndex:20},{value:"Type",paraId:36,tocIndex:20},{value:"Description",paraId:36,tocIndex:20},{value:"name",paraId:36,tocIndex:20},{value:"string",paraId:36,tocIndex:20},{value:"1. Resource name, e.g., ",paraId:36,tocIndex:20},{value:"a",paraId:36,tocIndex:20},{value:" ",paraId:36,tocIndex:20},{value:" 2. Associated object name of the resource, e.g., ",paraId:36,tocIndex:20},{value:"a.b",paraId:36,tocIndex:20},{value:"resourceOf",paraId:36,tocIndex:20},{value:"any",paraId:36,tocIndex:20},{value:"Primary key value of the resource when ",paraId:36,tocIndex:20},{value:"resource",paraId:36,tocIndex:20},{value:" is the associated object name of the resource. For example, when ",paraId:36,tocIndex:20},{value:"a.b",paraId:36,tocIndex:20},{value:" is specified, it represents the primary key value of ",paraId:36,tocIndex:20},{value:"a",paraId:36,tocIndex:20},{value:".",paraId:36,tocIndex:20}],JX={},XX={title:"UI Editor",toc:"menu",filename:"docs/en-US/manual/ui/index.md",lastUpdated:173254844e4,description:"NocoBase utilizes a WYSIWYG interface configuration mode. You can switch between configuration mode and usage mode by clicking the UI Editor button."},eee=[{id:"ui-editor",depth:1,title:"UI Editor"},{id:"what-you-see-is-what-you-get",depth:2,title:"What you see is what you get"},{id:"layout-templates",depth:2,title:"Layout Templates"},{id:"configuration-items",depth:2,title:"Configuration items"}],aee=[{value:"NocoBase utilizes a WYSIWYG interface configuration mode. You can switch between configuration mode and usage mode by clicking the UI Editor button.",paraId:0,tocIndex:1},{value:"Usage Mode:",paraId:1,tocIndex:1},{value:"Configuration mode:",paraId:2,tocIndex:1},{value:"NocoBase has a built-in layout template, with the navigation area on the top and left, and the content area on the right.",paraId:3,tocIndex:2},{value:"Once you enter the UI Editor mode, orange configurable items will appear on the interface. Typically, the configuration item entry for each configurable element is located in the upper right corner of the element. Almost all elements can be configured and viewed in effect in real time on the interface, here are a few examples:",paraId:4,tocIndex:3},{value:"Configurable items for menu items:",paraId:5,tocIndex:3},{value:"Configuration item for pages:",paraId:6,tocIndex:3},{value:"Configuration items for blocks:",paraId:7,tocIndex:3},{value:"Configuration item for actions:",paraId:8,tocIndex:3},{value:"Configuration items for table columns:",paraId:9,tocIndex:3}],tee={},nee={title:"Overview",toc:"menu",filename:"docs/en-US/api/http/index.md",lastUpdated:173254844e4,description:"HTTP API of NocoBase is designed based on Resource & Action, a superset of REST API. The operation includes but not limited to create, read, update and delete. Resource Action can be extended arbitrarily in NocoBase."},oee=[{id:"overview",depth:1,title:"Overview"},{id:"resource",depth:2,title:"Resource"},{id:"example",depth:3,title:"Example"},{id:"action",depth:2,title:"Action"},{id:"example-1",depth:3,title:"Example"},{id:"request-url",depth:2,title:"Request URL"},{id:"example-2",depth:3,title:"Example"},{id:"locate-resource",depth:2,title:"Locate Resource"},{id:"request-parameters",depth:2,title:"Request Parameters"},{id:"filter",depth:3,title:"filter"},{id:"filterbytk",depth:3,title:"filterByTk"},{id:"sort",depth:3,title:"sort"},{id:"fields",depth:3,title:"fields"},{id:"appends",depth:3,title:"appends"},{id:"except",depth:3,title:"except"},{id:"whitelist",depth:3,title:"whitelist"},{id:"blacklist",depth:3,title:"blacklist"},{id:"request-response",depth:2,title:"Request Response"},{id:"example-3",depth:3,title:"Example"}],ree=[{value:"HTTP API of NocoBase is designed based on Resource & Action, a superset of REST API. The operation includes but not limited to create, read, update and delete. Resource Action can be extended arbitrarily in NocoBase.",paraId:0,tocIndex:0},{value:"In NocoBase, resource has two expressions:",paraId:1,tocIndex:1},{value:"",paraId:2,tocIndex:1},{value:".",paraId:2,tocIndex:1},{value:"Collection is the set of all abstract data",paraId:3},{value:"Association is the associated data of collection",paraId:3},{value:"Resource includes both collection and collection.association",paraId:3},{value:"posts",paraId:4,tocIndex:2},{value:" Post",paraId:4,tocIndex:2},{value:"posts.user",paraId:4,tocIndex:2},{value:" Post user",paraId:4,tocIndex:2},{value:"posts.tags",paraId:4,tocIndex:2},{value:" Post tags",paraId:4,tocIndex:2},{value:"Action on resource is expressed by ",paraId:5,tocIndex:3},{value:":",paraId:5,tocIndex:3},{value:":",paraId:6,tocIndex:3},{value:".:",paraId:6,tocIndex:3},{value:"Built-in global actions for collection or association:",paraId:7,tocIndex:3},{value:"create",paraId:8,tocIndex:3},{value:"get",paraId:8,tocIndex:3},{value:"list",paraId:8,tocIndex:3},{value:"update",paraId:8,tocIndex:3},{value:"destroy",paraId:8,tocIndex:3},{value:"move",paraId:8,tocIndex:3},{value:"Built-in association actions for association only:",paraId:9,tocIndex:3},{value:"set",paraId:10,tocIndex:3},{value:"add",paraId:10,tocIndex:3},{value:"remove",paraId:10,tocIndex:3},{value:"toggle",paraId:10,tocIndex:3},{value:"posts:create",paraId:11,tocIndex:4},{value:" Create post",paraId:11,tocIndex:4},{value:"posts.user:get",paraId:11,tocIndex:4},{value:" Get post user",paraId:11,tocIndex:4},{value:"posts.tags:add",paraId:11,tocIndex:4},{value:" Add tags to post (associate existing tags with post)",paraId:11,tocIndex:4},{value:` /api/: /api/:/ /api///: /api///:/ @@ -19138,7 +19191,7 @@ Response 400 (application/json) }, ], } -`,paraId:50,tocIndex:18}],dee={},iee={title:"Handbook Guide",toc:"menu",filename:"docs/en-US/handbook/index.md",lastUpdated:1732240239e3},lee=[{id:"handbook-guide",depth:1,title:"Handbook Guide"}],cee=[{value:'If you are first exposed to NocoBase, it is recommended that you start with "',paraId:0,tocIndex:0},{value:"Data Modeling - Overview",paraId:1,tocIndex:0},{value:'". In this chapter, you can understand the features of NocoBase data modeling;',paraId:0,tocIndex:0},{value:'Going further, you can add "',paraId:0,tocIndex:0},{value:"Pages",paraId:2,tocIndex:0},{value:'" and "',paraId:0,tocIndex:0},{value:"Blocks",paraId:3,tocIndex:0},{value:'" in the interface. You can choose suitable blocks to display the data in the data source;',paraId:0,tocIndex:0},{value:'Next, "',paraId:0,tocIndex:0},{value:"Configure Fields",paraId:4,tocIndex:0},{value:'" and "',paraId:0,tocIndex:0},{value:"Configure Actions",paraId:5,tocIndex:0},{value:'" for the data blocks. By this step, simple data processing procedures can be done;',paraId:0,tocIndex:0},{value:'If you want to orchestrate actions, you can check the "',paraId:0,tocIndex:0},{value:"Workflow",paraId:6,tocIndex:0},{value:'" chapter. The workflow provides various triggers and action nodes, which can satisfy your unlimited imagination for orchestrating operations;',paraId:0,tocIndex:0},{value:'Permissions need to be configured for actions. You can check "',paraId:0,tocIndex:0},{value:"Users and Permissions",paraId:7,tocIndex:0},{value:'". In addition to understanding how to configure action permissions, this chapter can also further understand the concept of "',paraId:0,tocIndex:0},{value:"Departments",paraId:8,tocIndex:0},{value:'", which includes the management of users, roles, and departments.',paraId:0,tocIndex:0},{value:'If you already have a ready-made IdP (Identity Provider), refer to the "',paraId:0,tocIndex:0},{value:"User Authentication",paraId:9,tocIndex:0},{value:'" chapter, which can help you understand how to access third-party user service providers;',paraId:0,tocIndex:0},{value:'You can enable multiple languages in "',paraId:0,tocIndex:0},{value:"System Settings",paraId:10,tocIndex:0},{value:'". If the translation of the language you use is incomplete, you can use "',paraId:0,tocIndex:0},{value:"Localization Management",paraId:11,tocIndex:0},{value:'" to translate, and you are also welcome to contribute translations to NocoBase;',paraId:0,tocIndex:0},{value:'"',paraId:0,tocIndex:0},{value:"Logs and Monitoring",paraId:12,tocIndex:0},{value:'" is an important tool for managing and maintaining NocoBase. It can help developers discover and solve problems in time, optimize system performance, ensure system security and stability, and improve system reliability and availability;',paraId:0,tocIndex:0},{value:'You can view all added plugins in the "',paraId:0,tocIndex:0},{value:"Plugin Manager",paraId:13,tocIndex:0},{value:'". Plugins need to be activated before they can be used. If the existing plugins cannot meet your needs, you can also "',paraId:0,tocIndex:0},{value:"Develop Plugins",paraId:14,tocIndex:0},{value:'" by yourself and then add them through the plugin manager.',paraId:0,tocIndex:0}],see={},uee={title:"Auth",toc:"menu",filename:"docs/en-US/api/auth/auth.md",lastUpdated:1732240239e3,description:"Auth is an abstract class for user authentication types, defining the interfaces required to complete user authentication. To extend new user authentication types, you need to inherit from the Auth class and implement its methods. The basic implementation can be referred to as BaseAuth."},pee=[{id:"auth",depth:1,title:"Auth"},{id:"overview",depth:2,title:"Overview"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"user",depth:3,title:"user"},{id:"signature",depth:4,title:"Signature"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature-1",depth:4,title:"Signature"},{id:"types",depth:4,title:"Types"},{id:"details",depth:4,title:"Details"},{id:"authconfig",depth:5,title:"AuthConfig"},{id:"check",depth:3,title:"check()"},{id:"signature-2",depth:4,title:"Signature"},{id:"signin",depth:3,title:"signIn()"},{id:"signature-3",depth:4,title:"Signature"},{id:"signup",depth:3,title:"signUp()"},{id:"signature-4",depth:4,title:"Signature"},{id:"signout",depth:3,title:"signOut()"},{id:"signature-5",depth:4,title:"Signature"}],Iee=[{value:"Auth",paraId:0,tocIndex:1},{value:" is an abstract class for user authentication types, defining the interfaces required to complete user authentication. To extend new user authentication types, you need to inherit from the ",paraId:0,tocIndex:1},{value:"Auth",paraId:0,tocIndex:1},{value:" class and implement its methods. The basic implementation can be referred to as ",paraId:0,tocIndex:1},{value:"BaseAuth",paraId:1,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:`interface IAuth { +`,paraId:50,tocIndex:18}],dee={},iee={title:"Handbook Guide",toc:"menu",filename:"docs/en-US/handbook/index.md",lastUpdated:173254844e4},lee=[{id:"handbook-guide",depth:1,title:"Handbook Guide"}],cee=[{value:'If you are first exposed to NocoBase, it is recommended that you start with "',paraId:0,tocIndex:0},{value:"Data Modeling - Overview",paraId:1,tocIndex:0},{value:'". In this chapter, you can understand the features of NocoBase data modeling;',paraId:0,tocIndex:0},{value:'Going further, you can add "',paraId:0,tocIndex:0},{value:"Pages",paraId:2,tocIndex:0},{value:'" and "',paraId:0,tocIndex:0},{value:"Blocks",paraId:3,tocIndex:0},{value:'" in the interface. You can choose suitable blocks to display the data in the data source;',paraId:0,tocIndex:0},{value:'Next, "',paraId:0,tocIndex:0},{value:"Configure Fields",paraId:4,tocIndex:0},{value:'" and "',paraId:0,tocIndex:0},{value:"Configure Actions",paraId:5,tocIndex:0},{value:'" for the data blocks. By this step, simple data processing procedures can be done;',paraId:0,tocIndex:0},{value:'If you want to orchestrate actions, you can check the "',paraId:0,tocIndex:0},{value:"Workflow",paraId:6,tocIndex:0},{value:'" chapter. The workflow provides various triggers and action nodes, which can satisfy your unlimited imagination for orchestrating operations;',paraId:0,tocIndex:0},{value:'Permissions need to be configured for actions. You can check "',paraId:0,tocIndex:0},{value:"Users and Permissions",paraId:7,tocIndex:0},{value:'". In addition to understanding how to configure action permissions, this chapter can also further understand the concept of "',paraId:0,tocIndex:0},{value:"Departments",paraId:8,tocIndex:0},{value:'", which includes the management of users, roles, and departments.',paraId:0,tocIndex:0},{value:'If you already have a ready-made IdP (Identity Provider), refer to the "',paraId:0,tocIndex:0},{value:"User Authentication",paraId:9,tocIndex:0},{value:'" chapter, which can help you understand how to access third-party user service providers;',paraId:0,tocIndex:0},{value:'You can enable multiple languages in "',paraId:0,tocIndex:0},{value:"System Settings",paraId:10,tocIndex:0},{value:'". If the translation of the language you use is incomplete, you can use "',paraId:0,tocIndex:0},{value:"Localization Management",paraId:11,tocIndex:0},{value:'" to translate, and you are also welcome to contribute translations to NocoBase;',paraId:0,tocIndex:0},{value:'"',paraId:0,tocIndex:0},{value:"Logs and Monitoring",paraId:12,tocIndex:0},{value:'" is an important tool for managing and maintaining NocoBase. It can help developers discover and solve problems in time, optimize system performance, ensure system security and stability, and improve system reliability and availability;',paraId:0,tocIndex:0},{value:'You can view all added plugins in the "',paraId:0,tocIndex:0},{value:"Plugin Manager",paraId:13,tocIndex:0},{value:'". Plugins need to be activated before they can be used. If the existing plugins cannot meet your needs, you can also "',paraId:0,tocIndex:0},{value:"Develop Plugins",paraId:14,tocIndex:0},{value:'" by yourself and then add them through the plugin manager.',paraId:0,tocIndex:0}],see={},uee={title:"Auth",toc:"menu",filename:"docs/en-US/api/auth/auth.md",lastUpdated:173254844e4,description:"Auth is an abstract class for user authentication types, defining the interfaces required to complete user authentication. To extend new user authentication types, you need to inherit from the Auth class and implement its methods. The basic implementation can be referred to as BaseAuth."},pee=[{id:"auth",depth:1,title:"Auth"},{id:"overview",depth:2,title:"Overview"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"user",depth:3,title:"user"},{id:"signature",depth:4,title:"Signature"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature-1",depth:4,title:"Signature"},{id:"types",depth:4,title:"Types"},{id:"details",depth:4,title:"Details"},{id:"authconfig",depth:5,title:"AuthConfig"},{id:"check",depth:3,title:"check()"},{id:"signature-2",depth:4,title:"Signature"},{id:"signin",depth:3,title:"signIn()"},{id:"signature-3",depth:4,title:"Signature"},{id:"signup",depth:3,title:"signUp()"},{id:"signature-4",depth:4,title:"Signature"},{id:"signout",depth:3,title:"signOut()"},{id:"signature-5",depth:4,title:"Signature"}],Iee=[{value:"Auth",paraId:0,tocIndex:1},{value:" is an abstract class for user authentication types, defining the interfaces required to complete user authentication. To extend new user authentication types, you need to inherit from the ",paraId:0,tocIndex:1},{value:"Auth",paraId:0,tocIndex:1},{value:" class and implement its methods. The basic implementation can be referred to as ",paraId:0,tocIndex:1},{value:"BaseAuth",paraId:1,tocIndex:1},{value:".",paraId:0,tocIndex:1},{value:`interface IAuth { user: Model; // Check the authentication status and return the current user. check(): Promise; @@ -19166,7 +19219,7 @@ class CustomAuth extends Auth { }; ctx: Context; }; -`,paraId:8,tocIndex:8},{value:"Attribute",paraId:9,tocIndex:10},{value:"Type",paraId:9,tocIndex:10},{value:"Description",paraId:9,tocIndex:10},{value:"authenticator",paraId:9,tocIndex:10},{value:"Authenticator",paraId:10,tocIndex:10},{value:"Authenticator data model, the actual type in NocoBase applications is ",paraId:9,tocIndex:10},{value:"AuthModel",paraId:11,tocIndex:10},{value:"options",paraId:9,tocIndex:10},{value:"Record",paraId:9,tocIndex:10},{value:"Authenticator-related configurations",paraId:9,tocIndex:10},{value:"ctx",paraId:9,tocIndex:10},{value:"Context",paraId:9,tocIndex:10},{value:"Request context",paraId:9,tocIndex:10},{value:"check()",paraId:3},{value:"User authentication, returns user information. This is an abstract method that all authentication types must implement.",paraId:12,tocIndex:11},{value:"abstract check(): Promise",paraId:13,tocIndex:12},{value:"signIn()",paraId:3},{value:"User login.",paraId:14,tocIndex:13},{value:"signIn(): Promise",paraId:15,tocIndex:14},{value:"signUp()",paraId:3},{value:"User registration.",paraId:16,tocIndex:15},{value:"signUp(): Promise",paraId:17,tocIndex:16},{value:"signOut()",paraId:3},{value:"User logout.",paraId:18,tocIndex:17},{value:"signOut(): Promise",paraId:19,tocIndex:18}],_ee={},vee={title:"APIClient",toc:"menu",filename:"docs/en-US/api/sdk/index.md",lastUpdated:1732240239e3,description:"APIClient is a wrapper based on axios, used for making HTTP requests to perform resource operations in NocoBase from the client-side."},mee=[{id:"apiclient",depth:1,title:"APIClient"},{id:"overview",depth:2,title:"Overview"},{id:"basic-usage",depth:3,title:"Basic Usage"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"axios",depth:3,title:"axios"},{id:"auth",depth:3,title:"auth"},{id:"storage",depth:3,title:"storage"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"request",depth:3,title:"request()"},{id:"signature-1",depth:4,title:"Signature"},{id:"type-1",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"axiosrequestconfig",depth:5,title:"AxiosRequestConfig"},{id:"resourceactionoptions",depth:5,title:"ResourceActionOptions"},{id:"resource",depth:3,title:"resource()"},{id:"signature-2",depth:4,title:"Signature"},{id:"type-2",depth:4,title:"Type"},{id:"details-1",depth:4,title:"Details"}],hee=[{value:"APIClient",paraId:0,tocIndex:1},{value:" is a wrapper based on ",paraId:0,tocIndex:1},{value:"axios",paraId:0,tocIndex:1},{value:", used for making HTTP requests to perform resource operations in NocoBase from the client-side.",paraId:0,tocIndex:1},{value:`class PluginSampleAPIClient extends Plugin { +`,paraId:8,tocIndex:8},{value:"Attribute",paraId:9,tocIndex:10},{value:"Type",paraId:9,tocIndex:10},{value:"Description",paraId:9,tocIndex:10},{value:"authenticator",paraId:9,tocIndex:10},{value:"Authenticator",paraId:10,tocIndex:10},{value:"Authenticator data model, the actual type in NocoBase applications is ",paraId:9,tocIndex:10},{value:"AuthModel",paraId:11,tocIndex:10},{value:"options",paraId:9,tocIndex:10},{value:"Record",paraId:9,tocIndex:10},{value:"Authenticator-related configurations",paraId:9,tocIndex:10},{value:"ctx",paraId:9,tocIndex:10},{value:"Context",paraId:9,tocIndex:10},{value:"Request context",paraId:9,tocIndex:10},{value:"check()",paraId:3},{value:"User authentication, returns user information. This is an abstract method that all authentication types must implement.",paraId:12,tocIndex:11},{value:"abstract check(): Promise",paraId:13,tocIndex:12},{value:"signIn()",paraId:3},{value:"User login.",paraId:14,tocIndex:13},{value:"signIn(): Promise",paraId:15,tocIndex:14},{value:"signUp()",paraId:3},{value:"User registration.",paraId:16,tocIndex:15},{value:"signUp(): Promise",paraId:17,tocIndex:16},{value:"signOut()",paraId:3},{value:"User logout.",paraId:18,tocIndex:17},{value:"signOut(): Promise",paraId:19,tocIndex:18}],_ee={},vee={title:"APIClient",toc:"menu",filename:"docs/en-US/api/sdk/index.md",lastUpdated:173254844e4,description:"APIClient is a wrapper based on axios, used for making HTTP requests to perform resource operations in NocoBase from the client-side."},mee=[{id:"apiclient",depth:1,title:"APIClient"},{id:"overview",depth:2,title:"Overview"},{id:"basic-usage",depth:3,title:"Basic Usage"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"axios",depth:3,title:"axios"},{id:"auth",depth:3,title:"auth"},{id:"storage",depth:3,title:"storage"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"constructor",depth:3,title:"constructor()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"request",depth:3,title:"request()"},{id:"signature-1",depth:4,title:"Signature"},{id:"type-1",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"axiosrequestconfig",depth:5,title:"AxiosRequestConfig"},{id:"resourceactionoptions",depth:5,title:"ResourceActionOptions"},{id:"resource",depth:3,title:"resource()"},{id:"signature-2",depth:4,title:"Signature"},{id:"type-2",depth:4,title:"Type"},{id:"details-1",depth:4,title:"Details"}],hee=[{value:"APIClient",paraId:0,tocIndex:1},{value:" is a wrapper based on ",paraId:0,tocIndex:1},{value:"axios",paraId:0,tocIndex:1},{value:", used for making HTTP requests to perform resource operations in NocoBase from the client-side.",paraId:0,tocIndex:1},{value:`class PluginSampleAPIClient extends Plugin { async load() { const res = await this.app.apiClient.request({ // ... @@ -19217,7 +19270,7 @@ type ResourceAction = (params?: ActionParams) => Promise; export type IResource = { [key: string]: ResourceAction; }; -`,paraId:22,tocIndex:19},{value:"Parameter",paraId:23,tocIndex:20},{value:"Type",paraId:23,tocIndex:20},{value:"Description",paraId:23,tocIndex:20},{value:"name",paraId:23,tocIndex:20},{value:"string",paraId:23,tocIndex:20},{value:"Resource name, such as ",paraId:23,tocIndex:20},{value:"a",paraId:23,tocIndex:20},{value:"2. Name of the associated object, such as ",paraId:23,tocIndex:20},{value:"a.b",paraId:23,tocIndex:20},{value:"of",paraId:23,tocIndex:20},{value:"any",paraId:23,tocIndex:20},{value:"Primary key value of the resource when ",paraId:23,tocIndex:20},{value:"resource",paraId:23,tocIndex:20},{value:" is the name of an associated object. For example, for ",paraId:23,tocIndex:20},{value:"a.b",paraId:23,tocIndex:20},{value:", it represents the primary key value of ",paraId:23,tocIndex:20},{value:"a",paraId:23,tocIndex:20},{value:".",paraId:23,tocIndex:20},{value:"headers",paraId:23,tocIndex:20},{value:"AxiosRequestHeaders",paraId:23,tocIndex:20},{value:"HTTP request headers to be sent with subsequent resource operation requests",paraId:23,tocIndex:20}],fee={},xee={title:"\u63D2\u4EF6\u603B\u89C8",toc:"menu",filename:"docs/en-US/plugins/index.md",lastUpdated:1732240239e3},gee=[{id:"\u63D2\u4EF6\u603B\u89C8",depth:1,title:"\u63D2\u4EF6\u603B\u89C8"}],bee=[],yee={},wee={title:"Auth",toc:"menu",filename:"docs/en-US/api/sdk/auth.md",lastUpdated:1732240239e3,description:"The Auth class is primarily used for accessing user information on the client-side, as well as requesting user authentication-related APIs."},kee=[{id:"auth",depth:1,title:"Auth"},{id:"overview",depth:2,title:"Overview"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"locale",depth:3,title:"locale"},{id:"role",depth:3,title:"role"},{id:"token",depth:3,title:"token"},{id:"authenticator",depth:3,title:"authenticator"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"signin",depth:3,title:"signIn()"},{id:"signature",depth:4,title:"Signature"},{id:"details",depth:4,title:"Details"},{id:"signup",depth:3,title:"signUp()"},{id:"signature-1",depth:4,title:"Signature"},{id:"details-1",depth:4,title:"Details"},{id:"signout",depth:3,title:"signOut()"},{id:"signature-2",depth:4,title:"Signature"},{id:"details-2",depth:4,title:"Details"}],See=[{value:"The ",paraId:0,tocIndex:1},{value:"Auth",paraId:0,tocIndex:1},{value:" class is primarily used for accessing user information on the client-side, as well as requesting user authentication-related APIs.",paraId:0,tocIndex:1},{value:"locale",paraId:1},{value:"The language used by the current user.",paraId:2,tocIndex:3},{value:"role",paraId:1},{value:"The role used by the current user.",paraId:3,tocIndex:4},{value:"token",paraId:1},{value:"The API interface token.",paraId:4,tocIndex:5},{value:"authenticator",paraId:1},{value:"The authenticator used for current user authentication. Refer to ",paraId:5,tocIndex:6},{value:"User Authentication",paraId:6,tocIndex:6},{value:".",paraId:5,tocIndex:6},{value:"signIn()",paraId:1},{value:"User login.",paraId:7,tocIndex:8},{value:"async signIn(values: any, authenticator?: string): Promise>",paraId:8,tocIndex:9},{value:"Parameter",paraId:9,tocIndex:10},{value:"Type",paraId:9,tocIndex:10},{value:"Description",paraId:9,tocIndex:10},{value:"values",paraId:9,tocIndex:10},{value:"any",paraId:9,tocIndex:10},{value:"Login API request parameters",paraId:9,tocIndex:10},{value:"authenticator",paraId:9,tocIndex:10},{value:"string",paraId:9,tocIndex:10},{value:"Authenticator identifier used for login",paraId:9,tocIndex:10},{value:"signUp()",paraId:1},{value:"User registration.",paraId:10,tocIndex:11},{value:"async signUp(values: any, authenticator?: string): Promise>",paraId:11,tocIndex:12},{value:"Parameter",paraId:12,tocIndex:13},{value:"Type",paraId:12,tocIndex:13},{value:"Description",paraId:12,tocIndex:13},{value:"values",paraId:12,tocIndex:13},{value:"any",paraId:12,tocIndex:13},{value:"Registration API request parameters",paraId:12,tocIndex:13},{value:"authenticator",paraId:12,tocIndex:13},{value:"string",paraId:12,tocIndex:13},{value:"Authenticator identifier used for registration",paraId:12,tocIndex:13},{value:"signOut()",paraId:1},{value:"Log out.",paraId:13,tocIndex:14},{value:"async signOut(values: any, authenticator?: string): Promise>",paraId:14,tocIndex:15},{value:"Parameter",paraId:15,tocIndex:16},{value:"Type",paraId:15,tocIndex:16},{value:"Description",paraId:15,tocIndex:16},{value:"values",paraId:15,tocIndex:16},{value:"any",paraId:15,tocIndex:16},{value:"Logout API request parameters",paraId:15,tocIndex:16},{value:"authenticator",paraId:15,tocIndex:16},{value:"string",paraId:15,tocIndex:16},{value:"Authenticator identifier used for logout",paraId:15,tocIndex:16}],Uee={},Pee={title:"End-to-End",toc:"menu",filename:"docs/en-US/api/test/e2e.md",lastUpdated:1732240239e3,description:"NocoBase uses Playwright for end-to-end (E2E) testing and provides some mock methods to simplify test writing."},Tee=[{id:"end-to-end",depth:1,title:"End-to-End"},{id:"overview",depth:2,title:"Overview"},{id:"mockpage",depth:3,title:"mockPage"},{id:"mockmanualdestroypage",depth:3,title:"mockManualDestroyPage"},{id:"mockcollections",depth:3,title:"mockCollections"},{id:"mockcollection",depth:3,title:"mockCollection"},{id:"mockrecords",depth:3,title:"mockRecords"},{id:"mockrecord",depth:3,title:"mockRecord"}],Cee=[{value:"NocoBase uses ",paraId:0,tocIndex:1},{value:"Playwright",paraId:0,tocIndex:1},{value:" for end-to-end (E2E) testing and provides some mock methods to simplify test writing.",paraId:0,tocIndex:1},{value:"Generates a NocoBase page based on the configuration.",paraId:1,tocIndex:2},{value:"Signature",paraId:2,tocIndex:2},{value:"mockPage(pageConfig?: PageConfig): NocoPage",paraId:3,tocIndex:2},{value:"Parameters",paraId:4,tocIndex:2},{value:"Parameter",paraId:5,tocIndex:2},{value:"Type",paraId:5,tocIndex:2},{value:"Default",paraId:5,tocIndex:2},{value:"Description",paraId:5,tocIndex:2},{value:"pageConfig.type",paraId:5,tocIndex:2},{value:"'group' | 'page' | 'link'",paraId:5,tocIndex:2},{value:"'page'",paraId:5,tocIndex:2},{value:"Type of page",paraId:5,tocIndex:2},{value:"pageConfig.name",paraId:5,tocIndex:2},{value:"string",paraId:5,tocIndex:2},{value:"-",paraId:5,tocIndex:2},{value:"Name of the page visible to users",paraId:5,tocIndex:2},{value:"pageConfig.url",paraId:5,tocIndex:2},{value:"string",paraId:5,tocIndex:2},{value:"-",paraId:5,tocIndex:2},{value:"URL to navigate when ",paraId:5,tocIndex:2},{value:"type",paraId:5,tocIndex:2},{value:" is 'link'",paraId:5,tocIndex:2},{value:"pageConfig.basePath",paraId:5,tocIndex:2},{value:"string",paraId:5,tocIndex:2},{value:"'/admin/'",paraId:5,tocIndex:2},{value:"Base path of the page",paraId:5,tocIndex:2},{value:"pageConfig.collections",paraId:5,tocIndex:2},{value:"CollectionSetting[]",paraId:5,tocIndex:2},{value:"-",paraId:5,tocIndex:2},{value:"Configuration of collections on the page",paraId:5,tocIndex:2},{value:"pageConfig.pageSchema",paraId:5,tocIndex:2},{value:"-",paraId:5,tocIndex:2},{value:"-",paraId:5,tocIndex:2},{value:"Schema of the entire page",paraId:5,tocIndex:2},{value:"Example",paraId:6,tocIndex:2},{value:"Create an empty page that will be automatically deleted after the current test case finishes running.",paraId:7,tocIndex:2},{value:`import { test } from '@nocobase/test/e2e'; +`,paraId:22,tocIndex:19},{value:"Parameter",paraId:23,tocIndex:20},{value:"Type",paraId:23,tocIndex:20},{value:"Description",paraId:23,tocIndex:20},{value:"name",paraId:23,tocIndex:20},{value:"string",paraId:23,tocIndex:20},{value:"Resource name, such as ",paraId:23,tocIndex:20},{value:"a",paraId:23,tocIndex:20},{value:"2. Name of the associated object, such as ",paraId:23,tocIndex:20},{value:"a.b",paraId:23,tocIndex:20},{value:"of",paraId:23,tocIndex:20},{value:"any",paraId:23,tocIndex:20},{value:"Primary key value of the resource when ",paraId:23,tocIndex:20},{value:"resource",paraId:23,tocIndex:20},{value:" is the name of an associated object. For example, for ",paraId:23,tocIndex:20},{value:"a.b",paraId:23,tocIndex:20},{value:", it represents the primary key value of ",paraId:23,tocIndex:20},{value:"a",paraId:23,tocIndex:20},{value:".",paraId:23,tocIndex:20},{value:"headers",paraId:23,tocIndex:20},{value:"AxiosRequestHeaders",paraId:23,tocIndex:20},{value:"HTTP request headers to be sent with subsequent resource operation requests",paraId:23,tocIndex:20}],fee={},xee={title:"\u63D2\u4EF6\u603B\u89C8",toc:"menu",filename:"docs/en-US/plugins/index.md",lastUpdated:173254844e4},gee=[{id:"\u63D2\u4EF6\u603B\u89C8",depth:1,title:"\u63D2\u4EF6\u603B\u89C8"}],bee=[],yee={},wee={title:"Auth",toc:"menu",filename:"docs/en-US/api/sdk/auth.md",lastUpdated:173254844e4,description:"The Auth class is primarily used for accessing user information on the client-side, as well as requesting user authentication-related APIs."},kee=[{id:"auth",depth:1,title:"Auth"},{id:"overview",depth:2,title:"Overview"},{id:"instance-properties",depth:2,title:"Instance Properties"},{id:"locale",depth:3,title:"locale"},{id:"role",depth:3,title:"role"},{id:"token",depth:3,title:"token"},{id:"authenticator",depth:3,title:"authenticator"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"signin",depth:3,title:"signIn()"},{id:"signature",depth:4,title:"Signature"},{id:"details",depth:4,title:"Details"},{id:"signup",depth:3,title:"signUp()"},{id:"signature-1",depth:4,title:"Signature"},{id:"details-1",depth:4,title:"Details"},{id:"signout",depth:3,title:"signOut()"},{id:"signature-2",depth:4,title:"Signature"},{id:"details-2",depth:4,title:"Details"}],See=[{value:"The ",paraId:0,tocIndex:1},{value:"Auth",paraId:0,tocIndex:1},{value:" class is primarily used for accessing user information on the client-side, as well as requesting user authentication-related APIs.",paraId:0,tocIndex:1},{value:"locale",paraId:1},{value:"The language used by the current user.",paraId:2,tocIndex:3},{value:"role",paraId:1},{value:"The role used by the current user.",paraId:3,tocIndex:4},{value:"token",paraId:1},{value:"The API interface token.",paraId:4,tocIndex:5},{value:"authenticator",paraId:1},{value:"The authenticator used for current user authentication. Refer to ",paraId:5,tocIndex:6},{value:"User Authentication",paraId:6,tocIndex:6},{value:".",paraId:5,tocIndex:6},{value:"signIn()",paraId:1},{value:"User login.",paraId:7,tocIndex:8},{value:"async signIn(values: any, authenticator?: string): Promise>",paraId:8,tocIndex:9},{value:"Parameter",paraId:9,tocIndex:10},{value:"Type",paraId:9,tocIndex:10},{value:"Description",paraId:9,tocIndex:10},{value:"values",paraId:9,tocIndex:10},{value:"any",paraId:9,tocIndex:10},{value:"Login API request parameters",paraId:9,tocIndex:10},{value:"authenticator",paraId:9,tocIndex:10},{value:"string",paraId:9,tocIndex:10},{value:"Authenticator identifier used for login",paraId:9,tocIndex:10},{value:"signUp()",paraId:1},{value:"User registration.",paraId:10,tocIndex:11},{value:"async signUp(values: any, authenticator?: string): Promise>",paraId:11,tocIndex:12},{value:"Parameter",paraId:12,tocIndex:13},{value:"Type",paraId:12,tocIndex:13},{value:"Description",paraId:12,tocIndex:13},{value:"values",paraId:12,tocIndex:13},{value:"any",paraId:12,tocIndex:13},{value:"Registration API request parameters",paraId:12,tocIndex:13},{value:"authenticator",paraId:12,tocIndex:13},{value:"string",paraId:12,tocIndex:13},{value:"Authenticator identifier used for registration",paraId:12,tocIndex:13},{value:"signOut()",paraId:1},{value:"Log out.",paraId:13,tocIndex:14},{value:"async signOut(values: any, authenticator?: string): Promise>",paraId:14,tocIndex:15},{value:"Parameter",paraId:15,tocIndex:16},{value:"Type",paraId:15,tocIndex:16},{value:"Description",paraId:15,tocIndex:16},{value:"values",paraId:15,tocIndex:16},{value:"any",paraId:15,tocIndex:16},{value:"Logout API request parameters",paraId:15,tocIndex:16},{value:"authenticator",paraId:15,tocIndex:16},{value:"string",paraId:15,tocIndex:16},{value:"Authenticator identifier used for logout",paraId:15,tocIndex:16}],Uee={},Pee={title:"End-to-End",toc:"menu",filename:"docs/en-US/api/test/e2e.md",lastUpdated:173254844e4,description:"NocoBase uses Playwright for end-to-end (E2E) testing and provides some mock methods to simplify test writing."},Tee=[{id:"end-to-end",depth:1,title:"End-to-End"},{id:"overview",depth:2,title:"Overview"},{id:"mockpage",depth:3,title:"mockPage"},{id:"mockmanualdestroypage",depth:3,title:"mockManualDestroyPage"},{id:"mockcollections",depth:3,title:"mockCollections"},{id:"mockcollection",depth:3,title:"mockCollection"},{id:"mockrecords",depth:3,title:"mockRecords"},{id:"mockrecord",depth:3,title:"mockRecord"}],Cee=[{value:"NocoBase uses ",paraId:0,tocIndex:1},{value:"Playwright",paraId:0,tocIndex:1},{value:" for end-to-end (E2E) testing and provides some mock methods to simplify test writing.",paraId:0,tocIndex:1},{value:"Generates a NocoBase page based on the configuration.",paraId:1,tocIndex:2},{value:"Signature",paraId:2,tocIndex:2},{value:"mockPage(pageConfig?: PageConfig): NocoPage",paraId:3,tocIndex:2},{value:"Parameters",paraId:4,tocIndex:2},{value:"Parameter",paraId:5,tocIndex:2},{value:"Type",paraId:5,tocIndex:2},{value:"Default",paraId:5,tocIndex:2},{value:"Description",paraId:5,tocIndex:2},{value:"pageConfig.type",paraId:5,tocIndex:2},{value:"'group' | 'page' | 'link'",paraId:5,tocIndex:2},{value:"'page'",paraId:5,tocIndex:2},{value:"Type of page",paraId:5,tocIndex:2},{value:"pageConfig.name",paraId:5,tocIndex:2},{value:"string",paraId:5,tocIndex:2},{value:"-",paraId:5,tocIndex:2},{value:"Name of the page visible to users",paraId:5,tocIndex:2},{value:"pageConfig.url",paraId:5,tocIndex:2},{value:"string",paraId:5,tocIndex:2},{value:"-",paraId:5,tocIndex:2},{value:"URL to navigate when ",paraId:5,tocIndex:2},{value:"type",paraId:5,tocIndex:2},{value:" is 'link'",paraId:5,tocIndex:2},{value:"pageConfig.basePath",paraId:5,tocIndex:2},{value:"string",paraId:5,tocIndex:2},{value:"'/admin/'",paraId:5,tocIndex:2},{value:"Base path of the page",paraId:5,tocIndex:2},{value:"pageConfig.collections",paraId:5,tocIndex:2},{value:"CollectionSetting[]",paraId:5,tocIndex:2},{value:"-",paraId:5,tocIndex:2},{value:"Configuration of collections on the page",paraId:5,tocIndex:2},{value:"pageConfig.pageSchema",paraId:5,tocIndex:2},{value:"-",paraId:5,tocIndex:2},{value:"-",paraId:5,tocIndex:2},{value:"Schema of the entire page",paraId:5,tocIndex:2},{value:"Example",paraId:6,tocIndex:2},{value:"Create an empty page that will be automatically deleted after the current test case finishes running.",paraId:7,tocIndex:2},{value:`import { test } from '@nocobase/test/e2e'; test('learn how to use mockPage', async ({ mockPage }) => { const nocoPage = await mockPage(); @@ -19275,7 +19328,7 @@ test('learn how to use mockRecords', async ({ mockRecords }) => { test('learn how to use mockRecord', async ({ mockRecord }) => { await mockRecord('posts'); }); -`,paraId:50,tocIndex:7}],Aee={},qee={title:"ACL",toc:"menu",filename:"docs/en-US/api/acl/acl.md",lastUpdated:1732240239e3,description:"ACL is the permission management module used in NocoBase, responsible for user role management, permission registration and authorization, as well as permission policy evaluation and access control."},Eee=[{id:"acl",depth:1,title:"ACL"},{id:"overview",depth:2,title:"Overview"},{id:"concepts",depth:3,title:"Concepts"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"define",depth:3,title:"define()"},{id:"signature",depth:4,title:"Signature"},{id:"type-definitions",depth:4,title:"Type Definitions"},{id:"details",depth:4,title:"Details"},{id:"defineoptions",depth:5,title:"DefineOptions"},{id:"availablestrategyoptions",depth:5,title:"AvailableStrategyOptions"},{id:"roleactionparams",depth:5,title:"RoleActionParams"},{id:"can",depth:3,title:"can()"},{id:"signature-1",depth:4,title:"Signature"},{id:"type-definitions-1",depth:4,title:"Type Definitions"},{id:"details-1",depth:4,title:"Details"},{id:"canargs",depth:5,title:"CanArgs"},{id:"canresult",depth:5,title:"CanResult"},{id:"registersnippet",depth:3,title:"registerSnippet()"},{id:"signature-2",depth:4,title:"Signature"},{id:"type-definitions-2",depth:4,title:"Type Definitions"},{id:"details-2",depth:4,title:"Details"},{id:"setavailableaction",depth:3,title:"setAvailableAction()"},{id:"signature-3",depth:4,title:"Signature"},{id:"details-3",depth:4,title:"Details"},{id:"setavailablestrategy",depth:3,title:"setAvailableStrategy()"},{id:"signature-4",depth:4,title:"Signature"},{id:"allow",depth:3,title:"allow()"},{id:"signature-5",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details-4",depth:4,title:"Details"},{id:"addfixedparams",depth:3,title:"addFixedParams()"},{id:"signature-6",depth:4,title:"Signature"},{id:"type-definitions-3",depth:4,title:"Type Definitions"},{id:"details-5",depth:4,title:"Details"},{id:"use",depth:3,title:"use()"},{id:"signature-7",depth:4,title:"Signature"},{id:"details-6",depth:4,title:"Details"},{id:"middleware",depth:3,title:"middleware()"}],Dee=[{value:"ACL",paraId:0,tocIndex:1},{value:" is the permission management module used in NocoBase, responsible for user role management, permission registration and authorization, as well as permission policy evaluation and access control.",paraId:0,tocIndex:1},{value:"Resource",paraId:1,tocIndex:2},{value:": Collections, or custom resources can be registered. Refer to ",paraId:1,tocIndex:2},{value:"@nocobase/resourcer",paraId:2,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:"Action",paraId:1,tocIndex:2},{value:": An operation interface for a resource, such as create, read, update, delete, or other custom actions. Refer to ",paraId:1,tocIndex:2},{value:"@nocobase/actions",paraId:3,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:"Strategy",paraId:1,tocIndex:2},{value:": Configures global permissions for roles, such as permissions for resource operations like create, read, update, delete, import, export, and system permissions like configuring the user interface.",paraId:1,tocIndex:2},{value:"Snippet",paraId:1,tocIndex:2},{value:": Defines a collection of operations, enabling unified management of operation permissions. Snippet identifiers can be matched using the ",paraId:1,tocIndex:2},{value:"minimatch",paraId:1,tocIndex:2},{value:" rules.",paraId:1,tocIndex:2},{value:"define()",paraId:4},{value:"Defines a role.",paraId:5,tocIndex:4},{value:"define(options: DefineOptions): ACLRole",paraId:6,tocIndex:5},{value:`export interface DefineOptions { +`,paraId:50,tocIndex:7}],Aee={},qee={title:"ACL",toc:"menu",filename:"docs/en-US/api/acl/acl.md",lastUpdated:173254844e4,description:"ACL is the permission management module used in NocoBase, responsible for user role management, permission registration and authorization, as well as permission policy evaluation and access control."},Eee=[{id:"acl",depth:1,title:"ACL"},{id:"overview",depth:2,title:"Overview"},{id:"concepts",depth:3,title:"Concepts"},{id:"class-methods",depth:2,title:"Class Methods"},{id:"define",depth:3,title:"define()"},{id:"signature",depth:4,title:"Signature"},{id:"type-definitions",depth:4,title:"Type Definitions"},{id:"details",depth:4,title:"Details"},{id:"defineoptions",depth:5,title:"DefineOptions"},{id:"availablestrategyoptions",depth:5,title:"AvailableStrategyOptions"},{id:"roleactionparams",depth:5,title:"RoleActionParams"},{id:"can",depth:3,title:"can()"},{id:"signature-1",depth:4,title:"Signature"},{id:"type-definitions-1",depth:4,title:"Type Definitions"},{id:"details-1",depth:4,title:"Details"},{id:"canargs",depth:5,title:"CanArgs"},{id:"canresult",depth:5,title:"CanResult"},{id:"registersnippet",depth:3,title:"registerSnippet()"},{id:"signature-2",depth:4,title:"Signature"},{id:"type-definitions-2",depth:4,title:"Type Definitions"},{id:"details-2",depth:4,title:"Details"},{id:"setavailableaction",depth:3,title:"setAvailableAction()"},{id:"signature-3",depth:4,title:"Signature"},{id:"details-3",depth:4,title:"Details"},{id:"setavailablestrategy",depth:3,title:"setAvailableStrategy()"},{id:"signature-4",depth:4,title:"Signature"},{id:"allow",depth:3,title:"allow()"},{id:"signature-5",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details-4",depth:4,title:"Details"},{id:"addfixedparams",depth:3,title:"addFixedParams()"},{id:"signature-6",depth:4,title:"Signature"},{id:"type-definitions-3",depth:4,title:"Type Definitions"},{id:"details-5",depth:4,title:"Details"},{id:"use",depth:3,title:"use()"},{id:"signature-7",depth:4,title:"Signature"},{id:"details-6",depth:4,title:"Details"},{id:"middleware",depth:3,title:"middleware()"}],Dee=[{value:"ACL",paraId:0,tocIndex:1},{value:" is the permission management module used in NocoBase, responsible for user role management, permission registration and authorization, as well as permission policy evaluation and access control.",paraId:0,tocIndex:1},{value:"Resource",paraId:1,tocIndex:2},{value:": Collections, or custom resources can be registered. Refer to ",paraId:1,tocIndex:2},{value:"@nocobase/resourcer",paraId:2,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:"Action",paraId:1,tocIndex:2},{value:": An operation interface for a resource, such as create, read, update, delete, or other custom actions. Refer to ",paraId:1,tocIndex:2},{value:"@nocobase/actions",paraId:3,tocIndex:2},{value:".",paraId:1,tocIndex:2},{value:"Strategy",paraId:1,tocIndex:2},{value:": Configures global permissions for roles, such as permissions for resource operations like create, read, update, delete, import, export, and system permissions like configuring the user interface.",paraId:1,tocIndex:2},{value:"Snippet",paraId:1,tocIndex:2},{value:": Defines a collection of operations, enabling unified management of operation permissions. Snippet identifiers can be matched using the ",paraId:1,tocIndex:2},{value:"minimatch",paraId:1,tocIndex:2},{value:" rules.",paraId:1,tocIndex:2},{value:"define()",paraId:4},{value:"Defines a role.",paraId:5,tocIndex:4},{value:"define(options: DefineOptions): ACLRole",paraId:6,tocIndex:5},{value:`export interface DefineOptions { role: string; strategy?: string | AvailableStrategyOptions; actions?: ResourceActionsOptions; @@ -19344,7 +19397,7 @@ interface CanResult { await next(); }; }); -`,paraId:43,tocIndex:34},{value:"use(fn: any, options?: ToposortOptions)",paraId:44,tocIndex:35},{value:"Refer to ",paraId:45,tocIndex:36},{value:"Middleware",paraId:46,tocIndex:36},{value:".",paraId:45,tocIndex:36},{value:"middleware()",paraId:4},{value:"NocoBase access control middleware.",paraId:47,tocIndex:37}],Oee={},Ree={title:"@nocobase/actions",toc:"menu",filename:"docs/en-US/api/actions.md",lastUpdated:1732240239e3,description:"The @nocobase/actions package encapsulates frequently used CRUD-related methods. By simply registering it with the ResourceManager, CRUD operation interfaces can be globally added to system resources."},Mee=[{id:"nocobaseactions",depth:1,title:"@nocobase/actions"},{id:"overview",depth:2,title:"Overview"},{id:"basic-usage",depth:3,title:"Basic Usage"},{id:"action-methods",depth:2,title:"Action Methods"},{id:"create",depth:3,title:"create"},{id:"request-body",depth:4,title:"Request Body"},{id:"list",depth:3,title:"list"},{id:"parameters",depth:4,title:"Parameters"},{id:"get",depth:3,title:"get"},{id:"parameters-1",depth:4,title:"Parameters"},{id:"update",depth:3,title:"update"},{id:"parameters-2",depth:4,title:"Parameters"},{id:"request-body-1",depth:4,title:"Request Body"},{id:"destroy",depth:3,title:"destroy"},{id:"parameters-3",depth:4,title:"Parameters"},{id:"firstorcreate",depth:3,title:"firstOrCreate"},{id:"parameters-4",depth:4,title:"Parameters"},{id:"request-body-2",depth:4,title:"Request Body"},{id:"updateorcreate",depth:3,title:"updateOrCreate"},{id:"parameters-5",depth:4,title:"Parameters"},{id:"request-body-3",depth:4,title:"Request Body"},{id:"move",depth:3,title:"move"},{id:"parameters-6",depth:4,title:"Parameters"},{id:"set",depth:3,title:"set"},{id:"request-body-4",depth:4,title:"Request Body"},{id:"add",depth:3,title:"add"},{id:"request-body-5",depth:4,title:"Request Body"},{id:"remove",depth:3,title:"remove"},{id:"request-body-6",depth:4,title:"Request Body"},{id:"toggle",depth:3,title:"toggle"},{id:"request-body-7",depth:4,title:"Request Body"}],Lee=[{value:"The ",paraId:0,tocIndex:1},{value:"@nocobase/actions",paraId:0,tocIndex:1},{value:" package encapsulates frequently used CRUD-related methods. By simply registering it with the ",paraId:0,tocIndex:1},{value:"ResourceManager",paraId:1,tocIndex:1},{value:", CRUD operation interfaces can be globally added to system resources.",paraId:0,tocIndex:1},{value:`import * as actions from \`@nocobase/actions\`; +`,paraId:43,tocIndex:34},{value:"use(fn: any, options?: ToposortOptions)",paraId:44,tocIndex:35},{value:"Refer to ",paraId:45,tocIndex:36},{value:"Middleware",paraId:46,tocIndex:36},{value:".",paraId:45,tocIndex:36},{value:"middleware()",paraId:4},{value:"NocoBase access control middleware.",paraId:47,tocIndex:37}],Oee={},Ree={title:"@nocobase/actions",toc:"menu",filename:"docs/en-US/api/actions.md",lastUpdated:173254844e4,description:"The @nocobase/actions package encapsulates frequently used CRUD-related methods. By simply registering it with the ResourceManager, CRUD operation interfaces can be globally added to system resources."},Mee=[{id:"nocobaseactions",depth:1,title:"@nocobase/actions"},{id:"overview",depth:2,title:"Overview"},{id:"basic-usage",depth:3,title:"Basic Usage"},{id:"action-methods",depth:2,title:"Action Methods"},{id:"create",depth:3,title:"create"},{id:"request-body",depth:4,title:"Request Body"},{id:"list",depth:3,title:"list"},{id:"parameters",depth:4,title:"Parameters"},{id:"get",depth:3,title:"get"},{id:"parameters-1",depth:4,title:"Parameters"},{id:"update",depth:3,title:"update"},{id:"parameters-2",depth:4,title:"Parameters"},{id:"request-body-1",depth:4,title:"Request Body"},{id:"destroy",depth:3,title:"destroy"},{id:"parameters-3",depth:4,title:"Parameters"},{id:"firstorcreate",depth:3,title:"firstOrCreate"},{id:"parameters-4",depth:4,title:"Parameters"},{id:"request-body-2",depth:4,title:"Request Body"},{id:"updateorcreate",depth:3,title:"updateOrCreate"},{id:"parameters-5",depth:4,title:"Parameters"},{id:"request-body-3",depth:4,title:"Request Body"},{id:"move",depth:3,title:"move"},{id:"parameters-6",depth:4,title:"Parameters"},{id:"set",depth:3,title:"set"},{id:"request-body-4",depth:4,title:"Request Body"},{id:"add",depth:3,title:"add"},{id:"request-body-5",depth:4,title:"Request Body"},{id:"remove",depth:3,title:"remove"},{id:"request-body-6",depth:4,title:"Request Body"},{id:"toggle",depth:3,title:"toggle"},{id:"request-body-7",depth:4,title:"Request Body"}],Lee=[{value:"The ",paraId:0,tocIndex:1},{value:"@nocobase/actions",paraId:0,tocIndex:1},{value:" package encapsulates frequently used CRUD-related methods. By simply registering it with the ",paraId:0,tocIndex:1},{value:"ResourceManager",paraId:1,tocIndex:1},{value:", CRUD operation interfaces can be globally added to system resources.",paraId:0,tocIndex:1},{value:`import * as actions from \`@nocobase/actions\`; const resourceManager = new ResourceManager({ // ...options @@ -19387,8 +19440,8 @@ resourceManager.registerActionHandlers(actions); -X POST \\ -H "Content-Type: application/json" \\ -d '["admin", "member"]' -`,paraId:46,tocIndex:29},{value:"TargetKey | TargetKey[]",paraId:47,tocIndex:30},{value:" - Array of primary key values for associated objects.",paraId:47,tocIndex:30}],Nee={},zee={title:"How NocoBase works",toc:"menu",filename:"docs/en-US/welcome/how.md",lastUpdated:1732240239e3,description:"NocoBase supports all features through a microkernel and pluginized architectural design."},Fee=[{id:"how-nocobase-works",depth:1,title:"How NocoBase works"},{id:"microkernel",depth:2,title:"Microkernel"},{id:"pluginization",depth:3,title:"Pluginization"},{id:"learn-more",depth:3,title:"Learn more"}],Bee=[{value:"NocoBase supports all features through a microkernel and pluginized architectural design.",paraId:0,tocIndex:0},{value:"NocoBase's kernel is similar to a development framework that defines the application lifecycle and standardizes the interface protocols of each layer. The basic structure of NocoBase is shown in the following diagram:",paraId:1,tocIndex:1},{value:"The data model is used as the underlying driver, the block-based interface is used as the user layer, and the business logic layer is used as the bridge connecting the two and carrying all kinds of business rules, so that the data can flow cyclically through the user's operations.",paraId:2,tocIndex:1},{value:"NocoBase defines standard protocols at the following three main levels:",paraId:3,tocIndex:1},{value:"data model: based on the upper layer of relational database ORM encapsulation, standardized data modeling description (refer to ",paraId:4,tocIndex:1},{value:"Collections & Fields",paraId:5,tocIndex:1},{value:").",paraId:4,tocIndex:1},{value:"HTTP routing: RESTful-like interface form based on resources and actions definitions (refer to ",paraId:4,tocIndex:1},{value:"Resources and Actions",paraId:6,tocIndex:1},{value:").",paraId:4,tocIndex:1},{value:"client-side interface: Formily 2.0-based JSON Schema to describe customized page and block layouts (refer to ",paraId:4,tocIndex:1},{value:"UI Schema",paraId:7,tocIndex:1},{value:").",paraId:4,tocIndex:1},{value:"Based on these protocols, it also makes the development of other modules more standardized and easier.",paraId:8,tocIndex:1},{value:"NocoBase opens up extensible interfaces in all aspects of the application lifecycle, including field types, collection types, third-party data sources in the data model, middleware insertion in the business logic layer, interface components, blocks, etc., and in all aspects of the entire application lifecycle (startup, stopping, and plug-in loading), and even many plug-ins provide secondary extensible interfaces. These designs fully provide a variety of extension possibilities for application development, and all the built-in features of NocoBase are also composed through this design:",paraId:9,tocIndex:2},{value:`Plugins can be used to extend the required functionality in any life cycle of the application, such as the Permissions plugin, which contains customized data tables, business processing for request middleware, and interfaces for front-end administration. -Through this design, NocoBase not only realizes rich no-code features, but also supports free extensions when the built-in functionality cannot meet the needs.`,paraId:10,tocIndex:2},{value:"Please refer to the section on ",paraId:11,tocIndex:3},{value:"Plugin development",paraId:12,tocIndex:3},{value:" to start extending by developing plugins.",paraId:11,tocIndex:3}],jee={},Hee={title:"@nocobase/logger",toc:"menu",filename:"docs/en-US/api/logger.md",lastUpdated:1732240239e3,description:"Creates a custom logger."},Wee=[{id:"nocobaselogger",depth:1,title:"@nocobase/logger"},{id:"create-logger",depth:2,title:"Create Logger"},{id:"createlogger",depth:3,title:"createLogger()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"createsystemlogger",depth:3,title:"createSystemLogger()"},{id:"signature-1",depth:4,title:"Signature"},{id:"type-1",depth:4,title:"Type"},{id:"details-1",depth:4,title:"Details"},{id:"appcreatelogger",depth:3,title:"app.createLogger()"},{id:"definition",depth:4,title:"Definition"},{id:"plugincreatelogger",depth:3,title:"plugin.createLogger()"},{id:"definition-1",depth:4,title:"Definition"},{id:"configuration",depth:2,title:"Configuration"},{id:"getloggerlevel",depth:3,title:"getLoggerLevel()"},{id:"getloggerfilepath",depth:3,title:"getLoggerFilePath()"},{id:"getloggertransports",depth:3,title:"getLoggerTransports()"},{id:"getloggerformat",depth:3,title:"getLoggerFormat()"},{id:"logger-transports",depth:2,title:"Logger Transports"},{id:"transports",depth:3,title:"Transports"},{id:"references",depth:2,title:"References"}],$ee=[{value:"Creates a custom logger.",paraId:0,tocIndex:2},{value:"createLogger(options: LoggerOptions)",paraId:1,tocIndex:3},{value:`interface LoggerOptions +`,paraId:46,tocIndex:29},{value:"TargetKey | TargetKey[]",paraId:47,tocIndex:30},{value:" - Array of primary key values for associated objects.",paraId:47,tocIndex:30}],Nee={},zee={title:"How NocoBase works",toc:"menu",filename:"docs/en-US/welcome/how.md",lastUpdated:173254844e4,description:"NocoBase supports all features through a microkernel and pluginized architectural design."},Fee=[{id:"how-nocobase-works",depth:1,title:"How NocoBase works"},{id:"microkernel",depth:2,title:"Microkernel"},{id:"pluginization",depth:3,title:"Pluginization"},{id:"learn-more",depth:3,title:"Learn more"}],Bee=[{value:"NocoBase supports all features through a microkernel and pluginized architectural design.",paraId:0,tocIndex:0},{value:"NocoBase's kernel is similar to a development framework that defines the application lifecycle and standardizes the interface protocols of each layer. The basic structure of NocoBase is shown in the following diagram:",paraId:1,tocIndex:1},{value:"The data model is used as the underlying driver, the block-based interface is used as the user layer, and the business logic layer is used as the bridge connecting the two and carrying all kinds of business rules, so that the data can flow cyclically through the user's operations.",paraId:2,tocIndex:1},{value:"NocoBase defines standard protocols at the following three main levels:",paraId:3,tocIndex:1},{value:"data model: based on the upper layer of relational database ORM encapsulation, standardized data modeling description (refer to ",paraId:4,tocIndex:1},{value:"Collections & Fields",paraId:5,tocIndex:1},{value:").",paraId:4,tocIndex:1},{value:"HTTP routing: RESTful-like interface form based on resources and actions definitions (refer to ",paraId:4,tocIndex:1},{value:"Resources and Actions",paraId:6,tocIndex:1},{value:").",paraId:4,tocIndex:1},{value:"client-side interface: Formily 2.0-based JSON Schema to describe customized page and block layouts (refer to ",paraId:4,tocIndex:1},{value:"UI Schema",paraId:7,tocIndex:1},{value:").",paraId:4,tocIndex:1},{value:"Based on these protocols, it also makes the development of other modules more standardized and easier.",paraId:8,tocIndex:1},{value:"NocoBase opens up extensible interfaces in all aspects of the application lifecycle, including field types, collection types, third-party data sources in the data model, middleware insertion in the business logic layer, interface components, blocks, etc., and in all aspects of the entire application lifecycle (startup, stopping, and plug-in loading), and even many plug-ins provide secondary extensible interfaces. These designs fully provide a variety of extension possibilities for application development, and all the built-in features of NocoBase are also composed through this design:",paraId:9,tocIndex:2},{value:`Plugins can be used to extend the required functionality in any life cycle of the application, such as the Permissions plugin, which contains customized data tables, business processing for request middleware, and interfaces for front-end administration. +Through this design, NocoBase not only realizes rich no-code features, but also supports free extensions when the built-in functionality cannot meet the needs.`,paraId:10,tocIndex:2},{value:"Please refer to the section on ",paraId:11,tocIndex:3},{value:"Plugin development",paraId:12,tocIndex:3},{value:" to start extending by developing plugins.",paraId:11,tocIndex:3}],jee={},Hee={title:"@nocobase/logger",toc:"menu",filename:"docs/en-US/api/logger.md",lastUpdated:173254844e4,description:"Creates a custom logger."},Wee=[{id:"nocobaselogger",depth:1,title:"@nocobase/logger"},{id:"create-logger",depth:2,title:"Create Logger"},{id:"createlogger",depth:3,title:"createLogger()"},{id:"signature",depth:4,title:"Signature"},{id:"type",depth:4,title:"Type"},{id:"details",depth:4,title:"Details"},{id:"createsystemlogger",depth:3,title:"createSystemLogger()"},{id:"signature-1",depth:4,title:"Signature"},{id:"type-1",depth:4,title:"Type"},{id:"details-1",depth:4,title:"Details"},{id:"appcreatelogger",depth:3,title:"app.createLogger()"},{id:"definition",depth:4,title:"Definition"},{id:"plugincreatelogger",depth:3,title:"plugin.createLogger()"},{id:"definition-1",depth:4,title:"Definition"},{id:"configuration",depth:2,title:"Configuration"},{id:"getloggerlevel",depth:3,title:"getLoggerLevel()"},{id:"getloggerfilepath",depth:3,title:"getLoggerFilePath()"},{id:"getloggertransports",depth:3,title:"getLoggerTransports()"},{id:"getloggerformat",depth:3,title:"getLoggerFormat()"},{id:"logger-transports",depth:2,title:"Logger Transports"},{id:"transports",depth:3,title:"Transports"},{id:"references",depth:2,title:"References"}],$ee=[{value:"Creates a custom logger.",paraId:0,tocIndex:2},{value:"createLogger(options: LoggerOptions)",paraId:1,tocIndex:3},{value:`interface LoggerOptions extends Omit { dirname?: string; filename?: string; @@ -19417,7 +19470,7 @@ Through this design, NocoBase not only realizes rich no-code features, but also const transport = Transports.console({ //... }); -`,paraId:23,tocIndex:20},{value:"Development - Logger",paraId:24,tocIndex:21},{value:"Logger Plugin",paraId:25,tocIndex:21}],Gee={},Vee={title:"Components",toc:"menu",filename:"docs/en-US/components.md",lastUpdated:1732240239e3},Kee=[{id:"components",depth:1,title:"Components"}],Zee=[],Yee={},Qee={title:"Overview",toc:"menu",filename:"docs/en-US/api/index.md",lastUpdated:1732240239e3},Jee=[{id:"overview",depth:1,title:"Overview"}],Xee=[{value:"Module",paraId:0,tocIndex:0},{value:"Package",paraId:0,tocIndex:0},{value:"Description",paraId:0,tocIndex:0},{value:"Server",paraId:1,tocIndex:0},{value:"@nocobase/server",paraId:0,tocIndex:0},{value:"Server-side application",paraId:0,tocIndex:0},{value:"Database",paraId:2,tocIndex:0},{value:"@nocobase/database",paraId:0,tocIndex:0},{value:"Database access layer",paraId:0,tocIndex:0},{value:"Resourcer",paraId:3,tocIndex:0},{value:"@nocobase/resourcer",paraId:0,tocIndex:0},{value:"Resource and route mapping",paraId:0,tocIndex:0},{value:"ACL",paraId:4,tocIndex:0},{value:"@nocobase/acl",paraId:0,tocIndex:0},{value:"Access Control",paraId:0,tocIndex:0},{value:"Auth",paraId:5,tocIndex:0},{value:"@nocobase/auth",paraId:0,tocIndex:0},{value:"User Authentication",paraId:0,tocIndex:0},{value:"Client",paraId:0,tocIndex:0},{value:"@nocobase/client",paraId:0,tocIndex:0},{value:"Client-side application",paraId:0,tocIndex:0},{value:"Cache",paraId:6,tocIndex:0},{value:"@nocobase/cache",paraId:0,tocIndex:0},{value:"Server-side cache",paraId:0,tocIndex:0},{value:"Logger",paraId:7,tocIndex:0},{value:"@nocobase/logger",paraId:0,tocIndex:0},{value:"Server-side logging",paraId:0,tocIndex:0},{value:"Telemetry",paraId:8,tocIndex:0},{value:"@nocobase/telemetry",paraId:0,tocIndex:0},{value:"Server-side telemetry",paraId:0,tocIndex:0},{value:"CLI",paraId:9,tocIndex:0},{value:"@nocobase/cli",paraId:0,tocIndex:0},{value:"NocoBase Command Line Interface",paraId:0,tocIndex:0},{value:"SDK",paraId:10,tocIndex:0},{value:"@nocobase/sdk",paraId:0,tocIndex:0},{value:"NocoBase SDK",paraId:0,tocIndex:0},{value:"Actions",paraId:11,tocIndex:0},{value:"@nocobase/actions",paraId:0,tocIndex:0},{value:"Built-in resource operations",paraId:0,tocIndex:0},{value:"Test",paraId:12,tocIndex:0},{value:"@nocobase/test",paraId:0,tocIndex:0},{value:"Automated testing",paraId:0,tocIndex:0}],eae={},aae={title:"@nocobase/cli",toc:"menu",filename:"docs/en-US/api/cli.md",lastUpdated:1732240239e3,description:"The NocoBase CLI is designed to help you develop, build, and deploy NocoBase applications."},tae=[{id:"nocobasecli",depth:1,title:"@nocobase/cli"},{id:"instructions-for-use",depth:2,title:"Instructions For Use"},{id:"application-in-scaffolding",depth:2,title:"Application in Scaffolding"},{id:"command-line-extensions",depth:2,title:"Command Line Extensions"},{id:"built-in-commands",depth:2,title:"Built-in Commands"},{id:"dev",depth:3,title:"dev"},{id:"start",depth:3,title:"start"},{id:"install",depth:3,title:"install"},{id:"upgrade",depth:3,title:"upgrade"},{id:"test",depth:3,title:"test"},{id:"build",depth:3,title:"build"},{id:"clean",depth:3,title:"clean"},{id:"doc",depth:3,title:"doc"},{id:"dbauth",depth:3,title:"db:auth"},{id:"dbsync",depth:3,title:"db:sync"},{id:"migrator",depth:3,title:"migrator"},{id:"pm",depth:3,title:"pm"},{id:"umi",depth:3,title:"umi"},{id:"help",depth:3,title:"help"}],nae=[{value:"The NocoBase CLI is designed to help you develop, build, and deploy NocoBase applications.",paraId:0,tocIndex:0},{value:"NocoBase CLI supports ",paraId:1},{value:"ts-node",paraId:1},{value:" and ",paraId:1},{value:"node",paraId:1},{value:" two operation modes.",paraId:1},{value:"ts-node mode (Default): Used for development environment, support real-time compilation, with relatively slow response",paraId:2},{value:"node mode\uFF1AUsed for production environment, with quick response, but you need to execute ",paraId:2},{value:"yarn nocobase build",paraId:2},{value:" to compile the entire source code first",paraId:2},{value:`$ yarn nocobase -h +`,paraId:23,tocIndex:20},{value:"Development - Logger",paraId:24,tocIndex:21},{value:"Logger Plugin",paraId:25,tocIndex:21}],Gee={},Vee={title:"Components",toc:"menu",filename:"docs/en-US/components.md",lastUpdated:173254844e4},Kee=[{id:"components",depth:1,title:"Components"}],Zee=[],Yee={},Qee={title:"Overview",toc:"menu",filename:"docs/en-US/api/index.md",lastUpdated:173254844e4},Jee=[{id:"overview",depth:1,title:"Overview"}],Xee=[{value:"Module",paraId:0,tocIndex:0},{value:"Package",paraId:0,tocIndex:0},{value:"Description",paraId:0,tocIndex:0},{value:"Server",paraId:1,tocIndex:0},{value:"@nocobase/server",paraId:0,tocIndex:0},{value:"Server-side application",paraId:0,tocIndex:0},{value:"Database",paraId:2,tocIndex:0},{value:"@nocobase/database",paraId:0,tocIndex:0},{value:"Database access layer",paraId:0,tocIndex:0},{value:"Resourcer",paraId:3,tocIndex:0},{value:"@nocobase/resourcer",paraId:0,tocIndex:0},{value:"Resource and route mapping",paraId:0,tocIndex:0},{value:"ACL",paraId:4,tocIndex:0},{value:"@nocobase/acl",paraId:0,tocIndex:0},{value:"Access Control",paraId:0,tocIndex:0},{value:"Auth",paraId:5,tocIndex:0},{value:"@nocobase/auth",paraId:0,tocIndex:0},{value:"User Authentication",paraId:0,tocIndex:0},{value:"Client",paraId:0,tocIndex:0},{value:"@nocobase/client",paraId:0,tocIndex:0},{value:"Client-side application",paraId:0,tocIndex:0},{value:"Cache",paraId:6,tocIndex:0},{value:"@nocobase/cache",paraId:0,tocIndex:0},{value:"Server-side cache",paraId:0,tocIndex:0},{value:"Logger",paraId:7,tocIndex:0},{value:"@nocobase/logger",paraId:0,tocIndex:0},{value:"Server-side logging",paraId:0,tocIndex:0},{value:"Telemetry",paraId:8,tocIndex:0},{value:"@nocobase/telemetry",paraId:0,tocIndex:0},{value:"Server-side telemetry",paraId:0,tocIndex:0},{value:"CLI",paraId:9,tocIndex:0},{value:"@nocobase/cli",paraId:0,tocIndex:0},{value:"NocoBase Command Line Interface",paraId:0,tocIndex:0},{value:"SDK",paraId:10,tocIndex:0},{value:"@nocobase/sdk",paraId:0,tocIndex:0},{value:"NocoBase SDK",paraId:0,tocIndex:0},{value:"Actions",paraId:11,tocIndex:0},{value:"@nocobase/actions",paraId:0,tocIndex:0},{value:"Built-in resource operations",paraId:0,tocIndex:0},{value:"Test",paraId:12,tocIndex:0},{value:"@nocobase/test",paraId:0,tocIndex:0},{value:"Automated testing",paraId:0,tocIndex:0}],eae={},aae={title:"@nocobase/cli",toc:"menu",filename:"docs/en-US/api/cli.md",lastUpdated:173254844e4,description:"The NocoBase CLI is designed to help you develop, build, and deploy NocoBase applications."},tae=[{id:"nocobasecli",depth:1,title:"@nocobase/cli"},{id:"instructions-for-use",depth:2,title:"Instructions For Use"},{id:"application-in-scaffolding",depth:2,title:"Application in Scaffolding"},{id:"command-line-extensions",depth:2,title:"Command Line Extensions"},{id:"built-in-commands",depth:2,title:"Built-in Commands"},{id:"dev",depth:3,title:"dev"},{id:"start",depth:3,title:"start"},{id:"install",depth:3,title:"install"},{id:"upgrade",depth:3,title:"upgrade"},{id:"test",depth:3,title:"test"},{id:"build",depth:3,title:"build"},{id:"clean",depth:3,title:"clean"},{id:"doc",depth:3,title:"doc"},{id:"dbauth",depth:3,title:"db:auth"},{id:"dbsync",depth:3,title:"db:sync"},{id:"migrator",depth:3,title:"migrator"},{id:"pm",depth:3,title:"pm"},{id:"umi",depth:3,title:"umi"},{id:"help",depth:3,title:"help"}],nae=[{value:"The NocoBase CLI is designed to help you develop, build, and deploy NocoBase applications.",paraId:0,tocIndex:0},{value:"NocoBase CLI supports ",paraId:1},{value:"ts-node",paraId:1},{value:" and ",paraId:1},{value:"node",paraId:1},{value:" two operation modes.",paraId:1},{value:"ts-node mode (Default): Used for development environment, support real-time compilation, with relatively slow response",paraId:2},{value:"node mode\uFF1AUsed for production environment, with quick response, but you need to execute ",paraId:2},{value:"yarn nocobase build",paraId:2},{value:" to compile the entire source code first",paraId:2},{value:`$ yarn nocobase -h Usage: nocobase [command] [options] @@ -19580,7 +19633,7 @@ yarn nocobase -h yarn nocobase --help # View options of command db:sync yarn nocobase db:sync -h -`,paraId:55,tocIndex:18}],oae={},rae={title:"Index",toc:"menu",filename:"docs/en-US/index.md",lastUpdated:1732240239e3},dae=[{id:"index",depth:1,title:"Index"}],iae=[],lae=null,cae={},op={"./docs/en-US/plugins/collection-manager/user/association-fields/sub-form(popover)/index":{frontmatter:s,toc:I,texts:c,demos:i},"./docs/en-US/plugins/collection-manager/user/association-fields/cascade-select/index":{frontmatter:l,toc:p,texts:h,demos:u},"./docs/en-US/plugins/collection-manager/user/association-fields/record-picker/index":{frontmatter:g,toc:y,texts:b,demos:v},"./docs/en-US/handbook/data-modeling/collection-fields/datetime/datetime-without-tz":{frontmatter:k,toc:q,texts:P,demos:w},"./docs/en-US/plugins/collection-manager/user/association-fields/file-manager/index":{frontmatter:T,toc:R,texts:L,demos:D},"./docs/en-US/plugins/collection-manager/user/collection-templates/expression/index":{frontmatter:G,toc:Z,texts:ce,demos:F},"./docs/en-US/handbook/data-modeling/collection-fields/advanced/collection-select":{frontmatter:_e,toc:oe,texts:ee,demos:fe},"./docs/en-US/plugins/collection-manager/user/association-fields/sub-detail/index":{frontmatter:K,toc:$,texts:z,demos:ae},"./docs/en-US/plugins/collection-manager/user/collection-templates/calender/index":{frontmatter:E,toc:H,texts:Q,demos:S},"./docs/en-US/plugins/collection-manager/user/association-fields/sub-table/index":{frontmatter:C,toc:B,texts:V,demos:W},"./docs/en-US/plugins/collection-manager/user/collection-templates/general/index":{frontmatter:Y,toc:me,texts:we,demos:te},"./docs/en-US/plugins/collection-manager/user/association-fields/sub-form/index":{frontmatter:Ee,toc:ze,texts:Ge,demos:De},"./docs/en-US/handbook/data-modeling/collection-fields/choices/multiple-select":{frontmatter:J,toc:le,texts:X,demos:ie},"./docs/en-US/handbook/data-modeling/collection-fields/datetime/unix-timestamp":{frontmatter:ne,toc:se,texts:he,demos:pe},"./docs/en-US/plugins/collection-manager/user/association-fields/summary/index":{frontmatter:Be,toc:ca,texts:oa,demos:be},"./docs/en-US/handbook/data-modeling/collection-fields/associations/m2m/index":{frontmatter:Ia,toc:xa,texts:ba,demos:aa},"./docs/en-US/handbook/data-modeling/collection-fields/associations/m2o/index":{frontmatter:U,toc:ue,texts:Te,demos:Da},"./docs/en-US/handbook/data-modeling/collection-fields/associations/o2m/index":{frontmatter:Me,toc:Ye,texts:Oe,demos:Ce},"./docs/en-US/handbook/data-modeling/collection-fields/associations/o2o/index":{frontmatter:la,toc:pa,texts:Ma,demos:da},"./docs/en-US/handbook/data-modeling/collection-fields/choices/checkbox-group":{frontmatter:ta,toc:We,texts:Ae,demos:Se},"./docs/en-US/handbook/data-modeling/collection-fields/media/field-attachment":{frontmatter:ra,toc:ma,texts:Sa,demos:Ze},"./docs/en-US/handbook/data-modeling/collection-fields/system-info/created-at":{frontmatter:Qa,toc:nt,texts:kt,demos:ja},"./docs/en-US/handbook/data-modeling/collection-fields/system-info/updated-at":{frontmatter:Mn,toc:qn,texts:xn,demos:$t},"./docs/en-US/manual/ui/fields/association-components/sub-form(popover)/index":{frontmatter:bt,toc:Ot,texts:Tn,demos:Yt},"./docs/en-US/plugins/collection-manager/user/association-fields/select/index":{frontmatter:kn,toc:Gn,texts:Qt,demos:Ln},"./docs/en-US/plugins/collection-manager/user/collection-templates/file/index":{frontmatter:rn,toc:Un,texts:zn,demos:Nn},"./docs/en-US/plugins/collection-manager/user/collection-templates/tree/index":{frontmatter:go,toc:gn,texts:bo,demos:ht},"./docs/en-US/plugins/collection-manager/user/collection-templates/view/index":{frontmatter:Je,toc:ya,texts:Ua,demos:na},"./docs/en-US/handbook/data-modeling/collection-fields/system-info/table-oid":{frontmatter:Oa,toc:ha,texts:Pa,demos:Qe},"./docs/en-US/plugins/collection-manager/user/association-fields/title/index":{frontmatter:Ha,toc:Tt,texts:Ut,demos:La},"./docs/en-US/plugins/collection-manager/user/collection-templates/sql/index":{frontmatter:yt,toc:Zt,texts:tn,demos:Kt},"./docs/en-US/handbook/data-modeling/collection-fields/choices/china-region":{frontmatter:St,toc:wt,texts:ge,demos:Lt},"./docs/en-US/handbook/data-modeling/collection-fields/choices/radio-group":{frontmatter:qe,toc:He,texts:fa,demos:ke},"./docs/en-US/manual/ui/fields/association-components/cascade-select/index":{frontmatter:qa,toc:wa,texts:Wa,demos:sa},"./docs/en-US/plugins/collection-manager/user/association-fields/tag/index":{frontmatter:Ya,toc:tt,texts:dt,demos:ut},"./docs/en-US/api/database/relation-repository/belongs-to-many-repository":{frontmatter:pt,toc:Nt,texts:Mt,demos:rt},"./docs/en-US/handbook/client/user/ui-designer/actions/submit-to-workflow":{frontmatter:en,toc:on,texts:vn,demos:Pt},"./docs/en-US/handbook/data-modeling/collection-fields/associations/index":{frontmatter:Gt,toc:Et,texts:Rt,demos:pn},"./docs/en-US/manual/ui/fields/association-components/record-picker/index":{frontmatter:Dt,toc:Ht,texts:ot,demos:it},"./docs/en-US/handbook/data-modeling/collection-fields/datetime/datetime":{frontmatter:Jt,toc:Cn,texts:Qn,demos:Wt},"./docs/en-US/handbook/data-modeling/collection-fields/geometric/polygon":{frontmatter:Io,toc:jn,texts:An,demos:Fn},"./docs/en-US/manual/ui/fields/association-components/file-manager/index":{frontmatter:Ft,toc:In,texts:cn,demos:Hn},"./docs/en-US/plugin-samples/router/add-setting-page-layout-routes/index":{frontmatter:En,toc:sn,texts:Dn,demos:Pn},"./docs/en-US/plugins/client/user/ui-designer/actions/submit-to-workflow":{frontmatter:Wn,toc:To,texts:Co,demos:ho},"./docs/en-US/handbook/data-modeling/collection-fields/advanced/nano-id":{frontmatter:On,toc:fo,texts:nn,demos:_o},"./docs/en-US/handbook/data-modeling/collection-fields/choices/checkbox":{frontmatter:Ie,toc:xe,texts:ve,demos:Jn},"./docs/en-US/handbook/data-modeling/collection-fields/geometric/circle":{frontmatter:$e,toc:ia,texts:ua,demos:Ue},"./docs/en-US/plugin-samples/router/add-setting-page-single-route/index":{frontmatter:ga,toc:Ea,texts:$a,demos:Ca},"./docs/en-US/handbook/data-modeling/collection-fields/geometric/point":{frontmatter:O,toc:N,texts:j,demos:Va},"./docs/en-US/handbook/data-modeling/collection-fields/media/rich-text":{frontmatter:Pe,toc:Le,texts:Fe,demos:de},"./docs/en-US/manual/ui/fields/association-components/sub-detail/index":{frontmatter:Ve,toc:f,texts:ka,demos:je},"./docs/en-US/plugin-samples/router/add-setting-page-tabs-routes/index":{frontmatter:Aa,toc:Na,texts:Ja,demos:Ra},"./docs/en-US/welcome/getting-started/installation/create-nocobase-app":{frontmatter:bn,toc:zt,texts:mn,demos:dn},"./docs/en-US/handbook/client/user/ui-designer/actions/custom-request":{frontmatter:Zn,toc:Xn,texts:eo,demos:_n},"./docs/en-US/handbook/data-modeling/collection-fields/basic/password":{frontmatter:to,toc:yo,texts:no,demos:Vn},"./docs/en-US/handbook/data-modeling/collection-fields/basic/textarea":{frontmatter:Kn,toc:ur,texts:Sn,demos:so},"./docs/en-US/handbook/data-modeling/collection-fields/choices/select":{frontmatter:ao,toc:Ao,texts:Jo,demos:un},"./docs/en-US/handbook/data-modeling/collection-fields/datetime/index":{frontmatter:br,toc:Dr,texts:oo,demos:$o},"./docs/en-US/handbook/data-modeling/collection-fields/geometric/line":{frontmatter:Yn,toc:Eo,texts:Oo,demos:yn},"./docs/en-US/handbook/data-modeling/collection-fields/media/markdown":{frontmatter:It,toc:et,texts:Rn,demos:vo},"./docs/en-US/manual/collection/collection-templates/expression/index":{frontmatter:co,toc:wo,texts:Ro,demos:lo},"./docs/en-US/manual/ui/fields/association-components/sub-table/index":{frontmatter:lr,toc:md,texts:ar,demos:Go},"./docs/en-US/plugin-samples/plugin-settings/table-multiple-add-forms":{frontmatter:td,toc:Tr,texts:jr,demos:hd},"./docs/en-US/api/database/relation-repository/belongs-to-repository":{frontmatter:zd,toc:fd,texts:di,demos:Nd},"./docs/en-US/handbook/client/user/ui-designer/actions/update-record":{frontmatter:gd,toc:ii,texts:bd,demos:xd},"./docs/en-US/handbook/data-modeling/collection-fields/advanced/json":{frontmatter:zo,toc:nd,texts:od,demos:li},"./docs/en-US/handbook/data-modeling/collection-fields/advanced/sort":{frontmatter:ci,toc:Hr,texts:al,demos:Fd},"./docs/en-US/handbook/data-modeling/collection-fields/advanced/uuid":{frontmatter:ui,toc:ro,texts:Vo,demos:si},"./docs/en-US/handbook/data-modeling/collection-fields/basic/integer":{frontmatter:Ir,toc:Ic,texts:tl,demos:pr},"./docs/en-US/handbook/data-modeling/collection-fields/basic/percent":{frontmatter:pi,toc:yd,texts:_c,demos:Bd},"./docs/en-US/handbook/data-modeling/collection-fields/datetime/date":{frontmatter:tu,toc:vc,texts:Ii,demos:au},"./docs/en-US/handbook/data-modeling/collection-fields/datetime/time":{frontmatter:nl,toc:ol,texts:rl,demos:_i},"./docs/en-US/manual/ui/fields/association-components/sub-form/index":{frontmatter:nu,toc:mc,texts:ou,demos:dl},"./docs/en-US/plugins/client/user/ui-designer/actions/custom-request":{frontmatter:il,toc:Or,texts:hc,demos:ru},"./docs/en-US/plugins/collection-manager/user/field-interfaces/index":{frontmatter:Cr,toc:jd,texts:Rr,demos:wd},"./docs/en-US/welcome/getting-started/deployment/create-nocobase-app":{frontmatter:du,toc:iu,texts:rd,demos:ll},"./docs/en-US/development/server/resources-actions-v2/configuration":{frontmatter:kd,toc:vi,texts:cl,demos:Hd},"./docs/en-US/handbook/data-modeling/collection-fields/basic/number":{frontmatter:Wr,toc:mo,texts:uo,demos:Sd},"./docs/en-US/handbook/ui/actions/action-settings/affter-successful":{frontmatter:Ko,toc:tr,texts:dd,demos:$r},"./docs/en-US/handbook/ui/blocks/other-blocks/workflow-manual-todos":{frontmatter:nr,toc:mi,texts:fc,demos:Ud},"./docs/en-US/manual/collection/collection-templates/calender/index":{frontmatter:hi,toc:gc,texts:Mr,demos:xc},"./docs/en-US/manual/ui/fields/association-components/summary/index":{frontmatter:sl,toc:bc,texts:lu,demos:fi},"./docs/en-US/plugin-samples/schema-initializer/configure-fields-bk":{frontmatter:cu,toc:yr,texts:xi,demos:Gr},"./docs/en-US/plugins/client/user/ui-designer/actions/update-record":{frontmatter:Pd,toc:ul,texts:pl,demos:gi},"./docs/en-US/welcome/getting-started/upgrading/create-nocobase-app":{frontmatter:_l,toc:Td,texts:_r,demos:Il},"./docs/en-US/api/database/relation-repository/has-many-repository":{frontmatter:Vr,toc:vl,texts:yc,demos:wr},"./docs/en-US/handbook/client/user/ui-designer/actions/save-record":{frontmatter:Kr,toc:bi,texts:wc,demos:Lr},"./docs/en-US/handbook/data-modeling/collection-fields/basic/color":{frontmatter:kc,toc:Sc,texts:ml,demos:yi},"./docs/en-US/handbook/data-modeling/collection-fields/basic/email":{frontmatter:Uc,toc:Pc,texts:Tc,demos:wi},"./docs/en-US/handbook/data-modeling/collection-fields/basic/input":{frontmatter:Cd,toc:Ad,texts:ki,demos:hl},"./docs/en-US/handbook/data-modeling/collection-fields/basic/phone":{frontmatter:vr,toc:mr,texts:id,demos:Si},"./docs/en-US/manual/collection/collection-templates/general/index":{frontmatter:zr,toc:ld,texts:Cc,demos:Nr},"./docs/en-US/manual/ui/fields/association-components/select/index":{frontmatter:xl,toc:cr,texts:or,demos:fl},"./docs/en-US/api/database/relation-repository/has-one-repository":{frontmatter:kr,toc:Ac,texts:qc,demos:xo},"./docs/en-US/development/server/resources-actions-v2/to-resource":{frontmatter:bl,toc:Ec,texts:Wd,demos:gl},"./docs/en-US/handbook/client/user/ui-designer/actions/add-record":{frontmatter:yl,toc:$d,texts:Ui,demos:qd},"./docs/en-US/handbook/client/user/ui-designer/actions/open-popup":{frontmatter:Oc,toc:Ed,texts:Rc,demos:Dc},"./docs/en-US/handbook/data-modeling/collection-fields/basic/icon":{frontmatter:Ar,toc:Vd,texts:Kd,demos:Gd},"./docs/en-US/handbook/notification-manager/development/extension":{frontmatter:wl,toc:Dd,texts:Mc,demos:cd},"./docs/en-US/manual/ui/fields/association-components/title/index":{frontmatter:ko,toc:Pi,texts:Sl,demos:kl},"./docs/en-US/plugin-samples/schema-initailizer/add-item-to-block":{frontmatter:Ti,toc:Pl,texts:sd,demos:Ul},"./docs/en-US/plugin-samples/schema-initializer/configure-actions":{frontmatter:Mo,toc:Fo,texts:Ci,demos:So},"./docs/en-US/plugins/client/user/ui-designer/actions/save-record":{frontmatter:Yd,toc:su,texts:Zo,demos:Zd},"./docs/en-US/welcome/getting-started/installation/docker-compose":{frontmatter:Cl,toc:Al,texts:qr,demos:Tl},"./docs/en-US/development/server/collections/collection-template":{frontmatter:Qd,toc:ql,texts:El,demos:hr},"./docs/en-US/handbook/client/user/ui-designer/actions/duplicate":{frontmatter:Nc,toc:zc,texts:Fc,demos:Lc},"./docs/en-US/handbook/data-modeling/collection-fields/basic/url":{frontmatter:jc,toc:Hc,texts:Jd,demos:Bc},"./docs/en-US/handbook/ui/fields/field-settings/edit-description":{frontmatter:Ai,toc:qi,texts:$c,demos:Wc},"./docs/en-US/handbook/ui/fields/field-settings/validation-rules":{frontmatter:Gc,toc:Vc,texts:Kc,demos:Dl},"./docs/en-US/plugin-samples/schema-initializer/block-data-modal":{frontmatter:Ol,toc:Yc,texts:Qc,demos:Zc},"./docs/en-US/plugin-samples/schema-initializer/configure-fields":{frontmatter:uu,toc:Xc,texts:pu,demos:Jc},"./docs/en-US/plugins/client/user/ui-designer/actions/add-record":{frontmatter:es,toc:as,texts:ts,demos:Iu},"./docs/en-US/plugins/client/user/ui-designer/actions/open-popup":{frontmatter:Ei,toc:_u,texts:vu,demos:ns},"./docs/en-US/development/server/collections/association-fields":{frontmatter:Rl,toc:Ml,texts:hu,demos:mu},"./docs/en-US/development/server/resources-actions-v2/vs-router":{frontmatter:rs,toc:ds,texts:is,demos:os},"./docs/en-US/handbook/data-visualization/antd-charts/dual-axes":{frontmatter:cs,toc:Ll,texts:ss,demos:ls},"./docs/en-US/handbook/data-visualization/echarts/diverging-bar":{frontmatter:Xd,toc:Yo,texts:fu,demos:us},"./docs/en-US/handbook/ui/actions/action-settings/assign-values":{frontmatter:rr,toc:Xo,texts:ps,demos:xu},"./docs/en-US/handbook/ui/actions/action-settings/bind-workflow":{frontmatter:_s,toc:vs,texts:ms,demos:Is},"./docs/en-US/handbook/ui/blocks/other-blocks/workflow-approval":{frontmatter:hs,toc:zl,texts:fs,demos:Nl},"./docs/en-US/handbook/ui/fields/field-settings/field-component":{frontmatter:Di,toc:Oi,texts:gs,demos:xs},"./docs/en-US/manual/collection/collection-fdw/enable-federated":{frontmatter:Fl,toc:ys,texts:ws,demos:bs},"./docs/en-US/manual/collection/collection-templates/file/index":{frontmatter:ks,toc:Bl,texts:Ss,demos:Ri},"./docs/en-US/manual/collection/collection-templates/tree/index":{frontmatter:gu,toc:bu,texts:Mi,demos:Fr},"./docs/en-US/manual/collection/collection-templates/view/index":{frontmatter:yu,toc:mt,texts:Od,demos:Qo},"./docs/en-US/manual/ui/fields/association-components/tag/index":{frontmatter:Us,toc:wu,texts:ei,demos:jl},"./docs/en-US/plugins/client/user/ui-designer/actions/duplicate":{frontmatter:Hl,toc:Ps,texts:Ts,demos:Li},"./docs/en-US/plugins/workflow/manual/nodes/dynamic-calculation":{frontmatter:Wl,toc:$l,texts:Ho,demos:Cs},"./docs/en-US/welcome/getting-started/deployment/docker-compose":{frontmatter:Zr,toc:As,texts:qs,demos:Sr},"./docs/en-US/development/server/resources-actions-v2/rest-api":{frontmatter:Es,toc:Er,texts:ku,demos:Ur},"./docs/en-US/handbook/client/user/ui-designer/actions/add-new":{frontmatter:Os,toc:Rs,texts:Ms,demos:Ds},"./docs/en-US/handbook/client/user/ui-designer/actions/refresh":{frontmatter:Ni,toc:Gl,texts:fr,demos:Su},"./docs/en-US/handbook/data-source-main/inheritance-collection":{frontmatter:Lo,toc:Do,texts:Wo,demos:Bn},"./docs/en-US/handbook/data-visualization/antd-charts/overview":{frontmatter:Rd,toc:No,texts:ai,demos:sr},"./docs/en-US/handbook/ui/actions/action-settings/double-check":{frontmatter:zi,toc:Vl,texts:ti,demos:ud},"./docs/en-US/handbook/ui/actions/action-settings/linkage-rule":{frontmatter:Kl,toc:Md,texts:Br,demos:dr},"./docs/en-US/handbook/ui/blocks/block-settings/block-template":{frontmatter:Zl,toc:Yr,texts:Bi,demos:Fi},"./docs/en-US/handbook/workflow-custom-action-trigger/http-api":{frontmatter:ji,toc:ni,texts:Yl,demos:Qr},"./docs/en-US/handbook/workflow-dynamic-calculation/collection":{frontmatter:Wi,toc:er,texts:Jr,demos:Hi},"./docs/en-US/manual/collection/collection-templates/sql/index":{frontmatter:$i,toc:Ls,texts:ir,demos:xr},"./docs/en-US/welcome/getting-started/upgrading/docker-compose":{frontmatter:Ql,toc:Jl,texts:Uu,demos:Ns},"./docs/en-US/handbook/client/user/ui-designer/actions/delete":{frontmatter:zs,toc:Xl,texts:pd,demos:Xr},"./docs/en-US/handbook/client/user/ui-designer/actions/export":{frontmatter:Id,toc:Fs,texts:Bs,demos:ec},"./docs/en-US/handbook/client/user/ui-designer/actions/filter":{frontmatter:Gi,toc:Pu,texts:Tu,demos:ac},"./docs/en-US/handbook/client/user/ui-designer/actions/import":{frontmatter:Hs,toc:_d,texts:Cu,demos:js},"./docs/en-US/handbook/client/user/ui-designer/actions/submit":{frontmatter:Ws,toc:Po,texts:Au,demos:Ld},"./docs/en-US/handbook/data-visualization/antd-charts/scatter":{frontmatter:qu,toc:Eu,texts:Gs,demos:$s},"./docs/en-US/handbook/ui/actions/action-settings/edit-button":{frontmatter:Du,toc:gr,texts:tc,demos:Vs},"./docs/en-US/handbook/ui/blocks/block-settings/connect-block":{frontmatter:ed,toc:Vi,texts:vd,demos:Ou},"./docs/en-US/handbook/ui/fields/field-settings/default-value":{frontmatter:nc,toc:oc,texts:Ru,demos:Ki},"./docs/en-US/handbook/ui/fields/field-settings/display-title":{frontmatter:Mu,toc:Ks,texts:Zs,demos:rc},"./docs/en-US/handbook/ui/fields/field-settings/number-format":{frontmatter:Yi,toc:Ys,texts:dc,demos:Zi},"./docs/en-US/handbook/ui/fields/generic/filter-collapse-item":{frontmatter:Qs,toc:ic,texts:Qi,demos:Lu},"./docs/en-US/handbook/workflow-custom-action-trigger/example":{frontmatter:Ji,toc:Js,texts:Nu,demos:lc},"./docs/en-US/handbook/workflow-custom-action-trigger/trigger":{frontmatter:zu,toc:oi,texts:Fu,demos:Xi},"./docs/en-US/plugin-samples/schema-initializer/action-simple":{frontmatter:a,toc:t,texts:d,demos:el},"./docs/en-US/plugins/client/user/ui-designer/actions/add-new":{frontmatter:A,toc:M,texts:re,demos:x},"./docs/en-US/plugins/client/user/ui-designer/actions/refresh":{frontmatter:Re,toc:ea,texts:Ta,demos:ye},"./docs/en-US/development/client/ui-schema/what-is-ui-schema":{frontmatter:_a,toc:_t,texts:Xa,demos:at},"./docs/en-US/development/server/collections/field-extension":{frontmatter:qo,toc:Ke,texts:Ne,demos:ln},"./docs/en-US/handbook/client/user/ui-designer/actions/index":{frontmatter:za,toc:gt,texts:Bt,demos:Xe},"./docs/en-US/handbook/client/user/ui-designer/actions/print":{frontmatter:an,toc:Bo,texts:$n,demos:jt},"./docs/en-US/handbook/data-modeling/collection-fields/index":{frontmatter:Bu,toc:cp,texts:sp,demos:ad},"./docs/en-US/handbook/data-source-manager/external-database":{frontmatter:pp,toc:Ip,texts:_p,demos:up},"./docs/en-US/handbook/data-visualization/antd-charts/column":{frontmatter:mp,toc:hp,texts:fp,demos:vp},"./docs/en-US/handbook/data-visualization/step-by-step/index":{frontmatter:gp,toc:bp,texts:yp,demos:xp},"./docs/en-US/handbook/ui/actions/action-settings/popup-size":{frontmatter:kp,toc:Sp,texts:Up,demos:wp},"./docs/en-US/handbook/ui/blocks/block-settings/block-delete":{frontmatter:Tp,toc:Cp,texts:Ap,demos:Pp},"./docs/en-US/handbook/ui/blocks/block-settings/block-height":{frontmatter:Ep,toc:Dp,texts:Op,demos:qp},"./docs/en-US/handbook/ui/blocks/block-settings/block-layout":{frontmatter:Mp,toc:Lp,texts:Np,demos:Rp},"./docs/en-US/handbook/ui/blocks/block-settings/linkage-rule":{frontmatter:Fp,toc:Bp,texts:jp,demos:zp},"./docs/en-US/handbook/ui/blocks/block-settings/loading-mode":{frontmatter:Wp,toc:$p,texts:Gp,demos:Hp},"./docs/en-US/handbook/ui/blocks/block-settings/sorting-rule":{frontmatter:Kp,toc:Zp,texts:Yp,demos:Vp},"./docs/en-US/handbook/ui/fields/field-settings/edit-tooltip":{frontmatter:Jp,toc:Xp,texts:eI,demos:Qp},"./docs/en-US/handbook/ui/fields/generic/bulk-edit-form-item":{frontmatter:tI,toc:nI,texts:oI,demos:aI},"./docs/en-US/handbook/workflow-custom-action-trigger/action":{frontmatter:dI,toc:iI,texts:lI,demos:rI},"./docs/en-US/handbook/workflow-request-interceptor/advanced":{frontmatter:sI,toc:uI,texts:pI,demos:cI},"./docs/en-US/handbook/workflow-request-interceptor/http-api":{frontmatter:_I,toc:vI,texts:mI,demos:II},"./docs/en-US/plugin-samples/schema-initializer/action-modal":{frontmatter:fI,toc:xI,texts:gI,demos:hI},"./docs/en-US/plugin-samples/schema-initializer/block-simple":{frontmatter:yI,toc:wI,texts:kI,demos:bI},"./docs/en-US/plugins/client/user/ui-designer/actions/delete":{frontmatter:UI,toc:PI,texts:TI,demos:SI},"./docs/en-US/plugins/client/user/ui-designer/actions/export":{frontmatter:AI,toc:qI,texts:EI,demos:CI},"./docs/en-US/plugins/client/user/ui-designer/actions/filter":{frontmatter:OI,toc:RI,texts:MI,demos:DI},"./docs/en-US/plugins/client/user/ui-designer/actions/import":{frontmatter:NI,toc:zI,texts:FI,demos:LI},"./docs/en-US/plugins/client/user/ui-designer/actions/submit":{frontmatter:jI,toc:HI,texts:WI,demos:BI},"./docs/en-US/welcome/getting-started/installation/git-clone":{frontmatter:GI,toc:VI,texts:KI,demos:$I},"./docs/en-US/api/client/schema-designer/schema-initializer":{frontmatter:YI,toc:QI,texts:JI,demos:ZI},"./docs/en-US/development/server/resources-actions-v2/index":{frontmatter:e_,toc:a_,texts:t_,demos:XI},"./docs/en-US/handbook/client/user/ui-designer/actions/edit":{frontmatter:o_,toc:r_,texts:d_,demos:n_},"./docs/en-US/handbook/client/user/ui-designer/actions/view":{frontmatter:l_,toc:c_,texts:s_,demos:i_},"./docs/en-US/handbook/client/user/ui-designer/blocks/index":{frontmatter:p_,toc:I_,texts:__,demos:u_},"./docs/en-US/handbook/client/user/ui-designer/fields/index":{frontmatter:m_,toc:h_,texts:f_,demos:v_},"./docs/en-US/handbook/data-visualization/echarts/wordcloud":{frontmatter:g_,toc:b_,texts:y_,demos:x_},"./docs/en-US/handbook/notification-manager/development/api":{frontmatter:k_,toc:S_,texts:U_,demos:w_},"./docs/en-US/handbook/ui/actions/action-settings/open-mode":{frontmatter:T_,toc:C_,texts:A_,demos:P_},"./docs/en-US/handbook/ui/blocks/block-settings/block-title":{frontmatter:E_,toc:D_,texts:O_,demos:q_},"./docs/en-US/handbook/ui/fields/field-settings/title-field":{frontmatter:M_,toc:L_,texts:N_,demos:R_},"./docs/en-US/handbook/workflow-custom-action-trigger/index":{frontmatter:F_,toc:B_,texts:j_,demos:z_},"./docs/en-US/handbook/workflow-dynamic-calculation/example":{frontmatter:W_,toc:$_,texts:G_,demos:H_},"./docs/en-US/handbook/workflow-request-interceptor/example":{frontmatter:K_,toc:Z_,texts:Y_,demos:V_},"./docs/en-US/handbook/workflow-request-interceptor/trigger":{frontmatter:J_,toc:X_,texts:ev,demos:Q_},"./docs/en-US/manual/ui/fields/association-components/index":{frontmatter:tv,toc:nv,texts:ov,demos:av},"./docs/en-US/plugins/client/user/ui-designer/actions/index":{frontmatter:dv,toc:iv,texts:lv,demos:rv},"./docs/en-US/plugins/client/user/ui-designer/actions/print":{frontmatter:sv,toc:uv,texts:pv,demos:cv},"./docs/en-US/plugins/data-visualization/step-by-step/index":{frontmatter:_v,toc:vv,texts:mv,demos:Iv},"./docs/en-US/api/data-source-manager/i-collection-manager":{frontmatter:fv,toc:xv,texts:gv,demos:hv},"./docs/en-US/handbook/client/user/ui-designer/menus/index":{frontmatter:yv,toc:wv,texts:kv,demos:bv},"./docs/en-US/handbook/client/user/ui-designer/pages/index":{frontmatter:Uv,toc:Pv,texts:Tv,demos:Sv},"./docs/en-US/handbook/data-source-external-postgres/index":{frontmatter:Av,toc:qv,texts:Ev,demos:Cv},"./docs/en-US/handbook/data-source-main/general-collection":{frontmatter:Ov,toc:Rv,texts:Mv,demos:Dv},"./docs/en-US/handbook/data-visualization/antd-charts/line":{frontmatter:Nv,toc:zv,texts:Fv,demos:Lv},"./docs/en-US/handbook/data-visualization/echarts/overview":{frontmatter:jv,toc:Hv,texts:Wv,demos:Bv},"./docs/en-US/handbook/data-visualization/user/chart-block":{frontmatter:Gv,toc:Vv,texts:Kv,demos:$v},"./docs/en-US/handbook/ui/blocks/block-settings/data-scope":{frontmatter:Yv,toc:Qv,texts:Jv,demos:Zv},"./docs/en-US/handbook/ui/fields/field-settings/data-scope":{frontmatter:em,toc:am,texts:tm,demos:Xv},"./docs/en-US/handbook/ui/fields/field-settings/edit-title":{frontmatter:om,toc:rm,texts:dm,demos:nm},"./docs/en-US/handbook/workflow-request-interceptor/action":{frontmatter:lm,toc:cm,texts:sm,demos:im},"./docs/en-US/manual/collection/collection-templates/index":{frontmatter:pm,toc:Im,texts:_m,demos:um},"./docs/en-US/plugin-samples/schema-initializer/block-data":{frontmatter:mm,toc:hm,texts:fm,demos:vm},"./docs/en-US/plugins/client/user/ui-designer/actions/edit":{frontmatter:gm,toc:bm,texts:ym,demos:xm},"./docs/en-US/plugins/client/user/ui-designer/actions/view":{frontmatter:km,toc:Sm,texts:Um,demos:wm},"./docs/en-US/plugins/client/user/ui-designer/blocks/index":{frontmatter:Tm,toc:Cm,texts:Am,demos:Pm},"./docs/en-US/plugins/client/user/ui-designer/fields/index":{frontmatter:Em,toc:Dm,texts:Om,demos:qm},"./docs/en-US/welcome/getting-started/deployment/git-clone":{frontmatter:Mm,toc:Lm,texts:Nm,demos:Rm},"./docs/en-US/api/client/schema-designer/schema-component":{frontmatter:Fm,toc:Bm,texts:jm,demos:zm},"./docs/en-US/handbook/data-source-external-mariadb/index":{frontmatter:Wm,toc:$m,texts:Gm,demos:Hm},"./docs/en-US/handbook/data-visualization/antd-charts/bar":{frontmatter:Km,toc:Zm,texts:Ym,demos:Vm},"./docs/en-US/handbook/data-visualization/antd-charts/pie":{frontmatter:Jm,toc:Xm,texts:eh,demos:Qm},"./docs/en-US/handbook/data-visualization/echarts/scatter":{frontmatter:th,toc:nh,texts:oh,demos:ah},"./docs/en-US/handbook/data-visualization/echarts/treemap":{frontmatter:dh,toc:ih,texts:lh,demos:rh},"./docs/en-US/handbook/ui/fields/generic/detail-form-item":{frontmatter:sh,toc:uh,texts:ph,demos:ch},"./docs/en-US/handbook/ui/fields/generic/filter-form-item":{frontmatter:_h,toc:vh,texts:mh,demos:Ih},"./docs/en-US/handbook/workflow/nodes/dynamic-calculation":{frontmatter:fh,toc:xh,texts:gh,demos:hh},"./docs/en-US/handbook/workflow-dynamic-calculation/index":{frontmatter:yh,toc:wh,texts:kh,demos:bh},"./docs/en-US/handbook/workflow-request-interceptor/index":{frontmatter:Uh,toc:Ph,texts:Th,demos:Sh},"./docs/en-US/manual/plugin-manager/plugin-settings/index":{frontmatter:Ah,toc:qh,texts:Eh,demos:Ch},"./docs/en-US/plugins/client/user/ui-designer/menus/index":{frontmatter:Oh,toc:Rh,texts:Mh,demos:Dh},"./docs/en-US/plugins/client/user/ui-designer/pages/index":{frontmatter:Nh,toc:zh,texts:Fh,demos:Lh},"./docs/en-US/plugins/data-visualization/user/chart-block":{frontmatter:jh,toc:Hh,texts:Wh,demos:Bh},"./docs/en-US/plugins/workflow/manual/triggers/collection":{frontmatter:Gh,toc:Vh,texts:Kh,demos:$h},"./docs/en-US/welcome/getting-started/deployment/env-note":{frontmatter:Yh,toc:Qh,texts:Jh,demos:Zh},"./docs/en-US/welcome/getting-started/upgrading/git-clone":{frontmatter:ef,toc:af,texts:tf,demos:Xh},"./docs/en-US/api/client/schema-designer/schema-settings":{frontmatter:of,toc:rf,texts:df,demos:nf},"./docs/en-US/handbook/client/user/plugin-settings/index":{frontmatter:cf,toc:sf,texts:uf,demos:lf},"./docs/en-US/handbook/data-visualization/antd/statistic":{frontmatter:If,toc:_f,texts:vf,demos:pf},"./docs/en-US/handbook/data-visualization/echarts/column":{frontmatter:hf,toc:ff,texts:xf,demos:mf},"./docs/en-US/handbook/data-visualization/echarts/funnel":{frontmatter:bf,toc:yf,texts:wf,demos:gf},"./docs/en-US/handbook/data-visualization/user/configure":{frontmatter:Sf,toc:Uf,texts:Pf,demos:kf},"./docs/en-US/handbook/notification-in-app-message/index":{frontmatter:Cf,toc:Af,texts:qf,demos:Tf},"./docs/en-US/handbook/system-settings/language-settings":{frontmatter:Df,toc:Of,texts:Rf,demos:Ef},"./docs/en-US/handbook/ui/actions/types/trigger-workflow":{frontmatter:Lf,toc:Nf,texts:zf,demos:Mf},"./docs/en-US/handbook/ui/fields/field-settings/required":{frontmatter:Bf,toc:jf,texts:Hf,demos:Ff},"./docs/en-US/handbook/ui/fields/specific/cascade-select":{frontmatter:$f,toc:Gf,texts:Vf,demos:Wf},"./docs/en-US/handbook/ui/fields/specific/popover-nester":{frontmatter:Zf,toc:Yf,texts:Qf,demos:Kf},"./docs/en-US/handbook/workflow-dynamic-calculation/node":{frontmatter:Xf,toc:ex,texts:ax,demos:Jf},"./docs/en-US/manual/plugin-manager/plugin-manager/index":{frontmatter:nx,toc:ox,texts:rx,demos:tx},"./docs/en-US/plugins/workflow-dynamic-calculation/index":{frontmatter:ix,toc:lx,texts:cx,demos:dx},"./docs/en-US/welcome/getting-started/installation/index":{frontmatter:ux,toc:px,texts:Ix,demos:sx},"./docs/en-US/handbook/client/user/plugin-manager/index":{frontmatter:vx,toc:mx,texts:hx,demos:_x},"./docs/en-US/handbook/collection-expression/collection":{frontmatter:xx,toc:gx,texts:bx,demos:fx},"./docs/en-US/handbook/data-source-external-mssql/index":{frontmatter:wx,toc:kx,texts:Sx,demos:yx},"./docs/en-US/handbook/data-source-external-mysql/index":{frontmatter:Px,toc:Tx,texts:Cx,demos:Ux},"./docs/en-US/handbook/data-visualization/antd/overview":{frontmatter:qx,toc:Ex,texts:Dx,demos:Ax},"./docs/en-US/handbook/data-visualization/echarts/radar":{frontmatter:Rx,toc:Mx,texts:Lx,demos:Ox},"./docs/en-US/handbook/file-manager/storage/tencent-cos":{frontmatter:zx,toc:Fx,texts:Bx,demos:Nx},"./docs/en-US/handbook/ui/blocks/filter-blocks/collapse":{frontmatter:Hx,toc:Wx,texts:$x,demos:jx},"./docs/en-US/handbook/ui/fields/field-settings/pattern":{frontmatter:Vx,toc:Kx,texts:Zx,demos:Gx},"./docs/en-US/handbook/workflow/development/instruction":{frontmatter:Qx,toc:Jx,texts:Xx,demos:Yx},"./docs/en-US/handbook/workflow-action-trigger/http-api":{frontmatter:ag,toc:tg,texts:ng,demos:eg},"./docs/en-US/manual/workflow/nodes/dynamic-calculation":{frontmatter:rg,toc:dg,texts:ig,demos:og},"./docs/en-US/plugin-samples/component-and-scope/global":{frontmatter:cg,toc:sg,texts:ug,demos:lg},"./docs/en-US/plugins/client/user/plugin-settings/index":{frontmatter:Ig,toc:_g,texts:vg,demos:pg},"./docs/en-US/plugins/data-visualization/user/configure":{frontmatter:hg,toc:fg,texts:xg,demos:mg},"./docs/en-US/plugins/workflow/manual/nodes/calculation":{frontmatter:bg,toc:yg,texts:wg,demos:gg},"./docs/en-US/plugins/workflow/manual/triggers/schedule":{frontmatter:Sg,toc:Ug,texts:Pg,demos:kg},"./docs/en-US/api/client/extensions/collection-manager":{frontmatter:Cg,toc:Ag,texts:qg,demos:Tg},"./docs/en-US/development/client/ui-schema/initializer":{frontmatter:Dg,toc:Og,texts:Rg,demos:Eg},"./docs/en-US/development/client/ui-schema/quick-start":{frontmatter:Lg,toc:Ng,texts:zg,demos:Mg},"./docs/en-US/development/server/collections/configure":{frontmatter:Bg,toc:jg,texts:Hg,demos:Fg},"./docs/en-US/handbook/collection-fdw/enable-federated":{frontmatter:$g,toc:Gg,texts:Vg,demos:Wg},"./docs/en-US/handbook/data-visualization/block-charts":{frontmatter:Zg,toc:Yg,texts:Qg,demos:Kg},"./docs/en-US/handbook/data-visualization/echarts/area":{frontmatter:Xg,toc:e1,texts:a1,demos:Jg},"./docs/en-US/handbook/data-visualization/echarts/line":{frontmatter:n1,toc:o1,texts:r1,demos:t1},"./docs/en-US/handbook/file-manager/storage/aliyun-oss":{frontmatter:i1,toc:l1,texts:c1,demos:d1},"./docs/en-US/handbook/ui/blocks/data-blocks/grid-card":{frontmatter:u1,toc:p1,texts:I1,demos:s1},"./docs/en-US/handbook/ui/blocks/other-blocks/markdown":{frontmatter:v1,toc:m1,texts:h1,demos:_1},"./docs/en-US/handbook/ui/fields/specific/file-manager":{frontmatter:x1,toc:g1,texts:b1,demos:f1},"./docs/en-US/handbook/workflow/nodes/date-calculation":{frontmatter:w1,toc:k1,texts:S1,demos:y1},"./docs/en-US/handbook/workflow/nodes/response-message":{frontmatter:P1,toc:T1,texts:C1,demos:U1},"./docs/en-US/handbook/workflow/triggers/custom-action":{frontmatter:q1,toc:E1,texts:D1,demos:A1},"./docs/en-US/handbook/workflow-action-trigger/example":{frontmatter:R1,toc:M1,texts:L1,demos:O1},"./docs/en-US/handbook/workflow-action-trigger/trigger":{frontmatter:z1,toc:F1,texts:B1,demos:N1},"./docs/en-US/handbook/workflow-date-calculation/index":{frontmatter:H1,toc:W1,texts:$1,demos:j1},"./docs/en-US/handbook/workflow-response-message/index":{frontmatter:V1,toc:K1,texts:Z1,demos:G1},"./docs/en-US/plugin-samples/component-and-scope/index":{frontmatter:Q1,toc:J1,texts:X1,demos:Y1},"./docs/en-US/plugin-samples/component-and-scope/local":{frontmatter:ab,toc:tb,texts:nb,demos:eb},"./docs/en-US/plugin-samples/router/replace-page/index":{frontmatter:rb,toc:db,texts:ib,demos:ob},"./docs/en-US/plugins/client/user/plugin-manager/index":{frontmatter:cb,toc:sb,texts:ub,demos:lb},"./docs/en-US/plugins/workflow/development/instruction":{frontmatter:Ib,toc:_b,texts:vb,demos:pb},"./docs/en-US/welcome/getting-started/deployment/index":{frontmatter:hb,toc:fb,texts:xb,demos:mb},"./docs/en-US/development/client/ui-schema/components":{frontmatter:bb,toc:yb,texts:wb,demos:gb},"./docs/en-US/development/client/ui-schema/designable":{frontmatter:Pb,toc:Tb,texts:Cb,demos:Ub},"./docs/en-US/handbook/data-visualization/echarts/bar":{frontmatter:qb,toc:Eb,texts:Db,demos:Ab},"./docs/en-US/handbook/data-visualization/echarts/pie":{frontmatter:Rb,toc:Mb,texts:Lb,demos:Ob},"./docs/en-US/handbook/data-visualization/user/filter":{frontmatter:zb,toc:Fb,texts:Bb,demos:Nb},"./docs/en-US/handbook/file-manager/development/index":{frontmatter:Hb,toc:Wb,texts:$b,demos:jb},"./docs/en-US/handbook/file-manager/storage/amazon-s3":{frontmatter:Vb,toc:Kb,texts:Zb,demos:Gb},"./docs/en-US/handbook/graph-collection-manager/index":{frontmatter:Qb,toc:Jb,texts:Xb,demos:Yb},"./docs/en-US/handbook/ui/actions/types/update-record":{frontmatter:a2,toc:t2,texts:n2,demos:e2},"./docs/en-US/handbook/ui/fields/field-settings/style":{frontmatter:r2,toc:d2,texts:i2,demos:o2},"./docs/en-US/handbook/ui/fields/generic/table-column":{frontmatter:c2,toc:s2,texts:u2,demos:l2},"./docs/en-US/handbook/ui/fields/specific/date-picker":{frontmatter:I2,toc:_2,texts:v2,demos:p2},"./docs/en-US/handbook/workflow-action-trigger/action":{frontmatter:h2,toc:f2,texts:x2,demos:m2},"./docs/en-US/plugin-samples/schema-initailizer/index":{frontmatter:b2,toc:y2,texts:w2,demos:g2},"./docs/en-US/plugin-samples/schema-initializer/index":{frontmatter:S2,toc:U2,texts:P2,demos:k2},"./docs/en-US/plugin-samples/schema-settings/add-item":{frontmatter:C2,toc:A2,texts:q2,demos:T2},"./docs/en-US/plugins/collection-fdw/enable-federated":{frontmatter:D2,toc:O2,texts:R2,demos:E2},"./docs/en-US/plugins/workflow/manual/nodes/aggregate":{frontmatter:L2,toc:N2,texts:z2,demos:M2},"./docs/en-US/plugins/workflow/manual/nodes/condition":{frontmatter:B2,toc:j2,texts:H2,demos:F2},"./docs/en-US/welcome/getting-started/upgrading/index":{frontmatter:$2,toc:G2,texts:V2,demos:W2},"./docs/en-US/api/client/extensions/schema-component":{frontmatter:Z2,toc:Y2,texts:Q2,demos:K2},"./docs/en-US/api/database/interfaces/base-interface":{frontmatter:X2,toc:e0,texts:a0,demos:J2},"./docs/en-US/api/database/relation-repository/index":{frontmatter:n0,toc:o0,texts:r0,demos:t0},"./docs/en-US/development/client/ui-schema/extending":{frontmatter:l0,toc:c0,texts:s0,demos:i0},"./docs/en-US/development/client/ui-schema/rendering":{frontmatter:m0,toc:h0,texts:f0,demos:v0},"./docs/en-US/development/server/collections/options":{frontmatter:g0,toc:b0,texts:y0,demos:x0},"./docs/en-US/handbook/backups/installation/postgres":{frontmatter:k0,toc:S0,texts:U0,demos:w0},"./docs/en-US/handbook/client/user/ui-designer/index":{frontmatter:T0,toc:C0,texts:A0,demos:P0},"./docs/en-US/handbook/data-visualization/antd/table":{frontmatter:E0,toc:D0,texts:O0,demos:q0},"./docs/en-US/handbook/file-manager/field-attachment":{frontmatter:M0,toc:L0,texts:N0,demos:R0},"./docs/en-US/handbook/localization-management/index":{frontmatter:F0,toc:B0,texts:j0,demos:z0},"./docs/en-US/handbook/ui/blocks/data-blocks/details":{frontmatter:W0,toc:$0,texts:G0,demos:H0},"./docs/en-US/handbook/ui/fields/specific/sub-detail":{frontmatter:K0,toc:Z0,texts:Y0,demos:V0},"./docs/en-US/handbook/workflow/triggers/post-action":{frontmatter:J0,toc:X0,texts:ey,demos:Q0},"./docs/en-US/handbook/workflow-action-trigger/index":{frontmatter:ty,toc:ny,texts:oy,demos:ay},"./docs/en-US/manual/collection/collection-fdw/index":{frontmatter:dy,toc:iy,texts:ly,demos:ry},"./docs/en-US/plugins/data-visualization/user/filter":{frontmatter:sy,toc:uy,texts:py,demos:cy},"./docs/en-US/plugins/graph-collection-manager/index":{frontmatter:_y,toc:vy,texts:my,demos:Iy},"./docs/en-US/plugins/workflow/manual/nodes/parallel":{frontmatter:fy,toc:xy,texts:gy,demos:hy},"./docs/en-US/plugins/workflow/manual/triggers/index":{frontmatter:yy,toc:wy,texts:ky,demos:by},"./docs/en-US/development/client/ui-schema/settings":{frontmatter:Uy,toc:Py,texts:Ty,demos:Sy},"./docs/en-US/development/http-api/filter-operators":{frontmatter:Ay,toc:qy,texts:Ey,demos:Cy},"./docs/en-US/development/server/collections-fields":{frontmatter:Oy,toc:Ry,texts:My,demos:Dy},"./docs/en-US/handbook/backups/installation/mariadb":{frontmatter:Ny,toc:zy,texts:Fy,demos:Ly},"./docs/en-US/handbook/calendar/calendar-collection":{frontmatter:jy,toc:Hy,texts:Wy,demos:By},"./docs/en-US/handbook/data-visualization/dev/index":{frontmatter:Gy,toc:Vy,texts:Ky,demos:$y},"./docs/en-US/handbook/file-manager/file-collection":{frontmatter:Yy,toc:Qy,texts:Jy,demos:Zy},"./docs/en-US/handbook/ui/actions/types/save-record":{frontmatter:ew,toc:aw,texts:tw,demos:Xy},"./docs/en-US/handbook/ui/blocks/filter-blocks/form":{frontmatter:ow,toc:rw,texts:dw,demos:nw},"./docs/en-US/handbook/ui/fields/specific/sub-table":{frontmatter:lw,toc:cw,texts:sw,demos:iw},"./docs/en-US/handbook/workflow/advanced/executions":{frontmatter:pw,toc:Iw,texts:_w,demos:uw},"./docs/en-US/handbook/workflow/development/trigger":{frontmatter:mw,toc:hw,texts:fw,demos:vw},"./docs/en-US/handbook/workflow/triggers/collection":{frontmatter:gw,toc:bw,texts:yw,demos:xw},"./docs/en-US/handbook/workflow/triggers/pre-action":{frontmatter:kw,toc:Sw,texts:Uw,demos:ww},"./docs/en-US/manual/data-visualization/chart-block":{frontmatter:Tw,toc:Cw,texts:Aw,demos:Pw},"./docs/en-US/plugins/client/user/ui-designer/index":{frontmatter:Ew,toc:Dw,texts:Ow,demos:qw},"./docs/en-US/plugins/client/user/user-center/index":{frontmatter:Mw,toc:Lw,texts:Nw,demos:Rw},"./docs/en-US/plugins/collection-manager/user/index":{frontmatter:Fw,toc:Bw,texts:jw,demos:zw},"./docs/en-US/plugins/localization-management/index":{frontmatter:Ww,toc:$w,texts:Gw,demos:Hw},"./docs/en-US/plugins/workflow/manual/nodes/destroy":{frontmatter:Kw,toc:Zw,texts:Yw,demos:Vw},"./docs/en-US/plugins/workflow/manual/nodes/request":{frontmatter:Jw,toc:Xw,texts:e3,demos:Qw},"./docs/en-US/plugins/workflow/manual/triggers/form":{frontmatter:t3,toc:n3,texts:o3,demos:a3},"./docs/en-US/welcome/release/v0200-changelog/index":{frontmatter:d3,toc:i3,texts:l3,demos:r3},"./docs/en-US/welcome/release/v0210-changelog/index":{frontmatter:s3,toc:u3,texts:p3,demos:c3},"./docs/en-US/api/client/extensions/block-provider":{frontmatter:_3,toc:v3,texts:m3,demos:I3},"./docs/en-US/api/data-source-manager/i-collection":{frontmatter:f3,toc:x3,texts:g3,demos:h3},"./docs/en-US/api/data-source-manager/i-repository":{frontmatter:y3,toc:w3,texts:k3,demos:b3},"./docs/en-US/development/client/styles-and-themes":{frontmatter:P3,toc:T3,texts:C3,demos:U3},"./docs/en-US/development/client/ui-schema/toolbar":{frontmatter:q3,toc:E3,texts:D3,demos:A3},"./docs/en-US/development/server/collections/index":{frontmatter:R3,toc:M3,texts:L3,demos:O3},"./docs/en-US/development/server/resources-actions":{frontmatter:z3,toc:F3,texts:B3,demos:N3},"./docs/en-US/handbook/action-custom-request/index":{frontmatter:H3,toc:W3,texts:$3,demos:j3},"./docs/en-US/handbook/field-markdown-vditor/index":{frontmatter:V3,toc:K3,texts:Z3,demos:G3},"./docs/en-US/handbook/ui/actions/types/add-record":{frontmatter:Q3,toc:J3,texts:X3,demos:Y3},"./docs/en-US/handbook/ui/blocks/data-blocks/table":{frontmatter:ak,toc:tk,texts:nk,demos:ek},"./docs/en-US/handbook/ui/fields/association-field":{frontmatter:rk,toc:dk,texts:ik,demos:ok},"./docs/en-US/handbook/ui/fields/generic/form-item":{frontmatter:ck,toc:sk,texts:uk,demos:lk},"./docs/en-US/handbook/workflow/advanced/revisions":{frontmatter:Ik,toc:_k,texts:vk,demos:pk},"./docs/en-US/handbook/workflow/advanced/variables":{frontmatter:hk,toc:fk,texts:xk,demos:mk},"./docs/en-US/manual/collection/multiple-databases":{frontmatter:bk,toc:yk,texts:wk,demos:gk},"./docs/en-US/manual/localization-management/index":{frontmatter:Sk,toc:Uk,texts:Pk,demos:kk},"./docs/en-US/manual/quick-start/functional-zoning":{frontmatter:Ck,toc:Ak,texts:qk,demos:Tk},"./docs/en-US/manual/ui/actions/submit-to-workflow":{frontmatter:Dk,toc:Ok,texts:Rk,demos:Ek},"./docs/en-US/plugin-samples/plugin-settings/index":{frontmatter:Lk,toc:Nk,texts:zk,demos:Mk},"./docs/en-US/plugin-samples/plugin-settings/table":{frontmatter:Bk,toc:jk,texts:Hk,demos:Fk},"./docs/en-US/plugin-samples/router/add-page/index":{frontmatter:$k,toc:Gk,texts:Vk,demos:Wk},"./docs/en-US/plugin-samples/schema-settings/index":{frontmatter:Zk,toc:Yk,texts:Qk,demos:Kk},"./docs/en-US/plugins/data-visualization/dev/index":{frontmatter:Xk,toc:e4,texts:a4,demos:Jk},"./docs/en-US/plugins/workflow/development/trigger":{frontmatter:n4,toc:o4,texts:r4,demos:t4},"./docs/en-US/plugins/workflow/manual/nodes/create":{frontmatter:i4,toc:l4,texts:c4,demos:d4},"./docs/en-US/plugins/workflow/manual/nodes/manual":{frontmatter:u4,toc:p4,texts:I4,demos:s4},"./docs/en-US/plugins/workflow/manual/nodes/update":{frontmatter:v4,toc:m4,texts:h4,demos:_4},"./docs/en-US/welcome/release/collection-templates":{frontmatter:x4,toc:g4,texts:b4,demos:f4},"./docs/en-US/api/data-source-manager/data-source":{frontmatter:w4,toc:k4,texts:S4,demos:y4},"./docs/en-US/handbook/backups/installation/mysql":{frontmatter:P4,toc:T4,texts:C4,demos:U4},"./docs/en-US/handbook/data-source-kingbase/index":{frontmatter:q4,toc:E4,texts:D4,demos:A4},"./docs/en-US/handbook/data-source-rest-api/index":{frontmatter:R4,toc:M4,texts:L4,demos:O4},"./docs/en-US/handbook/field-attachment-url/index":{frontmatter:z4,toc:F4,texts:B4,demos:N4},"./docs/en-US/handbook/field-component-mask/index":{frontmatter:H4,toc:W4,texts:$4,demos:j4},"./docs/en-US/handbook/file-manager/storage/index":{frontmatter:V4,toc:K4,texts:Z4,demos:G4},"./docs/en-US/handbook/file-manager/storage/local":{frontmatter:Q4,toc:J4,texts:X4,demos:Y4},"./docs/en-US/handbook/notification-manager/index":{frontmatter:aS,toc:tS,texts:nS,demos:eS},"./docs/en-US/handbook/telemetry-prometheus/index":{frontmatter:rS,toc:dS,texts:iS,demos:oS},"./docs/en-US/handbook/ui/blocks/data-blocks/form":{frontmatter:cS,toc:sS,texts:uS,demos:lS},"./docs/en-US/handbook/ui/blocks/data-blocks/list":{frontmatter:IS,toc:_S,texts:vS,demos:pS},"./docs/en-US/handbook/workflow/development/index":{frontmatter:hS,toc:fS,texts:xS,demos:mS},"./docs/en-US/handbook/workflow/nodes/calculation":{frontmatter:bS,toc:yS,texts:wS,demos:gS},"./docs/en-US/handbook/workflow/plugins/aggregate":{frontmatter:SS,toc:US,texts:PS,demos:kS},"./docs/en-US/handbook/workflow/triggers/approval":{frontmatter:CS,toc:AS,texts:qS,demos:TS},"./docs/en-US/handbook/workflow/triggers/schedule":{frontmatter:DS,toc:OS,texts:RS,demos:ES},"./docs/en-US/handbook/workflow-approval/advanced":{frontmatter:LS,toc:NS,texts:zS,demos:MS},"./docs/en-US/handbook/workflow-approval/http-api":{frontmatter:BS,toc:jS,texts:HS,demos:FS},"./docs/en-US/manual/data-visualization/configure":{frontmatter:$S,toc:GS,texts:VS,demos:WS},"./docs/en-US/manual/workflow/triggers/collection":{frontmatter:ZS,toc:YS,texts:QS,demos:KS},"./docs/en-US/plugin-samples/block/block-carousel":{frontmatter:XS,toc:e5,texts:a5,demos:JS},"./docs/en-US/plugin-samples/plugin-settings/form":{frontmatter:n5,toc:o5,texts:r5,demos:t5},"./docs/en-US/plugins/workflow/manual/nodes/delay":{frontmatter:i5,toc:l5,texts:c5,demos:d5},"./docs/en-US/plugins/workflow/manual/nodes/index":{frontmatter:u5,toc:p5,texts:I5,demos:s5},"./docs/en-US/plugins/workflow/manual/nodes/query":{frontmatter:v5,toc:m5,texts:h5,demos:_5},"./docs/en-US/plugins/workflow-form-trigger/index":{frontmatter:x5,toc:g5,texts:b5,demos:f5},"./docs/en-US/handbook/data-modeling/data-source":{frontmatter:w5,toc:k5,texts:S5,demos:y5},"./docs/en-US/handbook/data-source-manager/index":{frontmatter:P5,toc:T5,texts:C5,demos:U5},"./docs/en-US/handbook/template-handlebars/index":{frontmatter:q5,toc:E5,texts:D5,demos:A5},"./docs/en-US/handbook/ui/blocks/block-templates":{frontmatter:R5,toc:M5,texts:L5,demos:O5},"./docs/en-US/handbook/ui/fields/specific/nester":{frontmatter:z5,toc:F5,texts:B5,demos:N5},"./docs/en-US/handbook/ui/fields/specific/picker":{frontmatter:H5,toc:W5,texts:$5,demos:j5},"./docs/en-US/handbook/ui/fields/specific/select":{frontmatter:V5,toc:K5,texts:Z5,demos:G5},"./docs/en-US/handbook/workflow/advanced/options":{frontmatter:Q5,toc:J5,texts:X5,demos:Y5},"./docs/en-US/handbook/workflow/nodes/json-query":{frontmatter:a6,toc:t6,texts:n6,demos:e6},"./docs/en-US/handbook/workflow-approval/trigger":{frontmatter:r6,toc:d6,texts:i6,demos:o6},"./docs/en-US/handbook/workflow-json-query/index":{frontmatter:c6,toc:s6,texts:u6,demos:l6},"./docs/en-US/manual/mobile/development/frontend":{frontmatter:I6,toc:_6,texts:v6,demos:p6},"./docs/en-US/plugin-samples/field/without-value":{frontmatter:h6,toc:f6,texts:x6,demos:m6},"./docs/en-US/plugin-samples/schema-settings/new":{frontmatter:b6,toc:y6,texts:w6,demos:g6},"./docs/en-US/plugins/telemetry-prometheus/index":{frontmatter:S6,toc:U6,texts:P6,demos:k6},"./docs/en-US/plugins/workflow/development/index":{frontmatter:C6,toc:A6,texts:q6,demos:T6},"./docs/en-US/plugins/workflow/manual/nodes/loop":{frontmatter:D6,toc:O6,texts:R6,demos:E6},"./docs/en-US/welcome/release/20240519-changelog":{frontmatter:L6,toc:N6,texts:z6,demos:M6},"./docs/en-US/welcome/release/gantt/introduction":{frontmatter:B6,toc:j6,texts:H6,demos:F6},"./docs/en-US/api/handlebars-helpers/comparison":{frontmatter:$6,toc:G6,texts:V6,demos:W6},"./docs/en-US/handbook/action-bulk-update/index":{frontmatter:Z6,toc:Y6,texts:Q6,demos:K6},"./docs/en-US/handbook/auth-oidc/example/google":{frontmatter:X6,toc:e9,texts:a9,demos:J6},"./docs/en-US/handbook/auth-saml/example/google":{frontmatter:n9,toc:o9,texts:r9,demos:t9},"./docs/en-US/handbook/data-modeling/collection":{frontmatter:i9,toc:l9,texts:c9,demos:d9},"./docs/en-US/handbook/data-visualization/index":{frontmatter:u9,toc:p9,texts:I9,demos:s9},"./docs/en-US/handbook/field-china-region/index":{frontmatter:v9,toc:m9,texts:h9,demos:_9},"./docs/en-US/handbook/notification-email/index":{frontmatter:x9,toc:g9,texts:b9,demos:f9},"./docs/en-US/handbook/ui/actions/types/add-new":{frontmatter:w9,toc:k9,texts:S9,demos:y9},"./docs/en-US/handbook/ui/actions/types/refresh":{frontmatter:P9,toc:T9,texts:C9,demos:U9},"./docs/en-US/handbook/ui/fields/specific/title":{frontmatter:q9,toc:E9,texts:D9,demos:A9},"./docs/en-US/handbook/workflow/development/api":{frontmatter:R9,toc:M9,texts:L9,demos:O9},"./docs/en-US/handbook/workflow/nodes/aggregate":{frontmatter:z9,toc:F9,texts:B9,demos:N9},"./docs/en-US/handbook/workflow/nodes/condition":{frontmatter:H9,toc:W9,texts:$9,demos:j9},"./docs/en-US/handbook/workflow-aggregate/index":{frontmatter:V9,toc:K9,texts:Z9,demos:G9},"./docs/en-US/handbook/workflow-approval/action":{frontmatter:Q9,toc:J9,texts:X9,demos:Y9},"./docs/en-US/manual/collection/fields/advanced":{frontmatter:a7,toc:t7,texts:n7,demos:e7},"./docs/en-US/manual/collection/fields/relation":{frontmatter:r7,toc:d7,texts:i7,demos:o7},"./docs/en-US/manual/quick-start/ui-editor-mode":{frontmatter:c7,toc:s7,texts:u7,demos:l7},"./docs/en-US/manual/workflow/nodes/calculation":{frontmatter:I7,toc:_7,texts:v7,demos:p7},"./docs/en-US/manual/workflow/triggers/schedule":{frontmatter:h7,toc:f7,texts:x7,demos:m7},"./docs/en-US/plugins/workflow/manual/nodes/sql":{frontmatter:b7,toc:y7,texts:w7,demos:g7},"./docs/en-US/plugins/workflow-json-query/index":{frontmatter:S7,toc:U7,texts:P7,demos:k7},"./docs/en-US/breaking-changes/v0-17-0-alpha-1":{frontmatter:C7,toc:A7,texts:q7,demos:T7},"./docs/en-US/breaking-changes/v0-17-0-alpha-3":{frontmatter:D7,toc:O7,texts:R7,demos:E7},"./docs/en-US/breaking-changes/v0-17-0-alpha-5":{frontmatter:L7,toc:N7,texts:z7,demos:M7},"./docs/en-US/breaking-changes/v0-18-0-alpha-1":{frontmatter:B7,toc:j7,texts:H7,demos:F7},"./docs/en-US/breaking-changes/v0.19.0-alpha.1":{frontmatter:$7,toc:G7,texts:V7,demos:W7},"./docs/en-US/handbook/action-export-pro/index":{frontmatter:Z7,toc:Y7,texts:Q7,demos:K7},"./docs/en-US/handbook/action-import-pro/index":{frontmatter:X7,toc:e8,texts:a8,demos:J7},"./docs/en-US/handbook/multi-app-manager/index":{frontmatter:n8,toc:o8,texts:r8,demos:t8},"./docs/en-US/handbook/ui/actions/types/delete":{frontmatter:i8,toc:l8,texts:c8,demos:d8},"./docs/en-US/handbook/ui/actions/types/filter":{frontmatter:u8,toc:p8,texts:I8,demos:s8},"./docs/en-US/handbook/ui/actions/types/pop-up":{frontmatter:v8,toc:m8,texts:h8,demos:_8},"./docs/en-US/handbook/ui/actions/types/submit":{frontmatter:x8,toc:g8,texts:b8,demos:f8},"./docs/en-US/handbook/ui-schema-storage/index":{frontmatter:w8,toc:k8,texts:S8,demos:y8},"./docs/en-US/handbook/workflow/nodes/approval":{frontmatter:P8,toc:T8,texts:C8,demos:U8},"./docs/en-US/handbook/workflow/nodes/parallel":{frontmatter:q8,toc:E8,texts:D8,demos:A8},"./docs/en-US/handbook/workflow/nodes/variable":{frontmatter:R8,toc:M8,texts:L8,demos:O8},"./docs/en-US/handbook/workflow/triggers/index":{frontmatter:z8,toc:F8,texts:B8,demos:N8},"./docs/en-US/handbook/workflow-approval/block":{frontmatter:H8,toc:W8,texts:$8,demos:j8},"./docs/en-US/handbook/workflow-approval/index":{frontmatter:V8,toc:K8,texts:Z8,demos:G8},"./docs/en-US/handbook/workflow-manual/example":{frontmatter:Q8,toc:J8,texts:X8,demos:Y8},"./docs/en-US/handbook/workflow-parallel/index":{frontmatter:aU,toc:tU,texts:nU,demos:eU},"./docs/en-US/handbook/workflow-variable/index":{frontmatter:rU,toc:dU,texts:iU,demos:oU},"./docs/en-US/manual/collection/fields/choices":{frontmatter:cU,toc:sU,texts:uU,demos:lU},"./docs/en-US/manual/core-concepts/collections":{frontmatter:IU,toc:_U,texts:vU,demos:pU},"./docs/en-US/manual/data-visualization/filter":{frontmatter:hU,toc:fU,texts:xU,demos:mU},"./docs/en-US/manual/quick-start/the-first-app":{frontmatter:bU,toc:yU,texts:wU,demos:gU},"./docs/en-US/manual/ui/actions/custom-request":{frontmatter:SU,toc:UU,texts:PU,demos:kU},"./docs/en-US/plugin-samples/block/block-table":{frontmatter:CU,toc:AU,texts:qU,demos:TU},"./docs/en-US/plugins/action-bulk-update/index":{frontmatter:DU,toc:OU,texts:RU,demos:EU},"./docs/en-US/plugins/collection-manager/index":{frontmatter:LU,toc:NU,texts:zU,demos:MU},"./docs/en-US/plugins/data-visualization/index":{frontmatter:BU,toc:jU,texts:HU,demos:FU},"./docs/en-US/plugins/file-manager/tencent-cos":{frontmatter:$U,toc:GU,texts:VU,demos:WU},"./docs/en-US/plugins/workflow/development/api":{frontmatter:ZU,toc:YU,texts:QU,demos:KU},"./docs/en-US/plugins/workflow/manual/advanced":{frontmatter:XU,toc:eP,texts:aP,demos:JU},"./docs/en-US/plugins/workflow-aggregate/index":{frontmatter:nP,toc:oP,texts:rP,demos:tP},"./docs/en-US/api/data-source-manager/i-field":{frontmatter:iP,toc:lP,texts:cP,demos:dP},"./docs/en-US/api/data-source-manager/i-model":{frontmatter:uP,toc:pP,texts:IP,demos:sP},"./docs/en-US/api/server/sync-message-manager":{frontmatter:vP,toc:mP,texts:hP,demos:_P},"./docs/en-US/development/http-api/action-api":{frontmatter:xP,toc:gP,texts:bP,demos:fP},"./docs/en-US/handbook/action-bulk-edit/index":{frontmatter:wP,toc:kP,texts:SP,demos:yP},"./docs/en-US/handbook/action-duplicate/index":{frontmatter:PP,toc:TP,texts:CP,demos:UP},"./docs/en-US/handbook/data-source-main/index":{frontmatter:qP,toc:EP,texts:DP,demos:AP},"./docs/en-US/handbook/data-visualization/faq":{frontmatter:RP,toc:MP,texts:LP,demos:OP},"./docs/en-US/handbook/field-encryption/index":{frontmatter:zP,toc:FP,texts:BP,demos:NP},"./docs/en-US/handbook/file-storage-cos/index":{frontmatter:HP,toc:WP,texts:$P,demos:jP},"./docs/en-US/handbook/file-storage-oss/index":{frontmatter:VP,toc:KP,texts:ZP,demos:GP},"./docs/en-US/handbook/ui/fields/specific/tag":{frontmatter:QP,toc:JP,texts:XP,demos:YP},"./docs/en-US/handbook/users/field-created-by":{frontmatter:aT,toc:tT,texts:nT,demos:eT},"./docs/en-US/handbook/users/field-updated-by":{frontmatter:rT,toc:dT,texts:iT,demos:oT},"./docs/en-US/handbook/workflow/nodes/destroy":{frontmatter:cT,toc:sT,texts:uT,demos:lT},"./docs/en-US/handbook/workflow/nodes/request":{frontmatter:IT,toc:_T,texts:vT,demos:pT},"./docs/en-US/handbook/workflow-approval/node":{frontmatter:hT,toc:fT,texts:xT,demos:mT},"./docs/en-US/handbook/workflow-request/index":{frontmatter:bT,toc:yT,texts:wT,demos:gT},"./docs/en-US/manual/collection/fields/system":{frontmatter:ST,toc:UT,texts:PT,demos:kT},"./docs/en-US/manual/core-concepts/containers":{frontmatter:CT,toc:AT,texts:qT,demos:TT},"./docs/en-US/manual/data-visualization/index":{frontmatter:DT,toc:OT,texts:RT,demos:ET},"./docs/en-US/manual/file-manager/tencent-cos":{frontmatter:LT,toc:NT,texts:zT,demos:MT},"./docs/en-US/manual/ui/actions/update-record":{frontmatter:BT,toc:jT,texts:HT,demos:FT},"./docs/en-US/manual/workflow/nodes/aggregate":{frontmatter:$T,toc:GT,texts:VT,demos:WT},"./docs/en-US/manual/workflow/nodes/condition":{frontmatter:ZT,toc:YT,texts:QT,demos:KT},"./docs/en-US/plugin-samples/block/block-form":{frontmatter:XT,toc:eC,texts:aC,demos:JT},"./docs/en-US/plugin-samples/provider/content":{frontmatter:nC,toc:oC,texts:rC,demos:tC},"./docs/en-US/plugin-samples/provider/context":{frontmatter:iC,toc:lC,texts:cC,demos:dC},"./docs/en-US/plugins/file-manager/aliyun-oss":{frontmatter:uC,toc:pC,texts:IC,demos:sC},"./docs/en-US/plugins/multi-app-manager/index":{frontmatter:vC,toc:mC,texts:hC,demos:_C},"./docs/en-US/plugins/ui-schema-storage/index":{frontmatter:xC,toc:gC,texts:bC,demos:fC},"./docs/en-US/plugins/workflow-approval/index":{frontmatter:wC,toc:kC,texts:SC,demos:yC},"./docs/en-US/plugins/workflow-parallel/index":{frontmatter:PC,toc:TC,texts:CC,demos:UC},"./docs/en-US/welcome/release/tree-collection":{frontmatter:qC,toc:EC,texts:DC,demos:AC},"./docs/en-US/welcome/release/upgrade-to/v017":{frontmatter:RC,toc:MC,texts:LC,demos:OC},"./docs/en-US/welcome/release/v0040-changelog":{frontmatter:zC,toc:FC,texts:BC,demos:NC},"./docs/en-US/welcome/release/v0050-changelog":{frontmatter:HC,toc:WC,texts:$C,demos:jC},"./docs/en-US/welcome/release/v0060-changelog":{frontmatter:VC,toc:KC,texts:ZC,demos:GC},"./docs/en-US/welcome/release/v0070-changelog":{frontmatter:QC,toc:JC,texts:XC,demos:YC},"./docs/en-US/welcome/release/v0071-changelog":{frontmatter:aA,toc:tA,texts:nA,demos:eA},"./docs/en-US/welcome/release/v0072-changelog":{frontmatter:rA,toc:dA,texts:iA,demos:oA},"./docs/en-US/welcome/release/v0073-changelog":{frontmatter:cA,toc:sA,texts:uA,demos:lA},"./docs/en-US/welcome/release/v0074-changelog":{frontmatter:IA,toc:_A,texts:vA,demos:pA},"./docs/en-US/welcome/release/v0075-changelog":{frontmatter:hA,toc:fA,texts:xA,demos:mA},"./docs/en-US/welcome/release/v0080-changelog":{frontmatter:bA,toc:yA,texts:wA,demos:gA},"./docs/en-US/welcome/release/v0091-changelog":{frontmatter:SA,toc:UA,texts:PA,demos:kA},"./docs/en-US/welcome/release/v0092-changelog":{frontmatter:CA,toc:AA,texts:qA,demos:TA},"./docs/en-US/welcome/release/v0093-changelog":{frontmatter:DA,toc:OA,texts:RA,demos:EA},"./docs/en-US/welcome/release/v0094-changelog":{frontmatter:LA,toc:NA,texts:zA,demos:MA},"./docs/en-US/welcome/release/v0100-changelog":{frontmatter:BA,toc:jA,texts:HA,demos:FA},"./docs/en-US/welcome/release/v0110-changelog":{frontmatter:$A,toc:GA,texts:VA,demos:WA},"./docs/en-US/welcome/release/v0120-changelog":{frontmatter:ZA,toc:YA,texts:QA,demos:KA},"./docs/en-US/welcome/release/v0130-changelog":{frontmatter:XA,toc:eq,texts:aq,demos:JA},"./docs/en-US/welcome/release/v0140-changelog":{frontmatter:nq,toc:oq,texts:rq,demos:tq},"./docs/en-US/welcome/release/v0150-changelog":{frontmatter:cq,toc:sq,texts:uq,demos:lq},"./docs/en-US/welcome/release/v0160-changelog":{frontmatter:Iq,toc:_q,texts:vq,demos:pq},"./docs/en-US/welcome/release/v0170-changelog":{frontmatter:hq,toc:fq,texts:xq,demos:mq},"./docs/en-US/welcome/release/v0180-changelog":{frontmatter:bq,toc:yq,texts:wq,demos:gq},"./docs/en-US/welcome/release/v0190-changelog":{frontmatter:Sq,toc:Uq,texts:Pq,demos:kq},"./docs/en-US/welcome/release/v1001-changelog":{frontmatter:Cq,toc:Aq,texts:qq,demos:Tq},"./docs/en-US/api/resourcer/resource-manager":{frontmatter:Dq,toc:Oq,texts:Rq,demos:Eq},"./docs/en-US/handbook/block-workbench/index":{frontmatter:Lq,toc:Nq,texts:zq,demos:Mq},"./docs/en-US/handbook/collection-tree/index":{frontmatter:Bq,toc:jq,texts:Hq,demos:Fq},"./docs/en-US/handbook/collection-view/index":{frontmatter:$q,toc:Gq,texts:Vq,demos:Wq},"./docs/en-US/handbook/field-m2m-array/index":{frontmatter:Zq,toc:Yq,texts:Qq,demos:Kq},"./docs/en-US/handbook/file-storage-s3/index":{frontmatter:Xq,toc:eE,texts:aE,demos:Jq},"./docs/en-US/handbook/system-settings/index":{frontmatter:nE,toc:oE,texts:rE,demos:tE},"./docs/en-US/handbook/template-string/index":{frontmatter:iE,toc:lE,texts:cE,demos:dE},"./docs/en-US/handbook/ui/actions/types/edit":{frontmatter:uE,toc:pE,texts:IE,demos:sE},"./docs/en-US/handbook/ui/actions/types/link":{frontmatter:vE,toc:mE,texts:hE,demos:_E},"./docs/en-US/handbook/ui/actions/types/view":{frontmatter:xE,toc:gE,texts:bE,demos:fE},"./docs/en-US/handbook/workflow/nodes/create":{frontmatter:wE,toc:kE,texts:SE,demos:yE},"./docs/en-US/handbook/workflow/nodes/manual":{frontmatter:PE,toc:TE,texts:CE,demos:UE},"./docs/en-US/handbook/workflow/nodes/update":{frontmatter:qE,toc:EE,texts:DE,demos:AE},"./docs/en-US/handbook/workflow-manual/block":{frontmatter:RE,toc:ME,texts:LE,demos:OE},"./docs/en-US/handbook/workflow-manual/index":{frontmatter:zE,toc:FE,texts:BE,demos:NE},"./docs/en-US/manual/collection/fields/basic":{frontmatter:HE,toc:WE,texts:$E,demos:jE},"./docs/en-US/manual/collection/fields/index":{frontmatter:VE,toc:KE,texts:ZE,demos:GE},"./docs/en-US/manual/collection/fields/media":{frontmatter:QE,toc:JE,texts:XE,demos:YE},"./docs/en-US/manual/file-manager/aliyun-oss":{frontmatter:aD,toc:tD,texts:nD,demos:eD},"./docs/en-US/manual/workflow/nodes/parallel":{frontmatter:rD,toc:dD,texts:iD,demos:oD},"./docs/en-US/manual/workflow/triggers/index":{frontmatter:cD,toc:sD,texts:uD,demos:lD},"./docs/en-US/plugin-samples/field/interface":{frontmatter:ID,toc:_D,texts:vD,demos:pD},"./docs/en-US/plugin-samples/field/sub-field":{frontmatter:hD,toc:fD,texts:xD,demos:mD},"./docs/en-US/plugins/action-bulk-edit/index":{frontmatter:bD,toc:yD,texts:wD,demos:gD},"./docs/en-US/plugins/action-duplicate/index":{frontmatter:SD,toc:UD,texts:PD,demos:kD},"./docs/en-US/plugins/file-manager/amazon-s3":{frontmatter:CD,toc:AD,texts:qD,demos:TD},"./docs/en-US/plugins/workflow-request/index":{frontmatter:DD,toc:OD,texts:RD,demos:ED},"./docs/en-US/welcome/community/contributing":{frontmatter:LD,toc:ND,texts:zD,demos:MD},"./docs/en-US/welcome/community/translations":{frontmatter:BD,toc:jD,texts:HD,demos:FD},"./docs/en-US/welcome/getting-started/plugin":{frontmatter:$D,toc:GD,texts:VD,demos:WD},"./docs/en-US/api/data-source-manager/index":{frontmatter:ZD,toc:YD,texts:QD,demos:KD},"./docs/en-US/api/handlebars-helpers/number":{frontmatter:XD,toc:eO,texts:aO,demos:JD},"./docs/en-US/api/handlebars-helpers/object":{frontmatter:nO,toc:oO,texts:rO,demos:tO},"./docs/en-US/api/handlebars-helpers/string":{frontmatter:iO,toc:lO,texts:cO,demos:dO},"./docs/en-US/development/client/api-client":{frontmatter:uO,toc:pO,texts:IO,demos:sO},"./docs/en-US/development/client/life-cycle":{frontmatter:vO,toc:mO,texts:hO,demos:_O},"./docs/en-US/development/http-api/rest-api":{frontmatter:xO,toc:gO,texts:bO,demos:fO},"./docs/en-US/development/others/tech-stack":{frontmatter:wO,toc:kO,texts:SO,demos:yO},"./docs/en-US/development/server/middleware":{frontmatter:PO,toc:TO,texts:CO,demos:UO},"./docs/en-US/development/your-fisrt-plugin":{frontmatter:qO,toc:EO,texts:DO,demos:AO},"./docs/en-US/handbook/action-qr-scan/index":{frontmatter:RO,toc:MO,texts:LO,demos:OO},"./docs/en-US/handbook/backup-restore/index":{frontmatter:zO,toc:FO,texts:BO,demos:NO},"./docs/en-US/handbook/collection-fdw/index":{frontmatter:HO,toc:WO,texts:$O,demos:jO},"./docs/en-US/handbook/collection-sql/index":{frontmatter:VO,toc:KO,texts:ZO,demos:GO},"./docs/en-US/handbook/field-sequence/index":{frontmatter:QO,toc:JO,texts:XO,demos:YO},"./docs/en-US/handbook/field-snapshot/index":{frontmatter:aR,toc:tR,texts:nR,demos:eR},"./docs/en-US/handbook/plugin-manager/index":{frontmatter:rR,toc:dR,texts:iR,demos:oR},"./docs/en-US/handbook/workflow/nodes/delay":{frontmatter:cR,toc:sR,texts:uR,demos:lR},"./docs/en-US/handbook/workflow/nodes/index":{frontmatter:IR,toc:_R,texts:vR,demos:pR},"./docs/en-US/handbook/workflow/nodes/query":{frontmatter:hR,toc:fR,texts:xR,demos:mR},"./docs/en-US/handbook/workflow/quick-start":{frontmatter:bR,toc:yR,texts:wR,demos:gR},"./docs/en-US/handbook/workflow-delay/index":{frontmatter:SR,toc:UR,texts:PR,demos:kR},"./docs/en-US/handbook/workflow-manual/node":{frontmatter:CR,toc:AR,texts:qR,demos:TR},"./docs/en-US/manual/collection/fields/date":{frontmatter:DR,toc:OR,texts:RR,demos:ER},"./docs/en-US/manual/file-manager/amazon-s3":{frontmatter:LR,toc:NR,texts:zR,demos:MR},"./docs/en-US/manual/ui/actions/save-record":{frontmatter:BR,toc:jR,texts:HR,demos:FR},"./docs/en-US/manual/user/user-center/index":{frontmatter:$R,toc:GR,texts:VR,demos:WR},"./docs/en-US/manual/workflow/nodes/destroy":{frontmatter:ZR,toc:YR,texts:QR,demos:KR},"./docs/en-US/manual/workflow/nodes/request":{frontmatter:XR,toc:eM,texts:aM,demos:JR},"./docs/en-US/manual/workflow/triggers/form":{frontmatter:nM,toc:oM,texts:rM,demos:tM},"./docs/en-US/plugin-samples/provider/index":{frontmatter:iM,toc:lM,texts:cM,demos:dM},"./docs/en-US/plugins/system-settings/index":{frontmatter:uM,toc:pM,texts:IM,demos:sM},"./docs/en-US/plugins/workflow/manual/index":{frontmatter:vM,toc:mM,texts:hM,demos:_M},"./docs/en-US/plugins/workflow-manual/index":{frontmatter:xM,toc:gM,texts:bM,demos:fM},"./docs/en-US/welcome/introduction/features":{frontmatter:wM,toc:kM,texts:SM,demos:yM},"./docs/en-US/api/handlebars-helpers/array":{frontmatter:PM,toc:TM,texts:CM,demos:UM},"./docs/en-US/api/handlebars-helpers/index":{frontmatter:qM,toc:EM,texts:DM,demos:AM},"./docs/en-US/api/handlebars-helpers/regex":{frontmatter:RM,toc:MM,texts:LM,demos:OM},"./docs/en-US/development/client/providers":{frontmatter:zM,toc:FM,texts:BM,demos:NM},"./docs/en-US/development/others/languages":{frontmatter:HM,toc:WM,texts:$M,demos:jM},"./docs/en-US/development/server/migration":{frontmatter:VM,toc:KM,texts:ZM,demos:GM},"./docs/en-US/development/server/telemetry":{frontmatter:QM,toc:JM,texts:XM,demos:YM},"./docs/en-US/handbook/action-export/index":{frontmatter:aL,toc:tL,texts:nL,demos:eL},"./docs/en-US/handbook/action-import/index":{frontmatter:rL,toc:dL,texts:iL,demos:oL},"./docs/en-US/handbook/app-switching/index":{frontmatter:cL,toc:sL,texts:uL,demos:lL},"./docs/en-US/handbook/auth-dingtalk/index":{frontmatter:IL,toc:_L,texts:vL,demos:pL},"./docs/en-US/handbook/data-modeling/index":{frontmatter:hL,toc:fL,texts:xL,demos:mL},"./docs/en-US/handbook/field-formula/index":{frontmatter:bL,toc:yL,texts:wL,demos:gL},"./docs/en-US/handbook/mobile-client/index":{frontmatter:SL,toc:UL,texts:PL,demos:kL},"./docs/en-US/handbook/template-json/index":{frontmatter:CL,toc:AL,texts:qL,demos:TL},"./docs/en-US/handbook/workflow/nodes/loop":{frontmatter:DL,toc:OL,texts:RL,demos:EL},"./docs/en-US/handbook/workflow-loop/index":{frontmatter:LL,toc:NL,texts:zL,demos:ML},"./docs/en-US/manual/collection/fields/map":{frontmatter:BL,toc:jL,texts:HL,demos:FL},"./docs/en-US/manual/collection/management":{frontmatter:$L,toc:GL,texts:VL,demos:WL},"./docs/en-US/manual/core-concepts/actions":{frontmatter:ZL,toc:YL,texts:QL,demos:KL},"./docs/en-US/manual/system-settings/index":{frontmatter:XL,toc:eN,texts:aN,demos:JL},"./docs/en-US/manual/ui/actions/add-record":{frontmatter:nN,toc:oN,texts:rN,demos:tN},"./docs/en-US/manual/ui/actions/open-popup":{frontmatter:iN,toc:lN,texts:cN,demos:dN},"./docs/en-US/manual/workflow/nodes/create":{frontmatter:uN,toc:pN,texts:IN,demos:sN},"./docs/en-US/manual/workflow/nodes/manual":{frontmatter:vN,toc:mN,texts:hN,demos:_N},"./docs/en-US/manual/workflow/nodes/update":{frontmatter:xN,toc:gN,texts:bN,demos:fN},"./docs/en-US/plugins/backup-restore/index":{frontmatter:wN,toc:kN,texts:SN,demos:yN},"./docs/en-US/plugins/collection-fdw/index":{frontmatter:PN,toc:TN,texts:CN,demos:UN},"./docs/en-US/plugins/custom-request/index":{frontmatter:qN,toc:EN,texts:DN,demos:AN},"./docs/en-US/plugins/sequence-field/index":{frontmatter:RN,toc:MN,texts:LN,demos:ON},"./docs/en-US/plugins/snapshot-field/index":{frontmatter:zN,toc:FN,texts:BN,demos:NN},"./docs/en-US/plugins/workflow-delay/index":{frontmatter:HN,toc:WN,texts:$N,demos:jN},"./docs/en-US/welcome/changelog/0-template":{frontmatter:VN,toc:KN,texts:ZN,demos:GN},"./docs/en-US/api/handlebars-helpers/core":{frontmatter:QN,toc:JN,texts:XN,demos:YN},"./docs/en-US/api/handlebars-helpers/date":{frontmatter:az,toc:tz,texts:nz,demos:ez},"./docs/en-US/api/handlebars-helpers/html":{frontmatter:rz,toc:dz,texts:iz,demos:oz},"./docs/en-US/api/handlebars-helpers/i18n":{frontmatter:cz,toc:sz,texts:uz,demos:lz},"./docs/en-US/api/handlebars-helpers/math":{frontmatter:Iz,toc:_z,texts:vz,demos:pz},"./docs/en-US/api/handlebars-helpers/path":{frontmatter:hz,toc:fz,texts:xz,demos:mz},"./docs/en-US/development/server/commands":{frontmatter:bz,toc:yz,texts:wz,demos:gz},"./docs/en-US/handbook/action-print/index":{frontmatter:Sz,toc:Uz,texts:Pz,demos:kz},"./docs/en-US/handbook/block-iframe/index":{frontmatter:Cz,toc:Az,texts:qz,demos:Tz},"./docs/en-US/handbook/block-kanban/index":{frontmatter:Dz,toc:Oz,texts:Rz,demos:Ez},"./docs/en-US/handbook/custom-brand/index":{frontmatter:Lz,toc:Nz,texts:zz,demos:Mz},"./docs/en-US/handbook/departments/manual":{frontmatter:Bz,toc:jz,texts:Hz,demos:Fz},"./docs/en-US/handbook/file-manager/index":{frontmatter:$z,toc:Gz,texts:Vz,demos:Wz},"./docs/en-US/handbook/public-forms/index":{frontmatter:Zz,toc:Yz,texts:Qz,demos:Kz},"./docs/en-US/handbook/theme-editor/index":{frontmatter:Xz,toc:eF,texts:aF,demos:Jz},"./docs/en-US/handbook/ui/ui-editor/index":{frontmatter:nF,toc:oF,texts:rF,demos:tF},"./docs/en-US/handbook/verification/index":{frontmatter:iF,toc:lF,texts:cF,demos:dF},"./docs/en-US/handbook/workflow/nodes/end":{frontmatter:uF,toc:pF,texts:IF,demos:sF},"./docs/en-US/handbook/workflow/nodes/sql":{frontmatter:vF,toc:mF,texts:hF,demos:_F},"./docs/en-US/handbook/workflow-sql/index":{frontmatter:xF,toc:gF,texts:bF,demos:fF},"./docs/en-US/manual/backup-restore/index":{frontmatter:wF,toc:kF,texts:SF,demos:yF},"./docs/en-US/manual/core-concepts/blocks":{frontmatter:PF,toc:TF,texts:CF,demos:UF},"./docs/en-US/manual/ui/actions/duplicate":{frontmatter:qF,toc:EF,texts:DF,demos:AF},"./docs/en-US/manual/workflow/nodes/delay":{frontmatter:RF,toc:MF,texts:LF,demos:OF},"./docs/en-US/manual/workflow/nodes/index":{frontmatter:zF,toc:FF,texts:BF,demos:NF},"./docs/en-US/manual/workflow/nodes/query":{frontmatter:HF,toc:WF,texts:$F,demos:jF},"./docs/en-US/plugin-samples/router/index":{frontmatter:VF,toc:KF,texts:ZF,demos:GF},"./docs/en-US/plugins/formula-field/index":{frontmatter:QF,toc:JF,texts:XF,demos:YF},"./docs/en-US/plugins/mobile-client/index":{frontmatter:aB,toc:tB,texts:nB,demos:eB},"./docs/en-US/plugins/oidc/example/google":{frontmatter:rB,toc:dB,texts:iB,demos:oB},"./docs/en-US/plugins/saml/example/google":{frontmatter:cB,toc:sB,texts:uB,demos:lB},"./docs/en-US/plugins/workflow-loop/index":{frontmatter:IB,toc:_B,texts:vB,demos:pB},"./docs/en-US/welcome/getting-started/env":{frontmatter:hB,toc:fB,texts:xB,demos:mB},"./docs/en-US/api/handlebars-helpers/url":{frontmatter:bB,toc:yB,texts:wB,demos:gB},"./docs/en-US/development/http-api/index":{frontmatter:SB,toc:UB,texts:PB,demos:kB},"./docs/en-US/development/learning-guide":{frontmatter:CB,toc:AB,texts:qB,demos:TB},"./docs/en-US/development/others/testing":{frontmatter:DB,toc:OB,texts:RB,demos:EB},"./docs/en-US/development/server/routing":{frontmatter:LB,toc:NB,texts:zB,demos:MB},"./docs/en-US/handbook/block-gantt/index":{frontmatter:BB,toc:jB,texts:HB,demos:FB},"./docs/en-US/handbook/client/user/index":{frontmatter:$B,toc:GB,texts:VB,demos:WB},"./docs/en-US/handbook/departments/index":{frontmatter:ZB,toc:YB,texts:QB,demos:KB},"./docs/en-US/manual/blocks-guide/charts":{frontmatter:XB,toc:ej,texts:aj,demos:JB},"./docs/en-US/manual/core-concepts/a-b-c":{frontmatter:nj,toc:oj,texts:rj,demos:tj},"./docs/en-US/manual/core-concepts/menus":{frontmatter:ij,toc:lj,texts:cj,demos:dj},"./docs/en-US/manual/mobile-client/index":{frontmatter:uj,toc:pj,texts:Ij,demos:sj},"./docs/en-US/manual/workflow/nodes/loop":{frontmatter:vj,toc:mj,texts:hj,demos:_j},"./docs/en-US/plugin-samples/block/index":{frontmatter:xj,toc:gj,texts:bj,demos:fj},"./docs/en-US/plugin-samples/field/index":{frontmatter:wj,toc:kj,texts:Sj,demos:yj},"./docs/en-US/plugin-samples/field/value":{frontmatter:Pj,toc:Tj,texts:Cj,demos:Uj},"./docs/en-US/plugins/action-print/index":{frontmatter:qj,toc:Ej,texts:Dj,demos:Aj},"./docs/en-US/plugins/china-region/index":{frontmatter:Rj,toc:Mj,texts:Lj,demos:Oj},"./docs/en-US/plugins/file-manager/index":{frontmatter:zj,toc:Fj,texts:Bj,demos:Nj},"./docs/en-US/plugins/file-manager/local":{frontmatter:Hj,toc:Wj,texts:$j,demos:jj},"./docs/en-US/plugins/iframe-block/index":{frontmatter:Vj,toc:Kj,texts:Zj,demos:Gj},"./docs/en-US/plugins/theme-editor/index":{frontmatter:Qj,toc:Jj,texts:Xj,demos:Yj},"./docs/en-US/plugins/verification/index":{frontmatter:aH,toc:tH,texts:nH,demos:eH},"./docs/en-US/plugins/workflow-sql/index":{frontmatter:rH,toc:dH,texts:iH,demos:oH},"./docs/en-US/welcome/changelog/20240519":{frontmatter:cH,toc:sH,texts:uH,demos:lH},"./docs/en-US/welcome/changelog/20240607":{frontmatter:IH,toc:_H,texts:vH,demos:pH},"./docs/en-US/welcome/introduction/index":{frontmatter:hH,toc:fH,texts:xH,demos:mH},"./docs/en-US/api/client/extensions/acl":{frontmatter:bH,toc:yH,texts:wH,demos:gH},"./docs/en-US/api/server/plugin-manager":{frontmatter:SH,toc:UH,texts:PH,demos:kH},"./docs/en-US/development/client/router":{frontmatter:CH,toc:AH,texts:qH,demos:TH},"./docs/en-US/development/server/events":{frontmatter:DH,toc:OH,texts:RH,demos:EH},"./docs/en-US/development/server/logger":{frontmatter:LH,toc:NH,texts:zH,demos:MH},"./docs/en-US/handbook/audit-logs/index":{frontmatter:BH,toc:jH,texts:HH,demos:FH},"./docs/en-US/handbook/auth-wecom/index":{frontmatter:$H,toc:GH,texts:VH,demos:WH},"./docs/en-US/handbook/block-tree/index":{frontmatter:ZH,toc:YH,texts:QH,demos:KH},"./docs/en-US/handbook/field-sort/index":{frontmatter:XH,toc:eW,texts:aW,demos:JH},"./docs/en-US/handbook/ui/actions/index":{frontmatter:nW,toc:oW,texts:rW,demos:tW},"./docs/en-US/manual/collection/inherit":{frontmatter:iW,toc:lW,texts:cW,demos:dW},"./docs/en-US/manual/file-manager/index":{frontmatter:uW,toc:pW,texts:IW,demos:sW},"./docs/en-US/manual/file-manager/local":{frontmatter:vW,toc:mW,texts:hW,demos:_W},"./docs/en-US/manual/theme-editor/index":{frontmatter:xW,toc:gW,texts:bW,demos:fW},"./docs/en-US/manual/ui/actions/add-new":{frontmatter:wW,toc:kW,texts:SW,demos:yW},"./docs/en-US/manual/ui/actions/refresh":{frontmatter:PW,toc:TW,texts:CW,demos:UW},"./docs/en-US/manual/workflow/nodes/sql":{frontmatter:qW,toc:EW,texts:DW,demos:AW},"./docs/en-US/plugins/client/user/index":{frontmatter:RW,toc:MW,texts:LW,demos:OW},"./docs/en-US/api/resourcer/middleware":{frontmatter:zW,toc:FW,texts:BW,demos:NW},"./docs/en-US/development/client/index":{frontmatter:HW,toc:WW,texts:$W,demos:jW},"./docs/en-US/development/others/build":{frontmatter:VW,toc:KW,texts:ZW,demos:GW},"./docs/en-US/development/server/index":{frontmatter:QW,toc:JW,texts:XW,demos:YW},"./docs/en-US/handbook/auth/user/index":{frontmatter:a$,toc:t$,texts:n$,demos:e$},"./docs/en-US/handbook/auth-ldap/index":{frontmatter:r$,toc:d$,texts:i$,demos:o$},"./docs/en-US/handbook/auth-oidc/index":{frontmatter:c$,toc:s$,texts:u$,demos:l$},"./docs/en-US/handbook/auth-saml/index":{frontmatter:I$,toc:_$,texts:v$,demos:p$},"./docs/en-US/handbook/block-map/index":{frontmatter:h$,toc:f$,texts:x$,demos:m$},"./docs/en-US/handbook/ui/blocks/index":{frontmatter:b$,toc:y$,texts:w$,demos:g$},"./docs/en-US/handbook/ui/fields/index":{frontmatter:S$,toc:U$,texts:P$,demos:k$},"./docs/en-US/manual/ui/actions/delete":{frontmatter:C$,toc:A$,texts:q$,demos:T$},"./docs/en-US/manual/ui/actions/export":{frontmatter:D$,toc:O$,texts:R$,demos:E$},"./docs/en-US/manual/ui/actions/filter":{frontmatter:L$,toc:N$,texts:z$,demos:M$},"./docs/en-US/manual/ui/actions/import":{frontmatter:B$,toc:j$,texts:H$,demos:F$},"./docs/en-US/manual/ui/actions/submit":{frontmatter:$$,toc:G$,texts:V$,demos:W$},"./docs/en-US/manual/workflow/advanced":{frontmatter:Z$,toc:Y$,texts:Q$,demos:K$},"./docs/en-US/plugins/audit-logs/index":{frontmatter:X$,toc:eG,texts:aG,demos:J$},"./docs/en-US/welcome/community/thanks":{frontmatter:nG,toc:oG,texts:rG,demos:tG},"./docs/en-US/welcome/introduction/why":{frontmatter:iG,toc:lG,texts:cG,demos:dG},"./docs/en-US/welcome/release/formulas":{frontmatter:uG,toc:pG,texts:IG,demos:sG},"./docs/en-US/welcome/release/inherits":{frontmatter:vG,toc:mG,texts:hG,demos:_G},"./docs/en-US/api/cache/cache-manager":{frontmatter:xG,toc:gG,texts:bG,demos:fG},"./docs/en-US/api/database/collection":{frontmatter:wG,toc:kG,texts:SG,demos:yG},"./docs/en-US/api/database/repository":{frontmatter:PG,toc:TG,texts:CG,demos:UG},"./docs/en-US/api/telemetry/telemetry":{frontmatter:qG,toc:EG,texts:DG,demos:AG},"./docs/en-US/development/client/i18n":{frontmatter:RG,toc:MG,texts:LG,demos:OG},"./docs/en-US/development/client/test":{frontmatter:zG,toc:FG,texts:BG,demos:NG},"./docs/en-US/development/others/deps":{frontmatter:HG,toc:WG,texts:$G,demos:jG},"./docs/en-US/development/server/i18n":{frontmatter:VG,toc:KG,texts:ZG,demos:GG},"./docs/en-US/development/server/test":{frontmatter:QG,toc:JG,texts:XG,demos:YG},"./docs/en-US/handbook/acl/user/index":{frontmatter:aV,toc:tV,texts:nV,demos:eV},"./docs/en-US/handbook/api-keys/index":{frontmatter:rV,toc:dV,texts:iV,demos:oV},"./docs/en-US/handbook/auth/dev/guide":{frontmatter:cV,toc:sV,texts:uV,demos:lV},"./docs/en-US/handbook/auth-cas/index":{frontmatter:IV,toc:_V,texts:vV,demos:pV},"./docs/en-US/handbook/auth-sms/index":{frontmatter:hV,toc:fV,texts:xV,demos:mV},"./docs/en-US/handbook/calendar/index":{frontmatter:bV,toc:yV,texts:wV,demos:gV},"./docs/en-US/handbook/ui/menus/index":{frontmatter:SV,toc:UV,texts:PV,demos:kV},"./docs/en-US/handbook/ui/pages/index":{frontmatter:CV,toc:AV,texts:qV,demos:TV},"./docs/en-US/handbook/workflow/index":{frontmatter:DV,toc:OV,texts:RV,demos:EV},"./docs/en-US/manual/collection/index":{frontmatter:LV,toc:NV,texts:zV,demos:MV},"./docs/en-US/manual/ui/actions/index":{frontmatter:BV,toc:jV,texts:HV,demos:FV},"./docs/en-US/manual/ui/actions/print":{frontmatter:$V,toc:GV,texts:VV,demos:WV},"./docs/en-US/plugins/auth/user/index":{frontmatter:ZV,toc:YV,texts:QV,demos:KV},"./docs/en-US/welcome/release/roadmap":{frontmatter:XV,toc:eK,texts:aK,demos:JV},"./docs/en-US/api/client/application":{frontmatter:nK,toc:oK,texts:rK,demos:tK},"./docs/en-US/api/database/operators":{frontmatter:iK,toc:lK,texts:cK,demos:dK},"./docs/en-US/api/resourcer/resource":{frontmatter:uK,toc:pK,texts:IK,demos:sK},"./docs/en-US/api/server/application":{frontmatter:vK,toc:mK,texts:hK,demos:_K},"./docs/en-US/breaking-changes/index":{frontmatter:xK,toc:gK,texts:bK,demos:fK},"./docs/en-US/development/life-cycle":{frontmatter:wK,toc:kK,texts:SK,demos:yK},"./docs/en-US/handbook/api-doc/index":{frontmatter:PK,toc:TK,texts:CK,demos:UK},"./docs/en-US/handbook/backups/index":{frontmatter:qK,toc:EK,texts:DK,demos:AK},"./docs/en-US/manual/ui/actions/edit":{frontmatter:RK,toc:MK,texts:LK,demos:OK},"./docs/en-US/manual/ui/actions/view":{frontmatter:zK,toc:FK,texts:BK,demos:NK},"./docs/en-US/manual/ui/blocks/index":{frontmatter:HK,toc:WK,texts:$K,demos:jK},"./docs/en-US/manual/ui/fields/index":{frontmatter:VK,toc:KK,texts:ZK,demos:GK},"./docs/en-US/plugins/acl/user/index":{frontmatter:QK,toc:JK,texts:XK,demos:YK},"./docs/en-US/plugins/api-keys/index":{frontmatter:aZ,toc:tZ,texts:nZ,demos:eZ},"./docs/en-US/plugins/auth/dev/guide":{frontmatter:rZ,toc:dZ,texts:iZ,demos:oZ},"./docs/en-US/plugins/sms-auth/index":{frontmatter:cZ,toc:sZ,texts:uZ,demos:lZ},"./docs/en-US/plugins/workflow/index":{frontmatter:IZ,toc:_Z,texts:vZ,demos:pZ},"./docs/en-US/welcome/release/logger":{frontmatter:hZ,toc:fZ,texts:xZ,demos:mZ},"./docs/en-US/api/auth/auth-manager":{frontmatter:bZ,toc:yZ,texts:wZ,demos:gZ},"./docs/en-US/development/plugin-ds":{frontmatter:SZ,toc:UZ,texts:PZ,demos:kZ},"./docs/en-US/handbook/auth/dev/api":{frontmatter:CZ,toc:AZ,texts:qZ,demos:TZ},"./docs/en-US/handbook/client/index":{frontmatter:DZ,toc:OZ,texts:RZ,demos:EZ},"./docs/en-US/handbook/logger/index":{frontmatter:LZ,toc:NZ,texts:zZ,demos:MZ},"./docs/en-US/handbook/mobile/index":{frontmatter:BZ,toc:jZ,texts:HZ,demos:FZ},"./docs/en-US/handbook/ui/variables":{frontmatter:$Z,toc:GZ,texts:VZ,demos:WZ},"./docs/en-US/manual/ui/menus/index":{frontmatter:ZZ,toc:YZ,texts:QZ,demos:KZ},"./docs/en-US/manual/ui/pages/index":{frontmatter:XZ,toc:eY,texts:aY,demos:JZ},"./docs/en-US/manual/workflow/index":{frontmatter:nY,toc:oY,texts:rY,demos:tY},"./docs/en-US/manual/workflow/start":{frontmatter:iY,toc:lY,texts:cY,demos:dY},"./docs/en-US/plugins/api-doc/index":{frontmatter:uY,toc:pY,texts:IY,demos:sY},"./docs/en-US/welcome/community/faq":{frontmatter:vY,toc:mY,texts:hY,demos:_Y},"./docs/en-US/welcome/release/index":{frontmatter:xY,toc:gY,texts:bY,demos:fY},"./docs/en-US/api/resourcer/action":{frontmatter:wY,toc:kY,texts:SY,demos:yY},"./docs/en-US/api/server/migration":{frontmatter:PY,toc:TY,texts:CY,demos:UY},"./docs/en-US/api/telemetry/metric":{frontmatter:qY,toc:EY,texts:DY,demos:AY},"./docs/en-US/handbook/embed/index":{frontmatter:RY,toc:MY,texts:LY,demos:OY},"./docs/en-US/handbook/users/index":{frontmatter:zY,toc:FY,texts:BY,demos:NY},"./docs/en-US/plugin-samples/index":{frontmatter:HY,toc:WY,texts:$Y,demos:jY},"./docs/en-US/plugins/auth/dev/api":{frontmatter:VY,toc:KY,texts:ZY,demos:GY},"./docs/en-US/plugins/client/index":{frontmatter:QY,toc:JY,texts:XY,demos:YY},"./docs/en-US/plugins/export/index":{frontmatter:aQ,toc:tQ,texts:nQ,demos:eQ},"./docs/en-US/plugins/import/index":{frontmatter:rQ,toc:dQ,texts:iQ,demos:oQ},"./docs/en-US/plugins/kanban/index":{frontmatter:cQ,toc:sQ,texts:uQ,demos:lQ},"./docs/en-US/plugins/logger/index":{frontmatter:IQ,toc:_Q,texts:vQ,demos:pQ},"./docs/en-US/api/database/shared":{frontmatter:hQ,toc:fQ,texts:xQ,demos:mQ},"./docs/en-US/api/database/shared/destroy-options":{frontmatter:bQ,toc:yQ,texts:wQ,demos:gQ},"./docs/en-US/api/database/shared/create-options":{frontmatter:SQ,toc:UQ,texts:PQ,demos:kQ},"./docs/en-US/api/database/shared/update-options":{frontmatter:CQ,toc:AQ,texts:qQ,demos:TQ},"./docs/en-US/api/database/shared/find-options":{frontmatter:DQ,toc:OQ,texts:RQ,demos:EQ},"./docs/en-US/api/database/shared/transaction":{frontmatter:LQ,toc:NQ,texts:zQ,demos:MQ},"./docs/en-US/api/database/shared/find-one":{frontmatter:BQ,toc:jQ,texts:HQ,demos:FQ},"./docs/en-US/api/telemetry/trace":{frontmatter:$Q,toc:GQ,texts:VQ,demos:WQ},"./docs/en-US/handbook/auth/index":{frontmatter:ZQ,toc:YQ,texts:QQ,demos:KQ},"./docs/en-US/manual/mobile/index":{frontmatter:XQ,toc:eJ,texts:aJ,demos:JQ},"./docs/en-US/plugins/gantt/index":{frontmatter:nJ,toc:oJ,texts:rJ,demos:tJ},"./docs/en-US/plugins/users/index":{frontmatter:iJ,toc:lJ,texts:cJ,demos:dJ},"./docs/en-US/api/auth/base-auth":{frontmatter:uJ,toc:pJ,texts:IJ,demos:sJ},"./docs/en-US/api/database/field":{frontmatter:vJ,toc:mJ,texts:hJ,demos:_J},"./docs/en-US/api/database/index":{frontmatter:xJ,toc:gJ,texts:bJ,demos:fJ},"./docs/en-US/development/app-ds":{frontmatter:wJ,toc:kJ,texts:SJ,demos:yJ},"./docs/en-US/development/plugin":{frontmatter:PJ,toc:TJ,texts:CJ,demos:UJ},"./docs/en-US/handbook/acl/index":{frontmatter:qJ,toc:EJ,texts:DJ,demos:AJ},"./docs/en-US/handbook/ui/pop-up":{frontmatter:RJ,toc:MJ,texts:LJ,demos:OJ},"./docs/en-US/plugins/auth/index":{frontmatter:zJ,toc:FJ,texts:BJ,demos:NJ},"./docs/en-US/plugins/oidc/index":{frontmatter:HJ,toc:WJ,texts:$J,demos:jJ},"./docs/en-US/plugins/saml/index":{frontmatter:VJ,toc:KJ,texts:ZJ,demos:GJ},"./docs/en-US/api/client/router":{frontmatter:QJ,toc:JJ,texts:XJ,demos:YJ},"./docs/en-US/api/http/rest-api":{frontmatter:aX,toc:tX,texts:nX,demos:eX},"./docs/en-US/api/server/plugin":{frontmatter:rX,toc:dX,texts:iX,demos:oX},"./docs/en-US/development/index":{frontmatter:cX,toc:sX,texts:uX,demos:lX},"./docs/en-US/manual/ui/inherit":{frontmatter:IX,toc:_X,texts:vX,demos:pX},"./docs/en-US/manual/ui/linkage":{frontmatter:hX,toc:fX,texts:xX,demos:mX},"./docs/en-US/plugins/acl/index":{frontmatter:bX,toc:yX,texts:wX,demos:gX},"./docs/en-US/plugins/cas/index":{frontmatter:SX,toc:UX,texts:PX,demos:kX},"./docs/en-US/plugins/map/index":{frontmatter:CX,toc:AX,texts:qX,demos:TX},"./docs/en-US/api/client/index":{frontmatter:DX,toc:OX,texts:RX,demos:EX},"./docs/en-US/api/cache/cache":{frontmatter:LX,toc:NX,texts:zX,demos:MX},"./docs/en-US/api/sdk/storage":{frontmatter:BX,toc:jX,texts:HX,demos:FX},"./docs/en-US/api/test/client":{frontmatter:$X,toc:GX,texts:VX,demos:WX},"./docs/en-US/api/test/server":{frontmatter:ZX,toc:YX,texts:QX,demos:KX},"./docs/en-US/manual/ui/index":{frontmatter:XX,toc:eee,texts:aee,demos:JX},"./docs/en-US/api/http/index":{frontmatter:nee,toc:oee,texts:ree,demos:tee},"./docs/en-US/handbook/index":{frontmatter:iee,toc:lee,texts:cee,demos:dee},"./docs/en-US/api/auth/auth":{frontmatter:uee,toc:pee,texts:Iee,demos:see},"./docs/en-US/api/sdk/index":{frontmatter:vee,toc:mee,texts:hee,demos:_ee},"./docs/en-US/plugins/index":{frontmatter:xee,toc:gee,texts:bee,demos:fee},"./docs/en-US/api/sdk/auth":{frontmatter:wee,toc:kee,texts:See,demos:yee},"./docs/en-US/api/test/e2e":{frontmatter:Pee,toc:Tee,texts:Cee,demos:Uee},"./docs/en-US/api/acl/acl":{frontmatter:qee,toc:Eee,texts:Dee,demos:Aee},"./docs/en-US/api/actions":{frontmatter:Ree,toc:Mee,texts:Lee,demos:Oee},"./docs/en-US/welcome/how":{frontmatter:zee,toc:Fee,texts:Bee,demos:Nee},"./docs/en-US/api/logger":{frontmatter:Hee,toc:Wee,texts:$ee,demos:jee},"./docs/en-US/components":{frontmatter:Vee,toc:Kee,texts:Zee,demos:Gee},"./docs/en-US/api/index":{frontmatter:Qee,toc:Jee,texts:Xee,demos:Yee},"./docs/en-US/api/cli":{frontmatter:aae,toc:tae,texts:nae,demos:eae},"./docs/en-US/index":{frontmatter:rae,toc:dae,texts:iae,demos:oae}},sae=Object.entries(op).reduce(function(Vt,Ga){var va=r()(Ga,2),Fa=va[0],lt=va[1];return Object.values(lt.demos).forEach(function(Ka){Ka.routeId=Fa}),Object.assign(Vt,lt.demos),delete lt.demos,Vt},{})},36704:function(_,m,e){"use strict";e.d(m,{Ac:function(){return L},ql:function(){return u.ql},rU:function(){return c},Fg:function(){return l.Navigate},j3:function(){return l.Outlet},Q$:function(){return F},fW:function(){return i.createSearchParams},p6:function(){return V},m8:function(){return G.m},fp:function(){return l.matchRoutes},Ov:function(){return s.Ov},TH:function(){return l.useLocation},s0:function(){return l.useNavigate},pC:function(){return l.useOutlet},UO:function(){return l.useParams},Qt:function(){return p.Q},lr:function(){return i.useSearchParams}});var o=e(87462),r=e(91),n=e(67294),i=e(39711),s=e(34162),I=["prefetch"];function c(Y){var me,we=Y.prefetch,De=(0,r.Z)(Y,I),Ee=(0,s.Ov)(),ze=typeof Y.to=="string"?Y.to:(me=Y.to)===null||me===void 0?void 0:me.pathname;return ze?n.createElement(i.Link,(0,o.Z)({onMouseEnter:function(){var ie;return we&&ze&&((ie=Ee.preloadRoute)===null||ie===void 0?void 0:ie.call(Ee,ze))}},De),Y.children):null}var u=e(70405),l=e(96974),p=e(59918),h=e(74165),v=e(1413),g=e(15861),y=e(71002),b=e(37762),w=e(84506),k=e(15671),q=e(43144),P=e(4942);function D(Y,me){if(!Y)throw new Error(me)}function T(Y){var me=Y.fns,we=Y.args;if(me.length===1)return me[0];var De=me.pop();return me.reduce(function(Ee,ze){return function(){return ze(Ee,we)}},De)}function R(Y){return!!Y&&(0,y.Z)(Y)==="object"&&typeof Y.then=="function"}var L=function(Y){return Y.compose="compose",Y.modify="modify",Y.event="event",Y}({}),F=function(){function Y(me){(0,k.Z)(this,Y),(0,P.Z)(this,"opts",void 0),(0,P.Z)(this,"hooks",{}),this.opts=me}return(0,q.Z)(Y,[{key:"register",value:function(we){var De=this;D(we.apply,"plugin register failed, apply must supplied"),Object.keys(we.apply).forEach(function(Ee){D(De.opts.validKeys.indexOf(Ee)>-1,"register failed, invalid key ".concat(Ee," ").concat(we.path?"from plugin ".concat(we.path):"",".")),De.hooks[Ee]=(De.hooks[Ee]||[]).concat(we.apply[Ee])})}},{key:"getHooks",value:function(we){var De=we.split("."),Ee=(0,w.Z)(De),ze=Ee[0],Ge=Ee.slice(1),ie=this.hooks[ze]||[];return Ge.length&&(ie=ie.map(function(J){try{var le=J,X=(0,b.Z)(Ge),pe;try{for(X.s();!(pe=X.n()).done;){var ne=pe.value;le=le[ne]}}catch(se){X.e(se)}finally{X.f()}return le}catch(se){return null}}).filter(Boolean)),ie}},{key:"applyPlugins",value:function(we){var De=we.key,Ee=we.type,ze=we.initialValue,Ge=we.args,ie=we.async,J=this.getHooks(De)||[];switch(Ge&&D((0,y.Z)(Ge)==="object","applyPlugins failed, args must be plain object."),ie&&D(Ee===L.modify||Ee===L.event,"async only works with modify and event type."),Ee){case L.modify:return ie?J.reduce(function(){var le=(0,g.Z)((0,h.Z)().mark(function X(pe,ne){var se;return(0,h.Z)().wrap(function(be){for(;;)switch(be.prev=be.next){case 0:if(D(typeof ne=="function"||(0,y.Z)(ne)==="object"||R(ne),"applyPlugins failed, all hooks for key ".concat(De," must be function, plain object or Promise.")),!R(pe)){be.next=5;break}return be.next=4,pe;case 4:pe=be.sent;case 5:if(typeof ne!="function"){be.next=16;break}if(se=ne(pe,Ge),!R(se)){be.next=13;break}return be.next=10,se;case 10:return be.abrupt("return",be.sent);case 13:return be.abrupt("return",se);case 14:be.next=21;break;case 16:if(!R(ne)){be.next=20;break}return be.next=19,ne;case 19:ne=be.sent;case 20:return be.abrupt("return",(0,v.Z)((0,v.Z)({},pe),ne));case 21:case"end":return be.stop()}},X)}));return function(X,pe){return le.apply(this,arguments)}}(),R(ze)?ze:Promise.resolve(ze)):J.reduce(function(le,X){return D(typeof X=="function"||(0,y.Z)(X)==="object","applyPlugins failed, all hooks for key ".concat(De," must be function or plain object.")),typeof X=="function"?X(le,Ge):(0,v.Z)((0,v.Z)({},le),X)},ze);case L.event:return(0,g.Z)((0,h.Z)().mark(function le(){var X,pe,ne,se;return(0,h.Z)().wrap(function(be){for(;;)switch(be.prev=be.next){case 0:X=(0,b.Z)(J),be.prev=1,X.s();case 3:if((pe=X.n()).done){be.next=12;break}if(ne=pe.value,D(typeof ne=="function","applyPlugins failed, all hooks for key ".concat(De," must be function.")),se=ne(Ge),!(ie&&R(se))){be.next=10;break}return be.next=10,se;case 10:be.next=3;break;case 12:be.next=17;break;case 14:be.prev=14,be.t0=be.catch(1),X.e(be.t0);case 17:return be.prev=17,X.f(),be.finish(17);case 20:case"end":return be.stop()}},le,null,[[1,14,17,20]])}))();case L.compose:return function(){return T({fns:J.concat(ze),args:Ge})()}}}}],[{key:"create",value:function(we){var De=new Y({validKeys:we.validKeys});return we.plugins.forEach(function(Ee){De.register(Ee)}),De}}]),Y}(),G=e(82651),Z=e(18698),ce=e.n(Z),fe=0,_e=0;function oe(Y,me){if(!1)var we}function ee(Y){return JSON.stringify(Y,null,2)}function ae(Y){var me=Y.length>1?Y.map(K).join(" "):Y[0];return ce()(me)==="object"?"".concat(ee(me)):me.toString()}function K(Y){return ce()(Y)==="object"?"".concat(JSON.stringify(Y)):Y.toString()}var $={log:function(){for(var me=arguments.length,we=new Array(me),De=0;De-1,"register failed, invalid key ".concat(Ee," ").concat(we.path?"from plugin ".concat(we.path):"",".")),De.hooks[Ee]=(De.hooks[Ee]||[]).concat(we.apply[Ee])})}},{key:"getHooks",value:function(we){var De=we.split("."),Ee=(0,w.Z)(De),ze=Ee[0],Ge=Ee.slice(1),ie=this.hooks[ze]||[];return Ge.length&&(ie=ie.map(function(J){try{var le=J,X=(0,b.Z)(Ge),pe;try{for(X.s();!(pe=X.n()).done;){var ne=pe.value;le=le[ne]}}catch(se){X.e(se)}finally{X.f()}return le}catch(se){return null}}).filter(Boolean)),ie}},{key:"applyPlugins",value:function(we){var De=we.key,Ee=we.type,ze=we.initialValue,Ge=we.args,ie=we.async,J=this.getHooks(De)||[];switch(Ge&&D((0,y.Z)(Ge)==="object","applyPlugins failed, args must be plain object."),ie&&D(Ee===L.modify||Ee===L.event,"async only works with modify and event type."),Ee){case L.modify:return ie?J.reduce(function(){var le=(0,g.Z)((0,h.Z)().mark(function X(pe,ne){var se;return(0,h.Z)().wrap(function(be){for(;;)switch(be.prev=be.next){case 0:if(D(typeof ne=="function"||(0,y.Z)(ne)==="object"||R(ne),"applyPlugins failed, all hooks for key ".concat(De," must be function, plain object or Promise.")),!R(pe)){be.next=5;break}return be.next=4,pe;case 4:pe=be.sent;case 5:if(typeof ne!="function"){be.next=16;break}if(se=ne(pe,Ge),!R(se)){be.next=13;break}return be.next=10,se;case 10:return be.abrupt("return",be.sent);case 13:return be.abrupt("return",se);case 14:be.next=21;break;case 16:if(!R(ne)){be.next=20;break}return be.next=19,ne;case 19:ne=be.sent;case 20:return be.abrupt("return",(0,v.Z)((0,v.Z)({},pe),ne));case 21:case"end":return be.stop()}},X)}));return function(X,pe){return le.apply(this,arguments)}}(),R(ze)?ze:Promise.resolve(ze)):J.reduce(function(le,X){return D(typeof X=="function"||(0,y.Z)(X)==="object","applyPlugins failed, all hooks for key ".concat(De," must be function or plain object.")),typeof X=="function"?X(le,Ge):(0,v.Z)((0,v.Z)({},le),X)},ze);case L.event:return(0,g.Z)((0,h.Z)().mark(function le(){var X,pe,ne,se;return(0,h.Z)().wrap(function(be){for(;;)switch(be.prev=be.next){case 0:X=(0,b.Z)(J),be.prev=1,X.s();case 3:if((pe=X.n()).done){be.next=12;break}if(ne=pe.value,D(typeof ne=="function","applyPlugins failed, all hooks for key ".concat(De," must be function.")),se=ne(Ge),!(ie&&R(se))){be.next=10;break}return be.next=10,se;case 10:be.next=3;break;case 12:be.next=17;break;case 14:be.prev=14,be.t0=be.catch(1),X.e(be.t0);case 17:return be.prev=17,X.f(),be.finish(17);case 20:case"end":return be.stop()}},le,null,[[1,14,17,20]])}))();case L.compose:return function(){return T({fns:J.concat(ze),args:Ge})()}}}}],[{key:"create",value:function(we){var De=new Y({validKeys:we.validKeys});return we.plugins.forEach(function(Ee){De.register(Ee)}),De}}]),Y}(),G=e(82651),Z=e(18698),ce=e.n(Z),fe=0,_e=0;function oe(Y,me){if(!1)var we}function ee(Y){return JSON.stringify(Y,null,2)}function ae(Y){var me=Y.length>1?Y.map(K).join(" "):Y[0];return ce()(me)==="object"?"".concat(ee(me)):me.toString()}function K(Y){return ce()(Y)==="object"?"".concat(JSON.stringify(Y)):Y.toString()}var $={log:function(){for(var me=arguments.length,we=new Array(me),De=0;De_.length)&&(m=_.length);for(var e=0,o=new Array(m);ep.length)&&(h=p.length);for(var v=0,g=new Array(h);vP.length)&&(D=P.length);for(var T=0,R=new Array(D);T=0)&&(s[c]=n[c]);return s}function r(n,i){if(n==null)return{};var s=o(n,i),I,c;if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(n);for(c=0;c=0)&&Object.prototype.propertyIsEnumerable.call(n,I)&&(s[I]=n[I])}return s}},82963:function(_,m,e){"use strict";e.d(m,{Z:function(){return n}});var o=e(71002),r=e(97326);function n(i,s){if(s&&((0,o.Z)(s)==="object"||typeof s=="function"))return s;if(s!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return(0,r.Z)(i)}},74165:function(_,m,e){"use strict";e.d(m,{Z:function(){return r}});var o=e(71002);function r(){"use strict";r=function(){return i};var n,i={},s=Object.prototype,I=s.hasOwnProperty,c=Object.defineProperty||function(z,S,E){z[S]=E.value},u=typeof Symbol=="function"?Symbol:{},l=u.iterator||"@@iterator",p=u.asyncIterator||"@@asyncIterator",h=u.toStringTag||"@@toStringTag";function v(z,S,E){return Object.defineProperty(z,S,{value:E,enumerable:!0,configurable:!0,writable:!0}),z[S]}try{v({},"")}catch(z){v=function(E,H,Q){return E[H]=Q}}function g(z,S,E,H){var Q=S&&S.prototype instanceof D?S:D,W=Object.create(Q.prototype),C=new K(H||[]);return c(W,"_invoke",{value:_e(z,E,C)}),W}function y(z,S,E){try{return{type:"normal",arg:z.call(S,E)}}catch(H){return{type:"throw",arg:H}}}i.wrap=g;var b="suspendedStart",w="suspendedYield",k="executing",q="completed",P={};function D(){}function T(){}function R(){}var L={};v(L,l,function(){return this});var F=Object.getPrototypeOf,G=F&&F(F($([])));G&&G!==s&&I.call(G,l)&&(L=G);var Z=R.prototype=D.prototype=Object.create(L);function ce(z){["next","throw","return"].forEach(function(S){v(z,S,function(E){return this._invoke(S,E)})})}function fe(z,S){function E(Q,W,C,B){var V=y(z[Q],z,W);if(V.type!=="throw"){var te=V.arg,Y=te.value;return Y&&(0,o.Z)(Y)=="object"&&I.call(Y,"__await")?S.resolve(Y.__await).then(function(me){E("next",me,C,B)},function(me){E("throw",me,C,B)}):S.resolve(Y).then(function(me){te.value=me,C(te)},function(me){return E("throw",me,C,B)})}B(V.arg)}var H;c(this,"_invoke",{value:function(W,C){function B(){return new S(function(V,te){E(W,C,V,te)})}return H=H?H.then(B,B):B()}})}function _e(z,S,E){var H=b;return function(Q,W){if(H===k)throw new Error("Generator is already running");if(H===q){if(Q==="throw")throw W;return{value:n,done:!0}}for(E.method=Q,E.arg=W;;){var C=E.delegate;if(C){var B=oe(C,E);if(B){if(B===P)continue;return B}}if(E.method==="next")E.sent=E._sent=E.arg;else if(E.method==="throw"){if(H===b)throw H=q,E.arg;E.dispatchException(E.arg)}else E.method==="return"&&E.abrupt("return",E.arg);H=k;var V=y(z,S,E);if(V.type==="normal"){if(H=E.done?q:w,V.arg===P)continue;return{value:V.arg,done:E.done}}V.type==="throw"&&(H=q,E.method="throw",E.arg=V.arg)}}}function oe(z,S){var E=S.method,H=z.iterator[E];if(H===n)return S.delegate=null,E==="throw"&&z.iterator.return&&(S.method="return",S.arg=n,oe(z,S),S.method==="throw")||E!=="return"&&(S.method="throw",S.arg=new TypeError("The iterator does not provide a '"+E+"' method")),P;var Q=y(H,z.iterator,S.arg);if(Q.type==="throw")return S.method="throw",S.arg=Q.arg,S.delegate=null,P;var W=Q.arg;return W?W.done?(S[z.resultName]=W.value,S.next=z.nextLoc,S.method!=="return"&&(S.method="next",S.arg=n),S.delegate=null,P):W:(S.method="throw",S.arg=new TypeError("iterator result is not an object"),S.delegate=null,P)}function ee(z){var S={tryLoc:z[0]};1 in z&&(S.catchLoc=z[1]),2 in z&&(S.finallyLoc=z[2],S.afterLoc=z[3]),this.tryEntries.push(S)}function ae(z){var S=z.completion||{};S.type="normal",delete S.arg,z.completion=S}function K(z){this.tryEntries=[{tryLoc:"root"}],z.forEach(ee,this),this.reset(!0)}function $(z){if(z||z===""){var S=z[l];if(S)return S.call(z);if(typeof z.next=="function")return z;if(!isNaN(z.length)){var E=-1,H=function Q(){for(;++E=0;--Q){var W=this.tryEntries[Q],C=W.completion;if(W.tryLoc==="root")return H("end");if(W.tryLoc<=this.prev){var B=I.call(W,"catchLoc"),V=I.call(W,"finallyLoc");if(B&&V){if(this.prev=0;--H){var Q=this.tryEntries[H];if(Q.tryLoc<=this.prev&&I.call(Q,"finallyLoc")&&this.prev=0;--E){var H=this.tryEntries[E];if(H.finallyLoc===S)return this.complete(H.completion,H.afterLoc),ae(H),P}},catch:function(S){for(var E=this.tryEntries.length-1;E>=0;--E){var H=this.tryEntries[E];if(H.tryLoc===S){var Q=H.completion;if(Q.type==="throw"){var W=Q.arg;ae(H)}return W}}throw new Error("illegal catch attempt")},delegateYield:function(S,E,H){return this.delegate={iterator:$(S),resultName:E,nextLoc:H},this.method==="next"&&(this.arg=n),P}},i}},97685:function(_,m,e){"use strict";e.d(m,{Z:function(){return s}});var o=e(83878);function r(I,c){var u=I==null?null:typeof Symbol!="undefined"&&I[Symbol.iterator]||I["@@iterator"];if(u!=null){var l,p,h,v,g=[],y=!0,b=!1;try{if(h=(u=u.call(I)).next,c===0){if(Object(u)!==u)return;y=!1}else for(;!(y=(l=h.call(u)).done)&&(g.push(l.value),g.length!==c);y=!0);}catch(w){b=!0,p=w}finally{try{if(!y&&u.return!=null&&(v=u.return(),Object(v)!==v))return}finally{if(b)throw p}}return g}}var n=e(40181),i=e(25267);function s(I,c){return(0,o.Z)(I)||r(I,c)||(0,n.Z)(I,c)||(0,i.Z)()}},84506:function(_,m,e){"use strict";e.d(m,{Z:function(){return s}});var o=e(83878),r=e(59199),n=e(40181),i=e(25267);function s(I){return(0,o.Z)(I)||(0,r.Z)(I)||(0,n.Z)(I)||(0,i.Z)()}},74902:function(_,m,e){"use strict";e.d(m,{Z:function(){return I}});var o=e(30907);function r(c){if(Array.isArray(c))return(0,o.Z)(c)}var n=e(59199),i=e(40181);function s(){throw new TypeError(`Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function I(c){return r(c)||(0,n.Z)(c)||(0,i.Z)(c)||s()}},83997:function(_,m,e){"use strict";e.d(m,{Z:function(){return n}});var o=e(71002);function r(i,s){if((0,o.Z)(i)!=="object"||i===null)return i;var I=i[Symbol.toPrimitive];if(I!==void 0){var c=I.call(i,s||"default");if((0,o.Z)(c)!=="object")return c;throw new TypeError("@@toPrimitive must return a primitive value.")}return(s==="string"?String:Number)(i)}function n(i){var s=r(i,"string");return(0,o.Z)(s)==="symbol"?s:String(s)}},71002:function(_,m,e){"use strict";e.d(m,{Z:function(){return o}});function o(r){"@babel/helpers - typeof";return o=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(n){return typeof n}:function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},o(r)}},40181:function(_,m,e){"use strict";e.d(m,{Z:function(){return r}});var o=e(30907);function r(n,i){if(n){if(typeof n=="string")return(0,o.Z)(n,i);var s=Object.prototype.toString.call(n).slice(8,-1);if(s==="Object"&&n.constructor&&(s=n.constructor.name),s==="Map"||s==="Set")return Array.from(n);if(s==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s))return(0,o.Z)(n,i)}}},13427:function(_,m,e){"use strict";e.d(m,{Z:function(){return I}});function o(c){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(l){return l.__proto__||Object.getPrototypeOf(l)},o(c)}function r(){try{var c=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(u){}return(r=function(){return!!c})()}var n=e(38442);function i(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function s(c,u){if(u&&((0,n.Z)(u)==="object"||typeof u=="function"))return u;if(u!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return i(c)}function I(c,u,l){return u=o(u),s(c,r()?Reflect.construct(u,l||[],o(c).constructor):u.apply(c,l))}},83493:function(_,m,e){"use strict";e.d(m,{Z:function(){return o}});function o(r,n){if(!(r instanceof n))throw new TypeError("Cannot call a class as a function")}},28141:function(_,m,e){"use strict";e.d(m,{Z:function(){return n}});var o=e(43655);function r(i,s){for(var I=0;Ir.length)&&(n=r.length);for(var i=0,s=new Array(n);i0?(0,r.uO)(u,--I):0,i--,c===10&&(i=1,n--),c}function y(){return c=I2||q(c)>3?"":" "}function F($){for(;y();)switch(q(c)){case 0:append(fe(I-1),$);break;case 2:append(T(c),$);break;default:append(from(c),$)}return $}function G($,z){for(;--z&&y()&&!(c<48||c>102||c>57&&c<65||c>70&&c<97););return k($,w()+(z<6&&b()==32&&y()==32))}function Z($){for(;y();)switch(c){case $:return I;case 34:case 39:$!==34&&$!==39&&Z(c);break;case 40:$===41&&Z($);break;case 92:y();break}return I}function ce($,z){for(;y()&&$+c!==57;)if($+c===84&&b()===47)break;return"/*"+k(z,I-1)+"*"+(0,r.Dp)($===47?$:y())}function fe($){for(;!q(b());)y();return k($,I)}function _e($){return D(oe("",null,null,null,[""],$=P($),0,[0],$))}function oe($,z,S,E,H,Q,W,C,B){for(var V=0,te=0,Y=W,me=0,we=0,De=0,Ee=1,ze=1,Ge=1,ie=0,J="",le=H,X=Q,pe=E,ne=J;ze;)switch(De=ie,ie=y()){case 40:if(De!=108&&(0,r.uO)(ne,Y-1)==58){(0,r.Cw)(ne+=(0,r.gx)(T(ie),"&","&\f"),"&\f")!=-1&&(Ge=-1);break}case 34:case 39:case 91:ne+=T(ie);break;case 9:case 10:case 13:case 32:ne+=L(De);break;case 92:ne+=G(w()-1,7);continue;case 47:switch(b()){case 42:case 47:(0,r.R3)(ae(ce(y(),w()),z,S,B),B);break;default:ne+="/"}break;case 123*Ee:C[V++]=(0,r.to)(ne)*Ge;case 125*Ee:case 59:case 0:switch(ie){case 0:case 125:ze=0;case 59+te:Ge==-1&&(ne=(0,r.gx)(ne,/\f/g,"")),we>0&&(0,r.to)(ne)-Y&&(0,r.R3)(we>32?K(ne+";",E,S,Y-1,B):K((0,r.gx)(ne," ","")+";",E,S,Y-2,B),B);break;case 59:ne+=";";default:if((0,r.R3)(pe=ee(ne,z,S,V,te,H,C,J,le=[],X=[],Y,Q),Q),ie===123)if(te===0)oe(ne,z,pe,pe,le,Q,Y,C,X);else switch(me===99&&(0,r.uO)(ne,3)===110?100:me){case 100:case 108:case 109:case 115:oe($,pe,pe,E&&(0,r.R3)(ee($,pe,pe,0,0,H,C,J,H,le=[],Y,X),X),H,X,Y,C,E?le:X);break;default:oe(ne,pe,pe,pe,[""],X,0,C,X)}}V=te=we=0,Ee=Ge=1,J=ne="",Y=W;break;case 58:Y=1+(0,r.to)(ne),we=De;default:if(Ee<1){if(ie==123)--Ee;else if(ie==125&&Ee++==0&&g()==125)continue}switch(ne+=(0,r.Dp)(ie),ie*Ee){case 38:Ge=te>0?1:(ne+="\f",-1);break;case 44:C[V++]=((0,r.to)(ne)-1)*Ge,Ge=1;break;case 64:b()===45&&(ne+=T(y())),me=b(),te=Y=(0,r.to)(J=ne+=fe(w())),ie++;break;case 45:De===45&&(0,r.to)(ne)==2&&(Ee=0)}}return Q}function ee($,z,S,E,H,Q,W,C,B,V,te,Y){for(var me=H-1,we=H===0?Q:[""],De=(0,r.Ei)(we),Ee=0,ze=0,Ge=0;Ee0?we[ie]+" "+J:(0,r.gx)(J,/&\f/g,we[ie])))&&(B[Ge++]=le);return l($,z,S,H===0?o.Fr:C,B,V,te,Y)}function ae($,z,S,E){return l($,z,S,o.Ab,(0,r.Dp)(v()),(0,r.tb)($,2,-2),0,E)}function K($,z,S,E,H){return l($,z,S,o.h5,(0,r.tb)($,0,E),(0,r.tb)($,E+1,-1),E,H)}},20211:function(_,m,e){"use strict";e.d(m,{P:function(){return i},q:function(){return n}});var o=e(27563),r=e(26686);function n(s,I){for(var c="",u=0;un?p?(b=Date.now(),u||(g=setTimeout(v?G:F,n))):F():u!==!0&&(g=setTimeout(v?G:F,v===void 0?n-L:n))}return q.cancel=k,q}function r(n,i,s){var I=s||{},c=I.atBegin,u=c===void 0?!1:c;return o(n,i,{debounceMode:u!==!1})}},97582:function(_,m,e){"use strict";e.d(m,{CR:function(){return k},Jh:function(){return g},XA:function(){return w},ZT:function(){return r},_T:function(){return i},ev:function(){return D},mG:function(){return v},pi:function(){return n},pr:function(){return P}});var o=function(S,E){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(H,Q){H.__proto__=Q}||function(H,Q){for(var W in Q)Object.prototype.hasOwnProperty.call(Q,W)&&(H[W]=Q[W])},o(S,E)};function r(S,E){if(typeof E!="function"&&E!==null)throw new TypeError("Class extends value "+String(E)+" is not a constructor or null");o(S,E);function H(){this.constructor=S}S.prototype=E===null?Object.create(E):(H.prototype=E.prototype,new H)}var n=function(){return n=Object.assign||function(E){for(var H,Q=1,W=arguments.length;Q=0;V--)(B=S[V])&&(C=(W<3?B(C):W>3?B(E,H,C):B(E,H))||C);return W>3&&C&&Object.defineProperty(E,H,C),C}function I(S,E){return function(H,Q){E(H,Q,S)}}function c(S,E,H,Q,W,C){function B(J){if(J!==void 0&&typeof J!="function")throw new TypeError("Function expected");return J}for(var V=Q.kind,te=V==="getter"?"get":V==="setter"?"set":"value",Y=!E&&S?Q.static?S:S.prototype:null,me=E||(Y?Object.getOwnPropertyDescriptor(Y,Q.name):{}),we,De=!1,Ee=H.length-1;Ee>=0;Ee--){var ze={};for(var Ge in Q)ze[Ge]=Ge==="access"?{}:Q[Ge];for(var Ge in Q.access)ze.access[Ge]=Q.access[Ge];ze.addInitializer=function(J){if(De)throw new TypeError("Cannot add initializers after decoration has completed");C.push(B(J||null))};var ie=(0,H[Ee])(V==="accessor"?{get:me.get,set:me.set}:me[te],ze);if(V==="accessor"){if(ie===void 0)continue;if(ie===null||typeof ie!="object")throw new TypeError("Object expected");(we=B(ie.get))&&(me.get=we),(we=B(ie.set))&&(me.set=we),(we=B(ie.init))&&W.unshift(we)}else(we=B(ie))&&(V==="field"?W.unshift(we):me[te]=we)}Y&&Object.defineProperty(Y,Q.name,me),De=!0}function u(S,E,H){for(var Q=arguments.length>2,W=0;W0&&C[C.length-1])&&(Y[0]===6||Y[0]===2)){H=0;continue}if(Y[0]===3&&(!C||Y[1]>C[0]&&Y[1]=S.length&&(S=void 0),{value:S&&S[Q++],done:!S}}};throw new TypeError(E?"Object is not iterable.":"Symbol.iterator is not defined.")}function k(S,E){var H=typeof Symbol=="function"&&S[Symbol.iterator];if(!H)return S;var Q=H.call(S),W,C=[],B;try{for(;(E===void 0||E-- >0)&&!(W=Q.next()).done;)C.push(W.value)}catch(V){B={error:V}}finally{try{W&&!W.done&&(H=Q.return)&&H.call(Q)}finally{if(B)throw B.error}}return C}function q(){for(var S=[],E=0;E1||V(De,Ee)})})}function V(De,Ee){try{te(Q[De](Ee))}catch(ze){we(C[0][3],ze)}}function te(De){De.value instanceof T?Promise.resolve(De.value.v).then(Y,me):we(C[0][2],De)}function Y(De){V("next",De)}function me(De){V("throw",De)}function we(De,Ee){De(Ee),C.shift(),C.length&&V(C[0][0],C[0][1])}}function L(S){var E,H;return E={},Q("next"),Q("throw",function(W){throw W}),Q("return"),E[Symbol.iterator]=function(){return this},E;function Q(W,C){E[W]=S[W]?function(B){return(H=!H)?{value:T(S[W](B)),done:!1}:C?C(B):B}:C}}function F(S){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var E=S[Symbol.asyncIterator],H;return E?E.call(S):(S=typeof w=="function"?w(S):S[Symbol.iterator](),H={},Q("next"),Q("throw"),Q("return"),H[Symbol.asyncIterator]=function(){return this},H);function Q(C){H[C]=S[C]&&function(B){return new Promise(function(V,te){B=S[C](B),W(V,te,B.done,B.value)})}}function W(C,B,V,te){Promise.resolve(te).then(function(Y){C({value:Y,done:V})},B)}}function G(S,E){return Object.defineProperty?Object.defineProperty(S,"raw",{value:E}):S.raw=E,S}var Z=Object.create?function(S,E){Object.defineProperty(S,"default",{enumerable:!0,value:E})}:function(S,E){S.default=E};function ce(S){if(S&&S.__esModule)return S;var E={};if(S!=null)for(var H in S)H!=="default"&&Object.prototype.hasOwnProperty.call(S,H)&&y(E,S,H);return Z(E,S),E}function fe(S){return S&&S.__esModule?S:{default:S}}function _e(S,E,H,Q){if(H==="a"&&!Q)throw new TypeError("Private accessor was defined without a getter");if(typeof E=="function"?S!==E||!Q:!E.has(S))throw new TypeError("Cannot read private member from an object whose class did not declare it");return H==="m"?Q:H==="a"?Q.call(S):Q?Q.value:E.get(S)}function oe(S,E,H,Q,W){if(Q==="m")throw new TypeError("Private method is not writable");if(Q==="a"&&!W)throw new TypeError("Private accessor was defined without a setter");if(typeof E=="function"?S!==E||!W:!E.has(S))throw new TypeError("Cannot write private member to an object whose class did not declare it");return Q==="a"?W.call(S,H):W?W.value=H:E.set(S,H),H}function ee(S,E){if(E===null||typeof E!="object"&&typeof E!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof S=="function"?E===S:S.has(E)}function ae(S,E,H){if(E!=null){if(typeof E!="object"&&typeof E!="function")throw new TypeError("Object expected.");var Q;if(H){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");Q=E[Symbol.asyncDispose]}if(Q===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");Q=E[Symbol.dispose]}if(typeof Q!="function")throw new TypeError("Object not disposable.");S.stack.push({value:E,dispose:Q,async:H})}else H&&S.stack.push({async:!0});return E}var K=typeof SuppressedError=="function"?SuppressedError:function(S,E,H){var Q=new Error(H);return Q.name="SuppressedError",Q.error=S,Q.suppressed=E,Q};function $(S){function E(Q){S.error=S.hasError?new K(Q,S.error,"An error was suppressed during disposal."):Q,S.hasError=!0}function H(){for(;S.stack.length;){var Q=S.stack.pop();try{var W=Q.dispose&&Q.dispose.call(Q.value);if(Q.async)return Promise.resolve(W).then(H,function(C){return E(C),H()})}catch(C){E(C)}}if(S.hasError)throw S.error}return H()}var z={__extends:r,__assign:n,__rest:i,__decorate:s,__param:I,__metadata:h,__awaiter:v,__generator:g,__createBinding:y,__exportStar:b,__values:w,__read:k,__spread:q,__spreadArrays:P,__spreadArray:D,__await:T,__asyncGenerator:R,__asyncDelegator:L,__asyncValues:F,__makeTemplateObject:G,__importStar:ce,__importDefault:fe,__classPrivateFieldGet:_e,__classPrivateFieldSet:oe,__classPrivateFieldIn:ee,__addDisposableResource:ae,__disposeResources:$}}},__webpack_module_cache__={};function __webpack_require__(_){var m=__webpack_module_cache__[_];if(m!==void 0)return m.exports;var e=__webpack_module_cache__[_]={id:_,loaded:!1,exports:{}};return __webpack_modules__[_].call(e.exports,e,e.exports,__webpack_require__),e.loaded=!0,e.exports}__webpack_require__.m=__webpack_modules__,function(){__webpack_require__.amdD=function(){throw new Error("define cannot be used indirect")}}(),function(){__webpack_require__.amdO={}}(),function(){__webpack_require__.n=function(_){var m=_&&_.__esModule?function(){return _.default}:function(){return _};return __webpack_require__.d(m,{a:m}),m}}(),function(){var _=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},m;__webpack_require__.t=function(e,o){if(o&1&&(e=this(e)),o&8||typeof e=="object"&&e&&(o&4&&e.__esModule||o&16&&typeof e.then=="function"))return e;var r=Object.create(null);__webpack_require__.r(r);var n={};m=m||[null,_({}),_([]),_(_)];for(var i=o&2&&e;typeof i=="object"&&!~m.indexOf(i);i=_(i))Object.getOwnPropertyNames(i).forEach(function(s){n[s]=function(){return e[s]}});return n.default=function(){return e},__webpack_require__.d(r,n),r}}(),function(){__webpack_require__.d=function(_,m){for(var e in m)__webpack_require__.o(m,e)&&!__webpack_require__.o(_,e)&&Object.defineProperty(_,e,{enumerable:!0,get:m[e]})}}(),function(){__webpack_require__.f={},__webpack_require__.e=function(_){return Promise.all(Object.keys(__webpack_require__.f).reduce(function(m,e){return __webpack_require__.f[e](_,m),m},[]))}}(),function(){__webpack_require__.u=function(_){return""+({171:"docs__en-US__handbook__workflow__triggers__schedule.md",489:"docs__en-US__breaking-changes__index.md",565:"docs__en-US__handbook__workflow-loop__index.md",581:"docs__en-US__manual__ui__fields__association-components__summary__index.md",701:"docs__en-US__development__http-api__index.md",876:"docs__en-US__manual__mobile__development__frontend.md",989:"docs__en-US__handbook__data-visualization__antd-charts__scatter.md",1020:"docs__en-US__handbook__auth-ldap__index.md",1131:"docs__en-US__plugins__collection-manager__user__collection-templates__general__index.md",1265:"docs__en-US__handbook__data-visualization__user__configure.md",1327:"docs__en-US__plugin-samples__schema-initializer__block-simple.md",1436:"docs__en-US__handbook__ui__fields__specific__picker.md",1565:"docs__en-US__handbook__ui__blocks__other-blocks__markdown.md",1813:"docs__en-US__handbook__workflow-custom-action-trigger__trigger.md",2016:"docs__en-US__welcome__release__formulas.md",2366:"docs__en-US__plugins__workflow-form-trigger__index.md",2451:"docs__en-US__plugin-samples__router__add-page__index.md",2483:"docs__en-US__development__server__collections__association-fields.md",2491:"docs__en-US__handbook__plugin-manager__index.md",2496:"docs__en-US__plugins__client__user__ui-designer__actions__edit.md",2534:"docs__en-US__plugins__map__index.md",2563:"docs__en-US__handbook__client__user__ui-designer__actions__view.md",2707:"docs__en-US__handbook__ui__actions__types__add-new.md",2718:"docs__en-US__handbook__field-formula__index.md",2782:"docs__en-US__plugins__collection-manager__user__association-fields__summary__index.md",2805:"docs__en-US__development__others__testing.md",2843:"docs__en-US__manual__workflow__index.md",2858:"docs__en-US__api__telemetry__telemetry.md",3122:"docs__en-US__manual__collection__fields__media.md",3143:"docs__en-US__welcome__release__roadmap.md",3214:"docs__en-US__handbook__file-manager__storage__aliyun-oss.md",3282:"docs__en-US__handbook__workflow__nodes__approval.md",3303:"docs__en-US__plugin-samples__router__index.md",3389:"docs__en-US__handbook__data-visualization__faq.md",3395:"docs__en-US__manual__ui__actions__open-popup.md",3820:"docs__en-US__plugins__collection-manager__user__association-fields__sub-table__index.md",3826:"docs__en-US__handbook__data-modeling__collection-fields__associations__m2m__index.md",3944:"docs__en-US__handbook__client__user__ui-designer__blocks__index.md",3966:"docs__en-US__manual__workflow__nodes__delay.md",4230:"docs__en-US__plugins__graph-collection-manager__index.md",4366:"docs__en-US__api__data-source-manager__data-source.md",4374:"docs__en-US__plugins__client__user__ui-designer__actions__submit-to-workflow.md",4384:"docs__en-US__plugins__client__user__index.md",4840:"docs__en-US__plugins__workflow__manual__nodes__loop.md",5102:"docs__en-US__handbook__workflow__nodes__create.md",5216:"docs__en-US__plugins__workflow-loop__index.md",5263:"docs__en-US__plugins__workflow-delay__index.md",5810:"docs__en-US__plugin-samples__component-and-scope__global.md",5822:"docs__en-US__plugins__collection-manager__user__association-fields__sub-form__index.md",5939:"docs__en-US__handbook__collection-fdw__enable-federated.md",6006:"docs__en-US__handbook__action-import__index.md",6163:"docs__en-US__manual__data-visualization__chart-block.md",6275:"docs__en-US__plugin-samples__component-and-scope__local.md",6319:"docs__en-US__plugins__verification__index.md",6327:"docs__en-US__plugins__workflow__index.md",6346:"docs__en-US__manual__plugin-manager__plugin-settings__index.md",6375:"docs__en-US__api__logger.md",6780:"docs__en-US__api__client__schema-designer__schema-initializer.md",6859:"docs__en-US__handbook__ui__fields__field-settings__style.md",6885:"docs__en-US__handbook__ui__blocks__data-blocks__form.md",6893:"docs__en-US__api__resourcer__action.md",6931:"docs__en-US__manual__workflow__nodes__loop.md",7027:"docs__en-US__manual__data-visualization__filter.md",7443:"docs__en-US__handbook__file-manager__storage__tencent-cos.md",7535:"docs__en-US__handbook__client__user__ui-designer__actions__open-popup.md",7692:"docs__en-US__handbook__client__user__ui-designer__fields__index.md",8570:"docs__en-US__plugin-samples__plugin-settings__form.md",8602:"docs__en-US__api__server__sync-message-manager.md",8757:"docs__en-US__handbook__data-visualization__index.md",8777:"docs__en-US__welcome__release__v0170-changelog.md",8804:"docs__en-US__handbook__data-modeling__collection-fields__basic__integer.md",8879:"docs__en-US__plugins__theme-editor__index.md",9120:"docs__en-US__plugins__collection-manager__user__collection-templates__tree__index.md",9161:"docs__en-US__handbook__backups__installation__postgres.md",9258:"docs__en-US__welcome__community__faq.md",9385:"docs__en-US__welcome__getting-started__upgrading__create-nocobase-app.md",9388:"docs__en-US__welcome__release__v0070-changelog.md",9420:"docs__en-US__api__auth__auth.md",9547:"docs__en-US__handbook__data-modeling__collection-fields__basic__percent.md",9584:"docs__en-US__plugins__import__index.md",9677:"docs__en-US__handbook__data-modeling__collection-fields__basic__url.md",9695:"docs__en-US__handbook__ui__actions__types__edit.md",9714:"docs__en-US__development__client__test.md",9746:"docs__en-US__api__test__e2e.md",9909:"docs__en-US__manual__workflow__nodes__destroy.md",9931:"docs__en-US__manual__core-concepts__a-b-c.md",10145:"docs__en-US__plugin-samples__schema-initializer__action-modal.md",10264:"docs__en-US__development__server__routing.md",10385:"docs__en-US__plugins__collection-manager__user__collection-templates__file__index.md",10414:"docs__en-US__plugins__collection-manager__user__collection-templates__sql__index.md",10581:"docs__en-US__handbook__file-manager__storage__amazon-s3.md",10607:"docs__en-US__api__acl__acl.md",10883:"docs__en-US__handbook__auth-saml__example__google.md",10905:"docs__en-US__plugins__ui-schema-storage__index.md",10986:"docs__en-US__handbook__users__index.md",11109:"docs__en-US__plugins__workflow__manual__nodes__sql.md",11150:"docs__en-US__development__http-api__action-api.md",11285:"docs__en-US__handbook__graph-collection-manager__index.md",11357:"docs__en-US__handbook__data-visualization__echarts__pie.md",11413:"docs__en-US__welcome__getting-started__upgrading__git-clone.md",11622:"docs__en-US__handbook__workflow-custom-action-trigger__example.md",11902:"docs__en-US__handbook__calendar__calendar-collection.md",11922:"docs__en-US__handbook__collection-view__index.md",11924:"docs__en-US__plugins__formula-field__index.md",11995:"docs__en-US__handbook__workflow-dynamic-calculation__node.md",12046:"docs__en-US__development__client__ui-schema__components.md",12102:"docs__en-US__welcome__release__v0190-changelog.md",12150:"docs__en-US__welcome__release__v0091-changelog.md",12174:"docs__en-US__development__others__deps.md",12224:"docs__en-US__api__data-source-manager__i-repository.md",12300:"docs__en-US__api__telemetry__metric.md",12435:"docs__en-US__handbook__users__field-created-by.md",12447:"docs__en-US__handbook__ui__fields__field-settings__field-component.md",12497:"docs__en-US__handbook__data-visualization__echarts__line.md",12546:"docs__en-US__welcome__release__20240519-changelog.md",12572:"docs__en-US__manual__collection__collection-templates__tree__index.md",12623:"docs__en-US__handbook__workflow__triggers__approval.md",12684:"docs__en-US__handbook__data-modeling__collection.md",12739:"docs__en-US__handbook__collection-fdw__index.md",12748:"docs__en-US__handbook__data-modeling__collection-fields__choices__select.md",12822:"docs__en-US__handbook__ui__actions__types__filter.md",13026:"docs__en-US__handbook__ui__fields__field-settings__edit-description.md",13214:"docs__en-US__api__server__plugin-manager.md",13224:"docs__en-US__api__cache__cache.md",13225:"docs__en-US__handbook__ui__fields__generic__filter-form-item.md",13303:"docs__en-US__plugins__client__user__ui-designer__actions__update-record.md",13472:"docs__en-US__manual__collection__fields__map.md",13573:"docs__en-US__api__client__application.md",13750:"docs__en-US__handbook__workflow__nodes__request.md",13918:"docs__en-US__plugins__workflow__manual__index.md",14007:"docs__en-US__plugins__collection-manager__user__collection-templates__expression__index.md",14137:"docs__en-US__handbook__ui__blocks__other-blocks__workflow-approval.md",14156:"docs__en-US__manual__localization-management__index.md",14370:"docs__en-US__handbook__embed__index.md",14377:"docs__en-US__welcome__release__inherits.md",14442:"docs__en-US__plugins__workflow__manual__nodes__request.md",14476:"docs__en-US__api__client__extensions__collection-manager.md",14490:"docs__en-US__handbook__collection-tree__index.md",14651:"docs__en-US__manual__plugin-manager__plugin-manager__index.md",14707:"docs__en-US__development__server__migration.md",14816:"docs__en-US__development__client__router.md",15051:"docs__en-US__handbook__api-keys__index.md",15089:"docs__en-US__handbook__workflow-json-query__index.md",15105:"docs__en-US__development__server__middleware.md",15173:"docs__en-US__manual__ui__actions__custom-request.md",15309:"docs__en-US__handbook__data-visualization__echarts__radar.md",15491:"docs__en-US__plugin-samples__schema-initializer__block-data.md",15518:"docs__en-US__handbook__data-modeling__collection-fields__geometric__line.md",15548:"docs__en-US__handbook__data-modeling__collection-fields__system-info__created-at.md",15559:"docs__en-US__welcome__release__v0074-changelog.md",16242:"docs__en-US__handbook__field-china-region__index.md",16357:"docs__en-US__handbook__file-manager__development__index.md",16373:"docs__en-US__handbook__workflow__nodes__sql.md",16535:"docs__en-US__plugins__workflow__manual__triggers__collection.md",16563:"docs__en-US__handbook__file-storage-oss__index.md",16625:"docs__en-US__manual__collection__collection-templates__expression__index.md",16741:"docs__en-US__manual__collection__fields__system.md",16776:"docs__en-US__welcome__community__contributing.md",16826:"docs__en-US__api__handlebars-helpers__array.md",16871:"docs__en-US__manual__ui__actions__export.md",17304:"docs__en-US__manual__core-concepts__containers.md",17385:"docs__en-US__api__data-source-manager__i-collection.md",17506:"docs__en-US__handbook__system-settings__index.md",17931:"docs__en-US__handbook__workflow__nodes__index.md",17961:"docs__en-US__plugins__action-bulk-edit__index.md",18133:"docs__en-US__handbook__workflow-custom-action-trigger__index.md",18247:"docs__en-US__plugins__collection-manager__user__association-fields__sub-form(popover)__index.md",18249:"docs__en-US__plugins__collection-manager__index.md",18252:"docs__en-US__api__handlebars-helpers__path.md",18556:"docs__en-US__handbook__mobile-client__index.md",18693:"docs__en-US__welcome__changelog__20240519.md",18770:"docs__en-US__handbook__ui__variables.md",18796:"docs__en-US__plugins__oidc__index.md",18807:"docs__en-US__handbook__ui__blocks__data-blocks__details.md",18830:"docs__en-US__handbook__auth__dev__api.md",18840:"docs__en-US__handbook__workflow-dynamic-calculation__index.md",18893:"docs__en-US__plugin-samples__schema-initailizer__index.md",19138:"docs__en-US__handbook__ui__fields__field-settings__required.md",19143:"docs__en-US__api__database__field.md",19150:"docs__en-US__plugins__localization-management__index.md",19158:"docs__en-US__plugin-samples__schema-settings__new.md",19689:"docs__en-US__handbook__ui__blocks__block-settings__block-title.md",19703:"docs__en-US__welcome__getting-started__installation__create-nocobase-app.md",19923:"docs__en-US__handbook__file-manager__storage__local.md",20197:"docs__en-US__api__handlebars-helpers__regex.md",20202:"docs__en-US__handbook__data-modeling__collection-fields__basic__input.md",20358:"docs__en-US__handbook__ui__fields__field-settings__validation-rules.md",20390:"docs__en-US__handbook__data-modeling__collection-fields__advanced__collection-select.md",20406:"docs__en-US__handbook__collection-sql__index.md",20469:"docs__en-US__plugins__workflow-approval__index.md",20538:"docs__en-US__development__server__resources-actions-v2__configuration.md",20621:"docs__en-US__welcome__getting-started__plugin.md",20801:"docs__en-US__manual__collection__fields__advanced.md",21126:"docs__en-US__handbook__data-modeling__collection-fields__datetime__index.md",21265:"docs__en-US__api__index.md",21704:"docs__en-US__handbook__ui__fields__field-settings__number-format.md",22233:"docs__en-US__development__client__ui-schema__settings.md",22468:"docs__en-US__manual__workflow__start.md",22499:"docs__en-US__manual__workflow__nodes__parallel.md",22809:"docs__en-US__plugins__client__user__plugin-manager__index.md",22906:"docs__en-US__api__resourcer__middleware.md",22991:"docs__en-US__api__database__shared__transaction.md",23039:"docs__en-US__handbook__workflow__development__api.md",23139:"docs__en-US__handbook__workflow__triggers__pre-action.md",23243:"docs__en-US__api__database__shared__create-options.md",23661:"docs__en-US__handbook__field-markdown-vditor__index.md",23691:"docs__en-US__api__handlebars-helpers__string.md",23754:"docs__en-US__manual__ui__fields__association-components__title__index.md",23900:"docs__en-US__handbook__auth__index.md",23928:"docs__en-US__api__telemetry__trace.md",24338:"docs__en-US__handbook__action-import-pro__index.md",24350:"docs__en-US__api__handlebars-helpers__index.md",24433:"docs__en-US__handbook__ui__fields__specific__cascade-select.md",24499:"docs__en-US__plugin-samples__router__add-setting-page-layout-routes__index.md",24515:"docs__en-US__development__server__telemetry.md",24543:"docs__en-US__plugins__backup-restore__index.md",24899:"docs__en-US__manual__collection__collection-fdw__enable-federated.md",24983:"docs__en-US__welcome__release__v0075-changelog.md",25058:"docs__en-US__welcome__release__tree-collection.md",25279:"docs__en-US__handbook__workflow__index.md",25520:"docs__en-US__development__server__events.md",25634:"docs__en-US__plugins__logger__index.md",25690:"docs__en-US__development__others__build.md",25768:"docs__en-US__plugin-samples__schema-initializer__configure-actions.md",25797:"docs__en-US__manual__collection__fields__relation.md",25855:"docs__en-US__handbook__workflow-request-interceptor__action.md",25869:"docs__en-US__handbook__file-storage-s3__index.md",25912:"docs__en-US__api__auth__auth-manager.md",25918:"docs__en-US__manual__workflow__triggers__form.md",26006:"docs__en-US__handbook__audit-logs__index.md",26248:"docs__en-US__welcome__getting-started__deployment__docker-compose.md",26262:"docs__en-US__plugins__workflow__manual__nodes__delay.md",26295:"docs__en-US__api__server__migration.md",26365:"docs__en-US__development__client__i18n.md",26641:"docs__en-US__development__server__resources-actions.md",26756:"docs__en-US__welcome__changelog__0-template.md",26818:"docs__en-US__plugins__custom-request__index.md",27e3:"docs__en-US__api__http__rest-api.md",27046:"docs__en-US__handbook__auth__user__index.md",27277:"docs__en-US__handbook__action-bulk-update__index.md",27291:"docs__en-US__plugins__workflow__development__api.md",27431:"docs__en-US__manual__ui__actions__import.md",27833:"docs__en-US__handbook__ui__blocks__data-blocks__list.md",27966:"docs__en-US__welcome__release__v0060-changelog.md",27995:"docs__en-US__plugin-samples__index.md",28399:"docs__en-US__handbook__data-visualization__echarts__bar.md",28581:"docs__en-US__handbook__data-modeling__collection-fields__basic__color.md",28802:"docs__en-US__handbook__data-source-external-mysql__index.md",28895:"docs__en-US__handbook__file-manager__storage__index.md",29042:"docs__en-US__welcome__getting-started__deployment__env-note.md",29211:"docs__en-US__manual__collection__inherit.md",29226:"docs__en-US__handbook__workflow__nodes__condition.md",29341:"docs__en-US__manual__collection__fields__basic.md",29352:"docs__en-US__plugin-samples__field__without-value.md",29396:"docs__en-US__handbook__data-modeling__collection-fields__choices__multiple-select.md",29409:"docs__en-US__handbook__app-switching__index.md",29450:"docs__en-US__handbook__data-visualization__block-charts.md",29487:"docs__en-US__manual__core-concepts__blocks.md",29532:"docs__en-US__handbook__ui__fields__field-settings__display-title.md",29786:"docs__en-US__manual__collection__collection-templates__calender__index.md",29875:"docs__en-US__handbook__workflow__quick-start.md",30074:"docs__en-US__handbook__data-modeling__collection-fields__datetime__datetime.md",30105:"docs__en-US__handbook__workflow__triggers__collection.md",30170:"docs__en-US__handbook__data-modeling__collection-fields__associations__o2m__index.md",30347:"docs__en-US__plugins__action-duplicate__index.md",30399:"docs__en-US__manual__file-manager__amazon-s3.md",30468:"docs__en-US__manual__ui__menus__index.md",30483:"docs__en-US__welcome__release__v0120-changelog.md",30531:"docs__en-US__plugins__acl__index.md",30553:"docs__en-US__plugins__client__user__ui-designer__actions__custom-request.md",30621:"docs__en-US__handbook__data-visualization__antd-charts__bar.md",30787:"docs__en-US__manual__collection__management.md",30826:"docs__en-US__handbook__ui__actions__action-settings__linkage-rule.md",30873:"docs__en-US__plugins__users__index.md",30953:"docs__en-US__handbook__ui__ui-editor__index.md",31363:"docs__en-US__manual__ui__fields__association-components__index.md",31817:"docs__en-US__handbook__workflow-approval__block.md",31938:"docs__en-US__development__server__commands.md",32053:"docs__en-US__plugins__sms-auth__index.md",32320:"docs__en-US__handbook__data-modeling__collection-fields__media__field-attachment.md",32405:"docs__en-US__handbook__ui__blocks__other-blocks__workflow-manual-todos.md",32751:"docs__en-US__api__handlebars-helpers__i18n.md",33e3:"docs__en-US__api__handlebars-helpers__math.md",33121:"docs__en-US__manual__ui__index.md",33171:"docs__en-US__handbook__auth-dingtalk__index.md",33292:"docs__en-US__handbook__ui__fields__specific__tag.md",33506:"docs__en-US__handbook__data-modeling__collection-fields__choices__checkbox.md",33524:"docs__en-US__plugins__workflow__manual__nodes__update.md",33893:"docs__en-US__handbook__ui__actions__types__refresh.md",33945:"docs__en-US__handbook__client__user__index.md",33977:"docs__en-US__handbook__workflow-date-calculation__index.md",34057:"docs__en-US__handbook__block-tree__index.md",34059:"docs__en-US__handbook__auth-cas__index.md",34061:"docs__en-US__breaking-changes__v0-18-0-alpha-1.md",34122:"docs__en-US__development__client__api-client.md",34187:"docs__en-US__manual__backup-restore__index.md",34249:"docs__en-US__plugins__data-visualization__index.md",34345:"docs__en-US__handbook__workflow__development__instruction.md",34357:"docs__en-US__handbook__workflow-action-trigger__http-api.md",34594:"docs__en-US__manual__ui__fields__association-components__sub-form__index.md",34692:"docs__en-US__handbook__workflow__nodes__variable.md",34749:"docs__en-US__handbook__ui__fields__index.md",34959:"docs__en-US__handbook__workflow__advanced__revisions.md",35350:"docs__en-US__plugins__collection-manager__user__association-fields__tag__index.md",35357:"docs__en-US__plugins__collection-manager__user__field-interfaces__index.md",35487:"docs__en-US__development__client__life-cycle.md",35520:"docs__en-US__plugins__data-visualization__user__configure.md",35739:"docs__en-US__handbook__workflow-sql__index.md",35830:"docs__en-US__handbook__workflow-parallel__index.md",35831:"docs__en-US__handbook__data-source-kingbase__index.md",36055:"docs__en-US__plugins__sequence-field__index.md",36311:"docs__en-US__handbook__workflow__nodes__dynamic-calculation.md",36693:"docs__en-US__handbook__ui__actions__action-settings__popup-size.md",36840:"docs__en-US__handbook__ui__pages__index.md",36874:"docs__en-US__development__index.md",36909:"docs__en-US__welcome__release__v0071-changelog.md",37029:"docs__en-US__api__test__client.md",37130:"docs__en-US__handbook__data-modeling__collection-fields__basic__phone.md",37206:"docs__en-US__development__client__index.md",37332:"docs__en-US__handbook__ui__fields__specific__sub-detail.md",37868:"docs__en-US__manual__ui__actions__update-record.md",37992:"docs__en-US__handbook__workflow__nodes__aggregate.md",38025:"docs__en-US__plugins__workflow__manual__advanced.md",38082:"docs__en-US__handbook__workflow__triggers__post-action.md",38122:"docs__en-US__breaking-changes__v0-17-0-alpha-3.md",38207:"docs__en-US__handbook__data-modeling__collection-fields__choices__radio-group.md",38346:"docs__en-US__plugins__workflow-sql__index.md",38353:"docs__en-US__handbook__data-visualization__echarts__treemap.md",38651:"docs__en-US__handbook__workflow-dynamic-calculation__collection.md",38812:"docs__en-US__handbook__backups__installation__mysql.md",39046:"docs__en-US__breaking-changes__v0-17-0-alpha-5.md",39133:"docs__en-US__handbook__ui__blocks__index.md",39311:"docs__en-US__plugins__data-visualization__user__filter.md",39654:"docs__en-US__handbook__field-sort__index.md",39659:"docs__en-US__welcome__getting-started__deployment__git-clone.md",39688:"docs__en-US__handbook__notification-manager__index.md",39693:"docs__en-US__components.md",39730:"docs__en-US__manual__core-concepts__actions.md",39787:"docs__en-US__handbook__client__user__ui-designer__actions__submit-to-workflow.md",39840:"docs__en-US__plugins__audit-logs__index.md",39898:"docs__en-US__welcome__introduction__features.md",40143:"docs__en-US__handbook__data-source-main__general-collection.md",40150:"docs__en-US__plugins__collection-manager__user__association-fields__select__index.md",40268:"docs__en-US__plugins__workflow__manual__nodes__index.md",40293:"docs__en-US__handbook__ui__actions__types__view.md",40678:"docs__en-US__handbook__data-modeling__collection-fields__media__rich-text.md",40736:"docs__en-US__plugins__china-region__index.md",41568:"docs__en-US__handbook__notification-in-app-message__index.md",41598:"docs__en-US__handbook__block-kanban__index.md",41624:"docs__en-US__development__server__index.md",42084:"docs__en-US__welcome__release__collection-templates.md",42236:"docs__en-US__welcome__release__v0080-changelog.md",42291:"docs__en-US__plugins__collection-manager__user__association-fields__cascade-select__index.md",42334:"docs__en-US__handbook__workflow-request-interceptor__index.md",42623:"docs__en-US__handbook__ui__fields__specific__title.md",42927:"docs__en-US__manual__blocks-guide__charts.md",43192:"docs__en-US__api__database__shared__find-one.md",43331:"docs__en-US__handbook__data-modeling__index.md",43401:"docs__en-US__handbook__ui__blocks__block-settings__linkage-rule.md",43545:"docs__en-US__manual__file-manager__aliyun-oss.md",43691:"docs__en-US__handbook__field-snapshot__index.md",43694:"docs__en-US__welcome__introduction__index.md",43754:"docs__en-US__plugin-samples__schema-initailizer__add-item-to-block.md",43854:"docs__en-US__handbook__workflow-manual__index.md",43860:"docs__en-US__handbook__client__user__ui-designer__actions__duplicate.md",44059:"docs__en-US__handbook__workflow-custom-action-trigger__action.md",44254:"docs__en-US__welcome__release__v0140-changelog.md",44404:"docs__en-US__manual__collection__collection-templates__index.md",44411:"docs__en-US__api__test__server.md",44474:"docs__en-US__plugins__api-doc__index.md",44667:"docs__en-US__plugins__cas__index.md",44720:"docs__en-US__handbook__data-modeling__collection-fields__advanced__json.md",45087:"docs__en-US__manual__ui__fields__association-components__file-manager__index.md",45109:"docs__en-US__manual__collection__collection-templates__general__index.md",45170:"docs__en-US__handbook__notification-manager__development__api.md",45381:"docs__en-US__plugins__workflow__manual__nodes__dynamic-calculation.md",45526:"docs__en-US__development__server__i18n.md",45681:"docs__en-US__plugins__workflow__manual__triggers__index.md",45682:"docs__en-US__handbook__client__user__ui-designer__actions__add-new.md",45716:"docs__en-US__development__client__ui-schema__designable.md",45784:"docs__en-US__handbook__data-modeling__collection-fields__choices__china-region.md",45789:"docs__en-US__handbook__ui__blocks__filter-blocks__form.md",45870:"docs__en-US__handbook__client__user__ui-designer__pages__index.md",46112:"docs__en-US__handbook__workflow-action-trigger__action.md",46209:"docs__en-US__handbook__field-component-mask__index.md",46385:"docs__en-US__handbook__ui__blocks__block-settings__loading-mode.md",46426:"docs__en-US__handbook__action-custom-request__index.md",46606:"docs__en-US__handbook__data-modeling__collection-fields__associations__index.md",46621:"docs__en-US__welcome__introduction__why.md",46723:"docs__en-US__manual__theme-editor__index.md",46845:"docs__en-US__plugins__file-manager__tencent-cos.md",46957:"docs__en-US__handbook__ui__blocks__block-settings__data-scope.md",46982:"docs__en-US__manual__workflow__nodes__sql.md",47052:"docs__en-US__handbook__ui__menus__index.md",47059:"docs__en-US__manual__ui__pages__index.md",47156:"docs__en-US__plugins__client__user__user-center__index.md",47442:"docs__en-US__plugins__workflow-aggregate__index.md",47477:"docs__en-US__manual__collection__collection-fdw__index.md",47496:"docs__en-US__handbook__field-m2m-array__index.md",47510:"docs__en-US__development__app-ds.md",47518:"docs__en-US__manual__ui__actions__duplicate.md",47752:"docs__en-US__handbook__client__user__ui-designer__actions__edit.md",47850:"docs__en-US__handbook__block-map__index.md",48067:"docs__en-US__handbook__ui__actions__types__update-record.md",48088:"docs__en-US__plugin-samples__router__add-setting-page-tabs-routes__index.md",48160:"docs__en-US__handbook__system-settings__language-settings.md",48196:"docs__en-US__handbook__workflow__triggers__index.md",48205:"docs__en-US__handbook__workflow-action-trigger__trigger.md",48206:"docs__en-US__handbook__ui__fields__generic__bulk-edit-form-item.md",48275:"docs__en-US__development__server__collections__collection-template.md",48295:"docs__en-US__handbook__client__user__ui-designer__actions__refresh.md",48367:"docs__en-US__manual__user__user-center__index.md",48415:"docs__en-US__api__client__schema-designer__schema-component.md",48721:"docs__en-US__api__data-source-manager__i-collection-manager.md",48724:"docs__en-US__handbook__action-bulk-edit__index.md",48980:"docs__en-US__development__http-api__filter-operators.md",49248:"docs__en-US__handbook__data-modeling__collection-fields__basic__textarea.md",49316:"docs__en-US__manual__collection__index.md",49444:"docs__en-US__plugin-samples__component-and-scope__index.md",49603:"docs__en-US__handbook__data-modeling__collection-fields__geometric__point.md",49611:"docs__en-US__handbook__data-modeling__collection-fields__datetime__time.md",49677:"docs__en-US__api__database__operators.md",49825:"docs__en-US__handbook__block-gantt__index.md",49891:"docs__en-US__handbook__workflow__plugins__aggregate.md",49943:"docs__en-US__plugins__auth__user__index.md",49974:"docs__en-US__handbook__ui__fields__field-settings__pattern.md",50160:"docs__en-US__plugins__collection-fdw__index.md",50208:"docs__en-US__handbook__workflow-variable__index.md",50214:"docs__en-US__manual__ui__actions__submit-to-workflow.md",50425:"docs__en-US__plugin-samples__router__replace-page__index.md",50446:"docs__en-US__plugin-samples__block__block-form.md",50552:"docs__en-US__api__sdk__index.md",50634:"docs__en-US__development__server__collections__field-extension.md",50699:"docs__en-US__development__server__test.md",50774:"docs__en-US__handbook__data-visualization__antd-charts__dual-axes.md",50981:"docs__en-US__handbook__workflow__advanced__executions.md",50999:"docs__en-US__manual__workflow__nodes__aggregate.md",51022:"docs__en-US__handbook__data-visualization__echarts__area.md",51060:"docs__en-US__plugins__oidc__example__google.md",51095:"docs__en-US__plugins__client__user__ui-designer__fields__index.md",51706:"docs__en-US__handbook__ui__fields__field-settings__data-scope.md",51760:"docs__en-US__handbook__collection-expression__collection.md",52024:"docs__en-US__handbook__file-storage-cos__index.md",52052:"docs__en-US__manual__ui__actions__index.md",52433:"demos",52538:"docs__en-US__handbook__auth-sms__index.md",52670:"docs__en-US__development__server__resources-actions-v2__index.md",52682:"docs__en-US__handbook__ui__actions__action-settings__open-mode.md",52725:"docs__en-US__plugins__client__user__ui-designer__actions__add-new.md",53273:"docs__en-US__welcome__release__v0180-changelog.md",53319:"docs__en-US__plugin-samples__schema-initializer__block-data-modal.md",53344:"docs__en-US__plugins__client__user__ui-designer__actions__delete.md",53392:"docs__en-US__welcome__changelog__20240607.md",53409:"docs__en-US__handbook__data-visualization__antd__table.md",53693:"docs__en-US__plugins__export__index.md",53803:"docs__en-US__manual__ui__inherit.md",54009:"docs__en-US__plugin-samples__schema-initializer__configure-fields.md",54106:"docs__en-US__breaking-changes__v0.19.0-alpha.1.md",54169:"docs__en-US__development__server__logger.md",54230:"docs__en-US__api__handlebars-helpers__core.md",54314:"docs__en-US__manual__file-manager__tencent-cos.md",54410:"docs__en-US__handbook__data-source-main__inheritance-collection.md",54456:"docs__en-US__handbook__data-source-external-mariadb__index.md",54464:"docs__en-US__plugins__auth__dev__guide.md",54570:"docs__en-US__handbook__workflow-approval__index.md",54634:"docs__en-US__api__client__router.md",54700:"docs__en-US__api__cache__cache-manager.md",54882:"docs__en-US__plugins__client__user__ui-designer__actions__print.md",54903:"docs__en-US__handbook__data-modeling__collection-fields__system-info__updated-at.md",54944:"docs__en-US__handbook__ui__actions__types__pop-up.md",55196:"docs__en-US__plugins__client__user__plugin-settings__index.md",55281:"docs__en-US__handbook__ui__actions__types__submit.md",55337:"docs__en-US__handbook__workflow__nodes__json-query.md",55802:"docs__en-US__manual__ui__actions__add-new.md",55872:"docs__en-US__api__database__relation-repository__index.md",55927:"docs__en-US__handbook__mobile__index.md",55940:"docs__en-US__api__handlebars-helpers__number.md",55982:"docs__en-US__api__database__shared.md",56002:"docs__en-US__plugins__mobile-client__index.md",56065:"docs__en-US__handbook__data-visualization__antd-charts__column.md",56098:"docs__en-US__handbook__data-source-rest-api__index.md",56180:"docs__en-US__plugins__index.md",56238:"docs__en-US__welcome__getting-started__installation__index.md",56537:"docs__en-US__welcome__release__v0094-changelog.md",56612:"docs__en-US__plugins__workflow__development__index.md",56786:"docs__en-US__handbook__workflow-delay__index.md",56923:"docs__en-US__plugins__kanban__index.md",57101:"docs__en-US__handbook__workflow-manual__node.md",57226:"docs__en-US__plugins__action-print__index.md",57273:"docs__en-US__plugins__action-bulk-update__index.md",57367:"docs__en-US__plugins__multi-app-manager__index.md",57523:"docs__en-US__handbook__data-source-manager__external-database.md",57859:"docs__en-US__manual__workflow__nodes__query.md",58314:"docs__en-US__handbook__ui__pop-up.md",58319:"docs__en-US__handbook__ui__actions__action-settings__edit-button.md",58418:"docs__en-US__plugin-samples__field__value.md",58438:"docs__en-US__manual__ui__actions__filter.md",58493:"docs__en-US__handbook__workflow__development__index.md",58498:"docs__en-US__welcome__community__translations.md",58539:"docs__en-US__plugin-samples__field__index.md",58581:"docs__en-US__handbook__workflow__nodes__calculation.md",58952:"docs__en-US__handbook__action-duplicate__index.md",59001:"docs__en-US__handbook__client__user__ui-designer__actions__update-record.md",59068:"docs__en-US__handbook__telemetry-prometheus__index.md",59076:"docs__en-US__plugins__data-visualization__user__chart-block.md",59144:"docs__en-US__handbook__action-export__index.md",59202:"docs__en-US__manual__core-concepts__collections.md",59263:"docs__en-US__plugin-samples__router__add-setting-page-single-route__index.md",59298:"docs__en-US__handbook__ui__blocks__filter-blocks__collapse.md",59432:"docs__en-US__manual__mobile__index.md",59560:"docs__en-US__handbook__client__index.md",60286:"docs__en-US__handbook__data-visualization__antd-charts__line.md",60323:"docs__en-US__welcome__release__v0093-changelog.md",60338:"docs__en-US__handbook__field-attachment-url__index.md",60374:"docs__en-US__plugins__auth__index.md",60436:"docs__en-US__manual__file-manager__local.md",60489:"docs__en-US__handbook__data-visualization__echarts__column.md",60817:"docs__en-US__manual__ui__blocks__index.md",60909:"docs__en-US__handbook__ui__actions__action-settings__bind-workflow.md",60920:"docs__en-US__handbook__workflow-request-interceptor__example.md",60957:"docs__en-US__handbook__notification-manager__development__extension.md",61087:"docs__en-US__handbook__client__user__ui-designer__menus__index.md",61253:"docs__en-US__handbook__ui__actions__action-settings__affter-successful.md",61319:"docs__en-US__welcome__release__upgrade-to__v017.md",61322:"docs__en-US__handbook__workflow-approval__action.md",61422:"docs__en-US__handbook__data-modeling__data-source.md",61594:"docs__en-US__api__client__extensions__acl.md",61925:"docs__en-US__api__database__shared__destroy-options.md",61975:"docs__en-US__handbook__data-modeling__collection-fields__index.md",62009:"docs__en-US__plugins__client__user__ui-designer__actions__add-record.md",62011:"docs__en-US__api__handlebars-helpers__comparison.md",62317:"docs__en-US__plugins__workflow-request__index.md",62463:"docs__en-US__plugin-samples__provider__index.md",62496:"docs__en-US__plugins__client__user__ui-designer__actions__submit.md",62530:"docs__en-US__welcome__getting-started__upgrading__index.md",62741:"docs__en-US__plugins__acl__user__index.md",63118:"docs__en-US__handbook__workflow-aggregate__index.md",63282:"docs__en-US__plugin-samples__schema-settings__index.md",63320:"docs__en-US__handbook__action-qr-scan__index.md",63485:"docs__en-US__handbook__client__user__ui-designer__actions__submit.md",63669:"docs__en-US__welcome__release__v0110-changelog.md",63772:"docs__en-US__handbook__ui__fields__specific__sub-table.md",63776:"docs__en-US__handbook__workflow-request-interceptor__http-api.md",63896:"docs__en-US__handbook__departments__manual.md",63927:"docs__en-US__plugins__workflow-parallel__index.md",64099:"docs__en-US__plugins__collection-manager__user__collection-templates__view__index.md",64531:"docs__en-US__handbook__ui__actions__types__trigger-workflow.md",64550:"docs__en-US__development__http-api__rest-api.md",64564:"docs__en-US__handbook__ui__fields__specific__date-picker.md",64630:"docs__en-US__handbook__workflow__advanced__variables.md",64647:"docs__en-US__development__client__ui-schema__rendering.md",64693:"docs__en-US__handbook__data-visualization__step-by-step__index.md",64884:"docs__en-US__manual__workflow__triggers__collection.md",64990:"docs__en-US__api__database__collection.md",65041:"docs__en-US__api__client__index.md",65149:"docs__en-US__welcome__release__v0092-changelog.md",65274:"docs__en-US__handbook__data-modeling__collection-fields__system-info__table-oid.md",65276:"docs__en-US__handbook__action-export-pro__index.md",65604:"docs__en-US__plugins__client__user__ui-designer__actions__refresh.md",65696:"docs__en-US__api__database__relation-repository__belongs-to-many-repository.md",65821:"docs__en-US__api__sdk__auth.md",65970:"docs__en-US__handbook__ui__actions__types__add-record.md",66011:"docs__en-US__plugins__collection-manager__user__association-fields__record-picker__index.md",66305:"docs__en-US__api__database__shared__update-options.md",66487:"docs__en-US__handbook__data-visualization__echarts__scatter.md",66721:"docs__en-US__plugins__workflow__manual__nodes__manual.md",66933:"docs__en-US__development__client__ui-schema__what-is-ui-schema.md",67040:"docs__en-US__handbook__acl__user__index.md",67052:"docs__en-US__plugin-samples__plugin-settings__table.md",67103:"docs__en-US__handbook__data-modeling__collection-fields__basic__email.md",67142:"docs__en-US__handbook__ui__fields__generic__form-item.md",67309:"docs__en-US__api__handlebars-helpers__date.md",67542:"docs__en-US__handbook__client__user__plugin-manager__index.md",67614:"docs__en-US__handbook__file-manager__index.md",67630:"docs__en-US__plugin-samples__block__block-carousel.md",67653:"docs__en-US__plugins__workflow__manual__triggers__form.md",67710:"docs__en-US__handbook__ui__fields__association-field.md",67717:"docs__en-US__plugin-samples__schema-initializer__index.md",68016:"docs__en-US__handbook__workflow-approval__http-api.md",68194:"docs__en-US__welcome__release__logger.md",68358:"docs__en-US__welcome__release__v0160-changelog.md",68481:"docs__en-US__handbook__workflow__nodes__destroy.md",68572:"docs__en-US__manual__ui__actions__refresh.md",68679:"docs__en-US__manual__collection__multiple-databases.md",68758:"docs__en-US__development__client__ui-schema__quick-start.md",68768:"docs__en-US__handbook__workflow-manual__block.md",68804:"docs__en-US__handbook__client__user__ui-designer__actions__filter.md",68820:"docs__en-US__handbook__calendar__index.md",68931:"docs__en-US__handbook__workflow-action-trigger__index.md",69072:"docs__en-US__handbook__data-source-external-postgres__index.md",69080:"docs__en-US__plugins__iframe-block__index.md",69205:"docs__en-US__handbook__ui__blocks__block-templates.md",69327:"docs__en-US__handbook__workflow-manual__example.md",69332:"docs__en-US__handbook__backup-restore__index.md",69377:"docs__en-US__handbook__public-forms__index.md",69450:"docs__en-US__manual__ui__fields__association-components__sub-table__index.md",69491:"docs__en-US__manual__ui__fields__index.md",69676:"docs__en-US__api__sdk__storage.md",69709:"docs__en-US__plugins__workflow__manual__nodes__create.md",69743:"docs__en-US__manual__collection__fields__choices.md",70077:"docs__en-US__handbook__departments__index.md",70199:"docs__en-US__manual__workflow__nodes__condition.md",70282:"docs__en-US__handbook__file-manager__file-collection.md",70302:"docs__en-US__manual__data-visualization__configure.md",70354:"docs__en-US__manual__workflow__nodes__update.md",70408:"docs__en-US__handbook__data-modeling__collection-fields__advanced__nano-id.md",70488:"docs__en-US__plugins__client__user__ui-designer__actions__duplicate.md",70489:"docs__en-US__handbook__ui__actions__action-settings__double-check.md",70547:"docs__en-US__development__server__resources-actions-v2__vs-router.md",70728:"docs__en-US__index.md",70839:"docs__en-US__handbook__block-iframe__index.md",71003:"docs__en-US__development__client__providers.md",71028:"docs__en-US__handbook__data-modeling__collection-fields__basic__password.md",71032:"docs__en-US__handbook__workflow-approval__trigger.md",71059:"docs__en-US__plugins__workflow-manual__index.md",71250:"docs__en-US__plugins__file-manager__local.md",71371:"docs__en-US__manual__quick-start__ui-editor-mode.md",71409:"docs__en-US__manual__mobile-client__index.md",71585:"docs__en-US__plugins__client__index.md",71879:"docs__en-US__plugins__collection-manager__user__association-fields__title__index.md",71892:"docs__en-US__handbook__data-source-main__index.md",71930:"docs__en-US__handbook__ui__fields__generic__filter-collapse-item.md",72003:"docs__en-US__handbook__data-modeling__collection-fields__basic__number.md",72082:"docs__en-US__handbook__ui__blocks__block-settings__block-template.md",72348:"docs__en-US__welcome__release__v0072-changelog.md",72429:"docs__en-US__manual__ui__fields__association-components__sub-detail__index.md",72445:"nm__dumi-theme-nocobase__dist__layouts__DocLayout__index",72631:"docs__en-US__welcome__getting-started__upgrading__docker-compose.md",72747:"docs__en-US__welcome__getting-started__env.md",72841:"docs__en-US__api__client__schema-designer__schema-settings.md",72924:"docs__en-US__plugins__client__user__ui-designer__pages__index.md",73192:"docs__en-US__manual__workflow__nodes__manual.md",73239:"docs__en-US__development__client__ui-schema__toolbar.md",73399:"docs__en-US__manual__ui__fields__association-components__tag__index.md",73489:"docs__en-US__handbook__ui-schema-storage__index.md",73492:"docs__en-US__development__learning-guide.md",73656:"docs__en-US__handbook__ui__fields__specific__select.md",73658:"docs__en-US__manual__ui__actions__save-record.md",73863:"docs__en-US__manual__workflow__nodes__index.md",73871:"docs__en-US__handbook__workflow__nodes__delay.md",73890:"docs__en-US__handbook__ui__actions__types__link.md",73892:"docs__en-US__handbook__workflow__nodes__query.md",74097:"docs__en-US__welcome__getting-started__deployment__create-nocobase-app.md",74318:"docs__en-US__handbook__data-modeling__collection-fields__associations__o2o__index.md",74435:"docs__en-US__handbook__action-print__index.md",74487:"docs__en-US__handbook__data-modeling__collection-fields__geometric__circle.md",74488:"docs__en-US__handbook__ui__actions__types__delete.md",74506:"nm__dumi-theme-nocobase__dist__layouts__GlobalLayout",74563:"docs__en-US__plugins__client__user__ui-designer__blocks__index.md",74767:"docs__en-US__handbook__data-modeling__collection-fields__media__markdown.md",74816:"docs__en-US__plugin-samples__provider__content.md",74947:"docs__en-US__handbook__workflow__advanced__options.md",75007:"docs__en-US__plugins__telemetry-prometheus__index.md",75146:"docs__en-US__handbook__data-modeling__collection-fields__advanced__sort.md",75231:"docs__en-US__handbook__auth-saml__index.md",75290:"docs__en-US__welcome__release__v0210-changelog__index.md",75458:"docs__en-US__plugins__workflow__development__trigger.md",75582:"docs__en-US__handbook__ui__fields__specific__file-manager.md",75618:"docs__en-US__manual__ui__actions__view.md",76042:"docs__en-US__handbook__client__user__ui-designer__index.md",76118:"docs__en-US__plugins__collection-fdw__enable-federated.md",76123:"docs__en-US__handbook__ui__fields__field-settings__edit-tooltip.md",76273:"docs__en-US__plugins__data-visualization__step-by-step__index.md",76341:"docs__en-US__handbook__client__user__ui-designer__actions__index.md",76596:"docs__en-US__plugins__file-manager__amazon-s3.md",76623:"docs__en-US__development__life-cycle.md",76671:"docs__en-US__plugins__client__user__ui-designer__actions__export.md",76694:"docs__en-US__development__server__resources-actions-v2__to-resource.md",76924:"docs__en-US__plugins__collection-manager__user__index.md",76946:"docs__en-US__manual__quick-start__the-first-app.md",77074:"docs__en-US__handbook__workflow-request-interceptor__trigger.md",77305:"docs__en-US__plugins__client__user__ui-designer__actions__index.md",77452:"docs__en-US__manual__system-settings__index.md",77533:"docs__en-US__welcome__getting-started__deployment__index.md",77649:"docs__en-US__handbook__workflow__nodes__parallel.md",77690:"docs__en-US__handbook__client__user__ui-designer__actions__delete.md",77746:"docs__en-US__plugins__workflow__manual__nodes__calculation.md",77779:"docs__en-US__handbook__data-visualization__dev__index.md",77881:"docs__en-US__handbook__client__user__ui-designer__actions__print.md",77908:"docs__en-US__development__others__languages.md",78106:"docs__en-US__handbook__template-handlebars__index.md",78118:"docs__en-US__handbook__client__user__ui-designer__actions__export.md",78179:"docs__en-US__welcome__release__index.md",78275:"docs__en-US__plugins__client__user__ui-designer__actions__open-popup.md",78371:"docs__en-US__plugin-samples__schema-settings__add-item.md",78566:"docs__en-US__plugins__workflow__manual__nodes__destroy.md",78596:"docs__en-US__manual__ui__actions__delete.md",78609:"docs__en-US__plugins__workflow__manual__nodes__condition.md",78688:"docs__en-US__manual__ui__actions__print.md",78702:"docs__en-US__handbook__backups__installation__mariadb.md",78880:"docs__en-US__handbook__ui__blocks__data-blocks__grid-card.md",79174:"docs__en-US__api__client__extensions__schema-component.md",79240:"docs__en-US__handbook__workflow__nodes__loop.md",79370:"docs__en-US__welcome__release__v0040-changelog.md",79580:"docs__en-US__handbook__ui__fields__field-settings__default-value.md",79882:"docs__en-US__plugins__client__user__ui-designer__actions__view.md",79983:"docs__en-US__handbook__data-visualization__user__filter.md",80152:"docs__en-US__handbook__client__user__ui-designer__actions__add-record.md",80224:"docs__en-US__handbook__auth__dev__guide.md",80413:"docs__en-US__handbook__ui__actions__index.md",80461:"docs__en-US__plugins__workflow__development__instruction.md",80496:"docs__en-US__handbook__ui__blocks__data-blocks__table.md",80551:"docs__en-US__plugin-samples__provider__context.md",80654:"docs__en-US__plugins__workflow-json-query__index.md",80685:"docs__en-US__handbook__multi-app-manager__index.md",80752:"docs__en-US__manual__collection__fields__index.md",80882:"docs__en-US__manual__ui__linkage.md",80961:"docs__en-US__development__server__resources-actions-v2__rest-api.md",81009:"nm__dumi__dist__client__pages__Demo__index",81065:"docs__en-US__api__database__relation-repository__has-one-repository.md",81316:"docs__en-US__plugin-samples__field__interface.md",81538:"docs__en-US__api__database__relation-repository__has-many-repository.md",81656:"docs__en-US__welcome__how.md",81715:"docs__en-US__welcome__release__v0150-changelog.md",81923:"dumi__tmp-production__dumi__theme__ContextWrapper",82125:"docs__en-US__api__database__repository.md",82149:"docs__en-US__handbook__workflow-dynamic-calculation__example.md",82173:"docs__en-US__welcome__release__v0200-changelog__index.md",82215:"docs__en-US__handbook__ui__fields__generic__table-column.md",82329:"docs__en-US__api__data-source-manager__i-field.md",82581:"docs__en-US__manual__ui__fields__association-components__select__index.md",82596:"docs__en-US__handbook__workflow__nodes__end.md",82674:"docs__en-US__plugins__snapshot-field__index.md",82880:"docs__en-US__handbook__workflow__nodes__date-calculation.md",82962:"docs__en-US__handbook__auth-wecom__index.md",83007:"docs__en-US__handbook__client__user__ui-designer__actions__save-record.md",83011:"docs__en-US__plugin-samples__field__sub-field.md",83069:"docs__en-US__handbook__verification__index.md",83228:"docs__en-US__handbook__workflow-request__index.md",83300:"docs__en-US__manual__collection__collection-templates__view__index.md",83833:"docs__en-US__plugins__client__user__ui-designer__menus__index.md",83840:"docs__en-US__handbook__workflow-custom-action-trigger__http-api.md",83884:"docs__en-US__handbook__notification-email__index.md",83902:"docs__en-US__api__actions.md",83999:"docs__en-US__handbook__workflow-request-interceptor__advanced.md",84056:"docs__en-US__breaking-changes__v0-17-0-alpha-1.md",84114:"docs__en-US__plugins__client__user__ui-designer__actions__filter.md",84119:"docs__en-US__development__server__collections__options.md",84188:"docs__en-US__handbook__field-encryption__index.md",84314:"docs__en-US__plugin-samples__schema-initializer__configure-fields-bk.md",84459:"docs__en-US__api__database__index.md",84769:"docs__en-US__manual__workflow__nodes__dynamic-calculation.md",84945:"docs__en-US__manual__ui__actions__edit.md",85089:"docs__en-US__plugins__gantt__index.md",85144:"docs__en-US__handbook__data-visualization__antd__overview.md",85202:"docs__en-US__handbook__workflow__nodes__update.md",85354:"docs__en-US__handbook__client__user__ui-designer__actions__import.md",85530:"docs__en-US__plugin-samples__plugin-settings__table-multiple-add-forms.md",85570:"docs__en-US__handbook__data-visualization__user__chart-block.md",85727:"docs__en-US__development__your-fisrt-plugin.md",85732:"docs__en-US__plugins__system-settings__index.md",85745:"docs__en-US__manual__workflow__advanced.md",85947:"docs__en-US__welcome__release__v0130-changelog.md",85966:"docs__en-US__api__http__index.md",86002:"docs__en-US__api__server__application.md",86010:"docs__en-US__handbook__data-modeling__collection-fields__datetime__date.md",86016:"docs__en-US__handbook__localization-management__index.md",86105:"docs__en-US__handbook__data-modeling__collection-fields__geometric__polygon.md",86310:"docs__en-US__handbook__data-visualization__echarts__overview.md",86324:"docs__en-US__manual__ui__actions__add-record.md",86338:"docs__en-US__handbook__data-visualization__antd-charts__overview.md",86348:"docs__en-US__handbook__field-sequence__index.md",86406:"docs__en-US__plugin-samples__schema-initializer__action-simple.md",86492:"docs__en-US__api__handlebars-helpers__html.md",86653:"docs__en-US__api__handlebars-helpers__object.md",86725:"docs__en-US__api__data-source-manager__index.md",87005:"docs__en-US__welcome__getting-started__installation__docker-compose.md",87093:"docs__en-US__handbook__data-modeling__collection-fields__datetime__datetime-without-tz.md",87111:"docs__en-US__handbook__custom-brand__index.md",87493:"docs__en-US__manual__ui__fields__association-components__sub-form(popover)__index.md",87603:"docs__en-US__handbook__ui__blocks__block-settings__block-height.md",87815:"docs__en-US__development__server__collections-fields.md",87833:"docs__en-US__manual__core-concepts__menus.md",87855:"docs__en-US__manual__ui__fields__association-components__record-picker__index.md",87963:"docs__en-US__manual__collection__fields__date.md",88005:"docs__en-US__development__client__styles-and-themes.md",88065:"docs__en-US__handbook__workflow-approval__advanced.md",88199:"docs__en-US__handbook__ui__fields__field-settings__edit-title.md",88256:"docs__en-US__handbook__workflow__triggers__custom-action.md",88383:"docs__en-US__api__database__shared__find-options.md",88463:"docs__en-US__handbook__api-doc__index.md",88525:"docs__en-US__handbook__ui__blocks__block-settings__block-layout.md",88721:"docs__en-US__handbook__data-visualization__echarts__funnel.md",88822:"docs__en-US__manual__workflow__triggers__index.md",88895:"docs__en-US__handbook__workflow__development__trigger.md",89073:"docs__en-US__welcome__release__v0073-changelog.md",89077:"docs__en-US__plugins__workflow__manual__nodes__query.md",89107:"docs__en-US__development__plugin.md",89209:"docs__en-US__handbook__data-source-manager__index.md",89287:"docs__en-US__handbook__ui__blocks__block-settings__connect-block.md",89534:"docs__en-US__handbook__data-modeling__collection-fields__datetime__unix-timestamp.md",89989:"docs__en-US__api__resourcer__resource-manager.md",90116:"docs__en-US__handbook__workflow__nodes__manual.md",90126:"docs__en-US__handbook__template-string__index.md",90455:"docs__en-US__handbook__file-manager__field-attachment.md",90503:"docs__en-US__api__server__plugin.md",90522:"docs__en-US__welcome__community__thanks.md",90736:"docs__en-US__handbook__acl__index.md",90851:"docs__en-US__plugins__auth__dev__api.md",91010:"docs__en-US__api__cli.md",91082:"docs__en-US__plugins__client__user__ui-designer__index.md",91242:"docs__en-US__plugin-samples__plugin-settings__index.md",91306:"docs__en-US__handbook__ui__actions__action-settings__assign-values.md",91315:"docs__en-US__plugins__collection-manager__user__association-fields__file-manager__index.md",91590:"docs__en-US__api__client__extensions__block-provider.md",91613:"docs__en-US__plugin-samples__block__block-table.md",91676:"docs__en-US__api__auth__base-auth.md",91741:"docs__en-US__api__database__relation-repository__belongs-to-repository.md",91791:"docs__en-US__handbook__data-modeling__collection-fields__choices__checkbox-group.md",91802:"docs__en-US__handbook__ui__blocks__block-settings__sorting-rule.md",91873:"docs__en-US__handbook__data-modeling__collection-fields__basic__icon.md",92019:"docs__en-US__plugins__workflow__manual__triggers__schedule.md",92115:"docs__en-US__plugins__client__user__ui-designer__actions__save-record.md",92266:"docs__en-US__manual__collection__collection-templates__file__index.md",92368:"docs__en-US__handbook__ui__fields__specific__nester.md",92556:"docs__en-US__manual__workflow__nodes__request.md",92693:"docs__en-US__handbook__block-workbench__index.md",92919:"docs__en-US__handbook__client__user__ui-designer__actions__custom-request.md",93065:"nm__dumi__dist__client__pages__404",93096:"docs__en-US__handbook__client__user__plugin-settings__index.md",93142:"docs__en-US__welcome__release__v0050-changelog.md",93330:"docs__en-US__plugins__saml__index.md",93338:"docs__en-US__plugins__collection-manager__user__association-fields__sub-detail__index.md",93395:"docs__en-US__handbook__users__field-updated-by.md",93428:"docs__en-US__development__others__tech-stack.md",93555:"docs__en-US__welcome__release__v0100-changelog.md",93797:"docs__en-US__handbook__template-json__index.md",93903:"docs__en-US__manual__data-visualization__index.md",93946:"docs__en-US__handbook__ui__fields__specific__popover-nester.md",93989:"docs__en-US__welcome__release__v1001-changelog.md",93998:"docs__en-US__handbook__workflow-action-trigger__example.md",94154:"docs__en-US__api__handlebars-helpers__url.md",94220:"docs__en-US__plugins__workflow__manual__nodes__aggregate.md",94252:"docs__en-US__manual__ui__actions__submit.md",94385:"docs__en-US__handbook__workflow-approval__node.md",94388:"docs__en-US__welcome__release__gantt__introduction.md",94406:"docs__en-US__handbook__data-visualization__antd__statistic.md",94466:"docs__en-US__handbook__theme-editor__index.md",94589:"docs__en-US__plugins__file-manager__index.md",94725:"docs__en-US__api__resourcer__resource.md",94783:"docs__en-US__handbook__logger__index.md",94847:"docs__en-US__manual__ui__fields__association-components__cascade-select__index.md",95059:"docs__en-US__development__plugin-ds.md",95187:"docs__en-US__handbook__ui__fields__field-settings__title-field.md",95319:"docs__en-US__development__client__ui-schema__extending.md",95387:"docs__en-US__plugins__data-visualization__dev__index.md",95537:"docs__en-US__plugin-samples__block__index.md",95565:"docs__en-US__plugins__api-keys__index.md",95724:"docs__en-US__welcome__getting-started__installation__git-clone.md",95828:"docs__en-US__handbook__ui__fields__generic__detail-form-item.md",96393:"docs__en-US__development__server__collections__index.md",96617:"docs__en-US__handbook__workflow-response-message__index.md",96685:"docs__en-US__manual__file-manager__index.md",96793:"docs__en-US__plugins__file-manager__aliyun-oss.md",96827:"docs__en-US__handbook__workflow__nodes__response-message.md",96914:"docs__en-US__plugins__workflow-dynamic-calculation__index.md",96939:"docs__en-US__handbook__ui__blocks__block-settings__block-delete.md",96984:"docs__en-US__handbook__auth-oidc__example__google.md",97098:"docs__en-US__handbook__data-source-external-mssql__index.md",97180:"docs__en-US__development__client__ui-schema__initializer.md",97213:"docs__en-US__manual__collection__collection-templates__sql__index.md",97569:"docs__en-US__development__server__collections__configure.md",97694:"docs__en-US__plugins__client__user__ui-designer__actions__import.md",97770:"docs__en-US__handbook__data-modeling__collection-fields__associations__m2o__index.md",97884:"docs__en-US__manual__workflow__nodes__calculation.md",97940:"docs__en-US__handbook__data-visualization__echarts__wordcloud.md",98137:"docs__en-US__handbook__index.md",98205:"docs__en-US__plugins__collection-manager__user__collection-templates__calender__index.md",98571:"docs__en-US__manual__workflow__nodes__create.md",98672:"docs__en-US__handbook__auth-oidc__index.md",98690:"docs__en-US__handbook__backups__index.md",98698:"docs__en-US__manual__workflow__triggers__schedule.md",98798:"docs__en-US__plugins__workflow__manual__nodes__parallel.md",99032:"docs__en-US__manual__quick-start__functional-zoning.md",99153:"docs__en-US__api__database__interfaces__base-interface.md",99435:"docs__en-US__plugins__saml__example__google.md",99736:"docs__en-US__handbook__ui__actions__types__save-record.md",99740:"docs__en-US__handbook__data-visualization__echarts__diverging-bar.md",99763:"docs__en-US__api__data-source-manager__i-model.md",99806:"docs__en-US__handbook__data-visualization__antd-charts__pie.md",99979:"docs__en-US__handbook__data-modeling__collection-fields__advanced__uuid.md"}[_]||_)+"."+{123:"339955d5",171:"2e4b9b00",489:"dc914f55",565:"130b810f",581:"b885b452",701:"cc0e1fda",772:"02616249",876:"11ffdc1b",989:"ab92674d",1020:"0bbbac67",1131:"88a0b923",1265:"eeec829d",1327:"da7328ca",1436:"fdbde71e",1565:"93447030",1813:"610f32f4",2016:"00f014f4",2366:"69a0ba21",2390:"714be9a6",2451:"d5704a22",2483:"b0868163",2491:"e07da5f5",2496:"ff54655f",2534:"a50d32de",2563:"8974358c",2707:"47547521",2718:"173ef11c",2782:"c74ea390",2805:"63f13be7",2843:"d869f56c",2858:"677dd899",3122:"98160dc9",3143:"c8215518",3214:"d8ec3d25",3282:"b9e06e2c",3303:"67e180b6",3389:"ab37018c",3395:"ab1db92f",3820:"02f1dbf0",3826:"dbf93071",3864:"cf1967e5",3944:"5b433beb",3966:"240a37fa",4017:"83d56346",4230:"585806d7",4366:"edfc9310",4374:"523db367",4384:"278f94b8",4502:"9bf7e4df",4840:"895e9efa",5102:"30320244",5216:"e0dae252",5263:"54d167d8",5742:"ce274495",5810:"4d35978c",5822:"ae9d45c5",5939:"6a10d2a2",6006:"8daac547",6163:"0cb360d7",6275:"f1d6eca7",6319:"4444333c",6327:"75c0952e",6346:"faeaff1d",6375:"f4a4fe6b",6402:"539055b9",6509:"25f9b348",6780:"c3075ec3",6859:"bbb643d7",6885:"6d884880",6893:"9eb98f6b",6931:"db547c9a",7027:"79147f9d",7443:"d5c41f88",7486:"2f065457",7535:"5f42f61e",7692:"8c55254e",8570:"e4ebb6bd",8602:"c09742b7",8757:"59363c2d",8777:"a10d5b75",8804:"ec8bdde1",8864:"6c4a61ed",8879:"7734803a",9120:"d5287558",9161:"333ee2bb",9258:"157ce305",9385:"cfa65b3f",9388:"6cdb36d5",9420:"b625824b",9547:"740ee2ae",9584:"d391f435",9677:"aca5be84",9695:"0610c97b",9714:"5891720a",9746:"76a9bc05",9909:"48f02f96",9928:"00e73ab1",9931:"452d3a1f",10145:"34870000",10264:"d063b4b1",10385:"e7aa6eea",10414:"f510d7b0",10581:"59326f3a",10607:"65344cff",10883:"836b27f8",10905:"8fbc90d6",10986:"ee902690",11109:"c763b431",11150:"463092b8",11285:"f7a6408d",11357:"03e9bbcb",11413:"ded06f6c",11573:"b985441b",11622:"566dd121",11794:"0430898e",11902:"0ba75d8a",11922:"ae33b523",11924:"fa4af903",11995:"2b30a4a6",12046:"e8a604e6",12102:"f1462724",12150:"a1b7fafb",12174:"d37718ee",12224:"4978556b",12300:"b38dca62",12435:"69051a00",12447:"4e65bd39",12497:"e5647070",12546:"22e2ddf0",12572:"3c712627",12623:"c16da3cc",12684:"e121a296",12739:"76d3ba15",12748:"df2d1e53",12822:"783a44cd",13026:"3fabb6ce",13214:"40cfab22",13224:"643af3b9",13225:"d24a59bb",13303:"3dde8994",13472:"0869851f",13573:"a2ff7c47",13750:"815d2dbc",13918:"12fddba4",14007:"0f2fc508",14137:"79f3440c",14149:"9afdc086",14156:"5156e072",14370:"22f71352",14377:"d5db651d",14442:"6544b339",14476:"e7c3355c",14490:"5e5a1635",14651:"26920b18",14707:"18194bfe",14724:"d164e1f5",14816:"787be5ce",15001:"dce9c545",15051:"e5091e77",15089:"b5745ea5",15105:"15e8b258",15173:"9c2b6dfa",15287:"3b1edeb3",15309:"aaeb5fab",15473:"7137dc88",15491:"306102bc",15518:"01f85e94",15548:"c85f3e8d",15551:"435d1c4d",15559:"c4f618b0",15903:"aead02f2",16148:"4516fb34",16242:"ce714f60",16357:"d31bdf55",16373:"cdab75ae",16535:"fa95ef8b",16563:"4a53c189",16625:"0c1d26b0",16636:"616b0fcc",16741:"85cdeb5c",16776:"b63ded4e",16826:"7de7c78a",16871:"f55a50e4",17304:"a2b296d6",17385:"5f11bf56",17427:"d1c47609",17506:"64d6d6a4",17931:"5588494e",17961:"2cd36cb1",18066:"9e5549db",18133:"9531e3d5",18146:"0a015eaf",18247:"4accac9f",18249:"db1787f5",18252:"22f7d70a",18556:"14375c20",18693:"c1e93164",18770:"3ff5222c",18796:"936927f2",18807:"eac5786a",18830:"379afd5a",18840:"114d797b",18893:"c053f1fe",19091:"29147a52",19132:"aafcc3c5",19138:"53b8a640",19143:"16f04191",19149:"4c8b46df",19150:"bb3d3707",19158:"a2da59b9",19487:"634793c7",19682:"f6c86773",19689:"3dca7261",19703:"26f4cf65",19911:"1037aca6",19923:"e695f153",20197:"cf0b6b1a",20202:"0817a958",20358:"a2a66758",20390:"99cb2c7f",20406:"0212b0a1",20469:"3f40d88a",20538:"a8a2681e",20621:"ffda7608",20801:"b92fb0b1",21113:"7b61b645",21126:"1b9e34f9",21265:"426fa9e8",21704:"1fd7f735",22233:"44a66868",22468:"942ec673",22499:"d0579f76",22809:"08066dcd",22906:"63ba3f55",22991:"0005b960",23039:"bf5bef91",23139:"3d04d07b",23243:"48ff962a",23521:"d6525b1e",23661:"85b21b4e",23691:"93ff717b",23754:"b7a48f63",23900:"0bd7a16e",23928:"d45ad1df",24338:"58dab908",24350:"06708448",24433:"04bb4577",24499:"21dd5143",24515:"10b16085",24543:"62c37c78",24899:"7eb42da9",24983:"58fefaee",25054:"f1bcd822",25058:"0321718d",25279:"1880a98d",25520:"f94dad45",25634:"be7b1977",25690:"e66d5a74",25715:"b82e2bf6",25768:"c222bab3",25797:"7053da24",25855:"2f2a7c4e",25869:"d08c9e73",25912:"4fd020f4",25918:"13179b1b",26006:"8cccd0cb",26248:"f6251ed5",26262:"8f885a21",26295:"e83dc918",26365:"63703f01",26641:"0ae4243d",26756:"50804490",26818:"1c01664e",26985:"adff1d31",27e3:"7926e35a",27046:"73490939",27277:"7e6e40da",27291:"78e2b551",27431:"2d50059f",27833:"6dcb7d2c",27966:"41657306",27995:"c595a48e",28399:"bf098802",28477:"58d8964a",28581:"2f92c26a",28792:"e01df296",28802:"542586f4",28895:"30caa8b6",29042:"566dda46",29211:"92f0c901",29226:"f9daabb7",29341:"c36fa77c",29352:"284ab147",29396:"1178cae1",29409:"fe2238ee",29450:"9ce3da6c",29487:"664bcb7a",29532:"2ad4ef63",29786:"0182a200",29799:"7faba474",29875:"f9d1a39e",29911:"93ad04c3",30074:"3e2758e4",30105:"23ba12de",30170:"4b8cdba9",30261:"d2faa868",30347:"285783f2",30399:"f044f0cb",30468:"e8bb2aa7",30483:"702769eb",30531:"0ca893eb",30553:"81d88ce9",30621:"db242110",30758:"bfa9435c",30787:"5dbe432c",30826:"4f14c16c",30873:"79b2baee",30953:"fb5384c9",31363:"a8596b0a",31817:"eb0fd1c5",31938:"87ff5664",32009:"ce611e8c",32053:"12d4d5db",32320:"46718d5f",32405:"1d2238cf",32751:"991c0306",32921:"d65eb901",33e3:"98c31191",33121:"131aa3ce",33171:"af6cfc9a",33292:"e72083de",33506:"b533431c",33524:"0265bf16",33646:"fe4de5e1",33889:"13b091c6",33893:"f771184e",33945:"8ca0c21c",33977:"ac9eadaa",34057:"f986fb97",34059:"f8f202fd",34061:"f4bb57ea",34122:"2398bab8",34187:"1e25796a",34249:"f036a737",34345:"41173131",34357:"fef55a9a",34594:"4ab185f9",34692:"9352aa0a",34749:"8863f55a",34959:"fdabc7db",35254:"1089094d",35350:"903979ed",35357:"c9c28932",35487:"8ebb2775",35520:"1f02577e",35627:"c13856b4",35739:"c9754a88",35830:"6383d025",35831:"93148f2b",35914:"7e2b0641",35941:"14bd2ca8",36055:"513a1340",36165:"d94642fc",36311:"a833bc4b",36693:"6e55a8b6",36840:"965999dc",36874:"8961e252",36909:"d2a6bd75",37029:"8e430919",37101:"935cd583",37118:"139b1f13",37130:"777ace09",37206:"5ca67208",37332:"224fb9c6",37496:"c3238e4a",37553:"81ac9e28",37868:"40cad7bd",37992:"75e7ad31",38025:"8c7e30b7",38082:"5b598971",38122:"0c650b42",38207:"49d57cde",38242:"2123782f",38346:"b0146b63",38353:"b4225b80",38651:"f16d7c4c",38812:"56b7f39c",39046:"e7677b2f",39133:"e4121624",39311:"e0169aae",39654:"6b04917b",39659:"a0a008f8",39688:"ea0d955b",39693:"4956688d",39730:"57ff0f05",39787:"edc79088",39840:"68e81c57",39898:"1c9fda6e",40071:"b38e3bbf",40143:"92dc8fd0",40150:"cf33b150",40268:"06860b7b",40293:"71044a3c",40579:"edf880b9",40678:"32066dd8",40736:"d7418ad9",41568:"469c3917",41598:"057c0edf",41624:"7ad3c977",42084:"451d3cbc",42236:"0f110d20",42291:"74bb78ed",42334:"643ee9a4",42623:"0245132b",42641:"8e3fbdab",42927:"05b0d54d",43192:"2ab2cc81",43331:"e9b4f920",43401:"d82db417",43545:"582bdb91",43691:"f9c1741c",43694:"1a5d5426",43754:"0deb792c",43854:"908ed3a0",43860:"7efc0d8d",43901:"b8320037",44059:"64527e7e",44254:"a6c15a02",44404:"126c60f5",44411:"daa91ca4",44474:"8b9555f4",44667:"1034e45b",44720:"27f86641",45087:"c0fc8deb",45109:"5cac049d",45159:"ccadf5cc",45170:"83dff589",45381:"33f376f6",45418:"3b503f36",45526:"76226b4f",45567:"93cabd2f",45681:"d3f34f25",45682:"b09b2e0b",45716:"c07f0720",45784:"4546dff3",45789:"a20afc4f",45870:"3a3b5448",46112:"c0aebefe",46148:"46b480f9",46183:"cb98904d",46209:"761f7d05",46312:"7a33b601",46385:"7d72a08d",46426:"7450bde4",46513:"bdf6db57",46606:"dff1c0ef",46621:"1c8215da",46622:"1b29ead3",46629:"75a73abe",46723:"f04a48e0",46845:"5f384e8b",46957:"d111cecc",46982:"a17e28a7",46990:"8e6bb6fe",47052:"9a05790a",47059:"eed6a75c",47156:"ef4a7f55",47200:"899d1c3a",47442:"305cb410",47467:"8a939364",47477:"0568d117",47496:"4dc04a9e",47510:"71bb050d",47518:"02c15fe1",47724:"390fae76",47752:"8694f74e",47822:"7e5d0a20",47850:"2dee0ddf",48067:"7cf31e41",48088:"333e1675",48160:"5523f8f5",48196:"852b3e82",48205:"eac6a157",48206:"eb97d44b",48275:"04906634",48295:"73461503",48367:"5756209e",48415:"1a22b299",48540:"ba42bb4e",48721:"bd555b14",48724:"f0ddd5fb",48980:"c61b009c",49248:"f90a9b95",49316:"5a84bd6f",49444:"ceb6a28e",49603:"940b80c6",49611:"bbf2e512",49677:"b557748c",49825:"bd555ce4",49891:"07710054",49943:"0f34aea1",49974:"b2369f03",50160:"04614cdb",50208:"76a8cd80",50214:"8c92d949",50302:"67cf5ece",50425:"7fbab870",50446:"2926c10c",50552:"632b9176",50617:"d24c4622",50634:"ecc3eb59",50699:"f2550f12",50774:"f70465c5",50906:"29ff032e",50981:"584275e5",50999:"5d2a6a75",51022:"7850a1b0",51060:"0c949d34",51095:"a43b66b0",51560:"9880a980",51706:"bf2f1d61",51760:"d7375817",52024:"d61975d0",52052:"ee831319",52433:"7acce691",52502:"0769bdc9",52538:"ca0dc820",52670:"a15cdb48",52682:"a8692aa3",52725:"264d2184",53189:"ebc56018",53273:"a98120d9",53319:"d089ee1e",53344:"87f530d8",53392:"8897175a",53409:"1bb0bd2d",53693:"a0d142e9",53803:"543ab556",53860:"cefbaaa6",54009:"f50ab0c0",54067:"f8138aa3",54106:"f3340046",54169:"b688932f",54230:"854307ec",54254:"880fba8c",54314:"92bfe8bb",54410:"59c14252",54456:"6cc3b667",54464:"fa952fce",54570:"17fdd1f6",54634:"fd0496ad",54700:"a9a15b11",54855:"25f7638a",54882:"16b2589a",54903:"2edf9b7a",54944:"9cd6bbfb",55105:"f976d8f6",55196:"6d257912",55281:"8cd6f4f2",55321:"17ddd16e",55337:"85a5aefa",55596:"f24f167f",55802:"bb5e43fb",55872:"899695f9",55927:"7113cfc8",55940:"10be2261",55982:"87d4305c",56002:"fecd0fef",56065:"44ae956d",56098:"f042cc5b",56180:"f518ea3a",56238:"99ab129f",56537:"7e4e074f",56612:"d1335525",56786:"ea66ea93",56923:"ddc953c7",57101:"3a5b9de0",57113:"ca2bc1ed",57226:"01a40c18",57273:"e538148c",57367:"bf60e76f",57523:"b0202414",57548:"ea49f527",57563:"d4b232be",57797:"811727d6",57859:"b4401e8e",58314:"45695c64",58319:"211f1142",58418:"6303075e",58438:"4fa2c3a0",58493:"2b088793",58498:"08caf30c",58539:"17c47215",58581:"cae7413a",58952:"db8b95e5",59001:"e8ce9b3e",59068:"bfcddc59",59076:"035a1e24",59144:"08419905",59202:"0463095f",59263:"753593ec",59298:"ab9d2f03",59432:"536359ac",59560:"b7e1d387",60286:"a3ea7fc9",60323:"8c4c0158",60338:"af891629",60374:"45dd52ff",60436:"8af26fb4",60466:"a72157c6",60489:"6b2db593",60504:"b61e3e25",60817:"6f256ed2",60909:"42927ce5",60920:"92b8bdf1",60957:"4151f511",61087:"95d77207",61253:"943a37da",61319:"e668a9d5",61322:"9b827f96",61422:"3456c86c",61485:"97dc6c3c",61594:"84024ff0",61925:"66fcf76e",61975:"22508620",62009:"902f2a4b",62011:"779631e4",62019:"666169f7",62317:"bf99c878",62376:"bc9e45d2",62463:"222d7211",62496:"adc9cfd3",62530:"1b76d7a0",62741:"6f674e1d",62966:"c4995405",63118:"42afc341",63282:"01e62059",63320:"eba147d8",63485:"23ad1df3",63669:"a182b5ab",63772:"347fb603",63776:"99352aa2",63799:"8ee190db",63896:"366181d0",63927:"b9358e40",63939:"ff6918a7",64099:"415cc06e",64127:"bcafd01a",64144:"35368257",64531:"ee095123",64550:"ce2025b2",64564:"78c9cfc7",64630:"3d72cab2",64647:"3114eaaa",64693:"143bcaeb",64884:"5922010e",64990:"2a2461b0",65041:"5392950a",65149:"f2aa2887",65274:"f75e5078",65276:"07941c91",65423:"d5bd1451",65437:"fb29e1e7",65604:"9c92dd34",65696:"789c46af",65821:"5a01ee04",65970:"eaaec92c",66011:"c230454f",66305:"55e8c6cd",66487:"88726739",66721:"1e26ce4d",66933:"abee58f4",67040:"21ef55cb",67050:"ce24611b",67052:"92569ff1",67103:"c7feeb2a",67142:"8bc2ec6f",67309:"a86a4206",67542:"27d86346",67614:"a24974c6",67630:"ff4fd574",67653:"b16b5d6c",67710:"e7f9c6b5",67717:"7f09747b",67763:"e76a2e47",68016:"05765777",68194:"602e5533",68358:"766f1011",68481:"8288ba8e",68562:"93e6bfa2",68572:"54c0b535",68602:"00d0b33f",68679:"79580a52",68758:"052b87fe",68768:"7b7c5801",68804:"2a7d1499",68820:"4c6a8a16",68894:"fcd48c20",68931:"26b0dd86",69072:"51eb7c0b",69080:"0b084e0c",69197:"9371c008",69205:"8a5dd1b3",69327:"cdc92000",69332:"723ae899",69377:"3114287b",69450:"ea275762",69491:"ac513a19",69676:"fb4f68e5",69709:"8508e6d0",69743:"8898f812",70077:"c42e2387",70199:"9fe4d774",70282:"c32ec083",70302:"b42d856e",70354:"c2539ad9",70408:"65c47310",70488:"b4a5d2e4",70489:"006860b7",70547:"e5510be9",70600:"3578e83d",70728:"2c11884a",70839:"001924ba",71003:"45b9dd42",71028:"9bbcc9b8",71032:"674b943a",71059:"bd2f61df",71250:"b3882591",71371:"fab8bb86",71409:"21ebe270",71585:"2419dda5",71879:"79e8d67b",71892:"64abfa1c",71930:"dbcedecc",72003:"94322c86",72025:"6272f3e9",72082:"e79573f2",72348:"b19a515a",72429:"e22f1dfe",72445:"3cf281f8",72631:"764bf8bb",72747:"b570202a",72841:"52f94cb8",72924:"d3f02747",73035:"22831ea2",73192:"88dbe08e",73237:"a3dc9fa6",73239:"fe65e124",73377:"046b469f",73399:"ec9b677a",73489:"235b64a0",73492:"95c3cab4",73656:"b70e2e0e",73658:"c1cda82c",73863:"3be326d9",73871:"c25b6d14",73890:"2b287b9c",73892:"f8479457",74097:"d17cfd0f",74318:"66867862",74435:"1394855d",74487:"4bd2fcb8",74488:"37f0664d",74506:"a0b27124",74544:"8e44af7a",74563:"c9ee87bd",74767:"cb77981c",74816:"542c97fa",74947:"0fc06cd4",74990:"8a8ccd65",75007:"b05a8b84",75146:"fb7ea9b5",75231:"fb8fef25",75290:"1920c97f",75458:"2f08f423",75582:"a2e26ec0",75618:"0928fdba",75817:"fa22e156",76042:"4935997e",76118:"40eae013",76123:"a82ac8b5",76159:"49678830",76273:"d0b51a80",76341:"caedbd30",76596:"92047dba",76623:"2ce1606b",76671:"64ecc127",76694:"da0e0776",76831:"93398b3d",76924:"f61d87c2",76946:"08cac993",77074:"a9702bcf",77109:"82125fd7",77305:"130aac62",77387:"95a76d0d",77452:"94de5171",77533:"fda8789a",77573:"22576430",77649:"df43769e",77690:"1c54064a",77746:"75e94367",77779:"acbaf983",77881:"bff8eaba",77908:"5d4c9b80",77989:"aeb341e0",78106:"a5a7d704",78118:"36a67a20",78179:"22bb2f09",78275:"dc145a63",78371:"68811bca",78566:"23a0e3ea",78596:"aab65c1e",78609:"5b467664",78688:"42eb3cd3",78702:"1670b2a1",78768:"73a91089",78880:"4037eacd",78927:"999e7e78",79174:"27004e83",79240:"994dd52b",79370:"450288e5",79580:"5c25b272",79882:"bcf0efad",79983:"c9d8d8af",80152:"a6e70b33",80224:"a6509ddf",80313:"ca625ddd",80413:"e9176db6",80461:"fa912eaa",80496:"926ce9fb",80551:"65822d01",80654:"0e8fe510",80685:"41e2f8fe",80752:"577ebdc1",80790:"24b8a8aa",80882:"3201f39c",80940:"830024f8",80961:"e4c1e063",81009:"fa664299",81065:"bb3277ec",81316:"5237e23a",81538:"53916b09",81656:"65c2525e",81715:"1b3c4b16",81923:"63ebd1d7",81987:"fe551a52",82125:"0b693428",82149:"ba64a3ac",82173:"5489f63d",82215:"d681f836",82329:"870b1514",82544:"808d9e2b",82581:"8c9888c8",82596:"a7a3bf7f",82674:"25f3a9da",82880:"03ab87db",82962:"04525152",83007:"f8bb81d7",83011:"1918a652",83069:"131fca85",83169:"d7783aed",83228:"eed85a0d",83300:"4cbc87cd",83706:"d911ce32",83783:"046c979c",83833:"c885cb30",83840:"06b505d1",83884:"7c57d08d",83902:"fc0aa6f6",83999:"88fc0bf6",84056:"a04170bb",84114:"a3fc8ec5",84119:"5b0c73f8",84188:"8a38dc2c",84314:"b105a00a",84459:"4c0cf0f9",84722:"30bedeb0",84769:"6de9357f",84945:"280c2175",85089:"10a23247",85109:"adb8df13",85144:"6ce4b68c",85202:"8697a15a",85354:"e39806dc",85530:"3916c600",85570:"c93375a2",85727:"4e2c40f3",85732:"8e6e218b",85745:"f02729f5",85947:"31cd8513",85966:"7d3d8b08",86002:"595ec3f1",86010:"88644805",86016:"9c8e4b1a",86105:"56b2ab08",86310:"effa289c",86324:"5928d492",86338:"3180799d",86348:"afa0fe9b",86406:"d67628ad",86492:"66c59264",86653:"14f84c99",86725:"e4cb0b5d",87005:"11c0a9c7",87093:"5dd0b17b",87111:"d708c5a6",87493:"a0b56ff1",87603:"000715b7",87632:"5d45ca15",87719:"f2e4d5cd",87815:"a6bc9d05",87833:"768be9f0",87855:"59ae7ab8",87963:"bb10ae22",88005:"0c5ce093",88065:"3a057f20",88092:"ef6e7a50",88199:"81892647",88256:"cbe748e5",88341:"1f89855c",88383:"2df99eac",88463:"75f59f15",88525:"dfe514db",88529:"722bd5ea",88721:"331b8e1b",88822:"ccd263ef",88895:"13db030b",89073:"0ddc7983",89077:"d288abf4",89107:"d8f1260d",89209:"50aad5d4",89287:"e9ad0428",89534:"7558a33b",89989:"6a2ed8d5",90116:"93941d21",90126:"c29aa73b",90229:"d4a740f5",90455:"ca9e5968",90503:"81af2ad3",90522:"7d7f5083",90736:"4bbf99b3",90851:"91741bd3",91010:"82cc88cd",91082:"e9b0cdd0",91242:"4734b60f",91306:"b6e9d7ac",91315:"90ae8309",91590:"1f39d8d7",91613:"17a7f122",91676:"ae4e0b49",91741:"39b77cdb",91791:"c6721774",91796:"5f719213",91802:"ac8c0002",91873:"e99e50e1",91876:"ff6915f8",92019:"30d911e7",92115:"db64261a",92266:"8c4c0723",92368:"5f9610e7",92556:"3101404c",92693:"0c11ddbc",92722:"7b7bbd07",92919:"1c440a5f",92957:"cf7d97fa",93065:"58c04e94",93096:"54662c96",93142:"a6015bd7",93220:"dde0b00a",93330:"a5588522",93338:"3e2b7cba",93395:"9d3b8d0c",93428:"3fb14281",93555:"7a5640cd",93797:"fa1a77f0",93903:"3da4661c",93946:"a42e9786",93969:"9c25b575",93989:"632f0c9c",93998:"d07b3cdc",94154:"adfe31af",94210:"6f964c1b",94220:"4c0ee2af",94252:"25a883ad",94350:"f9ef99cf",94385:"99a92081",94388:"eccc256b",94406:"86ba31b1",94466:"b5e07591",94589:"e722df7f",94717:"bd44c479",94725:"8fa73684",94783:"647c6738",94847:"477c637e",94888:"6c63b87b",95059:"1580767d",95187:"7a61777a",95319:"3acc1297",95387:"853d3cf3",95537:"411327cd",95565:"5029cf66",95724:"b3129f12",95805:"e1904420",95828:"fb22862f",95989:"cda149e8",96023:"1b9cc26e",96257:"adf114bb",96316:"77bf5789",96393:"80aafd3c",96617:"b4914af6",96685:"1ed25bc3",96793:"18434612",96817:"0d61d13e",96827:"fa6a883b",96914:"bd465220",96939:"d7179f89",96953:"a7a89ffe",96984:"03f18cec",97098:"05578c8d",97180:"f541ba79",97213:"115fbef7",97296:"960c906f",97569:"7fab11a7",97694:"52eb9d70",97770:"a39caa67",97884:"60dff7ff",97940:"856ff912",98137:"97c872c9",98205:"c5e54419",98507:"3eed37a3",98571:"0364d009",98672:"081d281d",98690:"c1c92893",98698:"bebb75c1",98727:"1d66ab82",98798:"354edcfe",98889:"caa0db45",98980:"44029391",99032:"0917bd9f",99153:"74b793f8",99157:"2dcc4141",99182:"8d89042c",99339:"cb774960",99435:"31e95e84",99517:"6a2a9e44",99670:"65b88b2f",99736:"39d5f81b",99740:"29556f75",99763:"5ae2782c",99806:"7d58b29e",99979:"a3c83a58"}[_]+".async.js"}}(),function(){__webpack_require__.miniCssF=function(_){return""+({171:"docs__en-US__handbook__workflow__triggers__schedule.md",489:"docs__en-US__breaking-changes__index.md",565:"docs__en-US__handbook__workflow-loop__index.md",581:"docs__en-US__manual__ui__fields__association-components__summary__index.md",701:"docs__en-US__development__http-api__index.md",876:"docs__en-US__manual__mobile__development__frontend.md",989:"docs__en-US__handbook__data-visualization__antd-charts__scatter.md",1020:"docs__en-US__handbook__auth-ldap__index.md",1131:"docs__en-US__plugins__collection-manager__user__collection-templates__general__index.md",1265:"docs__en-US__handbook__data-visualization__user__configure.md",1327:"docs__en-US__plugin-samples__schema-initializer__block-simple.md",1436:"docs__en-US__handbook__ui__fields__specific__picker.md",1565:"docs__en-US__handbook__ui__blocks__other-blocks__markdown.md",1813:"docs__en-US__handbook__workflow-custom-action-trigger__trigger.md",2016:"docs__en-US__welcome__release__formulas.md",2366:"docs__en-US__plugins__workflow-form-trigger__index.md",2451:"docs__en-US__plugin-samples__router__add-page__index.md",2483:"docs__en-US__development__server__collections__association-fields.md",2491:"docs__en-US__handbook__plugin-manager__index.md",2496:"docs__en-US__plugins__client__user__ui-designer__actions__edit.md",2534:"docs__en-US__plugins__map__index.md",2563:"docs__en-US__handbook__client__user__ui-designer__actions__view.md",2707:"docs__en-US__handbook__ui__actions__types__add-new.md",2718:"docs__en-US__handbook__field-formula__index.md",2782:"docs__en-US__plugins__collection-manager__user__association-fields__summary__index.md",2805:"docs__en-US__development__others__testing.md",2843:"docs__en-US__manual__workflow__index.md",2858:"docs__en-US__api__telemetry__telemetry.md",3122:"docs__en-US__manual__collection__fields__media.md",3143:"docs__en-US__welcome__release__roadmap.md",3214:"docs__en-US__handbook__file-manager__storage__aliyun-oss.md",3282:"docs__en-US__handbook__workflow__nodes__approval.md",3303:"docs__en-US__plugin-samples__router__index.md",3389:"docs__en-US__handbook__data-visualization__faq.md",3395:"docs__en-US__manual__ui__actions__open-popup.md",3820:"docs__en-US__plugins__collection-manager__user__association-fields__sub-table__index.md",3826:"docs__en-US__handbook__data-modeling__collection-fields__associations__m2m__index.md",3944:"docs__en-US__handbook__client__user__ui-designer__blocks__index.md",3966:"docs__en-US__manual__workflow__nodes__delay.md",4230:"docs__en-US__plugins__graph-collection-manager__index.md",4366:"docs__en-US__api__data-source-manager__data-source.md",4374:"docs__en-US__plugins__client__user__ui-designer__actions__submit-to-workflow.md",4384:"docs__en-US__plugins__client__user__index.md",4840:"docs__en-US__plugins__workflow__manual__nodes__loop.md",5102:"docs__en-US__handbook__workflow__nodes__create.md",5216:"docs__en-US__plugins__workflow-loop__index.md",5263:"docs__en-US__plugins__workflow-delay__index.md",5810:"docs__en-US__plugin-samples__component-and-scope__global.md",5822:"docs__en-US__plugins__collection-manager__user__association-fields__sub-form__index.md",5939:"docs__en-US__handbook__collection-fdw__enable-federated.md",6006:"docs__en-US__handbook__action-import__index.md",6163:"docs__en-US__manual__data-visualization__chart-block.md",6275:"docs__en-US__plugin-samples__component-and-scope__local.md",6319:"docs__en-US__plugins__verification__index.md",6327:"docs__en-US__plugins__workflow__index.md",6346:"docs__en-US__manual__plugin-manager__plugin-settings__index.md",6375:"docs__en-US__api__logger.md",6780:"docs__en-US__api__client__schema-designer__schema-initializer.md",6859:"docs__en-US__handbook__ui__fields__field-settings__style.md",6885:"docs__en-US__handbook__ui__blocks__data-blocks__form.md",6893:"docs__en-US__api__resourcer__action.md",6931:"docs__en-US__manual__workflow__nodes__loop.md",7027:"docs__en-US__manual__data-visualization__filter.md",7443:"docs__en-US__handbook__file-manager__storage__tencent-cos.md",7535:"docs__en-US__handbook__client__user__ui-designer__actions__open-popup.md",7692:"docs__en-US__handbook__client__user__ui-designer__fields__index.md",8570:"docs__en-US__plugin-samples__plugin-settings__form.md",8602:"docs__en-US__api__server__sync-message-manager.md",8757:"docs__en-US__handbook__data-visualization__index.md",8777:"docs__en-US__welcome__release__v0170-changelog.md",8804:"docs__en-US__handbook__data-modeling__collection-fields__basic__integer.md",8879:"docs__en-US__plugins__theme-editor__index.md",9120:"docs__en-US__plugins__collection-manager__user__collection-templates__tree__index.md",9161:"docs__en-US__handbook__backups__installation__postgres.md",9258:"docs__en-US__welcome__community__faq.md",9385:"docs__en-US__welcome__getting-started__upgrading__create-nocobase-app.md",9388:"docs__en-US__welcome__release__v0070-changelog.md",9420:"docs__en-US__api__auth__auth.md",9547:"docs__en-US__handbook__data-modeling__collection-fields__basic__percent.md",9584:"docs__en-US__plugins__import__index.md",9677:"docs__en-US__handbook__data-modeling__collection-fields__basic__url.md",9695:"docs__en-US__handbook__ui__actions__types__edit.md",9714:"docs__en-US__development__client__test.md",9746:"docs__en-US__api__test__e2e.md",9909:"docs__en-US__manual__workflow__nodes__destroy.md",9931:"docs__en-US__manual__core-concepts__a-b-c.md",10145:"docs__en-US__plugin-samples__schema-initializer__action-modal.md",10264:"docs__en-US__development__server__routing.md",10385:"docs__en-US__plugins__collection-manager__user__collection-templates__file__index.md",10414:"docs__en-US__plugins__collection-manager__user__collection-templates__sql__index.md",10581:"docs__en-US__handbook__file-manager__storage__amazon-s3.md",10607:"docs__en-US__api__acl__acl.md",10883:"docs__en-US__handbook__auth-saml__example__google.md",10905:"docs__en-US__plugins__ui-schema-storage__index.md",10986:"docs__en-US__handbook__users__index.md",11109:"docs__en-US__plugins__workflow__manual__nodes__sql.md",11150:"docs__en-US__development__http-api__action-api.md",11285:"docs__en-US__handbook__graph-collection-manager__index.md",11357:"docs__en-US__handbook__data-visualization__echarts__pie.md",11413:"docs__en-US__welcome__getting-started__upgrading__git-clone.md",11622:"docs__en-US__handbook__workflow-custom-action-trigger__example.md",11902:"docs__en-US__handbook__calendar__calendar-collection.md",11922:"docs__en-US__handbook__collection-view__index.md",11924:"docs__en-US__plugins__formula-field__index.md",11995:"docs__en-US__handbook__workflow-dynamic-calculation__node.md",12046:"docs__en-US__development__client__ui-schema__components.md",12102:"docs__en-US__welcome__release__v0190-changelog.md",12150:"docs__en-US__welcome__release__v0091-changelog.md",12174:"docs__en-US__development__others__deps.md",12224:"docs__en-US__api__data-source-manager__i-repository.md",12300:"docs__en-US__api__telemetry__metric.md",12435:"docs__en-US__handbook__users__field-created-by.md",12447:"docs__en-US__handbook__ui__fields__field-settings__field-component.md",12497:"docs__en-US__handbook__data-visualization__echarts__line.md",12546:"docs__en-US__welcome__release__20240519-changelog.md",12572:"docs__en-US__manual__collection__collection-templates__tree__index.md",12623:"docs__en-US__handbook__workflow__triggers__approval.md",12684:"docs__en-US__handbook__data-modeling__collection.md",12739:"docs__en-US__handbook__collection-fdw__index.md",12748:"docs__en-US__handbook__data-modeling__collection-fields__choices__select.md",12822:"docs__en-US__handbook__ui__actions__types__filter.md",13026:"docs__en-US__handbook__ui__fields__field-settings__edit-description.md",13214:"docs__en-US__api__server__plugin-manager.md",13224:"docs__en-US__api__cache__cache.md",13225:"docs__en-US__handbook__ui__fields__generic__filter-form-item.md",13303:"docs__en-US__plugins__client__user__ui-designer__actions__update-record.md",13472:"docs__en-US__manual__collection__fields__map.md",13573:"docs__en-US__api__client__application.md",13750:"docs__en-US__handbook__workflow__nodes__request.md",13918:"docs__en-US__plugins__workflow__manual__index.md",14007:"docs__en-US__plugins__collection-manager__user__collection-templates__expression__index.md",14137:"docs__en-US__handbook__ui__blocks__other-blocks__workflow-approval.md",14156:"docs__en-US__manual__localization-management__index.md",14370:"docs__en-US__handbook__embed__index.md",14377:"docs__en-US__welcome__release__inherits.md",14442:"docs__en-US__plugins__workflow__manual__nodes__request.md",14476:"docs__en-US__api__client__extensions__collection-manager.md",14490:"docs__en-US__handbook__collection-tree__index.md",14651:"docs__en-US__manual__plugin-manager__plugin-manager__index.md",14707:"docs__en-US__development__server__migration.md",14816:"docs__en-US__development__client__router.md",15051:"docs__en-US__handbook__api-keys__index.md",15089:"docs__en-US__handbook__workflow-json-query__index.md",15105:"docs__en-US__development__server__middleware.md",15173:"docs__en-US__manual__ui__actions__custom-request.md",15309:"docs__en-US__handbook__data-visualization__echarts__radar.md",15491:"docs__en-US__plugin-samples__schema-initializer__block-data.md",15518:"docs__en-US__handbook__data-modeling__collection-fields__geometric__line.md",15548:"docs__en-US__handbook__data-modeling__collection-fields__system-info__created-at.md",15559:"docs__en-US__welcome__release__v0074-changelog.md",16242:"docs__en-US__handbook__field-china-region__index.md",16357:"docs__en-US__handbook__file-manager__development__index.md",16373:"docs__en-US__handbook__workflow__nodes__sql.md",16535:"docs__en-US__plugins__workflow__manual__triggers__collection.md",16563:"docs__en-US__handbook__file-storage-oss__index.md",16625:"docs__en-US__manual__collection__collection-templates__expression__index.md",16741:"docs__en-US__manual__collection__fields__system.md",16776:"docs__en-US__welcome__community__contributing.md",16826:"docs__en-US__api__handlebars-helpers__array.md",16871:"docs__en-US__manual__ui__actions__export.md",17304:"docs__en-US__manual__core-concepts__containers.md",17385:"docs__en-US__api__data-source-manager__i-collection.md",17506:"docs__en-US__handbook__system-settings__index.md",17931:"docs__en-US__handbook__workflow__nodes__index.md",17961:"docs__en-US__plugins__action-bulk-edit__index.md",18133:"docs__en-US__handbook__workflow-custom-action-trigger__index.md",18247:"docs__en-US__plugins__collection-manager__user__association-fields__sub-form(popover)__index.md",18249:"docs__en-US__plugins__collection-manager__index.md",18252:"docs__en-US__api__handlebars-helpers__path.md",18556:"docs__en-US__handbook__mobile-client__index.md",18693:"docs__en-US__welcome__changelog__20240519.md",18770:"docs__en-US__handbook__ui__variables.md",18796:"docs__en-US__plugins__oidc__index.md",18807:"docs__en-US__handbook__ui__blocks__data-blocks__details.md",18830:"docs__en-US__handbook__auth__dev__api.md",18840:"docs__en-US__handbook__workflow-dynamic-calculation__index.md",18893:"docs__en-US__plugin-samples__schema-initailizer__index.md",19138:"docs__en-US__handbook__ui__fields__field-settings__required.md",19143:"docs__en-US__api__database__field.md",19150:"docs__en-US__plugins__localization-management__index.md",19158:"docs__en-US__plugin-samples__schema-settings__new.md",19689:"docs__en-US__handbook__ui__blocks__block-settings__block-title.md",19703:"docs__en-US__welcome__getting-started__installation__create-nocobase-app.md",19923:"docs__en-US__handbook__file-manager__storage__local.md",20197:"docs__en-US__api__handlebars-helpers__regex.md",20202:"docs__en-US__handbook__data-modeling__collection-fields__basic__input.md",20358:"docs__en-US__handbook__ui__fields__field-settings__validation-rules.md",20390:"docs__en-US__handbook__data-modeling__collection-fields__advanced__collection-select.md",20406:"docs__en-US__handbook__collection-sql__index.md",20469:"docs__en-US__plugins__workflow-approval__index.md",20538:"docs__en-US__development__server__resources-actions-v2__configuration.md",20621:"docs__en-US__welcome__getting-started__plugin.md",20801:"docs__en-US__manual__collection__fields__advanced.md",21126:"docs__en-US__handbook__data-modeling__collection-fields__datetime__index.md",21265:"docs__en-US__api__index.md",21704:"docs__en-US__handbook__ui__fields__field-settings__number-format.md",22233:"docs__en-US__development__client__ui-schema__settings.md",22468:"docs__en-US__manual__workflow__start.md",22499:"docs__en-US__manual__workflow__nodes__parallel.md",22809:"docs__en-US__plugins__client__user__plugin-manager__index.md",22906:"docs__en-US__api__resourcer__middleware.md",22991:"docs__en-US__api__database__shared__transaction.md",23039:"docs__en-US__handbook__workflow__development__api.md",23139:"docs__en-US__handbook__workflow__triggers__pre-action.md",23243:"docs__en-US__api__database__shared__create-options.md",23661:"docs__en-US__handbook__field-markdown-vditor__index.md",23691:"docs__en-US__api__handlebars-helpers__string.md",23754:"docs__en-US__manual__ui__fields__association-components__title__index.md",23900:"docs__en-US__handbook__auth__index.md",23928:"docs__en-US__api__telemetry__trace.md",24338:"docs__en-US__handbook__action-import-pro__index.md",24350:"docs__en-US__api__handlebars-helpers__index.md",24433:"docs__en-US__handbook__ui__fields__specific__cascade-select.md",24499:"docs__en-US__plugin-samples__router__add-setting-page-layout-routes__index.md",24515:"docs__en-US__development__server__telemetry.md",24543:"docs__en-US__plugins__backup-restore__index.md",24899:"docs__en-US__manual__collection__collection-fdw__enable-federated.md",24983:"docs__en-US__welcome__release__v0075-changelog.md",25058:"docs__en-US__welcome__release__tree-collection.md",25279:"docs__en-US__handbook__workflow__index.md",25520:"docs__en-US__development__server__events.md",25634:"docs__en-US__plugins__logger__index.md",25690:"docs__en-US__development__others__build.md",25768:"docs__en-US__plugin-samples__schema-initializer__configure-actions.md",25797:"docs__en-US__manual__collection__fields__relation.md",25855:"docs__en-US__handbook__workflow-request-interceptor__action.md",25869:"docs__en-US__handbook__file-storage-s3__index.md",25912:"docs__en-US__api__auth__auth-manager.md",25918:"docs__en-US__manual__workflow__triggers__form.md",26006:"docs__en-US__handbook__audit-logs__index.md",26248:"docs__en-US__welcome__getting-started__deployment__docker-compose.md",26262:"docs__en-US__plugins__workflow__manual__nodes__delay.md",26295:"docs__en-US__api__server__migration.md",26365:"docs__en-US__development__client__i18n.md",26641:"docs__en-US__development__server__resources-actions.md",26756:"docs__en-US__welcome__changelog__0-template.md",26818:"docs__en-US__plugins__custom-request__index.md",27e3:"docs__en-US__api__http__rest-api.md",27046:"docs__en-US__handbook__auth__user__index.md",27277:"docs__en-US__handbook__action-bulk-update__index.md",27291:"docs__en-US__plugins__workflow__development__api.md",27431:"docs__en-US__manual__ui__actions__import.md",27833:"docs__en-US__handbook__ui__blocks__data-blocks__list.md",27966:"docs__en-US__welcome__release__v0060-changelog.md",27995:"docs__en-US__plugin-samples__index.md",28399:"docs__en-US__handbook__data-visualization__echarts__bar.md",28581:"docs__en-US__handbook__data-modeling__collection-fields__basic__color.md",28802:"docs__en-US__handbook__data-source-external-mysql__index.md",28895:"docs__en-US__handbook__file-manager__storage__index.md",29042:"docs__en-US__welcome__getting-started__deployment__env-note.md",29211:"docs__en-US__manual__collection__inherit.md",29226:"docs__en-US__handbook__workflow__nodes__condition.md",29341:"docs__en-US__manual__collection__fields__basic.md",29352:"docs__en-US__plugin-samples__field__without-value.md",29396:"docs__en-US__handbook__data-modeling__collection-fields__choices__multiple-select.md",29409:"docs__en-US__handbook__app-switching__index.md",29450:"docs__en-US__handbook__data-visualization__block-charts.md",29487:"docs__en-US__manual__core-concepts__blocks.md",29532:"docs__en-US__handbook__ui__fields__field-settings__display-title.md",29786:"docs__en-US__manual__collection__collection-templates__calender__index.md",29875:"docs__en-US__handbook__workflow__quick-start.md",30074:"docs__en-US__handbook__data-modeling__collection-fields__datetime__datetime.md",30105:"docs__en-US__handbook__workflow__triggers__collection.md",30170:"docs__en-US__handbook__data-modeling__collection-fields__associations__o2m__index.md",30347:"docs__en-US__plugins__action-duplicate__index.md",30399:"docs__en-US__manual__file-manager__amazon-s3.md",30468:"docs__en-US__manual__ui__menus__index.md",30483:"docs__en-US__welcome__release__v0120-changelog.md",30531:"docs__en-US__plugins__acl__index.md",30553:"docs__en-US__plugins__client__user__ui-designer__actions__custom-request.md",30621:"docs__en-US__handbook__data-visualization__antd-charts__bar.md",30787:"docs__en-US__manual__collection__management.md",30826:"docs__en-US__handbook__ui__actions__action-settings__linkage-rule.md",30873:"docs__en-US__plugins__users__index.md",30953:"docs__en-US__handbook__ui__ui-editor__index.md",31363:"docs__en-US__manual__ui__fields__association-components__index.md",31817:"docs__en-US__handbook__workflow-approval__block.md",31938:"docs__en-US__development__server__commands.md",32053:"docs__en-US__plugins__sms-auth__index.md",32320:"docs__en-US__handbook__data-modeling__collection-fields__media__field-attachment.md",32405:"docs__en-US__handbook__ui__blocks__other-blocks__workflow-manual-todos.md",32751:"docs__en-US__api__handlebars-helpers__i18n.md",33e3:"docs__en-US__api__handlebars-helpers__math.md",33121:"docs__en-US__manual__ui__index.md",33171:"docs__en-US__handbook__auth-dingtalk__index.md",33292:"docs__en-US__handbook__ui__fields__specific__tag.md",33506:"docs__en-US__handbook__data-modeling__collection-fields__choices__checkbox.md",33524:"docs__en-US__plugins__workflow__manual__nodes__update.md",33893:"docs__en-US__handbook__ui__actions__types__refresh.md",33945:"docs__en-US__handbook__client__user__index.md",33977:"docs__en-US__handbook__workflow-date-calculation__index.md",34057:"docs__en-US__handbook__block-tree__index.md",34059:"docs__en-US__handbook__auth-cas__index.md",34061:"docs__en-US__breaking-changes__v0-18-0-alpha-1.md",34122:"docs__en-US__development__client__api-client.md",34187:"docs__en-US__manual__backup-restore__index.md",34249:"docs__en-US__plugins__data-visualization__index.md",34345:"docs__en-US__handbook__workflow__development__instruction.md",34357:"docs__en-US__handbook__workflow-action-trigger__http-api.md",34594:"docs__en-US__manual__ui__fields__association-components__sub-form__index.md",34692:"docs__en-US__handbook__workflow__nodes__variable.md",34749:"docs__en-US__handbook__ui__fields__index.md",34959:"docs__en-US__handbook__workflow__advanced__revisions.md",35350:"docs__en-US__plugins__collection-manager__user__association-fields__tag__index.md",35357:"docs__en-US__plugins__collection-manager__user__field-interfaces__index.md",35487:"docs__en-US__development__client__life-cycle.md",35520:"docs__en-US__plugins__data-visualization__user__configure.md",35739:"docs__en-US__handbook__workflow-sql__index.md",35830:"docs__en-US__handbook__workflow-parallel__index.md",35831:"docs__en-US__handbook__data-source-kingbase__index.md",36055:"docs__en-US__plugins__sequence-field__index.md",36311:"docs__en-US__handbook__workflow__nodes__dynamic-calculation.md",36693:"docs__en-US__handbook__ui__actions__action-settings__popup-size.md",36840:"docs__en-US__handbook__ui__pages__index.md",36874:"docs__en-US__development__index.md",36909:"docs__en-US__welcome__release__v0071-changelog.md",37029:"docs__en-US__api__test__client.md",37130:"docs__en-US__handbook__data-modeling__collection-fields__basic__phone.md",37206:"docs__en-US__development__client__index.md",37332:"docs__en-US__handbook__ui__fields__specific__sub-detail.md",37868:"docs__en-US__manual__ui__actions__update-record.md",37992:"docs__en-US__handbook__workflow__nodes__aggregate.md",38025:"docs__en-US__plugins__workflow__manual__advanced.md",38082:"docs__en-US__handbook__workflow__triggers__post-action.md",38122:"docs__en-US__breaking-changes__v0-17-0-alpha-3.md",38207:"docs__en-US__handbook__data-modeling__collection-fields__choices__radio-group.md",38346:"docs__en-US__plugins__workflow-sql__index.md",38353:"docs__en-US__handbook__data-visualization__echarts__treemap.md",38651:"docs__en-US__handbook__workflow-dynamic-calculation__collection.md",38812:"docs__en-US__handbook__backups__installation__mysql.md",39046:"docs__en-US__breaking-changes__v0-17-0-alpha-5.md",39133:"docs__en-US__handbook__ui__blocks__index.md",39311:"docs__en-US__plugins__data-visualization__user__filter.md",39654:"docs__en-US__handbook__field-sort__index.md",39659:"docs__en-US__welcome__getting-started__deployment__git-clone.md",39688:"docs__en-US__handbook__notification-manager__index.md",39693:"docs__en-US__components.md",39730:"docs__en-US__manual__core-concepts__actions.md",39787:"docs__en-US__handbook__client__user__ui-designer__actions__submit-to-workflow.md",39840:"docs__en-US__plugins__audit-logs__index.md",39898:"docs__en-US__welcome__introduction__features.md",40143:"docs__en-US__handbook__data-source-main__general-collection.md",40150:"docs__en-US__plugins__collection-manager__user__association-fields__select__index.md",40268:"docs__en-US__plugins__workflow__manual__nodes__index.md",40293:"docs__en-US__handbook__ui__actions__types__view.md",40678:"docs__en-US__handbook__data-modeling__collection-fields__media__rich-text.md",40736:"docs__en-US__plugins__china-region__index.md",41568:"docs__en-US__handbook__notification-in-app-message__index.md",41598:"docs__en-US__handbook__block-kanban__index.md",41624:"docs__en-US__development__server__index.md",42084:"docs__en-US__welcome__release__collection-templates.md",42236:"docs__en-US__welcome__release__v0080-changelog.md",42291:"docs__en-US__plugins__collection-manager__user__association-fields__cascade-select__index.md",42334:"docs__en-US__handbook__workflow-request-interceptor__index.md",42623:"docs__en-US__handbook__ui__fields__specific__title.md",42927:"docs__en-US__manual__blocks-guide__charts.md",43192:"docs__en-US__api__database__shared__find-one.md",43331:"docs__en-US__handbook__data-modeling__index.md",43401:"docs__en-US__handbook__ui__blocks__block-settings__linkage-rule.md",43545:"docs__en-US__manual__file-manager__aliyun-oss.md",43691:"docs__en-US__handbook__field-snapshot__index.md",43694:"docs__en-US__welcome__introduction__index.md",43754:"docs__en-US__plugin-samples__schema-initailizer__add-item-to-block.md",43854:"docs__en-US__handbook__workflow-manual__index.md",43860:"docs__en-US__handbook__client__user__ui-designer__actions__duplicate.md",44059:"docs__en-US__handbook__workflow-custom-action-trigger__action.md",44254:"docs__en-US__welcome__release__v0140-changelog.md",44404:"docs__en-US__manual__collection__collection-templates__index.md",44411:"docs__en-US__api__test__server.md",44474:"docs__en-US__plugins__api-doc__index.md",44667:"docs__en-US__plugins__cas__index.md",44720:"docs__en-US__handbook__data-modeling__collection-fields__advanced__json.md",45087:"docs__en-US__manual__ui__fields__association-components__file-manager__index.md",45109:"docs__en-US__manual__collection__collection-templates__general__index.md",45170:"docs__en-US__handbook__notification-manager__development__api.md",45381:"docs__en-US__plugins__workflow__manual__nodes__dynamic-calculation.md",45526:"docs__en-US__development__server__i18n.md",45681:"docs__en-US__plugins__workflow__manual__triggers__index.md",45682:"docs__en-US__handbook__client__user__ui-designer__actions__add-new.md",45716:"docs__en-US__development__client__ui-schema__designable.md",45784:"docs__en-US__handbook__data-modeling__collection-fields__choices__china-region.md",45789:"docs__en-US__handbook__ui__blocks__filter-blocks__form.md",45870:"docs__en-US__handbook__client__user__ui-designer__pages__index.md",46112:"docs__en-US__handbook__workflow-action-trigger__action.md",46209:"docs__en-US__handbook__field-component-mask__index.md",46385:"docs__en-US__handbook__ui__blocks__block-settings__loading-mode.md",46426:"docs__en-US__handbook__action-custom-request__index.md",46606:"docs__en-US__handbook__data-modeling__collection-fields__associations__index.md",46621:"docs__en-US__welcome__introduction__why.md",46723:"docs__en-US__manual__theme-editor__index.md",46845:"docs__en-US__plugins__file-manager__tencent-cos.md",46957:"docs__en-US__handbook__ui__blocks__block-settings__data-scope.md",46982:"docs__en-US__manual__workflow__nodes__sql.md",47052:"docs__en-US__handbook__ui__menus__index.md",47059:"docs__en-US__manual__ui__pages__index.md",47156:"docs__en-US__plugins__client__user__user-center__index.md",47442:"docs__en-US__plugins__workflow-aggregate__index.md",47477:"docs__en-US__manual__collection__collection-fdw__index.md",47496:"docs__en-US__handbook__field-m2m-array__index.md",47510:"docs__en-US__development__app-ds.md",47518:"docs__en-US__manual__ui__actions__duplicate.md",47752:"docs__en-US__handbook__client__user__ui-designer__actions__edit.md",47850:"docs__en-US__handbook__block-map__index.md",48067:"docs__en-US__handbook__ui__actions__types__update-record.md",48088:"docs__en-US__plugin-samples__router__add-setting-page-tabs-routes__index.md",48160:"docs__en-US__handbook__system-settings__language-settings.md",48196:"docs__en-US__handbook__workflow__triggers__index.md",48205:"docs__en-US__handbook__workflow-action-trigger__trigger.md",48206:"docs__en-US__handbook__ui__fields__generic__bulk-edit-form-item.md",48275:"docs__en-US__development__server__collections__collection-template.md",48295:"docs__en-US__handbook__client__user__ui-designer__actions__refresh.md",48367:"docs__en-US__manual__user__user-center__index.md",48415:"docs__en-US__api__client__schema-designer__schema-component.md",48721:"docs__en-US__api__data-source-manager__i-collection-manager.md",48724:"docs__en-US__handbook__action-bulk-edit__index.md",48980:"docs__en-US__development__http-api__filter-operators.md",49248:"docs__en-US__handbook__data-modeling__collection-fields__basic__textarea.md",49316:"docs__en-US__manual__collection__index.md",49444:"docs__en-US__plugin-samples__component-and-scope__index.md",49603:"docs__en-US__handbook__data-modeling__collection-fields__geometric__point.md",49611:"docs__en-US__handbook__data-modeling__collection-fields__datetime__time.md",49677:"docs__en-US__api__database__operators.md",49825:"docs__en-US__handbook__block-gantt__index.md",49891:"docs__en-US__handbook__workflow__plugins__aggregate.md",49943:"docs__en-US__plugins__auth__user__index.md",49974:"docs__en-US__handbook__ui__fields__field-settings__pattern.md",50160:"docs__en-US__plugins__collection-fdw__index.md",50208:"docs__en-US__handbook__workflow-variable__index.md",50214:"docs__en-US__manual__ui__actions__submit-to-workflow.md",50425:"docs__en-US__plugin-samples__router__replace-page__index.md",50446:"docs__en-US__plugin-samples__block__block-form.md",50552:"docs__en-US__api__sdk__index.md",50634:"docs__en-US__development__server__collections__field-extension.md",50699:"docs__en-US__development__server__test.md",50774:"docs__en-US__handbook__data-visualization__antd-charts__dual-axes.md",50981:"docs__en-US__handbook__workflow__advanced__executions.md",50999:"docs__en-US__manual__workflow__nodes__aggregate.md",51022:"docs__en-US__handbook__data-visualization__echarts__area.md",51060:"docs__en-US__plugins__oidc__example__google.md",51095:"docs__en-US__plugins__client__user__ui-designer__fields__index.md",51706:"docs__en-US__handbook__ui__fields__field-settings__data-scope.md",51760:"docs__en-US__handbook__collection-expression__collection.md",52024:"docs__en-US__handbook__file-storage-cos__index.md",52052:"docs__en-US__manual__ui__actions__index.md",52433:"demos",52538:"docs__en-US__handbook__auth-sms__index.md",52670:"docs__en-US__development__server__resources-actions-v2__index.md",52682:"docs__en-US__handbook__ui__actions__action-settings__open-mode.md",52725:"docs__en-US__plugins__client__user__ui-designer__actions__add-new.md",53273:"docs__en-US__welcome__release__v0180-changelog.md",53319:"docs__en-US__plugin-samples__schema-initializer__block-data-modal.md",53344:"docs__en-US__plugins__client__user__ui-designer__actions__delete.md",53392:"docs__en-US__welcome__changelog__20240607.md",53409:"docs__en-US__handbook__data-visualization__antd__table.md",53693:"docs__en-US__plugins__export__index.md",53803:"docs__en-US__manual__ui__inherit.md",54009:"docs__en-US__plugin-samples__schema-initializer__configure-fields.md",54106:"docs__en-US__breaking-changes__v0.19.0-alpha.1.md",54169:"docs__en-US__development__server__logger.md",54230:"docs__en-US__api__handlebars-helpers__core.md",54314:"docs__en-US__manual__file-manager__tencent-cos.md",54410:"docs__en-US__handbook__data-source-main__inheritance-collection.md",54456:"docs__en-US__handbook__data-source-external-mariadb__index.md",54464:"docs__en-US__plugins__auth__dev__guide.md",54570:"docs__en-US__handbook__workflow-approval__index.md",54634:"docs__en-US__api__client__router.md",54700:"docs__en-US__api__cache__cache-manager.md",54882:"docs__en-US__plugins__client__user__ui-designer__actions__print.md",54903:"docs__en-US__handbook__data-modeling__collection-fields__system-info__updated-at.md",54944:"docs__en-US__handbook__ui__actions__types__pop-up.md",55196:"docs__en-US__plugins__client__user__plugin-settings__index.md",55281:"docs__en-US__handbook__ui__actions__types__submit.md",55337:"docs__en-US__handbook__workflow__nodes__json-query.md",55802:"docs__en-US__manual__ui__actions__add-new.md",55872:"docs__en-US__api__database__relation-repository__index.md",55927:"docs__en-US__handbook__mobile__index.md",55940:"docs__en-US__api__handlebars-helpers__number.md",55982:"docs__en-US__api__database__shared.md",56002:"docs__en-US__plugins__mobile-client__index.md",56065:"docs__en-US__handbook__data-visualization__antd-charts__column.md",56098:"docs__en-US__handbook__data-source-rest-api__index.md",56180:"docs__en-US__plugins__index.md",56238:"docs__en-US__welcome__getting-started__installation__index.md",56537:"docs__en-US__welcome__release__v0094-changelog.md",56612:"docs__en-US__plugins__workflow__development__index.md",56786:"docs__en-US__handbook__workflow-delay__index.md",56923:"docs__en-US__plugins__kanban__index.md",57101:"docs__en-US__handbook__workflow-manual__node.md",57226:"docs__en-US__plugins__action-print__index.md",57273:"docs__en-US__plugins__action-bulk-update__index.md",57367:"docs__en-US__plugins__multi-app-manager__index.md",57523:"docs__en-US__handbook__data-source-manager__external-database.md",57859:"docs__en-US__manual__workflow__nodes__query.md",58314:"docs__en-US__handbook__ui__pop-up.md",58319:"docs__en-US__handbook__ui__actions__action-settings__edit-button.md",58418:"docs__en-US__plugin-samples__field__value.md",58438:"docs__en-US__manual__ui__actions__filter.md",58493:"docs__en-US__handbook__workflow__development__index.md",58498:"docs__en-US__welcome__community__translations.md",58539:"docs__en-US__plugin-samples__field__index.md",58581:"docs__en-US__handbook__workflow__nodes__calculation.md",58952:"docs__en-US__handbook__action-duplicate__index.md",59001:"docs__en-US__handbook__client__user__ui-designer__actions__update-record.md",59068:"docs__en-US__handbook__telemetry-prometheus__index.md",59076:"docs__en-US__plugins__data-visualization__user__chart-block.md",59144:"docs__en-US__handbook__action-export__index.md",59202:"docs__en-US__manual__core-concepts__collections.md",59263:"docs__en-US__plugin-samples__router__add-setting-page-single-route__index.md",59298:"docs__en-US__handbook__ui__blocks__filter-blocks__collapse.md",59432:"docs__en-US__manual__mobile__index.md",59560:"docs__en-US__handbook__client__index.md",60286:"docs__en-US__handbook__data-visualization__antd-charts__line.md",60323:"docs__en-US__welcome__release__v0093-changelog.md",60338:"docs__en-US__handbook__field-attachment-url__index.md",60374:"docs__en-US__plugins__auth__index.md",60436:"docs__en-US__manual__file-manager__local.md",60489:"docs__en-US__handbook__data-visualization__echarts__column.md",60817:"docs__en-US__manual__ui__blocks__index.md",60909:"docs__en-US__handbook__ui__actions__action-settings__bind-workflow.md",60920:"docs__en-US__handbook__workflow-request-interceptor__example.md",60957:"docs__en-US__handbook__notification-manager__development__extension.md",61087:"docs__en-US__handbook__client__user__ui-designer__menus__index.md",61253:"docs__en-US__handbook__ui__actions__action-settings__affter-successful.md",61319:"docs__en-US__welcome__release__upgrade-to__v017.md",61322:"docs__en-US__handbook__workflow-approval__action.md",61422:"docs__en-US__handbook__data-modeling__data-source.md",61594:"docs__en-US__api__client__extensions__acl.md",61925:"docs__en-US__api__database__shared__destroy-options.md",61975:"docs__en-US__handbook__data-modeling__collection-fields__index.md",62009:"docs__en-US__plugins__client__user__ui-designer__actions__add-record.md",62011:"docs__en-US__api__handlebars-helpers__comparison.md",62317:"docs__en-US__plugins__workflow-request__index.md",62463:"docs__en-US__plugin-samples__provider__index.md",62496:"docs__en-US__plugins__client__user__ui-designer__actions__submit.md",62530:"docs__en-US__welcome__getting-started__upgrading__index.md",62741:"docs__en-US__plugins__acl__user__index.md",63118:"docs__en-US__handbook__workflow-aggregate__index.md",63282:"docs__en-US__plugin-samples__schema-settings__index.md",63320:"docs__en-US__handbook__action-qr-scan__index.md",63485:"docs__en-US__handbook__client__user__ui-designer__actions__submit.md",63669:"docs__en-US__welcome__release__v0110-changelog.md",63772:"docs__en-US__handbook__ui__fields__specific__sub-table.md",63776:"docs__en-US__handbook__workflow-request-interceptor__http-api.md",63896:"docs__en-US__handbook__departments__manual.md",63927:"docs__en-US__plugins__workflow-parallel__index.md",64099:"docs__en-US__plugins__collection-manager__user__collection-templates__view__index.md",64531:"docs__en-US__handbook__ui__actions__types__trigger-workflow.md",64550:"docs__en-US__development__http-api__rest-api.md",64564:"docs__en-US__handbook__ui__fields__specific__date-picker.md",64630:"docs__en-US__handbook__workflow__advanced__variables.md",64647:"docs__en-US__development__client__ui-schema__rendering.md",64693:"docs__en-US__handbook__data-visualization__step-by-step__index.md",64884:"docs__en-US__manual__workflow__triggers__collection.md",64990:"docs__en-US__api__database__collection.md",65041:"docs__en-US__api__client__index.md",65149:"docs__en-US__welcome__release__v0092-changelog.md",65274:"docs__en-US__handbook__data-modeling__collection-fields__system-info__table-oid.md",65276:"docs__en-US__handbook__action-export-pro__index.md",65604:"docs__en-US__plugins__client__user__ui-designer__actions__refresh.md",65696:"docs__en-US__api__database__relation-repository__belongs-to-many-repository.md",65821:"docs__en-US__api__sdk__auth.md",65970:"docs__en-US__handbook__ui__actions__types__add-record.md",66011:"docs__en-US__plugins__collection-manager__user__association-fields__record-picker__index.md",66305:"docs__en-US__api__database__shared__update-options.md",66487:"docs__en-US__handbook__data-visualization__echarts__scatter.md",66721:"docs__en-US__plugins__workflow__manual__nodes__manual.md",66933:"docs__en-US__development__client__ui-schema__what-is-ui-schema.md",67040:"docs__en-US__handbook__acl__user__index.md",67052:"docs__en-US__plugin-samples__plugin-settings__table.md",67103:"docs__en-US__handbook__data-modeling__collection-fields__basic__email.md",67142:"docs__en-US__handbook__ui__fields__generic__form-item.md",67309:"docs__en-US__api__handlebars-helpers__date.md",67542:"docs__en-US__handbook__client__user__plugin-manager__index.md",67614:"docs__en-US__handbook__file-manager__index.md",67630:"docs__en-US__plugin-samples__block__block-carousel.md",67653:"docs__en-US__plugins__workflow__manual__triggers__form.md",67710:"docs__en-US__handbook__ui__fields__association-field.md",67717:"docs__en-US__plugin-samples__schema-initializer__index.md",68016:"docs__en-US__handbook__workflow-approval__http-api.md",68194:"docs__en-US__welcome__release__logger.md",68358:"docs__en-US__welcome__release__v0160-changelog.md",68481:"docs__en-US__handbook__workflow__nodes__destroy.md",68572:"docs__en-US__manual__ui__actions__refresh.md",68679:"docs__en-US__manual__collection__multiple-databases.md",68758:"docs__en-US__development__client__ui-schema__quick-start.md",68768:"docs__en-US__handbook__workflow-manual__block.md",68804:"docs__en-US__handbook__client__user__ui-designer__actions__filter.md",68820:"docs__en-US__handbook__calendar__index.md",68931:"docs__en-US__handbook__workflow-action-trigger__index.md",69072:"docs__en-US__handbook__data-source-external-postgres__index.md",69080:"docs__en-US__plugins__iframe-block__index.md",69205:"docs__en-US__handbook__ui__blocks__block-templates.md",69327:"docs__en-US__handbook__workflow-manual__example.md",69332:"docs__en-US__handbook__backup-restore__index.md",69377:"docs__en-US__handbook__public-forms__index.md",69450:"docs__en-US__manual__ui__fields__association-components__sub-table__index.md",69491:"docs__en-US__manual__ui__fields__index.md",69676:"docs__en-US__api__sdk__storage.md",69709:"docs__en-US__plugins__workflow__manual__nodes__create.md",69743:"docs__en-US__manual__collection__fields__choices.md",70077:"docs__en-US__handbook__departments__index.md",70199:"docs__en-US__manual__workflow__nodes__condition.md",70282:"docs__en-US__handbook__file-manager__file-collection.md",70302:"docs__en-US__manual__data-visualization__configure.md",70354:"docs__en-US__manual__workflow__nodes__update.md",70408:"docs__en-US__handbook__data-modeling__collection-fields__advanced__nano-id.md",70488:"docs__en-US__plugins__client__user__ui-designer__actions__duplicate.md",70489:"docs__en-US__handbook__ui__actions__action-settings__double-check.md",70547:"docs__en-US__development__server__resources-actions-v2__vs-router.md",70728:"docs__en-US__index.md",70839:"docs__en-US__handbook__block-iframe__index.md",71003:"docs__en-US__development__client__providers.md",71028:"docs__en-US__handbook__data-modeling__collection-fields__basic__password.md",71032:"docs__en-US__handbook__workflow-approval__trigger.md",71059:"docs__en-US__plugins__workflow-manual__index.md",71250:"docs__en-US__plugins__file-manager__local.md",71371:"docs__en-US__manual__quick-start__ui-editor-mode.md",71409:"docs__en-US__manual__mobile-client__index.md",71585:"docs__en-US__plugins__client__index.md",71879:"docs__en-US__plugins__collection-manager__user__association-fields__title__index.md",71892:"docs__en-US__handbook__data-source-main__index.md",71930:"docs__en-US__handbook__ui__fields__generic__filter-collapse-item.md",72003:"docs__en-US__handbook__data-modeling__collection-fields__basic__number.md",72082:"docs__en-US__handbook__ui__blocks__block-settings__block-template.md",72348:"docs__en-US__welcome__release__v0072-changelog.md",72429:"docs__en-US__manual__ui__fields__association-components__sub-detail__index.md",72445:"nm__dumi-theme-nocobase__dist__layouts__DocLayout__index",72631:"docs__en-US__welcome__getting-started__upgrading__docker-compose.md",72747:"docs__en-US__welcome__getting-started__env.md",72841:"docs__en-US__api__client__schema-designer__schema-settings.md",72924:"docs__en-US__plugins__client__user__ui-designer__pages__index.md",73192:"docs__en-US__manual__workflow__nodes__manual.md",73239:"docs__en-US__development__client__ui-schema__toolbar.md",73399:"docs__en-US__manual__ui__fields__association-components__tag__index.md",73489:"docs__en-US__handbook__ui-schema-storage__index.md",73492:"docs__en-US__development__learning-guide.md",73656:"docs__en-US__handbook__ui__fields__specific__select.md",73658:"docs__en-US__manual__ui__actions__save-record.md",73863:"docs__en-US__manual__workflow__nodes__index.md",73871:"docs__en-US__handbook__workflow__nodes__delay.md",73890:"docs__en-US__handbook__ui__actions__types__link.md",73892:"docs__en-US__handbook__workflow__nodes__query.md",74097:"docs__en-US__welcome__getting-started__deployment__create-nocobase-app.md",74318:"docs__en-US__handbook__data-modeling__collection-fields__associations__o2o__index.md",74435:"docs__en-US__handbook__action-print__index.md",74487:"docs__en-US__handbook__data-modeling__collection-fields__geometric__circle.md",74488:"docs__en-US__handbook__ui__actions__types__delete.md",74563:"docs__en-US__plugins__client__user__ui-designer__blocks__index.md",74767:"docs__en-US__handbook__data-modeling__collection-fields__media__markdown.md",74816:"docs__en-US__plugin-samples__provider__content.md",74947:"docs__en-US__handbook__workflow__advanced__options.md",75007:"docs__en-US__plugins__telemetry-prometheus__index.md",75146:"docs__en-US__handbook__data-modeling__collection-fields__advanced__sort.md",75231:"docs__en-US__handbook__auth-saml__index.md",75290:"docs__en-US__welcome__release__v0210-changelog__index.md",75458:"docs__en-US__plugins__workflow__development__trigger.md",75582:"docs__en-US__handbook__ui__fields__specific__file-manager.md",75618:"docs__en-US__manual__ui__actions__view.md",76042:"docs__en-US__handbook__client__user__ui-designer__index.md",76118:"docs__en-US__plugins__collection-fdw__enable-federated.md",76123:"docs__en-US__handbook__ui__fields__field-settings__edit-tooltip.md",76273:"docs__en-US__plugins__data-visualization__step-by-step__index.md",76341:"docs__en-US__handbook__client__user__ui-designer__actions__index.md",76596:"docs__en-US__plugins__file-manager__amazon-s3.md",76623:"docs__en-US__development__life-cycle.md",76671:"docs__en-US__plugins__client__user__ui-designer__actions__export.md",76694:"docs__en-US__development__server__resources-actions-v2__to-resource.md",76924:"docs__en-US__plugins__collection-manager__user__index.md",76946:"docs__en-US__manual__quick-start__the-first-app.md",77074:"docs__en-US__handbook__workflow-request-interceptor__trigger.md",77305:"docs__en-US__plugins__client__user__ui-designer__actions__index.md",77452:"docs__en-US__manual__system-settings__index.md",77533:"docs__en-US__welcome__getting-started__deployment__index.md",77649:"docs__en-US__handbook__workflow__nodes__parallel.md",77690:"docs__en-US__handbook__client__user__ui-designer__actions__delete.md",77746:"docs__en-US__plugins__workflow__manual__nodes__calculation.md",77779:"docs__en-US__handbook__data-visualization__dev__index.md",77881:"docs__en-US__handbook__client__user__ui-designer__actions__print.md",77908:"docs__en-US__development__others__languages.md",78106:"docs__en-US__handbook__template-handlebars__index.md",78118:"docs__en-US__handbook__client__user__ui-designer__actions__export.md",78179:"docs__en-US__welcome__release__index.md",78275:"docs__en-US__plugins__client__user__ui-designer__actions__open-popup.md",78371:"docs__en-US__plugin-samples__schema-settings__add-item.md",78566:"docs__en-US__plugins__workflow__manual__nodes__destroy.md",78596:"docs__en-US__manual__ui__actions__delete.md",78609:"docs__en-US__plugins__workflow__manual__nodes__condition.md",78688:"docs__en-US__manual__ui__actions__print.md",78702:"docs__en-US__handbook__backups__installation__mariadb.md",78880:"docs__en-US__handbook__ui__blocks__data-blocks__grid-card.md",79174:"docs__en-US__api__client__extensions__schema-component.md",79240:"docs__en-US__handbook__workflow__nodes__loop.md",79370:"docs__en-US__welcome__release__v0040-changelog.md",79580:"docs__en-US__handbook__ui__fields__field-settings__default-value.md",79882:"docs__en-US__plugins__client__user__ui-designer__actions__view.md",79983:"docs__en-US__handbook__data-visualization__user__filter.md",80152:"docs__en-US__handbook__client__user__ui-designer__actions__add-record.md",80224:"docs__en-US__handbook__auth__dev__guide.md",80413:"docs__en-US__handbook__ui__actions__index.md",80461:"docs__en-US__plugins__workflow__development__instruction.md",80496:"docs__en-US__handbook__ui__blocks__data-blocks__table.md",80551:"docs__en-US__plugin-samples__provider__context.md",80654:"docs__en-US__plugins__workflow-json-query__index.md",80685:"docs__en-US__handbook__multi-app-manager__index.md",80752:"docs__en-US__manual__collection__fields__index.md",80882:"docs__en-US__manual__ui__linkage.md",80961:"docs__en-US__development__server__resources-actions-v2__rest-api.md",81009:"nm__dumi__dist__client__pages__Demo__index",81065:"docs__en-US__api__database__relation-repository__has-one-repository.md",81316:"docs__en-US__plugin-samples__field__interface.md",81538:"docs__en-US__api__database__relation-repository__has-many-repository.md",81656:"docs__en-US__welcome__how.md",81715:"docs__en-US__welcome__release__v0150-changelog.md",82125:"docs__en-US__api__database__repository.md",82149:"docs__en-US__handbook__workflow-dynamic-calculation__example.md",82173:"docs__en-US__welcome__release__v0200-changelog__index.md",82215:"docs__en-US__handbook__ui__fields__generic__table-column.md",82329:"docs__en-US__api__data-source-manager__i-field.md",82581:"docs__en-US__manual__ui__fields__association-components__select__index.md",82596:"docs__en-US__handbook__workflow__nodes__end.md",82674:"docs__en-US__plugins__snapshot-field__index.md",82880:"docs__en-US__handbook__workflow__nodes__date-calculation.md",82962:"docs__en-US__handbook__auth-wecom__index.md",83007:"docs__en-US__handbook__client__user__ui-designer__actions__save-record.md",83011:"docs__en-US__plugin-samples__field__sub-field.md",83069:"docs__en-US__handbook__verification__index.md",83228:"docs__en-US__handbook__workflow-request__index.md",83300:"docs__en-US__manual__collection__collection-templates__view__index.md",83833:"docs__en-US__plugins__client__user__ui-designer__menus__index.md",83840:"docs__en-US__handbook__workflow-custom-action-trigger__http-api.md",83884:"docs__en-US__handbook__notification-email__index.md",83902:"docs__en-US__api__actions.md",83999:"docs__en-US__handbook__workflow-request-interceptor__advanced.md",84056:"docs__en-US__breaking-changes__v0-17-0-alpha-1.md",84114:"docs__en-US__plugins__client__user__ui-designer__actions__filter.md",84119:"docs__en-US__development__server__collections__options.md",84188:"docs__en-US__handbook__field-encryption__index.md",84314:"docs__en-US__plugin-samples__schema-initializer__configure-fields-bk.md",84459:"docs__en-US__api__database__index.md",84769:"docs__en-US__manual__workflow__nodes__dynamic-calculation.md",84945:"docs__en-US__manual__ui__actions__edit.md",85089:"docs__en-US__plugins__gantt__index.md",85144:"docs__en-US__handbook__data-visualization__antd__overview.md",85202:"docs__en-US__handbook__workflow__nodes__update.md",85354:"docs__en-US__handbook__client__user__ui-designer__actions__import.md",85530:"docs__en-US__plugin-samples__plugin-settings__table-multiple-add-forms.md",85570:"docs__en-US__handbook__data-visualization__user__chart-block.md",85727:"docs__en-US__development__your-fisrt-plugin.md",85732:"docs__en-US__plugins__system-settings__index.md",85745:"docs__en-US__manual__workflow__advanced.md",85947:"docs__en-US__welcome__release__v0130-changelog.md",85966:"docs__en-US__api__http__index.md",86002:"docs__en-US__api__server__application.md",86010:"docs__en-US__handbook__data-modeling__collection-fields__datetime__date.md",86016:"docs__en-US__handbook__localization-management__index.md",86105:"docs__en-US__handbook__data-modeling__collection-fields__geometric__polygon.md",86310:"docs__en-US__handbook__data-visualization__echarts__overview.md",86324:"docs__en-US__manual__ui__actions__add-record.md",86338:"docs__en-US__handbook__data-visualization__antd-charts__overview.md",86348:"docs__en-US__handbook__field-sequence__index.md",86406:"docs__en-US__plugin-samples__schema-initializer__action-simple.md",86492:"docs__en-US__api__handlebars-helpers__html.md",86653:"docs__en-US__api__handlebars-helpers__object.md",86725:"docs__en-US__api__data-source-manager__index.md",87005:"docs__en-US__welcome__getting-started__installation__docker-compose.md",87093:"docs__en-US__handbook__data-modeling__collection-fields__datetime__datetime-without-tz.md",87111:"docs__en-US__handbook__custom-brand__index.md",87493:"docs__en-US__manual__ui__fields__association-components__sub-form(popover)__index.md",87603:"docs__en-US__handbook__ui__blocks__block-settings__block-height.md",87815:"docs__en-US__development__server__collections-fields.md",87833:"docs__en-US__manual__core-concepts__menus.md",87855:"docs__en-US__manual__ui__fields__association-components__record-picker__index.md",87963:"docs__en-US__manual__collection__fields__date.md",88005:"docs__en-US__development__client__styles-and-themes.md",88065:"docs__en-US__handbook__workflow-approval__advanced.md",88199:"docs__en-US__handbook__ui__fields__field-settings__edit-title.md",88256:"docs__en-US__handbook__workflow__triggers__custom-action.md",88383:"docs__en-US__api__database__shared__find-options.md",88463:"docs__en-US__handbook__api-doc__index.md",88525:"docs__en-US__handbook__ui__blocks__block-settings__block-layout.md",88721:"docs__en-US__handbook__data-visualization__echarts__funnel.md",88822:"docs__en-US__manual__workflow__triggers__index.md",88895:"docs__en-US__handbook__workflow__development__trigger.md",89073:"docs__en-US__welcome__release__v0073-changelog.md",89077:"docs__en-US__plugins__workflow__manual__nodes__query.md",89107:"docs__en-US__development__plugin.md",89209:"docs__en-US__handbook__data-source-manager__index.md",89287:"docs__en-US__handbook__ui__blocks__block-settings__connect-block.md",89534:"docs__en-US__handbook__data-modeling__collection-fields__datetime__unix-timestamp.md",89989:"docs__en-US__api__resourcer__resource-manager.md",90116:"docs__en-US__handbook__workflow__nodes__manual.md",90126:"docs__en-US__handbook__template-string__index.md",90455:"docs__en-US__handbook__file-manager__field-attachment.md",90503:"docs__en-US__api__server__plugin.md",90522:"docs__en-US__welcome__community__thanks.md",90736:"docs__en-US__handbook__acl__index.md",90851:"docs__en-US__plugins__auth__dev__api.md",91010:"docs__en-US__api__cli.md",91082:"docs__en-US__plugins__client__user__ui-designer__index.md",91242:"docs__en-US__plugin-samples__plugin-settings__index.md",91306:"docs__en-US__handbook__ui__actions__action-settings__assign-values.md",91315:"docs__en-US__plugins__collection-manager__user__association-fields__file-manager__index.md",91590:"docs__en-US__api__client__extensions__block-provider.md",91613:"docs__en-US__plugin-samples__block__block-table.md",91676:"docs__en-US__api__auth__base-auth.md",91741:"docs__en-US__api__database__relation-repository__belongs-to-repository.md",91791:"docs__en-US__handbook__data-modeling__collection-fields__choices__checkbox-group.md",91802:"docs__en-US__handbook__ui__blocks__block-settings__sorting-rule.md",91873:"docs__en-US__handbook__data-modeling__collection-fields__basic__icon.md",92019:"docs__en-US__plugins__workflow__manual__triggers__schedule.md",92115:"docs__en-US__plugins__client__user__ui-designer__actions__save-record.md",92266:"docs__en-US__manual__collection__collection-templates__file__index.md",92368:"docs__en-US__handbook__ui__fields__specific__nester.md",92556:"docs__en-US__manual__workflow__nodes__request.md",92693:"docs__en-US__handbook__block-workbench__index.md",92919:"docs__en-US__handbook__client__user__ui-designer__actions__custom-request.md",93096:"docs__en-US__handbook__client__user__plugin-settings__index.md",93142:"docs__en-US__welcome__release__v0050-changelog.md",93330:"docs__en-US__plugins__saml__index.md",93338:"docs__en-US__plugins__collection-manager__user__association-fields__sub-detail__index.md",93395:"docs__en-US__handbook__users__field-updated-by.md",93428:"docs__en-US__development__others__tech-stack.md",93555:"docs__en-US__welcome__release__v0100-changelog.md",93797:"docs__en-US__handbook__template-json__index.md",93903:"docs__en-US__manual__data-visualization__index.md",93946:"docs__en-US__handbook__ui__fields__specific__popover-nester.md",93989:"docs__en-US__welcome__release__v1001-changelog.md",93998:"docs__en-US__handbook__workflow-action-trigger__example.md",94154:"docs__en-US__api__handlebars-helpers__url.md",94220:"docs__en-US__plugins__workflow__manual__nodes__aggregate.md",94252:"docs__en-US__manual__ui__actions__submit.md",94385:"docs__en-US__handbook__workflow-approval__node.md",94388:"docs__en-US__welcome__release__gantt__introduction.md",94406:"docs__en-US__handbook__data-visualization__antd__statistic.md",94466:"docs__en-US__handbook__theme-editor__index.md",94589:"docs__en-US__plugins__file-manager__index.md",94725:"docs__en-US__api__resourcer__resource.md",94783:"docs__en-US__handbook__logger__index.md",94847:"docs__en-US__manual__ui__fields__association-components__cascade-select__index.md",95059:"docs__en-US__development__plugin-ds.md",95187:"docs__en-US__handbook__ui__fields__field-settings__title-field.md",95319:"docs__en-US__development__client__ui-schema__extending.md",95387:"docs__en-US__plugins__data-visualization__dev__index.md",95537:"docs__en-US__plugin-samples__block__index.md",95565:"docs__en-US__plugins__api-keys__index.md",95724:"docs__en-US__welcome__getting-started__installation__git-clone.md",95828:"docs__en-US__handbook__ui__fields__generic__detail-form-item.md",96393:"docs__en-US__development__server__collections__index.md",96617:"docs__en-US__handbook__workflow-response-message__index.md",96685:"docs__en-US__manual__file-manager__index.md",96793:"docs__en-US__plugins__file-manager__aliyun-oss.md",96827:"docs__en-US__handbook__workflow__nodes__response-message.md",96914:"docs__en-US__plugins__workflow-dynamic-calculation__index.md",96939:"docs__en-US__handbook__ui__blocks__block-settings__block-delete.md",96984:"docs__en-US__handbook__auth-oidc__example__google.md",97098:"docs__en-US__handbook__data-source-external-mssql__index.md",97180:"docs__en-US__development__client__ui-schema__initializer.md",97213:"docs__en-US__manual__collection__collection-templates__sql__index.md",97569:"docs__en-US__development__server__collections__configure.md",97694:"docs__en-US__plugins__client__user__ui-designer__actions__import.md",97770:"docs__en-US__handbook__data-modeling__collection-fields__associations__m2o__index.md",97884:"docs__en-US__manual__workflow__nodes__calculation.md",97940:"docs__en-US__handbook__data-visualization__echarts__wordcloud.md",98137:"docs__en-US__handbook__index.md",98205:"docs__en-US__plugins__collection-manager__user__collection-templates__calender__index.md",98571:"docs__en-US__manual__workflow__nodes__create.md",98672:"docs__en-US__handbook__auth-oidc__index.md",98690:"docs__en-US__handbook__backups__index.md",98698:"docs__en-US__manual__workflow__triggers__schedule.md",98798:"docs__en-US__plugins__workflow__manual__nodes__parallel.md",99032:"docs__en-US__manual__quick-start__functional-zoning.md",99153:"docs__en-US__api__database__interfaces__base-interface.md",99435:"docs__en-US__plugins__saml__example__google.md",99736:"docs__en-US__handbook__ui__actions__types__save-record.md",99740:"docs__en-US__handbook__data-visualization__echarts__diverging-bar.md",99763:"docs__en-US__api__data-source-manager__i-model.md",99806:"docs__en-US__handbook__data-visualization__antd-charts__pie.md",99979:"docs__en-US__handbook__data-modeling__collection-fields__advanced__uuid.md"}[_]||_)+"."+{171:"778c6473",489:"778c6473",565:"778c6473",581:"778c6473",701:"778c6473",876:"778c6473",989:"778c6473",1020:"778c6473",1131:"778c6473",1265:"778c6473",1327:"778c6473",1436:"778c6473",1565:"778c6473",1813:"778c6473",2016:"778c6473",2366:"778c6473",2451:"778c6473",2483:"778c6473",2491:"778c6473",2496:"778c6473",2534:"778c6473",2563:"778c6473",2707:"778c6473",2718:"778c6473",2782:"778c6473",2805:"778c6473",2843:"778c6473",2858:"778c6473",3122:"778c6473",3143:"778c6473",3214:"778c6473",3282:"778c6473",3303:"778c6473",3389:"778c6473",3395:"778c6473",3820:"778c6473",3826:"778c6473",3944:"778c6473",3966:"778c6473",4230:"778c6473",4366:"778c6473",4374:"778c6473",4384:"778c6473",4840:"778c6473",5102:"778c6473",5216:"778c6473",5263:"778c6473",5810:"778c6473",5822:"778c6473",5939:"778c6473",6006:"778c6473",6163:"778c6473",6275:"778c6473",6319:"778c6473",6327:"778c6473",6346:"778c6473",6375:"778c6473",6780:"778c6473",6859:"778c6473",6885:"778c6473",6893:"778c6473",6931:"778c6473",7027:"778c6473",7443:"778c6473",7535:"778c6473",7692:"778c6473",8570:"778c6473",8602:"778c6473",8757:"778c6473",8777:"778c6473",8804:"778c6473",8879:"778c6473",9120:"778c6473",9161:"778c6473",9258:"778c6473",9385:"778c6473",9388:"778c6473",9420:"778c6473",9547:"778c6473",9584:"778c6473",9677:"778c6473",9695:"778c6473",9714:"778c6473",9746:"778c6473",9909:"778c6473",9931:"778c6473",10145:"778c6473",10264:"778c6473",10385:"778c6473",10414:"778c6473",10581:"778c6473",10607:"778c6473",10883:"778c6473",10905:"778c6473",10986:"778c6473",11109:"778c6473",11150:"778c6473",11285:"778c6473",11357:"778c6473",11413:"778c6473",11622:"778c6473",11902:"778c6473",11922:"778c6473",11924:"778c6473",11995:"778c6473",12046:"778c6473",12102:"778c6473",12150:"778c6473",12174:"778c6473",12224:"778c6473",12300:"778c6473",12435:"778c6473",12447:"778c6473",12497:"778c6473",12546:"778c6473",12572:"778c6473",12623:"778c6473",12684:"778c6473",12739:"778c6473",12748:"778c6473",12822:"778c6473",13026:"778c6473",13214:"778c6473",13224:"778c6473",13225:"778c6473",13303:"778c6473",13472:"778c6473",13573:"778c6473",13750:"778c6473",13918:"778c6473",14007:"778c6473",14137:"778c6473",14156:"778c6473",14370:"778c6473",14377:"778c6473",14442:"778c6473",14476:"778c6473",14490:"778c6473",14651:"778c6473",14707:"778c6473",14816:"778c6473",15051:"778c6473",15089:"778c6473",15105:"778c6473",15173:"778c6473",15309:"778c6473",15491:"778c6473",15518:"778c6473",15548:"778c6473",15559:"778c6473",16242:"778c6473",16357:"778c6473",16373:"778c6473",16535:"778c6473",16563:"778c6473",16625:"778c6473",16741:"778c6473",16776:"778c6473",16826:"778c6473",16871:"778c6473",17304:"778c6473",17385:"778c6473",17506:"778c6473",17931:"778c6473",17961:"778c6473",18133:"778c6473",18247:"778c6473",18249:"778c6473",18252:"778c6473",18556:"778c6473",18693:"778c6473",18770:"778c6473",18796:"778c6473",18807:"778c6473",18830:"778c6473",18840:"778c6473",18893:"778c6473",19138:"778c6473",19143:"778c6473",19150:"778c6473",19158:"778c6473",19689:"778c6473",19703:"778c6473",19923:"778c6473",20197:"778c6473",20202:"778c6473",20358:"778c6473",20390:"778c6473",20406:"778c6473",20469:"778c6473",20538:"778c6473",20621:"778c6473",20801:"778c6473",21126:"778c6473",21265:"778c6473",21704:"778c6473",22233:"778c6473",22468:"778c6473",22499:"778c6473",22809:"778c6473",22906:"778c6473",22991:"778c6473",23039:"778c6473",23139:"778c6473",23243:"778c6473",23661:"778c6473",23691:"778c6473",23754:"778c6473",23900:"778c6473",23928:"778c6473",24338:"778c6473",24350:"778c6473",24433:"778c6473",24499:"778c6473",24515:"778c6473",24543:"778c6473",24899:"778c6473",24983:"778c6473",25058:"778c6473",25279:"778c6473",25520:"778c6473",25634:"778c6473",25690:"778c6473",25768:"778c6473",25797:"778c6473",25855:"778c6473",25869:"778c6473",25912:"778c6473",25918:"778c6473",26006:"778c6473",26248:"778c6473",26262:"778c6473",26295:"778c6473",26365:"778c6473",26641:"778c6473",26756:"778c6473",26818:"778c6473",27e3:"778c6473",27046:"778c6473",27277:"778c6473",27291:"778c6473",27431:"778c6473",27833:"778c6473",27966:"778c6473",27995:"778c6473",28399:"778c6473",28581:"778c6473",28802:"778c6473",28895:"778c6473",29042:"778c6473",29211:"778c6473",29226:"778c6473",29341:"778c6473",29352:"778c6473",29396:"778c6473",29409:"778c6473",29450:"778c6473",29487:"778c6473",29532:"778c6473",29786:"778c6473",29875:"778c6473",30074:"778c6473",30105:"778c6473",30170:"778c6473",30347:"778c6473",30399:"778c6473",30468:"778c6473",30483:"778c6473",30531:"778c6473",30553:"778c6473",30621:"778c6473",30787:"778c6473",30826:"778c6473",30873:"778c6473",30953:"778c6473",31363:"778c6473",31817:"778c6473",31938:"778c6473",32053:"778c6473",32320:"778c6473",32405:"778c6473",32751:"778c6473",33e3:"778c6473",33121:"778c6473",33171:"778c6473",33292:"778c6473",33506:"778c6473",33524:"778c6473",33893:"778c6473",33945:"778c6473",33977:"778c6473",34057:"778c6473",34059:"778c6473",34061:"778c6473",34122:"778c6473",34187:"778c6473",34249:"778c6473",34345:"778c6473",34357:"778c6473",34594:"778c6473",34692:"778c6473",34749:"778c6473",34959:"778c6473",35350:"778c6473",35357:"778c6473",35487:"778c6473",35520:"778c6473",35739:"778c6473",35830:"778c6473",35831:"778c6473",36055:"778c6473",36311:"778c6473",36693:"778c6473",36840:"778c6473",36874:"778c6473",36909:"778c6473",37029:"778c6473",37130:"778c6473",37206:"778c6473",37332:"778c6473",37868:"778c6473",37992:"778c6473",38025:"778c6473",38082:"778c6473",38122:"778c6473",38207:"778c6473",38346:"778c6473",38353:"778c6473",38651:"778c6473",38812:"778c6473",39046:"778c6473",39133:"778c6473",39311:"778c6473",39654:"778c6473",39659:"778c6473",39688:"778c6473",39693:"778c6473",39730:"778c6473",39787:"778c6473",39840:"778c6473",39898:"778c6473",40071:"7809b37c",40143:"778c6473",40150:"778c6473",40268:"778c6473",40293:"778c6473",40678:"778c6473",40736:"778c6473",41568:"778c6473",41598:"778c6473",41624:"778c6473",42084:"778c6473",42236:"778c6473",42291:"778c6473",42334:"778c6473",42623:"778c6473",42927:"778c6473",43192:"778c6473",43331:"778c6473",43401:"778c6473",43545:"778c6473",43691:"778c6473",43694:"778c6473",43754:"778c6473",43854:"778c6473",43860:"778c6473",44059:"778c6473",44254:"778c6473",44404:"778c6473",44411:"778c6473",44474:"778c6473",44667:"778c6473",44720:"778c6473",45087:"778c6473",45109:"778c6473",45170:"778c6473",45381:"778c6473",45526:"778c6473",45681:"778c6473",45682:"778c6473",45716:"778c6473",45784:"778c6473",45789:"778c6473",45870:"778c6473",46112:"778c6473",46209:"778c6473",46385:"778c6473",46426:"778c6473",46606:"778c6473",46621:"778c6473",46723:"778c6473",46845:"778c6473",46957:"778c6473",46982:"778c6473",47052:"778c6473",47059:"778c6473",47156:"778c6473",47442:"778c6473",47477:"778c6473",47496:"778c6473",47510:"778c6473",47518:"778c6473",47752:"778c6473",47850:"778c6473",48067:"778c6473",48088:"778c6473",48160:"778c6473",48196:"778c6473",48205:"778c6473",48206:"778c6473",48275:"778c6473",48295:"778c6473",48367:"778c6473",48415:"778c6473",48721:"778c6473",48724:"778c6473",48980:"778c6473",49248:"778c6473",49316:"778c6473",49444:"778c6473",49603:"778c6473",49611:"778c6473",49677:"778c6473",49825:"778c6473",49891:"778c6473",49943:"778c6473",49974:"778c6473",50160:"778c6473",50208:"778c6473",50214:"778c6473",50425:"778c6473",50446:"778c6473",50552:"778c6473",50634:"778c6473",50699:"778c6473",50774:"778c6473",50981:"778c6473",50999:"778c6473",51022:"778c6473",51060:"778c6473",51095:"778c6473",51706:"778c6473",51760:"778c6473",52024:"778c6473",52052:"778c6473",52433:"7809b37c",52538:"778c6473",52670:"778c6473",52682:"778c6473",52725:"778c6473",53273:"778c6473",53319:"778c6473",53344:"778c6473",53392:"778c6473",53409:"778c6473",53693:"778c6473",53803:"778c6473",54009:"778c6473",54106:"778c6473",54169:"778c6473",54230:"778c6473",54314:"778c6473",54410:"778c6473",54456:"778c6473",54464:"778c6473",54570:"778c6473",54634:"778c6473",54700:"778c6473",54882:"778c6473",54903:"778c6473",54944:"778c6473",55196:"778c6473",55281:"778c6473",55337:"778c6473",55802:"778c6473",55872:"778c6473",55927:"778c6473",55940:"778c6473",55982:"778c6473",56002:"778c6473",56065:"778c6473",56098:"778c6473",56180:"778c6473",56238:"778c6473",56537:"778c6473",56612:"778c6473",56786:"778c6473",56923:"778c6473",57101:"778c6473",57226:"778c6473",57273:"778c6473",57367:"778c6473",57523:"778c6473",57859:"778c6473",58314:"778c6473",58319:"778c6473",58418:"778c6473",58438:"778c6473",58493:"778c6473",58498:"778c6473",58539:"778c6473",58581:"778c6473",58952:"778c6473",59001:"778c6473",59068:"778c6473",59076:"778c6473",59144:"778c6473",59202:"778c6473",59263:"778c6473",59298:"778c6473",59432:"778c6473",59560:"778c6473",60286:"778c6473",60323:"778c6473",60338:"778c6473",60374:"778c6473",60436:"778c6473",60489:"778c6473",60817:"778c6473",60909:"778c6473",60920:"778c6473",60957:"778c6473",61087:"778c6473",61253:"778c6473",61319:"778c6473",61322:"778c6473",61422:"778c6473",61594:"778c6473",61925:"778c6473",61975:"778c6473",62009:"778c6473",62011:"778c6473",62317:"778c6473",62463:"778c6473",62496:"778c6473",62530:"778c6473",62741:"778c6473",63118:"778c6473",63282:"778c6473",63320:"778c6473",63485:"778c6473",63669:"778c6473",63772:"778c6473",63776:"778c6473",63896:"778c6473",63927:"778c6473",64099:"778c6473",64531:"778c6473",64550:"778c6473",64564:"778c6473",64630:"778c6473",64647:"778c6473",64693:"778c6473",64884:"778c6473",64990:"778c6473",65041:"778c6473",65149:"778c6473",65274:"778c6473",65276:"778c6473",65604:"778c6473",65696:"778c6473",65821:"778c6473",65970:"778c6473",66011:"778c6473",66305:"778c6473",66487:"778c6473",66721:"778c6473",66933:"778c6473",67040:"778c6473",67052:"778c6473",67103:"778c6473",67142:"778c6473",67309:"778c6473",67542:"778c6473",67614:"778c6473",67630:"778c6473",67653:"778c6473",67710:"778c6473",67717:"778c6473",68016:"778c6473",68194:"778c6473",68358:"778c6473",68481:"778c6473",68572:"778c6473",68679:"778c6473",68758:"778c6473",68768:"778c6473",68804:"778c6473",68820:"778c6473",68931:"778c6473",69072:"778c6473",69080:"778c6473",69205:"778c6473",69327:"778c6473",69332:"778c6473",69377:"778c6473",69450:"778c6473",69491:"778c6473",69676:"778c6473",69709:"778c6473",69743:"778c6473",70077:"778c6473",70199:"778c6473",70282:"778c6473",70302:"778c6473",70354:"778c6473",70408:"778c6473",70488:"778c6473",70489:"778c6473",70547:"778c6473",70728:"778c6473",70839:"778c6473",71003:"778c6473",71028:"778c6473",71032:"778c6473",71059:"778c6473",71250:"778c6473",71371:"778c6473",71409:"778c6473",71585:"778c6473",71879:"778c6473",71892:"778c6473",71930:"778c6473",72003:"778c6473",72082:"778c6473",72348:"778c6473",72429:"778c6473",72445:"ce791d75",72631:"778c6473",72747:"778c6473",72841:"778c6473",72924:"778c6473",73192:"778c6473",73239:"778c6473",73399:"778c6473",73489:"778c6473",73492:"778c6473",73656:"778c6473",73658:"778c6473",73863:"778c6473",73871:"778c6473",73890:"778c6473",73892:"778c6473",74097:"778c6473",74318:"778c6473",74435:"778c6473",74487:"778c6473",74488:"778c6473",74563:"778c6473",74767:"778c6473",74816:"778c6473",74947:"778c6473",75007:"778c6473",75146:"778c6473",75231:"778c6473",75290:"778c6473",75458:"778c6473",75582:"778c6473",75618:"778c6473",76042:"778c6473",76118:"778c6473",76123:"778c6473",76273:"778c6473",76341:"778c6473",76596:"778c6473",76623:"778c6473",76671:"778c6473",76694:"778c6473",76924:"778c6473",76946:"778c6473",77074:"778c6473",77305:"778c6473",77452:"778c6473",77533:"778c6473",77649:"778c6473",77690:"778c6473",77746:"778c6473",77779:"778c6473",77881:"778c6473",77908:"778c6473",78106:"778c6473",78118:"778c6473",78179:"778c6473",78275:"778c6473",78371:"778c6473",78566:"778c6473",78596:"778c6473",78609:"778c6473",78688:"778c6473",78702:"778c6473",78880:"778c6473",79174:"778c6473",79240:"778c6473",79370:"778c6473",79580:"778c6473",79882:"778c6473",79983:"778c6473",80152:"778c6473",80224:"778c6473",80413:"778c6473",80461:"778c6473",80496:"778c6473",80551:"778c6473",80654:"778c6473",80685:"778c6473",80752:"778c6473",80882:"778c6473",80961:"778c6473",81009:"578aa5c0",81065:"778c6473",81316:"778c6473",81538:"778c6473",81656:"778c6473",81715:"778c6473",82125:"778c6473",82149:"778c6473",82173:"778c6473",82215:"778c6473",82329:"778c6473",82581:"778c6473",82596:"778c6473",82674:"778c6473",82880:"778c6473",82962:"778c6473",83007:"778c6473",83011:"778c6473",83069:"778c6473",83228:"778c6473",83300:"778c6473",83833:"778c6473",83840:"778c6473",83884:"778c6473",83902:"778c6473",83999:"778c6473",84056:"778c6473",84114:"778c6473",84119:"778c6473",84188:"778c6473",84314:"778c6473",84459:"778c6473",84769:"778c6473",84945:"778c6473",85089:"778c6473",85144:"778c6473",85202:"778c6473",85354:"778c6473",85530:"778c6473",85570:"778c6473",85727:"778c6473",85732:"778c6473",85745:"778c6473",85947:"778c6473",85966:"778c6473",86002:"778c6473",86010:"778c6473",86016:"778c6473",86105:"778c6473",86310:"778c6473",86324:"778c6473",86338:"778c6473",86348:"778c6473",86406:"778c6473",86492:"778c6473",86653:"778c6473",86725:"778c6473",87005:"778c6473",87093:"778c6473",87111:"778c6473",87493:"778c6473",87603:"778c6473",87815:"778c6473",87833:"778c6473",87855:"778c6473",87963:"778c6473",88005:"778c6473",88065:"778c6473",88199:"778c6473",88256:"778c6473",88383:"778c6473",88463:"778c6473",88525:"778c6473",88721:"778c6473",88822:"778c6473",88895:"778c6473",89073:"778c6473",89077:"778c6473",89107:"778c6473",89209:"778c6473",89287:"778c6473",89534:"778c6473",89989:"778c6473",90116:"778c6473",90126:"778c6473",90455:"778c6473",90503:"778c6473",90522:"778c6473",90736:"778c6473",90851:"778c6473",91010:"778c6473",91082:"778c6473",91242:"778c6473",91306:"778c6473",91315:"778c6473",91590:"778c6473",91613:"778c6473",91676:"778c6473",91741:"778c6473",91791:"778c6473",91802:"778c6473",91873:"778c6473",92019:"778c6473",92115:"778c6473",92266:"778c6473",92368:"778c6473",92556:"778c6473",92693:"778c6473",92919:"778c6473",93096:"778c6473",93142:"778c6473",93330:"778c6473",93338:"778c6473",93395:"778c6473",93428:"778c6473",93555:"778c6473",93797:"778c6473",93903:"778c6473",93946:"778c6473",93989:"778c6473",93998:"778c6473",94154:"778c6473",94220:"778c6473",94252:"778c6473",94385:"778c6473",94388:"778c6473",94406:"778c6473",94466:"778c6473",94589:"778c6473",94725:"778c6473",94783:"778c6473",94847:"778c6473",95059:"778c6473",95187:"778c6473",95319:"778c6473",95387:"778c6473",95537:"778c6473",95565:"778c6473",95724:"778c6473",95828:"778c6473",96393:"778c6473",96617:"778c6473",96685:"778c6473",96793:"778c6473",96827:"778c6473",96914:"778c6473",96939:"778c6473",96984:"778c6473",97098:"778c6473",97180:"778c6473",97213:"778c6473",97569:"778c6473",97694:"778c6473",97770:"778c6473",97884:"778c6473",97940:"778c6473",98137:"778c6473",98205:"778c6473",98571:"778c6473",98672:"778c6473",98690:"778c6473",98698:"778c6473",98798:"778c6473",99032:"778c6473",99153:"778c6473",99435:"778c6473",99736:"778c6473",99740:"778c6473",99763:"778c6473",99806:"778c6473",99979:"778c6473"}[_]+".chunk.css"}}(),function(){__webpack_require__.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(_){if(typeof window=="object")return window}}()}(),function(){__webpack_require__.o=function(_,m){return Object.prototype.hasOwnProperty.call(_,m)}}(),function(){var _={},m="nocobase-docs:";__webpack_require__.l=function(e,o,r,n){if(_[e]){_[e].push(o);return}var i,s;if(r!==void 0)for(var I=document.getElementsByTagName("script"),c=0;c0?(0,r.uO)(u,--I):0,i--,c===10&&(i=1,n--),c}function y(){return c=I2||q(c)>3?"":" "}function F($){for(;y();)switch(q(c)){case 0:append(fe(I-1),$);break;case 2:append(T(c),$);break;default:append(from(c),$)}return $}function G($,z){for(;--z&&y()&&!(c<48||c>102||c>57&&c<65||c>70&&c<97););return k($,w()+(z<6&&b()==32&&y()==32))}function Z($){for(;y();)switch(c){case $:return I;case 34:case 39:$!==34&&$!==39&&Z(c);break;case 40:$===41&&Z($);break;case 92:y();break}return I}function ce($,z){for(;y()&&$+c!==57;)if($+c===84&&b()===47)break;return"/*"+k(z,I-1)+"*"+(0,r.Dp)($===47?$:y())}function fe($){for(;!q(b());)y();return k($,I)}function _e($){return D(oe("",null,null,null,[""],$=P($),0,[0],$))}function oe($,z,S,E,H,Q,W,C,B){for(var V=0,te=0,Y=W,me=0,we=0,De=0,Ee=1,ze=1,Ge=1,ie=0,J="",le=H,X=Q,pe=E,ne=J;ze;)switch(De=ie,ie=y()){case 40:if(De!=108&&(0,r.uO)(ne,Y-1)==58){(0,r.Cw)(ne+=(0,r.gx)(T(ie),"&","&\f"),"&\f")!=-1&&(Ge=-1);break}case 34:case 39:case 91:ne+=T(ie);break;case 9:case 10:case 13:case 32:ne+=L(De);break;case 92:ne+=G(w()-1,7);continue;case 47:switch(b()){case 42:case 47:(0,r.R3)(ae(ce(y(),w()),z,S,B),B);break;default:ne+="/"}break;case 123*Ee:C[V++]=(0,r.to)(ne)*Ge;case 125*Ee:case 59:case 0:switch(ie){case 0:case 125:ze=0;case 59+te:Ge==-1&&(ne=(0,r.gx)(ne,/\f/g,"")),we>0&&(0,r.to)(ne)-Y&&(0,r.R3)(we>32?K(ne+";",E,S,Y-1,B):K((0,r.gx)(ne," ","")+";",E,S,Y-2,B),B);break;case 59:ne+=";";default:if((0,r.R3)(pe=ee(ne,z,S,V,te,H,C,J,le=[],X=[],Y,Q),Q),ie===123)if(te===0)oe(ne,z,pe,pe,le,Q,Y,C,X);else switch(me===99&&(0,r.uO)(ne,3)===110?100:me){case 100:case 108:case 109:case 115:oe($,pe,pe,E&&(0,r.R3)(ee($,pe,pe,0,0,H,C,J,H,le=[],Y,X),X),H,X,Y,C,E?le:X);break;default:oe(ne,pe,pe,pe,[""],X,0,C,X)}}V=te=we=0,Ee=Ge=1,J=ne="",Y=W;break;case 58:Y=1+(0,r.to)(ne),we=De;default:if(Ee<1){if(ie==123)--Ee;else if(ie==125&&Ee++==0&&g()==125)continue}switch(ne+=(0,r.Dp)(ie),ie*Ee){case 38:Ge=te>0?1:(ne+="\f",-1);break;case 44:C[V++]=((0,r.to)(ne)-1)*Ge,Ge=1;break;case 64:b()===45&&(ne+=T(y())),me=b(),te=Y=(0,r.to)(J=ne+=fe(w())),ie++;break;case 45:De===45&&(0,r.to)(ne)==2&&(Ee=0)}}return Q}function ee($,z,S,E,H,Q,W,C,B,V,te,Y){for(var me=H-1,we=H===0?Q:[""],De=(0,r.Ei)(we),Ee=0,ze=0,Ge=0;Ee0?we[ie]+" "+J:(0,r.gx)(J,/&\f/g,we[ie])))&&(B[Ge++]=le);return l($,z,S,H===0?o.Fr:C,B,V,te,Y)}function ae($,z,S,E){return l($,z,S,o.Ab,(0,r.Dp)(v()),(0,r.tb)($,2,-2),0,E)}function K($,z,S,E,H){return l($,z,S,o.h5,(0,r.tb)($,0,E),(0,r.tb)($,E+1,-1),E,H)}},20211:function(_,m,e){"use strict";e.d(m,{P:function(){return i},q:function(){return n}});var o=e(27563),r=e(26686);function n(s,I){for(var c="",u=0;un?p?(b=Date.now(),u||(g=setTimeout(v?G:F,n))):F():u!==!0&&(g=setTimeout(v?G:F,v===void 0?n-L:n))}return q.cancel=k,q}function r(n,i,s){var I=s||{},c=I.atBegin,u=c===void 0?!1:c;return o(n,i,{debounceMode:u!==!1})}},97582:function(_,m,e){"use strict";e.d(m,{CR:function(){return k},Jh:function(){return g},XA:function(){return w},ZT:function(){return r},_T:function(){return i},ev:function(){return D},mG:function(){return v},pi:function(){return n},pr:function(){return P}});var o=function(S,E){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(H,Q){H.__proto__=Q}||function(H,Q){for(var W in Q)Object.prototype.hasOwnProperty.call(Q,W)&&(H[W]=Q[W])},o(S,E)};function r(S,E){if(typeof E!="function"&&E!==null)throw new TypeError("Class extends value "+String(E)+" is not a constructor or null");o(S,E);function H(){this.constructor=S}S.prototype=E===null?Object.create(E):(H.prototype=E.prototype,new H)}var n=function(){return n=Object.assign||function(E){for(var H,Q=1,W=arguments.length;Q=0;V--)(B=S[V])&&(C=(W<3?B(C):W>3?B(E,H,C):B(E,H))||C);return W>3&&C&&Object.defineProperty(E,H,C),C}function I(S,E){return function(H,Q){E(H,Q,S)}}function c(S,E,H,Q,W,C){function B(J){if(J!==void 0&&typeof J!="function")throw new TypeError("Function expected");return J}for(var V=Q.kind,te=V==="getter"?"get":V==="setter"?"set":"value",Y=!E&&S?Q.static?S:S.prototype:null,me=E||(Y?Object.getOwnPropertyDescriptor(Y,Q.name):{}),we,De=!1,Ee=H.length-1;Ee>=0;Ee--){var ze={};for(var Ge in Q)ze[Ge]=Ge==="access"?{}:Q[Ge];for(var Ge in Q.access)ze.access[Ge]=Q.access[Ge];ze.addInitializer=function(J){if(De)throw new TypeError("Cannot add initializers after decoration has completed");C.push(B(J||null))};var ie=(0,H[Ee])(V==="accessor"?{get:me.get,set:me.set}:me[te],ze);if(V==="accessor"){if(ie===void 0)continue;if(ie===null||typeof ie!="object")throw new TypeError("Object expected");(we=B(ie.get))&&(me.get=we),(we=B(ie.set))&&(me.set=we),(we=B(ie.init))&&W.unshift(we)}else(we=B(ie))&&(V==="field"?W.unshift(we):me[te]=we)}Y&&Object.defineProperty(Y,Q.name,me),De=!0}function u(S,E,H){for(var Q=arguments.length>2,W=0;W0&&C[C.length-1])&&(Y[0]===6||Y[0]===2)){H=0;continue}if(Y[0]===3&&(!C||Y[1]>C[0]&&Y[1]=S.length&&(S=void 0),{value:S&&S[Q++],done:!S}}};throw new TypeError(E?"Object is not iterable.":"Symbol.iterator is not defined.")}function k(S,E){var H=typeof Symbol=="function"&&S[Symbol.iterator];if(!H)return S;var Q=H.call(S),W,C=[],B;try{for(;(E===void 0||E-- >0)&&!(W=Q.next()).done;)C.push(W.value)}catch(V){B={error:V}}finally{try{W&&!W.done&&(H=Q.return)&&H.call(Q)}finally{if(B)throw B.error}}return C}function q(){for(var S=[],E=0;E1||V(De,Ee)})})}function V(De,Ee){try{te(Q[De](Ee))}catch(ze){we(C[0][3],ze)}}function te(De){De.value instanceof T?Promise.resolve(De.value.v).then(Y,me):we(C[0][2],De)}function Y(De){V("next",De)}function me(De){V("throw",De)}function we(De,Ee){De(Ee),C.shift(),C.length&&V(C[0][0],C[0][1])}}function L(S){var E,H;return E={},Q("next"),Q("throw",function(W){throw W}),Q("return"),E[Symbol.iterator]=function(){return this},E;function Q(W,C){E[W]=S[W]?function(B){return(H=!H)?{value:T(S[W](B)),done:!1}:C?C(B):B}:C}}function F(S){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var E=S[Symbol.asyncIterator],H;return E?E.call(S):(S=typeof w=="function"?w(S):S[Symbol.iterator](),H={},Q("next"),Q("throw"),Q("return"),H[Symbol.asyncIterator]=function(){return this},H);function Q(C){H[C]=S[C]&&function(B){return new Promise(function(V,te){B=S[C](B),W(V,te,B.done,B.value)})}}function W(C,B,V,te){Promise.resolve(te).then(function(Y){C({value:Y,done:V})},B)}}function G(S,E){return Object.defineProperty?Object.defineProperty(S,"raw",{value:E}):S.raw=E,S}var Z=Object.create?function(S,E){Object.defineProperty(S,"default",{enumerable:!0,value:E})}:function(S,E){S.default=E};function ce(S){if(S&&S.__esModule)return S;var E={};if(S!=null)for(var H in S)H!=="default"&&Object.prototype.hasOwnProperty.call(S,H)&&y(E,S,H);return Z(E,S),E}function fe(S){return S&&S.__esModule?S:{default:S}}function _e(S,E,H,Q){if(H==="a"&&!Q)throw new TypeError("Private accessor was defined without a getter");if(typeof E=="function"?S!==E||!Q:!E.has(S))throw new TypeError("Cannot read private member from an object whose class did not declare it");return H==="m"?Q:H==="a"?Q.call(S):Q?Q.value:E.get(S)}function oe(S,E,H,Q,W){if(Q==="m")throw new TypeError("Private method is not writable");if(Q==="a"&&!W)throw new TypeError("Private accessor was defined without a setter");if(typeof E=="function"?S!==E||!W:!E.has(S))throw new TypeError("Cannot write private member to an object whose class did not declare it");return Q==="a"?W.call(S,H):W?W.value=H:E.set(S,H),H}function ee(S,E){if(E===null||typeof E!="object"&&typeof E!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof S=="function"?E===S:S.has(E)}function ae(S,E,H){if(E!=null){if(typeof E!="object"&&typeof E!="function")throw new TypeError("Object expected.");var Q;if(H){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");Q=E[Symbol.asyncDispose]}if(Q===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");Q=E[Symbol.dispose]}if(typeof Q!="function")throw new TypeError("Object not disposable.");S.stack.push({value:E,dispose:Q,async:H})}else H&&S.stack.push({async:!0});return E}var K=typeof SuppressedError=="function"?SuppressedError:function(S,E,H){var Q=new Error(H);return Q.name="SuppressedError",Q.error=S,Q.suppressed=E,Q};function $(S){function E(Q){S.error=S.hasError?new K(Q,S.error,"An error was suppressed during disposal."):Q,S.hasError=!0}function H(){for(;S.stack.length;){var Q=S.stack.pop();try{var W=Q.dispose&&Q.dispose.call(Q.value);if(Q.async)return Promise.resolve(W).then(H,function(C){return E(C),H()})}catch(C){E(C)}}if(S.hasError)throw S.error}return H()}var z={__extends:r,__assign:n,__rest:i,__decorate:s,__param:I,__metadata:h,__awaiter:v,__generator:g,__createBinding:y,__exportStar:b,__values:w,__read:k,__spread:q,__spreadArrays:P,__spreadArray:D,__await:T,__asyncGenerator:R,__asyncDelegator:L,__asyncValues:F,__makeTemplateObject:G,__importStar:ce,__importDefault:fe,__classPrivateFieldGet:_e,__classPrivateFieldSet:oe,__classPrivateFieldIn:ee,__addDisposableResource:ae,__disposeResources:$}}},__webpack_module_cache__={};function __webpack_require__(_){var m=__webpack_module_cache__[_];if(m!==void 0)return m.exports;var e=__webpack_module_cache__[_]={id:_,loaded:!1,exports:{}};return __webpack_modules__[_].call(e.exports,e,e.exports,__webpack_require__),e.loaded=!0,e.exports}__webpack_require__.m=__webpack_modules__,function(){__webpack_require__.amdD=function(){throw new Error("define cannot be used indirect")}}(),function(){__webpack_require__.amdO={}}(),function(){__webpack_require__.n=function(_){var m=_&&_.__esModule?function(){return _.default}:function(){return _};return __webpack_require__.d(m,{a:m}),m}}(),function(){var _=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},m;__webpack_require__.t=function(e,o){if(o&1&&(e=this(e)),o&8||typeof e=="object"&&e&&(o&4&&e.__esModule||o&16&&typeof e.then=="function"))return e;var r=Object.create(null);__webpack_require__.r(r);var n={};m=m||[null,_({}),_([]),_(_)];for(var i=o&2&&e;typeof i=="object"&&!~m.indexOf(i);i=_(i))Object.getOwnPropertyNames(i).forEach(function(s){n[s]=function(){return e[s]}});return n.default=function(){return e},__webpack_require__.d(r,n),r}}(),function(){__webpack_require__.d=function(_,m){for(var e in m)__webpack_require__.o(m,e)&&!__webpack_require__.o(_,e)&&Object.defineProperty(_,e,{enumerable:!0,get:m[e]})}}(),function(){__webpack_require__.f={},__webpack_require__.e=function(_){return Promise.all(Object.keys(__webpack_require__.f).reduce(function(m,e){return __webpack_require__.f[e](_,m),m},[]))}}(),function(){__webpack_require__.u=function(_){return""+({171:"docs__en-US__handbook__workflow__triggers__schedule.md",489:"docs__en-US__breaking-changes__index.md",565:"docs__en-US__handbook__workflow-loop__index.md",581:"docs__en-US__manual__ui__fields__association-components__summary__index.md",701:"docs__en-US__development__http-api__index.md",876:"docs__en-US__manual__mobile__development__frontend.md",989:"docs__en-US__handbook__data-visualization__antd-charts__scatter.md",1020:"docs__en-US__handbook__auth-ldap__index.md",1131:"docs__en-US__plugins__collection-manager__user__collection-templates__general__index.md",1265:"docs__en-US__handbook__data-visualization__user__configure.md",1327:"docs__en-US__plugin-samples__schema-initializer__block-simple.md",1436:"docs__en-US__handbook__ui__fields__specific__picker.md",1565:"docs__en-US__handbook__ui__blocks__other-blocks__markdown.md",1813:"docs__en-US__handbook__workflow-custom-action-trigger__trigger.md",2016:"docs__en-US__welcome__release__formulas.md",2366:"docs__en-US__plugins__workflow-form-trigger__index.md",2451:"docs__en-US__plugin-samples__router__add-page__index.md",2483:"docs__en-US__development__server__collections__association-fields.md",2491:"docs__en-US__handbook__plugin-manager__index.md",2496:"docs__en-US__plugins__client__user__ui-designer__actions__edit.md",2534:"docs__en-US__plugins__map__index.md",2563:"docs__en-US__handbook__client__user__ui-designer__actions__view.md",2707:"docs__en-US__handbook__ui__actions__types__add-new.md",2718:"docs__en-US__handbook__field-formula__index.md",2782:"docs__en-US__plugins__collection-manager__user__association-fields__summary__index.md",2805:"docs__en-US__development__others__testing.md",2843:"docs__en-US__manual__workflow__index.md",2858:"docs__en-US__api__telemetry__telemetry.md",3122:"docs__en-US__manual__collection__fields__media.md",3143:"docs__en-US__welcome__release__roadmap.md",3214:"docs__en-US__handbook__file-manager__storage__aliyun-oss.md",3282:"docs__en-US__handbook__workflow__nodes__approval.md",3303:"docs__en-US__plugin-samples__router__index.md",3389:"docs__en-US__handbook__data-visualization__faq.md",3395:"docs__en-US__manual__ui__actions__open-popup.md",3820:"docs__en-US__plugins__collection-manager__user__association-fields__sub-table__index.md",3826:"docs__en-US__handbook__data-modeling__collection-fields__associations__m2m__index.md",3944:"docs__en-US__handbook__client__user__ui-designer__blocks__index.md",3966:"docs__en-US__manual__workflow__nodes__delay.md",4230:"docs__en-US__plugins__graph-collection-manager__index.md",4366:"docs__en-US__api__data-source-manager__data-source.md",4374:"docs__en-US__plugins__client__user__ui-designer__actions__submit-to-workflow.md",4384:"docs__en-US__plugins__client__user__index.md",4840:"docs__en-US__plugins__workflow__manual__nodes__loop.md",5102:"docs__en-US__handbook__workflow__nodes__create.md",5216:"docs__en-US__plugins__workflow-loop__index.md",5263:"docs__en-US__plugins__workflow-delay__index.md",5810:"docs__en-US__plugin-samples__component-and-scope__global.md",5822:"docs__en-US__plugins__collection-manager__user__association-fields__sub-form__index.md",5939:"docs__en-US__handbook__collection-fdw__enable-federated.md",6006:"docs__en-US__handbook__action-import__index.md",6163:"docs__en-US__manual__data-visualization__chart-block.md",6275:"docs__en-US__plugin-samples__component-and-scope__local.md",6319:"docs__en-US__plugins__verification__index.md",6327:"docs__en-US__plugins__workflow__index.md",6346:"docs__en-US__manual__plugin-manager__plugin-settings__index.md",6375:"docs__en-US__api__logger.md",6780:"docs__en-US__api__client__schema-designer__schema-initializer.md",6859:"docs__en-US__handbook__ui__fields__field-settings__style.md",6885:"docs__en-US__handbook__ui__blocks__data-blocks__form.md",6893:"docs__en-US__api__resourcer__action.md",6931:"docs__en-US__manual__workflow__nodes__loop.md",7027:"docs__en-US__manual__data-visualization__filter.md",7443:"docs__en-US__handbook__file-manager__storage__tencent-cos.md",7535:"docs__en-US__handbook__client__user__ui-designer__actions__open-popup.md",7692:"docs__en-US__handbook__client__user__ui-designer__fields__index.md",8570:"docs__en-US__plugin-samples__plugin-settings__form.md",8602:"docs__en-US__api__server__sync-message-manager.md",8757:"docs__en-US__handbook__data-visualization__index.md",8777:"docs__en-US__welcome__release__v0170-changelog.md",8804:"docs__en-US__handbook__data-modeling__collection-fields__basic__integer.md",8879:"docs__en-US__plugins__theme-editor__index.md",9120:"docs__en-US__plugins__collection-manager__user__collection-templates__tree__index.md",9161:"docs__en-US__handbook__backups__installation__postgres.md",9258:"docs__en-US__welcome__community__faq.md",9385:"docs__en-US__welcome__getting-started__upgrading__create-nocobase-app.md",9388:"docs__en-US__welcome__release__v0070-changelog.md",9420:"docs__en-US__api__auth__auth.md",9547:"docs__en-US__handbook__data-modeling__collection-fields__basic__percent.md",9584:"docs__en-US__plugins__import__index.md",9677:"docs__en-US__handbook__data-modeling__collection-fields__basic__url.md",9695:"docs__en-US__handbook__ui__actions__types__edit.md",9714:"docs__en-US__development__client__test.md",9746:"docs__en-US__api__test__e2e.md",9909:"docs__en-US__manual__workflow__nodes__destroy.md",9931:"docs__en-US__manual__core-concepts__a-b-c.md",10145:"docs__en-US__plugin-samples__schema-initializer__action-modal.md",10264:"docs__en-US__development__server__routing.md",10385:"docs__en-US__plugins__collection-manager__user__collection-templates__file__index.md",10414:"docs__en-US__plugins__collection-manager__user__collection-templates__sql__index.md",10581:"docs__en-US__handbook__file-manager__storage__amazon-s3.md",10607:"docs__en-US__api__acl__acl.md",10883:"docs__en-US__handbook__auth-saml__example__google.md",10905:"docs__en-US__plugins__ui-schema-storage__index.md",10986:"docs__en-US__handbook__users__index.md",11109:"docs__en-US__plugins__workflow__manual__nodes__sql.md",11150:"docs__en-US__development__http-api__action-api.md",11285:"docs__en-US__handbook__graph-collection-manager__index.md",11357:"docs__en-US__handbook__data-visualization__echarts__pie.md",11413:"docs__en-US__welcome__getting-started__upgrading__git-clone.md",11622:"docs__en-US__handbook__workflow-custom-action-trigger__example.md",11902:"docs__en-US__handbook__calendar__calendar-collection.md",11922:"docs__en-US__handbook__collection-view__index.md",11924:"docs__en-US__plugins__formula-field__index.md",11995:"docs__en-US__handbook__workflow-dynamic-calculation__node.md",12046:"docs__en-US__development__client__ui-schema__components.md",12102:"docs__en-US__welcome__release__v0190-changelog.md",12150:"docs__en-US__welcome__release__v0091-changelog.md",12174:"docs__en-US__development__others__deps.md",12224:"docs__en-US__api__data-source-manager__i-repository.md",12300:"docs__en-US__api__telemetry__metric.md",12435:"docs__en-US__handbook__users__field-created-by.md",12447:"docs__en-US__handbook__ui__fields__field-settings__field-component.md",12497:"docs__en-US__handbook__data-visualization__echarts__line.md",12546:"docs__en-US__welcome__release__20240519-changelog.md",12572:"docs__en-US__manual__collection__collection-templates__tree__index.md",12623:"docs__en-US__handbook__workflow__triggers__approval.md",12684:"docs__en-US__handbook__data-modeling__collection.md",12739:"docs__en-US__handbook__collection-fdw__index.md",12748:"docs__en-US__handbook__data-modeling__collection-fields__choices__select.md",12822:"docs__en-US__handbook__ui__actions__types__filter.md",13026:"docs__en-US__handbook__ui__fields__field-settings__edit-description.md",13214:"docs__en-US__api__server__plugin-manager.md",13224:"docs__en-US__api__cache__cache.md",13225:"docs__en-US__handbook__ui__fields__generic__filter-form-item.md",13303:"docs__en-US__plugins__client__user__ui-designer__actions__update-record.md",13472:"docs__en-US__manual__collection__fields__map.md",13573:"docs__en-US__api__client__application.md",13750:"docs__en-US__handbook__workflow__nodes__request.md",13918:"docs__en-US__plugins__workflow__manual__index.md",14007:"docs__en-US__plugins__collection-manager__user__collection-templates__expression__index.md",14137:"docs__en-US__handbook__ui__blocks__other-blocks__workflow-approval.md",14156:"docs__en-US__manual__localization-management__index.md",14370:"docs__en-US__handbook__embed__index.md",14377:"docs__en-US__welcome__release__inherits.md",14442:"docs__en-US__plugins__workflow__manual__nodes__request.md",14476:"docs__en-US__api__client__extensions__collection-manager.md",14490:"docs__en-US__handbook__collection-tree__index.md",14651:"docs__en-US__manual__plugin-manager__plugin-manager__index.md",14707:"docs__en-US__development__server__migration.md",14816:"docs__en-US__development__client__router.md",15051:"docs__en-US__handbook__api-keys__index.md",15089:"docs__en-US__handbook__workflow-json-query__index.md",15105:"docs__en-US__development__server__middleware.md",15173:"docs__en-US__manual__ui__actions__custom-request.md",15309:"docs__en-US__handbook__data-visualization__echarts__radar.md",15491:"docs__en-US__plugin-samples__schema-initializer__block-data.md",15518:"docs__en-US__handbook__data-modeling__collection-fields__geometric__line.md",15548:"docs__en-US__handbook__data-modeling__collection-fields__system-info__created-at.md",15559:"docs__en-US__welcome__release__v0074-changelog.md",16242:"docs__en-US__handbook__field-china-region__index.md",16357:"docs__en-US__handbook__file-manager__development__index.md",16373:"docs__en-US__handbook__workflow__nodes__sql.md",16535:"docs__en-US__plugins__workflow__manual__triggers__collection.md",16563:"docs__en-US__handbook__file-storage-oss__index.md",16625:"docs__en-US__manual__collection__collection-templates__expression__index.md",16741:"docs__en-US__manual__collection__fields__system.md",16776:"docs__en-US__welcome__community__contributing.md",16826:"docs__en-US__api__handlebars-helpers__array.md",16871:"docs__en-US__manual__ui__actions__export.md",17304:"docs__en-US__manual__core-concepts__containers.md",17385:"docs__en-US__api__data-source-manager__i-collection.md",17506:"docs__en-US__handbook__system-settings__index.md",17931:"docs__en-US__handbook__workflow__nodes__index.md",17961:"docs__en-US__plugins__action-bulk-edit__index.md",18133:"docs__en-US__handbook__workflow-custom-action-trigger__index.md",18247:"docs__en-US__plugins__collection-manager__user__association-fields__sub-form(popover)__index.md",18249:"docs__en-US__plugins__collection-manager__index.md",18252:"docs__en-US__api__handlebars-helpers__path.md",18556:"docs__en-US__handbook__mobile-client__index.md",18693:"docs__en-US__welcome__changelog__20240519.md",18770:"docs__en-US__handbook__ui__variables.md",18796:"docs__en-US__plugins__oidc__index.md",18807:"docs__en-US__handbook__ui__blocks__data-blocks__details.md",18830:"docs__en-US__handbook__auth__dev__api.md",18840:"docs__en-US__handbook__workflow-dynamic-calculation__index.md",18893:"docs__en-US__plugin-samples__schema-initailizer__index.md",19138:"docs__en-US__handbook__ui__fields__field-settings__required.md",19143:"docs__en-US__api__database__field.md",19150:"docs__en-US__plugins__localization-management__index.md",19158:"docs__en-US__plugin-samples__schema-settings__new.md",19689:"docs__en-US__handbook__ui__blocks__block-settings__block-title.md",19703:"docs__en-US__welcome__getting-started__installation__create-nocobase-app.md",19923:"docs__en-US__handbook__file-manager__storage__local.md",20197:"docs__en-US__api__handlebars-helpers__regex.md",20202:"docs__en-US__handbook__data-modeling__collection-fields__basic__input.md",20358:"docs__en-US__handbook__ui__fields__field-settings__validation-rules.md",20390:"docs__en-US__handbook__data-modeling__collection-fields__advanced__collection-select.md",20406:"docs__en-US__handbook__collection-sql__index.md",20469:"docs__en-US__plugins__workflow-approval__index.md",20538:"docs__en-US__development__server__resources-actions-v2__configuration.md",20621:"docs__en-US__welcome__getting-started__plugin.md",20801:"docs__en-US__manual__collection__fields__advanced.md",21126:"docs__en-US__handbook__data-modeling__collection-fields__datetime__index.md",21265:"docs__en-US__api__index.md",21704:"docs__en-US__handbook__ui__fields__field-settings__number-format.md",22233:"docs__en-US__development__client__ui-schema__settings.md",22468:"docs__en-US__manual__workflow__start.md",22499:"docs__en-US__manual__workflow__nodes__parallel.md",22809:"docs__en-US__plugins__client__user__plugin-manager__index.md",22906:"docs__en-US__api__resourcer__middleware.md",22991:"docs__en-US__api__database__shared__transaction.md",23039:"docs__en-US__handbook__workflow__development__api.md",23139:"docs__en-US__handbook__workflow__triggers__pre-action.md",23243:"docs__en-US__api__database__shared__create-options.md",23661:"docs__en-US__handbook__field-markdown-vditor__index.md",23691:"docs__en-US__api__handlebars-helpers__string.md",23754:"docs__en-US__manual__ui__fields__association-components__title__index.md",23900:"docs__en-US__handbook__auth__index.md",23928:"docs__en-US__api__telemetry__trace.md",24338:"docs__en-US__handbook__action-import-pro__index.md",24350:"docs__en-US__api__handlebars-helpers__index.md",24433:"docs__en-US__handbook__ui__fields__specific__cascade-select.md",24499:"docs__en-US__plugin-samples__router__add-setting-page-layout-routes__index.md",24515:"docs__en-US__development__server__telemetry.md",24543:"docs__en-US__plugins__backup-restore__index.md",24899:"docs__en-US__manual__collection__collection-fdw__enable-federated.md",24983:"docs__en-US__welcome__release__v0075-changelog.md",25058:"docs__en-US__welcome__release__tree-collection.md",25279:"docs__en-US__handbook__workflow__index.md",25520:"docs__en-US__development__server__events.md",25634:"docs__en-US__plugins__logger__index.md",25690:"docs__en-US__development__others__build.md",25768:"docs__en-US__plugin-samples__schema-initializer__configure-actions.md",25797:"docs__en-US__manual__collection__fields__relation.md",25855:"docs__en-US__handbook__workflow-request-interceptor__action.md",25869:"docs__en-US__handbook__file-storage-s3__index.md",25912:"docs__en-US__api__auth__auth-manager.md",25918:"docs__en-US__manual__workflow__triggers__form.md",26006:"docs__en-US__handbook__audit-logs__index.md",26248:"docs__en-US__welcome__getting-started__deployment__docker-compose.md",26262:"docs__en-US__plugins__workflow__manual__nodes__delay.md",26295:"docs__en-US__api__server__migration.md",26365:"docs__en-US__development__client__i18n.md",26641:"docs__en-US__development__server__resources-actions.md",26756:"docs__en-US__welcome__changelog__0-template.md",26818:"docs__en-US__plugins__custom-request__index.md",27e3:"docs__en-US__api__http__rest-api.md",27046:"docs__en-US__handbook__auth__user__index.md",27277:"docs__en-US__handbook__action-bulk-update__index.md",27291:"docs__en-US__plugins__workflow__development__api.md",27431:"docs__en-US__manual__ui__actions__import.md",27833:"docs__en-US__handbook__ui__blocks__data-blocks__list.md",27966:"docs__en-US__welcome__release__v0060-changelog.md",27995:"docs__en-US__plugin-samples__index.md",28399:"docs__en-US__handbook__data-visualization__echarts__bar.md",28581:"docs__en-US__handbook__data-modeling__collection-fields__basic__color.md",28802:"docs__en-US__handbook__data-source-external-mysql__index.md",28895:"docs__en-US__handbook__file-manager__storage__index.md",29042:"docs__en-US__welcome__getting-started__deployment__env-note.md",29211:"docs__en-US__manual__collection__inherit.md",29226:"docs__en-US__handbook__workflow__nodes__condition.md",29341:"docs__en-US__manual__collection__fields__basic.md",29352:"docs__en-US__plugin-samples__field__without-value.md",29396:"docs__en-US__handbook__data-modeling__collection-fields__choices__multiple-select.md",29409:"docs__en-US__handbook__app-switching__index.md",29450:"docs__en-US__handbook__data-visualization__block-charts.md",29487:"docs__en-US__manual__core-concepts__blocks.md",29532:"docs__en-US__handbook__ui__fields__field-settings__display-title.md",29786:"docs__en-US__manual__collection__collection-templates__calender__index.md",29875:"docs__en-US__handbook__workflow__quick-start.md",30074:"docs__en-US__handbook__data-modeling__collection-fields__datetime__datetime.md",30105:"docs__en-US__handbook__workflow__triggers__collection.md",30170:"docs__en-US__handbook__data-modeling__collection-fields__associations__o2m__index.md",30347:"docs__en-US__plugins__action-duplicate__index.md",30399:"docs__en-US__manual__file-manager__amazon-s3.md",30468:"docs__en-US__manual__ui__menus__index.md",30483:"docs__en-US__welcome__release__v0120-changelog.md",30531:"docs__en-US__plugins__acl__index.md",30553:"docs__en-US__plugins__client__user__ui-designer__actions__custom-request.md",30621:"docs__en-US__handbook__data-visualization__antd-charts__bar.md",30787:"docs__en-US__manual__collection__management.md",30826:"docs__en-US__handbook__ui__actions__action-settings__linkage-rule.md",30873:"docs__en-US__plugins__users__index.md",30953:"docs__en-US__handbook__ui__ui-editor__index.md",31363:"docs__en-US__manual__ui__fields__association-components__index.md",31817:"docs__en-US__handbook__workflow-approval__block.md",31938:"docs__en-US__development__server__commands.md",32053:"docs__en-US__plugins__sms-auth__index.md",32320:"docs__en-US__handbook__data-modeling__collection-fields__media__field-attachment.md",32405:"docs__en-US__handbook__ui__blocks__other-blocks__workflow-manual-todos.md",32751:"docs__en-US__api__handlebars-helpers__i18n.md",33e3:"docs__en-US__api__handlebars-helpers__math.md",33121:"docs__en-US__manual__ui__index.md",33171:"docs__en-US__handbook__auth-dingtalk__index.md",33292:"docs__en-US__handbook__ui__fields__specific__tag.md",33506:"docs__en-US__handbook__data-modeling__collection-fields__choices__checkbox.md",33524:"docs__en-US__plugins__workflow__manual__nodes__update.md",33893:"docs__en-US__handbook__ui__actions__types__refresh.md",33945:"docs__en-US__handbook__client__user__index.md",33977:"docs__en-US__handbook__workflow-date-calculation__index.md",34057:"docs__en-US__handbook__block-tree__index.md",34059:"docs__en-US__handbook__auth-cas__index.md",34061:"docs__en-US__breaking-changes__v0-18-0-alpha-1.md",34122:"docs__en-US__development__client__api-client.md",34187:"docs__en-US__manual__backup-restore__index.md",34249:"docs__en-US__plugins__data-visualization__index.md",34345:"docs__en-US__handbook__workflow__development__instruction.md",34357:"docs__en-US__handbook__workflow-action-trigger__http-api.md",34594:"docs__en-US__manual__ui__fields__association-components__sub-form__index.md",34692:"docs__en-US__handbook__workflow__nodes__variable.md",34749:"docs__en-US__handbook__ui__fields__index.md",34959:"docs__en-US__handbook__workflow__advanced__revisions.md",35350:"docs__en-US__plugins__collection-manager__user__association-fields__tag__index.md",35357:"docs__en-US__plugins__collection-manager__user__field-interfaces__index.md",35487:"docs__en-US__development__client__life-cycle.md",35520:"docs__en-US__plugins__data-visualization__user__configure.md",35739:"docs__en-US__handbook__workflow-sql__index.md",35830:"docs__en-US__handbook__workflow-parallel__index.md",35831:"docs__en-US__handbook__data-source-kingbase__index.md",36055:"docs__en-US__plugins__sequence-field__index.md",36311:"docs__en-US__handbook__workflow__nodes__dynamic-calculation.md",36693:"docs__en-US__handbook__ui__actions__action-settings__popup-size.md",36840:"docs__en-US__handbook__ui__pages__index.md",36874:"docs__en-US__development__index.md",36909:"docs__en-US__welcome__release__v0071-changelog.md",37029:"docs__en-US__api__test__client.md",37130:"docs__en-US__handbook__data-modeling__collection-fields__basic__phone.md",37206:"docs__en-US__development__client__index.md",37332:"docs__en-US__handbook__ui__fields__specific__sub-detail.md",37868:"docs__en-US__manual__ui__actions__update-record.md",37992:"docs__en-US__handbook__workflow__nodes__aggregate.md",38025:"docs__en-US__plugins__workflow__manual__advanced.md",38082:"docs__en-US__handbook__workflow__triggers__post-action.md",38122:"docs__en-US__breaking-changes__v0-17-0-alpha-3.md",38207:"docs__en-US__handbook__data-modeling__collection-fields__choices__radio-group.md",38346:"docs__en-US__plugins__workflow-sql__index.md",38353:"docs__en-US__handbook__data-visualization__echarts__treemap.md",38651:"docs__en-US__handbook__workflow-dynamic-calculation__collection.md",38812:"docs__en-US__handbook__backups__installation__mysql.md",39046:"docs__en-US__breaking-changes__v0-17-0-alpha-5.md",39133:"docs__en-US__handbook__ui__blocks__index.md",39311:"docs__en-US__plugins__data-visualization__user__filter.md",39654:"docs__en-US__handbook__field-sort__index.md",39659:"docs__en-US__welcome__getting-started__deployment__git-clone.md",39688:"docs__en-US__handbook__notification-manager__index.md",39693:"docs__en-US__components.md",39730:"docs__en-US__manual__core-concepts__actions.md",39787:"docs__en-US__handbook__client__user__ui-designer__actions__submit-to-workflow.md",39840:"docs__en-US__plugins__audit-logs__index.md",39898:"docs__en-US__welcome__introduction__features.md",40143:"docs__en-US__handbook__data-source-main__general-collection.md",40150:"docs__en-US__plugins__collection-manager__user__association-fields__select__index.md",40268:"docs__en-US__plugins__workflow__manual__nodes__index.md",40293:"docs__en-US__handbook__ui__actions__types__view.md",40678:"docs__en-US__handbook__data-modeling__collection-fields__media__rich-text.md",40736:"docs__en-US__plugins__china-region__index.md",41568:"docs__en-US__handbook__notification-in-app-message__index.md",41598:"docs__en-US__handbook__block-kanban__index.md",41624:"docs__en-US__development__server__index.md",42084:"docs__en-US__welcome__release__collection-templates.md",42236:"docs__en-US__welcome__release__v0080-changelog.md",42291:"docs__en-US__plugins__collection-manager__user__association-fields__cascade-select__index.md",42334:"docs__en-US__handbook__workflow-request-interceptor__index.md",42623:"docs__en-US__handbook__ui__fields__specific__title.md",42927:"docs__en-US__manual__blocks-guide__charts.md",43192:"docs__en-US__api__database__shared__find-one.md",43331:"docs__en-US__handbook__data-modeling__index.md",43401:"docs__en-US__handbook__ui__blocks__block-settings__linkage-rule.md",43545:"docs__en-US__manual__file-manager__aliyun-oss.md",43691:"docs__en-US__handbook__field-snapshot__index.md",43694:"docs__en-US__welcome__introduction__index.md",43754:"docs__en-US__plugin-samples__schema-initailizer__add-item-to-block.md",43854:"docs__en-US__handbook__workflow-manual__index.md",43860:"docs__en-US__handbook__client__user__ui-designer__actions__duplicate.md",44059:"docs__en-US__handbook__workflow-custom-action-trigger__action.md",44254:"docs__en-US__welcome__release__v0140-changelog.md",44404:"docs__en-US__manual__collection__collection-templates__index.md",44411:"docs__en-US__api__test__server.md",44474:"docs__en-US__plugins__api-doc__index.md",44667:"docs__en-US__plugins__cas__index.md",44720:"docs__en-US__handbook__data-modeling__collection-fields__advanced__json.md",45087:"docs__en-US__manual__ui__fields__association-components__file-manager__index.md",45109:"docs__en-US__manual__collection__collection-templates__general__index.md",45170:"docs__en-US__handbook__notification-manager__development__api.md",45381:"docs__en-US__plugins__workflow__manual__nodes__dynamic-calculation.md",45526:"docs__en-US__development__server__i18n.md",45681:"docs__en-US__plugins__workflow__manual__triggers__index.md",45682:"docs__en-US__handbook__client__user__ui-designer__actions__add-new.md",45716:"docs__en-US__development__client__ui-schema__designable.md",45784:"docs__en-US__handbook__data-modeling__collection-fields__choices__china-region.md",45789:"docs__en-US__handbook__ui__blocks__filter-blocks__form.md",45870:"docs__en-US__handbook__client__user__ui-designer__pages__index.md",46112:"docs__en-US__handbook__workflow-action-trigger__action.md",46209:"docs__en-US__handbook__field-component-mask__index.md",46385:"docs__en-US__handbook__ui__blocks__block-settings__loading-mode.md",46426:"docs__en-US__handbook__action-custom-request__index.md",46606:"docs__en-US__handbook__data-modeling__collection-fields__associations__index.md",46621:"docs__en-US__welcome__introduction__why.md",46723:"docs__en-US__manual__theme-editor__index.md",46845:"docs__en-US__plugins__file-manager__tencent-cos.md",46957:"docs__en-US__handbook__ui__blocks__block-settings__data-scope.md",46982:"docs__en-US__manual__workflow__nodes__sql.md",47052:"docs__en-US__handbook__ui__menus__index.md",47059:"docs__en-US__manual__ui__pages__index.md",47156:"docs__en-US__plugins__client__user__user-center__index.md",47442:"docs__en-US__plugins__workflow-aggregate__index.md",47477:"docs__en-US__manual__collection__collection-fdw__index.md",47496:"docs__en-US__handbook__field-m2m-array__index.md",47510:"docs__en-US__development__app-ds.md",47518:"docs__en-US__manual__ui__actions__duplicate.md",47752:"docs__en-US__handbook__client__user__ui-designer__actions__edit.md",47850:"docs__en-US__handbook__block-map__index.md",48067:"docs__en-US__handbook__ui__actions__types__update-record.md",48088:"docs__en-US__plugin-samples__router__add-setting-page-tabs-routes__index.md",48160:"docs__en-US__handbook__system-settings__language-settings.md",48196:"docs__en-US__handbook__workflow__triggers__index.md",48205:"docs__en-US__handbook__workflow-action-trigger__trigger.md",48206:"docs__en-US__handbook__ui__fields__generic__bulk-edit-form-item.md",48275:"docs__en-US__development__server__collections__collection-template.md",48295:"docs__en-US__handbook__client__user__ui-designer__actions__refresh.md",48367:"docs__en-US__manual__user__user-center__index.md",48415:"docs__en-US__api__client__schema-designer__schema-component.md",48721:"docs__en-US__api__data-source-manager__i-collection-manager.md",48724:"docs__en-US__handbook__action-bulk-edit__index.md",48980:"docs__en-US__development__http-api__filter-operators.md",49248:"docs__en-US__handbook__data-modeling__collection-fields__basic__textarea.md",49316:"docs__en-US__manual__collection__index.md",49444:"docs__en-US__plugin-samples__component-and-scope__index.md",49603:"docs__en-US__handbook__data-modeling__collection-fields__geometric__point.md",49611:"docs__en-US__handbook__data-modeling__collection-fields__datetime__time.md",49677:"docs__en-US__api__database__operators.md",49825:"docs__en-US__handbook__block-gantt__index.md",49891:"docs__en-US__handbook__workflow__plugins__aggregate.md",49943:"docs__en-US__plugins__auth__user__index.md",49974:"docs__en-US__handbook__ui__fields__field-settings__pattern.md",50160:"docs__en-US__plugins__collection-fdw__index.md",50208:"docs__en-US__handbook__workflow-variable__index.md",50214:"docs__en-US__manual__ui__actions__submit-to-workflow.md",50425:"docs__en-US__plugin-samples__router__replace-page__index.md",50446:"docs__en-US__plugin-samples__block__block-form.md",50552:"docs__en-US__api__sdk__index.md",50634:"docs__en-US__development__server__collections__field-extension.md",50699:"docs__en-US__development__server__test.md",50774:"docs__en-US__handbook__data-visualization__antd-charts__dual-axes.md",50981:"docs__en-US__handbook__workflow__advanced__executions.md",50999:"docs__en-US__manual__workflow__nodes__aggregate.md",51022:"docs__en-US__handbook__data-visualization__echarts__area.md",51060:"docs__en-US__plugins__oidc__example__google.md",51095:"docs__en-US__plugins__client__user__ui-designer__fields__index.md",51706:"docs__en-US__handbook__ui__fields__field-settings__data-scope.md",51760:"docs__en-US__handbook__collection-expression__collection.md",52024:"docs__en-US__handbook__file-storage-cos__index.md",52052:"docs__en-US__manual__ui__actions__index.md",52433:"demos",52538:"docs__en-US__handbook__auth-sms__index.md",52670:"docs__en-US__development__server__resources-actions-v2__index.md",52682:"docs__en-US__handbook__ui__actions__action-settings__open-mode.md",52725:"docs__en-US__plugins__client__user__ui-designer__actions__add-new.md",53273:"docs__en-US__welcome__release__v0180-changelog.md",53319:"docs__en-US__plugin-samples__schema-initializer__block-data-modal.md",53344:"docs__en-US__plugins__client__user__ui-designer__actions__delete.md",53392:"docs__en-US__welcome__changelog__20240607.md",53409:"docs__en-US__handbook__data-visualization__antd__table.md",53693:"docs__en-US__plugins__export__index.md",53803:"docs__en-US__manual__ui__inherit.md",54009:"docs__en-US__plugin-samples__schema-initializer__configure-fields.md",54106:"docs__en-US__breaking-changes__v0.19.0-alpha.1.md",54169:"docs__en-US__development__server__logger.md",54230:"docs__en-US__api__handlebars-helpers__core.md",54314:"docs__en-US__manual__file-manager__tencent-cos.md",54410:"docs__en-US__handbook__data-source-main__inheritance-collection.md",54456:"docs__en-US__handbook__data-source-external-mariadb__index.md",54464:"docs__en-US__plugins__auth__dev__guide.md",54570:"docs__en-US__handbook__workflow-approval__index.md",54634:"docs__en-US__api__client__router.md",54700:"docs__en-US__api__cache__cache-manager.md",54882:"docs__en-US__plugins__client__user__ui-designer__actions__print.md",54903:"docs__en-US__handbook__data-modeling__collection-fields__system-info__updated-at.md",54944:"docs__en-US__handbook__ui__actions__types__pop-up.md",55196:"docs__en-US__plugins__client__user__plugin-settings__index.md",55281:"docs__en-US__handbook__ui__actions__types__submit.md",55337:"docs__en-US__handbook__workflow__nodes__json-query.md",55802:"docs__en-US__manual__ui__actions__add-new.md",55872:"docs__en-US__api__database__relation-repository__index.md",55927:"docs__en-US__handbook__mobile__index.md",55940:"docs__en-US__api__handlebars-helpers__number.md",55982:"docs__en-US__api__database__shared.md",56002:"docs__en-US__plugins__mobile-client__index.md",56065:"docs__en-US__handbook__data-visualization__antd-charts__column.md",56098:"docs__en-US__handbook__data-source-rest-api__index.md",56180:"docs__en-US__plugins__index.md",56238:"docs__en-US__welcome__getting-started__installation__index.md",56537:"docs__en-US__welcome__release__v0094-changelog.md",56612:"docs__en-US__plugins__workflow__development__index.md",56786:"docs__en-US__handbook__workflow-delay__index.md",56923:"docs__en-US__plugins__kanban__index.md",57101:"docs__en-US__handbook__workflow-manual__node.md",57226:"docs__en-US__plugins__action-print__index.md",57273:"docs__en-US__plugins__action-bulk-update__index.md",57367:"docs__en-US__plugins__multi-app-manager__index.md",57523:"docs__en-US__handbook__data-source-manager__external-database.md",57859:"docs__en-US__manual__workflow__nodes__query.md",58314:"docs__en-US__handbook__ui__pop-up.md",58319:"docs__en-US__handbook__ui__actions__action-settings__edit-button.md",58418:"docs__en-US__plugin-samples__field__value.md",58438:"docs__en-US__manual__ui__actions__filter.md",58493:"docs__en-US__handbook__workflow__development__index.md",58498:"docs__en-US__welcome__community__translations.md",58539:"docs__en-US__plugin-samples__field__index.md",58581:"docs__en-US__handbook__workflow__nodes__calculation.md",58952:"docs__en-US__handbook__action-duplicate__index.md",59001:"docs__en-US__handbook__client__user__ui-designer__actions__update-record.md",59068:"docs__en-US__handbook__telemetry-prometheus__index.md",59076:"docs__en-US__plugins__data-visualization__user__chart-block.md",59144:"docs__en-US__handbook__action-export__index.md",59202:"docs__en-US__manual__core-concepts__collections.md",59263:"docs__en-US__plugin-samples__router__add-setting-page-single-route__index.md",59298:"docs__en-US__handbook__ui__blocks__filter-blocks__collapse.md",59432:"docs__en-US__manual__mobile__index.md",59560:"docs__en-US__handbook__client__index.md",60286:"docs__en-US__handbook__data-visualization__antd-charts__line.md",60323:"docs__en-US__welcome__release__v0093-changelog.md",60338:"docs__en-US__handbook__field-attachment-url__index.md",60374:"docs__en-US__plugins__auth__index.md",60436:"docs__en-US__manual__file-manager__local.md",60489:"docs__en-US__handbook__data-visualization__echarts__column.md",60817:"docs__en-US__manual__ui__blocks__index.md",60909:"docs__en-US__handbook__ui__actions__action-settings__bind-workflow.md",60920:"docs__en-US__handbook__workflow-request-interceptor__example.md",60957:"docs__en-US__handbook__notification-manager__development__extension.md",61087:"docs__en-US__handbook__client__user__ui-designer__menus__index.md",61253:"docs__en-US__handbook__ui__actions__action-settings__affter-successful.md",61319:"docs__en-US__welcome__release__upgrade-to__v017.md",61322:"docs__en-US__handbook__workflow-approval__action.md",61422:"docs__en-US__handbook__data-modeling__data-source.md",61594:"docs__en-US__api__client__extensions__acl.md",61925:"docs__en-US__api__database__shared__destroy-options.md",61975:"docs__en-US__handbook__data-modeling__collection-fields__index.md",62009:"docs__en-US__plugins__client__user__ui-designer__actions__add-record.md",62011:"docs__en-US__api__handlebars-helpers__comparison.md",62317:"docs__en-US__plugins__workflow-request__index.md",62463:"docs__en-US__plugin-samples__provider__index.md",62496:"docs__en-US__plugins__client__user__ui-designer__actions__submit.md",62530:"docs__en-US__welcome__getting-started__upgrading__index.md",62741:"docs__en-US__plugins__acl__user__index.md",63118:"docs__en-US__handbook__workflow-aggregate__index.md",63282:"docs__en-US__plugin-samples__schema-settings__index.md",63320:"docs__en-US__handbook__action-qr-scan__index.md",63485:"docs__en-US__handbook__client__user__ui-designer__actions__submit.md",63669:"docs__en-US__welcome__release__v0110-changelog.md",63772:"docs__en-US__handbook__ui__fields__specific__sub-table.md",63776:"docs__en-US__handbook__workflow-request-interceptor__http-api.md",63896:"docs__en-US__handbook__departments__manual.md",63927:"docs__en-US__plugins__workflow-parallel__index.md",64099:"docs__en-US__plugins__collection-manager__user__collection-templates__view__index.md",64531:"docs__en-US__handbook__ui__actions__types__trigger-workflow.md",64550:"docs__en-US__development__http-api__rest-api.md",64564:"docs__en-US__handbook__ui__fields__specific__date-picker.md",64630:"docs__en-US__handbook__workflow__advanced__variables.md",64647:"docs__en-US__development__client__ui-schema__rendering.md",64693:"docs__en-US__handbook__data-visualization__step-by-step__index.md",64884:"docs__en-US__manual__workflow__triggers__collection.md",64990:"docs__en-US__api__database__collection.md",65041:"docs__en-US__api__client__index.md",65149:"docs__en-US__welcome__release__v0092-changelog.md",65274:"docs__en-US__handbook__data-modeling__collection-fields__system-info__table-oid.md",65276:"docs__en-US__handbook__action-export-pro__index.md",65604:"docs__en-US__plugins__client__user__ui-designer__actions__refresh.md",65696:"docs__en-US__api__database__relation-repository__belongs-to-many-repository.md",65821:"docs__en-US__api__sdk__auth.md",65970:"docs__en-US__handbook__ui__actions__types__add-record.md",66011:"docs__en-US__plugins__collection-manager__user__association-fields__record-picker__index.md",66305:"docs__en-US__api__database__shared__update-options.md",66487:"docs__en-US__handbook__data-visualization__echarts__scatter.md",66721:"docs__en-US__plugins__workflow__manual__nodes__manual.md",66933:"docs__en-US__development__client__ui-schema__what-is-ui-schema.md",67040:"docs__en-US__handbook__acl__user__index.md",67052:"docs__en-US__plugin-samples__plugin-settings__table.md",67103:"docs__en-US__handbook__data-modeling__collection-fields__basic__email.md",67142:"docs__en-US__handbook__ui__fields__generic__form-item.md",67309:"docs__en-US__api__handlebars-helpers__date.md",67542:"docs__en-US__handbook__client__user__plugin-manager__index.md",67614:"docs__en-US__handbook__file-manager__index.md",67630:"docs__en-US__plugin-samples__block__block-carousel.md",67653:"docs__en-US__plugins__workflow__manual__triggers__form.md",67710:"docs__en-US__handbook__ui__fields__association-field.md",67717:"docs__en-US__plugin-samples__schema-initializer__index.md",68016:"docs__en-US__handbook__workflow-approval__http-api.md",68194:"docs__en-US__welcome__release__logger.md",68358:"docs__en-US__welcome__release__v0160-changelog.md",68481:"docs__en-US__handbook__workflow__nodes__destroy.md",68572:"docs__en-US__manual__ui__actions__refresh.md",68679:"docs__en-US__manual__collection__multiple-databases.md",68758:"docs__en-US__development__client__ui-schema__quick-start.md",68768:"docs__en-US__handbook__workflow-manual__block.md",68804:"docs__en-US__handbook__client__user__ui-designer__actions__filter.md",68820:"docs__en-US__handbook__calendar__index.md",68931:"docs__en-US__handbook__workflow-action-trigger__index.md",69072:"docs__en-US__handbook__data-source-external-postgres__index.md",69080:"docs__en-US__plugins__iframe-block__index.md",69205:"docs__en-US__handbook__ui__blocks__block-templates.md",69327:"docs__en-US__handbook__workflow-manual__example.md",69332:"docs__en-US__handbook__backup-restore__index.md",69377:"docs__en-US__handbook__public-forms__index.md",69450:"docs__en-US__manual__ui__fields__association-components__sub-table__index.md",69491:"docs__en-US__manual__ui__fields__index.md",69676:"docs__en-US__api__sdk__storage.md",69709:"docs__en-US__plugins__workflow__manual__nodes__create.md",69743:"docs__en-US__manual__collection__fields__choices.md",70077:"docs__en-US__handbook__departments__index.md",70199:"docs__en-US__manual__workflow__nodes__condition.md",70282:"docs__en-US__handbook__file-manager__file-collection.md",70302:"docs__en-US__manual__data-visualization__configure.md",70354:"docs__en-US__manual__workflow__nodes__update.md",70408:"docs__en-US__handbook__data-modeling__collection-fields__advanced__nano-id.md",70488:"docs__en-US__plugins__client__user__ui-designer__actions__duplicate.md",70489:"docs__en-US__handbook__ui__actions__action-settings__double-check.md",70547:"docs__en-US__development__server__resources-actions-v2__vs-router.md",70728:"docs__en-US__index.md",70839:"docs__en-US__handbook__block-iframe__index.md",71003:"docs__en-US__development__client__providers.md",71028:"docs__en-US__handbook__data-modeling__collection-fields__basic__password.md",71032:"docs__en-US__handbook__workflow-approval__trigger.md",71059:"docs__en-US__plugins__workflow-manual__index.md",71250:"docs__en-US__plugins__file-manager__local.md",71371:"docs__en-US__manual__quick-start__ui-editor-mode.md",71409:"docs__en-US__manual__mobile-client__index.md",71585:"docs__en-US__plugins__client__index.md",71879:"docs__en-US__plugins__collection-manager__user__association-fields__title__index.md",71892:"docs__en-US__handbook__data-source-main__index.md",71930:"docs__en-US__handbook__ui__fields__generic__filter-collapse-item.md",72003:"docs__en-US__handbook__data-modeling__collection-fields__basic__number.md",72082:"docs__en-US__handbook__ui__blocks__block-settings__block-template.md",72348:"docs__en-US__welcome__release__v0072-changelog.md",72429:"docs__en-US__manual__ui__fields__association-components__sub-detail__index.md",72445:"nm__dumi-theme-nocobase__dist__layouts__DocLayout__index",72631:"docs__en-US__welcome__getting-started__upgrading__docker-compose.md",72747:"docs__en-US__welcome__getting-started__env.md",72841:"docs__en-US__api__client__schema-designer__schema-settings.md",72924:"docs__en-US__plugins__client__user__ui-designer__pages__index.md",73192:"docs__en-US__manual__workflow__nodes__manual.md",73239:"docs__en-US__development__client__ui-schema__toolbar.md",73399:"docs__en-US__manual__ui__fields__association-components__tag__index.md",73489:"docs__en-US__handbook__ui-schema-storage__index.md",73492:"docs__en-US__development__learning-guide.md",73656:"docs__en-US__handbook__ui__fields__specific__select.md",73658:"docs__en-US__manual__ui__actions__save-record.md",73863:"docs__en-US__manual__workflow__nodes__index.md",73871:"docs__en-US__handbook__workflow__nodes__delay.md",73890:"docs__en-US__handbook__ui__actions__types__link.md",73892:"docs__en-US__handbook__workflow__nodes__query.md",74097:"docs__en-US__welcome__getting-started__deployment__create-nocobase-app.md",74318:"docs__en-US__handbook__data-modeling__collection-fields__associations__o2o__index.md",74435:"docs__en-US__handbook__action-print__index.md",74487:"docs__en-US__handbook__data-modeling__collection-fields__geometric__circle.md",74488:"docs__en-US__handbook__ui__actions__types__delete.md",74506:"nm__dumi-theme-nocobase__dist__layouts__GlobalLayout",74563:"docs__en-US__plugins__client__user__ui-designer__blocks__index.md",74767:"docs__en-US__handbook__data-modeling__collection-fields__media__markdown.md",74816:"docs__en-US__plugin-samples__provider__content.md",74947:"docs__en-US__handbook__workflow__advanced__options.md",75007:"docs__en-US__plugins__telemetry-prometheus__index.md",75146:"docs__en-US__handbook__data-modeling__collection-fields__advanced__sort.md",75231:"docs__en-US__handbook__auth-saml__index.md",75290:"docs__en-US__welcome__release__v0210-changelog__index.md",75458:"docs__en-US__plugins__workflow__development__trigger.md",75582:"docs__en-US__handbook__ui__fields__specific__file-manager.md",75618:"docs__en-US__manual__ui__actions__view.md",76042:"docs__en-US__handbook__client__user__ui-designer__index.md",76118:"docs__en-US__plugins__collection-fdw__enable-federated.md",76123:"docs__en-US__handbook__ui__fields__field-settings__edit-tooltip.md",76273:"docs__en-US__plugins__data-visualization__step-by-step__index.md",76341:"docs__en-US__handbook__client__user__ui-designer__actions__index.md",76596:"docs__en-US__plugins__file-manager__amazon-s3.md",76623:"docs__en-US__development__life-cycle.md",76671:"docs__en-US__plugins__client__user__ui-designer__actions__export.md",76694:"docs__en-US__development__server__resources-actions-v2__to-resource.md",76924:"docs__en-US__plugins__collection-manager__user__index.md",76946:"docs__en-US__manual__quick-start__the-first-app.md",77074:"docs__en-US__handbook__workflow-request-interceptor__trigger.md",77305:"docs__en-US__plugins__client__user__ui-designer__actions__index.md",77452:"docs__en-US__manual__system-settings__index.md",77533:"docs__en-US__welcome__getting-started__deployment__index.md",77649:"docs__en-US__handbook__workflow__nodes__parallel.md",77690:"docs__en-US__handbook__client__user__ui-designer__actions__delete.md",77746:"docs__en-US__plugins__workflow__manual__nodes__calculation.md",77779:"docs__en-US__handbook__data-visualization__dev__index.md",77881:"docs__en-US__handbook__client__user__ui-designer__actions__print.md",77908:"docs__en-US__development__others__languages.md",78106:"docs__en-US__handbook__template-handlebars__index.md",78118:"docs__en-US__handbook__client__user__ui-designer__actions__export.md",78179:"docs__en-US__welcome__release__index.md",78275:"docs__en-US__plugins__client__user__ui-designer__actions__open-popup.md",78371:"docs__en-US__plugin-samples__schema-settings__add-item.md",78566:"docs__en-US__plugins__workflow__manual__nodes__destroy.md",78596:"docs__en-US__manual__ui__actions__delete.md",78609:"docs__en-US__plugins__workflow__manual__nodes__condition.md",78688:"docs__en-US__manual__ui__actions__print.md",78702:"docs__en-US__handbook__backups__installation__mariadb.md",78880:"docs__en-US__handbook__ui__blocks__data-blocks__grid-card.md",79174:"docs__en-US__api__client__extensions__schema-component.md",79240:"docs__en-US__handbook__workflow__nodes__loop.md",79370:"docs__en-US__welcome__release__v0040-changelog.md",79580:"docs__en-US__handbook__ui__fields__field-settings__default-value.md",79882:"docs__en-US__plugins__client__user__ui-designer__actions__view.md",79983:"docs__en-US__handbook__data-visualization__user__filter.md",80152:"docs__en-US__handbook__client__user__ui-designer__actions__add-record.md",80224:"docs__en-US__handbook__auth__dev__guide.md",80413:"docs__en-US__handbook__ui__actions__index.md",80461:"docs__en-US__plugins__workflow__development__instruction.md",80496:"docs__en-US__handbook__ui__blocks__data-blocks__table.md",80551:"docs__en-US__plugin-samples__provider__context.md",80654:"docs__en-US__plugins__workflow-json-query__index.md",80685:"docs__en-US__handbook__multi-app-manager__index.md",80752:"docs__en-US__manual__collection__fields__index.md",80882:"docs__en-US__manual__ui__linkage.md",80961:"docs__en-US__development__server__resources-actions-v2__rest-api.md",81009:"nm__dumi__dist__client__pages__Demo__index",81065:"docs__en-US__api__database__relation-repository__has-one-repository.md",81316:"docs__en-US__plugin-samples__field__interface.md",81538:"docs__en-US__api__database__relation-repository__has-many-repository.md",81656:"docs__en-US__welcome__how.md",81715:"docs__en-US__welcome__release__v0150-changelog.md",81923:"dumi__tmp-production__dumi__theme__ContextWrapper",82125:"docs__en-US__api__database__repository.md",82149:"docs__en-US__handbook__workflow-dynamic-calculation__example.md",82173:"docs__en-US__welcome__release__v0200-changelog__index.md",82215:"docs__en-US__handbook__ui__fields__generic__table-column.md",82329:"docs__en-US__api__data-source-manager__i-field.md",82581:"docs__en-US__manual__ui__fields__association-components__select__index.md",82596:"docs__en-US__handbook__workflow__nodes__end.md",82674:"docs__en-US__plugins__snapshot-field__index.md",82880:"docs__en-US__handbook__workflow__nodes__date-calculation.md",82962:"docs__en-US__handbook__auth-wecom__index.md",83007:"docs__en-US__handbook__client__user__ui-designer__actions__save-record.md",83011:"docs__en-US__plugin-samples__field__sub-field.md",83069:"docs__en-US__handbook__verification__index.md",83228:"docs__en-US__handbook__workflow-request__index.md",83300:"docs__en-US__manual__collection__collection-templates__view__index.md",83833:"docs__en-US__plugins__client__user__ui-designer__menus__index.md",83840:"docs__en-US__handbook__workflow-custom-action-trigger__http-api.md",83884:"docs__en-US__handbook__notification-email__index.md",83902:"docs__en-US__api__actions.md",83999:"docs__en-US__handbook__workflow-request-interceptor__advanced.md",84056:"docs__en-US__breaking-changes__v0-17-0-alpha-1.md",84114:"docs__en-US__plugins__client__user__ui-designer__actions__filter.md",84119:"docs__en-US__development__server__collections__options.md",84188:"docs__en-US__handbook__field-encryption__index.md",84314:"docs__en-US__plugin-samples__schema-initializer__configure-fields-bk.md",84459:"docs__en-US__api__database__index.md",84769:"docs__en-US__manual__workflow__nodes__dynamic-calculation.md",84945:"docs__en-US__manual__ui__actions__edit.md",85089:"docs__en-US__plugins__gantt__index.md",85144:"docs__en-US__handbook__data-visualization__antd__overview.md",85202:"docs__en-US__handbook__workflow__nodes__update.md",85354:"docs__en-US__handbook__client__user__ui-designer__actions__import.md",85530:"docs__en-US__plugin-samples__plugin-settings__table-multiple-add-forms.md",85570:"docs__en-US__handbook__data-visualization__user__chart-block.md",85727:"docs__en-US__development__your-fisrt-plugin.md",85732:"docs__en-US__plugins__system-settings__index.md",85745:"docs__en-US__manual__workflow__advanced.md",85947:"docs__en-US__welcome__release__v0130-changelog.md",85966:"docs__en-US__api__http__index.md",86002:"docs__en-US__api__server__application.md",86010:"docs__en-US__handbook__data-modeling__collection-fields__datetime__date.md",86016:"docs__en-US__handbook__localization-management__index.md",86105:"docs__en-US__handbook__data-modeling__collection-fields__geometric__polygon.md",86310:"docs__en-US__handbook__data-visualization__echarts__overview.md",86324:"docs__en-US__manual__ui__actions__add-record.md",86338:"docs__en-US__handbook__data-visualization__antd-charts__overview.md",86348:"docs__en-US__handbook__field-sequence__index.md",86406:"docs__en-US__plugin-samples__schema-initializer__action-simple.md",86492:"docs__en-US__api__handlebars-helpers__html.md",86653:"docs__en-US__api__handlebars-helpers__object.md",86725:"docs__en-US__api__data-source-manager__index.md",87005:"docs__en-US__welcome__getting-started__installation__docker-compose.md",87093:"docs__en-US__handbook__data-modeling__collection-fields__datetime__datetime-without-tz.md",87111:"docs__en-US__handbook__custom-brand__index.md",87493:"docs__en-US__manual__ui__fields__association-components__sub-form(popover)__index.md",87603:"docs__en-US__handbook__ui__blocks__block-settings__block-height.md",87815:"docs__en-US__development__server__collections-fields.md",87833:"docs__en-US__manual__core-concepts__menus.md",87855:"docs__en-US__manual__ui__fields__association-components__record-picker__index.md",87963:"docs__en-US__manual__collection__fields__date.md",88005:"docs__en-US__development__client__styles-and-themes.md",88065:"docs__en-US__handbook__workflow-approval__advanced.md",88199:"docs__en-US__handbook__ui__fields__field-settings__edit-title.md",88256:"docs__en-US__handbook__workflow__triggers__custom-action.md",88383:"docs__en-US__api__database__shared__find-options.md",88463:"docs__en-US__handbook__api-doc__index.md",88525:"docs__en-US__handbook__ui__blocks__block-settings__block-layout.md",88721:"docs__en-US__handbook__data-visualization__echarts__funnel.md",88822:"docs__en-US__manual__workflow__triggers__index.md",88895:"docs__en-US__handbook__workflow__development__trigger.md",89073:"docs__en-US__welcome__release__v0073-changelog.md",89077:"docs__en-US__plugins__workflow__manual__nodes__query.md",89107:"docs__en-US__development__plugin.md",89209:"docs__en-US__handbook__data-source-manager__index.md",89287:"docs__en-US__handbook__ui__blocks__block-settings__connect-block.md",89534:"docs__en-US__handbook__data-modeling__collection-fields__datetime__unix-timestamp.md",89989:"docs__en-US__api__resourcer__resource-manager.md",90116:"docs__en-US__handbook__workflow__nodes__manual.md",90126:"docs__en-US__handbook__template-string__index.md",90455:"docs__en-US__handbook__file-manager__field-attachment.md",90503:"docs__en-US__api__server__plugin.md",90522:"docs__en-US__welcome__community__thanks.md",90736:"docs__en-US__handbook__acl__index.md",90851:"docs__en-US__plugins__auth__dev__api.md",91010:"docs__en-US__api__cli.md",91082:"docs__en-US__plugins__client__user__ui-designer__index.md",91242:"docs__en-US__plugin-samples__plugin-settings__index.md",91306:"docs__en-US__handbook__ui__actions__action-settings__assign-values.md",91315:"docs__en-US__plugins__collection-manager__user__association-fields__file-manager__index.md",91590:"docs__en-US__api__client__extensions__block-provider.md",91613:"docs__en-US__plugin-samples__block__block-table.md",91676:"docs__en-US__api__auth__base-auth.md",91741:"docs__en-US__api__database__relation-repository__belongs-to-repository.md",91791:"docs__en-US__handbook__data-modeling__collection-fields__choices__checkbox-group.md",91802:"docs__en-US__handbook__ui__blocks__block-settings__sorting-rule.md",91873:"docs__en-US__handbook__data-modeling__collection-fields__basic__icon.md",92019:"docs__en-US__plugins__workflow__manual__triggers__schedule.md",92115:"docs__en-US__plugins__client__user__ui-designer__actions__save-record.md",92266:"docs__en-US__manual__collection__collection-templates__file__index.md",92368:"docs__en-US__handbook__ui__fields__specific__nester.md",92556:"docs__en-US__manual__workflow__nodes__request.md",92693:"docs__en-US__handbook__block-workbench__index.md",92919:"docs__en-US__handbook__client__user__ui-designer__actions__custom-request.md",93065:"nm__dumi__dist__client__pages__404",93096:"docs__en-US__handbook__client__user__plugin-settings__index.md",93142:"docs__en-US__welcome__release__v0050-changelog.md",93330:"docs__en-US__plugins__saml__index.md",93338:"docs__en-US__plugins__collection-manager__user__association-fields__sub-detail__index.md",93395:"docs__en-US__handbook__users__field-updated-by.md",93428:"docs__en-US__development__others__tech-stack.md",93555:"docs__en-US__welcome__release__v0100-changelog.md",93797:"docs__en-US__handbook__template-json__index.md",93903:"docs__en-US__manual__data-visualization__index.md",93946:"docs__en-US__handbook__ui__fields__specific__popover-nester.md",93989:"docs__en-US__welcome__release__v1001-changelog.md",93998:"docs__en-US__handbook__workflow-action-trigger__example.md",94154:"docs__en-US__api__handlebars-helpers__url.md",94220:"docs__en-US__plugins__workflow__manual__nodes__aggregate.md",94252:"docs__en-US__manual__ui__actions__submit.md",94385:"docs__en-US__handbook__workflow-approval__node.md",94388:"docs__en-US__welcome__release__gantt__introduction.md",94406:"docs__en-US__handbook__data-visualization__antd__statistic.md",94466:"docs__en-US__handbook__theme-editor__index.md",94589:"docs__en-US__plugins__file-manager__index.md",94725:"docs__en-US__api__resourcer__resource.md",94783:"docs__en-US__handbook__logger__index.md",94847:"docs__en-US__manual__ui__fields__association-components__cascade-select__index.md",95059:"docs__en-US__development__plugin-ds.md",95187:"docs__en-US__handbook__ui__fields__field-settings__title-field.md",95319:"docs__en-US__development__client__ui-schema__extending.md",95387:"docs__en-US__plugins__data-visualization__dev__index.md",95537:"docs__en-US__plugin-samples__block__index.md",95565:"docs__en-US__plugins__api-keys__index.md",95724:"docs__en-US__welcome__getting-started__installation__git-clone.md",95828:"docs__en-US__handbook__ui__fields__generic__detail-form-item.md",96393:"docs__en-US__development__server__collections__index.md",96617:"docs__en-US__handbook__workflow-response-message__index.md",96685:"docs__en-US__manual__file-manager__index.md",96793:"docs__en-US__plugins__file-manager__aliyun-oss.md",96827:"docs__en-US__handbook__workflow__nodes__response-message.md",96914:"docs__en-US__plugins__workflow-dynamic-calculation__index.md",96939:"docs__en-US__handbook__ui__blocks__block-settings__block-delete.md",96984:"docs__en-US__handbook__auth-oidc__example__google.md",97098:"docs__en-US__handbook__data-source-external-mssql__index.md",97180:"docs__en-US__development__client__ui-schema__initializer.md",97213:"docs__en-US__manual__collection__collection-templates__sql__index.md",97569:"docs__en-US__development__server__collections__configure.md",97694:"docs__en-US__plugins__client__user__ui-designer__actions__import.md",97770:"docs__en-US__handbook__data-modeling__collection-fields__associations__m2o__index.md",97884:"docs__en-US__manual__workflow__nodes__calculation.md",97940:"docs__en-US__handbook__data-visualization__echarts__wordcloud.md",98137:"docs__en-US__handbook__index.md",98205:"docs__en-US__plugins__collection-manager__user__collection-templates__calender__index.md",98571:"docs__en-US__manual__workflow__nodes__create.md",98672:"docs__en-US__handbook__auth-oidc__index.md",98690:"docs__en-US__handbook__backups__index.md",98698:"docs__en-US__manual__workflow__triggers__schedule.md",98798:"docs__en-US__plugins__workflow__manual__nodes__parallel.md",99032:"docs__en-US__manual__quick-start__functional-zoning.md",99153:"docs__en-US__api__database__interfaces__base-interface.md",99435:"docs__en-US__plugins__saml__example__google.md",99736:"docs__en-US__handbook__ui__actions__types__save-record.md",99740:"docs__en-US__handbook__data-visualization__echarts__diverging-bar.md",99763:"docs__en-US__api__data-source-manager__i-model.md",99806:"docs__en-US__handbook__data-visualization__antd-charts__pie.md",99979:"docs__en-US__handbook__data-modeling__collection-fields__advanced__uuid.md"}[_]||_)+"."+{123:"339955d5",171:"2e4b9b00",489:"dc914f55",565:"130b810f",581:"b885b452",701:"cc0e1fda",772:"02616249",876:"11ffdc1b",989:"ab92674d",1020:"0bbbac67",1131:"88a0b923",1265:"eeec829d",1327:"da7328ca",1436:"fdbde71e",1565:"93447030",1813:"610f32f4",2016:"00f014f4",2366:"69a0ba21",2390:"714be9a6",2451:"d5704a22",2483:"b0868163",2491:"e07da5f5",2496:"ff54655f",2534:"a50d32de",2563:"8974358c",2707:"47547521",2718:"173ef11c",2782:"c74ea390",2805:"63f13be7",2843:"d869f56c",2858:"677dd899",3122:"98160dc9",3143:"c8215518",3214:"d8ec3d25",3282:"b9e06e2c",3303:"67e180b6",3389:"ab37018c",3395:"ab1db92f",3820:"02f1dbf0",3826:"dbf93071",3864:"cf1967e5",3944:"5b433beb",3966:"240a37fa",4017:"83d56346",4230:"585806d7",4366:"edfc9310",4374:"523db367",4384:"278f94b8",4502:"9bf7e4df",4840:"895e9efa",5102:"30320244",5216:"e0dae252",5263:"54d167d8",5742:"ce274495",5810:"4d35978c",5822:"ae9d45c5",5939:"6a10d2a2",6006:"8daac547",6163:"0cb360d7",6275:"f1d6eca7",6319:"4444333c",6327:"75c0952e",6346:"faeaff1d",6375:"f4a4fe6b",6402:"539055b9",6509:"25f9b348",6780:"c3075ec3",6859:"bbb643d7",6885:"6d884880",6893:"9eb98f6b",6931:"db547c9a",7027:"79147f9d",7443:"d5c41f88",7486:"2f065457",7535:"5f42f61e",7692:"8c55254e",8570:"e4ebb6bd",8602:"c09742b7",8757:"59363c2d",8777:"a10d5b75",8804:"ec8bdde1",8864:"6c4a61ed",8879:"7734803a",9120:"d5287558",9161:"333ee2bb",9258:"157ce305",9385:"cfa65b3f",9388:"6cdb36d5",9420:"b625824b",9547:"740ee2ae",9584:"d391f435",9677:"aca5be84",9695:"0610c97b",9714:"5891720a",9746:"76a9bc05",9909:"48f02f96",9928:"00e73ab1",9931:"452d3a1f",10145:"34870000",10264:"d063b4b1",10385:"e7aa6eea",10414:"f510d7b0",10581:"59326f3a",10607:"65344cff",10883:"836b27f8",10905:"8fbc90d6",10986:"ee902690",11109:"c763b431",11150:"463092b8",11285:"f7a6408d",11357:"03e9bbcb",11413:"ded06f6c",11573:"b985441b",11622:"566dd121",11794:"0430898e",11902:"0ba75d8a",11922:"ae33b523",11924:"fa4af903",11995:"2b30a4a6",12046:"e8a604e6",12102:"f1462724",12150:"a1b7fafb",12174:"d37718ee",12224:"4978556b",12300:"b38dca62",12435:"69051a00",12447:"4e65bd39",12497:"e5647070",12546:"22e2ddf0",12572:"3c712627",12623:"c16da3cc",12684:"e121a296",12739:"76d3ba15",12748:"df2d1e53",12822:"783a44cd",13026:"3fabb6ce",13214:"40cfab22",13224:"643af3b9",13225:"d24a59bb",13303:"3dde8994",13472:"0869851f",13573:"a2ff7c47",13750:"815d2dbc",13918:"12fddba4",14007:"0f2fc508",14137:"79f3440c",14149:"9afdc086",14156:"5156e072",14370:"22f71352",14377:"d5db651d",14442:"6544b339",14476:"e7c3355c",14490:"5e5a1635",14651:"26920b18",14707:"18194bfe",14724:"d164e1f5",14816:"787be5ce",15001:"dce9c545",15051:"e5091e77",15089:"b5745ea5",15105:"15e8b258",15173:"9c2b6dfa",15287:"3b1edeb3",15309:"aaeb5fab",15473:"7137dc88",15491:"306102bc",15518:"01f85e94",15548:"c85f3e8d",15551:"435d1c4d",15559:"c4f618b0",15903:"aead02f2",16148:"4516fb34",16242:"ce714f60",16357:"d31bdf55",16373:"cdab75ae",16535:"fa95ef8b",16563:"4a53c189",16625:"0c1d26b0",16636:"616b0fcc",16741:"85cdeb5c",16776:"b63ded4e",16826:"7de7c78a",16871:"f55a50e4",17304:"a2b296d6",17385:"5f11bf56",17427:"d1c47609",17506:"64d6d6a4",17931:"5588494e",17961:"2cd36cb1",18066:"9e5549db",18133:"9531e3d5",18146:"0a015eaf",18247:"4accac9f",18249:"db1787f5",18252:"22f7d70a",18556:"14375c20",18693:"c1e93164",18770:"3ff5222c",18796:"936927f2",18807:"eac5786a",18830:"379afd5a",18840:"114d797b",18893:"c053f1fe",19091:"29147a52",19132:"aafcc3c5",19138:"53b8a640",19143:"16f04191",19149:"4c8b46df",19150:"bb3d3707",19158:"a2da59b9",19487:"634793c7",19682:"f6c86773",19689:"3dca7261",19703:"04adaa0a",19911:"1037aca6",19923:"e695f153",20197:"cf0b6b1a",20202:"0817a958",20358:"a2a66758",20390:"99cb2c7f",20406:"0212b0a1",20469:"3f40d88a",20538:"a8a2681e",20621:"ffda7608",20801:"b92fb0b1",21113:"7b61b645",21126:"1b9e34f9",21265:"426fa9e8",21704:"1fd7f735",22233:"44a66868",22468:"942ec673",22499:"d0579f76",22809:"08066dcd",22906:"63ba3f55",22991:"0005b960",23039:"bf5bef91",23139:"3d04d07b",23243:"48ff962a",23521:"d6525b1e",23661:"85b21b4e",23691:"93ff717b",23754:"b7a48f63",23900:"0bd7a16e",23928:"d45ad1df",24338:"58dab908",24350:"06708448",24433:"04bb4577",24499:"21dd5143",24515:"10b16085",24543:"62c37c78",24899:"7eb42da9",24983:"58fefaee",25054:"f1bcd822",25058:"0321718d",25279:"1880a98d",25520:"f94dad45",25634:"be7b1977",25690:"e66d5a74",25715:"b82e2bf6",25768:"c222bab3",25797:"7053da24",25855:"2f2a7c4e",25869:"d08c9e73",25912:"4fd020f4",25918:"13179b1b",26006:"8cccd0cb",26248:"f6251ed5",26262:"8f885a21",26295:"e83dc918",26365:"63703f01",26641:"0ae4243d",26756:"50804490",26818:"1c01664e",26985:"adff1d31",27e3:"7926e35a",27046:"df8c2669",27277:"7e6e40da",27291:"78e2b551",27431:"2d50059f",27833:"6dcb7d2c",27966:"41657306",27995:"c595a48e",28399:"bf098802",28477:"58d8964a",28581:"2f92c26a",28792:"e01df296",28802:"542586f4",28895:"30caa8b6",29042:"566dda46",29211:"92f0c901",29226:"f9daabb7",29341:"c36fa77c",29352:"284ab147",29396:"1178cae1",29409:"fe2238ee",29450:"9ce3da6c",29487:"664bcb7a",29532:"2ad4ef63",29786:"0182a200",29799:"7faba474",29875:"f9d1a39e",29911:"93ad04c3",30074:"3e2758e4",30105:"23ba12de",30170:"4b8cdba9",30261:"d2faa868",30347:"285783f2",30399:"f044f0cb",30468:"e8bb2aa7",30483:"702769eb",30531:"0ca893eb",30553:"81d88ce9",30621:"db242110",30758:"bfa9435c",30787:"5dbe432c",30826:"4f14c16c",30873:"79b2baee",30953:"fb5384c9",31363:"a8596b0a",31817:"eb0fd1c5",31938:"87ff5664",32009:"ce611e8c",32053:"12d4d5db",32320:"46718d5f",32405:"1d2238cf",32751:"991c0306",32921:"d65eb901",33e3:"98c31191",33121:"131aa3ce",33171:"af6cfc9a",33292:"e72083de",33506:"b533431c",33524:"0265bf16",33646:"fe4de5e1",33889:"13b091c6",33893:"f771184e",33945:"8ca0c21c",33977:"ac9eadaa",34057:"f986fb97",34059:"f8f202fd",34061:"f4bb57ea",34122:"2398bab8",34187:"1e25796a",34249:"f036a737",34345:"41173131",34357:"fef55a9a",34594:"4ab185f9",34692:"9352aa0a",34749:"8863f55a",34959:"fdabc7db",35254:"1089094d",35350:"903979ed",35357:"c9c28932",35487:"8ebb2775",35520:"1f02577e",35627:"c13856b4",35739:"c9754a88",35830:"6383d025",35831:"93148f2b",35914:"7e2b0641",35941:"14bd2ca8",36055:"513a1340",36165:"d94642fc",36311:"a833bc4b",36693:"6e55a8b6",36840:"965999dc",36874:"8961e252",36909:"d2a6bd75",37029:"8e430919",37101:"935cd583",37118:"139b1f13",37130:"777ace09",37206:"5ca67208",37332:"224fb9c6",37496:"c3238e4a",37553:"81ac9e28",37868:"40cad7bd",37992:"75e7ad31",38025:"8c7e30b7",38082:"5b598971",38122:"0c650b42",38207:"49d57cde",38242:"2123782f",38346:"b0146b63",38353:"b4225b80",38651:"f16d7c4c",38812:"56b7f39c",39046:"e7677b2f",39133:"e4121624",39311:"e0169aae",39654:"6b04917b",39659:"a0a008f8",39688:"ea0d955b",39693:"4956688d",39730:"57ff0f05",39787:"edc79088",39840:"68e81c57",39898:"1c9fda6e",40071:"b38e3bbf",40143:"92dc8fd0",40150:"cf33b150",40268:"06860b7b",40293:"71044a3c",40579:"edf880b9",40678:"32066dd8",40736:"d7418ad9",41568:"469c3917",41598:"057c0edf",41624:"7ad3c977",42084:"451d3cbc",42236:"0f110d20",42291:"74bb78ed",42334:"643ee9a4",42623:"0245132b",42641:"8e3fbdab",42927:"05b0d54d",43192:"2ab2cc81",43331:"e9b4f920",43401:"d82db417",43545:"582bdb91",43691:"f9c1741c",43694:"1a5d5426",43754:"0deb792c",43854:"908ed3a0",43860:"7efc0d8d",43901:"b8320037",44059:"64527e7e",44254:"a6c15a02",44404:"126c60f5",44411:"daa91ca4",44474:"8b9555f4",44667:"1034e45b",44720:"27f86641",45087:"c0fc8deb",45109:"5cac049d",45159:"ccadf5cc",45170:"83dff589",45381:"33f376f6",45418:"3b503f36",45526:"76226b4f",45567:"93cabd2f",45681:"d3f34f25",45682:"b09b2e0b",45716:"c07f0720",45784:"4546dff3",45789:"a20afc4f",45870:"3a3b5448",46112:"c0aebefe",46148:"46b480f9",46183:"cb98904d",46209:"761f7d05",46312:"7a33b601",46385:"7d72a08d",46426:"7450bde4",46513:"bdf6db57",46606:"dff1c0ef",46621:"1c8215da",46622:"1b29ead3",46629:"75a73abe",46723:"f04a48e0",46845:"5f384e8b",46957:"d111cecc",46982:"a17e28a7",46990:"8e6bb6fe",47052:"9a05790a",47059:"eed6a75c",47156:"ef4a7f55",47200:"899d1c3a",47442:"305cb410",47467:"8a939364",47477:"0568d117",47496:"4dc04a9e",47510:"71bb050d",47518:"02c15fe1",47724:"390fae76",47752:"8694f74e",47822:"7e5d0a20",47850:"2dee0ddf",48067:"7cf31e41",48088:"333e1675",48160:"5523f8f5",48196:"852b3e82",48205:"eac6a157",48206:"eb97d44b",48275:"04906634",48295:"73461503",48367:"5756209e",48415:"1a22b299",48540:"ba42bb4e",48721:"bd555b14",48724:"f0ddd5fb",48980:"c61b009c",49248:"f90a9b95",49316:"5a84bd6f",49444:"ceb6a28e",49603:"940b80c6",49611:"bbf2e512",49677:"b557748c",49825:"bd555ce4",49891:"07710054",49943:"0f34aea1",49974:"b2369f03",50160:"04614cdb",50208:"76a8cd80",50214:"8c92d949",50302:"67cf5ece",50425:"7fbab870",50446:"2926c10c",50552:"632b9176",50617:"d24c4622",50634:"ecc3eb59",50699:"f2550f12",50774:"f70465c5",50906:"29ff032e",50981:"584275e5",50999:"5d2a6a75",51022:"7850a1b0",51060:"0c949d34",51095:"a43b66b0",51560:"9880a980",51706:"bf2f1d61",51760:"d7375817",52024:"d61975d0",52052:"ee831319",52433:"7acce691",52502:"0769bdc9",52538:"ca0dc820",52670:"a15cdb48",52682:"a8692aa3",52725:"264d2184",53189:"ebc56018",53273:"a98120d9",53319:"d089ee1e",53344:"87f530d8",53392:"8897175a",53409:"1bb0bd2d",53693:"a0d142e9",53803:"543ab556",53860:"cefbaaa6",54009:"f50ab0c0",54067:"f8138aa3",54106:"f3340046",54169:"b688932f",54230:"854307ec",54254:"880fba8c",54314:"92bfe8bb",54410:"59c14252",54456:"6cc3b667",54464:"fa952fce",54570:"17fdd1f6",54634:"fd0496ad",54700:"a9a15b11",54855:"25f7638a",54882:"16b2589a",54903:"2edf9b7a",54944:"9cd6bbfb",55105:"f976d8f6",55196:"6d257912",55281:"8cd6f4f2",55321:"17ddd16e",55337:"85a5aefa",55596:"f24f167f",55802:"bb5e43fb",55872:"899695f9",55927:"7113cfc8",55940:"10be2261",55982:"87d4305c",56002:"fecd0fef",56065:"44ae956d",56098:"2dcac466",56180:"f518ea3a",56238:"e71d0aef",56537:"7e4e074f",56612:"d1335525",56786:"ea66ea93",56923:"ddc953c7",57101:"3a5b9de0",57113:"ca2bc1ed",57226:"01a40c18",57273:"e538148c",57367:"bf60e76f",57523:"b0202414",57548:"ea49f527",57563:"d4b232be",57797:"811727d6",57859:"b4401e8e",58314:"45695c64",58319:"211f1142",58418:"6303075e",58438:"4fa2c3a0",58493:"2b088793",58498:"08caf30c",58539:"17c47215",58581:"cae7413a",58952:"db8b95e5",59001:"e8ce9b3e",59068:"bfcddc59",59076:"035a1e24",59144:"08419905",59202:"0463095f",59263:"753593ec",59298:"ab9d2f03",59432:"536359ac",59560:"b7e1d387",60286:"a3ea7fc9",60323:"8c4c0158",60338:"af891629",60374:"45dd52ff",60436:"8af26fb4",60466:"a72157c6",60489:"6b2db593",60504:"b61e3e25",60817:"6f256ed2",60909:"42927ce5",60920:"92b8bdf1",60957:"4151f511",61087:"95d77207",61253:"943a37da",61319:"e668a9d5",61322:"9b827f96",61422:"3456c86c",61485:"97dc6c3c",61594:"84024ff0",61925:"66fcf76e",61975:"22508620",62009:"902f2a4b",62011:"779631e4",62019:"666169f7",62317:"bf99c878",62376:"bc9e45d2",62463:"222d7211",62496:"adc9cfd3",62530:"1b76d7a0",62741:"6f674e1d",62966:"c4995405",63118:"42afc341",63282:"01e62059",63320:"8da4a068",63485:"23ad1df3",63669:"a182b5ab",63772:"347fb603",63776:"99352aa2",63799:"8ee190db",63896:"366181d0",63927:"b9358e40",63939:"ff6918a7",64099:"415cc06e",64127:"bcafd01a",64144:"35368257",64531:"ee095123",64550:"ce2025b2",64564:"78c9cfc7",64630:"3d72cab2",64647:"3114eaaa",64693:"143bcaeb",64884:"5922010e",64990:"2a2461b0",65041:"5392950a",65149:"f2aa2887",65274:"f75e5078",65276:"07941c91",65423:"d5bd1451",65437:"fb29e1e7",65604:"9c92dd34",65696:"789c46af",65821:"5a01ee04",65970:"eaaec92c",66011:"c230454f",66305:"55e8c6cd",66487:"88726739",66721:"1e26ce4d",66933:"abee58f4",67040:"21ef55cb",67050:"ce24611b",67052:"92569ff1",67103:"c7feeb2a",67142:"8bc2ec6f",67309:"a86a4206",67542:"27d86346",67614:"a24974c6",67630:"ff4fd574",67653:"b16b5d6c",67710:"e7f9c6b5",67717:"7f09747b",67763:"e76a2e47",68016:"05765777",68194:"602e5533",68358:"766f1011",68481:"8288ba8e",68562:"93e6bfa2",68572:"54c0b535",68602:"00d0b33f",68679:"79580a52",68758:"052b87fe",68768:"7b7c5801",68804:"2a7d1499",68820:"4c6a8a16",68894:"fcd48c20",68931:"26b0dd86",69072:"51eb7c0b",69080:"0b084e0c",69197:"9371c008",69205:"8a5dd1b3",69327:"cdc92000",69332:"723ae899",69377:"3114287b",69450:"ea275762",69491:"ac513a19",69676:"fb4f68e5",69709:"8508e6d0",69743:"8898f812",70077:"c42e2387",70199:"9fe4d774",70282:"c32ec083",70302:"b42d856e",70354:"c2539ad9",70408:"65c47310",70488:"b4a5d2e4",70489:"006860b7",70547:"e5510be9",70600:"3578e83d",70728:"2c11884a",70839:"001924ba",71003:"45b9dd42",71028:"9bbcc9b8",71032:"674b943a",71059:"bd2f61df",71250:"b3882591",71371:"fab8bb86",71409:"21ebe270",71585:"2419dda5",71879:"79e8d67b",71892:"64abfa1c",71930:"dbcedecc",72003:"94322c86",72025:"6272f3e9",72082:"e79573f2",72348:"b19a515a",72429:"e22f1dfe",72445:"3cf281f8",72631:"7695e75b",72747:"b570202a",72841:"52f94cb8",72924:"d3f02747",73035:"22831ea2",73192:"88dbe08e",73237:"a3dc9fa6",73239:"fe65e124",73377:"046b469f",73399:"ec9b677a",73489:"235b64a0",73492:"95c3cab4",73656:"b70e2e0e",73658:"c1cda82c",73863:"3be326d9",73871:"c25b6d14",73890:"2b287b9c",73892:"f8479457",74097:"d17cfd0f",74318:"66867862",74435:"1394855d",74487:"4bd2fcb8",74488:"37f0664d",74506:"a0b27124",74544:"8e44af7a",74563:"c9ee87bd",74767:"cb77981c",74816:"542c97fa",74947:"0fc06cd4",74990:"8a8ccd65",75007:"b05a8b84",75146:"fb7ea9b5",75231:"fb8fef25",75290:"1920c97f",75458:"2f08f423",75582:"a2e26ec0",75618:"0928fdba",75817:"fa22e156",76042:"4935997e",76118:"40eae013",76123:"a82ac8b5",76159:"49678830",76273:"d0b51a80",76341:"caedbd30",76596:"92047dba",76623:"2ce1606b",76671:"64ecc127",76694:"da0e0776",76831:"93398b3d",76924:"f61d87c2",76946:"08cac993",77074:"a9702bcf",77109:"82125fd7",77305:"130aac62",77387:"95a76d0d",77452:"94de5171",77533:"fda8789a",77573:"22576430",77649:"df43769e",77690:"1c54064a",77746:"75e94367",77779:"acbaf983",77881:"bff8eaba",77908:"5d4c9b80",77989:"aeb341e0",78106:"a5a7d704",78118:"36a67a20",78179:"22bb2f09",78275:"dc145a63",78371:"68811bca",78566:"23a0e3ea",78596:"aab65c1e",78609:"5b467664",78688:"42eb3cd3",78702:"1670b2a1",78768:"73a91089",78880:"4037eacd",78927:"999e7e78",79174:"27004e83",79240:"994dd52b",79370:"450288e5",79580:"5c25b272",79882:"bcf0efad",79983:"c9d8d8af",80152:"a6e70b33",80224:"a6509ddf",80313:"ca625ddd",80413:"e9176db6",80461:"fa912eaa",80496:"926ce9fb",80551:"65822d01",80654:"0e8fe510",80685:"41e2f8fe",80752:"577ebdc1",80790:"24b8a8aa",80882:"3201f39c",80940:"830024f8",80961:"e4c1e063",81009:"fa664299",81065:"bb3277ec",81316:"5237e23a",81538:"53916b09",81656:"65c2525e",81715:"1b3c4b16",81923:"63ebd1d7",81987:"fe551a52",82125:"0b693428",82149:"ba64a3ac",82173:"5489f63d",82215:"d681f836",82329:"870b1514",82544:"808d9e2b",82581:"8c9888c8",82596:"a7a3bf7f",82674:"25f3a9da",82880:"03ab87db",82962:"04525152",83007:"f8bb81d7",83011:"1918a652",83069:"131fca85",83169:"d7783aed",83228:"eed85a0d",83300:"4cbc87cd",83706:"d911ce32",83783:"046c979c",83833:"c885cb30",83840:"06b505d1",83884:"7c57d08d",83902:"fc0aa6f6",83999:"88fc0bf6",84056:"a04170bb",84114:"a3fc8ec5",84119:"5b0c73f8",84188:"8a38dc2c",84314:"b105a00a",84459:"4c0cf0f9",84722:"30bedeb0",84769:"6de9357f",84945:"280c2175",85089:"10a23247",85109:"adb8df13",85144:"6ce4b68c",85202:"8697a15a",85354:"e39806dc",85530:"3916c600",85570:"c93375a2",85727:"4e2c40f3",85732:"8e6e218b",85745:"f02729f5",85947:"31cd8513",85966:"7d3d8b08",86002:"595ec3f1",86010:"88644805",86016:"9c8e4b1a",86105:"56b2ab08",86310:"effa289c",86324:"5928d492",86338:"3180799d",86348:"afa0fe9b",86406:"d67628ad",86492:"66c59264",86653:"14f84c99",86725:"e4cb0b5d",87005:"3e93d3a0",87093:"5dd0b17b",87111:"d708c5a6",87493:"a0b56ff1",87603:"000715b7",87632:"5d45ca15",87719:"f2e4d5cd",87815:"a6bc9d05",87833:"768be9f0",87855:"59ae7ab8",87963:"bb10ae22",88005:"0c5ce093",88065:"3a057f20",88092:"ef6e7a50",88199:"81892647",88256:"cbe748e5",88341:"1f89855c",88383:"2df99eac",88463:"75f59f15",88525:"dfe514db",88529:"722bd5ea",88721:"331b8e1b",88822:"ccd263ef",88895:"13db030b",89073:"0ddc7983",89077:"d288abf4",89107:"d8f1260d",89209:"50aad5d4",89287:"e9ad0428",89534:"7558a33b",89989:"6a2ed8d5",90116:"93941d21",90126:"c29aa73b",90229:"d4a740f5",90455:"ca9e5968",90503:"81af2ad3",90522:"7d7f5083",90736:"4bbf99b3",90851:"91741bd3",91010:"82cc88cd",91082:"e9b0cdd0",91242:"4734b60f",91306:"b6e9d7ac",91315:"90ae8309",91590:"1f39d8d7",91613:"17a7f122",91676:"ae4e0b49",91741:"39b77cdb",91791:"c6721774",91796:"5f719213",91802:"ac8c0002",91873:"e99e50e1",91876:"ff6915f8",92019:"30d911e7",92115:"db64261a",92266:"8c4c0723",92368:"5f9610e7",92556:"3101404c",92693:"0c11ddbc",92722:"7b7bbd07",92919:"1c440a5f",92957:"cf7d97fa",93065:"58c04e94",93096:"54662c96",93142:"a6015bd7",93220:"dde0b00a",93330:"a5588522",93338:"3e2b7cba",93395:"9d3b8d0c",93428:"3fb14281",93555:"7a5640cd",93797:"fa1a77f0",93903:"3da4661c",93946:"a42e9786",93969:"9c25b575",93989:"632f0c9c",93998:"d07b3cdc",94154:"adfe31af",94210:"6f964c1b",94220:"4c0ee2af",94252:"25a883ad",94350:"f9ef99cf",94385:"99a92081",94388:"eccc256b",94406:"86ba31b1",94466:"b5e07591",94589:"e722df7f",94717:"bd44c479",94725:"8fa73684",94783:"647c6738",94847:"477c637e",94888:"6c63b87b",95059:"1580767d",95187:"7a61777a",95319:"3acc1297",95387:"853d3cf3",95537:"411327cd",95565:"5029cf66",95724:"8d94c718",95805:"e1904420",95828:"fb22862f",95989:"cda149e8",96023:"1b9cc26e",96257:"adf114bb",96316:"77bf5789",96393:"80aafd3c",96617:"b4914af6",96685:"1ed25bc3",96793:"18434612",96817:"0d61d13e",96827:"fa6a883b",96914:"bd465220",96939:"d7179f89",96953:"a7a89ffe",96984:"03f18cec",97098:"05578c8d",97180:"f541ba79",97213:"115fbef7",97296:"960c906f",97569:"7fab11a7",97694:"52eb9d70",97770:"a39caa67",97884:"60dff7ff",97940:"856ff912",98137:"97c872c9",98205:"c5e54419",98507:"3eed37a3",98571:"0364d009",98672:"be7ba2cc",98690:"c1c92893",98698:"bebb75c1",98727:"1d66ab82",98798:"354edcfe",98889:"caa0db45",98980:"44029391",99032:"0917bd9f",99153:"74b793f8",99157:"2dcc4141",99182:"8d89042c",99339:"cb774960",99435:"31e95e84",99517:"6a2a9e44",99670:"65b88b2f",99736:"39d5f81b",99740:"29556f75",99763:"5ae2782c",99806:"7d58b29e",99979:"a3c83a58"}[_]+".async.js"}}(),function(){__webpack_require__.miniCssF=function(_){return""+({171:"docs__en-US__handbook__workflow__triggers__schedule.md",489:"docs__en-US__breaking-changes__index.md",565:"docs__en-US__handbook__workflow-loop__index.md",581:"docs__en-US__manual__ui__fields__association-components__summary__index.md",701:"docs__en-US__development__http-api__index.md",876:"docs__en-US__manual__mobile__development__frontend.md",989:"docs__en-US__handbook__data-visualization__antd-charts__scatter.md",1020:"docs__en-US__handbook__auth-ldap__index.md",1131:"docs__en-US__plugins__collection-manager__user__collection-templates__general__index.md",1265:"docs__en-US__handbook__data-visualization__user__configure.md",1327:"docs__en-US__plugin-samples__schema-initializer__block-simple.md",1436:"docs__en-US__handbook__ui__fields__specific__picker.md",1565:"docs__en-US__handbook__ui__blocks__other-blocks__markdown.md",1813:"docs__en-US__handbook__workflow-custom-action-trigger__trigger.md",2016:"docs__en-US__welcome__release__formulas.md",2366:"docs__en-US__plugins__workflow-form-trigger__index.md",2451:"docs__en-US__plugin-samples__router__add-page__index.md",2483:"docs__en-US__development__server__collections__association-fields.md",2491:"docs__en-US__handbook__plugin-manager__index.md",2496:"docs__en-US__plugins__client__user__ui-designer__actions__edit.md",2534:"docs__en-US__plugins__map__index.md",2563:"docs__en-US__handbook__client__user__ui-designer__actions__view.md",2707:"docs__en-US__handbook__ui__actions__types__add-new.md",2718:"docs__en-US__handbook__field-formula__index.md",2782:"docs__en-US__plugins__collection-manager__user__association-fields__summary__index.md",2805:"docs__en-US__development__others__testing.md",2843:"docs__en-US__manual__workflow__index.md",2858:"docs__en-US__api__telemetry__telemetry.md",3122:"docs__en-US__manual__collection__fields__media.md",3143:"docs__en-US__welcome__release__roadmap.md",3214:"docs__en-US__handbook__file-manager__storage__aliyun-oss.md",3282:"docs__en-US__handbook__workflow__nodes__approval.md",3303:"docs__en-US__plugin-samples__router__index.md",3389:"docs__en-US__handbook__data-visualization__faq.md",3395:"docs__en-US__manual__ui__actions__open-popup.md",3820:"docs__en-US__plugins__collection-manager__user__association-fields__sub-table__index.md",3826:"docs__en-US__handbook__data-modeling__collection-fields__associations__m2m__index.md",3944:"docs__en-US__handbook__client__user__ui-designer__blocks__index.md",3966:"docs__en-US__manual__workflow__nodes__delay.md",4230:"docs__en-US__plugins__graph-collection-manager__index.md",4366:"docs__en-US__api__data-source-manager__data-source.md",4374:"docs__en-US__plugins__client__user__ui-designer__actions__submit-to-workflow.md",4384:"docs__en-US__plugins__client__user__index.md",4840:"docs__en-US__plugins__workflow__manual__nodes__loop.md",5102:"docs__en-US__handbook__workflow__nodes__create.md",5216:"docs__en-US__plugins__workflow-loop__index.md",5263:"docs__en-US__plugins__workflow-delay__index.md",5810:"docs__en-US__plugin-samples__component-and-scope__global.md",5822:"docs__en-US__plugins__collection-manager__user__association-fields__sub-form__index.md",5939:"docs__en-US__handbook__collection-fdw__enable-federated.md",6006:"docs__en-US__handbook__action-import__index.md",6163:"docs__en-US__manual__data-visualization__chart-block.md",6275:"docs__en-US__plugin-samples__component-and-scope__local.md",6319:"docs__en-US__plugins__verification__index.md",6327:"docs__en-US__plugins__workflow__index.md",6346:"docs__en-US__manual__plugin-manager__plugin-settings__index.md",6375:"docs__en-US__api__logger.md",6780:"docs__en-US__api__client__schema-designer__schema-initializer.md",6859:"docs__en-US__handbook__ui__fields__field-settings__style.md",6885:"docs__en-US__handbook__ui__blocks__data-blocks__form.md",6893:"docs__en-US__api__resourcer__action.md",6931:"docs__en-US__manual__workflow__nodes__loop.md",7027:"docs__en-US__manual__data-visualization__filter.md",7443:"docs__en-US__handbook__file-manager__storage__tencent-cos.md",7535:"docs__en-US__handbook__client__user__ui-designer__actions__open-popup.md",7692:"docs__en-US__handbook__client__user__ui-designer__fields__index.md",8570:"docs__en-US__plugin-samples__plugin-settings__form.md",8602:"docs__en-US__api__server__sync-message-manager.md",8757:"docs__en-US__handbook__data-visualization__index.md",8777:"docs__en-US__welcome__release__v0170-changelog.md",8804:"docs__en-US__handbook__data-modeling__collection-fields__basic__integer.md",8879:"docs__en-US__plugins__theme-editor__index.md",9120:"docs__en-US__plugins__collection-manager__user__collection-templates__tree__index.md",9161:"docs__en-US__handbook__backups__installation__postgres.md",9258:"docs__en-US__welcome__community__faq.md",9385:"docs__en-US__welcome__getting-started__upgrading__create-nocobase-app.md",9388:"docs__en-US__welcome__release__v0070-changelog.md",9420:"docs__en-US__api__auth__auth.md",9547:"docs__en-US__handbook__data-modeling__collection-fields__basic__percent.md",9584:"docs__en-US__plugins__import__index.md",9677:"docs__en-US__handbook__data-modeling__collection-fields__basic__url.md",9695:"docs__en-US__handbook__ui__actions__types__edit.md",9714:"docs__en-US__development__client__test.md",9746:"docs__en-US__api__test__e2e.md",9909:"docs__en-US__manual__workflow__nodes__destroy.md",9931:"docs__en-US__manual__core-concepts__a-b-c.md",10145:"docs__en-US__plugin-samples__schema-initializer__action-modal.md",10264:"docs__en-US__development__server__routing.md",10385:"docs__en-US__plugins__collection-manager__user__collection-templates__file__index.md",10414:"docs__en-US__plugins__collection-manager__user__collection-templates__sql__index.md",10581:"docs__en-US__handbook__file-manager__storage__amazon-s3.md",10607:"docs__en-US__api__acl__acl.md",10883:"docs__en-US__handbook__auth-saml__example__google.md",10905:"docs__en-US__plugins__ui-schema-storage__index.md",10986:"docs__en-US__handbook__users__index.md",11109:"docs__en-US__plugins__workflow__manual__nodes__sql.md",11150:"docs__en-US__development__http-api__action-api.md",11285:"docs__en-US__handbook__graph-collection-manager__index.md",11357:"docs__en-US__handbook__data-visualization__echarts__pie.md",11413:"docs__en-US__welcome__getting-started__upgrading__git-clone.md",11622:"docs__en-US__handbook__workflow-custom-action-trigger__example.md",11902:"docs__en-US__handbook__calendar__calendar-collection.md",11922:"docs__en-US__handbook__collection-view__index.md",11924:"docs__en-US__plugins__formula-field__index.md",11995:"docs__en-US__handbook__workflow-dynamic-calculation__node.md",12046:"docs__en-US__development__client__ui-schema__components.md",12102:"docs__en-US__welcome__release__v0190-changelog.md",12150:"docs__en-US__welcome__release__v0091-changelog.md",12174:"docs__en-US__development__others__deps.md",12224:"docs__en-US__api__data-source-manager__i-repository.md",12300:"docs__en-US__api__telemetry__metric.md",12435:"docs__en-US__handbook__users__field-created-by.md",12447:"docs__en-US__handbook__ui__fields__field-settings__field-component.md",12497:"docs__en-US__handbook__data-visualization__echarts__line.md",12546:"docs__en-US__welcome__release__20240519-changelog.md",12572:"docs__en-US__manual__collection__collection-templates__tree__index.md",12623:"docs__en-US__handbook__workflow__triggers__approval.md",12684:"docs__en-US__handbook__data-modeling__collection.md",12739:"docs__en-US__handbook__collection-fdw__index.md",12748:"docs__en-US__handbook__data-modeling__collection-fields__choices__select.md",12822:"docs__en-US__handbook__ui__actions__types__filter.md",13026:"docs__en-US__handbook__ui__fields__field-settings__edit-description.md",13214:"docs__en-US__api__server__plugin-manager.md",13224:"docs__en-US__api__cache__cache.md",13225:"docs__en-US__handbook__ui__fields__generic__filter-form-item.md",13303:"docs__en-US__plugins__client__user__ui-designer__actions__update-record.md",13472:"docs__en-US__manual__collection__fields__map.md",13573:"docs__en-US__api__client__application.md",13750:"docs__en-US__handbook__workflow__nodes__request.md",13918:"docs__en-US__plugins__workflow__manual__index.md",14007:"docs__en-US__plugins__collection-manager__user__collection-templates__expression__index.md",14137:"docs__en-US__handbook__ui__blocks__other-blocks__workflow-approval.md",14156:"docs__en-US__manual__localization-management__index.md",14370:"docs__en-US__handbook__embed__index.md",14377:"docs__en-US__welcome__release__inherits.md",14442:"docs__en-US__plugins__workflow__manual__nodes__request.md",14476:"docs__en-US__api__client__extensions__collection-manager.md",14490:"docs__en-US__handbook__collection-tree__index.md",14651:"docs__en-US__manual__plugin-manager__plugin-manager__index.md",14707:"docs__en-US__development__server__migration.md",14816:"docs__en-US__development__client__router.md",15051:"docs__en-US__handbook__api-keys__index.md",15089:"docs__en-US__handbook__workflow-json-query__index.md",15105:"docs__en-US__development__server__middleware.md",15173:"docs__en-US__manual__ui__actions__custom-request.md",15309:"docs__en-US__handbook__data-visualization__echarts__radar.md",15491:"docs__en-US__plugin-samples__schema-initializer__block-data.md",15518:"docs__en-US__handbook__data-modeling__collection-fields__geometric__line.md",15548:"docs__en-US__handbook__data-modeling__collection-fields__system-info__created-at.md",15559:"docs__en-US__welcome__release__v0074-changelog.md",16242:"docs__en-US__handbook__field-china-region__index.md",16357:"docs__en-US__handbook__file-manager__development__index.md",16373:"docs__en-US__handbook__workflow__nodes__sql.md",16535:"docs__en-US__plugins__workflow__manual__triggers__collection.md",16563:"docs__en-US__handbook__file-storage-oss__index.md",16625:"docs__en-US__manual__collection__collection-templates__expression__index.md",16741:"docs__en-US__manual__collection__fields__system.md",16776:"docs__en-US__welcome__community__contributing.md",16826:"docs__en-US__api__handlebars-helpers__array.md",16871:"docs__en-US__manual__ui__actions__export.md",17304:"docs__en-US__manual__core-concepts__containers.md",17385:"docs__en-US__api__data-source-manager__i-collection.md",17506:"docs__en-US__handbook__system-settings__index.md",17931:"docs__en-US__handbook__workflow__nodes__index.md",17961:"docs__en-US__plugins__action-bulk-edit__index.md",18133:"docs__en-US__handbook__workflow-custom-action-trigger__index.md",18247:"docs__en-US__plugins__collection-manager__user__association-fields__sub-form(popover)__index.md",18249:"docs__en-US__plugins__collection-manager__index.md",18252:"docs__en-US__api__handlebars-helpers__path.md",18556:"docs__en-US__handbook__mobile-client__index.md",18693:"docs__en-US__welcome__changelog__20240519.md",18770:"docs__en-US__handbook__ui__variables.md",18796:"docs__en-US__plugins__oidc__index.md",18807:"docs__en-US__handbook__ui__blocks__data-blocks__details.md",18830:"docs__en-US__handbook__auth__dev__api.md",18840:"docs__en-US__handbook__workflow-dynamic-calculation__index.md",18893:"docs__en-US__plugin-samples__schema-initailizer__index.md",19138:"docs__en-US__handbook__ui__fields__field-settings__required.md",19143:"docs__en-US__api__database__field.md",19150:"docs__en-US__plugins__localization-management__index.md",19158:"docs__en-US__plugin-samples__schema-settings__new.md",19689:"docs__en-US__handbook__ui__blocks__block-settings__block-title.md",19703:"docs__en-US__welcome__getting-started__installation__create-nocobase-app.md",19923:"docs__en-US__handbook__file-manager__storage__local.md",20197:"docs__en-US__api__handlebars-helpers__regex.md",20202:"docs__en-US__handbook__data-modeling__collection-fields__basic__input.md",20358:"docs__en-US__handbook__ui__fields__field-settings__validation-rules.md",20390:"docs__en-US__handbook__data-modeling__collection-fields__advanced__collection-select.md",20406:"docs__en-US__handbook__collection-sql__index.md",20469:"docs__en-US__plugins__workflow-approval__index.md",20538:"docs__en-US__development__server__resources-actions-v2__configuration.md",20621:"docs__en-US__welcome__getting-started__plugin.md",20801:"docs__en-US__manual__collection__fields__advanced.md",21126:"docs__en-US__handbook__data-modeling__collection-fields__datetime__index.md",21265:"docs__en-US__api__index.md",21704:"docs__en-US__handbook__ui__fields__field-settings__number-format.md",22233:"docs__en-US__development__client__ui-schema__settings.md",22468:"docs__en-US__manual__workflow__start.md",22499:"docs__en-US__manual__workflow__nodes__parallel.md",22809:"docs__en-US__plugins__client__user__plugin-manager__index.md",22906:"docs__en-US__api__resourcer__middleware.md",22991:"docs__en-US__api__database__shared__transaction.md",23039:"docs__en-US__handbook__workflow__development__api.md",23139:"docs__en-US__handbook__workflow__triggers__pre-action.md",23243:"docs__en-US__api__database__shared__create-options.md",23661:"docs__en-US__handbook__field-markdown-vditor__index.md",23691:"docs__en-US__api__handlebars-helpers__string.md",23754:"docs__en-US__manual__ui__fields__association-components__title__index.md",23900:"docs__en-US__handbook__auth__index.md",23928:"docs__en-US__api__telemetry__trace.md",24338:"docs__en-US__handbook__action-import-pro__index.md",24350:"docs__en-US__api__handlebars-helpers__index.md",24433:"docs__en-US__handbook__ui__fields__specific__cascade-select.md",24499:"docs__en-US__plugin-samples__router__add-setting-page-layout-routes__index.md",24515:"docs__en-US__development__server__telemetry.md",24543:"docs__en-US__plugins__backup-restore__index.md",24899:"docs__en-US__manual__collection__collection-fdw__enable-federated.md",24983:"docs__en-US__welcome__release__v0075-changelog.md",25058:"docs__en-US__welcome__release__tree-collection.md",25279:"docs__en-US__handbook__workflow__index.md",25520:"docs__en-US__development__server__events.md",25634:"docs__en-US__plugins__logger__index.md",25690:"docs__en-US__development__others__build.md",25768:"docs__en-US__plugin-samples__schema-initializer__configure-actions.md",25797:"docs__en-US__manual__collection__fields__relation.md",25855:"docs__en-US__handbook__workflow-request-interceptor__action.md",25869:"docs__en-US__handbook__file-storage-s3__index.md",25912:"docs__en-US__api__auth__auth-manager.md",25918:"docs__en-US__manual__workflow__triggers__form.md",26006:"docs__en-US__handbook__audit-logs__index.md",26248:"docs__en-US__welcome__getting-started__deployment__docker-compose.md",26262:"docs__en-US__plugins__workflow__manual__nodes__delay.md",26295:"docs__en-US__api__server__migration.md",26365:"docs__en-US__development__client__i18n.md",26641:"docs__en-US__development__server__resources-actions.md",26756:"docs__en-US__welcome__changelog__0-template.md",26818:"docs__en-US__plugins__custom-request__index.md",27e3:"docs__en-US__api__http__rest-api.md",27046:"docs__en-US__handbook__auth__user__index.md",27277:"docs__en-US__handbook__action-bulk-update__index.md",27291:"docs__en-US__plugins__workflow__development__api.md",27431:"docs__en-US__manual__ui__actions__import.md",27833:"docs__en-US__handbook__ui__blocks__data-blocks__list.md",27966:"docs__en-US__welcome__release__v0060-changelog.md",27995:"docs__en-US__plugin-samples__index.md",28399:"docs__en-US__handbook__data-visualization__echarts__bar.md",28581:"docs__en-US__handbook__data-modeling__collection-fields__basic__color.md",28802:"docs__en-US__handbook__data-source-external-mysql__index.md",28895:"docs__en-US__handbook__file-manager__storage__index.md",29042:"docs__en-US__welcome__getting-started__deployment__env-note.md",29211:"docs__en-US__manual__collection__inherit.md",29226:"docs__en-US__handbook__workflow__nodes__condition.md",29341:"docs__en-US__manual__collection__fields__basic.md",29352:"docs__en-US__plugin-samples__field__without-value.md",29396:"docs__en-US__handbook__data-modeling__collection-fields__choices__multiple-select.md",29409:"docs__en-US__handbook__app-switching__index.md",29450:"docs__en-US__handbook__data-visualization__block-charts.md",29487:"docs__en-US__manual__core-concepts__blocks.md",29532:"docs__en-US__handbook__ui__fields__field-settings__display-title.md",29786:"docs__en-US__manual__collection__collection-templates__calender__index.md",29875:"docs__en-US__handbook__workflow__quick-start.md",30074:"docs__en-US__handbook__data-modeling__collection-fields__datetime__datetime.md",30105:"docs__en-US__handbook__workflow__triggers__collection.md",30170:"docs__en-US__handbook__data-modeling__collection-fields__associations__o2m__index.md",30347:"docs__en-US__plugins__action-duplicate__index.md",30399:"docs__en-US__manual__file-manager__amazon-s3.md",30468:"docs__en-US__manual__ui__menus__index.md",30483:"docs__en-US__welcome__release__v0120-changelog.md",30531:"docs__en-US__plugins__acl__index.md",30553:"docs__en-US__plugins__client__user__ui-designer__actions__custom-request.md",30621:"docs__en-US__handbook__data-visualization__antd-charts__bar.md",30787:"docs__en-US__manual__collection__management.md",30826:"docs__en-US__handbook__ui__actions__action-settings__linkage-rule.md",30873:"docs__en-US__plugins__users__index.md",30953:"docs__en-US__handbook__ui__ui-editor__index.md",31363:"docs__en-US__manual__ui__fields__association-components__index.md",31817:"docs__en-US__handbook__workflow-approval__block.md",31938:"docs__en-US__development__server__commands.md",32053:"docs__en-US__plugins__sms-auth__index.md",32320:"docs__en-US__handbook__data-modeling__collection-fields__media__field-attachment.md",32405:"docs__en-US__handbook__ui__blocks__other-blocks__workflow-manual-todos.md",32751:"docs__en-US__api__handlebars-helpers__i18n.md",33e3:"docs__en-US__api__handlebars-helpers__math.md",33121:"docs__en-US__manual__ui__index.md",33171:"docs__en-US__handbook__auth-dingtalk__index.md",33292:"docs__en-US__handbook__ui__fields__specific__tag.md",33506:"docs__en-US__handbook__data-modeling__collection-fields__choices__checkbox.md",33524:"docs__en-US__plugins__workflow__manual__nodes__update.md",33893:"docs__en-US__handbook__ui__actions__types__refresh.md",33945:"docs__en-US__handbook__client__user__index.md",33977:"docs__en-US__handbook__workflow-date-calculation__index.md",34057:"docs__en-US__handbook__block-tree__index.md",34059:"docs__en-US__handbook__auth-cas__index.md",34061:"docs__en-US__breaking-changes__v0-18-0-alpha-1.md",34122:"docs__en-US__development__client__api-client.md",34187:"docs__en-US__manual__backup-restore__index.md",34249:"docs__en-US__plugins__data-visualization__index.md",34345:"docs__en-US__handbook__workflow__development__instruction.md",34357:"docs__en-US__handbook__workflow-action-trigger__http-api.md",34594:"docs__en-US__manual__ui__fields__association-components__sub-form__index.md",34692:"docs__en-US__handbook__workflow__nodes__variable.md",34749:"docs__en-US__handbook__ui__fields__index.md",34959:"docs__en-US__handbook__workflow__advanced__revisions.md",35350:"docs__en-US__plugins__collection-manager__user__association-fields__tag__index.md",35357:"docs__en-US__plugins__collection-manager__user__field-interfaces__index.md",35487:"docs__en-US__development__client__life-cycle.md",35520:"docs__en-US__plugins__data-visualization__user__configure.md",35739:"docs__en-US__handbook__workflow-sql__index.md",35830:"docs__en-US__handbook__workflow-parallel__index.md",35831:"docs__en-US__handbook__data-source-kingbase__index.md",36055:"docs__en-US__plugins__sequence-field__index.md",36311:"docs__en-US__handbook__workflow__nodes__dynamic-calculation.md",36693:"docs__en-US__handbook__ui__actions__action-settings__popup-size.md",36840:"docs__en-US__handbook__ui__pages__index.md",36874:"docs__en-US__development__index.md",36909:"docs__en-US__welcome__release__v0071-changelog.md",37029:"docs__en-US__api__test__client.md",37130:"docs__en-US__handbook__data-modeling__collection-fields__basic__phone.md",37206:"docs__en-US__development__client__index.md",37332:"docs__en-US__handbook__ui__fields__specific__sub-detail.md",37868:"docs__en-US__manual__ui__actions__update-record.md",37992:"docs__en-US__handbook__workflow__nodes__aggregate.md",38025:"docs__en-US__plugins__workflow__manual__advanced.md",38082:"docs__en-US__handbook__workflow__triggers__post-action.md",38122:"docs__en-US__breaking-changes__v0-17-0-alpha-3.md",38207:"docs__en-US__handbook__data-modeling__collection-fields__choices__radio-group.md",38346:"docs__en-US__plugins__workflow-sql__index.md",38353:"docs__en-US__handbook__data-visualization__echarts__treemap.md",38651:"docs__en-US__handbook__workflow-dynamic-calculation__collection.md",38812:"docs__en-US__handbook__backups__installation__mysql.md",39046:"docs__en-US__breaking-changes__v0-17-0-alpha-5.md",39133:"docs__en-US__handbook__ui__blocks__index.md",39311:"docs__en-US__plugins__data-visualization__user__filter.md",39654:"docs__en-US__handbook__field-sort__index.md",39659:"docs__en-US__welcome__getting-started__deployment__git-clone.md",39688:"docs__en-US__handbook__notification-manager__index.md",39693:"docs__en-US__components.md",39730:"docs__en-US__manual__core-concepts__actions.md",39787:"docs__en-US__handbook__client__user__ui-designer__actions__submit-to-workflow.md",39840:"docs__en-US__plugins__audit-logs__index.md",39898:"docs__en-US__welcome__introduction__features.md",40143:"docs__en-US__handbook__data-source-main__general-collection.md",40150:"docs__en-US__plugins__collection-manager__user__association-fields__select__index.md",40268:"docs__en-US__plugins__workflow__manual__nodes__index.md",40293:"docs__en-US__handbook__ui__actions__types__view.md",40678:"docs__en-US__handbook__data-modeling__collection-fields__media__rich-text.md",40736:"docs__en-US__plugins__china-region__index.md",41568:"docs__en-US__handbook__notification-in-app-message__index.md",41598:"docs__en-US__handbook__block-kanban__index.md",41624:"docs__en-US__development__server__index.md",42084:"docs__en-US__welcome__release__collection-templates.md",42236:"docs__en-US__welcome__release__v0080-changelog.md",42291:"docs__en-US__plugins__collection-manager__user__association-fields__cascade-select__index.md",42334:"docs__en-US__handbook__workflow-request-interceptor__index.md",42623:"docs__en-US__handbook__ui__fields__specific__title.md",42927:"docs__en-US__manual__blocks-guide__charts.md",43192:"docs__en-US__api__database__shared__find-one.md",43331:"docs__en-US__handbook__data-modeling__index.md",43401:"docs__en-US__handbook__ui__blocks__block-settings__linkage-rule.md",43545:"docs__en-US__manual__file-manager__aliyun-oss.md",43691:"docs__en-US__handbook__field-snapshot__index.md",43694:"docs__en-US__welcome__introduction__index.md",43754:"docs__en-US__plugin-samples__schema-initailizer__add-item-to-block.md",43854:"docs__en-US__handbook__workflow-manual__index.md",43860:"docs__en-US__handbook__client__user__ui-designer__actions__duplicate.md",44059:"docs__en-US__handbook__workflow-custom-action-trigger__action.md",44254:"docs__en-US__welcome__release__v0140-changelog.md",44404:"docs__en-US__manual__collection__collection-templates__index.md",44411:"docs__en-US__api__test__server.md",44474:"docs__en-US__plugins__api-doc__index.md",44667:"docs__en-US__plugins__cas__index.md",44720:"docs__en-US__handbook__data-modeling__collection-fields__advanced__json.md",45087:"docs__en-US__manual__ui__fields__association-components__file-manager__index.md",45109:"docs__en-US__manual__collection__collection-templates__general__index.md",45170:"docs__en-US__handbook__notification-manager__development__api.md",45381:"docs__en-US__plugins__workflow__manual__nodes__dynamic-calculation.md",45526:"docs__en-US__development__server__i18n.md",45681:"docs__en-US__plugins__workflow__manual__triggers__index.md",45682:"docs__en-US__handbook__client__user__ui-designer__actions__add-new.md",45716:"docs__en-US__development__client__ui-schema__designable.md",45784:"docs__en-US__handbook__data-modeling__collection-fields__choices__china-region.md",45789:"docs__en-US__handbook__ui__blocks__filter-blocks__form.md",45870:"docs__en-US__handbook__client__user__ui-designer__pages__index.md",46112:"docs__en-US__handbook__workflow-action-trigger__action.md",46209:"docs__en-US__handbook__field-component-mask__index.md",46385:"docs__en-US__handbook__ui__blocks__block-settings__loading-mode.md",46426:"docs__en-US__handbook__action-custom-request__index.md",46606:"docs__en-US__handbook__data-modeling__collection-fields__associations__index.md",46621:"docs__en-US__welcome__introduction__why.md",46723:"docs__en-US__manual__theme-editor__index.md",46845:"docs__en-US__plugins__file-manager__tencent-cos.md",46957:"docs__en-US__handbook__ui__blocks__block-settings__data-scope.md",46982:"docs__en-US__manual__workflow__nodes__sql.md",47052:"docs__en-US__handbook__ui__menus__index.md",47059:"docs__en-US__manual__ui__pages__index.md",47156:"docs__en-US__plugins__client__user__user-center__index.md",47442:"docs__en-US__plugins__workflow-aggregate__index.md",47477:"docs__en-US__manual__collection__collection-fdw__index.md",47496:"docs__en-US__handbook__field-m2m-array__index.md",47510:"docs__en-US__development__app-ds.md",47518:"docs__en-US__manual__ui__actions__duplicate.md",47752:"docs__en-US__handbook__client__user__ui-designer__actions__edit.md",47850:"docs__en-US__handbook__block-map__index.md",48067:"docs__en-US__handbook__ui__actions__types__update-record.md",48088:"docs__en-US__plugin-samples__router__add-setting-page-tabs-routes__index.md",48160:"docs__en-US__handbook__system-settings__language-settings.md",48196:"docs__en-US__handbook__workflow__triggers__index.md",48205:"docs__en-US__handbook__workflow-action-trigger__trigger.md",48206:"docs__en-US__handbook__ui__fields__generic__bulk-edit-form-item.md",48275:"docs__en-US__development__server__collections__collection-template.md",48295:"docs__en-US__handbook__client__user__ui-designer__actions__refresh.md",48367:"docs__en-US__manual__user__user-center__index.md",48415:"docs__en-US__api__client__schema-designer__schema-component.md",48721:"docs__en-US__api__data-source-manager__i-collection-manager.md",48724:"docs__en-US__handbook__action-bulk-edit__index.md",48980:"docs__en-US__development__http-api__filter-operators.md",49248:"docs__en-US__handbook__data-modeling__collection-fields__basic__textarea.md",49316:"docs__en-US__manual__collection__index.md",49444:"docs__en-US__plugin-samples__component-and-scope__index.md",49603:"docs__en-US__handbook__data-modeling__collection-fields__geometric__point.md",49611:"docs__en-US__handbook__data-modeling__collection-fields__datetime__time.md",49677:"docs__en-US__api__database__operators.md",49825:"docs__en-US__handbook__block-gantt__index.md",49891:"docs__en-US__handbook__workflow__plugins__aggregate.md",49943:"docs__en-US__plugins__auth__user__index.md",49974:"docs__en-US__handbook__ui__fields__field-settings__pattern.md",50160:"docs__en-US__plugins__collection-fdw__index.md",50208:"docs__en-US__handbook__workflow-variable__index.md",50214:"docs__en-US__manual__ui__actions__submit-to-workflow.md",50425:"docs__en-US__plugin-samples__router__replace-page__index.md",50446:"docs__en-US__plugin-samples__block__block-form.md",50552:"docs__en-US__api__sdk__index.md",50634:"docs__en-US__development__server__collections__field-extension.md",50699:"docs__en-US__development__server__test.md",50774:"docs__en-US__handbook__data-visualization__antd-charts__dual-axes.md",50981:"docs__en-US__handbook__workflow__advanced__executions.md",50999:"docs__en-US__manual__workflow__nodes__aggregate.md",51022:"docs__en-US__handbook__data-visualization__echarts__area.md",51060:"docs__en-US__plugins__oidc__example__google.md",51095:"docs__en-US__plugins__client__user__ui-designer__fields__index.md",51706:"docs__en-US__handbook__ui__fields__field-settings__data-scope.md",51760:"docs__en-US__handbook__collection-expression__collection.md",52024:"docs__en-US__handbook__file-storage-cos__index.md",52052:"docs__en-US__manual__ui__actions__index.md",52433:"demos",52538:"docs__en-US__handbook__auth-sms__index.md",52670:"docs__en-US__development__server__resources-actions-v2__index.md",52682:"docs__en-US__handbook__ui__actions__action-settings__open-mode.md",52725:"docs__en-US__plugins__client__user__ui-designer__actions__add-new.md",53273:"docs__en-US__welcome__release__v0180-changelog.md",53319:"docs__en-US__plugin-samples__schema-initializer__block-data-modal.md",53344:"docs__en-US__plugins__client__user__ui-designer__actions__delete.md",53392:"docs__en-US__welcome__changelog__20240607.md",53409:"docs__en-US__handbook__data-visualization__antd__table.md",53693:"docs__en-US__plugins__export__index.md",53803:"docs__en-US__manual__ui__inherit.md",54009:"docs__en-US__plugin-samples__schema-initializer__configure-fields.md",54106:"docs__en-US__breaking-changes__v0.19.0-alpha.1.md",54169:"docs__en-US__development__server__logger.md",54230:"docs__en-US__api__handlebars-helpers__core.md",54314:"docs__en-US__manual__file-manager__tencent-cos.md",54410:"docs__en-US__handbook__data-source-main__inheritance-collection.md",54456:"docs__en-US__handbook__data-source-external-mariadb__index.md",54464:"docs__en-US__plugins__auth__dev__guide.md",54570:"docs__en-US__handbook__workflow-approval__index.md",54634:"docs__en-US__api__client__router.md",54700:"docs__en-US__api__cache__cache-manager.md",54882:"docs__en-US__plugins__client__user__ui-designer__actions__print.md",54903:"docs__en-US__handbook__data-modeling__collection-fields__system-info__updated-at.md",54944:"docs__en-US__handbook__ui__actions__types__pop-up.md",55196:"docs__en-US__plugins__client__user__plugin-settings__index.md",55281:"docs__en-US__handbook__ui__actions__types__submit.md",55337:"docs__en-US__handbook__workflow__nodes__json-query.md",55802:"docs__en-US__manual__ui__actions__add-new.md",55872:"docs__en-US__api__database__relation-repository__index.md",55927:"docs__en-US__handbook__mobile__index.md",55940:"docs__en-US__api__handlebars-helpers__number.md",55982:"docs__en-US__api__database__shared.md",56002:"docs__en-US__plugins__mobile-client__index.md",56065:"docs__en-US__handbook__data-visualization__antd-charts__column.md",56098:"docs__en-US__handbook__data-source-rest-api__index.md",56180:"docs__en-US__plugins__index.md",56238:"docs__en-US__welcome__getting-started__installation__index.md",56537:"docs__en-US__welcome__release__v0094-changelog.md",56612:"docs__en-US__plugins__workflow__development__index.md",56786:"docs__en-US__handbook__workflow-delay__index.md",56923:"docs__en-US__plugins__kanban__index.md",57101:"docs__en-US__handbook__workflow-manual__node.md",57226:"docs__en-US__plugins__action-print__index.md",57273:"docs__en-US__plugins__action-bulk-update__index.md",57367:"docs__en-US__plugins__multi-app-manager__index.md",57523:"docs__en-US__handbook__data-source-manager__external-database.md",57859:"docs__en-US__manual__workflow__nodes__query.md",58314:"docs__en-US__handbook__ui__pop-up.md",58319:"docs__en-US__handbook__ui__actions__action-settings__edit-button.md",58418:"docs__en-US__plugin-samples__field__value.md",58438:"docs__en-US__manual__ui__actions__filter.md",58493:"docs__en-US__handbook__workflow__development__index.md",58498:"docs__en-US__welcome__community__translations.md",58539:"docs__en-US__plugin-samples__field__index.md",58581:"docs__en-US__handbook__workflow__nodes__calculation.md",58952:"docs__en-US__handbook__action-duplicate__index.md",59001:"docs__en-US__handbook__client__user__ui-designer__actions__update-record.md",59068:"docs__en-US__handbook__telemetry-prometheus__index.md",59076:"docs__en-US__plugins__data-visualization__user__chart-block.md",59144:"docs__en-US__handbook__action-export__index.md",59202:"docs__en-US__manual__core-concepts__collections.md",59263:"docs__en-US__plugin-samples__router__add-setting-page-single-route__index.md",59298:"docs__en-US__handbook__ui__blocks__filter-blocks__collapse.md",59432:"docs__en-US__manual__mobile__index.md",59560:"docs__en-US__handbook__client__index.md",60286:"docs__en-US__handbook__data-visualization__antd-charts__line.md",60323:"docs__en-US__welcome__release__v0093-changelog.md",60338:"docs__en-US__handbook__field-attachment-url__index.md",60374:"docs__en-US__plugins__auth__index.md",60436:"docs__en-US__manual__file-manager__local.md",60489:"docs__en-US__handbook__data-visualization__echarts__column.md",60817:"docs__en-US__manual__ui__blocks__index.md",60909:"docs__en-US__handbook__ui__actions__action-settings__bind-workflow.md",60920:"docs__en-US__handbook__workflow-request-interceptor__example.md",60957:"docs__en-US__handbook__notification-manager__development__extension.md",61087:"docs__en-US__handbook__client__user__ui-designer__menus__index.md",61253:"docs__en-US__handbook__ui__actions__action-settings__affter-successful.md",61319:"docs__en-US__welcome__release__upgrade-to__v017.md",61322:"docs__en-US__handbook__workflow-approval__action.md",61422:"docs__en-US__handbook__data-modeling__data-source.md",61594:"docs__en-US__api__client__extensions__acl.md",61925:"docs__en-US__api__database__shared__destroy-options.md",61975:"docs__en-US__handbook__data-modeling__collection-fields__index.md",62009:"docs__en-US__plugins__client__user__ui-designer__actions__add-record.md",62011:"docs__en-US__api__handlebars-helpers__comparison.md",62317:"docs__en-US__plugins__workflow-request__index.md",62463:"docs__en-US__plugin-samples__provider__index.md",62496:"docs__en-US__plugins__client__user__ui-designer__actions__submit.md",62530:"docs__en-US__welcome__getting-started__upgrading__index.md",62741:"docs__en-US__plugins__acl__user__index.md",63118:"docs__en-US__handbook__workflow-aggregate__index.md",63282:"docs__en-US__plugin-samples__schema-settings__index.md",63320:"docs__en-US__handbook__action-qr-scan__index.md",63485:"docs__en-US__handbook__client__user__ui-designer__actions__submit.md",63669:"docs__en-US__welcome__release__v0110-changelog.md",63772:"docs__en-US__handbook__ui__fields__specific__sub-table.md",63776:"docs__en-US__handbook__workflow-request-interceptor__http-api.md",63896:"docs__en-US__handbook__departments__manual.md",63927:"docs__en-US__plugins__workflow-parallel__index.md",64099:"docs__en-US__plugins__collection-manager__user__collection-templates__view__index.md",64531:"docs__en-US__handbook__ui__actions__types__trigger-workflow.md",64550:"docs__en-US__development__http-api__rest-api.md",64564:"docs__en-US__handbook__ui__fields__specific__date-picker.md",64630:"docs__en-US__handbook__workflow__advanced__variables.md",64647:"docs__en-US__development__client__ui-schema__rendering.md",64693:"docs__en-US__handbook__data-visualization__step-by-step__index.md",64884:"docs__en-US__manual__workflow__triggers__collection.md",64990:"docs__en-US__api__database__collection.md",65041:"docs__en-US__api__client__index.md",65149:"docs__en-US__welcome__release__v0092-changelog.md",65274:"docs__en-US__handbook__data-modeling__collection-fields__system-info__table-oid.md",65276:"docs__en-US__handbook__action-export-pro__index.md",65604:"docs__en-US__plugins__client__user__ui-designer__actions__refresh.md",65696:"docs__en-US__api__database__relation-repository__belongs-to-many-repository.md",65821:"docs__en-US__api__sdk__auth.md",65970:"docs__en-US__handbook__ui__actions__types__add-record.md",66011:"docs__en-US__plugins__collection-manager__user__association-fields__record-picker__index.md",66305:"docs__en-US__api__database__shared__update-options.md",66487:"docs__en-US__handbook__data-visualization__echarts__scatter.md",66721:"docs__en-US__plugins__workflow__manual__nodes__manual.md",66933:"docs__en-US__development__client__ui-schema__what-is-ui-schema.md",67040:"docs__en-US__handbook__acl__user__index.md",67052:"docs__en-US__plugin-samples__plugin-settings__table.md",67103:"docs__en-US__handbook__data-modeling__collection-fields__basic__email.md",67142:"docs__en-US__handbook__ui__fields__generic__form-item.md",67309:"docs__en-US__api__handlebars-helpers__date.md",67542:"docs__en-US__handbook__client__user__plugin-manager__index.md",67614:"docs__en-US__handbook__file-manager__index.md",67630:"docs__en-US__plugin-samples__block__block-carousel.md",67653:"docs__en-US__plugins__workflow__manual__triggers__form.md",67710:"docs__en-US__handbook__ui__fields__association-field.md",67717:"docs__en-US__plugin-samples__schema-initializer__index.md",68016:"docs__en-US__handbook__workflow-approval__http-api.md",68194:"docs__en-US__welcome__release__logger.md",68358:"docs__en-US__welcome__release__v0160-changelog.md",68481:"docs__en-US__handbook__workflow__nodes__destroy.md",68572:"docs__en-US__manual__ui__actions__refresh.md",68679:"docs__en-US__manual__collection__multiple-databases.md",68758:"docs__en-US__development__client__ui-schema__quick-start.md",68768:"docs__en-US__handbook__workflow-manual__block.md",68804:"docs__en-US__handbook__client__user__ui-designer__actions__filter.md",68820:"docs__en-US__handbook__calendar__index.md",68931:"docs__en-US__handbook__workflow-action-trigger__index.md",69072:"docs__en-US__handbook__data-source-external-postgres__index.md",69080:"docs__en-US__plugins__iframe-block__index.md",69205:"docs__en-US__handbook__ui__blocks__block-templates.md",69327:"docs__en-US__handbook__workflow-manual__example.md",69332:"docs__en-US__handbook__backup-restore__index.md",69377:"docs__en-US__handbook__public-forms__index.md",69450:"docs__en-US__manual__ui__fields__association-components__sub-table__index.md",69491:"docs__en-US__manual__ui__fields__index.md",69676:"docs__en-US__api__sdk__storage.md",69709:"docs__en-US__plugins__workflow__manual__nodes__create.md",69743:"docs__en-US__manual__collection__fields__choices.md",70077:"docs__en-US__handbook__departments__index.md",70199:"docs__en-US__manual__workflow__nodes__condition.md",70282:"docs__en-US__handbook__file-manager__file-collection.md",70302:"docs__en-US__manual__data-visualization__configure.md",70354:"docs__en-US__manual__workflow__nodes__update.md",70408:"docs__en-US__handbook__data-modeling__collection-fields__advanced__nano-id.md",70488:"docs__en-US__plugins__client__user__ui-designer__actions__duplicate.md",70489:"docs__en-US__handbook__ui__actions__action-settings__double-check.md",70547:"docs__en-US__development__server__resources-actions-v2__vs-router.md",70728:"docs__en-US__index.md",70839:"docs__en-US__handbook__block-iframe__index.md",71003:"docs__en-US__development__client__providers.md",71028:"docs__en-US__handbook__data-modeling__collection-fields__basic__password.md",71032:"docs__en-US__handbook__workflow-approval__trigger.md",71059:"docs__en-US__plugins__workflow-manual__index.md",71250:"docs__en-US__plugins__file-manager__local.md",71371:"docs__en-US__manual__quick-start__ui-editor-mode.md",71409:"docs__en-US__manual__mobile-client__index.md",71585:"docs__en-US__plugins__client__index.md",71879:"docs__en-US__plugins__collection-manager__user__association-fields__title__index.md",71892:"docs__en-US__handbook__data-source-main__index.md",71930:"docs__en-US__handbook__ui__fields__generic__filter-collapse-item.md",72003:"docs__en-US__handbook__data-modeling__collection-fields__basic__number.md",72082:"docs__en-US__handbook__ui__blocks__block-settings__block-template.md",72348:"docs__en-US__welcome__release__v0072-changelog.md",72429:"docs__en-US__manual__ui__fields__association-components__sub-detail__index.md",72445:"nm__dumi-theme-nocobase__dist__layouts__DocLayout__index",72631:"docs__en-US__welcome__getting-started__upgrading__docker-compose.md",72747:"docs__en-US__welcome__getting-started__env.md",72841:"docs__en-US__api__client__schema-designer__schema-settings.md",72924:"docs__en-US__plugins__client__user__ui-designer__pages__index.md",73192:"docs__en-US__manual__workflow__nodes__manual.md",73239:"docs__en-US__development__client__ui-schema__toolbar.md",73399:"docs__en-US__manual__ui__fields__association-components__tag__index.md",73489:"docs__en-US__handbook__ui-schema-storage__index.md",73492:"docs__en-US__development__learning-guide.md",73656:"docs__en-US__handbook__ui__fields__specific__select.md",73658:"docs__en-US__manual__ui__actions__save-record.md",73863:"docs__en-US__manual__workflow__nodes__index.md",73871:"docs__en-US__handbook__workflow__nodes__delay.md",73890:"docs__en-US__handbook__ui__actions__types__link.md",73892:"docs__en-US__handbook__workflow__nodes__query.md",74097:"docs__en-US__welcome__getting-started__deployment__create-nocobase-app.md",74318:"docs__en-US__handbook__data-modeling__collection-fields__associations__o2o__index.md",74435:"docs__en-US__handbook__action-print__index.md",74487:"docs__en-US__handbook__data-modeling__collection-fields__geometric__circle.md",74488:"docs__en-US__handbook__ui__actions__types__delete.md",74563:"docs__en-US__plugins__client__user__ui-designer__blocks__index.md",74767:"docs__en-US__handbook__data-modeling__collection-fields__media__markdown.md",74816:"docs__en-US__plugin-samples__provider__content.md",74947:"docs__en-US__handbook__workflow__advanced__options.md",75007:"docs__en-US__plugins__telemetry-prometheus__index.md",75146:"docs__en-US__handbook__data-modeling__collection-fields__advanced__sort.md",75231:"docs__en-US__handbook__auth-saml__index.md",75290:"docs__en-US__welcome__release__v0210-changelog__index.md",75458:"docs__en-US__plugins__workflow__development__trigger.md",75582:"docs__en-US__handbook__ui__fields__specific__file-manager.md",75618:"docs__en-US__manual__ui__actions__view.md",76042:"docs__en-US__handbook__client__user__ui-designer__index.md",76118:"docs__en-US__plugins__collection-fdw__enable-federated.md",76123:"docs__en-US__handbook__ui__fields__field-settings__edit-tooltip.md",76273:"docs__en-US__plugins__data-visualization__step-by-step__index.md",76341:"docs__en-US__handbook__client__user__ui-designer__actions__index.md",76596:"docs__en-US__plugins__file-manager__amazon-s3.md",76623:"docs__en-US__development__life-cycle.md",76671:"docs__en-US__plugins__client__user__ui-designer__actions__export.md",76694:"docs__en-US__development__server__resources-actions-v2__to-resource.md",76924:"docs__en-US__plugins__collection-manager__user__index.md",76946:"docs__en-US__manual__quick-start__the-first-app.md",77074:"docs__en-US__handbook__workflow-request-interceptor__trigger.md",77305:"docs__en-US__plugins__client__user__ui-designer__actions__index.md",77452:"docs__en-US__manual__system-settings__index.md",77533:"docs__en-US__welcome__getting-started__deployment__index.md",77649:"docs__en-US__handbook__workflow__nodes__parallel.md",77690:"docs__en-US__handbook__client__user__ui-designer__actions__delete.md",77746:"docs__en-US__plugins__workflow__manual__nodes__calculation.md",77779:"docs__en-US__handbook__data-visualization__dev__index.md",77881:"docs__en-US__handbook__client__user__ui-designer__actions__print.md",77908:"docs__en-US__development__others__languages.md",78106:"docs__en-US__handbook__template-handlebars__index.md",78118:"docs__en-US__handbook__client__user__ui-designer__actions__export.md",78179:"docs__en-US__welcome__release__index.md",78275:"docs__en-US__plugins__client__user__ui-designer__actions__open-popup.md",78371:"docs__en-US__plugin-samples__schema-settings__add-item.md",78566:"docs__en-US__plugins__workflow__manual__nodes__destroy.md",78596:"docs__en-US__manual__ui__actions__delete.md",78609:"docs__en-US__plugins__workflow__manual__nodes__condition.md",78688:"docs__en-US__manual__ui__actions__print.md",78702:"docs__en-US__handbook__backups__installation__mariadb.md",78880:"docs__en-US__handbook__ui__blocks__data-blocks__grid-card.md",79174:"docs__en-US__api__client__extensions__schema-component.md",79240:"docs__en-US__handbook__workflow__nodes__loop.md",79370:"docs__en-US__welcome__release__v0040-changelog.md",79580:"docs__en-US__handbook__ui__fields__field-settings__default-value.md",79882:"docs__en-US__plugins__client__user__ui-designer__actions__view.md",79983:"docs__en-US__handbook__data-visualization__user__filter.md",80152:"docs__en-US__handbook__client__user__ui-designer__actions__add-record.md",80224:"docs__en-US__handbook__auth__dev__guide.md",80413:"docs__en-US__handbook__ui__actions__index.md",80461:"docs__en-US__plugins__workflow__development__instruction.md",80496:"docs__en-US__handbook__ui__blocks__data-blocks__table.md",80551:"docs__en-US__plugin-samples__provider__context.md",80654:"docs__en-US__plugins__workflow-json-query__index.md",80685:"docs__en-US__handbook__multi-app-manager__index.md",80752:"docs__en-US__manual__collection__fields__index.md",80882:"docs__en-US__manual__ui__linkage.md",80961:"docs__en-US__development__server__resources-actions-v2__rest-api.md",81009:"nm__dumi__dist__client__pages__Demo__index",81065:"docs__en-US__api__database__relation-repository__has-one-repository.md",81316:"docs__en-US__plugin-samples__field__interface.md",81538:"docs__en-US__api__database__relation-repository__has-many-repository.md",81656:"docs__en-US__welcome__how.md",81715:"docs__en-US__welcome__release__v0150-changelog.md",82125:"docs__en-US__api__database__repository.md",82149:"docs__en-US__handbook__workflow-dynamic-calculation__example.md",82173:"docs__en-US__welcome__release__v0200-changelog__index.md",82215:"docs__en-US__handbook__ui__fields__generic__table-column.md",82329:"docs__en-US__api__data-source-manager__i-field.md",82581:"docs__en-US__manual__ui__fields__association-components__select__index.md",82596:"docs__en-US__handbook__workflow__nodes__end.md",82674:"docs__en-US__plugins__snapshot-field__index.md",82880:"docs__en-US__handbook__workflow__nodes__date-calculation.md",82962:"docs__en-US__handbook__auth-wecom__index.md",83007:"docs__en-US__handbook__client__user__ui-designer__actions__save-record.md",83011:"docs__en-US__plugin-samples__field__sub-field.md",83069:"docs__en-US__handbook__verification__index.md",83228:"docs__en-US__handbook__workflow-request__index.md",83300:"docs__en-US__manual__collection__collection-templates__view__index.md",83833:"docs__en-US__plugins__client__user__ui-designer__menus__index.md",83840:"docs__en-US__handbook__workflow-custom-action-trigger__http-api.md",83884:"docs__en-US__handbook__notification-email__index.md",83902:"docs__en-US__api__actions.md",83999:"docs__en-US__handbook__workflow-request-interceptor__advanced.md",84056:"docs__en-US__breaking-changes__v0-17-0-alpha-1.md",84114:"docs__en-US__plugins__client__user__ui-designer__actions__filter.md",84119:"docs__en-US__development__server__collections__options.md",84188:"docs__en-US__handbook__field-encryption__index.md",84314:"docs__en-US__plugin-samples__schema-initializer__configure-fields-bk.md",84459:"docs__en-US__api__database__index.md",84769:"docs__en-US__manual__workflow__nodes__dynamic-calculation.md",84945:"docs__en-US__manual__ui__actions__edit.md",85089:"docs__en-US__plugins__gantt__index.md",85144:"docs__en-US__handbook__data-visualization__antd__overview.md",85202:"docs__en-US__handbook__workflow__nodes__update.md",85354:"docs__en-US__handbook__client__user__ui-designer__actions__import.md",85530:"docs__en-US__plugin-samples__plugin-settings__table-multiple-add-forms.md",85570:"docs__en-US__handbook__data-visualization__user__chart-block.md",85727:"docs__en-US__development__your-fisrt-plugin.md",85732:"docs__en-US__plugins__system-settings__index.md",85745:"docs__en-US__manual__workflow__advanced.md",85947:"docs__en-US__welcome__release__v0130-changelog.md",85966:"docs__en-US__api__http__index.md",86002:"docs__en-US__api__server__application.md",86010:"docs__en-US__handbook__data-modeling__collection-fields__datetime__date.md",86016:"docs__en-US__handbook__localization-management__index.md",86105:"docs__en-US__handbook__data-modeling__collection-fields__geometric__polygon.md",86310:"docs__en-US__handbook__data-visualization__echarts__overview.md",86324:"docs__en-US__manual__ui__actions__add-record.md",86338:"docs__en-US__handbook__data-visualization__antd-charts__overview.md",86348:"docs__en-US__handbook__field-sequence__index.md",86406:"docs__en-US__plugin-samples__schema-initializer__action-simple.md",86492:"docs__en-US__api__handlebars-helpers__html.md",86653:"docs__en-US__api__handlebars-helpers__object.md",86725:"docs__en-US__api__data-source-manager__index.md",87005:"docs__en-US__welcome__getting-started__installation__docker-compose.md",87093:"docs__en-US__handbook__data-modeling__collection-fields__datetime__datetime-without-tz.md",87111:"docs__en-US__handbook__custom-brand__index.md",87493:"docs__en-US__manual__ui__fields__association-components__sub-form(popover)__index.md",87603:"docs__en-US__handbook__ui__blocks__block-settings__block-height.md",87815:"docs__en-US__development__server__collections-fields.md",87833:"docs__en-US__manual__core-concepts__menus.md",87855:"docs__en-US__manual__ui__fields__association-components__record-picker__index.md",87963:"docs__en-US__manual__collection__fields__date.md",88005:"docs__en-US__development__client__styles-and-themes.md",88065:"docs__en-US__handbook__workflow-approval__advanced.md",88199:"docs__en-US__handbook__ui__fields__field-settings__edit-title.md",88256:"docs__en-US__handbook__workflow__triggers__custom-action.md",88383:"docs__en-US__api__database__shared__find-options.md",88463:"docs__en-US__handbook__api-doc__index.md",88525:"docs__en-US__handbook__ui__blocks__block-settings__block-layout.md",88721:"docs__en-US__handbook__data-visualization__echarts__funnel.md",88822:"docs__en-US__manual__workflow__triggers__index.md",88895:"docs__en-US__handbook__workflow__development__trigger.md",89073:"docs__en-US__welcome__release__v0073-changelog.md",89077:"docs__en-US__plugins__workflow__manual__nodes__query.md",89107:"docs__en-US__development__plugin.md",89209:"docs__en-US__handbook__data-source-manager__index.md",89287:"docs__en-US__handbook__ui__blocks__block-settings__connect-block.md",89534:"docs__en-US__handbook__data-modeling__collection-fields__datetime__unix-timestamp.md",89989:"docs__en-US__api__resourcer__resource-manager.md",90116:"docs__en-US__handbook__workflow__nodes__manual.md",90126:"docs__en-US__handbook__template-string__index.md",90455:"docs__en-US__handbook__file-manager__field-attachment.md",90503:"docs__en-US__api__server__plugin.md",90522:"docs__en-US__welcome__community__thanks.md",90736:"docs__en-US__handbook__acl__index.md",90851:"docs__en-US__plugins__auth__dev__api.md",91010:"docs__en-US__api__cli.md",91082:"docs__en-US__plugins__client__user__ui-designer__index.md",91242:"docs__en-US__plugin-samples__plugin-settings__index.md",91306:"docs__en-US__handbook__ui__actions__action-settings__assign-values.md",91315:"docs__en-US__plugins__collection-manager__user__association-fields__file-manager__index.md",91590:"docs__en-US__api__client__extensions__block-provider.md",91613:"docs__en-US__plugin-samples__block__block-table.md",91676:"docs__en-US__api__auth__base-auth.md",91741:"docs__en-US__api__database__relation-repository__belongs-to-repository.md",91791:"docs__en-US__handbook__data-modeling__collection-fields__choices__checkbox-group.md",91802:"docs__en-US__handbook__ui__blocks__block-settings__sorting-rule.md",91873:"docs__en-US__handbook__data-modeling__collection-fields__basic__icon.md",92019:"docs__en-US__plugins__workflow__manual__triggers__schedule.md",92115:"docs__en-US__plugins__client__user__ui-designer__actions__save-record.md",92266:"docs__en-US__manual__collection__collection-templates__file__index.md",92368:"docs__en-US__handbook__ui__fields__specific__nester.md",92556:"docs__en-US__manual__workflow__nodes__request.md",92693:"docs__en-US__handbook__block-workbench__index.md",92919:"docs__en-US__handbook__client__user__ui-designer__actions__custom-request.md",93096:"docs__en-US__handbook__client__user__plugin-settings__index.md",93142:"docs__en-US__welcome__release__v0050-changelog.md",93330:"docs__en-US__plugins__saml__index.md",93338:"docs__en-US__plugins__collection-manager__user__association-fields__sub-detail__index.md",93395:"docs__en-US__handbook__users__field-updated-by.md",93428:"docs__en-US__development__others__tech-stack.md",93555:"docs__en-US__welcome__release__v0100-changelog.md",93797:"docs__en-US__handbook__template-json__index.md",93903:"docs__en-US__manual__data-visualization__index.md",93946:"docs__en-US__handbook__ui__fields__specific__popover-nester.md",93989:"docs__en-US__welcome__release__v1001-changelog.md",93998:"docs__en-US__handbook__workflow-action-trigger__example.md",94154:"docs__en-US__api__handlebars-helpers__url.md",94220:"docs__en-US__plugins__workflow__manual__nodes__aggregate.md",94252:"docs__en-US__manual__ui__actions__submit.md",94385:"docs__en-US__handbook__workflow-approval__node.md",94388:"docs__en-US__welcome__release__gantt__introduction.md",94406:"docs__en-US__handbook__data-visualization__antd__statistic.md",94466:"docs__en-US__handbook__theme-editor__index.md",94589:"docs__en-US__plugins__file-manager__index.md",94725:"docs__en-US__api__resourcer__resource.md",94783:"docs__en-US__handbook__logger__index.md",94847:"docs__en-US__manual__ui__fields__association-components__cascade-select__index.md",95059:"docs__en-US__development__plugin-ds.md",95187:"docs__en-US__handbook__ui__fields__field-settings__title-field.md",95319:"docs__en-US__development__client__ui-schema__extending.md",95387:"docs__en-US__plugins__data-visualization__dev__index.md",95537:"docs__en-US__plugin-samples__block__index.md",95565:"docs__en-US__plugins__api-keys__index.md",95724:"docs__en-US__welcome__getting-started__installation__git-clone.md",95828:"docs__en-US__handbook__ui__fields__generic__detail-form-item.md",96393:"docs__en-US__development__server__collections__index.md",96617:"docs__en-US__handbook__workflow-response-message__index.md",96685:"docs__en-US__manual__file-manager__index.md",96793:"docs__en-US__plugins__file-manager__aliyun-oss.md",96827:"docs__en-US__handbook__workflow__nodes__response-message.md",96914:"docs__en-US__plugins__workflow-dynamic-calculation__index.md",96939:"docs__en-US__handbook__ui__blocks__block-settings__block-delete.md",96984:"docs__en-US__handbook__auth-oidc__example__google.md",97098:"docs__en-US__handbook__data-source-external-mssql__index.md",97180:"docs__en-US__development__client__ui-schema__initializer.md",97213:"docs__en-US__manual__collection__collection-templates__sql__index.md",97569:"docs__en-US__development__server__collections__configure.md",97694:"docs__en-US__plugins__client__user__ui-designer__actions__import.md",97770:"docs__en-US__handbook__data-modeling__collection-fields__associations__m2o__index.md",97884:"docs__en-US__manual__workflow__nodes__calculation.md",97940:"docs__en-US__handbook__data-visualization__echarts__wordcloud.md",98137:"docs__en-US__handbook__index.md",98205:"docs__en-US__plugins__collection-manager__user__collection-templates__calender__index.md",98571:"docs__en-US__manual__workflow__nodes__create.md",98672:"docs__en-US__handbook__auth-oidc__index.md",98690:"docs__en-US__handbook__backups__index.md",98698:"docs__en-US__manual__workflow__triggers__schedule.md",98798:"docs__en-US__plugins__workflow__manual__nodes__parallel.md",99032:"docs__en-US__manual__quick-start__functional-zoning.md",99153:"docs__en-US__api__database__interfaces__base-interface.md",99435:"docs__en-US__plugins__saml__example__google.md",99736:"docs__en-US__handbook__ui__actions__types__save-record.md",99740:"docs__en-US__handbook__data-visualization__echarts__diverging-bar.md",99763:"docs__en-US__api__data-source-manager__i-model.md",99806:"docs__en-US__handbook__data-visualization__antd-charts__pie.md",99979:"docs__en-US__handbook__data-modeling__collection-fields__advanced__uuid.md"}[_]||_)+"."+{171:"778c6473",489:"778c6473",565:"778c6473",581:"778c6473",701:"778c6473",876:"778c6473",989:"778c6473",1020:"778c6473",1131:"778c6473",1265:"778c6473",1327:"778c6473",1436:"778c6473",1565:"778c6473",1813:"778c6473",2016:"778c6473",2366:"778c6473",2451:"778c6473",2483:"778c6473",2491:"778c6473",2496:"778c6473",2534:"778c6473",2563:"778c6473",2707:"778c6473",2718:"778c6473",2782:"778c6473",2805:"778c6473",2843:"778c6473",2858:"778c6473",3122:"778c6473",3143:"778c6473",3214:"778c6473",3282:"778c6473",3303:"778c6473",3389:"778c6473",3395:"778c6473",3820:"778c6473",3826:"778c6473",3944:"778c6473",3966:"778c6473",4230:"778c6473",4366:"778c6473",4374:"778c6473",4384:"778c6473",4840:"778c6473",5102:"778c6473",5216:"778c6473",5263:"778c6473",5810:"778c6473",5822:"778c6473",5939:"778c6473",6006:"778c6473",6163:"778c6473",6275:"778c6473",6319:"778c6473",6327:"778c6473",6346:"778c6473",6375:"778c6473",6780:"778c6473",6859:"778c6473",6885:"778c6473",6893:"778c6473",6931:"778c6473",7027:"778c6473",7443:"778c6473",7535:"778c6473",7692:"778c6473",8570:"778c6473",8602:"778c6473",8757:"778c6473",8777:"778c6473",8804:"778c6473",8879:"778c6473",9120:"778c6473",9161:"778c6473",9258:"778c6473",9385:"778c6473",9388:"778c6473",9420:"778c6473",9547:"778c6473",9584:"778c6473",9677:"778c6473",9695:"778c6473",9714:"778c6473",9746:"778c6473",9909:"778c6473",9931:"778c6473",10145:"778c6473",10264:"778c6473",10385:"778c6473",10414:"778c6473",10581:"778c6473",10607:"778c6473",10883:"778c6473",10905:"778c6473",10986:"778c6473",11109:"778c6473",11150:"778c6473",11285:"778c6473",11357:"778c6473",11413:"778c6473",11622:"778c6473",11902:"778c6473",11922:"778c6473",11924:"778c6473",11995:"778c6473",12046:"778c6473",12102:"778c6473",12150:"778c6473",12174:"778c6473",12224:"778c6473",12300:"778c6473",12435:"778c6473",12447:"778c6473",12497:"778c6473",12546:"778c6473",12572:"778c6473",12623:"778c6473",12684:"778c6473",12739:"778c6473",12748:"778c6473",12822:"778c6473",13026:"778c6473",13214:"778c6473",13224:"778c6473",13225:"778c6473",13303:"778c6473",13472:"778c6473",13573:"778c6473",13750:"778c6473",13918:"778c6473",14007:"778c6473",14137:"778c6473",14156:"778c6473",14370:"778c6473",14377:"778c6473",14442:"778c6473",14476:"778c6473",14490:"778c6473",14651:"778c6473",14707:"778c6473",14816:"778c6473",15051:"778c6473",15089:"778c6473",15105:"778c6473",15173:"778c6473",15309:"778c6473",15491:"778c6473",15518:"778c6473",15548:"778c6473",15559:"778c6473",16242:"778c6473",16357:"778c6473",16373:"778c6473",16535:"778c6473",16563:"778c6473",16625:"778c6473",16741:"778c6473",16776:"778c6473",16826:"778c6473",16871:"778c6473",17304:"778c6473",17385:"778c6473",17506:"778c6473",17931:"778c6473",17961:"778c6473",18133:"778c6473",18247:"778c6473",18249:"778c6473",18252:"778c6473",18556:"778c6473",18693:"778c6473",18770:"778c6473",18796:"778c6473",18807:"778c6473",18830:"778c6473",18840:"778c6473",18893:"778c6473",19138:"778c6473",19143:"778c6473",19150:"778c6473",19158:"778c6473",19689:"778c6473",19703:"778c6473",19923:"778c6473",20197:"778c6473",20202:"778c6473",20358:"778c6473",20390:"778c6473",20406:"778c6473",20469:"778c6473",20538:"778c6473",20621:"778c6473",20801:"778c6473",21126:"778c6473",21265:"778c6473",21704:"778c6473",22233:"778c6473",22468:"778c6473",22499:"778c6473",22809:"778c6473",22906:"778c6473",22991:"778c6473",23039:"778c6473",23139:"778c6473",23243:"778c6473",23661:"778c6473",23691:"778c6473",23754:"778c6473",23900:"778c6473",23928:"778c6473",24338:"778c6473",24350:"778c6473",24433:"778c6473",24499:"778c6473",24515:"778c6473",24543:"778c6473",24899:"778c6473",24983:"778c6473",25058:"778c6473",25279:"778c6473",25520:"778c6473",25634:"778c6473",25690:"778c6473",25768:"778c6473",25797:"778c6473",25855:"778c6473",25869:"778c6473",25912:"778c6473",25918:"778c6473",26006:"778c6473",26248:"778c6473",26262:"778c6473",26295:"778c6473",26365:"778c6473",26641:"778c6473",26756:"778c6473",26818:"778c6473",27e3:"778c6473",27046:"778c6473",27277:"778c6473",27291:"778c6473",27431:"778c6473",27833:"778c6473",27966:"778c6473",27995:"778c6473",28399:"778c6473",28581:"778c6473",28802:"778c6473",28895:"778c6473",29042:"778c6473",29211:"778c6473",29226:"778c6473",29341:"778c6473",29352:"778c6473",29396:"778c6473",29409:"778c6473",29450:"778c6473",29487:"778c6473",29532:"778c6473",29786:"778c6473",29875:"778c6473",30074:"778c6473",30105:"778c6473",30170:"778c6473",30347:"778c6473",30399:"778c6473",30468:"778c6473",30483:"778c6473",30531:"778c6473",30553:"778c6473",30621:"778c6473",30787:"778c6473",30826:"778c6473",30873:"778c6473",30953:"778c6473",31363:"778c6473",31817:"778c6473",31938:"778c6473",32053:"778c6473",32320:"778c6473",32405:"778c6473",32751:"778c6473",33e3:"778c6473",33121:"778c6473",33171:"778c6473",33292:"778c6473",33506:"778c6473",33524:"778c6473",33893:"778c6473",33945:"778c6473",33977:"778c6473",34057:"778c6473",34059:"778c6473",34061:"778c6473",34122:"778c6473",34187:"778c6473",34249:"778c6473",34345:"778c6473",34357:"778c6473",34594:"778c6473",34692:"778c6473",34749:"778c6473",34959:"778c6473",35350:"778c6473",35357:"778c6473",35487:"778c6473",35520:"778c6473",35739:"778c6473",35830:"778c6473",35831:"778c6473",36055:"778c6473",36311:"778c6473",36693:"778c6473",36840:"778c6473",36874:"778c6473",36909:"778c6473",37029:"778c6473",37130:"778c6473",37206:"778c6473",37332:"778c6473",37868:"778c6473",37992:"778c6473",38025:"778c6473",38082:"778c6473",38122:"778c6473",38207:"778c6473",38346:"778c6473",38353:"778c6473",38651:"778c6473",38812:"778c6473",39046:"778c6473",39133:"778c6473",39311:"778c6473",39654:"778c6473",39659:"778c6473",39688:"778c6473",39693:"778c6473",39730:"778c6473",39787:"778c6473",39840:"778c6473",39898:"778c6473",40071:"7809b37c",40143:"778c6473",40150:"778c6473",40268:"778c6473",40293:"778c6473",40678:"778c6473",40736:"778c6473",41568:"778c6473",41598:"778c6473",41624:"778c6473",42084:"778c6473",42236:"778c6473",42291:"778c6473",42334:"778c6473",42623:"778c6473",42927:"778c6473",43192:"778c6473",43331:"778c6473",43401:"778c6473",43545:"778c6473",43691:"778c6473",43694:"778c6473",43754:"778c6473",43854:"778c6473",43860:"778c6473",44059:"778c6473",44254:"778c6473",44404:"778c6473",44411:"778c6473",44474:"778c6473",44667:"778c6473",44720:"778c6473",45087:"778c6473",45109:"778c6473",45170:"778c6473",45381:"778c6473",45526:"778c6473",45681:"778c6473",45682:"778c6473",45716:"778c6473",45784:"778c6473",45789:"778c6473",45870:"778c6473",46112:"778c6473",46209:"778c6473",46385:"778c6473",46426:"778c6473",46606:"778c6473",46621:"778c6473",46723:"778c6473",46845:"778c6473",46957:"778c6473",46982:"778c6473",47052:"778c6473",47059:"778c6473",47156:"778c6473",47442:"778c6473",47477:"778c6473",47496:"778c6473",47510:"778c6473",47518:"778c6473",47752:"778c6473",47850:"778c6473",48067:"778c6473",48088:"778c6473",48160:"778c6473",48196:"778c6473",48205:"778c6473",48206:"778c6473",48275:"778c6473",48295:"778c6473",48367:"778c6473",48415:"778c6473",48721:"778c6473",48724:"778c6473",48980:"778c6473",49248:"778c6473",49316:"778c6473",49444:"778c6473",49603:"778c6473",49611:"778c6473",49677:"778c6473",49825:"778c6473",49891:"778c6473",49943:"778c6473",49974:"778c6473",50160:"778c6473",50208:"778c6473",50214:"778c6473",50425:"778c6473",50446:"778c6473",50552:"778c6473",50634:"778c6473",50699:"778c6473",50774:"778c6473",50981:"778c6473",50999:"778c6473",51022:"778c6473",51060:"778c6473",51095:"778c6473",51706:"778c6473",51760:"778c6473",52024:"778c6473",52052:"778c6473",52433:"7809b37c",52538:"778c6473",52670:"778c6473",52682:"778c6473",52725:"778c6473",53273:"778c6473",53319:"778c6473",53344:"778c6473",53392:"778c6473",53409:"778c6473",53693:"778c6473",53803:"778c6473",54009:"778c6473",54106:"778c6473",54169:"778c6473",54230:"778c6473",54314:"778c6473",54410:"778c6473",54456:"778c6473",54464:"778c6473",54570:"778c6473",54634:"778c6473",54700:"778c6473",54882:"778c6473",54903:"778c6473",54944:"778c6473",55196:"778c6473",55281:"778c6473",55337:"778c6473",55802:"778c6473",55872:"778c6473",55927:"778c6473",55940:"778c6473",55982:"778c6473",56002:"778c6473",56065:"778c6473",56098:"778c6473",56180:"778c6473",56238:"778c6473",56537:"778c6473",56612:"778c6473",56786:"778c6473",56923:"778c6473",57101:"778c6473",57226:"778c6473",57273:"778c6473",57367:"778c6473",57523:"778c6473",57859:"778c6473",58314:"778c6473",58319:"778c6473",58418:"778c6473",58438:"778c6473",58493:"778c6473",58498:"778c6473",58539:"778c6473",58581:"778c6473",58952:"778c6473",59001:"778c6473",59068:"778c6473",59076:"778c6473",59144:"778c6473",59202:"778c6473",59263:"778c6473",59298:"778c6473",59432:"778c6473",59560:"778c6473",60286:"778c6473",60323:"778c6473",60338:"778c6473",60374:"778c6473",60436:"778c6473",60489:"778c6473",60817:"778c6473",60909:"778c6473",60920:"778c6473",60957:"778c6473",61087:"778c6473",61253:"778c6473",61319:"778c6473",61322:"778c6473",61422:"778c6473",61594:"778c6473",61925:"778c6473",61975:"778c6473",62009:"778c6473",62011:"778c6473",62317:"778c6473",62463:"778c6473",62496:"778c6473",62530:"778c6473",62741:"778c6473",63118:"778c6473",63282:"778c6473",63320:"778c6473",63485:"778c6473",63669:"778c6473",63772:"778c6473",63776:"778c6473",63896:"778c6473",63927:"778c6473",64099:"778c6473",64531:"778c6473",64550:"778c6473",64564:"778c6473",64630:"778c6473",64647:"778c6473",64693:"778c6473",64884:"778c6473",64990:"778c6473",65041:"778c6473",65149:"778c6473",65274:"778c6473",65276:"778c6473",65604:"778c6473",65696:"778c6473",65821:"778c6473",65970:"778c6473",66011:"778c6473",66305:"778c6473",66487:"778c6473",66721:"778c6473",66933:"778c6473",67040:"778c6473",67052:"778c6473",67103:"778c6473",67142:"778c6473",67309:"778c6473",67542:"778c6473",67614:"778c6473",67630:"778c6473",67653:"778c6473",67710:"778c6473",67717:"778c6473",68016:"778c6473",68194:"778c6473",68358:"778c6473",68481:"778c6473",68572:"778c6473",68679:"778c6473",68758:"778c6473",68768:"778c6473",68804:"778c6473",68820:"778c6473",68931:"778c6473",69072:"778c6473",69080:"778c6473",69205:"778c6473",69327:"778c6473",69332:"778c6473",69377:"778c6473",69450:"778c6473",69491:"778c6473",69676:"778c6473",69709:"778c6473",69743:"778c6473",70077:"778c6473",70199:"778c6473",70282:"778c6473",70302:"778c6473",70354:"778c6473",70408:"778c6473",70488:"778c6473",70489:"778c6473",70547:"778c6473",70728:"778c6473",70839:"778c6473",71003:"778c6473",71028:"778c6473",71032:"778c6473",71059:"778c6473",71250:"778c6473",71371:"778c6473",71409:"778c6473",71585:"778c6473",71879:"778c6473",71892:"778c6473",71930:"778c6473",72003:"778c6473",72082:"778c6473",72348:"778c6473",72429:"778c6473",72445:"ce791d75",72631:"778c6473",72747:"778c6473",72841:"778c6473",72924:"778c6473",73192:"778c6473",73239:"778c6473",73399:"778c6473",73489:"778c6473",73492:"778c6473",73656:"778c6473",73658:"778c6473",73863:"778c6473",73871:"778c6473",73890:"778c6473",73892:"778c6473",74097:"778c6473",74318:"778c6473",74435:"778c6473",74487:"778c6473",74488:"778c6473",74563:"778c6473",74767:"778c6473",74816:"778c6473",74947:"778c6473",75007:"778c6473",75146:"778c6473",75231:"778c6473",75290:"778c6473",75458:"778c6473",75582:"778c6473",75618:"778c6473",76042:"778c6473",76118:"778c6473",76123:"778c6473",76273:"778c6473",76341:"778c6473",76596:"778c6473",76623:"778c6473",76671:"778c6473",76694:"778c6473",76924:"778c6473",76946:"778c6473",77074:"778c6473",77305:"778c6473",77452:"778c6473",77533:"778c6473",77649:"778c6473",77690:"778c6473",77746:"778c6473",77779:"778c6473",77881:"778c6473",77908:"778c6473",78106:"778c6473",78118:"778c6473",78179:"778c6473",78275:"778c6473",78371:"778c6473",78566:"778c6473",78596:"778c6473",78609:"778c6473",78688:"778c6473",78702:"778c6473",78880:"778c6473",79174:"778c6473",79240:"778c6473",79370:"778c6473",79580:"778c6473",79882:"778c6473",79983:"778c6473",80152:"778c6473",80224:"778c6473",80413:"778c6473",80461:"778c6473",80496:"778c6473",80551:"778c6473",80654:"778c6473",80685:"778c6473",80752:"778c6473",80882:"778c6473",80961:"778c6473",81009:"578aa5c0",81065:"778c6473",81316:"778c6473",81538:"778c6473",81656:"778c6473",81715:"778c6473",82125:"778c6473",82149:"778c6473",82173:"778c6473",82215:"778c6473",82329:"778c6473",82581:"778c6473",82596:"778c6473",82674:"778c6473",82880:"778c6473",82962:"778c6473",83007:"778c6473",83011:"778c6473",83069:"778c6473",83228:"778c6473",83300:"778c6473",83833:"778c6473",83840:"778c6473",83884:"778c6473",83902:"778c6473",83999:"778c6473",84056:"778c6473",84114:"778c6473",84119:"778c6473",84188:"778c6473",84314:"778c6473",84459:"778c6473",84769:"778c6473",84945:"778c6473",85089:"778c6473",85144:"778c6473",85202:"778c6473",85354:"778c6473",85530:"778c6473",85570:"778c6473",85727:"778c6473",85732:"778c6473",85745:"778c6473",85947:"778c6473",85966:"778c6473",86002:"778c6473",86010:"778c6473",86016:"778c6473",86105:"778c6473",86310:"778c6473",86324:"778c6473",86338:"778c6473",86348:"778c6473",86406:"778c6473",86492:"778c6473",86653:"778c6473",86725:"778c6473",87005:"778c6473",87093:"778c6473",87111:"778c6473",87493:"778c6473",87603:"778c6473",87815:"778c6473",87833:"778c6473",87855:"778c6473",87963:"778c6473",88005:"778c6473",88065:"778c6473",88199:"778c6473",88256:"778c6473",88383:"778c6473",88463:"778c6473",88525:"778c6473",88721:"778c6473",88822:"778c6473",88895:"778c6473",89073:"778c6473",89077:"778c6473",89107:"778c6473",89209:"778c6473",89287:"778c6473",89534:"778c6473",89989:"778c6473",90116:"778c6473",90126:"778c6473",90455:"778c6473",90503:"778c6473",90522:"778c6473",90736:"778c6473",90851:"778c6473",91010:"778c6473",91082:"778c6473",91242:"778c6473",91306:"778c6473",91315:"778c6473",91590:"778c6473",91613:"778c6473",91676:"778c6473",91741:"778c6473",91791:"778c6473",91802:"778c6473",91873:"778c6473",92019:"778c6473",92115:"778c6473",92266:"778c6473",92368:"778c6473",92556:"778c6473",92693:"778c6473",92919:"778c6473",93096:"778c6473",93142:"778c6473",93330:"778c6473",93338:"778c6473",93395:"778c6473",93428:"778c6473",93555:"778c6473",93797:"778c6473",93903:"778c6473",93946:"778c6473",93989:"778c6473",93998:"778c6473",94154:"778c6473",94220:"778c6473",94252:"778c6473",94385:"778c6473",94388:"778c6473",94406:"778c6473",94466:"778c6473",94589:"778c6473",94725:"778c6473",94783:"778c6473",94847:"778c6473",95059:"778c6473",95187:"778c6473",95319:"778c6473",95387:"778c6473",95537:"778c6473",95565:"778c6473",95724:"778c6473",95828:"778c6473",96393:"778c6473",96617:"778c6473",96685:"778c6473",96793:"778c6473",96827:"778c6473",96914:"778c6473",96939:"778c6473",96984:"778c6473",97098:"778c6473",97180:"778c6473",97213:"778c6473",97569:"778c6473",97694:"778c6473",97770:"778c6473",97884:"778c6473",97940:"778c6473",98137:"778c6473",98205:"778c6473",98571:"778c6473",98672:"778c6473",98690:"778c6473",98698:"778c6473",98798:"778c6473",99032:"778c6473",99153:"778c6473",99435:"778c6473",99736:"778c6473",99740:"778c6473",99763:"778c6473",99806:"778c6473",99979:"778c6473"}[_]+".chunk.css"}}(),function(){__webpack_require__.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(_){if(typeof window=="object")return window}}()}(),function(){__webpack_require__.o=function(_,m){return Object.prototype.hasOwnProperty.call(_,m)}}(),function(){var _={},m="nocobase-docs:";__webpack_require__.l=function(e,o,r,n){if(_[e]){_[e].push(o);return}var i,s;if(r!==void 0)for(var I=document.getElementsByTagName("script"),c=0;c0})),Ro=zt({routesById:et,routeComponents:lo,parentId:wo.id,loadingComponent:It.loadingComponent,reactRouter5Compat:It.reactRouter5Compat});return Ro.length>0&&(wo.children=Ro,wo.routes=Ro),wo})}function mn(It){var et=(0,Ra.useParams)(),Rn=(0,je.Z)((0,je.Z)({},It),{},{to:(0,Ra.generatePath)(It.to,et)});return f.createElement(Ra.Navigate,(0,Ja.Z)({replace:!0},Rn))}function _n(It){var et=It.route,Rn=et.redirect,lo=(0,Na.Z)(et,bn),co=It.reactRouter5Compat?Xn:eo;return(0,je.Z)({element:Rn?f.createElement(mn,{to:Rn}):f.createElement(dn.X.Provider,{value:{route:It.route}},f.createElement(co,{loader:f.memo(It.routeComponent),loadingComponent:It.loadingComponent||Zn,hasChildren:It.hasChildren}))},lo)}function Zn(){return f.createElement("div",null)}function Xn(It){var et=(0,dn.Q)(),Rn=et.route,lo=(0,Aa.Ov)(),co=lo.history,wo=lo.clientRoutes,Ro=(0,Ra.useParams)(),Go={params:Ro,isExact:!0,path:Rn.path,url:co.location.pathname},lr=It.loader;return f.createElement(f.Suspense,{fallback:f.createElement(It.loadingComponent,null)},f.createElement(lr,{location:co.location,match:Go,history:co,params:Ro,route:Rn,routes:wo},It.hasChildren&&f.createElement(Ra.Outlet,null)))}function eo(It){var et=It.loader;return f.createElement(f.Suspense,{fallback:f.createElement(It.loadingComponent,null)},f.createElement(et,null))}var Vn=null;function to(){return Vn}function yo(It){var et=It.history,Rn=f.useState({action:et.action,location:et.location}),lo=(0,Ve.Z)(Rn,2),co=lo[0],wo=lo[1];return(0,f.useLayoutEffect)(function(){return et.listen(wo)},[et]),(0,f.useLayoutEffect)(function(){function Ro(Go){It.pluginManager.applyPlugins({key:"onRouteChange",type:"event",args:{routes:It.routes,clientRoutes:It.clientRoutes,location:Go.location,action:Go.action,basename:It.basename,isFirst:!!Go.isFirst}})}return Ro({location:co.location,action:co.action,isFirst:!0}),et.listen(Ro)},[et,It.routes,It.clientRoutes]),f.createElement(Ra.Router,{navigator:et,location:co.location,basename:It.basename},It.children)}function no(){var It=(0,Aa.Ov)(),et=It.clientRoutes;return(0,Ra.useRoutes)(et)}var so=["innerProvider","i18nProvider","accessProvider","dataflowProvider","outerProvider","rootContainer"],Kn=function(et,Rn){var lo=et.basename||"/",co=zt({routesById:et.routes,routeComponents:et.routeComponents,loadingComponent:et.loadingComponent,reactRouter5Compat:et.reactRouter5Compat});et.pluginManager.applyPlugins({key:"patchClientRoutes",type:"event",args:{routes:co}});for(var wo=f.createElement(yo,{basename:lo,pluginManager:et.pluginManager,routes:et.routes,clientRoutes:co,history:et.history},Rn),Ro=0,Go=so;Ro1&&location.pathname.endsWith("/")&&history.replaceState({},"",location.pathname.slice(0,-1)+location.search+location.hash),function(){var It=typeof navigator!="undefined"&&navigator.cookieEnabled&&typeof window.localStorage!="undefined"&&localStorage.getItem("dumi:prefers-color")||"light",et=window.matchMedia("(prefers-color-scheme: dark)").matches,Rn=["light","dark","auto"];document.documentElement.setAttribute("data-prefers-color",It===Rn[2]?et?Rn[1]:Rn[0]:Rn.indexOf(It)>-1?It:Rn[0])}(),Oo(),window.g_umi={version:"4.0.88"},(0,Le.rl)((0,Pe.We)())})()})(); }()); \ No newline at end of file diff --git a/welcome/changelog/0-template/index.html b/welcome/changelog/0-template/index.html index 114fbc830..b13255174 100644 --- a/welcome/changelog/0-template/index.html +++ b/welcome/changelog/0-template/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/changelog/20240519/index.html b/welcome/changelog/20240519/index.html index 114fbc830..b13255174 100644 --- a/welcome/changelog/20240519/index.html +++ b/welcome/changelog/20240519/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/changelog/20240607/index.html b/welcome/changelog/20240607/index.html index 114fbc830..b13255174 100644 --- a/welcome/changelog/20240607/index.html +++ b/welcome/changelog/20240607/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/community/contributing/index.html b/welcome/community/contributing/index.html index 114fbc830..b13255174 100644 --- a/welcome/community/contributing/index.html +++ b/welcome/community/contributing/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/community/faq/index.html b/welcome/community/faq/index.html index 114fbc830..b13255174 100644 --- a/welcome/community/faq/index.html +++ b/welcome/community/faq/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/community/thanks/index.html b/welcome/community/thanks/index.html index 114fbc830..b13255174 100644 --- a/welcome/community/thanks/index.html +++ b/welcome/community/thanks/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/community/translations/index.html b/welcome/community/translations/index.html index 114fbc830..b13255174 100644 --- a/welcome/community/translations/index.html +++ b/welcome/community/translations/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/deployment/create-nocobase-app/index.html b/welcome/getting-started/deployment/create-nocobase-app/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/deployment/create-nocobase-app/index.html +++ b/welcome/getting-started/deployment/create-nocobase-app/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/deployment/docker-compose/index.html b/welcome/getting-started/deployment/docker-compose/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/deployment/docker-compose/index.html +++ b/welcome/getting-started/deployment/docker-compose/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/deployment/env-note/index.html b/welcome/getting-started/deployment/env-note/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/deployment/env-note/index.html +++ b/welcome/getting-started/deployment/env-note/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/deployment/git-clone/index.html b/welcome/getting-started/deployment/git-clone/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/deployment/git-clone/index.html +++ b/welcome/getting-started/deployment/git-clone/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/deployment/index.html b/welcome/getting-started/deployment/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/deployment/index.html +++ b/welcome/getting-started/deployment/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/env/index.html b/welcome/getting-started/env/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/env/index.html +++ b/welcome/getting-started/env/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/installation/create-nocobase-app/index.html b/welcome/getting-started/installation/create-nocobase-app/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/installation/create-nocobase-app/index.html +++ b/welcome/getting-started/installation/create-nocobase-app/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/installation/docker-compose/index.html b/welcome/getting-started/installation/docker-compose/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/installation/docker-compose/index.html +++ b/welcome/getting-started/installation/docker-compose/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/installation/git-clone/index.html b/welcome/getting-started/installation/git-clone/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/installation/git-clone/index.html +++ b/welcome/getting-started/installation/git-clone/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/installation/index.html b/welcome/getting-started/installation/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/installation/index.html +++ b/welcome/getting-started/installation/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/plugin/index.html b/welcome/getting-started/plugin/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/plugin/index.html +++ b/welcome/getting-started/plugin/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/upgrading/create-nocobase-app/index.html b/welcome/getting-started/upgrading/create-nocobase-app/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/upgrading/create-nocobase-app/index.html +++ b/welcome/getting-started/upgrading/create-nocobase-app/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/upgrading/docker-compose/index.html b/welcome/getting-started/upgrading/docker-compose/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/upgrading/docker-compose/index.html +++ b/welcome/getting-started/upgrading/docker-compose/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/upgrading/git-clone/index.html b/welcome/getting-started/upgrading/git-clone/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/upgrading/git-clone/index.html +++ b/welcome/getting-started/upgrading/git-clone/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/getting-started/upgrading/index.html b/welcome/getting-started/upgrading/index.html index 114fbc830..b13255174 100644 --- a/welcome/getting-started/upgrading/index.html +++ b/welcome/getting-started/upgrading/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/how/index.html b/welcome/how/index.html index 114fbc830..b13255174 100644 --- a/welcome/how/index.html +++ b/welcome/how/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/introduction/features/index.html b/welcome/introduction/features/index.html index 114fbc830..b13255174 100644 --- a/welcome/introduction/features/index.html +++ b/welcome/introduction/features/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/introduction/index.html b/welcome/introduction/index.html index 114fbc830..b13255174 100644 --- a/welcome/introduction/index.html +++ b/welcome/introduction/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/introduction/why/index.html b/welcome/introduction/why/index.html index 114fbc830..b13255174 100644 --- a/welcome/introduction/why/index.html +++ b/welcome/introduction/why/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/20240519-changelog/index.html b/welcome/release/20240519-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/20240519-changelog/index.html +++ b/welcome/release/20240519-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/collection-templates/index.html b/welcome/release/collection-templates/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/collection-templates/index.html +++ b/welcome/release/collection-templates/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/formulas/index.html b/welcome/release/formulas/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/formulas/index.html +++ b/welcome/release/formulas/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/gantt/introduction/index.html b/welcome/release/gantt/introduction/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/gantt/introduction/index.html +++ b/welcome/release/gantt/introduction/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/index.html b/welcome/release/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/index.html +++ b/welcome/release/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/inherits/index.html b/welcome/release/inherits/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/inherits/index.html +++ b/welcome/release/inherits/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/logger/index.html b/welcome/release/logger/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/logger/index.html +++ b/welcome/release/logger/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/roadmap/index.html b/welcome/release/roadmap/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/roadmap/index.html +++ b/welcome/release/roadmap/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/tree-collection/index.html b/welcome/release/tree-collection/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/tree-collection/index.html +++ b/welcome/release/tree-collection/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/upgrade-to/v017/index.html b/welcome/release/upgrade-to/v017/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/upgrade-to/v017/index.html +++ b/welcome/release/upgrade-to/v017/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0040-changelog/index.html b/welcome/release/v0040-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0040-changelog/index.html +++ b/welcome/release/v0040-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0050-changelog/index.html b/welcome/release/v0050-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0050-changelog/index.html +++ b/welcome/release/v0050-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0060-changelog/index.html b/welcome/release/v0060-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0060-changelog/index.html +++ b/welcome/release/v0060-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0070-changelog/index.html b/welcome/release/v0070-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0070-changelog/index.html +++ b/welcome/release/v0070-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0071-changelog/index.html b/welcome/release/v0071-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0071-changelog/index.html +++ b/welcome/release/v0071-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0072-changelog/index.html b/welcome/release/v0072-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0072-changelog/index.html +++ b/welcome/release/v0072-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0073-changelog/index.html b/welcome/release/v0073-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0073-changelog/index.html +++ b/welcome/release/v0073-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0074-changelog/index.html b/welcome/release/v0074-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0074-changelog/index.html +++ b/welcome/release/v0074-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0075-changelog/index.html b/welcome/release/v0075-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0075-changelog/index.html +++ b/welcome/release/v0075-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0080-changelog/index.html b/welcome/release/v0080-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0080-changelog/index.html +++ b/welcome/release/v0080-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0091-changelog/index.html b/welcome/release/v0091-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0091-changelog/index.html +++ b/welcome/release/v0091-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0092-changelog/index.html b/welcome/release/v0092-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0092-changelog/index.html +++ b/welcome/release/v0092-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0093-changelog/index.html b/welcome/release/v0093-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0093-changelog/index.html +++ b/welcome/release/v0093-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0094-changelog/index.html b/welcome/release/v0094-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0094-changelog/index.html +++ b/welcome/release/v0094-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0100-changelog/index.html b/welcome/release/v0100-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0100-changelog/index.html +++ b/welcome/release/v0100-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0110-changelog/index.html b/welcome/release/v0110-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0110-changelog/index.html +++ b/welcome/release/v0110-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0120-changelog/index.html b/welcome/release/v0120-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0120-changelog/index.html +++ b/welcome/release/v0120-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0130-changelog/index.html b/welcome/release/v0130-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0130-changelog/index.html +++ b/welcome/release/v0130-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0140-changelog/index.html b/welcome/release/v0140-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0140-changelog/index.html +++ b/welcome/release/v0140-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0150-changelog/index.html b/welcome/release/v0150-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0150-changelog/index.html +++ b/welcome/release/v0150-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0160-changelog/index.html b/welcome/release/v0160-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0160-changelog/index.html +++ b/welcome/release/v0160-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0170-changelog/index.html b/welcome/release/v0170-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0170-changelog/index.html +++ b/welcome/release/v0170-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0180-changelog/index.html b/welcome/release/v0180-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0180-changelog/index.html +++ b/welcome/release/v0180-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0190-changelog/index.html b/welcome/release/v0190-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0190-changelog/index.html +++ b/welcome/release/v0190-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0200-changelog/index.html b/welcome/release/v0200-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0200-changelog/index.html +++ b/welcome/release/v0200-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v0210-changelog/index.html b/welcome/release/v0210-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v0210-changelog/index.html +++ b/welcome/release/v0210-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/welcome/release/v1001-changelog/index.html b/welcome/release/v1001-changelog/index.html index 114fbc830..b13255174 100644 --- a/welcome/release/v1001-changelog/index.html +++ b/welcome/release/v1001-changelog/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/:id/index.html b/~demos/:id/index.html index 114fbc830..b13255174 100644 --- a/~demos/:id/index.html +++ b/~demos/:id/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-api-client-router-demo-0/index.html b/~demos/docs-en-us-api-client-router-demo-0/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-api-client-router-demo-0/index.html +++ b/~demos/docs-en-us-api-client-router-demo-0/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-providers-demo-0/index.html b/~demos/docs-en-us-development-client-providers-demo-0/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-providers-demo-0/index.html +++ b/~demos/docs-en-us-development-client-providers-demo-0/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-providers-demo-1/index.html b/~demos/docs-en-us-development-client-providers-demo-1/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-providers-demo-1/index.html +++ b/~demos/docs-en-us-development-client-providers-demo-1/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-providers-demo-2/index.html b/~demos/docs-en-us-development-client-providers-demo-2/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-providers-demo-2/index.html +++ b/~demos/docs-en-us-development-client-providers-demo-2/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-styles-and-themes-demo-0/index.html b/~demos/docs-en-us-development-client-styles-and-themes-demo-0/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-styles-and-themes-demo-0/index.html +++ b/~demos/docs-en-us-development-client-styles-and-themes-demo-0/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-styles-and-themes-demo-1/index.html b/~demos/docs-en-us-development-client-styles-and-themes-demo-1/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-styles-and-themes-demo-1/index.html +++ b/~demos/docs-en-us-development-client-styles-and-themes-demo-1/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-styles-and-themes-demo-2/index.html b/~demos/docs-en-us-development-client-styles-and-themes-demo-2/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-styles-and-themes-demo-2/index.html +++ b/~demos/docs-en-us-development-client-styles-and-themes-demo-2/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-styles-and-themes-demo-3/index.html b/~demos/docs-en-us-development-client-styles-and-themes-demo-3/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-styles-and-themes-demo-3/index.html +++ b/~demos/docs-en-us-development-client-styles-and-themes-demo-3/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-styles-and-themes-demo-4/index.html b/~demos/docs-en-us-development-client-styles-and-themes-demo-4/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-styles-and-themes-demo-4/index.html +++ b/~demos/docs-en-us-development-client-styles-and-themes-demo-4/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-designable-demo-0/index.html b/~demos/docs-en-us-development-client-ui-schema-designable-demo-0/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-designable-demo-0/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-designable-demo-0/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-designable-demo-1/index.html b/~demos/docs-en-us-development-client-ui-schema-designable-demo-1/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-designable-demo-1/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-designable-demo-1/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-extending-demo-0/index.html b/~demos/docs-en-us-development-client-ui-schema-extending-demo-0/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-extending-demo-0/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-extending-demo-0/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-extending-demo-1/index.html b/~demos/docs-en-us-development-client-ui-schema-extending-demo-1/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-extending-demo-1/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-extending-demo-1/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-extending-demo-2/index.html b/~demos/docs-en-us-development-client-ui-schema-extending-demo-2/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-extending-demo-2/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-extending-demo-2/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-extending-demo-3/index.html b/~demos/docs-en-us-development-client-ui-schema-extending-demo-3/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-extending-demo-3/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-extending-demo-3/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-extending-demo-4/index.html b/~demos/docs-en-us-development-client-ui-schema-extending-demo-4/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-extending-demo-4/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-extending-demo-4/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-extending-demo-5/index.html b/~demos/docs-en-us-development-client-ui-schema-extending-demo-5/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-extending-demo-5/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-extending-demo-5/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-extending-demo-6/index.html b/~demos/docs-en-us-development-client-ui-schema-extending-demo-6/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-extending-demo-6/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-extending-demo-6/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-extending-demo-7/index.html b/~demos/docs-en-us-development-client-ui-schema-extending-demo-7/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-extending-demo-7/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-extending-demo-7/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-initializer-demo-schema-initializer-manager-add/index.html b/~demos/docs-en-us-development-client-ui-schema-initializer-demo-schema-initializer-manager-add/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-initializer-demo-schema-initializer-manager-add/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-initializer-demo-schema-initializer-manager-add/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-initializer-demo-use-schema-initializer-render/index.html b/~demos/docs-en-us-development-client-ui-schema-initializer-demo-use-schema-initializer-render/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-initializer-demo-use-schema-initializer-render/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-initializer-demo-use-schema-initializer-render/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-quick-start-demo-demo1/index.html b/~demos/docs-en-us-development-client-ui-schema-quick-start-demo-demo1/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-quick-start-demo-demo1/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-quick-start-demo-demo1/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-quick-start-demo-demo2/index.html b/~demos/docs-en-us-development-client-ui-schema-quick-start-demo-demo2/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-quick-start-demo-demo2/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-quick-start-demo-demo2/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-quick-start-demo-demo3/index.html b/~demos/docs-en-us-development-client-ui-schema-quick-start-demo-demo3/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-quick-start-demo-demo3/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-quick-start-demo-demo3/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-rendering-demo-0/index.html b/~demos/docs-en-us-development-client-ui-schema-rendering-demo-0/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-rendering-demo-0/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-rendering-demo-0/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-rendering-demo-1/index.html b/~demos/docs-en-us-development-client-ui-schema-rendering-demo-1/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-rendering-demo-1/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-rendering-demo-1/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-settings-demo-button/index.html b/~demos/docs-en-us-development-client-ui-schema-settings-demo-button/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-settings-demo-button/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-settings-demo-button/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-settings-demo-schema-settings-basic/index.html b/~demos/docs-en-us-development-client-ui-schema-settings-demo-schema-settings-basic/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-settings-demo-schema-settings-basic/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-settings-demo-schema-settings-basic/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add-item/index.html b/~demos/docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add-item/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add-item/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add-item/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add/index.html b/~demos/docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-settings-demo-schema-settings-manager-add/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-settings-demo-use-schema-settings-render/index.html b/~demos/docs-en-us-development-client-ui-schema-settings-demo-use-schema-settings-render/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-settings-demo-use-schema-settings-render/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-settings-demo-use-schema-settings-render/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-button/index.html b/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-button/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-button/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-button/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-custom/index.html b/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-custom/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-custom/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-custom/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-grid/index.html b/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-grid/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-grid/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-grid/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-schema-toolbar-basic/index.html b/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-schema-toolbar-basic/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-schema-toolbar-basic/index.html +++ b/~demos/docs-en-us-development-client-ui-schema-toolbar-demo-schema-toolbar-basic/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-0/index.html b/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-0/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-0/index.html +++ b/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-0/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-1/index.html b/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-1/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-1/index.html +++ b/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-1/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-2/index.html b/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-2/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-2/index.html +++ b/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-2/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file diff --git a/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-3/index.html b/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-3/index.html index 114fbc830..b13255174 100644 --- a/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-3/index.html +++ b/~demos/docs-en-us-welcome-release-v-0150-changelog-demo-3/index.html @@ -9,6 +9,6 @@
- + \ No newline at end of file