@tmagic/editor 1.3.0-alpha.1 → 1.3.0-alpha.2
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/dist/tmagic-editor.js +56 -2
- package/dist/tmagic-editor.js.map +1 -1
- package/dist/tmagic-editor.umd.cjs +55 -1
- package/dist/tmagic-editor.umd.cjs.map +1 -1
- package/package.json +10 -10
- package/src/fields/DataSourceFields.vue +1 -1
- package/src/initService.ts +67 -0
- package/src/services/dep.ts +3 -0
|
@@ -459,7 +459,7 @@
|
|
|
459
459
|
{
|
|
460
460
|
validator: ({ value, callback }, { model, parent }) => {
|
|
461
461
|
const index = parent.findIndex((item) => item.name === value);
|
|
462
|
-
if (model.index === -1 && index > -1 || model.index > -1 && index !== model.index) {
|
|
462
|
+
if (model.index === -1 && index > -1 || model.index > -1 && index > -1 && index !== model.index) {
|
|
463
463
|
return callback(`属性key(${value})已存在`);
|
|
464
464
|
}
|
|
465
465
|
callback();
|
|
@@ -7098,6 +7098,7 @@
|
|
|
7098
7098
|
});
|
|
7099
7099
|
});
|
|
7100
7100
|
});
|
|
7101
|
+
this.emit("collected", nodes, deep);
|
|
7101
7102
|
}
|
|
7102
7103
|
/**
|
|
7103
7104
|
* 清除依赖
|
|
@@ -7126,6 +7127,7 @@
|
|
|
7126
7127
|
const fullKey = prop ? `${prop}.${key}` : key;
|
|
7127
7128
|
if (target.isTarget(key, value)) {
|
|
7128
7129
|
target.updateDep(node, fullKey);
|
|
7130
|
+
this.emit("update-dep", node, fullKey);
|
|
7129
7131
|
} else if (!keyIsItems && Array.isArray(value)) {
|
|
7130
7132
|
value.forEach((item, index) => {
|
|
7131
7133
|
collectTarget(item, `${fullKey}.${index}`);
|
|
@@ -7400,6 +7402,42 @@
|
|
|
7400
7402
|
});
|
|
7401
7403
|
};
|
|
7402
7404
|
const initServiceEvents = (props, emit, { editorService, codeBlockService, dataSourceService, depService }) => {
|
|
7405
|
+
const getApp = () => {
|
|
7406
|
+
const stage = editorService.get("stage");
|
|
7407
|
+
return stage?.renderer.runtime?.getApp?.();
|
|
7408
|
+
};
|
|
7409
|
+
const updateDataSoucreSchema = () => {
|
|
7410
|
+
const root = editorService.get("root");
|
|
7411
|
+
if (root?.dataSources) {
|
|
7412
|
+
getApp()?.dataSourceManager?.updateSchema(root.dataSources);
|
|
7413
|
+
}
|
|
7414
|
+
};
|
|
7415
|
+
const upateNodeWhenDataSourceChange = (nodes) => {
|
|
7416
|
+
const root = editorService.get("root");
|
|
7417
|
+
const stage = editorService.get("stage");
|
|
7418
|
+
if (!root || !stage)
|
|
7419
|
+
return;
|
|
7420
|
+
const app = getApp();
|
|
7421
|
+
if (!app)
|
|
7422
|
+
return;
|
|
7423
|
+
if (app.dsl) {
|
|
7424
|
+
app.dsl.dataSourceDeps = root.dataSourceDeps;
|
|
7425
|
+
app.dsl.dataSources = root.dataSources;
|
|
7426
|
+
}
|
|
7427
|
+
updateDataSoucreSchema();
|
|
7428
|
+
nodes.forEach((node) => {
|
|
7429
|
+
const deps = Object.values(root.dataSourceDeps || {});
|
|
7430
|
+
deps.forEach((dep) => {
|
|
7431
|
+
if (dep[node.id]) {
|
|
7432
|
+
stage.update({
|
|
7433
|
+
config: lodashEs.cloneDeep(node),
|
|
7434
|
+
parentId: editorService.getParentById(node.id)?.id,
|
|
7435
|
+
root: lodashEs.cloneDeep(root)
|
|
7436
|
+
});
|
|
7437
|
+
}
|
|
7438
|
+
});
|
|
7439
|
+
});
|
|
7440
|
+
};
|
|
7403
7441
|
const targetAddHandler = (target) => {
|
|
7404
7442
|
if (target.type !== "data-source")
|
|
7405
7443
|
return;
|
|
@@ -7417,8 +7455,16 @@
|
|
|
7417
7455
|
return;
|
|
7418
7456
|
delete root.dataSourceDeps[id];
|
|
7419
7457
|
};
|
|
7458
|
+
const depUpdateHandler = (node) => {
|
|
7459
|
+
upateNodeWhenDataSourceChange([node]);
|
|
7460
|
+
};
|
|
7461
|
+
const collectedHandler = (nodes) => {
|
|
7462
|
+
upateNodeWhenDataSourceChange(nodes);
|
|
7463
|
+
};
|
|
7420
7464
|
depService.on("add-target", targetAddHandler);
|
|
7421
7465
|
depService.on("remove-target", targetRemoveHandler);
|
|
7466
|
+
depService.on("dep-update", depUpdateHandler);
|
|
7467
|
+
depService.on("collected", collectedHandler);
|
|
7422
7468
|
const rootChangeHandler = async (value, preValue) => {
|
|
7423
7469
|
const nodeId = editorService.get("node")?.id || props.defaultSelected;
|
|
7424
7470
|
let node;
|
|
@@ -7486,14 +7532,20 @@
|
|
|
7486
7532
|
codeBlockService.on("remove", codeBlockRemoveHandler);
|
|
7487
7533
|
const dataSourceAddHandler = (config) => {
|
|
7488
7534
|
depService.addTarget(createDataSourceTarget(config.id, config));
|
|
7535
|
+
getApp()?.dataSourceManager?.addDataSource(config);
|
|
7489
7536
|
};
|
|
7490
7537
|
const dataSourceUpdateHandler = (config) => {
|
|
7491
7538
|
if (config.title) {
|
|
7492
7539
|
depService.getTarget(config.id).name = config.title;
|
|
7493
7540
|
}
|
|
7541
|
+
const root = editorService.get("root");
|
|
7542
|
+
const targets = depService.getTargets("data-source");
|
|
7543
|
+
const nodes = utils.getNodes(Object.keys(targets[config.id].deps), root?.items);
|
|
7544
|
+
upateNodeWhenDataSourceChange(nodes);
|
|
7494
7545
|
};
|
|
7495
7546
|
const dataSourceRemoveHandler = (id) => {
|
|
7496
7547
|
depService.removeTarget(id);
|
|
7548
|
+
getApp()?.dataSourceManager?.removeDataSource(id);
|
|
7497
7549
|
};
|
|
7498
7550
|
dataSourceService.on("add", dataSourceAddHandler);
|
|
7499
7551
|
dataSourceService.on("update", dataSourceUpdateHandler);
|
|
@@ -7501,6 +7553,8 @@
|
|
|
7501
7553
|
vue.onUnmounted(() => {
|
|
7502
7554
|
depService.off("add-target", targetAddHandler);
|
|
7503
7555
|
depService.off("remove-target", targetRemoveHandler);
|
|
7556
|
+
depService.off("dep-update", depUpdateHandler);
|
|
7557
|
+
depService.off("collected", collectedHandler);
|
|
7504
7558
|
editorService.off("history-change", historyChangeHandler);
|
|
7505
7559
|
editorService.off("root-change", rootChangeHandler);
|
|
7506
7560
|
editorService.off("add", nodeAddHandler);
|