mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-01-21 08:28:16 +00:00
fix: vc-filter bug fix
This commit is contained in:
parent
d95da04eff
commit
31ea5d5601
@ -173,7 +173,7 @@ export class DocumentModel {
|
|||||||
node = this.getNode(schema.id);
|
node = this.getNode(schema.id);
|
||||||
if (node && node.componentName === schema.componentName) {
|
if (node && node.componentName === schema.componentName) {
|
||||||
if (node.parent) {
|
if (node.parent) {
|
||||||
node.internalSetParent(null);
|
node.internalSetParent(null, false);
|
||||||
// will move to another position
|
// will move to another position
|
||||||
// todo: this.activeNodes?.push(node);
|
// todo: this.activeNodes?.push(node);
|
||||||
}
|
}
|
||||||
@ -546,6 +546,13 @@ export class DocumentModel {
|
|||||||
this.emitter.removeListener('nodedestroy', func);
|
this.emitter.removeListener('nodedestroy', func);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
|
refresh() {
|
||||||
|
console.warn('refresh method is deprecated');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isDocumentModel(obj: any): obj is DocumentModel {
|
export function isDocumentModel(obj: any): obj is DocumentModel {
|
||||||
|
|||||||
@ -61,6 +61,14 @@ export class NodeChildren {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated
|
||||||
|
* @param nodes
|
||||||
|
*/
|
||||||
|
concat(nodes: Node[]) {
|
||||||
|
return this.children.concat(nodes);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 元素个数
|
* 元素个数
|
||||||
*/
|
*/
|
||||||
@ -86,7 +94,7 @@ export class NodeChildren {
|
|||||||
/**
|
/**
|
||||||
* 删除一个节点
|
* 删除一个节点
|
||||||
*/
|
*/
|
||||||
delete(node: Node, purge = false): boolean {
|
delete(node: Node, purge = false, useMutator = true): boolean {
|
||||||
const i = this.children.indexOf(node);
|
const i = this.children.indexOf(node);
|
||||||
if (i < 0) {
|
if (i < 0) {
|
||||||
return false;
|
return false;
|
||||||
@ -94,18 +102,20 @@ export class NodeChildren {
|
|||||||
const deleted = this.children.splice(i, 1)[0];
|
const deleted = this.children.splice(i, 1)[0];
|
||||||
if (purge) {
|
if (purge) {
|
||||||
// should set parent null
|
// should set parent null
|
||||||
deleted.internalSetParent(null);
|
deleted.internalSetParent(null, useMutator);
|
||||||
deleted.purge();
|
deleted.purge(useMutator);
|
||||||
}
|
}
|
||||||
this.emitter.emit('change');
|
this.emitter.emit('change');
|
||||||
|
if (useMutator) {
|
||||||
this.reportModified(node, this.owner, {type: 'remove', removeIndex: i, removeNode: node});
|
this.reportModified(node, this.owner, {type: 'remove', removeIndex: i, removeNode: node});
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 插入一个节点,返回新长度
|
* 插入一个节点,返回新长度
|
||||||
*/
|
*/
|
||||||
insert(node: Node, at?: number | null): void {
|
insert(node: Node, at?: number | null, useMutator = true): void {
|
||||||
const children = this.children;
|
const children = this.children;
|
||||||
let index = at == null || at === -1 ? children.length : at;
|
let index = at == null || at === -1 ? children.length : at;
|
||||||
|
|
||||||
@ -117,7 +127,7 @@ export class NodeChildren {
|
|||||||
} else {
|
} else {
|
||||||
children.push(node);
|
children.push(node);
|
||||||
}
|
}
|
||||||
node.internalSetParent(this.owner);
|
node.internalSetParent(this.owner, useMutator);
|
||||||
} else {
|
} else {
|
||||||
if (index > i) {
|
if (index > i) {
|
||||||
index -= 1;
|
index -= 1;
|
||||||
@ -132,7 +142,7 @@ export class NodeChildren {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.emitter.emit('change');
|
this.emitter.emit('change');
|
||||||
this.reportModified(node, this.owner, { type: 'insert' });
|
// this.reportModified(node, this.owner, { type: 'insert' });
|
||||||
|
|
||||||
// check condition group
|
// check condition group
|
||||||
if (node.conditionGroup) {
|
if (node.conditionGroup) {
|
||||||
@ -247,7 +257,7 @@ export class NodeChildren {
|
|||||||
const i = this.children.indexOf(node);
|
const i = this.children.indexOf(node);
|
||||||
if (i > -1) {
|
if (i > -1) {
|
||||||
this.children.splice(i, 1);
|
this.children.splice(i, 1);
|
||||||
node.remove();
|
node.remove(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
changed = true;
|
changed = true;
|
||||||
@ -284,12 +294,12 @@ export class NodeChildren {
|
|||||||
/**
|
/**
|
||||||
* 回收销毁
|
* 回收销毁
|
||||||
*/
|
*/
|
||||||
purge() {
|
purge(useMutator = true) {
|
||||||
if (this.purged) {
|
if (this.purged) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.purged = true;
|
this.purged = true;
|
||||||
this.children.forEach((child) => child.purge());
|
this.children.forEach((child) => child.purge(useMutator));
|
||||||
}
|
}
|
||||||
|
|
||||||
get [Symbol.toStringTag]() {
|
get [Symbol.toStringTag]() {
|
||||||
@ -297,13 +307,13 @@ export class NodeChildren {
|
|||||||
return 'Array';
|
return 'Array';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* @deprecated
|
// * @deprecated
|
||||||
* 为了兼容vision体系存量api
|
// * 为了兼容vision体系存量api
|
||||||
*/
|
// */
|
||||||
getChildrenArray() {
|
// getChildrenArray() {
|
||||||
return this.children;
|
// return this.children;
|
||||||
}
|
// }
|
||||||
|
|
||||||
private reportModified(node: Node, owner: Node, options = {}) {
|
private reportModified(node: Node, owner: Node, options = {}) {
|
||||||
if (!node) {
|
if (!node) {
|
||||||
@ -321,13 +331,13 @@ export class NodeChildren {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (callbacks?.onNodeAdd && options?.type === 'insert') {
|
// if (callbacks?.onNodeAdd && options?.type === 'insert') {
|
||||||
try {
|
// try {
|
||||||
callbacks?.onNodeAdd.call(owner, node, owner);
|
// callbacks?.onNodeAdd.call(owner, node, owner);
|
||||||
} catch (e) {
|
// } catch (e) {
|
||||||
console.error('error when excute experimental.callbacks.onNodeAdd', e);
|
// console.error('error when excute experimental.callbacks.onNodeAdd', e);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (owner.parent && !owner.parent.isRoot()) {
|
if (owner.parent && !owner.parent.isRoot()) {
|
||||||
this.reportModified(node, owner.parent, options);
|
this.reportModified(node, owner.parent, options);
|
||||||
|
|||||||
@ -98,7 +98,7 @@ export class Node<Schema extends NodeSchema = NodeSchema> {
|
|||||||
/**
|
/**
|
||||||
* 属性抽象
|
* 属性抽象
|
||||||
*/
|
*/
|
||||||
readonly props: Props;
|
props: Props;
|
||||||
protected _children?: NodeChildren;
|
protected _children?: NodeChildren;
|
||||||
/**
|
/**
|
||||||
* @deprecated
|
* @deprecated
|
||||||
@ -239,10 +239,22 @@ export class Node<Schema extends NodeSchema = NodeSchema> {
|
|||||||
this.internalSetParent(null);
|
this.internalSetParent(null);
|
||||||
this.document.addWillPurge(this);
|
this.document.addWillPurge(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private didDropIn(dragment: Node) {
|
||||||
|
const callbacks = this.componentMeta.getMetadata().experimental?.callbacks;
|
||||||
|
if (callbacks?.onNodeAdd) {
|
||||||
|
callbacks?.onNodeAdd.call(this, dragment, this);
|
||||||
|
}
|
||||||
|
if (this._parent) {
|
||||||
|
this._parent.didDropIn(dragment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 内部方法,请勿使用
|
* 内部方法,请勿使用
|
||||||
|
* @param useMutator 是否触发联动逻辑
|
||||||
*/
|
*/
|
||||||
internalSetParent(parent: ParentalNode | null) {
|
internalSetParent(parent: ParentalNode | null, useMutator = false) {
|
||||||
if (this._parent === parent) {
|
if (this._parent === parent) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -251,7 +263,7 @@ export class Node<Schema extends NodeSchema = NodeSchema> {
|
|||||||
if (this.isSlot()) {
|
if (this.isSlot()) {
|
||||||
this._parent.removeSlot(this, false);
|
this._parent.removeSlot(this, false);
|
||||||
} else {
|
} else {
|
||||||
this._parent.children.delete(this);
|
this._parent.children.delete(this, false, useMutator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,6 +277,10 @@ export class Node<Schema extends NodeSchema = NodeSchema> {
|
|||||||
this.setConditionGroup(grp);
|
this.setConditionGroup(grp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (useMutator) {
|
||||||
|
parent.didDropIn(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -283,12 +299,12 @@ export class Node<Schema extends NodeSchema = NodeSchema> {
|
|||||||
/**
|
/**
|
||||||
* 移除当前节点
|
* 移除当前节点
|
||||||
*/
|
*/
|
||||||
remove() {
|
remove(useMutator = true) {
|
||||||
if (this.parent) {
|
if (this.parent) {
|
||||||
if (this.isSlot()) {
|
if (this.isSlot()) {
|
||||||
this.parent.removeSlot(this, true);
|
this.parent.removeSlot(this, true);
|
||||||
} else {
|
} else {
|
||||||
this.parent.children.delete(this, true);
|
this.parent.children.delete(this, true, useMutator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -408,8 +424,8 @@ export class Node<Schema extends NodeSchema = NodeSchema> {
|
|||||||
delete data.id;
|
delete data.id;
|
||||||
const newNode = this.document.createNode(data);
|
const newNode = this.document.createNode(data);
|
||||||
|
|
||||||
this.insertBefore(newNode, node);
|
this.insertBefore(newNode, node, false);
|
||||||
node.remove();
|
node.remove(false);
|
||||||
|
|
||||||
if (selected) {
|
if (selected) {
|
||||||
this.document.selection.select(newNode.id);
|
this.document.selection.select(newNode.id);
|
||||||
@ -473,7 +489,11 @@ export class Node<Schema extends NodeSchema = NodeSchema> {
|
|||||||
/**
|
/**
|
||||||
* 设置多个属性值,替换原有值
|
* 设置多个属性值,替换原有值
|
||||||
*/
|
*/
|
||||||
setProps(props?: PropsMap | PropsList | null) {
|
setProps(props?: PropsMap | PropsList | Props | null) {
|
||||||
|
if(props instanceof Props) {
|
||||||
|
this.props = props;
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.props.import(props);
|
this.props.import(props);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -630,7 +650,7 @@ export class Node<Schema extends NodeSchema = NodeSchema> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addSlot(slotNode: Node) {
|
addSlot(slotNode: Node) {
|
||||||
slotNode.internalSetParent(this as ParentalNode);
|
slotNode.internalSetParent(this as ParentalNode, true);
|
||||||
this._slots.push(slotNode);
|
this._slots.push(slotNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -652,18 +672,18 @@ export class Node<Schema extends NodeSchema = NodeSchema> {
|
|||||||
/**
|
/**
|
||||||
* 销毁
|
* 销毁
|
||||||
*/
|
*/
|
||||||
purge() {
|
purge(useMutator = true) {
|
||||||
if (this.purged) {
|
if (this.purged) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this._parent) {
|
if (this._parent) {
|
||||||
// should remove thisNode before purge
|
// should remove thisNode before purge
|
||||||
this.remove();
|
this.remove(useMutator);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.purged = true;
|
this.purged = true;
|
||||||
if (this.isParental()) {
|
if (this.isParental()) {
|
||||||
this.children.purge();
|
this.children.purge(useMutator);
|
||||||
}
|
}
|
||||||
this.autoruns?.forEach((dispose) => dispose());
|
this.autoruns?.forEach((dispose) => dispose());
|
||||||
this.props.purge();
|
this.props.purge();
|
||||||
@ -682,10 +702,10 @@ export class Node<Schema extends NodeSchema = NodeSchema> {
|
|||||||
getComponentName() {
|
getComponentName() {
|
||||||
return this.componentName;
|
return this.componentName;
|
||||||
}
|
}
|
||||||
insertBefore(node: Node, ref?: Node) {
|
insertBefore(node: Node, ref?: Node, useMutator = true) {
|
||||||
this.children?.insert(node, ref ? ref.index : null);
|
this.children?.insert(node, ref ? ref.index : null, useMutator);
|
||||||
}
|
}
|
||||||
insertAfter(node: any, ref?: Node) {
|
insertAfter(node: any, ref?: Node, useMutator = true) {
|
||||||
if (!isNode(node)) {
|
if (!isNode(node)) {
|
||||||
if (node.getComponentName) {
|
if (node.getComponentName) {
|
||||||
node = this.document.createNode({
|
node = this.document.createNode({
|
||||||
@ -695,7 +715,7 @@ export class Node<Schema extends NodeSchema = NodeSchema> {
|
|||||||
node = this.document.createNode(node);
|
node = this.document.createNode(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.children?.insert(node, ref ? ref.index + 1 : null);
|
this.children?.insert(node, ref ? ref.index + 1 : null, useMutator);
|
||||||
}
|
}
|
||||||
getParent() {
|
getParent() {
|
||||||
return this.parent;
|
return this.parent;
|
||||||
|
|||||||
@ -331,14 +331,9 @@ export class Props implements IPropParent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated
|
* 获取 props 对应的 node
|
||||||
* 兼容vision体系
|
|
||||||
*/
|
*/
|
||||||
getNode() {
|
getNode() {
|
||||||
const nodeForVision = this.owner;
|
return this.owner;
|
||||||
nodeForVision.getChildren = () => {
|
|
||||||
return this.owner?.getChildren()?.getChildrenArray() || [];
|
|
||||||
};
|
|
||||||
return nodeForVision;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { isPlainObject, uniqueId } from '@ali/lowcode-utils';
|
|||||||
import { isI18nData, SettingTarget, InitialItem, FilterItem, isJSSlot, ProjectSchema, AutorunItem } from '@ali/lowcode-types';
|
import { isI18nData, SettingTarget, InitialItem, FilterItem, isJSSlot, ProjectSchema, AutorunItem } from '@ali/lowcode-types';
|
||||||
import { untracked } from '@ali/lowcode-editor-core';
|
import { untracked } from '@ali/lowcode-editor-core';
|
||||||
import { editor, designer } from '../editor';
|
import { editor, designer } from '../editor';
|
||||||
|
import { SettingField } from '@ali/lowcode-designer';
|
||||||
|
|
||||||
type Field = SettingTarget;
|
type Field = SettingTarget;
|
||||||
|
|
||||||
@ -325,6 +326,10 @@ export function upgradePropConfig(config: OldPropConfig, collector: ConfigCollec
|
|||||||
|
|
||||||
if (mutator) {
|
if (mutator) {
|
||||||
extraProps.setValue = (field: Field, value: any) => {
|
extraProps.setValue = (field: Field, value: any) => {
|
||||||
|
// TODO: 兼容代码,不触发查询组件的 Mutator
|
||||||
|
if (field instanceof SettingField && field.componentMeta?.componentName === 'Filter') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
mutator.call(field, value, value);
|
mutator.call(field, value, value);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user