@nocobase/flow-engine 2.0.0-alpha.4 → 2.0.0-alpha.40
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/lib/BlockScopedFlowEngine.d.ts +23 -0
- package/lib/BlockScopedFlowEngine.js +90 -0
- package/lib/FlowContextProvider.d.ts +2 -2
- package/lib/FlowContextProvider.js +3 -3
- package/lib/FlowDefinition.d.ts +4 -2
- package/lib/JSRunner.js +3 -0
- package/lib/ViewScopedFlowEngine.d.ts +1 -1
- package/lib/ViewScopedFlowEngine.js +12 -0
- package/lib/acl/Acl.d.ts +1 -0
- package/lib/acl/Acl.js +11 -0
- package/lib/components/FieldModelRenderer.js +14 -6
- package/lib/components/FieldSkeleton.d.ts +10 -0
- package/lib/components/FieldSkeleton.js +64 -0
- package/lib/components/FlowContextSelector.js +7 -2
- package/lib/components/FlowModelRenderer.d.ts +3 -6
- package/lib/components/FlowModelRenderer.js +16 -47
- package/lib/components/FormItem.js +5 -1
- package/lib/components/MobilePopup.d.ts +20 -0
- package/lib/components/MobilePopup.js +102 -0
- package/lib/components/MobilePopup.style.d.ts +17 -0
- package/lib/components/MobilePopup.style.js +186 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.js +3 -1
- package/lib/components/settings/independents/dropdown/FlowsDropdownButton.js +2 -2
- package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +17 -5
- package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +2 -2
- package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.d.ts +2 -2
- package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.js +35 -6
- package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +7 -1
- package/lib/components/variables/VariableInput.js +19 -5
- package/lib/components/variables/VariableTag.js +43 -2
- package/lib/components/variables/types.d.ts +2 -0
- package/lib/data-source/index.d.ts +15 -4
- package/lib/data-source/index.js +42 -13
- package/lib/data-source/sortCollectionsByInherits.d.ts +10 -0
- package/lib/data-source/sortCollectionsByInherits.js +71 -0
- package/lib/emitter.d.ts +6 -0
- package/lib/emitter.js +12 -0
- package/lib/executor/FlowExecutor.d.ts +4 -5
- package/lib/executor/FlowExecutor.js +168 -99
- package/lib/flow-registry/GlobalFlowRegistry.d.ts +1 -0
- package/lib/flow-registry/GlobalFlowRegistry.js +3 -0
- package/lib/flow-registry/InstanceFlowRegistry.d.ts +1 -0
- package/lib/flow-registry/InstanceFlowRegistry.js +3 -0
- package/lib/flowContext.d.ts +37 -5
- package/lib/flowContext.js +215 -87
- package/lib/flowEngine.d.ts +24 -1
- package/lib/flowEngine.js +56 -6
- package/lib/flowSettings.d.ts +2 -1
- package/lib/flowSettings.js +12 -8
- package/lib/hooks/useApplyAutoFlows.js +2 -1
- package/lib/index.d.ts +7 -1
- package/lib/index.js +32 -3
- package/lib/locale/en-US.json +4 -2
- package/lib/locale/index.d.ts +4 -0
- package/lib/locale/zh-CN.json +4 -2
- package/lib/models/CollectionFieldModel.d.ts +3 -0
- package/lib/models/CollectionFieldModel.js +48 -5
- package/lib/models/flowModel.d.ts +30 -29
- package/lib/models/flowModel.js +135 -98
- package/lib/models/forkFlowModel.d.ts +8 -4
- package/lib/models/forkFlowModel.js +38 -8
- package/lib/provider.d.ts +3 -1
- package/lib/provider.js +7 -5
- package/lib/resources/multiRecordResource.js +25 -1
- package/lib/resources/singleRecordResource.js +19 -1
- package/lib/resources/sqlResource.d.ts +1 -0
- package/lib/resources/sqlResource.js +20 -24
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +27 -20
- package/lib/runjs-context/contexts/JSBlockRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/JSBlockRunJSContext.js +46 -33
- package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.d.ts +1 -2
- package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.js +14 -15
- package/lib/runjs-context/contexts/{LinkageRunJSContext.d.ts → JSColumnRunJSContext.d.ts} +6 -3
- package/lib/runjs-context/contexts/JSColumnRunJSContext.js +78 -0
- package/lib/runjs-context/contexts/JSFieldRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/JSFieldRunJSContext.js +28 -24
- package/lib/runjs-context/contexts/JSItemRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/JSItemRunJSContext.js +24 -20
- package/lib/runjs-context/contexts/JSRecordActionRunJSContext.d.ts +1 -2
- package/lib/runjs-context/contexts/JSRecordActionRunJSContext.js +16 -17
- package/lib/runjs-context/contexts/base.d.ts +9 -0
- package/lib/runjs-context/contexts/base.js +183 -0
- package/lib/runjs-context/helpers.d.ts +5 -2
- package/lib/runjs-context/helpers.js +36 -27
- package/lib/runjs-context/registry.d.ts +7 -4
- package/lib/runjs-context/registry.js +10 -42
- package/lib/runjs-context/setup.d.ts +9 -0
- package/lib/runjs-context/setup.js +82 -0
- package/lib/runjs-context/snippets/global/{copy-record-json.snippet.js → api-request.snippet.js} +25 -10
- package/lib/runjs-context/snippets/global/clipboard-copy-text.snippet.js +61 -0
- package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.js → import-esm.snippet.js} +26 -12
- package/lib/runjs-context/snippets/global/message-error.snippet.js +6 -0
- package/lib/runjs-context/snippets/global/message-success.snippet.js +6 -0
- package/lib/runjs-context/snippets/global/notification-open.snippet.d.ts +3 -8
- package/lib/runjs-context/snippets/global/notification-open.snippet.js +8 -1
- package/lib/runjs-context/snippets/global/open-view-dialog.snippet.js +10 -3
- package/lib/runjs-context/snippets/global/open-view-drawer.snippet.js +10 -3
- package/lib/runjs-context/snippets/global/query-selector.snippet.js +53 -0
- package/lib/runjs-context/snippets/global/require-amd.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/global/{requireAsync.snippet.js → require-amd.snippet.js} +16 -13
- package/lib/runjs-context/snippets/global/window-open.snippet.d.ts +3 -8
- package/lib/runjs-context/snippets/global/window-open.snippet.js +8 -1
- package/lib/runjs-context/snippets/index.d.ts +14 -3
- package/lib/runjs-context/snippets/index.js +161 -40
- package/lib/runjs-context/snippets/scene/block/add-event-listener.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.js +11 -2
- package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.js +99 -0
- package/lib/runjs-context/snippets/{libs → scene/block}/echarts-init.snippet.js +24 -7
- package/lib/runjs-context/snippets/scene/block/render-button-handler.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock → block}/render-button-handler.snippet.js +17 -9
- package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.js +57 -0
- package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.js +71 -0
- package/lib/runjs-context/snippets/scene/block/render-react-jsx.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.js → block/render-react-jsx.snippet.js} +26 -13
- package/lib/runjs-context/snippets/scene/block/render-react.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock → block}/render-react.snippet.js +18 -17
- package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.js +95 -0
- package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.js +84 -0
- package/lib/runjs-context/snippets/scene/block/resource-example.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/resource-example.snippet.js +60 -0
- package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.js +283 -0
- package/lib/runjs-context/snippets/scene/block/vue-component.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/vue-component.snippet.js +124 -0
- package/lib/runjs-context/snippets/scene/detail/color-by-value.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsfield → detail}/color-by-value.snippet.js +13 -3
- package/lib/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/{global → scene/detail}/copy-to-clipboard.snippet.js +28 -6
- package/lib/runjs-context/snippets/scene/detail/format-number.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsfield → detail}/format-number.snippet.js +13 -3
- package/lib/runjs-context/snippets/scene/detail/innerHTML-value.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsfield → detail}/innerHTML-value.snippet.js +13 -3
- package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.js +82 -0
- package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.js +80 -0
- package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.js +74 -0
- package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.js +63 -0
- package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.js +81 -0
- package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.js +74 -0
- package/lib/runjs-context/snippets/scene/form/render-basic.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.js +11 -2
- package/lib/runjs-context/snippets/scene/form/set-disabled.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/form/set-field-value.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/form/set-required.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.js +67 -0
- package/lib/runjs-context/snippets/scene/form/toggle-visible.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/table/collection-selected-count.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.js +11 -2
- package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.js +79 -0
- package/lib/runjs-context/snippets/scene/table/destroy-selected.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/{global/log-json-record.snippet.js → scene/table/destroy-selected.snippet.js} +24 -11
- package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/table/iterate-selected-rows.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.js +11 -2
- package/lib/runjs-context/snippets/types.d.ts +9 -1
- package/lib/scheduler/ModelOperationScheduler.d.ts +51 -0
- package/lib/scheduler/ModelOperationScheduler.js +262 -0
- package/lib/types.d.ts +28 -3
- package/lib/types.js +4 -3
- package/lib/utils/associationObjectVariable.d.ts +32 -0
- package/lib/utils/associationObjectVariable.js +157 -0
- package/lib/utils/buildSettingsViewInputArgs.d.ts +19 -0
- package/lib/utils/buildSettingsViewInputArgs.js +75 -0
- package/lib/utils/createEphemeralContext.d.ts +13 -0
- package/lib/utils/createEphemeralContext.js +140 -0
- package/lib/utils/flows.d.ts +10 -0
- package/lib/{runjs-context/snippets/global/api-request-post.snippet.js → utils/flows.js} +21 -15
- package/lib/utils/index.d.ts +7 -2
- package/lib/utils/index.js +19 -2
- package/lib/utils/jsxTransform.d.ts +15 -0
- package/lib/utils/jsxTransform.js +68 -0
- package/lib/utils/params-resolvers.js +3 -3
- package/lib/utils/parsePathnameToViewParams.d.ts +1 -1
- package/lib/utils/parsePathnameToViewParams.js +41 -5
- package/lib/utils/pruneFilter.d.ts +21 -0
- package/lib/{runjs-context/snippets/global/try-catch-async.snippet.js → utils/pruneFilter.js} +24 -16
- package/lib/utils/safeGlobals.d.ts +5 -3
- package/lib/utils/safeGlobals.js +40 -0
- package/lib/utils/schema-utils.js +2 -2
- package/lib/utils/serverContextParams.d.ts +1 -0
- package/lib/utils/translation.d.ts +4 -1
- package/lib/utils/translation.js +6 -2
- package/lib/utils/variablesParams.d.ts +9 -5
- package/lib/utils/variablesParams.js +47 -36
- package/lib/views/DrawerComponent.js +21 -2
- package/lib/views/PageComponent.js +2 -1
- package/lib/views/ViewNavigation.d.ts +3 -9
- package/lib/views/ViewNavigation.js +16 -2
- package/lib/views/createViewMeta.d.ts +29 -1
- package/lib/views/createViewMeta.js +338 -72
- package/lib/views/index.d.ts +1 -0
- package/lib/views/index.js +3 -0
- package/lib/views/useDialog.d.ts +8 -8
- package/lib/views/useDialog.js +8 -7
- package/lib/views/useDrawer.d.ts +8 -8
- package/lib/views/useDrawer.js +43 -28
- package/lib/views/usePage.d.ts +8 -8
- package/lib/views/usePage.js +8 -7
- package/package.json +6 -3
- package/src/BlockScopedFlowEngine.ts +86 -0
- package/src/FlowContextProvider.tsx +4 -2
- package/src/JSRunner.ts +3 -0
- package/src/ViewScopedFlowEngine.ts +15 -1
- package/src/__tests__/JSRunner.test.ts +62 -53
- package/src/__tests__/blockScopedFlowEngine.test.ts +154 -0
- package/src/__tests__/createViewMeta.popup.test.ts +132 -0
- package/src/__tests__/flow-engine.test.ts +3 -0
- package/src/__tests__/flowContext.test.ts +52 -0
- package/src/__tests__/flowContextCreateJSRunner.test.ts +163 -0
- package/src/__tests__/flowEngine.saveModel.test.ts +4 -0
- package/src/__tests__/flowRunJSContextDefine.test.ts +508 -0
- package/src/__tests__/flowSettings.open.test.tsx +2 -0
- package/src/__tests__/flowSettings.test.ts +2 -0
- package/src/__tests__/globalFlowRegistry.test.ts +1 -1
- package/src/__tests__/modelOperationScheduler.test.ts +346 -0
- package/src/__tests__/objectVariable.test.ts +464 -0
- package/src/__tests__/runjsContext.test.ts +216 -35
- package/src/__tests__/runjsContextImplementations.test.ts +217 -0
- package/src/__tests__/runjsContextRuntime.test.ts +269 -0
- package/src/__tests__/runjsEdgeCases.test.ts +281 -0
- package/src/__tests__/runjsLocales.test.ts +36 -0
- package/src/__tests__/runjsRuntimeFeatures.test.ts +449 -0
- package/src/__tests__/runjsSnippets.test.ts +140 -0
- package/src/__tests__/viewScopedFlowEngine.test.ts +3 -3
- package/src/acl/Acl.tsx +14 -0
- package/src/acl/__tests__/Acl.test.tsx +43 -0
- package/src/components/DynamicFlowsEditor.tsx +3 -4
- package/src/components/FieldModelRenderer.tsx +20 -7
- package/src/components/FieldSkeleton.tsx +27 -0
- package/src/components/FlowContextSelector.tsx +6 -2
- package/src/components/FlowModelRenderer.tsx +33 -81
- package/src/components/FormItem.tsx +8 -1
- package/src/components/MobilePopup.style.ts +220 -0
- package/src/components/MobilePopup.tsx +86 -0
- package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +6 -6
- package/src/components/index.ts +1 -0
- package/src/components/settings/independents/dropdown/FlowsDropdownButton.tsx +1 -1
- package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +17 -4
- package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +1 -1
- package/src/components/settings/wrappers/contextual/FlowsFloatContextMenu.tsx +39 -10
- package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +14 -1
- package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +425 -0
- package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +5 -7
- package/src/components/variables/VariableInput.tsx +25 -5
- package/src/components/variables/VariableTag.tsx +54 -2
- package/src/components/variables/types.ts +2 -0
- package/src/data-source/__tests__/sortCollectionsByInherits.test.ts +125 -0
- package/src/data-source/index.ts +42 -11
- package/src/data-source/sortCollectionsByInherits.ts +61 -0
- package/src/emitter.ts +14 -0
- package/src/executor/FlowExecutor.ts +213 -119
- package/src/executor/__tests__/ctx-defs-injection.test.ts +197 -0
- package/src/executor/__tests__/flowExecutor.test.ts +151 -5
- package/src/flow-registry/GlobalFlowRegistry.ts +1 -0
- package/src/flow-registry/InstanceFlowRegistry.ts +1 -0
- package/src/flow-registry/__tests__/globalFlowRegistry.test.ts +54 -0
- package/src/flowContext.ts +290 -104
- package/src/flowEngine.ts +74 -6
- package/src/flowSettings.ts +9 -4
- package/src/hooks/useApplyAutoFlows.ts +3 -1
- package/src/index.ts +12 -1
- package/src/locale/en-US.json +4 -2
- package/src/locale/zh-CN.json +4 -2
- package/src/models/CollectionFieldModel.tsx +56 -7
- package/src/models/__tests__/dispatchEvent.behavior.test.ts +169 -0
- package/src/models/__tests__/flowModel.getFlows.sort.test.ts +33 -9
- package/src/models/__tests__/flowModel.scheduleModelOperation.test.tsx +129 -0
- package/src/models/__tests__/flowModel.test.ts +234 -111
- package/src/models/__tests__/forkFlowModel.test.ts +40 -7
- package/src/models/flowModel.tsx +180 -132
- package/src/models/forkFlowModel.ts +48 -8
- package/src/provider.tsx +10 -7
- package/src/resources/multiRecordResource.ts +28 -1
- package/src/resources/singleRecordResource.ts +19 -1
- package/src/resources/sqlResource.ts +20 -25
- package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +28 -21
- package/src/runjs-context/contexts/JSBlockRunJSContext.ts +46 -34
- package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +15 -16
- package/src/runjs-context/contexts/JSColumnRunJSContext.ts +58 -0
- package/src/runjs-context/contexts/JSFieldRunJSContext.ts +30 -25
- package/src/runjs-context/contexts/JSItemRunJSContext.ts +25 -21
- package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +17 -18
- package/src/runjs-context/contexts/base.ts +171 -0
- package/src/runjs-context/helpers.ts +32 -30
- package/src/runjs-context/registry.ts +16 -47
- package/src/runjs-context/setup.ts +51 -0
- package/src/runjs-context/snippets/global/api-request.snippet.ts +38 -0
- package/src/runjs-context/snippets/global/clipboard-copy-text.snippet.ts +42 -0
- package/src/runjs-context/snippets/global/import-esm.snippet.ts +39 -0
- package/src/runjs-context/snippets/global/message-error.snippet.ts +6 -0
- package/src/runjs-context/snippets/global/message-success.snippet.ts +6 -0
- package/src/runjs-context/snippets/global/notification-open.snippet.ts +11 -1
- package/src/runjs-context/snippets/global/open-view-dialog.snippet.ts +10 -3
- package/src/runjs-context/snippets/global/open-view-drawer.snippet.ts +10 -3
- package/src/runjs-context/snippets/global/query-selector.snippet.ts +34 -0
- package/src/runjs-context/snippets/global/require-amd.snippet.ts +30 -0
- package/src/runjs-context/snippets/global/window-open.snippet.ts +11 -1
- package/src/runjs-context/snippets/index.ts +177 -39
- package/src/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.ts +14 -2
- package/src/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/block/chartjs-bar.snippet.ts +80 -0
- package/src/runjs-context/snippets/scene/block/echarts-init.snippet.ts +44 -0
- package/src/runjs-context/snippets/scene/block/render-button-handler.snippet.ts +35 -0
- package/src/runjs-context/snippets/scene/block/render-iframe.snippet.ts +38 -0
- package/src/runjs-context/snippets/scene/block/render-info-card.snippet.ts +52 -0
- package/src/runjs-context/snippets/scene/block/render-react-jsx.snippet.ts +39 -0
- package/src/runjs-context/snippets/scene/block/render-react.snippet.ts +38 -0
- package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +76 -0
- package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +65 -0
- package/src/runjs-context/snippets/scene/block/resource-example.snippet.ts +46 -0
- package/src/runjs-context/snippets/scene/block/three-users-orbit.snippet.ts +264 -0
- package/src/runjs-context/snippets/scene/block/vue-component.snippet.ts +105 -0
- package/src/runjs-context/snippets/scene/detail/color-by-value.snippet.ts +33 -0
- package/src/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/detail/format-number.snippet.ts +32 -0
- package/src/runjs-context/snippets/scene/detail/innerHTML-value.snippet.ts +31 -0
- package/src/runjs-context/snippets/scene/detail/percentage-bar.snippet.ts +63 -0
- package/src/runjs-context/snippets/scene/detail/relative-time.snippet.ts +61 -0
- package/src/runjs-context/snippets/scene/detail/status-tag.snippet.ts +55 -0
- package/src/runjs-context/snippets/scene/form/calculate-total.snippet.ts +44 -0
- package/src/runjs-context/snippets/scene/form/cascade-select.snippet.ts +62 -0
- package/src/runjs-context/snippets/scene/form/conditional-required.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/form/copy-field-values.snippet.ts +55 -0
- package/src/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.ts +14 -2
- package/src/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.ts +48 -0
- package/src/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/table/cell-open-dialog.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.ts +14 -2
- package/src/runjs-context/snippets/scene/table/concat-fields.snippet.ts +60 -0
- package/src/runjs-context/snippets/scene/table/destroy-selected.snippet.ts +36 -0
- package/src/runjs-context/snippets/scene/table/export-selected-json.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.ts +14 -2
- package/src/runjs-context/snippets/types.ts +5 -1
- package/src/scheduler/ModelOperationScheduler.ts +304 -0
- package/src/types.ts +34 -0
- package/src/utils/__tests__/flows.test.ts +65 -0
- package/src/utils/__tests__/jsxTransform.test.ts +38 -0
- package/src/utils/__tests__/parsePathnameToViewParams.test.ts +25 -0
- package/src/utils/__tests__/pruneFilter.test.ts +38 -0
- package/src/utils/__tests__/safeGlobals.test.ts +22 -1
- package/src/utils/associationObjectVariable.ts +180 -0
- package/src/utils/buildSettingsViewInputArgs.ts +72 -0
- package/src/utils/createEphemeralContext.ts +142 -0
- package/src/utils/flows.ts +23 -0
- package/src/utils/index.ts +10 -2
- package/src/utils/jsxTransform.ts +39 -0
- package/src/utils/params-resolvers.ts +2 -2
- package/src/utils/parsePathnameToViewParams.ts +50 -6
- package/src/utils/pruneFilter.ts +41 -0
- package/src/utils/safeGlobals.ts +49 -3
- package/src/utils/schema-utils.ts +1 -1
- package/src/utils/serverContextParams.ts +1 -0
- package/src/utils/translation.ts +7 -2
- package/src/utils/variablesParams.ts +50 -38
- package/src/views/DrawerComponent.tsx +21 -2
- package/src/views/PageComponent.tsx +1 -1
- package/src/views/ViewNavigation.ts +20 -12
- package/src/views/__tests__/ViewNavigation.test.ts +10 -0
- package/src/views/createViewMeta.ts +393 -70
- package/src/views/index.tsx +1 -0
- package/src/views/useDialog.tsx +12 -10
- package/src/views/useDrawer.tsx +62 -37
- package/src/views/usePage.tsx +13 -10
- package/lib/runjs-context/contexts/FlowRunJSContext.d.ts +0 -38
- package/lib/runjs-context/contexts/FlowRunJSContext.js +0 -217
- package/lib/runjs-context/contexts/LinkageRunJSContext.js +0 -62
- package/lib/runjs-context/index.d.ts +0 -19
- package/lib/runjs-context/index.js +0 -57
- package/lib/runjs-context/snippets/global/api-request-get.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/api-request-get.snippet.js +0 -42
- package/lib/runjs-context/snippets/global/api-request-post.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/console-log-ctx.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/console-log-ctx.snippet.js +0 -41
- package/lib/runjs-context/snippets/global/requireAsync.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/sleep.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/sleep.snippet.js +0 -43
- package/lib/runjs-context/snippets/global/try-catch-async.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/libs/echarts-init.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/collection-selected-count.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/iterate-selected-rows.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.js +0 -43
- package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.js +0 -40
- package/lib/runjs-context/snippets/scene/jsblock/add-event-listener.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.js +0 -42
- package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.js +0 -46
- package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.js +0 -41
- package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.js +0 -41
- package/lib/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/render-react.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsfield/color-by-value.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsfield/format-number.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsitem/render-basic.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/set-disabled.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/set-field-value.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/set-required.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/toggle-visible.snippet.d.ts +0 -15
- package/src/runjs-context/contexts/FlowRunJSContext.ts +0 -190
- package/src/runjs-context/contexts/LinkageRunJSContext.ts +0 -35
- package/src/runjs-context/index.ts +0 -20
- package/src/runjs-context/snippets/global/api-request-get.snippet.ts +0 -20
- package/src/runjs-context/snippets/global/api-request-post.snippet.ts +0 -20
- package/src/runjs-context/snippets/global/console-log-ctx.snippet.ts +0 -19
- package/src/runjs-context/snippets/global/copy-record-json.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/copy-to-clipboard.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/log-json-record.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/requireAsync.snippet.ts +0 -24
- package/src/runjs-context/snippets/global/sleep.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/try-catch-async.snippet.ts +0 -22
- package/src/runjs-context/snippets/global/view-navigation-push.snippet.ts +0 -23
- package/src/runjs-context/snippets/libs/echarts-init.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/actions/record-id-message.snippet.ts +0 -21
- package/src/runjs-context/snippets/scene/actions/run-action-basic.snippet.ts +0 -18
- package/src/runjs-context/snippets/scene/jsblock/append-style.snippet.ts +0 -20
- package/src/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.ts +0 -19
- package/src/runjs-context/snippets/scene/jsblock/render-basic.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/jsblock/render-card.snippet.ts +0 -30
- package/src/runjs-context/snippets/scene/jsblock/render-react.snippet.ts +0 -34
- package/src/runjs-context/snippets/scene/jsfield/color-by-value.snippet.ts +0 -20
- package/src/runjs-context/snippets/scene/jsfield/format-number.snippet.ts +0 -19
- package/src/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.ts +0 -18
- /package/lib/runjs-context/snippets/global/{copy-record-json.snippet.d.ts → api-request.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/global/{copy-to-clipboard.snippet.d.ts → clipboard-copy-text.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/global/{log-json-record.snippet.d.ts → import-esm.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.d.ts → query-selector.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.d.ts → block/echarts-init.snippet.d.ts} +0 -0
package/lib/models/flowModel.js
CHANGED
|
@@ -62,7 +62,6 @@ var import_StepSettingsDialog = require("../components/settings/wrappers/context
|
|
|
62
62
|
var import_emitter = require("../emitter");
|
|
63
63
|
var import_InstanceFlowRegistry = require("../flow-registry/InstanceFlowRegistry");
|
|
64
64
|
var import_flowContext = require("../flowContext");
|
|
65
|
-
var import_flowEngine = require("../flowEngine");
|
|
66
65
|
var import_utils = require("../utils");
|
|
67
66
|
var import_lib = require("antd/lib");
|
|
68
67
|
var import_ModelActionRegistry = require("../action-registry/ModelActionRegistry");
|
|
@@ -94,6 +93,7 @@ const _FlowModel = class _FlowModel {
|
|
|
94
93
|
__publicField(this, "_title");
|
|
95
94
|
__publicField(this, "isNew", false);
|
|
96
95
|
// 标记是否为新建状态
|
|
96
|
+
__publicField(this, "skeleton", null);
|
|
97
97
|
/**
|
|
98
98
|
* 所有 fork 实例的引用集合。
|
|
99
99
|
* 使用 Set 便于在销毁时主动遍历并调用 dispose,避免悬挂引用。
|
|
@@ -105,7 +105,7 @@ const _FlowModel = class _FlowModel {
|
|
|
105
105
|
*/
|
|
106
106
|
__publicField(this, "forkCache", /* @__PURE__ */ new Map());
|
|
107
107
|
/**
|
|
108
|
-
* 上一次
|
|
108
|
+
* 上一次 beforeRender 的执行参数
|
|
109
109
|
*/
|
|
110
110
|
__publicField(this, "_lastAutoRunParams", null);
|
|
111
111
|
__publicField(this, "observerDispose");
|
|
@@ -120,18 +120,22 @@ const _FlowModel = class _FlowModel {
|
|
|
120
120
|
__publicField(this, "_reactiveWrapperCache");
|
|
121
121
|
__publicField(this, "flowRegistry");
|
|
122
122
|
__publicField(this, "_cleanRun");
|
|
123
|
-
__publicField(this, "_dispatchEventWithDebounce", import_lodash.default.debounce(
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
__publicField(this, "_dispatchEventWithDebounce", import_lodash.default.debounce(
|
|
124
|
+
async (eventName, inputArgs, options) => {
|
|
125
|
+
return this._dispatchEvent(eventName, inputArgs, options);
|
|
126
|
+
},
|
|
127
|
+
100
|
|
128
|
+
));
|
|
126
129
|
/**
|
|
127
|
-
* 重新执行上一次的
|
|
130
|
+
* 重新执行上一次的 beforeRender,保持参数一致
|
|
128
131
|
* 如果之前没有执行过,则直接跳过
|
|
129
132
|
* 使用 lodash debounce 避免频繁调用
|
|
130
133
|
*/
|
|
131
134
|
__publicField(this, "_rerunLastAutoRun", import_lodash.default.debounce(async () => {
|
|
132
135
|
if (this._lastAutoRunParams) {
|
|
133
136
|
try {
|
|
134
|
-
|
|
137
|
+
const [inputArgs] = this._lastAutoRunParams;
|
|
138
|
+
await this.dispatchEvent("beforeRender", inputArgs);
|
|
135
139
|
} catch (error) {
|
|
136
140
|
console.error("FlowModel._rerunLastAutoRun: Error during rerun:", error);
|
|
137
141
|
}
|
|
@@ -172,7 +176,7 @@ const _FlowModel = class _FlowModel {
|
|
|
172
176
|
return;
|
|
173
177
|
}
|
|
174
178
|
if (this.flowEngine) {
|
|
175
|
-
this.
|
|
179
|
+
this.invalidateFlowCache("beforeRender");
|
|
176
180
|
}
|
|
177
181
|
this._rerunLastAutoRun();
|
|
178
182
|
this.forks.forEach((fork) => {
|
|
@@ -234,6 +238,10 @@ const _FlowModel = class _FlowModel {
|
|
|
234
238
|
get parentId() {
|
|
235
239
|
return this._options.parentId;
|
|
236
240
|
}
|
|
241
|
+
scheduleModelOperation(toUid, fn, options) {
|
|
242
|
+
var _a;
|
|
243
|
+
return (_a = this.flowEngine) == null ? void 0 : _a.scheduleModelOperation(this, toUid, fn, options);
|
|
244
|
+
}
|
|
237
245
|
static get meta() {
|
|
238
246
|
return modelMetas.get(this);
|
|
239
247
|
}
|
|
@@ -342,13 +350,57 @@ const _FlowModel = class _FlowModel {
|
|
|
342
350
|
}
|
|
343
351
|
});
|
|
344
352
|
}
|
|
345
|
-
|
|
353
|
+
/**
|
|
354
|
+
* 失效指定事件的流程缓存;未指定 eventName 时,失效当前模型全部事件缓存。
|
|
355
|
+
* - 默认 beforeRender 与其它事件共享同一缓存体系:prefix=`event:${scope}`,flowKey=`eventName`,uid=`model.uid`
|
|
356
|
+
*/
|
|
357
|
+
invalidateFlowCache(eventName, deep = false) {
|
|
346
358
|
if (this.flowEngine) {
|
|
347
|
-
const
|
|
348
|
-
this.flowEngine.applyFlowCache
|
|
359
|
+
const scope = `event:${this.getFlowCacheScope(eventName || "beforeRender")}`;
|
|
360
|
+
const cache = this.flowEngine.applyFlowCache;
|
|
361
|
+
if (eventName) {
|
|
362
|
+
const altScope = scope.replace(/:/g, "-");
|
|
363
|
+
const uidSuffixes = [`:${this.uid}`, `-${this.uid}`];
|
|
364
|
+
const eventSegments = [`:${eventName}:`, `-${eventName}-`];
|
|
365
|
+
for (const key of cache.keys()) {
|
|
366
|
+
const startMatches = key.startsWith(scope) || key.startsWith(altScope);
|
|
367
|
+
const endMatches = uidSuffixes.some((s) => key.endsWith(s));
|
|
368
|
+
const eventMatches = eventSegments.some((seg) => key.includes(seg));
|
|
369
|
+
if (startMatches && endMatches && eventMatches) {
|
|
370
|
+
cache.delete(key);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
} else {
|
|
374
|
+
const altScope = `${scope}:`.replace(/:/g, "-");
|
|
375
|
+
const prefixes = [`${scope}:`, altScope];
|
|
376
|
+
const uidSuffixes = [`:${this.uid}`, `-${this.uid}`];
|
|
377
|
+
for (const key of cache.keys()) {
|
|
378
|
+
const startMatches = prefixes.some((p) => key.startsWith(p));
|
|
379
|
+
const endMatches = uidSuffixes.some((s) => key.endsWith(s));
|
|
380
|
+
if (startMatches && endMatches) cache.delete(key);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
349
383
|
this.forks.forEach((fork) => {
|
|
350
|
-
|
|
351
|
-
|
|
384
|
+
var _a;
|
|
385
|
+
const forkScope = `event:${((_a = fork.getFlowCacheScope) == null ? void 0 : _a.call(fork, eventName || "beforeRender")) ?? String(fork["forkId"])}`;
|
|
386
|
+
const altForkScope = forkScope.replace(/:/g, "-");
|
|
387
|
+
const uidSuffixes = [`:${this.uid}`, `-${this.uid}`];
|
|
388
|
+
if (eventName) {
|
|
389
|
+
const eventSegments = [`:${eventName}:`, `-${eventName}-`];
|
|
390
|
+
for (const key of this.flowEngine.applyFlowCache.keys()) {
|
|
391
|
+
const startMatches = key.startsWith(forkScope) || key.startsWith(altForkScope);
|
|
392
|
+
const endMatches = uidSuffixes.some((s) => key.endsWith(s));
|
|
393
|
+
const eventMatches = eventSegments.some((seg) => key.includes(seg));
|
|
394
|
+
if (startMatches && endMatches && eventMatches) this.flowEngine.applyFlowCache.delete(key);
|
|
395
|
+
}
|
|
396
|
+
} else {
|
|
397
|
+
const prefixes = [`${forkScope}:`, `${altForkScope}-`];
|
|
398
|
+
for (const key of this.flowEngine.applyFlowCache.keys()) {
|
|
399
|
+
const startMatches = prefixes.some((p) => key.startsWith(p));
|
|
400
|
+
const endMatches = uidSuffixes.some((s) => key.endsWith(s));
|
|
401
|
+
if (startMatches && endMatches) this.flowEngine.applyFlowCache.delete(key);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
352
404
|
});
|
|
353
405
|
}
|
|
354
406
|
if (deep) {
|
|
@@ -357,10 +409,10 @@ const _FlowModel = class _FlowModel {
|
|
|
357
409
|
const subModelValue = this.subModels[subModelKey];
|
|
358
410
|
if (Array.isArray(subModelValue)) {
|
|
359
411
|
for (const subModel of subModelValue) {
|
|
360
|
-
subModel.
|
|
412
|
+
subModel.invalidateFlowCache(eventName, deep);
|
|
361
413
|
}
|
|
362
414
|
} else if (subModelValue instanceof _FlowModel) {
|
|
363
|
-
subModelValue.
|
|
415
|
+
subModelValue.invalidateFlowCache(eventName, deep);
|
|
364
416
|
}
|
|
365
417
|
}
|
|
366
418
|
}
|
|
@@ -480,14 +532,15 @@ const _FlowModel = class _FlowModel {
|
|
|
480
532
|
const instanceKeys = new Set(instanceFlows.keys());
|
|
481
533
|
const staticEntries = Array.from(staticFlows.entries()).filter(([key]) => !instanceKeys.has(key));
|
|
482
534
|
const instanceEntries = Array.from(instanceFlows.entries());
|
|
483
|
-
const
|
|
484
|
-
|
|
485
|
-
const sa = a.sort ?? 0;
|
|
486
|
-
const sb = b.sort ?? 0;
|
|
535
|
+
const instanceEntriesWithIndex = instanceEntries.map((e, i) => ({ e, i }));
|
|
536
|
+
instanceEntriesWithIndex.sort((a, b) => {
|
|
537
|
+
const sa = a.e[1].sort ?? 0;
|
|
538
|
+
const sb = b.e[1].sort ?? 0;
|
|
487
539
|
if (sa !== sb) return sa - sb;
|
|
488
|
-
return
|
|
540
|
+
return a.i - b.i;
|
|
489
541
|
});
|
|
490
|
-
|
|
542
|
+
const merged = [...instanceEntriesWithIndex.map(({ e }) => e), ...staticEntries];
|
|
543
|
+
return new Map(merged);
|
|
491
544
|
}
|
|
492
545
|
setProps(props, value) {
|
|
493
546
|
if (typeof props === "string") {
|
|
@@ -544,7 +597,7 @@ const _FlowModel = class _FlowModel {
|
|
|
544
597
|
);
|
|
545
598
|
return currentFlowEngine.executor.runFlow(target, flowKey, inputArgs, runId);
|
|
546
599
|
}
|
|
547
|
-
async _dispatchEvent(eventName, inputArgs) {
|
|
600
|
+
async _dispatchEvent(eventName, inputArgs, options) {
|
|
548
601
|
const currentFlowEngine = this.flowEngine;
|
|
549
602
|
if (!currentFlowEngine) {
|
|
550
603
|
console.warn("FlowEngine not available on this model for dispatchEvent. Please set flowEngine on the model.");
|
|
@@ -555,93 +608,63 @@ const _FlowModel = class _FlowModel {
|
|
|
555
608
|
console.log(
|
|
556
609
|
`[FlowModel] dispatchEvent: uid=${this.uid}, event=${eventName}, isFork=${isFork}, cleanRun=${this.cleanRun}, targetIsFork=${(target == null ? void 0 : target.isFork) === true}`
|
|
557
610
|
);
|
|
558
|
-
await currentFlowEngine.executor.dispatchEvent(target, eventName, inputArgs);
|
|
611
|
+
return await currentFlowEngine.executor.dispatchEvent(target, eventName, inputArgs, options);
|
|
559
612
|
}
|
|
560
613
|
async dispatchEvent(eventName, inputArgs, options) {
|
|
614
|
+
const isBeforeRender = eventName === "beforeRender";
|
|
615
|
+
const defaults = isBeforeRender ? { sequential: true, useCache: true } : { sequential: true };
|
|
616
|
+
const execOptions = {
|
|
617
|
+
sequential: (options == null ? void 0 : options.sequential) ?? defaults.sequential,
|
|
618
|
+
useCache: (options == null ? void 0 : options.useCache) ?? defaults.useCache
|
|
619
|
+
};
|
|
620
|
+
if (isBeforeRender) {
|
|
621
|
+
this._lastAutoRunParams = [inputArgs, execOptions.useCache];
|
|
622
|
+
}
|
|
561
623
|
if (options == null ? void 0 : options.debounce) {
|
|
562
|
-
return this._dispatchEventWithDebounce(eventName, inputArgs);
|
|
624
|
+
return this._dispatchEventWithDebounce(eventName, inputArgs, execOptions);
|
|
563
625
|
}
|
|
564
|
-
return this._dispatchEvent(eventName, inputArgs);
|
|
626
|
+
return this._dispatchEvent(eventName, inputArgs, execOptions);
|
|
565
627
|
}
|
|
566
628
|
/**
|
|
567
|
-
*
|
|
568
|
-
*
|
|
629
|
+
* 按事件名获取对应的流程集合(保持 getFlows 的顺序,即按 sort 排序)。
|
|
630
|
+
* - beforeRender 兼容:除显式 on: 'beforeRender' 外,包含未声明 on 且 manual !== true 的流程。
|
|
569
631
|
*/
|
|
570
|
-
|
|
632
|
+
getEventFlows(eventName) {
|
|
571
633
|
const allFlows = this.getFlows();
|
|
572
|
-
const
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
return
|
|
634
|
+
const beforeRender = eventName === "beforeRender";
|
|
635
|
+
const isMatch = /* @__PURE__ */ __name((flow) => {
|
|
636
|
+
var _a;
|
|
637
|
+
if (beforeRender) {
|
|
638
|
+
if (flow.manual === true) return false;
|
|
639
|
+
if (!flow.on) return true;
|
|
640
|
+
return typeof flow.on === "string" ? flow.on === "beforeRender" : ((_a = flow.on) == null ? void 0 : _a.eventName) === "beforeRender";
|
|
578
641
|
}
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
642
|
+
const on = flow.on;
|
|
643
|
+
if (!on) return false;
|
|
644
|
+
return typeof on === "string" ? on === eventName : (on == null ? void 0 : on.eventName) === eventName;
|
|
645
|
+
}, "isMatch");
|
|
646
|
+
return Array.from(allFlows.values()).filter(isMatch);
|
|
582
647
|
}
|
|
583
648
|
/**
|
|
584
|
-
*
|
|
585
|
-
*
|
|
649
|
+
* 通用事件分发钩子:开始
|
|
650
|
+
* 子类可覆盖;beforeRender 事件可通过抛出 FlowExitException 提前终止。
|
|
586
651
|
*/
|
|
587
|
-
async
|
|
652
|
+
async onDispatchEventStart(eventName, options, inputArgs) {
|
|
588
653
|
}
|
|
589
654
|
/**
|
|
590
|
-
*
|
|
655
|
+
* 通用事件分发钩子:结束
|
|
591
656
|
* 子类可覆盖。
|
|
592
657
|
*/
|
|
593
|
-
async
|
|
658
|
+
async onDispatchEventEnd(eventName, options, inputArgs, results) {
|
|
594
659
|
}
|
|
595
660
|
/**
|
|
596
|
-
*
|
|
661
|
+
* 通用事件分发钩子:错误
|
|
597
662
|
* 子类可覆盖。
|
|
598
663
|
*/
|
|
599
|
-
async
|
|
664
|
+
async onDispatchEventError(eventName, options, inputArgs, error) {
|
|
600
665
|
}
|
|
601
666
|
useHooksBeforeRender() {
|
|
602
667
|
}
|
|
603
|
-
async applyAutoFlows(...args) {
|
|
604
|
-
var _a, _b;
|
|
605
|
-
const [inputArgs, useCache = true] = args;
|
|
606
|
-
const cacheKey = useCache ? import_flowEngine.FlowEngine.generateApplyFlowCacheKey(this["forkId"] ?? "autoFlow", "all", this.uid) : null;
|
|
607
|
-
if (!import_lodash.default.isEqual(inputArgs, (_a = this._lastAutoRunParams) == null ? void 0 : _a[0]) && cacheKey) {
|
|
608
|
-
this.flowEngine.applyFlowCache.delete(cacheKey);
|
|
609
|
-
}
|
|
610
|
-
this._lastAutoRunParams = args;
|
|
611
|
-
try {
|
|
612
|
-
await this.onBeforeAutoFlows(inputArgs);
|
|
613
|
-
} catch (error) {
|
|
614
|
-
if (error instanceof import_utils.FlowExitException) {
|
|
615
|
-
(_b = this.context.logger) == null ? void 0 : _b.debug(`[FlowModel.applyAutoFlows] ${error.message}`);
|
|
616
|
-
return [];
|
|
617
|
-
}
|
|
618
|
-
try {
|
|
619
|
-
await this.onAutoFlowsError(error, inputArgs);
|
|
620
|
-
} catch (_2) {
|
|
621
|
-
}
|
|
622
|
-
throw error;
|
|
623
|
-
}
|
|
624
|
-
let results = [];
|
|
625
|
-
try {
|
|
626
|
-
results = await this.flowEngine.executor.runAutoFlows(this, inputArgs, useCache);
|
|
627
|
-
} catch (error) {
|
|
628
|
-
try {
|
|
629
|
-
await this.onAutoFlowsError(error, inputArgs);
|
|
630
|
-
} catch (_2) {
|
|
631
|
-
}
|
|
632
|
-
throw error;
|
|
633
|
-
}
|
|
634
|
-
try {
|
|
635
|
-
await this.onAfterAutoFlows(results, inputArgs);
|
|
636
|
-
} catch (error) {
|
|
637
|
-
try {
|
|
638
|
-
await this.onAutoFlowsError(error, inputArgs);
|
|
639
|
-
} catch (_2) {
|
|
640
|
-
}
|
|
641
|
-
throw error;
|
|
642
|
-
}
|
|
643
|
-
return results;
|
|
644
|
-
}
|
|
645
668
|
/**
|
|
646
669
|
* 智能检测是否应该跳过响应式包装
|
|
647
670
|
* 说明:
|
|
@@ -701,13 +724,23 @@ const _FlowModel = class _FlowModel {
|
|
|
701
724
|
modelInstance.props;
|
|
702
725
|
}
|
|
703
726
|
import_react.default.useEffect(() => {
|
|
727
|
+
var _a2, _b2;
|
|
704
728
|
if (typeof renderTarget.onMount === "function") {
|
|
705
729
|
renderTarget.onMount();
|
|
706
730
|
}
|
|
731
|
+
void ((_b2 = (_a2 = renderTarget.flowEngine) == null ? void 0 : _a2.emitter) == null ? void 0 : _b2.emitAsync("model:mounted", {
|
|
732
|
+
uid: renderTarget.uid,
|
|
733
|
+
model: renderTarget
|
|
734
|
+
}));
|
|
707
735
|
return () => {
|
|
736
|
+
var _a3, _b3;
|
|
708
737
|
if (typeof renderTarget.onUnmount === "function") {
|
|
709
738
|
renderTarget.onUnmount();
|
|
710
739
|
}
|
|
740
|
+
void ((_b3 = (_a3 = renderTarget.flowEngine) == null ? void 0 : _a3.emitter) == null ? void 0 : _b3.emitAsync("model:unmounted", {
|
|
741
|
+
uid: renderTarget.uid,
|
|
742
|
+
model: renderTarget
|
|
743
|
+
}));
|
|
711
744
|
};
|
|
712
745
|
}, [renderTarget]);
|
|
713
746
|
const isConfigMode = !!((_b = (_a = modelInstance == null ? void 0 : modelInstance.flowEngine) == null ? void 0 : _a.flowSettings) == null ? void 0 : _b.enabled);
|
|
@@ -717,6 +750,7 @@ const _FlowModel = class _FlowModel {
|
|
|
717
750
|
}
|
|
718
751
|
return (_c = modelInstance.renderHiddenInConfig) == null ? void 0 : _c.call(modelInstance);
|
|
719
752
|
}
|
|
753
|
+
modelInstance.stepParams;
|
|
720
754
|
return originalRender.call(renderTarget);
|
|
721
755
|
});
|
|
722
756
|
ReactiveWrapper.displayName = `ReactiveWrapper(${modelInstance.constructor.name})`;
|
|
@@ -768,13 +802,13 @@ const _FlowModel = class _FlowModel {
|
|
|
768
802
|
}
|
|
769
803
|
async rerender() {
|
|
770
804
|
var _a;
|
|
771
|
-
await this.
|
|
805
|
+
await this.dispatchEvent("beforeRender", (_a = this._lastAutoRunParams) == null ? void 0 : _a[0], { useCache: false });
|
|
772
806
|
}
|
|
773
807
|
/**
|
|
774
|
-
*
|
|
808
|
+
* 事件缓存的作用域标识;可按事件区分(默认与事件无关的 scope 返回 'default')。
|
|
775
809
|
*/
|
|
776
|
-
|
|
777
|
-
return
|
|
810
|
+
getFlowCacheScope(eventName) {
|
|
811
|
+
return String(eventName);
|
|
778
812
|
}
|
|
779
813
|
setParent(parent) {
|
|
780
814
|
const isValidParent = parent && (parent.constructor === _FlowModel || (0, import_utils.isInheritedFrom)(parent.constructor, _FlowModel));
|
|
@@ -892,10 +926,13 @@ const _FlowModel = class _FlowModel {
|
|
|
892
926
|
createRootModel(options) {
|
|
893
927
|
return this.flowEngine.createModel(options);
|
|
894
928
|
}
|
|
895
|
-
|
|
929
|
+
/**
|
|
930
|
+
* 对指定子模型派发 beforeRender 事件(顺序执行并使用缓存)。
|
|
931
|
+
*/
|
|
932
|
+
async applySubModelsBeforeRenderFlows(subKey, inputArgs, shared) {
|
|
896
933
|
await Promise.all(
|
|
897
934
|
this.mapSubModels(subKey, async (sub) => {
|
|
898
|
-
await sub.
|
|
935
|
+
await sub.dispatchEvent("beforeRender", inputArgs);
|
|
899
936
|
})
|
|
900
937
|
);
|
|
901
938
|
}
|
|
@@ -913,7 +950,7 @@ const _FlowModel = class _FlowModel {
|
|
|
913
950
|
return cachedFork;
|
|
914
951
|
}
|
|
915
952
|
}
|
|
916
|
-
const forkId =
|
|
953
|
+
const forkId = (0, import_secure.uid)();
|
|
917
954
|
const fork = new import_forkFlowModel.ForkFlowModel(this, localProps, forkId);
|
|
918
955
|
if ((options == null ? void 0 : options.register) !== false) {
|
|
919
956
|
this.forks.add(fork);
|
|
@@ -952,7 +989,7 @@ const _FlowModel = class _FlowModel {
|
|
|
952
989
|
throw new Error("FlowEngine is not set on this model. Please set flowEngine before saving.");
|
|
953
990
|
}
|
|
954
991
|
this.observerDispose();
|
|
955
|
-
this.
|
|
992
|
+
this.invalidateFlowCache("beforeRender", true);
|
|
956
993
|
return this.flowEngine.removeModel(this.uid);
|
|
957
994
|
}
|
|
958
995
|
async save() {
|
|
@@ -969,7 +1006,7 @@ const _FlowModel = class _FlowModel {
|
|
|
969
1006
|
throw new Error("FlowEngine is not set on this model. Please set flowEngine before deleting.");
|
|
970
1007
|
}
|
|
971
1008
|
this.observerDispose();
|
|
972
|
-
this.
|
|
1009
|
+
this.invalidateFlowCache("beforeRender", true);
|
|
973
1010
|
return this.flowEngine.destroyModel(this.uid);
|
|
974
1011
|
}
|
|
975
1012
|
/**
|
|
@@ -1032,7 +1069,8 @@ const _FlowModel = class _FlowModel {
|
|
|
1032
1069
|
uid: this.uid,
|
|
1033
1070
|
...import_lodash.default.omit(this._options, ["flowEngine"]),
|
|
1034
1071
|
stepParams: this.stepParams,
|
|
1035
|
-
sortIndex: this.sortIndex
|
|
1072
|
+
sortIndex: this.sortIndex,
|
|
1073
|
+
flowRegistry: {}
|
|
1036
1074
|
};
|
|
1037
1075
|
const subModels = this.subModels;
|
|
1038
1076
|
for (const subModelKey in subModels) {
|
|
@@ -1047,8 +1085,7 @@ const _FlowModel = class _FlowModel {
|
|
|
1047
1085
|
}
|
|
1048
1086
|
}
|
|
1049
1087
|
for (const [key, flow] of this.flowRegistry.getFlows()) {
|
|
1050
|
-
data[
|
|
1051
|
-
data["flowRegistry"][key] = flow.toData();
|
|
1088
|
+
data.flowRegistry[key] = flow.toData();
|
|
1052
1089
|
}
|
|
1053
1090
|
return data;
|
|
1054
1091
|
}
|
|
@@ -31,7 +31,7 @@ export declare class ForkFlowModel<TMaster extends FlowModel = FlowModel> {
|
|
|
31
31
|
/** 是否已被释放 */
|
|
32
32
|
private disposed;
|
|
33
33
|
/** fork 在 master.forks 中的索引 */
|
|
34
|
-
readonly forkId:
|
|
34
|
+
readonly forkId: string;
|
|
35
35
|
/** 需要与 master 共享的属性列表 */
|
|
36
36
|
private static readonly SHARED_PROPERTIES;
|
|
37
37
|
/**
|
|
@@ -48,7 +48,7 @@ export declare class ForkFlowModel<TMaster extends FlowModel = FlowModel> {
|
|
|
48
48
|
* 注意:此属性通过 Proxy 在 get/set 陷阱中被动态访问,IDE 可能无法检测到使用, 切勿删除!
|
|
49
49
|
*/
|
|
50
50
|
private localProperties;
|
|
51
|
-
constructor(master: TMaster, initialProps?: IModelComponentProps, forkId?:
|
|
51
|
+
constructor(master: TMaster, initialProps?: IModelComponentProps, forkId?: string);
|
|
52
52
|
get context(): FlowModelContext;
|
|
53
53
|
/**
|
|
54
54
|
* 获取对象及其原型链上的属性描述符
|
|
@@ -58,14 +58,18 @@ export declare class ForkFlowModel<TMaster extends FlowModel = FlowModel> {
|
|
|
58
58
|
* 修改局部 props,仅影响当前 fork
|
|
59
59
|
*/
|
|
60
60
|
setProps(key: string | IModelComponentProps, value?: any): void;
|
|
61
|
+
/**
|
|
62
|
+
* 清理局部 props,仅影响当前 fork
|
|
63
|
+
*/
|
|
64
|
+
clearProps(): {};
|
|
61
65
|
/**
|
|
62
66
|
* render 依旧使用 master 的方法,但合并后的 props 需要透传
|
|
63
67
|
*/
|
|
64
68
|
render(): any;
|
|
65
69
|
/**
|
|
66
|
-
*
|
|
70
|
+
* 事件缓存的作用域标识(fork 专用)。
|
|
67
71
|
*/
|
|
68
|
-
|
|
72
|
+
getFlowCacheScope(eventName: string): string;
|
|
69
73
|
/**
|
|
70
74
|
* 释放 fork:从 master.forks 中移除自身并断开引用
|
|
71
75
|
*/
|
|
@@ -38,10 +38,10 @@ __export(forkFlowModel_exports, {
|
|
|
38
38
|
module.exports = __toCommonJS(forkFlowModel_exports);
|
|
39
39
|
var import_reactive = require("@formily/reactive");
|
|
40
40
|
var import_flowContext = require("../flowContext");
|
|
41
|
-
var
|
|
41
|
+
var import_secure = require("uid/secure");
|
|
42
42
|
var _flowContext;
|
|
43
43
|
const _ForkFlowModel = class _ForkFlowModel {
|
|
44
|
-
constructor(master, initialProps = {}, forkId
|
|
44
|
+
constructor(master, initialProps = {}, forkId) {
|
|
45
45
|
/** 与 master 相同的 UID,用于日志调试 */
|
|
46
46
|
__publicField(this, "uid");
|
|
47
47
|
/** 调试标识,便于在日志或断言中快速识别 */
|
|
@@ -65,7 +65,7 @@ const _ForkFlowModel = class _ForkFlowModel {
|
|
|
65
65
|
this.master = master;
|
|
66
66
|
this.uid = master.uid;
|
|
67
67
|
this.localProps = { ...initialProps };
|
|
68
|
-
this.forkId = forkId;
|
|
68
|
+
this.forkId = forkId || (0, import_secure.uid)();
|
|
69
69
|
this.hidden = this.master.hidden;
|
|
70
70
|
(0, import_reactive.define)(this, {
|
|
71
71
|
localProps: import_reactive.observable,
|
|
@@ -179,6 +179,12 @@ const _ForkFlowModel = class _ForkFlowModel {
|
|
|
179
179
|
this.localProps = { ...this.localProps, ...key };
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* 清理局部 props,仅影响当前 fork
|
|
184
|
+
*/
|
|
185
|
+
clearProps() {
|
|
186
|
+
return this.localProps = {};
|
|
187
|
+
}
|
|
182
188
|
/**
|
|
183
189
|
* render 依旧使用 master 的方法,但合并后的 props 需要透传
|
|
184
190
|
*/
|
|
@@ -194,10 +200,10 @@ const _ForkFlowModel = class _ForkFlowModel {
|
|
|
194
200
|
}
|
|
195
201
|
}
|
|
196
202
|
/**
|
|
197
|
-
*
|
|
203
|
+
* 事件缓存的作用域标识(fork 专用)。
|
|
198
204
|
*/
|
|
199
|
-
|
|
200
|
-
return String(this.forkId)
|
|
205
|
+
getFlowCacheScope(eventName) {
|
|
206
|
+
return `${String(eventName)}:${String(this.forkId)}`;
|
|
201
207
|
}
|
|
202
208
|
// onUnmount() {
|
|
203
209
|
// // 不在此处自动 dispose(避免破坏外部 fork 管理),但应透传到 master 的 onUnmount 钩子,
|
|
@@ -216,11 +222,35 @@ const _ForkFlowModel = class _ForkFlowModel {
|
|
|
216
222
|
* 释放 fork:从 master.forks 中移除自身并断开引用
|
|
217
223
|
*/
|
|
218
224
|
dispose() {
|
|
225
|
+
var _a;
|
|
219
226
|
if (this.disposed) return;
|
|
220
227
|
this.disposed = true;
|
|
228
|
+
try {
|
|
229
|
+
const cache = (_a = this.flowEngine) == null ? void 0 : _a.applyFlowCache;
|
|
230
|
+
if (cache && cache.size > 0) {
|
|
231
|
+
const uidSuffixes = [`:${this.uid}`, `-${this.uid}`];
|
|
232
|
+
const forkIdColon = `:${this.forkId}:`;
|
|
233
|
+
const forkIdHyphen = `-${this.forkId}-`;
|
|
234
|
+
for (const key of cache.keys()) {
|
|
235
|
+
const isEventCache = key.startsWith("event:") || key.startsWith("event-");
|
|
236
|
+
if (!isEventCache) continue;
|
|
237
|
+
const endMatches = uidSuffixes.some((s) => key.endsWith(s));
|
|
238
|
+
if (!endMatches) continue;
|
|
239
|
+
let trimmed = key;
|
|
240
|
+
for (const suf of uidSuffixes) {
|
|
241
|
+
if (trimmed.endsWith(suf)) {
|
|
242
|
+
trimmed = trimmed.slice(0, -suf.length);
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (trimmed.includes(forkIdColon) || trimmed.includes(forkIdHyphen)) {
|
|
247
|
+
cache.delete(key);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
} catch {
|
|
252
|
+
}
|
|
221
253
|
if (this.master && this.master.forks) {
|
|
222
|
-
const forkCacheKey = import_flowEngine.FlowEngine.generateApplyFlowCacheKey(`${this.forkId}`, "all", this.uid);
|
|
223
|
-
this.flowEngine.applyFlowCache.delete(forkCacheKey);
|
|
224
254
|
this.master.forks.delete(this);
|
|
225
255
|
}
|
|
226
256
|
if (this.master && this.master.forkCache) {
|
package/lib/provider.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export declare const FlowEngineProvider: React.FC<FlowEngineProviderProps>;
|
|
|
17
17
|
export declare const FlowEngineGlobalsContextProvider: React.FC<{
|
|
18
18
|
children: React.ReactNode;
|
|
19
19
|
}>;
|
|
20
|
-
export declare const useFlowEngine: (
|
|
20
|
+
export declare const useFlowEngine: ({ throwError }?: {
|
|
21
|
+
throwError?: boolean;
|
|
22
|
+
}) => FlowEngine;
|
|
21
23
|
export declare const useFlowEngineContext: () => FlowEngineContext;
|
|
22
24
|
export {};
|
package/lib/provider.js
CHANGED
|
@@ -49,14 +49,16 @@ var import_FlowContextProvider = require("./FlowContextProvider");
|
|
|
49
49
|
var import_views = require("./views");
|
|
50
50
|
var import_FlowView = require("./views/FlowView");
|
|
51
51
|
const FlowEngineReactContext = (0, import_react.createContext)(null);
|
|
52
|
-
const FlowEngineProvider =
|
|
52
|
+
const FlowEngineProvider = import_react.default.memo((props) => {
|
|
53
53
|
const { engine, children } = props;
|
|
54
54
|
if (!engine) {
|
|
55
55
|
throw new Error("FlowEngineProvider must be supplied with an engine.");
|
|
56
56
|
}
|
|
57
57
|
return /* @__PURE__ */ import_react.default.createElement(FlowEngineReactContext.Provider, { value: engine }, /* @__PURE__ */ import_react.default.createElement(import_FlowContextProvider.FlowContextProvider, { context: engine.context }, children));
|
|
58
|
-
}
|
|
58
|
+
});
|
|
59
|
+
FlowEngineProvider.displayName = "FlowEngineProvider";
|
|
59
60
|
const FlowEngineGlobalsContextProvider = /* @__PURE__ */ __name(({ children }) => {
|
|
61
|
+
var _a;
|
|
60
62
|
const { modal, message, notification } = import_antd.App.useApp();
|
|
61
63
|
const [drawer, contextHolder] = (0, import_views.useDrawer)();
|
|
62
64
|
const [embed, pageContextHolder] = (0, import_views.usePage)();
|
|
@@ -90,11 +92,11 @@ const FlowEngineGlobalsContextProvider = /* @__PURE__ */ __name(({ children }) =
|
|
|
90
92
|
}
|
|
91
93
|
engine.reactView.refresh();
|
|
92
94
|
}, [engine, drawer, modal, message, notification, config, popover, token, dialog, embed]);
|
|
93
|
-
return /* @__PURE__ */ import_react.default.createElement(
|
|
95
|
+
return /* @__PURE__ */ import_react.default.createElement(import_antd.ConfigProvider, { ...config, locale: (_a = engine.context.locales) == null ? void 0 : _a.antd, popupMatchSelectWidth: false }, children, contextHolder, popoverContextHolder, pageContextHolder, dialogContextHolder);
|
|
94
96
|
}, "FlowEngineGlobalsContextProvider");
|
|
95
|
-
const useFlowEngine = /* @__PURE__ */ __name(() => {
|
|
97
|
+
const useFlowEngine = /* @__PURE__ */ __name(({ throwError = true } = {}) => {
|
|
96
98
|
const context = (0, import_react.useContext)(FlowEngineReactContext);
|
|
97
|
-
if (!context) {
|
|
99
|
+
if (!context && throwError) {
|
|
98
100
|
throw new Error(
|
|
99
101
|
"useFlowEngine must be used within a FlowEngineProvider, and FlowEngineProvider must be supplied with an engine."
|
|
100
102
|
);
|
|
@@ -130,6 +130,7 @@ const _MultiRecordResource = class _MultiRecordResource extends import_baseRecor
|
|
|
130
130
|
async create(data, options) {
|
|
131
131
|
const config = this.mergeRequestConfig({ data }, this.createActionOptions, options);
|
|
132
132
|
await this.runAction("create", config);
|
|
133
|
+
this.emit("saved", data);
|
|
133
134
|
await this.refresh();
|
|
134
135
|
}
|
|
135
136
|
async get(filterByTk) {
|
|
@@ -144,17 +145,35 @@ const _MultiRecordResource = class _MultiRecordResource extends import_baseRecor
|
|
|
144
145
|
return data;
|
|
145
146
|
}
|
|
146
147
|
async update(filterByTk, data, options) {
|
|
148
|
+
const collection = this.context.collection;
|
|
149
|
+
const filterTargetKey = collection == null ? void 0 : collection.filterTargetKey;
|
|
150
|
+
const tkData = collection == null ? void 0 : collection.getFilterByTK(this.context.record);
|
|
151
|
+
let result = data;
|
|
152
|
+
if (collection && filterTargetKey) {
|
|
153
|
+
if (Array.isArray(filterTargetKey)) {
|
|
154
|
+
result = {
|
|
155
|
+
...data,
|
|
156
|
+
...tkData || {}
|
|
157
|
+
};
|
|
158
|
+
} else {
|
|
159
|
+
result = {
|
|
160
|
+
...data,
|
|
161
|
+
[filterTargetKey]: tkData
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
147
165
|
const config = this.mergeRequestConfig(
|
|
148
166
|
{
|
|
149
167
|
params: {
|
|
150
168
|
filterByTk
|
|
151
169
|
},
|
|
152
|
-
data
|
|
170
|
+
data: result
|
|
153
171
|
},
|
|
154
172
|
this.updateActionOptions,
|
|
155
173
|
options
|
|
156
174
|
);
|
|
157
175
|
await this.runAction("update", config);
|
|
176
|
+
this.emit("saved", data);
|
|
158
177
|
await this.refresh();
|
|
159
178
|
}
|
|
160
179
|
async destroySelectedRows() {
|
|
@@ -176,6 +195,11 @@ const _MultiRecordResource = class _MultiRecordResource extends import_baseRecor
|
|
|
176
195
|
options
|
|
177
196
|
);
|
|
178
197
|
await this.runAction("destroy", config);
|
|
198
|
+
const currentPage = this.getPage();
|
|
199
|
+
const lastPage = Math.ceil((this.getCount() - import_lodash.default.castArray(filterByTk).length) / this.getPageSize());
|
|
200
|
+
if (currentPage > lastPage) {
|
|
201
|
+
this.setPage(lastPage);
|
|
202
|
+
}
|
|
179
203
|
await this.refresh();
|
|
180
204
|
}
|
|
181
205
|
setItem(index, newDataItem) {
|