@nocobase/plugin-data-source-manager 2.1.0-alpha.4 → 2.1.0-alpha.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +79 -10
- package/client-v2.d.ts +2 -0
- package/client-v2.js +1 -0
- package/dist/ai/ai-employees/orin/ignored.d.ts +10 -0
- package/dist/ai/ai-employees/orin/ignored.js +59 -0
- package/dist/ai/ai-employees/orin/skills/data-modeling/SKILLS.md +245 -0
- package/dist/ai/{tools → ai-employees/orin/skills/data-modeling/tools}/defineCollections.js +47 -1
- package/dist/ai/{tools → ai-employees/orin/skills/data-modeling/tools}/intentRouter.js +1 -1
- package/dist/ai/{tools/data-query → common}/common.js +63 -11
- package/dist/ai/{tools/data-query → common}/utils.d.ts +1 -0
- package/dist/ai/{tools/data-query → common}/utils.js +15 -0
- package/dist/ai/skills/data-metadata/SKILLS.md +108 -0
- package/dist/ai/{tools → skills/data-metadata/tools}/getCollectionMetadata.js +2 -2
- package/dist/ai/{tools → skills/data-metadata/tools}/getCollectionNames.js +2 -2
- package/dist/ai/{tools → skills/data-metadata/tools}/getDataSources.js +2 -2
- package/dist/ai/{tools → skills/data-metadata/tools}/searchFieldMetadata.js +2 -2
- package/dist/ai/skills/data-query/SKILLS.md +246 -0
- package/dist/ai/skills/data-query/tools/dataQuery.js +282 -0
- package/dist/ai/{tools/data-query → skills/data-query/tools}/dataSourceCounting.js +12 -4
- package/dist/ai/skills/data-query/tools/dataSourceQuery.d.ts +10 -0
- package/dist/ai/{tools/data-query → skills/data-query/tools}/dataSourceQuery.js +12 -5
- package/dist/client/271.b3c0013cf976adf0.js +10 -0
- package/dist/client/369.6025f2112454fab1.js +10 -0
- package/dist/client/397.c8c6659cf3f7ac1c.js +10 -0
- package/dist/client/416.197712b8b93033c5.js +10 -0
- package/dist/client/420.0c3e3c9888e0ba31.js +10 -0
- package/dist/client/603.d6022bceb934f5b0.js +10 -0
- package/dist/client/644.b98e4b39058e9c32.js +10 -0
- package/dist/client/936.d5ab7aecb4eb6004.js +10 -0
- package/dist/client/index.js +1 -1
- package/dist/client-v2/167.c72713810e2d0526.js +10 -0
- package/dist/client-v2/426.3cd9f994a3145829.js +10 -0
- package/dist/client-v2/components/DataSourceForm.d.ts +17 -0
- package/dist/client-v2/field-interfaces/index.d.ts +13 -0
- package/dist/client-v2/index.d.ts +12 -0
- package/dist/client-v2/index.js +10 -0
- package/dist/client-v2/locale.d.ts +11 -0
- package/dist/client-v2/pages/DataSourceCollectionsPage.d.ts +10 -0
- package/dist/client-v2/pages/DataSourcesPage.d.ts +10 -0
- package/dist/client-v2/pages/components/CollectionsPage.d.ts +15 -0
- package/dist/client-v2/pages/components/FieldForm.d.ts +19 -0
- package/dist/client-v2/pages/components/FieldsPage.d.ts +15 -0
- package/dist/client-v2/pages/components/SqlCollectionConfigure.d.ts +62 -0
- package/dist/client-v2/pages/components/ViewCollectionConfigure.d.ts +27 -0
- package/dist/client-v2/pages/components/collectionFieldApi.d.ts +11 -0
- package/dist/client-v2/pages/components/collectionTemplateFieldInterfaces.d.ts +18 -0
- package/dist/client-v2/plugin.d.ts +188 -0
- package/dist/client-v2/runtime.d.ts +12 -0
- package/dist/client-v2/utils/compileLegacyTemplate.d.ts +13 -0
- package/dist/externalVersion.js +17 -13
- package/dist/locale/en-US.json +270 -3
- package/dist/locale/zh-CN.json +270 -3
- package/dist/node_modules/zod/index.cjs +1 -1
- package/dist/node_modules/zod/package.json +1 -1
- package/dist/server/mcp-post-processors.d.ts +24 -0
- package/dist/server/mcp-post-processors.js +158 -0
- package/dist/server/models/data-source.js +3 -13
- package/dist/server/plugin.js +2 -0
- package/dist/server/resourcers/data-sources-collections-fields.d.ts +1 -0
- package/dist/server/resourcers/data-sources-collections-fields.js +9 -0
- package/dist/server/services/external-field-apply.d.ts +23 -0
- package/dist/server/services/external-field-apply.js +208 -0
- package/dist/server/utils.js +6 -1
- package/dist/swagger/index.d.ts +326 -0
- package/dist/swagger/index.js +385 -0
- package/package.json +5 -2
- package/LICENSE.txt +0 -172
- package/dist/client/1a8cce8035a89dd9.js +0 -10
- package/dist/client/276bcf3de74bebd1.js +0 -10
- package/dist/client/2f7a418e7935984d.js +0 -10
- package/dist/client/689d3bec33ad2ec3.js +0 -10
- package/dist/client/d33eb40009bd7ec6.js +0 -10
- package/dist/client/dbf5ddf434ab29c0.js +0 -10
- package/dist/client/f528b165e77e3608.js +0 -10
- package/dist/client/fdae18574fda07af.js +0 -10
- /package/dist/ai/{tools → ai-employees/orin/skills/data-modeling/tools}/defineCollections.d.ts +0 -0
- /package/dist/ai/{tools → ai-employees/orin/skills/data-modeling/tools}/intentRouter.d.ts +0 -0
- /package/dist/ai/{tools/data-query → common}/common.d.ts +0 -0
- /package/dist/ai/{tools → skills/data-metadata/tools}/getCollectionMetadata.d.ts +0 -0
- /package/dist/ai/{tools → skills/data-metadata/tools}/getCollectionNames.d.ts +0 -0
- /package/dist/ai/{tools → skills/data-metadata/tools}/getDataSources.d.ts +0 -0
- /package/dist/ai/{tools → skills/data-metadata/tools}/searchFieldMetadata.d.ts +0 -0
- /package/dist/ai/{tools/data-query/dataSourceCounting.d.ts → skills/data-query/tools/dataQuery.d.ts} +0 -0
- /package/dist/ai/{tools/data-query/dataSourceQuery.d.ts → skills/data-query/tools/dataSourceCounting.d.ts} +0 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
var __create = Object.create;
|
|
11
|
+
var __defProp = Object.defineProperty;
|
|
12
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
13
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
14
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
15
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
16
|
+
var __export = (target, all) => {
|
|
17
|
+
for (var name in all)
|
|
18
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
19
|
+
};
|
|
20
|
+
var __copyProps = (to, from, except, desc) => {
|
|
21
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
22
|
+
for (let key of __getOwnPropNames(from))
|
|
23
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
24
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
25
|
+
}
|
|
26
|
+
return to;
|
|
27
|
+
};
|
|
28
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
29
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
30
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
31
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
32
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
33
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
34
|
+
mod
|
|
35
|
+
));
|
|
36
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
37
|
+
var dataQuery_exports = {};
|
|
38
|
+
__export(dataQuery_exports, {
|
|
39
|
+
default: () => dataQuery_default
|
|
40
|
+
});
|
|
41
|
+
module.exports = __toCommonJS(dataQuery_exports);
|
|
42
|
+
var import_acl = require("@nocobase/acl");
|
|
43
|
+
var import_ai = require("@nocobase/ai");
|
|
44
|
+
var import_plugin_acl = require("@nocobase/plugin-acl");
|
|
45
|
+
var import_utils = require("../../../common/utils");
|
|
46
|
+
var import_package = __toESM(require("../../../../../package.json"));
|
|
47
|
+
const queryFieldSchema = {
|
|
48
|
+
anyOf: [
|
|
49
|
+
{ type: "string" },
|
|
50
|
+
{
|
|
51
|
+
type: "array",
|
|
52
|
+
items: { type: "string" },
|
|
53
|
+
minItems: 1
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
};
|
|
57
|
+
const queryMeasureSchema = {
|
|
58
|
+
type: "object",
|
|
59
|
+
additionalProperties: true,
|
|
60
|
+
required: ["field"],
|
|
61
|
+
properties: {
|
|
62
|
+
field: queryFieldSchema,
|
|
63
|
+
type: {
|
|
64
|
+
type: "string",
|
|
65
|
+
description: "Optional field type hint."
|
|
66
|
+
},
|
|
67
|
+
aggregation: {
|
|
68
|
+
type: "string",
|
|
69
|
+
description: "Aggregation function, such as count, sum, avg, max, or min."
|
|
70
|
+
},
|
|
71
|
+
alias: {
|
|
72
|
+
type: "string",
|
|
73
|
+
description: "Output field alias."
|
|
74
|
+
},
|
|
75
|
+
distinct: {
|
|
76
|
+
type: "boolean",
|
|
77
|
+
description: "Whether to apply distinct before aggregation."
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const queryDimensionSchema = {
|
|
82
|
+
type: "object",
|
|
83
|
+
additionalProperties: true,
|
|
84
|
+
required: ["field"],
|
|
85
|
+
properties: {
|
|
86
|
+
field: queryFieldSchema,
|
|
87
|
+
type: {
|
|
88
|
+
type: "string",
|
|
89
|
+
description: "Optional field type hint."
|
|
90
|
+
},
|
|
91
|
+
alias: {
|
|
92
|
+
type: "string",
|
|
93
|
+
description: "Output field alias."
|
|
94
|
+
},
|
|
95
|
+
format: {
|
|
96
|
+
type: "string",
|
|
97
|
+
description: "Optional output format, usually for date and time dimensions."
|
|
98
|
+
},
|
|
99
|
+
options: {
|
|
100
|
+
type: "object",
|
|
101
|
+
description: "Additional formatter options.",
|
|
102
|
+
additionalProperties: true
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
const queryOrderSchema = {
|
|
107
|
+
type: "object",
|
|
108
|
+
additionalProperties: true,
|
|
109
|
+
required: ["field"],
|
|
110
|
+
properties: {
|
|
111
|
+
field: queryFieldSchema,
|
|
112
|
+
alias: {
|
|
113
|
+
type: "string",
|
|
114
|
+
description: "Alias to sort by when the selected field is projected with an alias."
|
|
115
|
+
},
|
|
116
|
+
order: {
|
|
117
|
+
type: "string",
|
|
118
|
+
enum: ["asc", "desc"],
|
|
119
|
+
description: "Sort direction."
|
|
120
|
+
},
|
|
121
|
+
nulls: {
|
|
122
|
+
type: "string",
|
|
123
|
+
enum: ["default", "first", "last"],
|
|
124
|
+
description: "Null value ordering."
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
const AggregateQuerySchema = {
|
|
129
|
+
type: "object",
|
|
130
|
+
additionalProperties: false,
|
|
131
|
+
required: ["collectionName"],
|
|
132
|
+
properties: {
|
|
133
|
+
dataSource: {
|
|
134
|
+
type: "string",
|
|
135
|
+
description: "Data source key. Defaults to main."
|
|
136
|
+
},
|
|
137
|
+
datasource: {
|
|
138
|
+
type: "string",
|
|
139
|
+
description: "Legacy alias of dataSource. Defaults to main."
|
|
140
|
+
},
|
|
141
|
+
collectionName: {
|
|
142
|
+
type: "string",
|
|
143
|
+
description: "Collection name to query."
|
|
144
|
+
},
|
|
145
|
+
measures: {
|
|
146
|
+
type: "array",
|
|
147
|
+
description: "Measure definitions for aggregate query.",
|
|
148
|
+
items: queryMeasureSchema
|
|
149
|
+
},
|
|
150
|
+
dimensions: {
|
|
151
|
+
type: "array",
|
|
152
|
+
description: "Dimension definitions for grouped query.",
|
|
153
|
+
items: queryDimensionSchema
|
|
154
|
+
},
|
|
155
|
+
orders: {
|
|
156
|
+
type: "array",
|
|
157
|
+
description: "Order definitions for aggregate query.",
|
|
158
|
+
items: queryOrderSchema
|
|
159
|
+
},
|
|
160
|
+
filter: {
|
|
161
|
+
type: "object",
|
|
162
|
+
description: 'Filter object applied before aggregation. Pass a structured object, not a JSON string. Follow the frontend NocoBase date filter contract: use only $dateOn, $dateNotOn, $dateBefore, $dateAfter, $dateNotBefore, $dateNotAfter, $dateBetween, $empty, and $notEmpty for calendar-style date filtering; prefer YYYY-MM-DD, YYYY-MM, YYYY, relative period objects, or ["start","end"] date ranges; do not expand month/day queries into UTC boundary timestamps.',
|
|
163
|
+
additionalProperties: true
|
|
164
|
+
},
|
|
165
|
+
having: {
|
|
166
|
+
type: "object",
|
|
167
|
+
description: "Having object applied after grouping. Pass a structured object, not a JSON string. Reference selected measure aliases or selected field paths here, for example { count: { $gt: 10 } }.",
|
|
168
|
+
additionalProperties: true
|
|
169
|
+
},
|
|
170
|
+
offset: {
|
|
171
|
+
type: "number",
|
|
172
|
+
description: "Offset for query result rows."
|
|
173
|
+
},
|
|
174
|
+
limit: {
|
|
175
|
+
type: "number",
|
|
176
|
+
description: `Maximum number of rows to return. Defaults to 50 and is capped at ${import_utils.MAX_QUERY_LIMIT}.`
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
function getDataSourceKey(args) {
|
|
181
|
+
return args.dataSource || args.datasource || "main";
|
|
182
|
+
}
|
|
183
|
+
function getTimezone(ctx, args) {
|
|
184
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
185
|
+
const value = ((_a = ctx.get) == null ? void 0 : _a.call(ctx, "x-timezone")) || ((_c = (_b = ctx.request) == null ? void 0 : _b.get) == null ? void 0 : _c.call(_b, "x-timezone")) || ((_e = (_d = ctx.request) == null ? void 0 : _d.header) == null ? void 0 : _e["x-timezone"]) || ((_g = (_f = ctx.req) == null ? void 0 : _f.headers) == null ? void 0 : _g["x-timezone"]);
|
|
186
|
+
return Array.isArray(value) ? value[0] : value;
|
|
187
|
+
}
|
|
188
|
+
var dataQuery_default = (0, import_ai.defineTools)({
|
|
189
|
+
scope: "SPECIFIED",
|
|
190
|
+
defaultPermission: "ALLOW",
|
|
191
|
+
introduction: {
|
|
192
|
+
title: `{{t("ai.tools.dataQuery.title", { ns: "${import_package.default.name}" })}}`,
|
|
193
|
+
about: `{{t("ai.tools.dataQuery.about", { ns: "${import_package.default.name}" })}}`
|
|
194
|
+
},
|
|
195
|
+
definition: {
|
|
196
|
+
name: "dataQuery",
|
|
197
|
+
description: "Run the repository query action on a collection with measures, dimensions, orders, filter, and having.",
|
|
198
|
+
schema: AggregateQuerySchema
|
|
199
|
+
},
|
|
200
|
+
invoke: async (ctx, args) => {
|
|
201
|
+
var _a, _b, _c, _d, _e;
|
|
202
|
+
const filterError = (0, import_utils.getStructuredQueryArgError)("filter", args.filter);
|
|
203
|
+
if (filterError) {
|
|
204
|
+
return {
|
|
205
|
+
status: "error",
|
|
206
|
+
content: filterError
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
const havingError = (0, import_utils.getStructuredQueryArgError)("having", args.having);
|
|
210
|
+
if (havingError) {
|
|
211
|
+
return {
|
|
212
|
+
status: "error",
|
|
213
|
+
content: havingError
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
const dataSourceKey = getDataSourceKey(args);
|
|
217
|
+
const ds = ctx.app.dataSourceManager.get(dataSourceKey);
|
|
218
|
+
if (!ds) {
|
|
219
|
+
return {
|
|
220
|
+
status: "error",
|
|
221
|
+
content: `Data source "${dataSourceKey}" not found`
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
const collection = ds.collectionManager.getCollection(args.collectionName);
|
|
225
|
+
if (!collection) {
|
|
226
|
+
return {
|
|
227
|
+
status: "error",
|
|
228
|
+
content: `Collection "${args.collectionName}" not found in data source "${dataSourceKey}"`
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
const { limit, offset } = (0, import_utils.normalizeLimitOffset)(args, { defaultLimit: 50, maxLimit: import_utils.MAX_QUERY_LIMIT });
|
|
232
|
+
const timezone = getTimezone(ctx, args);
|
|
233
|
+
if (!((_a = args.measures) == null ? void 0 : _a.length) && !((_b = args.dimensions) == null ? void 0 : _b.length)) {
|
|
234
|
+
return {
|
|
235
|
+
status: "error",
|
|
236
|
+
content: "Aggregate query requires at least one measure or dimension"
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
try {
|
|
240
|
+
const db = ds.collectionManager.db || ctx.db;
|
|
241
|
+
const result = await (0, import_plugin_acl.applyQueryPermission)({
|
|
242
|
+
acl: ds.acl || ctx.app.acl,
|
|
243
|
+
db,
|
|
244
|
+
resourceName: args.collectionName,
|
|
245
|
+
query: {
|
|
246
|
+
measures: args.measures,
|
|
247
|
+
dimensions: args.dimensions,
|
|
248
|
+
orders: args.orders,
|
|
249
|
+
filter: args.filter,
|
|
250
|
+
having: args.having,
|
|
251
|
+
limit,
|
|
252
|
+
offset
|
|
253
|
+
},
|
|
254
|
+
currentUser: (_c = ctx.state) == null ? void 0 : _c.currentUser,
|
|
255
|
+
currentRole: (_d = ctx.state) == null ? void 0 : _d.currentRole,
|
|
256
|
+
currentRoles: (_e = ctx.state) == null ? void 0 : _e.currentRoles,
|
|
257
|
+
timezone,
|
|
258
|
+
state: ctx.state
|
|
259
|
+
});
|
|
260
|
+
const queryResult = await db.getRepository(args.collectionName).query({
|
|
261
|
+
...result.query,
|
|
262
|
+
context: ctx,
|
|
263
|
+
timezone
|
|
264
|
+
});
|
|
265
|
+
return {
|
|
266
|
+
status: "success",
|
|
267
|
+
content: JSON.stringify((0, import_utils.truncateLongStrings)(queryResult))
|
|
268
|
+
};
|
|
269
|
+
} catch (error) {
|
|
270
|
+
if (error instanceof import_acl.NoPermissionError) {
|
|
271
|
+
return {
|
|
272
|
+
status: "error",
|
|
273
|
+
content: "No permissions"
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
return {
|
|
277
|
+
status: "error",
|
|
278
|
+
content: (error == null ? void 0 : error.message) || "Aggregate query failed"
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
});
|
|
@@ -40,10 +40,11 @@ __export(dataSourceCounting_exports, {
|
|
|
40
40
|
});
|
|
41
41
|
module.exports = __toCommonJS(dataSourceCounting_exports);
|
|
42
42
|
var import_ai = require("@nocobase/ai");
|
|
43
|
-
var import_common = require("
|
|
44
|
-
var
|
|
43
|
+
var import_common = require("../../../common/common");
|
|
44
|
+
var import_utils = require("../../../common/utils");
|
|
45
|
+
var import_package = __toESM(require("../../../../../package.json"));
|
|
45
46
|
var dataSourceCounting_default = (0, import_ai.defineTools)({
|
|
46
|
-
scope: "
|
|
47
|
+
scope: "SPECIFIED",
|
|
47
48
|
defaultPermission: "ALLOW",
|
|
48
49
|
introduction: {
|
|
49
50
|
title: `{{t("ai.tools.dataSourceCounting.title", { ns: "${import_package.default.name}" })}}`,
|
|
@@ -51,10 +52,17 @@ var dataSourceCounting_default = (0, import_ai.defineTools)({
|
|
|
51
52
|
},
|
|
52
53
|
definition: {
|
|
53
54
|
name: "dataSourceCounting",
|
|
54
|
-
description: "Use dataSource, collectionName, and collection fields to query data from the database, get total count of records",
|
|
55
|
+
description: "Use dataSource, collectionName, and collection fields to query data from the database, get total count of records. The filter argument must be a structured object, not a JSON string.",
|
|
55
56
|
schema: import_common.ArgSchema
|
|
56
57
|
},
|
|
57
58
|
invoke: async (ctx, args) => {
|
|
59
|
+
const filterError = (0, import_utils.getStructuredQueryArgError)("filter", args.filter);
|
|
60
|
+
if (filterError) {
|
|
61
|
+
return {
|
|
62
|
+
status: "error",
|
|
63
|
+
content: filterError
|
|
64
|
+
};
|
|
65
|
+
}
|
|
58
66
|
const plugin = ctx.app.pm.get("ai");
|
|
59
67
|
const content = await plugin.aiContextDatasourceManager.query(ctx, { ...args, offset: 0, limit: 1 });
|
|
60
68
|
return {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
declare const _default: import("@nocobase/ai").ToolsOptions;
|
|
10
|
+
export default _default;
|
|
@@ -40,11 +40,11 @@ __export(dataSourceQuery_exports, {
|
|
|
40
40
|
});
|
|
41
41
|
module.exports = __toCommonJS(dataSourceQuery_exports);
|
|
42
42
|
var import_ai = require("@nocobase/ai");
|
|
43
|
-
var import_common = require("
|
|
44
|
-
var import_utils = require("
|
|
45
|
-
var import_package = __toESM(require("
|
|
43
|
+
var import_common = require("../../../common/common");
|
|
44
|
+
var import_utils = require("../../../common/utils");
|
|
45
|
+
var import_package = __toESM(require("../../../../../package.json"));
|
|
46
46
|
var dataSourceQuery_default = (0, import_ai.defineTools)({
|
|
47
|
-
scope: "
|
|
47
|
+
scope: "SPECIFIED",
|
|
48
48
|
defaultPermission: "ALLOW",
|
|
49
49
|
introduction: {
|
|
50
50
|
title: `{{t("ai.tools.dataSourceQuery.title", { ns: "${import_package.default.name}" })}}`,
|
|
@@ -52,10 +52,17 @@ var dataSourceQuery_default = (0, import_ai.defineTools)({
|
|
|
52
52
|
},
|
|
53
53
|
definition: {
|
|
54
54
|
name: "dataSourceQuery",
|
|
55
|
-
description: "Use dataSource, collectionName, and collection fields to query data from the database",
|
|
55
|
+
description: "Use dataSource, collectionName, and collection fields to query data from the database. The filter argument must be a structured object, not a JSON string.",
|
|
56
56
|
schema: import_common.ArgSchema
|
|
57
57
|
},
|
|
58
58
|
invoke: async (ctx, args) => {
|
|
59
|
+
const filterError = (0, import_utils.getStructuredQueryArgError)("filter", args.filter);
|
|
60
|
+
if (filterError) {
|
|
61
|
+
return {
|
|
62
|
+
status: "error",
|
|
63
|
+
content: filterError
|
|
64
|
+
};
|
|
65
|
+
}
|
|
59
66
|
const plugin = ctx.app.pm.get("ai");
|
|
60
67
|
const { limit, offset } = (0, import_utils.normalizeLimitOffset)(args, { defaultLimit: 50, maxLimit: import_utils.MAX_QUERY_LIMIT });
|
|
61
68
|
const content = await plugin.aiContextDatasourceManager.query(ctx, {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
"use strict";(self.webpackChunk_nocobase_plugin_data_source_manager=self.webpackChunk_nocobase_plugin_data_source_manager||[]).push([["271"],{61:function(e,t,n){n.r(t),n.d(t,{DatabaseConnectionManagerPane:function(){return J}});var r=n(166),o=n(342),a=n(59),l=n(155),i=n.n(l),c=n(953),u=n(719),s=n(221),p=n(135),f=n(375),d=n(230),m=n(691),y=n(872),b=n(694);function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function h(e,t,n,r,o,a,l){try{var i=e[a](l),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,o)}function g(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function C(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function x(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return v(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var S=(0,b.observer)(function(e){var t,n,r,c,u,s,p,d,m,y,b=(0,o.useAPIClient)(),v=x((0,l.useState)(!1),2),S=v[0],w=v[1],A=x((0,l.useState)(""),2),k=A[0],O=A[1],P=x((0,l.useState)([]),2),E=P[0],j=P[1],D=x((0,l.useState)(new Map),2),T=D[0],I=D[1],M=x((0,l.useState)(!1),2),q=M[0],R=M[1],V=(0,l.useRef)(),_=e.NAMESPACE,F=e.t,U=(null==(n=e.formValues)||null==(t=n.options)?void 0:t.addAllCollections)===void 0||(null==(c=e.formValues)||null==(r=c.options)?void 0:r.addAllCollections),$=x((0,l.useState)(U),2),L=$[0],N=$[1],z=(0,l.useMemo)(function(){var t=e.value&&e.value.length>0?e.value:E;return k.trim()&&(t=t.filter(function(e){var t;return null==(t=e.name)?void 0:t.toLowerCase().includes(k.toLowerCase())})),t},[e.value,E,k]),B=(0,l.useMemo)(function(){return e.value&&e.value.length>0?e.value:E},[e.value,E]),W=(0,l.useMemo)(function(){var t,n=null==(t=e.options)?void 0:t.tablePrefix;return z.map(function(e){var t,r=!1;return e.required||q?r=!0:T.get(e.name)&&(!n||!n.trim()||(null==(t=e.name)?void 0:t.startsWith(n.trim())))&&(r=!0),C(g({},e),{selected:r})})},[z,T,q,null==(u=e.options)?void 0:u.tablePrefix]),K=(0,l.useRef)(null==(s=e.options)?void 0:s.tablePrefix);(0,l.useEffect)(function(){var t=null==(n=e.options)?void 0:n.tablePrefix;if(K.current!==t&&E.length>0){K.current=t;var n,r,o=E.map(function(e){var n,r=!1;return e.required?r=!0:T.get(e.name)&&(!t||!t.trim()||(null==(n=e.name)?void 0:n.startsWith(t.trim())))&&(r=!0),C(g({},e),{selected:r})});null==(r=e.onChange)||r.call(e,o)}},[null==(p=e.options)?void 0:p.tablePrefix,E.length,T]),(0,l.useEffect)(function(){if(B.length>0){var e=new Map;B.forEach(function(t){t.selected&&e.set(t.name,!0)}),I(e),R(!1)}},[B.length]);var G=(0,l.useCallback)(function(t){N(t),e.formSetValues&&e.formSetValues("options.addAllCollections",t)},[e.formSetValues]),H=(0,l.useCallback)(function(){var t;return(t=function(){var t,n,r,o,l,i,c,u,s,p,f,d,m;return function(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,r=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(y){switch(y.label){case 0:if(t=e.dataSourceKey,n=e.formValues,r=e.onChange,o=e.from,l=(null==n?void 0:n.options)||{},i=F("is required"),"oracle"!==n.type){if(!t)return a.message.error(F("Data source name",{ns:_})+i),[2];if(!l.host)return a.message.error(F("Host",{ns:_})+i),[2];if(!l.port)return a.message.error(F("Port",{ns:_})+i),[2];if(!l.database)return a.message.error(F("Database",{ns:_})+i),[2];if(!l.username)return a.message.error(F("Username",{ns:_})+i),[2]}w(!0),y.label=1;case 1:return y.trys.push([1,3,4,5]),[4,b.resource("dataSources").readTables({values:g({dataSourceKey:t},"create"===o?{dbOptions:C(g({},l),{type:n.type||"mysql"})}:{})})];case 2:return j(u=((null==(c=y.sent())?void 0:c.data)||{}).data||[]),s=0===T.size&&e.value&&e.value.length>0,p=T,s&&(f=new Map,e.value.forEach(function(e){e.selected&&f.set(e.name,!0)}),I(f),p=f),d=l.tablePrefix,m=u.map(function(e){var t,n=!1;return e.required?n=!0:p.get(e.name)&&(!d||!d.trim()||(null==(t=e.name)?void 0:t.startsWith(d.trim())))&&(n=!0),C(g({},e),{selected:n})}),r&&r(m),[3,5];case 3:return console.error("Error loading collections:",y.sent()),a.message.error(F("Failed to load collections",{ns:_})),[3,5];case 4:return w(!1),[7];case 5:return[2]}})},function(){var e=this,n=arguments;return new Promise(function(r,o){var a=t.apply(e,n);function l(e){h(a,r,o,l,i,"next",e)}function i(e){h(a,r,o,l,i,"throw",e)}l(void 0)})})()},[e.dataSourceKey,e.formValues,e.options,e.from,e.tablePrefix,b,F,_]),J=(0,l.useCallback)(function(e){V.current&&clearTimeout(V.current),V.current=setTimeout(function(){O(e)},300)},[]);(0,l.useEffect)(function(){return function(){V.current&&clearTimeout(V.current)}},[]);var Q=(0,l.useMemo)(function(){var t,n=null==(t=e.options)?void 0:t.tablePrefix,r=B.filter(function(e){var t;return!!e.required||!!T.get(e.name)&&!!(!n||!n.trim()||(null==(t=e.name)?void 0:t.startsWith(n.trim())))}).length,o=W.filter(function(e){return!e.required}),a=W.filter(function(e){return e.selected||e.required}).length;return{isAllSelected:o.length>0&&a===W.length,isIndeterminate:a>0&&a<W.length,selectedCount:r,isAtLimit:r>=500}},[W,B,T,null==(d=e.options)?void 0:d.tablePrefix]),X=Q.isAllSelected,Y=Q.isIndeterminate,Z=Q.selectedCount,ee=Q.isAtLimit,et=(0,l.useCallback)(function(t){var n,r=null==(n=e.options)?void 0:n.tablePrefix;if(t){var o=B.filter(function(e){var t;return!!e.required||!!T.get(e.name)&&!!(!r||!r.trim()||(null==(t=e.name)?void 0:t.startsWith(r.trim())))}).length,l=z.filter(function(e){return!e.required&&!T.get(e.name)}).length;if(o>=500)return;l>500-o&&a.message.warning(F("Maximum selection limit exceeded. To ensure system performance, you can select up to {{limit}} collections.",{ns:_,limit:500}))}R(t);var i=function(){var n,o=new Map(T),a=0,l=500-B.filter(function(e){var t;return!!e.required||!!T.get(e.name)&&!!(!r||!r.trim()||(null==(t=e.name)?void 0:t.startsWith(r.trim())))}).length;z.forEach(function(e){!e.required&&(t?a<l&&!T.get(e.name)&&(o.set(e.name,!0),a++):o.delete(e.name))}),I(o);var i=B.map(function(e){var t,n=!1;return e.required?n=!0:o.get(e.name)&&(!r||!r.trim()||(null==(t=e.name)?void 0:t.startsWith(r.trim())))&&(n=!0),C(g({},e),{selected:n})});null==(n=e.onChange)||n.call(e,i),R(!1)};if("u">typeof MessageChannel){var c=new MessageChannel;c.port2.onmessage=function(){return i()},c.port1.postMessage(null)}else setTimeout(i,0)},[z,B,T,e.onChange,null==(m=e.options)?void 0:m.tablePrefix,F,_]),en=(0,l.useCallback)(function(t,n){var r=W[t];if(r&&r.selected!==n){if(n){var o,l=null==(o=e.options)?void 0:o.tablePrefix,i=B.filter(function(e){var t;return!!e.required||!!T.get(e.name)&&!!(!l||!l.trim()||(null==(t=e.name)?void 0:t.startsWith(l.trim())))}).length;if(i>=500)return;i+1===500&&a.message.warning(F("Maximum selection limit reached. To ensure system performance, you can select up to {{limit}} collections at once.",{ns:_,limit:500}))}var c=new Map(T);n?c.set(r.name,!0):(c.delete(r.name),R(!1)),I(c),setTimeout(function(){var t,n,r=null==(t=e.options)?void 0:t.tablePrefix,o=B.map(function(e){var t,n=!1;return e.required?n=!0:c.get(e.name)&&(!r||!r.trim()||(null==(t=e.name)?void 0:t.startsWith(r.trim())))&&(n=!0),C(g({},e),{selected:n})});null==(n=e.onChange)||n.call(e,o)},0)}},[W,B,T,e.onChange,null==(y=e.options)?void 0:y.tablePrefix,F,_]),er=(0,l.useCallback)(function(e){J(e)},[J]),eo=(0,l.useCallback)(function(){O(""),V.current&&clearTimeout(V.current)},[]),ea=(0,l.useCallback)(function(){I(new Map),R(!1);var t,n=B.map(function(e){return C(g({},e),{selected:e.required||!1})});null==(t=e.onChange)||t.call(e,n)},[B,e.onChange]),el=(0,l.useMemo)(function(){var e=i().memo(function(e){var t=e.selected,n=e.required,r=e.index,o=e.onChange,l=(e.name,e.disabled);return i().createElement(a.Checkbox,{checked:n||t,disabled:n||l,onChange:function(e){return o(r,e.target.checked)}})}),t=i().memo(function(e){var t=e.text;return i().createElement("span",{style:{paddingLeft:"40px"}},t)}),n=[{title:i().createElement("div",{style:{textAlign:"center"}},F("Display name",{ns:_})),dataIndex:"name",key:"name",align:"left",width:"50%",render:function(e){return i().createElement(t,{text:e})}}];if(!L){var r=Z>=450,o=B.filter(function(e){return T.get(e.name)||e.required}).length,l=W.filter(function(e){return!e.selected&&!e.required}).length;n.push({title:i().createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:4}},i().createElement(a.Checkbox,{checked:X,indeterminate:Y,disabled:ee&&!X&&!(o+l<=500),onChange:function(e){return et(e.target.checked)}}),i().createElement("span",{style:r?{color:"#ff7a00"}:{}},F("Add",{ns:_})," (",Z,"/",B.length,")"),Z>0&&i().createElement(a.Tooltip,{title:F("Reset selection",{ns:_})},i().createElement(a.Button,{type:"text",size:"small",icon:i().createElement(f.ClearOutlined,null),onClick:ea,style:{padding:"0 4px",height:"16px",minWidth:"16px",fontSize:"12px",color:"#666"}}))),dataIndex:"selected",key:"selected",align:"center",width:"30%",render:function(t,n,r){var o=ee&&!t&&!n.required;return i().createElement(e,{selected:t,required:n.required,index:r,name:n.name,disabled:o,onChange:en})}})}return n},[F,X,Y,et,en,L,_,Z,B.length,ee,T,W,ea]);return i().createElement("div",null,i().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",margin:"8px 0"}},i().createElement("div",null,i().createElement(a.Checkbox,{checked:L,onChange:function(e){return G(e.target.checked)}},F("Add all collections",{ns:_}))),i().createElement(a.Input.Search,{placeholder:F("Search collection name",{ns:_}),allowClear:!0,style:{width:250},onSearch:er,onChange:function(e){return er(e.target.value)},onClear:eo}),i().createElement(a.Button,{icon:i().createElement(f.ReloadOutlined,null),onClick:function(){return H()},loading:S},F("Load Collections",{ns:_}))),i().createElement(a.Table,{columns:el,dataSource:W,loading:S,pagination:!1,scroll:{x:L?300:550,y:400},virtual:!0,bordered:!0,rowKey:"name",size:"small"}))}),w=function(e){var t=e.NAMESPACE,n=e.t;return{CollectionsTable:function(e){return i().createElement(S,C(g({},e),{NAMESPACE:t,t:n}))},createCollectionsSchema:function(e,n){return{type:"array",title:'{{t("Collections",{ ns: "'.concat(t,'" })}}'),"x-decorator":"FormItem","x-component":"CollectionsTable","x-component-props":{from:e,loadCollections:n,formValues:"{{$form.values}}",options:"{{$form.values.options}}",formSetValues:"{{$form.setValuesIn}}"},"x-reactions":[{dependencies:["..key","..options","..addAllCollections"],fulfill:{schema:{"x-component-props.dataSourceKey":"{{$deps[0]}}","x-component-props.options":"{{$deps[1]}}","x-component-props.addAllCollectionsValue":"{{$deps[2]}}"}}},{dependencies:["..options.tablePrefix"],fulfill:{run:"\n $self.forceUpdate && $self.forceUpdate();\n "}},{dependencies:["..key"],fulfill:{run:"\n if ($deps[0] && from === 'edit' && loadCollections) {\n (async () => {\n const {data} = await loadCollections($deps[0]);\n $self.value = data || [];\n $form.setValuesIn('collections', data || []);\n })();\n }\n "}}]}},Text:(0,b.observer)(function(e){return i().createElement("span",null,e.value)}),addAllCollectionsSchema:{type:"boolean","x-component":"Checkbox","x-display":"hidden",default:!0}}};function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function k(e,t,n,r,o,a,l){try{var i=e[a](l),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,o)}function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function P(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw r}}return a}}(e,t)||j(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function E(e){return function(e){if(Array.isArray(e))return A(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||j(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function j(e,t){if(e){if("string"==typeof e)return A(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return A(e,t)}}var D=function(e){var t=(0,d.useForm)(),n=(0,d.useField)(),r=(0,o.useActionContext)(),a=(0,o.useResourceActionContext)().refresh,l=(0,o.useResourceContext)().resource;return{run:function(){var o;return(o=function(){var o,i,c;return function(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,r=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(u){switch(u.label){case 0:return u.trys.push([0,4,,5]),[4,t.submit()];case 1:var s,p;return u.sent(),n.data=n.data||{},n.data.loading=!0,i=t.values.collections||[],[4,l.create({values:(s=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){O(e,t,n[t])})}return e}({},t.values),p=p={collections:i.filter(function(e){return e.selected}).map(function(e){return e.name})},Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(p)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(p)).forEach(function(e){Object.defineProperty(s,e,Object.getOwnPropertyDescriptor(p,e))}),s)})];case 2:return c=u.sent(),r.setVisible(!1),null==e||e(null==c||null==(o=c.data)?void 0:o.data),[4,t.reset()];case 3:return u.sent(),n.data.loading=!1,a(),[3,5];case 4:return u.sent(),n.data&&(n.data.loading=!1),[3,5];case 5:return[2]}})},function(){var e=this,t=arguments;return new Promise(function(n,r){var a=o.apply(e,t);function l(e){k(a,n,r,l,i,"next",e)}function i(e){k(a,n,r,l,i,"throw",e)}l(void 0)})})()}}},T=function(){var e=P((0,l.useState)({}),2),t=e[0],n=e[1],s=(0,o.usePlugin)(u.default),p=(0,o.useCompile)(),d=P((0,l.useState)(!1),2),b=d[0],v=d[1],h=(0,c.useTranslation)().t,g=P((0,l.useState)(null),2),C=g[0],x=g[1],S=(0,o.useAPIClient)(),A=(0,m.useLoadCollections)();return i().createElement("div",null,i().createElement(o.ActionContext.Provider,{value:{visible:b,setVisible:v}},i().createElement(a.Dropdown,{menu:{onClick:function(e){if("__empty__"!==e.key){var t=s.types.get(e.key);x(e.key),v(!0),n({type:"object",properties:O({},(0,r.uid)(),{type:"void","x-component":"Action.Drawer","x-component-props":{width:650},"x-decorator":"Form","x-decorator-props":{initialValue:{type:e.key,key:"d_".concat((0,r.uid)())}},title:p("{{t('Add new')}}")+" - "+p(t.label),properties:{body:{type:"void","x-component":t.DataSourceSettingsForm.bind(null,{CollectionsTableField:w,loadCollections:A,from:"create"})},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{testConnection:{title:'{{ t("Test Connection",{ ns: "'.concat(y.CU,'" }) }}'),"x-component":"Action","x-component-props":{useAction:"{{ useTestConnectionAction }}"},"x-hidden":null==t?void 0:t.disableTestConnection},cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useCreateAction }}",actionCallback:"{{ dataSourceCreateCallback }}"}}}}}})})}},items:[s.types.size?null:{key:"__empty__",label:i().createElement(a.Empty,{image:a.Empty.PRESENTED_IMAGE_SIMPLE,description:i().createElement(i().Fragment,null,h("No external data source plugin installed",{ns:y.CU}),i().createElement("br",null)," ",i().createElement("a",{target:"_blank",href:"zh-CN"===S.auth.locale?"https://docs-cn.nocobase.com/handbook/data-source-manager":"https://docs.nocobase.com/handbook/data-source-manager",rel:"noreferrer"},h("View documentation",{ns:y.CU})))})}].filter(Boolean).concat(E(s.types.keys()).map(function(e){var t=s.types.get(e);return{key:e,label:p(null==t?void 0:t.label)}}))}},i().createElement(a.Button,{type:"primary",icon:i().createElement(f.PlusOutlined,null)},h("Add new")," ",i().createElement(f.DownOutlined,null))),i().createElement(o.SchemaComponent,{scope:{createOnly:!1,useTestConnectionAction:m.useTestConnectionAction,dialect:C,useDialectDataSource:function(e){e.dataSource=E(s.types.keys()).map(function(e){var t=s.types.get(e);return{value:t.name,label:p(t.label)}})},useCreateAction:D},schema:t})))},I=n(773),M=n.n(I);function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function R(e,t,n,r,o,a,l){try{var i=e[a](l),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,o)}function V(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return q(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return q(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var F=function(){var e=(0,o.useRecord)(),t=_((0,l.useState)({}),2),n=t[0],a=t[1],s=(0,o.usePlugin)(u.default),p=(0,o.useCompile)(),f=_((0,l.useState)(!1),2),b=f[0],v=f[1],h=(0,c.useTranslation)().t,g=(0,o.useDataSourceManager)(),C=(0,m.useLoadCollections)();return(0,o.useAPIClient)(),i().createElement("div",null,i().createElement(o.ActionContext.Provider,{value:{visible:b,setVisible:v}},"main"!==e.key&&i().createElement("a",{onClick:function(){v(!0);var t=s.types.get(e.type);a({type:"object",properties:V({},(0,r.uid)(),{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{initialValue:e},"x-component-props":{width:650},title:p("{{t('Edit')}}")+" - "+p(e.displayName),properties:{body:{type:"void","x-component":t.DataSourceSettingsForm.bind(null,{CollectionsTableField:w,loadCollections:C,from:"edit"})},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},testConnectiion:{title:'{{ t("Test Connection",{ ns: "'.concat(y.CU,'" }) }}'),"x-component":"Action","x-component-props":{useAction:"{{ useTestConnectionAction }}"},"x-hidden":null==t?void 0:t.disableTestConnection},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useUpdateAction }}"}}}}}})})}},h("Edit")),i().createElement(o.SchemaComponent,{scope:{createOnly:!0,useUpdateAction:function(){var e=(0,d.useField)(),t=(0,d.useForm)(),n=(0,o.useActionContext)(),r=(0,o.useResourceActionContext)().refresh,a=(0,o.useResourceContext)().resource,l=(0,o.useRecord)().key;return{run:function(){var o;return(o=function(){var o;return function(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,r=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(i){switch(i.label){case 0:return[4,t.submit()];case 1:i.sent(),e.data=e.data||{},e.data.loading=!0,o=t.values.collections||[],i.label=2;case 2:var c,u;return i.trys.push([2,5,6,7]),[4,a.update({filterByTk:l,values:(c=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){V(e,t,n[t])})}return e}({},t.values),u=u={collections:o.filter(function(e){return e.selected}).map(function(e){return e.name})},Object.getOwnPropertyDescriptors?Object.defineProperties(c,Object.getOwnPropertyDescriptors(u)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(u)).forEach(function(e){Object.defineProperty(c,e,Object.getOwnPropertyDescriptor(u,e))}),c)})];case 3:return i.sent(),n.setVisible(!1),g.getDataSource(l).setOptions(M().omit(t.values,"collections")),g.getDataSource(l).reload(),[4,t.reset()];case 4:return i.sent(),r(),[3,7];case 5:return console.log(i.sent()),[3,7];case 6:return e.data.loading=!1,[7];case 7:return[2]}})},function(){var e=this,t=arguments;return new Promise(function(n,r){var a=o.apply(e,t);function l(e){R(a,n,r,l,i,"next",e)}function i(e){R(a,n,r,l,i,"throw",e)}l(void 0)})})()}}},loadCollections:C},schema:n})))},U=n(477),$=n(442),L=function(e){var t=e.key,n=e.type;return"/admin/settings/data-source-manager/".concat(t,"/collections?type=").concat(n)};function N(){var e,t,n=(e=["\n .ant-btn-link {\n &:hover {\n color: rgba(0, 0, 0, 0.25) !important;\n }\n }\n "],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return N=function(){return n},n}var z=function(){var e=(0,o.useRecord)(),t=(0,$.useNavigate)(),n=(0,c.useTranslation)().t;return i().createElement("div",{className:e.enabled?void 0:(0,U.css)(N())},i().createElement(a.Button,{type:"link",style:{padding:"0px"},disabled:!e.enabled,onClick:function(){t(L(e))},role:"button","aria-label":"".concat(null==e?void 0:e.key,"-Configure")},n("Configure")))};function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function W(e,t,n,r,o,a,l){try{var i=e[a](l),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,o)}function K(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function l(e){W(a,r,o,l,i,"next",e)}function i(e){W(a,r,o,l,i,"throw",e)}l(void 0)})}}function G(e){return function(e){if(Array.isArray(e))return B(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e){if(e){if("string"==typeof e)return B(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return B(e,void 0)}}(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,r=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}var J=function(){var e=(0,c.useTranslation)().t,t=(0,o.usePlugin)(u.default),n=(0,o.useDataSourceManager)();(0,o.useAPIClient)();var f=(0,l.useCallback)(function(e){n.setDataSources((null==e?void 0:e.data)||[]),n.reload()},[n]),d=G(t.types.keys()).map(function(n){var r=t.types.get(n);return{value:n,label:e(null==r?void 0:r.label)}}).concat([{value:"main",label:e("Main")}]),m=i().useRef([]);(0,l.useEffect)(function(){return function(){n.getDataSources().forEach(function(e){m.current.includes(e.key)&&e.reload()})}},[m]);var y=(0,l.useCallback)(function(e){n.removeDataSources(e)},[n]),b=(0,l.useCallback)(function(e){return K(function(){return H(this,function(t){return n.addDataSource(p.J,e),m.current=G(m.current).concat([e.key]),[2]})})()},[n]);return i().createElement(a.Card,{bordered:!1},i().createElement(o.SchemaComponent,{components:{CreateDatabaseConnectAction:T,EditDatabaseConnectionAction:F,ViewDatabaseConnectionAction:z},scope:{useNewId:function(e){return"".concat(e).concat((0,r.uid)())},types:d,useRefreshActionProps:function(){var e=(0,o.useResourceActionContext)();return{onClick:function(){return K(function(){var t,r,o,a,l;return H(this,function(i){switch(i.label){case 0:if(!(null==(o=null==e||null==(t=e.data)?void 0:t.data.filter(function(e){return"loaded"!==e.status}))?void 0:o.length))return[3,2];return a=n.getDataSources(),l=o.map(function(e){return e.key}),[4,Promise.all(a.filter(function(e){return l.includes(e.key)}).map(function(e){return e.reload()}))];case 1:i.sent(),i.label=2;case 2:return null==e||null==(r=e.refresh)||r.call(e),[2]}})})()}}},useDestroyAction:function(){var e=(0,o.useResourceActionContext)().refresh,t=(0,o.useResourceContext)().resource,n=(0,o.useRecord)().key;return{run:function(){return K(function(){return H(this,function(r){switch(r.label){case 0:return[4,t.destroy({filterByTk:n})];case 1:return r.sent(),y([n]),e(),[2]}})})()}}},dataSourceDeleteCallback:y,dataSourceCreateCallback:b,dataSourceListCallback:f,useIsAbleDelete:function(e){e.visible="main"!==(0,o.useRecord)().key}},schema:s.z}))}},221:function(e,t,n){n.d(t,{m:function(){return c},z:function(){return s}});var r,o,a,l=n(166),i=n(872),c=[{value:"loading",label:'{{t("Loading",{ns:"'.concat(i.CU,'"})}}'),color:"orange"},{value:"loading-failed",label:'{{t("Failed",{ns:"'.concat(i.CU,'"})}}'),color:"red"},{value:"loaded",label:'{{t("Loaded",{ns:"'.concat(i.CU,'"})}}'),color:"green"},{value:"reloading",label:'{{t("Reloading",{ns:"'.concat(i.CU,'"})}}'),color:"orange"}],u={name:"collections-"+(0,l.uid)(),disableTranslation:!0,fields:[{type:"string",name:"key",interface:"input",uiSchema:{title:'{{t("Data source name",{ ns: "'.concat(i.CU,'" })}}'),type:"string","x-component":"Input",required:!0}},{type:"string",name:"displayName",interface:"input",uiSchema:{title:'{{t("Data source display name",{ ns: "'.concat(i.CU,'" })}}'),type:"string","x-component":"Input",required:!0}},{type:"string",name:"type",interface:"select",uiSchema:{title:'{{t("Type", { ns: "'.concat(i.CU,'" })}}'),type:"string","x-component":"Select",enum:"{{types}}"}},{type:"string",name:"status",interface:"select",uiSchema:{title:'{{t("Status", { ns: "'.concat(i.CU,'" })}}'),type:"string","x-component":"Select",enum:c}},{type:"boolean",name:"enabled",uiSchema:{type:"boolean",title:'{{t("Enabled")}}',"x-component":"Checkbox"}}]},s={type:"object",properties:(r={},o=(0,l.uid)(),a={type:"void","x-decorator":"ResourceActionProvider","x-decorator-props":{collection:u,resourceName:"dataSources",request:{resource:"dataSources",action:"list",params:{pageSize:50,appends:[]}}},"x-component":"CollectionProvider_deprecated","x-component-props":{collection:u},properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{refresh:{type:"void",title:'{{ t("Refresh") }}',"x-component":"Action","x-use-component-props":"useRefreshActionProps","x-component-props":{icon:"ReloadOutlined"}},delete:{type:"void",title:'{{ t("Delete") }}',"x-component":"Action","x-component-props":{icon:"DeleteOutlined",useAction:"{{ cm.useBulkDestroyAction }}",confirm:{title:"{{t('Delete')}}",content:"{{t('Are you sure you want to delete it?')}}"},actionCallback:"{{ dataSourceDeleteCallback }}"}},create:{type:"void",title:'{{t("Add new")}}',"x-component":"CreateDatabaseConnectAction","x-component-props":{type:"primary"}}}},table:{type:"void","x-uid":"input","x-component":"Table.Void","x-component-props":{rowKey:"key",rowSelection:{type:"checkbox"},useDataSource:"{{ cm.useDataSourceFromRAC }}",onSuccess:"{{ dataSourceListCallback }}"},properties:{key:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{key:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},displayName:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{displayName:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},type:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{type:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},status:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{status:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},enabled:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{enabled:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},actions:{type:"void",title:'{{t("Actions")}}',"x-component":"Table.Column",properties:{actions:{type:"void","x-component":"Space","x-component-props":{},properties:{view:{type:"void",title:'{{t("View")}}',"x-component":"ViewDatabaseConnectionAction","x-component-props":{type:"primary"}},update:{type:"void",title:'{{t("Edit")}}',"x-component":"EditDatabaseConnectionAction","x-component-props":{type:"primary"},"x-reactions":["{{useIsAbleDelete($self)}}"]},delete:{type:"void",title:'{{ t("Delete") }}',"x-component":"Action.Link","x-component-props":{confirm:{title:'{{t("Delete")}}',content:'{{t("Are you sure you want to delete it?")}}'},useAction:"{{useDestroyAction}}"},"x-reactions":["{{useIsAbleDelete($self)}}"]}}}}}}}}},o in r?Object.defineProperty(r,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):r[o]=a,r)}}}]);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
"use strict";(self.webpackChunk_nocobase_plugin_data_source_manager=self.webpackChunk_nocobase_plugin_data_source_manager||[]).push([["369"],{16:function(e,t,n){n.d(t,{H:function(){return s}});var r=n(375),l=n(342),i=n(230),a=n(59),o=n(155),c=n.n(o),u=n(174),s=function(e){var t=(0,l.useCollectionRecordData)()||{},n=(0,l.useCompile)();return(0,i.useField)().editable?c().createElement(l.Input,e):(null==t?void 0:t.filterTargetKey)?n(t.title):c().createElement("div",{style:{display:"inline"}},c().createElement(a.Popover,{trigger:["click"],content:c().createElement(u.P,{size:"small",style:{width:"20em"}})},c().createElement(r.ExclamationCircleTwoTone,{style:{marginRight:"0.3em"},twoToneColor:"#faad14"})),n(t.title))}},536:function(e,t,n){n.d(t,{r:function(){return u}});var r=n(342),l=n(59),i=n(155),a=n.n(i),o=n(442),c=n(174),u=function(e){var t=e.collectionName,n=(0,r.useApp)(),u=(0,o.useParams)().name,s=void 0===u?"main":u,d=(0,i.useMemo)(function(){return n.getCollectionManager(s).getCollection(t)},[n,s,t]);return!(null==d?void 0:d.filterTargetKey)&&a().createElement(l.Alert,{style:{marginBottom:16},type:"warning",message:a().createElement(c.P,null)})}},174:function(e,t,n){n.d(t,{P:function(){return p}});var r=n(342),l=n(59),i=n(155),a=n.n(i),o=n(442),c=n(872),u=n(533);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function d(e,t,n,r,l,i,a){try{var o=e[i](a),c=o.value}catch(e){n(e);return}o.done?t(c):Promise.resolve(c).then(r,l)}function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var i=[],a=!0,o=!1;try{for(l=l.call(e);!(a=(n=l.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(e){o=!0,r=e}finally{try{a||null==l.return||l.return()}finally{if(o)throw r}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return s(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var p=function(e){var t=e.size,n=e.style,s=(0,r.useAPIClient)(),p=(0,o.useParams)().name,m=void 0===p?"main":p,h=(0,r.useCollectionRecordData)(),y=(0,r.useApp)(),v=f((0,i.useState)(),2),b=v[0],g=v[1],x=f((0,i.useState)(),2),w=x[0],S=x[1],E=(0,r.useCompile)(),C=(0,i.useMemo)(function(){return y.getCollectionManager(m).getCollection(h.name)},[y,m,h.name]),A=(0,i.useMemo)(function(){return y.getCollectionManager(m).getCollectionFields(h.name).filter(function(e){if(!e.interface)return!1;var t=y.dataSourceManager.collectionFieldInterfaceManager.getFieldInterface(e.interface);return null!=t&&!!t.titleUsable}).map(function(e){var t;return{label:E(null==(t=e.uiSchema)?void 0:t.title),value:e.name}})},[y,E,m,h.name]),F=(0,r.useResourceActionContext)().refresh,I=(0,i.useContext)(u.m),O=(0,c.VP)().t;return a().createElement("div",{style:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({},n)},O("If a collection lacks a primary key, you must configure a unique record key to locate row records within a block, failure to configure this will prevent the creation of data blocks for the collection."),"small"===t?a().createElement("br",null):" ",a().createElement(l.Space.Compact,{style:{marginTop:5}},a().createElement(l.Select,{onChange:function(e,t){console.log(e,t),g(e),S(t.map(function(e){return e.label}).join(","))},placeholder:O("Select field"),size:"small",options:A,mode:"multiple",style:{width:"200px"}}),a().createElement(l.Popconfirm,{placement:"bottom",title:a().createElement("div",{style:{width:"15em"}},w?O('Are you sure you want to set the "{{title}}" field as a record unique key? This setting cannot be changed after it\'s been set.',{title:w}):O("Please select a field.")),onConfirm:function(){var e;return(e=function(){var e;return function(e,t){var n,r,l,i={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),o=Object.defineProperty;return o(a,"next",{value:c(0)}),o(a,"throw",{value:c(1)}),o(a,"return",{value:c(2)}),"function"==typeof Symbol&&o(a,Symbol.iterator,{value:function(){return this}}),a;function c(o){return function(c){var u=[o,c];if(n)throw TypeError("Generator is already executing.");for(;a&&(a=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(l=2&u[0]?r.return:u[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,u[1])).done)return l;switch(r=0,l&&(u=[2&u[0],l.value]),u[0]){case 0:case 1:l=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(l=(l=i.trys).length>0&&l[l.length-1])&&(6===u[0]||2===u[0])){i=0;continue}if(3===u[0]&&(!l||u[1]>l[0]&&u[1]<l[3])){i.label=u[1];break}if(6===u[0]&&i.label<l[1]){i.label=l[1],l=u;break}if(l&&i.label<l[2]){i.label=l[2],i.ops.push(u);break}l[2]&&i.ops.pop(),i.trys.pop();continue}u=t.call(e,i)}catch(e){u=[6,e],r=0}finally{n=l=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(t){switch(t.label){case 0:if(!b)return[2];if("main"!==m)return[3,2];return[4,s.request({url:"collections:update",method:"post",params:{filterByTk:h.name},data:{filterTargetKey:b}})];case 1:return t.sent(),[3,4];case 2:return[4,s.request({url:"dataSources/".concat(m,"/collections:update"),method:"post",params:{filterByTk:h.name},data:{filterTargetKey:b}})];case 3:t.sent(),t.label=4;case 4:return null==I||null==(e=I.refresh)||e.call(I),F(),[4,y.dataSourceManager.getDataSource(m).reload()];case 5:return t.sent(),C.setOption("filterTargetKey",b),[2]}})},function(){var t=this,n=arguments;return new Promise(function(r,l){var i=e.apply(t,n);function a(e){d(i,r,l,a,o,"next",e)}function o(e){d(i,r,l,a,o,"throw",e)}a(void 0)})})()}},a().createElement(l.Button,{type:"primary",size:"small"},O("OK")))))}},533:function(e,t,n){n.d(t,{m:function(){return R},o:function(){return V}});var r=n(477),l=n(452),i=n(230),a=n(342),o=n(59),c=n(155),u=n.n(c),s=n(953),d=n(773),f=n(536),p={name:"fields",fields:[{type:"string",name:"type",interface:"input",uiSchema:{title:'{{ t("Storage type") }}',type:"string","x-component":"Select",enum:[{label:"String",value:"string"}],required:!0}},{type:"string",name:"interface",interface:"input",uiSchema:{title:'{{ t("Field interface") }}',type:"string","x-component":"Select",enum:"{{interfaces}}"}},{type:"string",name:"title",interface:"input",uiSchema:{title:'{{ t("Field display name") }}',type:"string","x-component":"Input",required:!0}},{type:"string",name:"name",interface:"input",uiSchema:{title:'{{ t("Field name") }}',type:"string","x-component":"Input"}},{type:"string",name:"description",interface:"input",uiSchema:{title:'{{ t("Description") }}',type:"string","x-component":"Input.TextArea"}}]},m=n(375),h=n(872);function y(e,t,n,r,l,i,a){try{var o=e[i](a),c=o.value}catch(e){n(e);return}o.done?t(c):Promise.resolve(c).then(r,l)}var v=function(){var e=(0,h.VP)().t,t=(0,a.useAPIClient)(),n=(0,a.useCollectionRecordData)(),r=(0,a.useDataSource)(),l=(0,a.useResourceActionContext)().refresh;return"db2cm"===n.from||"view"===n.template||"sql"===n.template?null:u().createElement(o.Button,{icon:u().createElement(m.SyncOutlined,null),onClick:function(){var i;return(i=function(){return function(e,t){var n,r,l,i={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),o=Object.defineProperty;return o(a,"next",{value:c(0)}),o(a,"throw",{value:c(1)}),o(a,"return",{value:c(2)}),"function"==typeof Symbol&&o(a,Symbol.iterator,{value:function(){return this}}),a;function c(o){return function(c){var u=[o,c];if(n)throw TypeError("Generator is already executing.");for(;a&&(a=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(l=2&u[0]?r.return:u[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,u[1])).done)return l;switch(r=0,l&&(u=[2&u[0],l.value]),u[0]){case 0:case 1:l=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(l=(l=i.trys).length>0&&l[l.length-1])&&(6===u[0]||2===u[0])){i=0;continue}if(3===u[0]&&(!l||u[1]>l[0]&&u[1]<l[3])){i.label=u[1];break}if(6===u[0]&&i.label<l[1]){i.label=l[1],l=u;break}if(l&&i.label<l[2]){i.label=l[2],i.ops.push(u);break}l[2]&&i.ops.pop(),i.trys.pop();continue}u=t.call(e,i)}catch(e){u=[6,e],r=0}finally{n=l=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(i){switch(i.label){case 0:return[4,t.resource("mainDataSource").syncFields({values:{collections:[n.name]}})];case 1:return i.sent(),l(),r.reload(),o.message.success(e("Sync successfully")),[2]}})},function(){var e=this,t=arguments;return new Promise(function(n,r){var l=i.apply(e,t);function a(e){y(l,n,r,a,o,"next",e)}function o(e){y(l,n,r,a,o,"throw",e)}a(void 0)})})()}},e("Sync from database"))};function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function g(e,t,n,r,l,i,a){try{var o=e[i](a),c=o.value}catch(e){n(e);return}o.done?t(c):Promise.resolve(c).then(r,l)}function x(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var i=e.apply(t,n);function a(e){g(i,r,l,a,o,"next",e)}function o(e){g(i,r,l,a,o,"throw",e)}a(void 0)})}}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function S(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){w(e,t,n[t])})}return e}function E(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function C(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var i=[],a=!0,o=!1;try{for(l=l.call(e);!(a=(n=l.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(e){o=!0,r=e}finally{try{a||null==l.return||l.return()}finally{if(o)throw r}}return i}}(e,t)||F(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function A(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function F(e,t){if(e){if("string"==typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return b(e,t)}}function I(e,t){var n,r,l,i={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),o=Object.defineProperty;return o(a,"next",{value:c(0)}),o(a,"throw",{value:c(1)}),o(a,"return",{value:c(2)}),"function"==typeof Symbol&&o(a,Symbol.iterator,{value:function(){return this}}),a;function c(o){return function(c){var u=[o,c];if(n)throw TypeError("Generator is already executing.");for(;a&&(a=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(l=2&u[0]?r.return:u[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,u[1])).done)return l;switch(r=0,l&&(u=[2&u[0],l.value]),u[0]){case 0:case 1:l=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(l=(l=i.trys).length>0&&l[l.length-1])&&(6===u[0]||2===u[0])){i=0;continue}if(3===u[0]&&(!l||u[1]>l[0]&&u[1]<l[3])){i.label=u[1];break}if(6===u[0]&&i.label<l[1]){i.label=l[1],l=u;break}if(l&&i.label<l[2]){i.label=l[2],i.ops.push(u);break}l[2]&&i.ops.pop(),i.trys.pop();continue}u=t.call(e,i)}catch(e){u=[6,e],r=0}finally{n=l=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}function O(){var e=A(["\n tr {\n display: flex;\n }\n td,\n th {\n flex: 2;\n width: 0;\n min-width: 120px;\n\n /* Field display name */\n &:nth-child(2) {\n flex: 2.5;\n min-width: 150px;\n }\n\n /* Field name */\n &:nth-child(3) {\n flex: 2;\n min-width: 120px;\n }\n\n /* Field interface - 需要更多空间 */\n &:nth-child(4) {\n flex: 2.5;\n min-width: 180px;\n }\n\n /* Field type */\n &:nth-child(5) {\n flex: 1.8;\n min-width: 120px;\n }\n\n /* Title field */\n &:nth-child(6) {\n flex: 1.2;\n min-width: 100px;\n }\n\n /* Description */\n &:nth-child(7) {\n flex: 2;\n min-width: 120px;\n }\n\n /* Actions */\n &:last-child {\n flex: 1.5;\n min-width: 120px;\n }\n }\n .ant-table-selection-column,\n .ant-table-row-expand-icon-cell {\n flex-basis: 50px !important;\n min-width: 50px;\n flex: 0;\n }\n"]);return O=function(){return e},e}function P(){var e=A(["\n tr {\n display: flex;\n }\n td,\n th {\n flex: 2;\n width: 0;\n min-width: 120px;\n\n /* Title column for inherited fields - 需要更多空间显示完整标题 */\n &:nth-child(2) {\n flex: 4;\n min-width: 300px;\n white-space: nowrap;\n }\n\n /* Field display name */\n &:nth-child(3) {\n flex: 2.5;\n min-width: 150px;\n }\n\n /* Field name */\n &:nth-child(4) {\n flex: 2;\n min-width: 120px;\n }\n\n /* Field interface */\n &:nth-child(5) {\n flex: 2.5;\n min-width: 180px;\n }\n\n /* Field type */\n &:nth-child(6) {\n flex: 1.8;\n min-width: 120px;\n }\n\n /* Title field */\n &:nth-child(7) {\n flex: 1.2;\n min-width: 100px;\n }\n\n /* Actions */\n &:last-child {\n flex: 1.5;\n min-width: 120px;\n }\n }\n .ant-table-selection-column,\n .ant-table-row-expand-icon-cell {\n flex-basis: 50px !important;\n min-width: 50px;\n flex: 0;\n }\n"]);return P=function(){return e},e}function T(){var e=A(["\n tr {\n display: flex;\n }\n td,\n th {\n flex: 2;\n width: 0;\n min-width: 100px;\n\n /* Field display name */\n &:nth-child(1) {\n flex: 2.5;\n min-width: 150px;\n }\n\n /* Field name - 减少宽度 */\n &:nth-child(2) {\n flex: 1.5;\n min-width: 100px;\n }\n\n /* Field interface */\n &:nth-child(3) {\n flex: 2;\n min-width: 150px;\n }\n\n /* Field type */\n &:nth-child(4) {\n flex: 1.5;\n min-width: 100px;\n }\n\n /* Title field */\n &:nth-child(5) {\n flex: 1.2;\n min-width: 80px;\n }\n\n /* Description */\n &:nth-child(6) {\n flex: 2;\n min-width: 120px;\n }\n\n /* Actions */\n &:last-child {\n flex: 1.8;\n min-width: 140px;\n }\n }\n"]);return T=function(){return e},e}function k(){var e=A(["\n font-weight: 500;\n white-space: nowrap;\n min-width: 300px;\n "]);return k=function(){return e},e}function j(){var e=A(["\n justify-content: flex-end;\n display: flex;\n margin-bottom: 16px;\n "]);return j=function(){return e},e}var D={association:{sourceKey:"name",targetKey:"name"},collection:p,request:{resource:"collections.fields",action:"list",params:{paginate:!1,filter:{$or:[{"interface.$not":null},{"options.source.$notEmpty":!0}]},sort:["sort"]}}},R=(0,c.createContext)(null),M=function(e){return u().createElement(R.Provider,{value:(0,a.useResourceActionContext)()},u().createElement(a.ResourceActionProvider,D,e.children))},_=(0,r.css)(O()),K=(0,r.css)(P()),B=(0,r.css)(T()),q="Default title for each record",N=function(e,t){var n=[];return e.forEach(function(e){var r=e.children.filter(function(e){var n;return null==e||null==(n=e.availableTypes)?void 0:n.includes(t)});n.push({label:e.label,key:e.key,children:r})}),n.filter(function(e){return"sort"===t?"advanced"===e.key:e.children.length>0})},z=function(e){var t,n,r,l,i=e.value,s=e.record,d=e.updateFieldHandler,f=e.isPresetField,p=void 0!==f&&f,m=(0,a.useCompile)(),h=(0,a.useCollectionManager_deprecated)().getInterface,y=(0,a.useFieldInterfaceOptions)(),v=C((0,c.useState)(i),2),b=v[0],g=v[1],w=C((0,c.useState)([]),2),E=w[0],A=w[1],F=s.type,O=(0,c.useCallback)(function(e){return x(function(){var t,n,r;return I(this,function(l){switch(l.label){case 0:return r=h(e),g(e),[4,d(s,{interface:e,uiSchema:S({title:null==s||null==(t=s.uiSchema)?void 0:t.title},null==r||null==(n=r.default)?void 0:n.uiSchema)},!1)];case 1:return l.sent(),[2]}})})()},[s]);return((0,c.useEffect)(function(){!p&&((null==s?void 0:s.possibleTypes)||F)&&A(N(y,F))},[s,p,F,y]),(0,c.useEffect)(function(){if(!p&&E.length){var e,t,n,r,l,i=null==(n=E[0])||null==(t=n.children)||null==(e=t[0])?void 0:e.name;i&&((1!==E.length||(null==(l=E[0])||null==(r=l.children)?void 0:r.length)!==1||b===i)&&(!b||(null==E?void 0:E.some(function(e){var t,n;return null==(n=e.children)||null==(t=n.some)?void 0:t.call(n,function(e){return e.name===b})})))||O(i))}},[b,p,E,O]),["oho","obo","o2m","m2o","m2m"].includes(s.interface))?u().createElement(o.Tag,null,m(null==(r=y.find(function(e){return"relation"===e.key}))||null==(n=r.children)||null==(t=n.find(function(e){return e.name===i}))?void 0:t.label)):!E.length||E.every(function(e){return!e.children.length})?u().createElement(o.Tag,null,m(null==(l=h(i))?void 0:l.title)):u().createElement(o.Select,{"aria-label":"field-interface-".concat(null==s?void 0:s.interface),value:b,style:{width:"100%"},popupMatchSelectWidth:!1,disabled:p,onChange:function(e){return x(function(){var t,n,r;return I(this,function(l){switch(l.label){case 0:if(p)return[2];return r=h(e),g(e),[4,d(s,{interface:e,uiSchema:S({title:null==s||null==(t=s.uiSchema)?void 0:t.title},null==r||null==(n=r.default)?void 0:n.uiSchema)})];case 1:return l.sent(),[2]}})})()}},E.map(function(e){return u().createElement(o.Select.OptGroup,{key:e.key,label:m(e.label)},e.children.map(function(e){return u().createElement(o.Select.Option,{key:e.name,value:e.name},m(e.label))}))}))},H=function(e){var t=e.value,n=e.record,r=e.updateFieldHandler,l=e.isPresetField,i=(0,d.omit)(n,["__parent","__collectionName"]),a=(null==i?void 0:i.possibleTypes)||[];return Array.isArray(null==i?void 0:i.possibleTypes)&&!(void 0!==l&&l)&&a.includes(t)?u().createElement(o.Select,{"aria-label":"field-type-".concat(t),defaultValue:t,popupMatchSelectWidth:!1,style:{width:"100%"},options:(null==i?void 0:i.possibleTypes.map(function(e){return{label:e,value:e}}))||[],onChange:function(e){return x(function(){return I(this,function(t){switch(t.label){case 0:return[4,r(n,{type:e})];case 1:return t.sent(),[2]}})})()}}):u().createElement(o.Tag,null,t)},L=function(e){var t=(0,a.useCompile)();(0,a.useCollectionManager_deprecated)().getInterface;var n=(0,s.useTranslation)().t,r=(0,a.useResourceActionContext)().setState,l=e.collectionResource||{},i=l.targetKey,d=l.resource,f=(0,a.useRecord)(),p=C(u().useState(null),2),m=p[0],h=p[1],y=(0,a.useCollectionManager_deprecated)(),v=y.refreshCM,b=y.isTitleField,g=y.getTemplate,A=f[i],F=f.titleField,O=g(f.template),P=(0,a.useAPIClient)(),T=(0,c.useContext)(R),k=e.collectionInfo,j=(0,a.useApp)(),D=o.App.useApp().modal,M=j.pm.get("data-source-main").getCollectionPresetFields().map(function(e){var t;return null==(t=e.value)?void 0:t.interface}).filter(function(e){return e}),K=function(t,r){var l=!(arguments.length>2)||void 0===arguments[2]||arguments[2];return x(function(){var i;return I(this,function(a){switch(a.label){case 0:if(i=function(){return x(function(){return I(this,function(l){switch(l.label){case 0:return l.trys.push([0,3,,4]),[4,d.update({filterByTk:t.name,values:E(S({},r),{collectionName:t.collectionName})})];case 1:return l.sent(),[4,e.refreshAsync()];case 2:return l.sent(),o.message.success(n("Saved successfully")),v(),[3,4];case 3:return console.error("Failed to update field:",l.sent()),o.message.error(n("Save failed")),[3,4];case 4:return[2]}})})()},!l)return[3,1];return D.confirm({title:n("Save"),content:n("Are you sure you want to save it?"),onOk:i}),[3,3];case 1:return[4,i()];case 2:a.sent(),a.label=3;case 3:return[2]}})})()},B=[{dataIndex:["uiSchema","title"],title:n("Field display name"),render:function(e){return u().createElement("div",{style:{marginLeft:7}},t(e))}},{dataIndex:"name",title:n("Field name")},{dataIndex:"type",title:n("Field type"),render:function(e,t){return u().createElement(H,{value:e,record:t,updateFieldHandler:K,isPresetField:"db2cm"===k.from||M.includes(t.interface)})}},{dataIndex:"interface",title:n("Field interface"),render:function(e,t){return u().createElement(z,{value:e,record:t,updateFieldHandler:K,isPresetField:"db2cm"===k.from||M.includes(t.interface)})}},{dataIndex:"titleField",title:n("Title field"),render:function(t,r){return b(r)?u().createElement(o.Tooltip,{title:n(q),placement:"right",overlayInnerStyle:{textAlign:"center"}},u().createElement(o.Switch,{"aria-label":"switch-title-field-".concat(r.name),size:"small",loading:r.name===(null==m?void 0:m.name),checked:r.name===(F||"id"),onChange:function(t){return x(function(){var l;return I(this,function(i){switch(i.label){case 0:return h(r),[4,P.request({url:"collections:update",method:"post",params:{filterByTk:A},data:{titleField:t?r.name:"id"}})];case 1:return i.sent(),null==T||null==(l=T.refresh)||l.call(T),[4,e.refreshAsync()];case 2:return i.sent(),h(null),v(),o.message.success(n("Saved successfully")),[2]}})})()}})):null}},{dataIndex:"description",title:n("Description"),render:function(e){return u().createElement(a.Input.ReadPretty,{value:e,ellipsis:!0})}},{dataIndex:"actions",title:n("Actions"),render:function(e,t){var r={confirm:{title:n("Delete record"),content:n("Are you sure you want to delete it?")},useAction:a.useDestroyActionAndRefreshCM,disabled:(0,a.isDeleteButtonDisabled)(t)||(null==O?void 0:O.forbidDeletion),title:n("Delete")};return u().createElement(a.RecordProvider,{record:t,parent:f},u().createElement(o.Space,{size:"middle"},u().createElement(a.EditCollectionField,{role:"button","aria-label":"edit-button-".concat(t.name),type:"primary"}),u().createElement(a.Action.Link,r)))}}];return u().createElement(o.Table,{rowKey:"name",columns:B,showHeader:!0,pagination:!1,dataSource:e.fields,className:_,rowSelection:{type:"checkbox",getCheckboxProps:function(e){return{"aria-label":"checkbox-".concat(e.name)}},onChange:function(t){r(function(n){return E(S({},n),w({},e.type,t))})}}})},$=function(e){var t=(0,a.useCompile)(),n=(0,a.useCollectionManager_deprecated)().getInterface,r=(e.collectionResource||{}).targetKey,l=(0,a.useRecord)(),i=C(u().useState(null),2),d=i[0],f=i[1],p=(0,s.useTranslation)().t,m=(0,a.useCollectionManager_deprecated)(),h=m.refreshCM,y=m.isTitleField,v=l[r],b=l.titleField,g=l.name,w=(0,c.useContext)(R),S=(0,a.useAPIClient)(),E=[{dataIndex:["uiSchema","rawTitle"],title:p("Field display name"),render:function(e){return u().createElement("div",{style:{marginLeft:1}},t(e))}},{dataIndex:"name",title:p("Field name")},{dataIndex:"interface",title:p("Field interface"),render:function(e){var r;return u().createElement(o.Tag,null,t(null==(r=n(e))?void 0:r.title))}},{dataIndex:"type",title:p("Field type"),render:function(e,t){return u().createElement(o.Tag,null,e)}},{dataIndex:"titleField",title:p("Title field"),render:function(t,n){return y(n)?u().createElement(o.Tooltip,{title:p(q),placement:"right",overlayInnerStyle:{textAlign:"center"}},u().createElement(o.Switch,{size:"small",loading:n.name===(null==d?void 0:d.name),checked:n.name===(b||"id"),onChange:function(t){return x(function(){var r;return I(this,function(l){switch(l.label){case 0:return f(n),[4,S.request({url:"collections:update",method:"post",params:{filterByTk:v},data:{titleField:t?n.name:"id"}})];case 1:return l.sent(),null==w||null==(r=w.refresh)||r.call(w),[4,e.refreshAsync()];case 2:return l.sent(),f(null),h(),o.message.success(p("Saved successfully")),[2]}})})()}})):null}},{dataIndex:"description",title:p("Description"),render:function(e){return u().createElement(a.Input.ReadPretty,{value:e,ellipsis:!0})}},{dataIndex:"actions",title:p("Actions"),render:function(e,t){return u().createElement(a.RecordProvider,{record:t,parent:l},u().createElement(o.Space,null,u().createElement(a.OverridingCollectionField,{type:"primary",currentCollection:g}),u().createElement(a.ViewCollectionField,{type:"primary"})))}}];return u().createElement(o.Table,{rowKey:"name",columns:E,showHeader:!1,pagination:!1,dataSource:e.fields.filter(function(e){return e.interface}),className:B})},G=function(){var e,t=(0,a.useCompile)(),n=(0,i.useField)(),d=(0,a.useRecord)(),p=d.name,m=d.template,h=((0,a.useCurrentAppInfo)()||{data:{database:{}}}).data.database,y=(0,a.useCollectionManager_deprecated)(),g=(y.getInterface,y.getInheritCollections),x=y.getCollection,w=y.getTemplate,C=(0,c.useMemo)(function(){return(0,l.createForm)()},[]),A=(0,a.useAttach)(C.createArrayField(E(S({},n.props),{basePath:""}))),I=(0,s.useTranslation)().t,O=(0,a.useResourceContext)(),P=(0,c.useContext)(a.ResourceActionContext),T=P.refreshAsync,D=P.data,R=w(m),M=g(p),_=[{dataIndex:"title",title:I("Field display name"),render:function(e){return u().createElement("div",{className:(0,r.css)(k())},e)}},{dataIndex:"name",title:I("Field name")},{dataIndex:"interface",title:I("Field interface")},{dataIndex:"type",title:I("Field type")},{dataIndex:"titleField",title:I("Title field")},{dataIndex:"actions",title:I("Actions")}],B=((null==D?void 0:D.data)||[]).filter(function(e){return e.interface||e.primaryKey||e.isForeignKey}),q=[];q.push.apply(q,function(e){if(Array.isArray(e))return b(e)}(e=M.map(function(e){var n=x(e);if(n)return{key:e,title:"".concat(I("Inherited fields")," - ")+t(null==n?void 0:n.title),inherit:!0,fields:(null==n?void 0:n.fields)||[]}}).filter(Boolean))||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||F(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}());var N=(0,c.useMemo)(function(){return{useAction:function(){return(0,a.useBulkDestroyActionAndRefreshCM)(!0)},title:I("Delete"),icon:"DeleteOutlined",disabled:null==R?void 0:R.forbidDeletion,confirm:{title:I("Delete record"),content:I("Are you sure you want to delete it?")}}},[I]);return u().createElement(i.FormContext.Provider,{value:C},u().createElement(i.FieldContext.Provider,{value:A},u().createElement(f.r,{collectionName:p}),u().createElement(o.Space,{align:"end",className:(0,r.css)(j())},u().createElement(a.Action,N),u().createElement(a.SyncFieldsAction,{type:"primary"}),u().createElement(a.SyncSQLFieldsAction,{refreshCMList:T}),u().createElement(v,null),u().createElement(a.SchemaComponent,{schema:{type:"object",properties:S({},null==R?void 0:R.configureActions)}}),u().createElement(a.AddCollectionField,{type:"primary",database:h})),B.length>0&&u().createElement("div",null,u().createElement(L,{fields:B,collectionInfo:n.record,collectionResource:O,refreshAsync:T,type:"all"})),q.filter(function(e){return e.fields.length}).length>0&&u().createElement(o.Table,{rowKey:"key",columns:_,dataSource:q.filter(function(e){return e.fields.length}),pagination:!1,showHeader:!1,className:K,expandable:{defaultExpandAllRows:!0,defaultExpandedRowKeys:q.map(function(e){return e.key}),expandedRowRender:function(e){return u().createElement($,{fields:e.fields,collectionResource:O,refreshAsync:T})}}})))},V=function(){return u().createElement(M,null,u().createElement(G,null))}}}]);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
"use strict";(self.webpackChunk_nocobase_plugin_data_source_manager=self.webpackChunk_nocobase_plugin_data_source_manager||[]).push([["397"],{620:function(e,t,o){o.r(t),o.d(t,{BreadcumbTitle:function(){return m}});var n=o(375),a=o(342),r=o(59),c=o(155),i=o.n(c),l=o(442),p=o(35),s=o(872),u=o(221),m=function(){var e,t=(0,a.useApp)(),o=(0,l.useParams)().name,m=(0,a.useCompile)(),d=(0,a.useDataSourceManager)(),y=o||"main",x=(d.getDataSource(y)||{}).displayName,b=(0,c.useContext)(p.DataSourceContext).dataSource,C=(0,c.useMemo)(function(){return b&&(null==b?void 0:b.name)===y?b:d.getDataSource(y)},[b,y,null==(e=d.getDataSource(y))?void 0:e.status]),g=(0,c.useMemo)(function(){var e=null==C?void 0:C.status,o=u.m.find(function(t){return t.value===e}),n=[{title:i().createElement(l.Link,{to:t.pluginSettingsManager.getRoutePath(s.CU)},(0,s.vV)("Data source manager"))}];return C&&n.push({title:i().createElement(r.Space,null,i().createElement("span",null,m(x)),e&&i().createElement(r.Tag,{key:e,color:null==o?void 0:o.color},m(null==o?void 0:o.label)))}),n},[C]);return i().createElement(r.Breadcrumb,{separator:i().createElement(n.RightOutlined,null),items:g})}},221:function(e,t,o){o.d(t,{m:function(){return l},z:function(){return s}});var n,a,r,c=o(166),i=o(872),l=[{value:"loading",label:'{{t("Loading",{ns:"'.concat(i.CU,'"})}}'),color:"orange"},{value:"loading-failed",label:'{{t("Failed",{ns:"'.concat(i.CU,'"})}}'),color:"red"},{value:"loaded",label:'{{t("Loaded",{ns:"'.concat(i.CU,'"})}}'),color:"green"},{value:"reloading",label:'{{t("Reloading",{ns:"'.concat(i.CU,'"})}}'),color:"orange"}],p={name:"collections-"+(0,c.uid)(),disableTranslation:!0,fields:[{type:"string",name:"key",interface:"input",uiSchema:{title:'{{t("Data source name",{ ns: "'.concat(i.CU,'" })}}'),type:"string","x-component":"Input",required:!0}},{type:"string",name:"displayName",interface:"input",uiSchema:{title:'{{t("Data source display name",{ ns: "'.concat(i.CU,'" })}}'),type:"string","x-component":"Input",required:!0}},{type:"string",name:"type",interface:"select",uiSchema:{title:'{{t("Type", { ns: "'.concat(i.CU,'" })}}'),type:"string","x-component":"Select",enum:"{{types}}"}},{type:"string",name:"status",interface:"select",uiSchema:{title:'{{t("Status", { ns: "'.concat(i.CU,'" })}}'),type:"string","x-component":"Select",enum:l}},{type:"boolean",name:"enabled",uiSchema:{type:"boolean",title:'{{t("Enabled")}}',"x-component":"Checkbox"}}]},s={type:"object",properties:(n={},a=(0,c.uid)(),r={type:"void","x-decorator":"ResourceActionProvider","x-decorator-props":{collection:p,resourceName:"dataSources",request:{resource:"dataSources",action:"list",params:{pageSize:50,appends:[]}}},"x-component":"CollectionProvider_deprecated","x-component-props":{collection:p},properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{refresh:{type:"void",title:'{{ t("Refresh") }}',"x-component":"Action","x-use-component-props":"useRefreshActionProps","x-component-props":{icon:"ReloadOutlined"}},delete:{type:"void",title:'{{ t("Delete") }}',"x-component":"Action","x-component-props":{icon:"DeleteOutlined",useAction:"{{ cm.useBulkDestroyAction }}",confirm:{title:"{{t('Delete')}}",content:"{{t('Are you sure you want to delete it?')}}"},actionCallback:"{{ dataSourceDeleteCallback }}"}},create:{type:"void",title:'{{t("Add new")}}',"x-component":"CreateDatabaseConnectAction","x-component-props":{type:"primary"}}}},table:{type:"void","x-uid":"input","x-component":"Table.Void","x-component-props":{rowKey:"key",rowSelection:{type:"checkbox"},useDataSource:"{{ cm.useDataSourceFromRAC }}",onSuccess:"{{ dataSourceListCallback }}"},properties:{key:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{key:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},displayName:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{displayName:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},type:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{type:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},status:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{status:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},enabled:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{enabled:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},actions:{type:"void",title:'{{t("Actions")}}',"x-component":"Table.Column",properties:{actions:{type:"void","x-component":"Space","x-component-props":{},properties:{view:{type:"void",title:'{{t("View")}}',"x-component":"ViewDatabaseConnectionAction","x-component-props":{type:"primary"}},update:{type:"void",title:'{{t("Edit")}}',"x-component":"EditDatabaseConnectionAction","x-component-props":{type:"primary"},"x-reactions":["{{useIsAbleDelete($self)}}"]},delete:{type:"void",title:'{{ t("Delete") }}',"x-component":"Action.Link","x-component-props":{confirm:{title:'{{t("Delete")}}',content:'{{t("Are you sure you want to delete it?")}}'},useAction:"{{useDestroyAction}}"},"x-reactions":["{{useIsAbleDelete($self)}}"]}}}}}}}}},a in n?Object.defineProperty(n,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[a]=r,n)}}}]);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
"use strict";(self.webpackChunk_nocobase_plugin_data_source_manager=self.webpackChunk_nocobase_plugin_data_source_manager||[]).push([["416"],{819:function(e,t,r){r.r(t),r.d(t,{CollectionMainProvider:function(){return i}});var n=r(155),a=r.n(n),o=r(342),u=r(442);function l(e,t,r,n,a,o,u){try{var l=e[o](u),i=l.value}catch(e){r(e);return}l.done?t(i):Promise.resolve(i).then(n,a)}var i=function(e){var t=(0,o.useAPIClient)(),r={url:"collectionCategories:list",params:{paginate:!1,sort:["sort"]}},i=(0,o.useRequest)(r),c=(0,n.useCallback)(function(){var e;return(e=function(){var e;return function(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},u=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(u,"next",{value:i(0)}),l(u,"throw",{value:i(1)}),l(u,"return",{value:i(2)}),"function"==typeof Symbol&&l(u,Symbol.iterator,{value:function(){return this}}),u;function i(l){return function(i){var c=[l,i];if(r)throw TypeError("Generator is already executing.");for(;u&&(u=0,c[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&c[0]?n.return:c[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,c[1])).done)return a;switch(n=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,n=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){o.label=c[1];break}if(6===c[0]&&o.label<a[1]){o.label=a[1],a=c;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(c);break}a[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],n=0}finally{r=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(n){switch(n.label){case 0:return[4,t.request(r)];case 1:return e=n.sent().data,i.mutate(e),[2,(null==e?void 0:e.data)||[]]}})},function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function u(e){l(o,n,a,u,i,"next",e)}function i(e){l(o,n,a,u,i,"throw",e)}u(void 0)})})()},[i]);return a().createElement(o.CollectionCategoriesProvider,{service:i,refreshCategory:c},a().createElement(u.Outlet,null))}}}]);
|