From ca1fe55c3b3b21ad1a5ad389ed0e3e8ea0f22494 Mon Sep 17 00:00:00 2001 From: "Xc@centOs" Date: Sat, 15 Oct 2022 18:41:20 +0800 Subject: [PATCH] =?UTF-8?q?cascade=E5=AF=B9=E5=A4=9A=E5=AF=B9=E4=B8=80?= =?UTF-8?q?=E7=BA=A7=E8=81=94=E8=BF=94=E5=9B=9E=E7=9A=84=E7=A9=BA=E5=80=BC?= =?UTF-8?q?=E6=9C=AA=E6=AD=A3=E7=A1=AE=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/store/CascadeStore.js | 4 +-- lib/store/modi.js | 37 +++-------------------- lib/triggers/modi.js | 38 +++++++++--------------- lib/utils/lodash.d.ts | 17 +---------- lib/utils/lodash.js | 62 +++++++++++++++++++-------------------- src/store/CascadeStore.ts | 6 ++-- src/store/modi.ts | 27 ++--------------- src/triggers/modi.ts | 10 +------ src/utils/lodash.ts | 7 ++--- 9 files changed, 62 insertions(+), 146 deletions(-) diff --git a/lib/store/CascadeStore.js b/lib/store/CascadeStore.js index 8aaa0c6..988833a 100644 --- a/lib/store/CascadeStore.js +++ b/lib/store/CascadeStore.js @@ -128,7 +128,7 @@ var CascadeStore = /** @class */ (function (_super) { subCascadeSelectionFns.forEach(function (ele) { return cascadeSelectionFns.push(function (result) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, ele(result.map(function (ele2) { return ele2[attr]; }))]; + case 0: return [4 /*yield*/, ele(result.map(function (ele2) { return ele2[attr]; }).filter(function (ele2) { return !!ele2; }))]; case 1: _a.sent(); return [2 /*return*/]; @@ -222,7 +222,7 @@ var CascadeStore = /** @class */ (function (_super) { subCascadeSelectionFns.forEach(function (ele) { return cascadeSelectionFns.push(function (result) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, ele(result.map(function (ele2) { return ele2[attr]; }))]; + case 0: return [4 /*yield*/, ele(result.map(function (ele2) { return ele2[attr]; }).filter(function (ele2) { return !!ele2; }))]; case 1: _a.sent(); return [2 /*return*/]; diff --git a/lib/store/modi.js b/lib/store/modi.js index e4d0f7e..04e88f8 100644 --- a/lib/store/modi.js +++ b/lib/store/modi.js @@ -21,48 +21,19 @@ function createOperationsFromModies(modies) { exports.createOperationsFromModies = createOperationsFromModies; function applyModis(filter, context, option) { return tslib_1.__awaiter(this, void 0, void 0, function () { - var modis, _a, _b, _c; + var _a, _b, _c; var _d; return tslib_1.__generator(this, function (_e) { switch (_e.label) { - case 0: return [4 /*yield*/, context.rowStore.select('modi', { - data: { - id: 1, - }, - filter: filter, - sorter: [ - { - $attr: { - $$createAt$$: 1, - }, - $direction: 'asc', - } - ] - }, context, Object.assign({}, option, { - blockTrigger: false, - }))]; - case 1: - modis = (_e.sent()).result; + case 0: _b = (_a = context.rowStore).operate; _c = ['modi']; _d = {}; return [4 /*yield*/, generateNewId()]; - case 2: return [2 /*return*/, _b.apply(_a, _c.concat([(_d.id = _e.sent(), + case 1: return [2 /*return*/, _b.apply(_a, _c.concat([(_d.id = _e.sent(), _d.action = 'apply', _d.data = {}, - _d.filter = { - id: { - $in: modis.map(function (ele) { return ele.id; }), - } - }, - _d.sorter = [ - { - $attr: { - $$createAt$$: 1, - }, - $direction: 'asc', - } - ], + _d.filter = filter, _d), context, Object.assign({}, option, { blockTrigger: false, })]))]; diff --git a/lib/triggers/modi.js b/lib/triggers/modi.js index 23d3bb3..9147d56 100644 --- a/lib/triggers/modi.js +++ b/lib/triggers/modi.js @@ -10,7 +10,7 @@ var triggers = [ fn: function (_a, context, option) { var operation = _a.operation; return tslib_1.__awaiter(void 0, void 0, void 0, function () { - var filter, modies, modies_1, modies_1_1, modi, targetEntity, id, action, data, filter_1, targets, e_1_1; + var filter, modies, modies_1, modies_1_1, modi, targetEntity, id, action, data, filter_1, e_1_1; var e_1, _b; return tslib_1.__generator(this, function (_c) { switch (_c.label) { @@ -30,49 +30,39 @@ var triggers = [ modies = (_c.sent()).result; _c.label = 2; case 2: - _c.trys.push([2, 8, 9, 10]); + _c.trys.push([2, 7, 8, 9]); modies_1 = tslib_1.__values(modies), modies_1_1 = modies_1.next(); _c.label = 3; case 3: - if (!!modies_1_1.done) return [3 /*break*/, 7]; + if (!!modies_1_1.done) return [3 /*break*/, 6]; modi = modies_1_1.value; targetEntity = modi.targetEntity, id = modi.id, action = modi.action, data = modi.data, filter_1 = modi.filter; - return [4 /*yield*/, context.rowStore.select(targetEntity, { - data: { - id: 1, - }, + return [4 /*yield*/, context.rowStore.operate(targetEntity, { + id: id, + action: action, + data: data, filter: filter_1, }, context, Object.assign({}, option, { blockTrigger: true, }))]; case 4: - targets = _c.sent(); - return [4 /*yield*/, context.rowStore.operate(targetEntity, { - id: id, - action: action, - data: data, - filter: targets.result.map(function (ele) { return ele.id; }), - }, context, Object.assign({}, option, { - blockTrigger: true, - }))]; - case 5: _c.sent(); - _c.label = 6; - case 6: + _c.label = 5; + case 5: modies_1_1 = modies_1.next(); return [3 /*break*/, 3]; - case 7: return [3 /*break*/, 10]; - case 8: + case 6: return [3 /*break*/, 9]; + case 7: e_1_1 = _c.sent(); e_1 = { error: e_1_1 }; - return [3 /*break*/, 10]; - case 9: + return [3 /*break*/, 9]; + case 8: try { if (modies_1_1 && !modies_1_1.done && (_b = modies_1.return)) _b.call(modies_1); } finally { if (e_1) throw e_1.error; } return [7 /*endfinally*/]; - case 10: return [2 /*return*/, modies.length]; + case 9: return [2 /*return*/, modies.length]; } }); }); diff --git a/lib/utils/lodash.d.ts b/lib/utils/lodash.d.ts index b921d74..6af70ea 100644 --- a/lib/utils/lodash.d.ts +++ b/lib/utils/lodash.d.ts @@ -2,19 +2,4 @@ * 避免lodash打包体积过大 * 像assign, keys尽量使用Object的函数 */ -import unset from 'lodash/unset'; -import uniqBy from 'lodash/uniqBy'; -import pull from 'lodash/pull'; -import uniq from 'lodash/uniq'; -import get from 'lodash/get'; -import set from 'lodash/set'; -import intersection from 'lodash/intersection'; -import omit from 'lodash/omit'; -import merge from 'lodash/merge'; -import cloneDeep from 'lodash/cloneDeep'; -import pick from 'lodash/pick'; -import isEqual from 'lodash/isEqual'; -import union from 'lodash/union'; -import difference from 'lodash/difference'; -import groupBy from 'lodash/groupBy'; -export { unset, pull, uniq, uniqBy, get, set, intersection, omit, merge, cloneDeep, pick, isEqual, union, difference, groupBy, }; +export { unset, pull, uniq, uniqBy, get, set, intersection, omit, merge, cloneDeep, pick, isEqual, union, difference, groupBy, } from 'lodash'; diff --git a/lib/utils/lodash.js b/lib/utils/lodash.js index 2b61a05..bcea960 100644 --- a/lib/utils/lodash.js +++ b/lib/utils/lodash.js @@ -1,38 +1,38 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.groupBy = exports.difference = exports.union = exports.isEqual = exports.pick = exports.cloneDeep = exports.merge = exports.omit = exports.intersection = exports.set = exports.get = exports.uniqBy = exports.uniq = exports.pull = exports.unset = void 0; -var tslib_1 = require("tslib"); /** * 避免lodash打包体积过大 * 像assign, keys尽量使用Object的函数 */ -var unset_1 = tslib_1.__importDefault(require("lodash/unset")); -exports.unset = unset_1.default; -var uniqBy_1 = tslib_1.__importDefault(require("lodash/uniqBy")); -exports.uniqBy = uniqBy_1.default; -var pull_1 = tslib_1.__importDefault(require("lodash/pull")); -exports.pull = pull_1.default; -var uniq_1 = tslib_1.__importDefault(require("lodash/uniq")); -exports.uniq = uniq_1.default; -var get_1 = tslib_1.__importDefault(require("lodash/get")); -exports.get = get_1.default; -var set_1 = tslib_1.__importDefault(require("lodash/set")); -exports.set = set_1.default; -var intersection_1 = tslib_1.__importDefault(require("lodash/intersection")); -exports.intersection = intersection_1.default; -var omit_1 = tslib_1.__importDefault(require("lodash/omit")); -exports.omit = omit_1.default; -var merge_1 = tslib_1.__importDefault(require("lodash/merge")); -exports.merge = merge_1.default; -var cloneDeep_1 = tslib_1.__importDefault(require("lodash/cloneDeep")); -exports.cloneDeep = cloneDeep_1.default; -var pick_1 = tslib_1.__importDefault(require("lodash/pick")); -exports.pick = pick_1.default; -var isEqual_1 = tslib_1.__importDefault(require("lodash/isEqual")); -exports.isEqual = isEqual_1.default; -var union_1 = tslib_1.__importDefault(require("lodash/union")); -exports.union = union_1.default; -var difference_1 = tslib_1.__importDefault(require("lodash/difference")); -exports.difference = difference_1.default; -var groupBy_1 = tslib_1.__importDefault(require("lodash/groupBy")); -exports.groupBy = groupBy_1.default; +/* import unset from 'lodash/unset'; +import uniqBy from 'lodash/uniqBy'; +import pull from 'lodash/pull'; +import uniq from 'lodash/uniq'; +import get from 'lodash/get'; +import set from 'lodash/set'; +import intersection from 'lodash/intersection'; +import omit from 'lodash/omit'; +import merge from 'lodash/merge'; +import cloneDeep from 'lodash/cloneDeep'; +import pick from 'lodash/pick'; +import isEqual from 'lodash/isEqual'; +import union from 'lodash/union'; +import difference from 'lodash/difference'; +import groupBy from 'lodash/groupBy'; */ +var lodash_1 = require("lodash"); +Object.defineProperty(exports, "unset", { enumerable: true, get: function () { return lodash_1.unset; } }); +Object.defineProperty(exports, "pull", { enumerable: true, get: function () { return lodash_1.pull; } }); +Object.defineProperty(exports, "uniq", { enumerable: true, get: function () { return lodash_1.uniq; } }); +Object.defineProperty(exports, "uniqBy", { enumerable: true, get: function () { return lodash_1.uniqBy; } }); +Object.defineProperty(exports, "get", { enumerable: true, get: function () { return lodash_1.get; } }); +Object.defineProperty(exports, "set", { enumerable: true, get: function () { return lodash_1.set; } }); +Object.defineProperty(exports, "intersection", { enumerable: true, get: function () { return lodash_1.intersection; } }); +Object.defineProperty(exports, "omit", { enumerable: true, get: function () { return lodash_1.omit; } }); +Object.defineProperty(exports, "merge", { enumerable: true, get: function () { return lodash_1.merge; } }); +Object.defineProperty(exports, "cloneDeep", { enumerable: true, get: function () { return lodash_1.cloneDeep; } }); +Object.defineProperty(exports, "pick", { enumerable: true, get: function () { return lodash_1.pick; } }); +Object.defineProperty(exports, "isEqual", { enumerable: true, get: function () { return lodash_1.isEqual; } }); +Object.defineProperty(exports, "union", { enumerable: true, get: function () { return lodash_1.union; } }); +Object.defineProperty(exports, "difference", { enumerable: true, get: function () { return lodash_1.difference; } }); +Object.defineProperty(exports, "groupBy", { enumerable: true, get: function () { return lodash_1.groupBy; } }); diff --git a/src/store/CascadeStore.ts b/src/store/CascadeStore.ts index 7216415..93e094f 100644 --- a/src/store/CascadeStore.ts +++ b/src/store/CascadeStore.ts @@ -158,8 +158,8 @@ export abstract class CascadeStore cascadeSelectionFns.push( - async (result) => { - await ele(result.map(ele2 => ele2[attr] as any)); + async (result) => { + await ele(result.map(ele2 => ele2[attr] as any).filter(ele2 => !!ele2)); } ) ); @@ -256,7 +256,7 @@ export abstract class CascadeStore cascadeSelectionFns.push( async (result) => { - await ele(result.map(ele2 => ele2[attr] as any)); + await ele(result.map(ele2 => ele2[attr] as any).filter(ele2 => !!ele2)); } ) ); diff --git a/src/store/modi.ts b/src/store/modi.ts index 3f19ee7..8e6d971 100644 --- a/src/store/modi.ts +++ b/src/store/modi.ts @@ -25,40 +25,19 @@ export function createOperationsFromModies(modies: Modi[]): Array<{ } export async function applyModis, Op extends OperateOption>(filter: ED['modi']['Selection']['filter'], context: Cxt, option: Op) { - const { result: modis } = await context.rowStore.select('modi', { - data: { - id: 1, - }, - filter, - sorter: [ - { - $attr: { - $$createAt$$: 1, - }, - $direction: 'asc', - } - ] - }, context, Object.assign({}, option, { - blockTrigger: false, - })); - return context.rowStore.operate('modi', { id: await generateNewId(), action: 'apply', data: {}, - filter: { - id: { - $in: modis.map(ele => ele.id), - } - }, - sorter: [ + filter, + /* sorter: [ { $attr: { $$createAt$$: 1, }, $direction: 'asc', } - ] + ] */ }, context, Object.assign({}, option, { blockTrigger: false, })); diff --git a/src/triggers/modi.ts b/src/triggers/modi.ts index 7e2f824..3f114b9 100644 --- a/src/triggers/modi.ts +++ b/src/triggers/modi.ts @@ -23,19 +23,11 @@ const triggers: Trigger>[] = [ for (const modi of modies) { const { targetEntity, id, action, data, filter} = modi; - const targets = await context.rowStore.select(targetEntity as keyof EntityDict, { - data: { - id: 1, - }, - filter: filter as any, - }, context, Object.assign({}, option, { - blockTrigger: true, - })); await context.rowStore.operate(targetEntity as keyof EntityDict, { id, action, data, - filter: targets.result.map(ele => ele.id), + filter: filter as any, }, context, Object.assign({}, option, { blockTrigger: true, })); diff --git a/src/utils/lodash.ts b/src/utils/lodash.ts index 89ad129..ddb6684 100644 --- a/src/utils/lodash.ts +++ b/src/utils/lodash.ts @@ -2,7 +2,7 @@ * 避免lodash打包体积过大 * 像assign, keys尽量使用Object的函数 */ -import unset from 'lodash/unset'; +/* import unset from 'lodash/unset'; import uniqBy from 'lodash/uniqBy'; import pull from 'lodash/pull'; import uniq from 'lodash/uniq'; @@ -16,8 +16,7 @@ import pick from 'lodash/pick'; import isEqual from 'lodash/isEqual'; import union from 'lodash/union'; import difference from 'lodash/difference'; -import groupBy from 'lodash/groupBy'; - +import groupBy from 'lodash/groupBy'; */ export { unset, pull, @@ -34,4 +33,4 @@ export { union, difference, groupBy, -}; +} from 'lodash';