From 20819aa8f4a9e2db3b13b014480d8981973730b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E6=9C=9D=E4=BC=9F?= <2211960668@qq.com> Date: Fri, 16 Jun 2023 10:33:18 +0800 Subject: [PATCH 01/13] =?UTF-8?q?runningTree=20execute=E6=94=B9=E5=8A=A8?= =?UTF-8?q?=E5=92=8Cauth=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/features/runningTree.d.ts | 6 +++-- lib/features/runningTree.js | 12 ++++++++-- src/features/runningTree.ts | 41 ++++++++++++++++++++--------------- 3 files changed, 38 insertions(+), 21 deletions(-) diff --git a/lib/features/runningTree.d.ts b/lib/features/runningTree.d.ts index c66a2aed..b5cdb62f 100644 --- a/lib/features/runningTree.d.ts +++ b/lib/features/runningTree.d.ts @@ -128,7 +128,7 @@ declare class ListNode): ED[T]["CreateSingle"] | ED[T]["Update"] | ED[T]["Remove"] | undefined; - getIntrinsticFilters(): ED[T]["Selection"]["filter"]; + getIntrinsticFilters(): ED[T]["Selection"]["filter"] | undefined; } declare class SingleNode, FrontCxt extends SyncContext, AD extends CommonAspectDict> extends Node { private id?; @@ -267,7 +267,7 @@ export declare class RunningTree(path: string, sorter: NamedSorterItem, refresh?: boolean): void; removeNamedSorter(path: string, sorter: NamedSorterItem, refresh?: boolean): void; removeNamedSorterByName(path: string, name: string, refresh?: boolean): void; - getIntrinsticFilters(path: string): ED[keyof ED]["Selection"]["filter"]; + getIntrinsticFilters(path: string): ED[keyof ED]["Selection"]["filter"] | undefined; tryExecute(path: string): boolean | Error; getOperations(path: string): { entity: keyof ED; @@ -276,6 +276,8 @@ export declare class RunningTree(path: string, action?: ED[T]['Action']): Promise<{ result: Awaited>; message: string | null | undefined; + } | { + message: string; }>; clean(path: string): void; getRoot(): Record | ListNode | VirtualNode>; diff --git a/lib/features/runningTree.js b/lib/features/runningTree.js index d91ffb47..8e89992a 100644 --- a/lib/features/runningTree.js +++ b/lib/features/runningTree.js @@ -2129,11 +2129,12 @@ var RunningTree = /** @class */ (function (_super) { node.setExecuting(true); _a.label = 1; case 1: - _a.trys.push([1, 5, , 6]); + _a.trys.push([1, 7, , 8]); return [4 /*yield*/, node.doBeforeTrigger()]; case 2: _a.sent(); operations = node.composeOperations(); + if (!(operations.length > 0)) return [3 /*break*/, 5]; entities = (0, lodash_1.uniq)(operations.filter(function (ele) { return !!ele; }).map(function (ele) { return ele.entity; })); (0, assert_1.assert)(entities.length === 1); return [4 /*yield*/, this.cache.operate(entities[0], operations @@ -2150,10 +2151,17 @@ var RunningTree = /** @class */ (function (_super) { _a.sent(); return [2 /*return*/, result]; case 5: + node.clean(); + node.setExecuting(false); + return [4 /*yield*/, node.doAfterTrigger()]; + case 6: + _a.sent(); + return [2 /*return*/, { message: 'No Operation' }]; + case 7: err_4 = _a.sent(); node.setExecuting(false); throw err_4; - case 6: return [2 /*return*/]; + case 8: return [2 /*return*/]; } }); }); diff --git a/src/features/runningTree.ts b/src/features/runningTree.ts index 490e669e..03bf48ef 100644 --- a/src/features/runningTree.ts +++ b/src/features/runningTree.ts @@ -2311,27 +2311,34 @@ export class RunningTree< const operations = node.composeOperations()!; // 这里理论上virtualNode下面也可以有多个不同的entity的组件,但实际中不应当出现这样的设计 - const entities = uniq( - operations.filter((ele) => !!ele).map((ele) => ele.entity) - ); - assert(entities.length === 1); + if (operations.length > 0) { + const entities = uniq( + operations.filter((ele) => !!ele).map((ele) => ele.entity) + ); + assert(entities.length === 1); - const result = await this.cache.operate( - entities[0], - operations - .filter((ele) => !!ele) - .map((ele) => ele.operation), - undefined, - () => { - // 清空缓存 - node.clean(); - node.setExecuting(false); - } - ); + const result = await this.cache.operate( + entities[0], + operations + .filter((ele) => !!ele) + .map((ele) => ele.operation), + undefined, + () => { + // 清空缓存 + node.clean(); + node.setExecuting(false); + } + ); + await node.doAfterTrigger(); + + return result; + } + node.clean(); + node.setExecuting(false); await node.doAfterTrigger(); - return result; + return { message: 'No Operation' }; } catch (err) { node.setExecuting(false); throw err; From 2604f7ef28ac16347cc1ac9ebc7063614a9c505e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E6=9C=9D=E4=BC=9F?= <2211960668@qq.com> Date: Fri, 16 Jun 2023 10:38:59 +0800 Subject: [PATCH 02/13] =?UTF-8?q?runningTree=20execute=E6=B2=A1=E6=9C=89op?= =?UTF-8?q?eration=E7=9A=84=E6=97=B6=E5=80=99=E7=9B=B4=E6=8E=A5return?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/features/runningTree.d.ts | 4 +--- lib/features/runningTree.js | 2 +- src/features/runningTree.ts | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/features/runningTree.d.ts b/lib/features/runningTree.d.ts index b5cdb62f..2b74260a 100644 --- a/lib/features/runningTree.d.ts +++ b/lib/features/runningTree.d.ts @@ -276,9 +276,7 @@ export declare class RunningTree(path: string, action?: ED[T]['Action']): Promise<{ result: Awaited>; message: string | null | undefined; - } | { - message: string; - }>; + } | undefined>; clean(path: string): void; getRoot(): Record | ListNode | VirtualNode>; subscribeNode(callback: (path: string) => any, path: string): () => void; diff --git a/lib/features/runningTree.js b/lib/features/runningTree.js index 8e89992a..2e2b954b 100644 --- a/lib/features/runningTree.js +++ b/lib/features/runningTree.js @@ -2156,7 +2156,7 @@ var RunningTree = /** @class */ (function (_super) { return [4 /*yield*/, node.doAfterTrigger()]; case 6: _a.sent(); - return [2 /*return*/, { message: 'No Operation' }]; + return [2 /*return*/]; case 7: err_4 = _a.sent(); node.setExecuting(false); diff --git a/src/features/runningTree.ts b/src/features/runningTree.ts index 03bf48ef..5a82dfd4 100644 --- a/src/features/runningTree.ts +++ b/src/features/runningTree.ts @@ -2338,7 +2338,7 @@ export class RunningTree< node.setExecuting(false); await node.doAfterTrigger(); - return { message: 'No Operation' }; + return; } catch (err) { node.setExecuting(false); throw err; From 315c90266e74f427eec42add490ad455d3130380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E6=9C=9D=E4=BC=9F?= <2211960668@qq.com> Date: Fri, 16 Jun 2023 10:55:38 +0800 Subject: [PATCH 03/13] fix --- lib/features/runningTree.d.ts | 4 +++- lib/features/runningTree.js | 2 +- src/features/runningTree.ts | 14 +++++++------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/features/runningTree.d.ts b/lib/features/runningTree.d.ts index 2b74260a..b5cdb62f 100644 --- a/lib/features/runningTree.d.ts +++ b/lib/features/runningTree.d.ts @@ -276,7 +276,9 @@ export declare class RunningTree(path: string, action?: ED[T]['Action']): Promise<{ result: Awaited>; message: string | null | undefined; - } | undefined>; + } | { + message: string; + }>; clean(path: string): void; getRoot(): Record | ListNode | VirtualNode>; subscribeNode(callback: (path: string) => any, path: string): () => void; diff --git a/lib/features/runningTree.js b/lib/features/runningTree.js index 2e2b954b..8e89992a 100644 --- a/lib/features/runningTree.js +++ b/lib/features/runningTree.js @@ -2156,7 +2156,7 @@ var RunningTree = /** @class */ (function (_super) { return [4 /*yield*/, node.doAfterTrigger()]; case 6: _a.sent(); - return [2 /*return*/]; + return [2 /*return*/, { message: 'No Operation' }]; case 7: err_4 = _a.sent(); node.setExecuting(false); diff --git a/src/features/runningTree.ts b/src/features/runningTree.ts index 5a82dfd4..536825c6 100644 --- a/src/features/runningTree.ts +++ b/src/features/runningTree.ts @@ -363,7 +363,7 @@ class ListNode< Cxt extends AsyncContext, FrontCxt extends SyncContext, AD extends CommonAspectDict - > extends Node { +> extends Node { private children: Record>; private updates: Record< string, @@ -1061,7 +1061,7 @@ class ListNode< } else { this.aggr = aggr; } - + } ); } catch (err) { @@ -1092,7 +1092,7 @@ class ListNode< if (this.dirty) { this.dirty = undefined; this.updates = {}; - + for (const k in this.children) { this.children[k].clean(); } @@ -1500,7 +1500,7 @@ class SingleNode, FrontCxt extends SyncContext, AD extends CommonAspectDict - > extends Feature { +> extends Feature { private dirty: boolean; private executing: boolean; private loading = false; @@ -1821,7 +1821,7 @@ export class RunningTree< Cxt extends AsyncContext, FrontCxt extends SyncContext, AD extends CommonAspectDict - > extends Feature { +> extends Feature { private cache: Cache; private schema: StorageSchema; private authDict: AuthDefDict; @@ -2338,7 +2338,7 @@ export class RunningTree< node.setExecuting(false); await node.doAfterTrigger(); - return; + return { message: 'No Operation'}; } catch (err) { node.setExecuting(false); throw err; From 119f0cfcf2e2f427f7eca4485fe869c1ad2828bb Mon Sep 17 00:00:00 2001 From: wangwenchen <920960949@qq.com> Date: Mon, 26 Jun 2023 19:04:54 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/features/port.d.ts | 2 +- lib/features/port.js | 4 ++-- src/features/port.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/features/port.d.ts b/lib/features/port.d.ts index db56701e..cd26bae2 100644 --- a/lib/features/port.d.ts +++ b/lib/features/port.d.ts @@ -11,7 +11,7 @@ export declare class Port[] | undefined; message?: string | null | undefined; }>; - exportEntity(entity: T, id: string, filter?: ED[T]['Selection']['filter']): Promise<{ + exportEntity(entity: T, id: string, filter?: ED[T]['Selection']['filter'], properties?: Record): Promise<{ result: Awaited>; opRecords?: import("oak-domain/lib/types").OpRecord[] | undefined; message?: string | null | undefined; diff --git a/lib/features/port.js b/lib/features/port.js index a657ec95..fb225459 100644 --- a/lib/features/port.js +++ b/lib/features/port.js @@ -18,8 +18,8 @@ var Port = /** @class */ (function (_super) { formData.set('option', JSON.stringify(option)); return this.aspectWrapper.exec('importEntity', formData); }; - Port.prototype.exportEntity = function (entity, id, filter) { - return this.aspectWrapper.exec('exportEntity', { entity: entity, id: id, filter: filter }); + Port.prototype.exportEntity = function (entity, id, filter, properties) { + return this.aspectWrapper.exec('exportEntity', { entity: entity, id: id, filter: filter, properties: properties }); }; Port.prototype.getImportationTemplate = function (id) { return this.aspectWrapper.exec('getImportationTemplate', { id: id }); diff --git a/src/features/port.ts b/src/features/port.ts index 2a314e1a..31b96e32 100644 --- a/src/features/port.ts +++ b/src/features/port.ts @@ -27,8 +27,8 @@ export class Port< return this.aspectWrapper.exec('importEntity', formData); } - exportEntity(entity: T, id: string, filter?: ED[T]['Selection']['filter']) { - return this.aspectWrapper.exec('exportEntity', { entity, id, filter }); + exportEntity(entity: T, id: string, filter?: ED[T]['Selection']['filter'], properties?: Record) { + return this.aspectWrapper.exec('exportEntity', { entity, id, filter, properties }); } getImportationTemplate(id: string) { From 92db10aac3e86fc17e8912308ecfdb14819f5128 Mon Sep 17 00:00:00 2001 From: wkj <278599135@qq.com> Date: Wed, 28 Jun 2023 18:10:22 +0800 Subject: [PATCH 05/13] =?UTF-8?q?package.json=20=E5=A2=9E=E5=8A=A0remove-a?= =?UTF-8?q?ntd=20=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 ++- src/components/filter2/web.tsx | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 5b11f2e9..d64fd1a9 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,8 @@ "copy-xml": "copyfiles -u 1 src/**/*.xml lib/ & copyfiles -u 1 src/**/*.wxml lib/", "build": "tsc && npm run copy-js && npm run copy-less && npm run copy-wxs && npm run copy-svg && npm run copy-xml", "test": "ts-node ./test/test2.ts", - "prepare": "rimraf node_modules/react & rimraf node_modules/react-dom & rimraf node_modules/react-router" + "prepare": "rimraf node_modules/react & rimraf node_modules/react-dom & rimraf node_modules/react-router & rimraf node_modules/react-router-dom", + "remove-antd": "rimraf node_modules/antd & rimraf node_modules/antd-mobile & rimraf node_modules/@ant-design & rimraf node_modules/antd-mobile-icons & rimraf node_modules/antd-mobile-v5-count" }, "main": "lib/index" } diff --git a/src/components/filter2/web.tsx b/src/components/filter2/web.tsx index 4420ac2f..66a08453 100644 --- a/src/components/filter2/web.tsx +++ b/src/components/filter2/web.tsx @@ -74,9 +74,6 @@ export default function Render( } = props.data; const { t, - addNamedFilter, - removeNamedFilterByName, - refresh, getNamedFilter, setFilterAndResetFilter, } = props.methods; From 40d3aeb343dbaf2f6fa43f82ae32b1e9463b412a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E6=9C=9D=E4=BC=9F?= <2211960668@qq.com> Date: Mon, 3 Jul 2023 10:13:58 +0800 Subject: [PATCH 06/13] fix filter2 --- lib/components/filter2/web.js | 8 ++++++-- src/components/filter2/web.tsx | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/components/filter2/web.js b/lib/components/filter2/web.js index dd8d6ddd..3ca1a1b2 100644 --- a/lib/components/filter2/web.js +++ b/lib/components/filter2/web.js @@ -14,7 +14,7 @@ var utils_1 = require("./utils"); var refAttr_1 = tslib_1.__importDefault(require("../refAttr")); function Render(props) { var _a = props.data, entity = _a.entity, column = _a.column, oakFullpath = _a.oakFullpath, viewType = _a.viewType, options = _a.options, attrI18n = _a.attrI18n, entityI18n = _a.entityI18n, isCommonI18n = _a.isCommonI18n; - var _b = props.methods, t = _b.t, addNamedFilter = _b.addNamedFilter, removeNamedFilterByName = _b.removeNamedFilterByName, refresh = _b.refresh, getNamedFilter = _b.getNamedFilter, setFilterAndResetFilter = _b.setFilterAndResetFilter; + var _b = props.methods, t = _b.t, getNamedFilter = _b.getNamedFilter, setFilterAndResetFilter = _b.setFilterAndResetFilter; var name = (0, utils_1.getFilterName)(column); var filter = getNamedFilter(name); var op = column.op, attr = column.attr, placeholder = column.placeholder, _label = column.label; @@ -57,7 +57,11 @@ function Render(props) { }); }); var multiple_1 = ['$in', '$nin'].includes(op || ''); V = ((0, jsx_runtime_1.jsx)(antd_1.Select, { mode: multiple_1 ? 'multiple' : undefined, allowClear: true, placeholder: placeholder || t('placeholder.select'), onChange: function (value) { - setFilterAndResetFilter(viewType, value ? (multiple_1 ? value : [value]) : []); + var value2 = multiple_1 ? [value] : value; + if ((value === undefined || value === null) && multiple_1) { + value2 = []; + } + setFilterAndResetFilter(viewType, value2); }, options: options2 })); break; } diff --git a/src/components/filter2/web.tsx b/src/components/filter2/web.tsx index 66a08453..075a4aa6 100644 --- a/src/components/filter2/web.tsx +++ b/src/components/filter2/web.tsx @@ -139,9 +139,13 @@ export default function Render( allowClear placeholder={placeholder || t('placeholder.select')} onChange={(value) => { + let value2 = multiple ? [value] : value; + if ((value === undefined || value === null) && multiple) { + value2 = []; + } setFilterAndResetFilter( viewType, - value ? (multiple ? value : [value]) : [] + value2 ); }} options={options2} From 358da9b084818cca489f6a8b0c1b180450790c3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E6=9C=9D=E4=BC=9F?= <2211960668@qq.com> Date: Mon, 3 Jul 2023 17:32:55 +0800 Subject: [PATCH 07/13] fix filter2 --- lib/components/filter2/web.js | 4 ++-- src/components/filter2/web.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/components/filter2/web.js b/lib/components/filter2/web.js index 3ca1a1b2..632c1f72 100644 --- a/lib/components/filter2/web.js +++ b/lib/components/filter2/web.js @@ -57,8 +57,8 @@ function Render(props) { }); }); var multiple_1 = ['$in', '$nin'].includes(op || ''); V = ((0, jsx_runtime_1.jsx)(antd_1.Select, { mode: multiple_1 ? 'multiple' : undefined, allowClear: true, placeholder: placeholder || t('placeholder.select'), onChange: function (value) { - var value2 = multiple_1 ? [value] : value; - if ((value === undefined || value === null) && multiple_1) { + var value2 = multiple_1 ? value : [value]; + if (value === undefined || value === null) { value2 = []; } setFilterAndResetFilter(viewType, value2); diff --git a/src/components/filter2/web.tsx b/src/components/filter2/web.tsx index 075a4aa6..3e2371c2 100644 --- a/src/components/filter2/web.tsx +++ b/src/components/filter2/web.tsx @@ -139,8 +139,8 @@ export default function Render( allowClear placeholder={placeholder || t('placeholder.select')} onChange={(value) => { - let value2 = multiple ? [value] : value; - if ((value === undefined || value === null) && multiple) { + let value2 = multiple ? value : [value]; + if (value === undefined || value === null) { value2 = []; } setFilterAndResetFilter( From 63700137fb9b803fd04a108fcdd8018e4be5f9da Mon Sep 17 00:00:00 2001 From: wkj <278599135@qq.com> Date: Tue, 4 Jul 2023 14:49:32 +0800 Subject: [PATCH 08/13] =?UTF-8?q?fix=20=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E4=B8=8A=20t=E7=BC=96=E8=AF=91=E6=97=B6=E5=8A=A0=E4=B8=8A=20li?= =?UTF-8?q?st=E7=BB=84=E4=BB=B6=E6=96=87=E4=BB=B6path?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/components/list/index.js | 6 +++--- src/components/list/index.ts | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/components/list/index.js b/lib/components/list/index.js index 31c4f938..1f700ae7 100644 --- a/lib/components/list/index.js +++ b/lib/components/list/index.js @@ -41,16 +41,16 @@ exports.default = OakComponent({ lifetimes: { ready: function () { return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a, attributes, entity, data, attributesMb, schema, colorDict, converter; - var _this = this; + var _a, attributes, entity, data, attributesMb, t, schema, colorDict, converter; return tslib_1.__generator(this, function (_b) { _a = this.props, attributes = _a.attributes, entity = _a.entity, data = _a.data, attributesMb = _a.attributesMb; + t = this.t; schema = this.features.cache.getSchema(); colorDict = this.features.style.getColorDict(); (0, assert_1.default)(!!data, 'data不能为空'); (0, assert_1.default)(!!entity, 'list属性entity不能为空'); if (attributesMb) { - converter = (0, usefulFn_1.analyzeAttrMobileForCard)(schema, entity, function (k, params) { return _this.t(k, params); }, attributesMb, colorDict); + converter = (0, usefulFn_1.analyzeAttrMobileForCard)(schema, entity, t, attributesMb, colorDict); this.setState({ converter: converter, colorDict: colorDict, diff --git a/src/components/list/index.ts b/src/components/list/index.ts index adb85e5f..cd4d8d59 100644 --- a/src/components/list/index.ts +++ b/src/components/list/index.ts @@ -52,6 +52,7 @@ export default OakComponent({ async ready() { // 因为部分i18json数据请求较慢,会导致converter,columnDef解析出错 const { attributes, entity, data, attributesMb } = this.props; + const { t } = this; const schema = this.features.cache.getSchema(); const colorDict = this.features.style.getColorDict(); assert(!!data, 'data不能为空'); @@ -60,7 +61,7 @@ export default OakComponent({ const converter = analyzeAttrMobileForCard( schema, entity, - (k, params) => this.t(k, params), + t, attributesMb as CardDef, colorDict ); From 768faa1d8a246f28baf0b23a22223cbb19f7a2cd Mon Sep 17 00:00:00 2001 From: wkj <278599135@qq.com> Date: Thu, 6 Jul 2023 13:36:22 +0800 Subject: [PATCH 09/13] =?UTF-8?q?list=20t=E5=87=BD=E6=95=B0=20=E5=9B=9E?= =?UTF-8?q?=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/components/list/index.js | 6 +++--- src/components/list/index.ts | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/components/list/index.js b/lib/components/list/index.js index 1f700ae7..31c4f938 100644 --- a/lib/components/list/index.js +++ b/lib/components/list/index.js @@ -41,16 +41,16 @@ exports.default = OakComponent({ lifetimes: { ready: function () { return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a, attributes, entity, data, attributesMb, t, schema, colorDict, converter; + var _a, attributes, entity, data, attributesMb, schema, colorDict, converter; + var _this = this; return tslib_1.__generator(this, function (_b) { _a = this.props, attributes = _a.attributes, entity = _a.entity, data = _a.data, attributesMb = _a.attributesMb; - t = this.t; schema = this.features.cache.getSchema(); colorDict = this.features.style.getColorDict(); (0, assert_1.default)(!!data, 'data不能为空'); (0, assert_1.default)(!!entity, 'list属性entity不能为空'); if (attributesMb) { - converter = (0, usefulFn_1.analyzeAttrMobileForCard)(schema, entity, t, attributesMb, colorDict); + converter = (0, usefulFn_1.analyzeAttrMobileForCard)(schema, entity, function (k, params) { return _this.t(k, params); }, attributesMb, colorDict); this.setState({ converter: converter, colorDict: colorDict, diff --git a/src/components/list/index.ts b/src/components/list/index.ts index cd4d8d59..adb85e5f 100644 --- a/src/components/list/index.ts +++ b/src/components/list/index.ts @@ -52,7 +52,6 @@ export default OakComponent({ async ready() { // 因为部分i18json数据请求较慢,会导致converter,columnDef解析出错 const { attributes, entity, data, attributesMb } = this.props; - const { t } = this; const schema = this.features.cache.getSchema(); const colorDict = this.features.style.getColorDict(); assert(!!data, 'data不能为空'); @@ -61,7 +60,7 @@ export default OakComponent({ const converter = analyzeAttrMobileForCard( schema, entity, - t, + (k, params) => this.t(k, params), attributesMb as CardDef, colorDict ); From bf625be1649d2c4cc46426ec8e0c082161a6a838 Mon Sep 17 00:00:00 2001 From: wkj <278599135@qq.com> Date: Thu, 6 Jul 2023 13:37:09 +0800 Subject: [PATCH 10/13] // @ts-ignore react-router-dom --- src/platforms/web/router/withRouter.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platforms/web/router/withRouter.tsx b/src/platforms/web/router/withRouter.tsx index bda9818e..c6171917 100644 --- a/src/platforms/web/router/withRouter.tsx +++ b/src/platforms/web/router/withRouter.tsx @@ -1,5 +1,5 @@ import React from 'react'; - +// @ts-ignore import { useNavigate, useLocation, useParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { useWidth } from './../responsive'; From ce88770d788f1dbe883628fa5f088603d02fd0d8 Mon Sep 17 00:00:00 2001 From: wkj <278599135@qq.com> Date: Thu, 6 Jul 2023 14:52:11 +0800 Subject: [PATCH 11/13] =?UTF-8?q?pull-to-refresh=20=E9=BB=98=E8=AE=A4min-h?= =?UTF-8?q?eight=E4=B8=BA100vh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/platforms/web/PullToRefresh.css | 30 ++++++++++++++++++++++++++++ lib/platforms/web/PullToRefresh.d.ts | 2 +- lib/platforms/web/PullToRefresh.js | 4 ++-- src/platforms/web/PullToRefresh.css | 30 ++++++++++++++++++++++++++++ src/platforms/web/PullToRefresh.tsx | 7 +++---- 5 files changed, 66 insertions(+), 7 deletions(-) create mode 100644 lib/platforms/web/PullToRefresh.css create mode 100644 src/platforms/web/PullToRefresh.css diff --git a/lib/platforms/web/PullToRefresh.css b/lib/platforms/web/PullToRefresh.css new file mode 100644 index 00000000..cbb47add --- /dev/null +++ b/lib/platforms/web/PullToRefresh.css @@ -0,0 +1,30 @@ +.oak-pull-to-refresh-content { + transform-origin: left top 0px; +} + +.oak-pull-to-refresh-content-wrapper { + overflow: hidden; +} + +.oak-pull-to-refresh-transition { + transition: transform 0.3s; +} + +.oak-pull-to-refresh-indicator { + color: grey; + text-align: center; + height: 25px; + line-height: 25px; +} + +.oak-pull-to-refresh-down .oak-pull-to-refresh-indicator { + margin-top: -25px; +} + +.oak-pull-to-refresh-up .oak-pull-to-refresh-indicator { + margin-bottom: -25px; +} + +.oak-pull-to-refresh-content-wrapper .oak-pull-to-refresh-content>:nth-child(2) { + min-height: 100vh; +} \ No newline at end of file diff --git a/lib/platforms/web/PullToRefresh.d.ts b/lib/platforms/web/PullToRefresh.d.ts index 08b1f5f4..2ccd3353 100644 --- a/lib/platforms/web/PullToRefresh.d.ts +++ b/lib/platforms/web/PullToRefresh.d.ts @@ -1,4 +1,4 @@ import React from 'react'; -import 'rmc-pull-to-refresh/assets/index.css'; +import './PullToRefresh.css'; declare const OakPullToRefresh: React.FC; export default OakPullToRefresh; diff --git a/lib/platforms/web/PullToRefresh.js b/lib/platforms/web/PullToRefresh.js index b0a9aa92..069e053d 100644 --- a/lib/platforms/web/PullToRefresh.js +++ b/lib/platforms/web/PullToRefresh.js @@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var jsx_runtime_1 = require("react/jsx-runtime"); var rmc_pull_to_refresh_1 = tslib_1.__importDefault(require("rmc-pull-to-refresh")); -require("rmc-pull-to-refresh/assets/index.css"); +require("./PullToRefresh.css"); var OakPullToRefresh = function (props) { - return ((0, jsx_runtime_1.jsx)(rmc_pull_to_refresh_1.default, tslib_1.__assign({}, props))); + return (0, jsx_runtime_1.jsx)(rmc_pull_to_refresh_1.default, tslib_1.__assign({}, props, { prefixCls: "oak-pull-to-refresh" })); }; exports.default = OakPullToRefresh; diff --git a/src/platforms/web/PullToRefresh.css b/src/platforms/web/PullToRefresh.css new file mode 100644 index 00000000..cbb47add --- /dev/null +++ b/src/platforms/web/PullToRefresh.css @@ -0,0 +1,30 @@ +.oak-pull-to-refresh-content { + transform-origin: left top 0px; +} + +.oak-pull-to-refresh-content-wrapper { + overflow: hidden; +} + +.oak-pull-to-refresh-transition { + transition: transform 0.3s; +} + +.oak-pull-to-refresh-indicator { + color: grey; + text-align: center; + height: 25px; + line-height: 25px; +} + +.oak-pull-to-refresh-down .oak-pull-to-refresh-indicator { + margin-top: -25px; +} + +.oak-pull-to-refresh-up .oak-pull-to-refresh-indicator { + margin-bottom: -25px; +} + +.oak-pull-to-refresh-content-wrapper .oak-pull-to-refresh-content>:nth-child(2) { + min-height: 100vh; +} \ No newline at end of file diff --git a/src/platforms/web/PullToRefresh.tsx b/src/platforms/web/PullToRefresh.tsx index 9e8210d3..2077705a 100644 --- a/src/platforms/web/PullToRefresh.tsx +++ b/src/platforms/web/PullToRefresh.tsx @@ -1,11 +1,10 @@ import React from 'react'; import PullToRefresh from 'rmc-pull-to-refresh'; -import 'rmc-pull-to-refresh/assets/index.css'; +import './PullToRefresh.css'; + const OakPullToRefresh: React.FC = (props) => { - return ( - - ); + return ; }; export default OakPullToRefresh; From 5c653ff7275ee625dbdbb76075d6ca5168ce4571 Mon Sep 17 00:00:00 2001 From: "Xc@centOs" Date: Fri, 7 Jul 2023 10:04:29 +0800 Subject: [PATCH 12/13] =?UTF-8?q?cachestore=E4=B8=AD=E7=9A=84checker?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E7=82=B9=E6=94=B9=E4=B8=BAcascadeUpdate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/cacheStore/CacheStore.d.ts | 3 ++- lib/cacheStore/CacheStore.js | 9 +++++++-- lib/cacheStore/CheckerExecutor.d.ts | 2 +- lib/features/runningTree.d.ts | 4 ++-- lib/initialize-dev.d.ts | 2 +- lib/initialize-prod.d.ts | 2 +- lib/platforms/web/router/withRouter.js | 1 + src/cacheStore/CacheStore.ts | 23 +++++++++++++++-------- src/cacheStore/CheckerExecutor.ts | 10 +++++----- 9 files changed, 35 insertions(+), 21 deletions(-) diff --git a/lib/cacheStore/CacheStore.d.ts b/lib/cacheStore/CacheStore.d.ts index 9e7995c3..2ad8a56b 100644 --- a/lib/cacheStore/CacheStore.d.ts +++ b/lib/cacheStore/CacheStore.d.ts @@ -1,4 +1,4 @@ -import { AggregationResult, EntityDict, OperationResult, OpRecord, SelectOption } from 'oak-domain/lib/types/Entity'; +import { AggregationResult, EntityDict, OperateOption, OperationResult, OpRecord, SelectOption } from 'oak-domain/lib/types/Entity'; import { StorageSchema } from "oak-domain/lib/types/Storage"; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain'; import { Checker, CheckerType, TxnOption } from 'oak-domain/lib/types'; @@ -10,6 +10,7 @@ export declare class CacheStore, getFullDataFn?: () => any, resetInitialDataFn?: () => void); aggregate(entity: T, aggregation: ED[T]['Aggregation'], context: SyncContext, option: OP): AggregationResult; + protected cascadeUpdate(entity: T, operation: ED[T]['Operation'], context: SyncContext, option: OP): OperationResult; operate(entity: T, operation: ED[T]['Operation'], context: Cxt, option: OP): OperationResult; sync>(opRecords: Array>, context: Cxt): void; check(entity: T, operation: Omit, context: Cxt, checkerTypes?: CheckerType[]): void; diff --git a/lib/cacheStore/CacheStore.js b/lib/cacheStore/CacheStore.js index 06fe765f..8d5e04b6 100644 --- a/lib/cacheStore/CacheStore.js +++ b/lib/cacheStore/CacheStore.js @@ -18,17 +18,22 @@ var CacheStore = /** @class */ (function (_super) { CacheStore.prototype.aggregate = function (entity, aggregation, context, option) { return this.aggregateSync(entity, aggregation, context, option); }; - CacheStore.prototype.operate = function (entity, operation, context, option) { + CacheStore.prototype.cascadeUpdate = function (entity, operation, context, option) { (0, assert_1.default)(context.getCurrentTxnId()); if (!option.blockTrigger) { this.checkerExecutor.check(entity, operation, context, 'before'); } - var result = _super.prototype.operateSync.call(this, entity, operation, context, option); + var result = _super.prototype.cascadeUpdate.call(this, entity, operation, context, option); if (!option.blockTrigger) { this.checkerExecutor.check(entity, operation, context, 'after'); } return result; }; + CacheStore.prototype.operate = function (entity, operation, context, option) { + (0, assert_1.default)(context.getCurrentTxnId()); + var result = _super.prototype.operateSync.call(this, entity, operation, context, option); + return result; + }; CacheStore.prototype.sync = function (opRecords, context) { var autoCommit = !context.getCurrentTxnId(); if (autoCommit) { diff --git a/lib/cacheStore/CheckerExecutor.d.ts b/lib/cacheStore/CheckerExecutor.d.ts index ca97aae7..77fe13de 100644 --- a/lib/cacheStore/CheckerExecutor.d.ts +++ b/lib/cacheStore/CheckerExecutor.d.ts @@ -5,5 +5,5 @@ import { SyncContext } from 'oak-domain/lib/store/SyncRowStore'; export default class CheckerExecutor> { private checkerMap; registerChecker(checker: Checker): void; - check(entity: T, operation: Omit, context: Cxt, when?: 'before' | 'after', checkerTypes?: CheckerType[]): void; + check(entity: T, operation: Omit, context: SyncContext, when?: 'before' | 'after', checkerTypes?: CheckerType[]): void; } diff --git a/lib/features/runningTree.d.ts b/lib/features/runningTree.d.ts index b5cdb62f..0beb9e3e 100644 --- a/lib/features/runningTree.d.ts +++ b/lib/features/runningTree.d.ts @@ -128,7 +128,7 @@ declare class ListNode): ED[T]["CreateSingle"] | ED[T]["Update"] | ED[T]["Remove"] | undefined; - getIntrinsticFilters(): ED[T]["Selection"]["filter"] | undefined; + getIntrinsticFilters(): ED[T]["Selection"]["filter"]; } declare class SingleNode, FrontCxt extends SyncContext, AD extends CommonAspectDict> extends Node { private id?; @@ -267,7 +267,7 @@ export declare class RunningTree(path: string, sorter: NamedSorterItem, refresh?: boolean): void; removeNamedSorter(path: string, sorter: NamedSorterItem, refresh?: boolean): void; removeNamedSorterByName(path: string, name: string, refresh?: boolean): void; - getIntrinsticFilters(path: string): ED[keyof ED]["Selection"]["filter"] | undefined; + getIntrinsticFilters(path: string): ED[keyof ED]["Selection"]["filter"]; tryExecute(path: string): boolean | Error; getOperations(path: string): { entity: keyof ED; diff --git a/lib/initialize-dev.d.ts b/lib/initialize-dev.d.ts index ffe69a1d..5f73c72c 100644 --- a/lib/initialize-dev.d.ts +++ b/lib/initialize-dev.d.ts @@ -30,5 +30,5 @@ export declare function initialize]?: ED[K]['Relation'][]; }; }, colorDict?: ColorDict, importations?: Importation[], exportations?: Exportation[]): { - features: BasicFeatures & AD>; + features: BasicFeatures, CommonAspectDict & AD>; }; diff --git a/lib/initialize-prod.d.ts b/lib/initialize-prod.d.ts index 5f5a02c8..f2461578 100644 --- a/lib/initialize-prod.d.ts +++ b/lib/initialize-prod.d.ts @@ -25,5 +25,5 @@ export declare function initialize]?: ED[K]['Relation'][]; }; }, colorDict?: ColorDict): { - features: import("./features").BasicFeatures>; + features: import("./features").BasicFeatures, AD & CommonAspectDict>; }; diff --git a/lib/platforms/web/router/withRouter.js b/lib/platforms/web/router/withRouter.js index abaaa203..8ffc5823 100644 --- a/lib/platforms/web/router/withRouter.js +++ b/lib/platforms/web/router/withRouter.js @@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var jsx_runtime_1 = require("react/jsx-runtime"); var react_1 = tslib_1.__importDefault(require("react")); +// @ts-ignore var react_router_dom_1 = require("react-router-dom"); var react_i18next_1 = require("react-i18next"); var responsive_1 = require("./../responsive"); diff --git a/src/cacheStore/CacheStore.ts b/src/cacheStore/CacheStore.ts index 82642517..9812458a 100644 --- a/src/cacheStore/CacheStore.ts +++ b/src/cacheStore/CacheStore.ts @@ -1,4 +1,4 @@ -import { AggregationResult, EntityDict, OperationResult, OpRecord, SelectOption } from 'oak-domain/lib/types/Entity'; +import { AggregationResult, EntityDict, OperateOption, OperationResult, OpRecord, SelectOption } from 'oak-domain/lib/types/Entity'; import { StorageSchema } from "oak-domain/lib/types/Storage"; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain'; import { Checker, CheckerType, TxnOption } from 'oak-domain/lib/types'; @@ -32,6 +32,20 @@ export class CacheStore< return this.aggregateSync(entity, aggregation, context, option); } + protected cascadeUpdate(entity: T, operation: ED[T]['Operation'], context: SyncContext, option: OP): OperationResult { + assert(context.getCurrentTxnId()); + if (!option.blockTrigger) { + this.checkerExecutor.check(entity, operation, context, 'before'); + } + const result = super.cascadeUpdate(entity, operation, context, option); + + if (!option.blockTrigger) { + this.checkerExecutor.check(entity, operation, context, 'after'); + } + + return result; + } + operate( entity: T, operation: ED[T]['Operation'], @@ -39,14 +53,7 @@ export class CacheStore< option: OP ): OperationResult { assert(context.getCurrentTxnId()); - if (!option.blockTrigger) { - this.checkerExecutor.check(entity, operation, context, 'before'); - } const result = super.operateSync(entity, operation, context, option); - if (!option.blockTrigger) { - this.checkerExecutor.check(entity, operation, context, 'after'); - } - return result; } diff --git a/src/cacheStore/CheckerExecutor.ts b/src/cacheStore/CheckerExecutor.ts index 3acfba2f..da1111c0 100644 --- a/src/cacheStore/CheckerExecutor.ts +++ b/src/cacheStore/CheckerExecutor.ts @@ -12,10 +12,10 @@ export default class CheckerExecutor, context: Cxt, option: SelectOption | OperateOption) => void; + fn: (operation: Omit, context: SyncContext, option: SelectOption | OperateOption) => void; type: CheckerType; when: 'before' | 'after'; - filter?: ED[K]['Update']['filter'] | ((operation: Omit, context: Cxt, option: SelectOption | OperateOption) => ED[K]['Update']['filter']); + filter?: ED[K]['Update']['filter'] | ((operation: Omit, context: SyncContext, option: SelectOption | OperateOption) => ED[K]['Update']['filter']); }>; }; } = {}; @@ -37,7 +37,7 @@ export default class CheckerExecutor, context: Cxt, option: OperateOption | SelectOption) => void, + fn: fn as (operation: Omit, context: SyncContext, option: OperateOption | SelectOption) => void, when, filter: conditionalFilter, }); @@ -77,7 +77,7 @@ export default class CheckerExecutor(entity: T, operation: Omit, context: Cxt, when?: 'before' | 'after', checkerTypes?: CheckerType[]) { + check(entity: T, operation: Omit, context: SyncContext, when?: 'before' | 'after', checkerTypes?: CheckerType[]) { const { action } = operation; const checkers = this.checkerMap[entity] && this.checkerMap[entity]![action]; if (checkers) { @@ -87,7 +87,7 @@ export default class CheckerExecutor(entity, context, filterr, operation.filter, true); + const isRepel = checkFilterRepel>(entity, context, filterr, operation.filter, true); assert(typeof isRepel === 'boolean'); if (isRepel) { continue; From c701849016db1b5decb8953a66ebfcc6d1fbbb03 Mon Sep 17 00:00:00 2001 From: wangwenchen <920960949@qq.com> Date: Mon, 10 Jul 2023 19:17:37 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E6=B3=A8=E9=87=8Aclean()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/features/runningTree.js | 2 +- src/features/runningTree.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/features/runningTree.js b/lib/features/runningTree.js index 8e89992a..3095ddc1 100644 --- a/lib/features/runningTree.js +++ b/lib/features/runningTree.js @@ -1401,7 +1401,7 @@ var SingleNode = /** @class */ (function (_super) { _this.aggr = aggr && aggr[0]; _this.setFiltersAndSortedApplied(); _this.setLoading(false); - _this.clean(); + //_this.clean(); })]; case 2: _b = tslib_1.__read.apply(void 0, [(_c.sent()).data, 1]), value = _b[0]; diff --git a/src/features/runningTree.ts b/src/features/runningTree.ts index 536825c6..0725d4f9 100644 --- a/src/features/runningTree.ts +++ b/src/features/runningTree.ts @@ -1479,7 +1479,7 @@ class SingleNode