@webiny/background-tasks 0.0.0-unstable.7be00a75a9 → 0.0.0-unstable.9609e4e0c9
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/admin/BackgroundTaskRoutes.js +35 -15
- package/admin/BackgroundTaskRoutes.js.map +1 -1
- package/admin/BackgroundTasks.js +9 -0
- package/admin/BackgroundTasks.js.map +1 -1
- package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsGateway.d.ts +12 -0
- package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsGateway.js +40 -0
- package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsGateway.js.map +1 -0
- package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsUseCase.d.ts +11 -0
- package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsUseCase.js +18 -0
- package/admin/features/getBackgroundTaskSettings/GetBackgroundTaskSettingsUseCase.js.map +1 -0
- package/admin/features/getBackgroundTaskSettings/abstractions.d.ts +15 -0
- package/admin/features/getBackgroundTaskSettings/abstractions.js +6 -0
- package/admin/features/getBackgroundTaskSettings/abstractions.js.map +1 -0
- package/admin/features/getBackgroundTaskSettings/feature.d.ts +3 -0
- package/admin/features/getBackgroundTaskSettings/feature.js +19 -0
- package/admin/features/getBackgroundTaskSettings/feature.js.map +1 -0
- package/admin/features/getBackgroundTaskSettings/index.d.ts +3 -0
- package/admin/features/getBackgroundTaskSettings/index.js +2 -0
- package/admin/features/listLogs/ListLogsGateway.js +1 -1
- package/admin/features/listLogs/ListLogsGateway.js.map +1 -1
- package/admin/features/permissions/feature.d.ts +1 -1
- package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsGateway.d.ts +12 -0
- package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsGateway.js +43 -0
- package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsGateway.js.map +1 -0
- package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.d.ts +11 -0
- package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js +18 -0
- package/admin/features/updateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js.map +1 -0
- package/admin/features/updateBackgroundTaskSettings/abstractions.d.ts +18 -0
- package/admin/features/updateBackgroundTaskSettings/abstractions.js +6 -0
- package/admin/features/updateBackgroundTaskSettings/abstractions.js.map +1 -0
- package/admin/features/updateBackgroundTaskSettings/feature.d.ts +3 -0
- package/admin/features/updateBackgroundTaskSettings/feature.js +19 -0
- package/admin/features/updateBackgroundTaskSettings/feature.js.map +1 -0
- package/admin/features/updateBackgroundTaskSettings/index.d.ts +3 -0
- package/admin/features/updateBackgroundTaskSettings/index.js +2 -0
- package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.d.ts +21 -0
- package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js +86 -0
- package/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js.map +1 -0
- package/admin/presentation/BackgroundTaskSettings/abstractions.d.ts +16 -0
- package/admin/presentation/BackgroundTaskSettings/abstractions.js +5 -0
- package/admin/presentation/BackgroundTaskSettings/abstractions.js.map +1 -0
- package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.d.ts +2 -0
- package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js +56 -0
- package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js.map +1 -0
- package/admin/presentation/BackgroundTaskSettings/feature.d.ts +3 -0
- package/admin/presentation/BackgroundTaskSettings/feature.js +17 -0
- package/admin/presentation/BackgroundTaskSettings/feature.js.map +1 -0
- package/admin/presentation/BackgroundTaskSettings/index.d.ts +2 -0
- package/admin/presentation/BackgroundTaskSettings/index.js +2 -0
- package/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js +2 -1
- package/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js.map +1 -1
- package/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.d.ts +2 -0
- package/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.js +16 -0
- package/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.js.map +1 -0
- package/admin/presentation/TaskDetail/TaskDetailPresenter.js +1 -1
- package/admin/presentation/TaskDetail/TaskDetailPresenter.js.map +1 -1
- package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js +6 -0
- package/admin/presentation/TaskDetail/components/TaskDetailDrawer.js.map +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsDataSource.js.map +1 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.d.ts +2 -0
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js +3 -1
- package/admin/presentation/TaskExecutions/TaskExecutionsPresenter.js.map +1 -1
- package/admin/presentation/TaskExecutions/components/TaskDefinitionsButton.d.ts +2 -0
- package/admin/presentation/TaskExecutions/components/TaskDefinitionsButton.js +16 -0
- package/admin/presentation/TaskExecutions/components/TaskDefinitionsButton.js.map +1 -0
- package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js +78 -40
- package/admin/presentation/TaskExecutions/components/TaskExecutionsView.js.map +1 -1
- package/admin/routes.d.ts +1 -0
- package/admin/routes.js +4 -0
- package/admin/routes.js.map +1 -1
- package/admin/shared/types.d.ts +3 -0
- package/api/BackgroundTasksFeature.d.ts +4 -0
- package/api/BackgroundTasksFeature.js +79 -0
- package/api/BackgroundTasksFeature.js.map +1 -0
- package/api/abstractions/Timer.d.ts +1 -0
- package/api/abstractions/Timer.js +0 -0
- package/api/abstractions/index.d.ts +1 -0
- package/api/abstractions/index.js +1 -0
- package/api/crud/TaskLogPrivateModel.d.ts +9 -0
- package/api/crud/TaskLogPrivateModel.js +41 -0
- package/api/crud/TaskLogPrivateModel.js.map +1 -0
- package/api/crud/TaskPrivateModel.d.ts +9 -0
- package/api/crud/TaskPrivateModel.js +56 -0
- package/api/crud/TaskPrivateModel.js.map +1 -0
- package/api/decorators/SelfCleaningTaskHandlerDecorator.d.ts +33 -0
- package/api/decorators/SelfCleaningTaskHandlerDecorator.js +69 -0
- package/api/decorators/SelfCleaningTaskHandlerDecorator.js.map +1 -0
- package/api/decorators/TaskDefinitionDefaultsDecorator.d.ts +27 -0
- package/api/decorators/TaskDefinitionDefaultsDecorator.js +47 -0
- package/api/decorators/TaskDefinitionDefaultsDecorator.js.map +1 -0
- package/api/domain/BackgroundTaskSettings.d.ts +3 -0
- package/api/domain/BackgroundTaskSettings.js +0 -0
- package/api/domain/TaskService.d.ts +12 -0
- package/api/domain/TaskService.js +5 -0
- package/api/domain/TaskService.js.map +1 -0
- package/api/domain/constants.d.ts +3 -0
- package/api/domain/constants.js +6 -0
- package/api/domain/constants.js.map +1 -0
- package/api/domain/errors.d.ts +61 -0
- package/api/domain/errors.js +109 -0
- package/api/domain/errors.js.map +1 -0
- package/api/domain/task/TaskLogModelProvider.d.ts +12 -0
- package/api/domain/task/TaskLogModelProvider.js +23 -0
- package/api/domain/task/TaskLogModelProvider.js.map +1 -0
- package/api/domain/task/TaskLogsRepository.d.ts +34 -0
- package/api/domain/task/TaskLogsRepository.js +146 -0
- package/api/domain/task/TaskLogsRepository.js.map +1 -0
- package/api/domain/task/TaskModelProvider.d.ts +12 -0
- package/api/domain/task/TaskModelProvider.js +23 -0
- package/api/domain/task/TaskModelProvider.js.map +1 -0
- package/api/domain/task/TasksRepository.d.ts +37 -0
- package/api/domain/task/TasksRepository.js +126 -0
- package/api/domain/task/TasksRepository.js.map +1 -0
- package/api/domain/task/abstractions.d.ts +50 -0
- package/api/domain/task/abstractions.js +8 -0
- package/api/domain/task/abstractions.js.map +1 -0
- package/api/domain/task/createRevisionId.d.ts +1 -0
- package/api/domain/task/createRevisionId.js +8 -0
- package/api/domain/task/createRevisionId.js.map +1 -0
- package/api/domain/task/entryToTask.d.ts +3 -0
- package/api/domain/task/entryToTask.js +20 -0
- package/api/domain/task/entryToTask.js.map +1 -0
- package/api/domain/task/entryToTaskLog.d.ts +3 -0
- package/api/domain/task/entryToTaskLog.js +12 -0
- package/api/domain/task/entryToTaskLog.js.map +1 -0
- package/api/events/TaskAfterCreateEvent.d.ts +6 -0
- package/api/events/TaskAfterCreateEvent.js +13 -0
- package/api/events/TaskAfterCreateEvent.js.map +1 -0
- package/api/events/TaskAfterDeleteEvent.d.ts +6 -0
- package/api/events/TaskAfterDeleteEvent.js +13 -0
- package/api/events/TaskAfterDeleteEvent.js.map +1 -0
- package/api/events/TaskAfterUpdateEvent.d.ts +6 -0
- package/api/events/TaskAfterUpdateEvent.js +13 -0
- package/api/events/TaskAfterUpdateEvent.js.map +1 -0
- package/api/events/TaskBeforeCreateEvent.d.ts +6 -0
- package/api/events/TaskBeforeCreateEvent.js +13 -0
- package/api/events/TaskBeforeCreateEvent.js.map +1 -0
- package/api/events/TaskBeforeDeleteEvent.d.ts +6 -0
- package/api/events/TaskBeforeDeleteEvent.js +13 -0
- package/api/events/TaskBeforeDeleteEvent.js.map +1 -0
- package/api/events/TaskBeforeUpdateEvent.d.ts +6 -0
- package/api/events/TaskBeforeUpdateEvent.js +13 -0
- package/api/events/TaskBeforeUpdateEvent.js.map +1 -0
- package/api/events/abstractions.d.ts +53 -0
- package/api/events/abstractions.js +10 -0
- package/api/events/abstractions.js.map +1 -0
- package/api/events/index.d.ts +7 -0
- package/api/events/index.js +7 -0
- package/api/features/AbortTask/AbortTaskUseCase.d.ts +9 -0
- package/api/features/AbortTask/AbortTaskUseCase.js +12 -0
- package/api/features/AbortTask/AbortTaskUseCase.js.map +1 -0
- package/api/features/AbortTask/abstractions.d.ts +25 -0
- package/api/features/AbortTask/abstractions.js +5 -0
- package/api/features/AbortTask/abstractions.js.map +1 -0
- package/api/features/AbortTask/feature.d.ts +4 -0
- package/api/features/AbortTask/feature.js +13 -0
- package/api/features/AbortTask/feature.js.map +1 -0
- package/api/features/AbortTask/index.d.ts +2 -0
- package/api/features/AbortTask/index.js +2 -0
- package/api/features/BackgroundTaskPermissions/abstractions.d.ts +17 -0
- package/api/features/BackgroundTaskPermissions/abstractions.js +6 -0
- package/api/features/BackgroundTaskPermissions/abstractions.js.map +1 -0
- package/api/features/BackgroundTaskPermissions/feature.d.ts +4 -0
- package/api/features/BackgroundTaskPermissions/feature.js +7 -0
- package/api/features/BackgroundTaskPermissions/feature.js.map +1 -0
- package/api/features/BackgroundTaskPermissions/index.d.ts +2 -0
- package/api/features/BackgroundTaskPermissions/index.js +2 -0
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.d.ts +27 -0
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js +117 -0
- package/api/features/CleanupTaskSubtree/CleanupTaskSubtreeUseCase.js.map +1 -0
- package/api/features/CleanupTaskSubtree/abstractions.d.ts +7 -0
- package/api/features/CleanupTaskSubtree/abstractions.js +5 -0
- package/api/features/CleanupTaskSubtree/abstractions.js.map +1 -0
- package/api/features/CleanupTaskSubtree/feature.d.ts +4 -0
- package/api/features/CleanupTaskSubtree/feature.js +11 -0
- package/api/features/CleanupTaskSubtree/feature.js.map +1 -0
- package/api/features/CleanupTaskSubtree/index.d.ts +2 -0
- package/api/features/CleanupTaskSubtree/index.js +2 -0
- package/api/features/CreateTask/CreateTaskUseCase.d.ts +17 -0
- package/api/features/CreateTask/CreateTaskUseCase.js +56 -0
- package/api/features/CreateTask/CreateTaskUseCase.js.map +1 -0
- package/api/features/CreateTask/abstractions.d.ts +21 -0
- package/api/features/CreateTask/abstractions.js +5 -0
- package/api/features/CreateTask/abstractions.js.map +1 -0
- package/api/features/CreateTask/feature.d.ts +4 -0
- package/api/features/CreateTask/feature.js +11 -0
- package/api/features/CreateTask/feature.js.map +1 -0
- package/api/features/CreateTask/index.d.ts +2 -0
- package/api/features/CreateTask/index.js +2 -0
- package/api/features/CreateTaskLog/CreateTaskLogUseCase.d.ts +13 -0
- package/api/features/CreateTaskLog/CreateTaskLogUseCase.js +19 -0
- package/api/features/CreateTaskLog/CreateTaskLogUseCase.js.map +1 -0
- package/api/features/CreateTaskLog/abstractions.d.ts +16 -0
- package/api/features/CreateTaskLog/abstractions.js +5 -0
- package/api/features/CreateTaskLog/abstractions.js.map +1 -0
- package/api/features/CreateTaskLog/feature.d.ts +4 -0
- package/api/features/CreateTaskLog/feature.js +11 -0
- package/api/features/CreateTaskLog/feature.js.map +1 -0
- package/api/features/CreateTaskLog/index.d.ts +2 -0
- package/api/features/CreateTaskLog/index.js +2 -0
- package/api/features/DeleteTask/DeleteTaskUseCase.d.ts +14 -0
- package/api/features/DeleteTask/DeleteTaskUseCase.js +34 -0
- package/api/features/DeleteTask/DeleteTaskUseCase.js.map +1 -0
- package/api/features/DeleteTask/abstractions.d.ts +17 -0
- package/api/features/DeleteTask/abstractions.js +5 -0
- package/api/features/DeleteTask/abstractions.js.map +1 -0
- package/api/features/DeleteTask/feature.d.ts +4 -0
- package/api/features/DeleteTask/feature.js +11 -0
- package/api/features/DeleteTask/feature.js.map +1 -0
- package/api/features/DeleteTask/index.d.ts +2 -0
- package/api/features/DeleteTask/index.js +2 -0
- package/api/features/DeleteTaskLog/DeleteTaskLogUseCase.d.ts +11 -0
- package/api/features/DeleteTaskLog/DeleteTaskLogUseCase.js +19 -0
- package/api/features/DeleteTaskLog/DeleteTaskLogUseCase.js.map +1 -0
- package/api/features/DeleteTaskLog/abstractions.d.ts +14 -0
- package/api/features/DeleteTaskLog/abstractions.js +5 -0
- package/api/features/DeleteTaskLog/abstractions.js.map +1 -0
- package/api/features/DeleteTaskLog/feature.d.ts +4 -0
- package/api/features/DeleteTaskLog/feature.js +11 -0
- package/api/features/DeleteTaskLog/feature.js.map +1 -0
- package/api/features/DeleteTaskLog/index.d.ts +2 -0
- package/api/features/DeleteTaskLog/index.js +2 -0
- package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.d.ts +21 -0
- package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js +63 -0
- package/api/features/GetBackgroundTaskSettings/GetBackgroundTaskSettingsRepository.js.map +1 -0
- package/api/features/GetBackgroundTaskSettings/abstractions.d.ts +13 -0
- package/api/features/GetBackgroundTaskSettings/abstractions.js +5 -0
- package/api/features/GetBackgroundTaskSettings/abstractions.js.map +1 -0
- package/api/features/GetBackgroundTaskSettings/feature.d.ts +4 -0
- package/api/features/GetBackgroundTaskSettings/feature.js +11 -0
- package/api/features/GetBackgroundTaskSettings/feature.js.map +1 -0
- package/api/features/GetBackgroundTaskSettings/index.d.ts +2 -0
- package/api/features/GetBackgroundTaskSettings/index.js +2 -0
- package/api/features/GetLatestTaskLog/GetLatestTaskLogUseCase.d.ts +11 -0
- package/api/features/GetLatestTaskLog/GetLatestTaskLogUseCase.js +19 -0
- package/api/features/GetLatestTaskLog/GetLatestTaskLogUseCase.js.map +1 -0
- package/api/features/GetLatestTaskLog/abstractions.d.ts +15 -0
- package/api/features/GetLatestTaskLog/abstractions.js +5 -0
- package/api/features/GetLatestTaskLog/abstractions.js.map +1 -0
- package/api/features/GetLatestTaskLog/feature.d.ts +4 -0
- package/api/features/GetLatestTaskLog/feature.js +11 -0
- package/api/features/GetLatestTaskLog/feature.js.map +1 -0
- package/api/features/GetLatestTaskLog/index.d.ts +2 -0
- package/api/features/GetLatestTaskLog/index.js +2 -0
- package/api/features/GetRunnableTaskDefinition/GetRunnableTaskDefinitionUseCase.d.ts +13 -0
- package/api/features/GetRunnableTaskDefinition/GetRunnableTaskDefinitionUseCase.js +51 -0
- package/api/features/GetRunnableTaskDefinition/GetRunnableTaskDefinitionUseCase.js.map +1 -0
- package/api/features/GetRunnableTaskDefinition/abstractions.d.ts +17 -0
- package/api/features/GetRunnableTaskDefinition/abstractions.js +5 -0
- package/api/features/GetRunnableTaskDefinition/abstractions.js.map +1 -0
- package/api/features/GetRunnableTaskDefinition/feature.d.ts +4 -0
- package/api/features/GetRunnableTaskDefinition/feature.js +11 -0
- package/api/features/GetRunnableTaskDefinition/feature.js.map +1 -0
- package/api/features/GetRunnableTaskDefinition/index.d.ts +2 -0
- package/api/features/GetRunnableTaskDefinition/index.js +2 -0
- package/api/features/GetTask/GetTaskUseCase.d.ts +13 -0
- package/api/features/GetTask/GetTaskUseCase.js +19 -0
- package/api/features/GetTask/GetTaskUseCase.js.map +1 -0
- package/api/features/GetTask/abstractions.d.ts +17 -0
- package/api/features/GetTask/abstractions.js +5 -0
- package/api/features/GetTask/abstractions.js.map +1 -0
- package/api/features/GetTask/feature.d.ts +4 -0
- package/api/features/GetTask/feature.js +11 -0
- package/api/features/GetTask/feature.js.map +1 -0
- package/api/features/GetTask/index.d.ts +2 -0
- package/api/features/GetTask/index.js +2 -0
- package/api/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.d.ts +11 -0
- package/api/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js +24 -0
- package/api/features/ListTaskDefinitions/ListTaskDefinitionsUseCase.js.map +1 -0
- package/api/features/ListTaskDefinitions/abstractions.d.ts +9 -0
- package/api/features/ListTaskDefinitions/abstractions.js +5 -0
- package/api/features/ListTaskDefinitions/abstractions.js.map +1 -0
- package/api/features/ListTaskDefinitions/feature.d.ts +4 -0
- package/api/features/ListTaskDefinitions/feature.js +11 -0
- package/api/features/ListTaskDefinitions/feature.js.map +1 -0
- package/api/features/ListTaskDefinitions/index.d.ts +2 -0
- package/api/features/ListTaskDefinitions/index.js +2 -0
- package/api/features/ListTaskLogs/ListTaskLogsUseCase.d.ts +12 -0
- package/api/features/ListTaskLogs/ListTaskLogsUseCase.js +19 -0
- package/api/features/ListTaskLogs/ListTaskLogsUseCase.js.map +1 -0
- package/api/features/ListTaskLogs/abstractions.d.ts +15 -0
- package/api/features/ListTaskLogs/abstractions.js +5 -0
- package/api/features/ListTaskLogs/abstractions.js.map +1 -0
- package/api/features/ListTaskLogs/feature.d.ts +4 -0
- package/api/features/ListTaskLogs/feature.js +11 -0
- package/api/features/ListTaskLogs/feature.js.map +1 -0
- package/api/features/ListTaskLogs/index.d.ts +2 -0
- package/api/features/ListTaskLogs/index.js +2 -0
- package/api/features/ListTasks/ListTasksUseCase.d.ts +13 -0
- package/api/features/ListTasks/ListTasksUseCase.js +19 -0
- package/api/features/ListTasks/ListTasksUseCase.js.map +1 -0
- package/api/features/ListTasks/abstractions.d.ts +19 -0
- package/api/features/ListTasks/abstractions.js +5 -0
- package/api/features/ListTasks/abstractions.js.map +1 -0
- package/api/features/ListTasks/feature.d.ts +4 -0
- package/api/features/ListTasks/feature.js +11 -0
- package/api/features/ListTasks/feature.js.map +1 -0
- package/api/features/ListTasks/index.d.ts +2 -0
- package/api/features/ListTasks/index.js +2 -0
- package/api/features/ListVisibleTaskDefinitions/ListVisibleTaskDefinitionsUseCase.d.ts +11 -0
- package/api/features/ListVisibleTaskDefinitions/ListVisibleTaskDefinitionsUseCase.js +19 -0
- package/api/features/ListVisibleTaskDefinitions/ListVisibleTaskDefinitionsUseCase.js.map +1 -0
- package/api/features/ListVisibleTaskDefinitions/abstractions.d.ts +9 -0
- package/api/features/ListVisibleTaskDefinitions/abstractions.js +5 -0
- package/api/features/ListVisibleTaskDefinitions/abstractions.js.map +1 -0
- package/api/features/ListVisibleTaskDefinitions/feature.d.ts +4 -0
- package/api/features/ListVisibleTaskDefinitions/feature.js +11 -0
- package/api/features/ListVisibleTaskDefinitions/feature.js.map +1 -0
- package/api/features/ListVisibleTaskDefinitions/index.d.ts +2 -0
- package/api/features/ListVisibleTaskDefinitions/index.js +2 -0
- package/api/features/TaskController/TaskController.d.ts +49 -0
- package/api/features/TaskController/TaskController.js +71 -0
- package/api/features/TaskController/TaskController.js.map +1 -0
- package/api/features/TaskController/augmentation.d.ts +60 -0
- package/api/features/TaskController/augmentation.js +0 -0
- package/api/features/TaskController/index.d.ts +2 -0
- package/api/features/TaskController/index.js +2 -0
- package/api/features/TaskExecutionContext/TaskExecutionContext.d.ts +24 -0
- package/api/features/TaskExecutionContext/TaskExecutionContext.js +43 -0
- package/api/features/TaskExecutionContext/TaskExecutionContext.js.map +1 -0
- package/api/features/TaskExecutionContext/abstractions.d.ts +26 -0
- package/api/features/TaskExecutionContext/abstractions.js +5 -0
- package/api/features/TaskExecutionContext/abstractions.js.map +1 -0
- package/api/features/TaskExecutionContext/feature.d.ts +4 -0
- package/api/features/TaskExecutionContext/feature.js +11 -0
- package/api/features/TaskExecutionContext/feature.js.map +1 -0
- package/api/features/TaskExecutionContext/index.d.ts +1 -0
- package/api/features/TaskExecutionContext/index.js +1 -0
- package/api/features/TaskHandlerResolver/TaskHandlerResolver.d.ts +12 -0
- package/api/features/TaskHandlerResolver/TaskHandlerResolver.js +19 -0
- package/api/features/TaskHandlerResolver/TaskHandlerResolver.js.map +1 -0
- package/api/features/TaskHandlerResolver/abstractions.d.ts +17 -0
- package/api/features/TaskHandlerResolver/abstractions.js +5 -0
- package/api/features/TaskHandlerResolver/abstractions.js.map +1 -0
- package/api/features/TaskHandlerResolver/feature.d.ts +9 -0
- package/api/features/TaskHandlerResolver/feature.js +11 -0
- package/api/features/TaskHandlerResolver/feature.js.map +1 -0
- package/api/features/TaskHandlerResolver/index.d.ts +2 -0
- package/api/features/TaskHandlerResolver/index.js +2 -0
- package/api/features/TaskService/BackgroundTaskService.d.ts +42 -0
- package/api/features/TaskService/BackgroundTaskService.js +191 -0
- package/api/features/TaskService/BackgroundTaskService.js.map +1 -0
- package/api/features/TaskService/feature.d.ts +4 -0
- package/api/features/TaskService/feature.js +11 -0
- package/api/features/TaskService/feature.js.map +1 -0
- package/api/features/TaskService/index.d.ts +1 -0
- package/api/features/TaskService/index.js +1 -0
- package/api/features/TriggerTask/TriggerTaskUseCase.d.ts +9 -0
- package/api/features/TriggerTask/TriggerTaskUseCase.js +12 -0
- package/api/features/TriggerTask/TriggerTaskUseCase.js.map +1 -0
- package/api/features/TriggerTask/abstractions.d.ts +28 -0
- package/api/features/TriggerTask/abstractions.js +5 -0
- package/api/features/TriggerTask/abstractions.js.map +1 -0
- package/api/features/TriggerTask/feature.d.ts +4 -0
- package/api/features/TriggerTask/feature.js +13 -0
- package/api/features/TriggerTask/feature.js.map +1 -0
- package/api/features/TriggerTask/index.d.ts +2 -0
- package/api/features/TriggerTask/index.js +2 -0
- package/api/features/TriggerVisibleTask/TriggerVisibleTaskUseCase.d.ts +15 -0
- package/api/features/TriggerVisibleTask/TriggerVisibleTaskUseCase.js +26 -0
- package/api/features/TriggerVisibleTask/TriggerVisibleTaskUseCase.js.map +1 -0
- package/api/features/TriggerVisibleTask/abstractions.d.ts +17 -0
- package/api/features/TriggerVisibleTask/abstractions.js +5 -0
- package/api/features/TriggerVisibleTask/abstractions.js.map +1 -0
- package/api/features/TriggerVisibleTask/feature.d.ts +4 -0
- package/api/features/TriggerVisibleTask/feature.js +11 -0
- package/api/features/TriggerVisibleTask/feature.js.map +1 -0
- package/api/features/TriggerVisibleTask/index.d.ts +2 -0
- package/api/features/TriggerVisibleTask/index.js +2 -0
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.d.ts +23 -0
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js +67 -0
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsRepository.js.map +1 -0
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.d.ts +14 -0
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js +27 -0
- package/api/features/UpdateBackgroundTaskSettings/UpdateBackgroundTaskSettingsUseCase.js.map +1 -0
- package/api/features/UpdateBackgroundTaskSettings/abstractions.d.ts +26 -0
- package/api/features/UpdateBackgroundTaskSettings/abstractions.js +6 -0
- package/api/features/UpdateBackgroundTaskSettings/abstractions.js.map +1 -0
- package/api/features/UpdateBackgroundTaskSettings/feature.d.ts +4 -0
- package/api/features/UpdateBackgroundTaskSettings/feature.js +13 -0
- package/api/features/UpdateBackgroundTaskSettings/feature.js.map +1 -0
- package/api/features/UpdateBackgroundTaskSettings/index.d.ts +2 -0
- package/api/features/UpdateBackgroundTaskSettings/index.js +2 -0
- package/api/features/UpdateBackgroundTaskSettings/schema.d.ts +4 -0
- package/api/features/UpdateBackgroundTaskSettings/schema.js +8 -0
- package/api/features/UpdateBackgroundTaskSettings/schema.js.map +1 -0
- package/api/features/UpdateTask/UpdateTaskUseCase.d.ts +17 -0
- package/api/features/UpdateTask/UpdateTaskUseCase.js +36 -0
- package/api/features/UpdateTask/UpdateTaskUseCase.js.map +1 -0
- package/api/features/UpdateTask/abstractions.d.ts +22 -0
- package/api/features/UpdateTask/abstractions.js +5 -0
- package/api/features/UpdateTask/abstractions.js.map +1 -0
- package/api/features/UpdateTask/feature.d.ts +4 -0
- package/api/features/UpdateTask/feature.js +11 -0
- package/api/features/UpdateTask/feature.js.map +1 -0
- package/api/features/UpdateTask/index.d.ts +2 -0
- package/api/features/UpdateTask/index.js +2 -0
- package/api/features/UpdateTaskLog/UpdateTaskLogUseCase.d.ts +12 -0
- package/api/features/UpdateTaskLog/UpdateTaskLogUseCase.js +19 -0
- package/api/features/UpdateTaskLog/UpdateTaskLogUseCase.js.map +1 -0
- package/api/features/UpdateTaskLog/abstractions.d.ts +16 -0
- package/api/features/UpdateTaskLog/abstractions.js +5 -0
- package/api/features/UpdateTaskLog/abstractions.js.map +1 -0
- package/api/features/UpdateTaskLog/feature.d.ts +4 -0
- package/api/features/UpdateTaskLog/feature.js +11 -0
- package/api/features/UpdateTaskLog/feature.js.map +1 -0
- package/api/features/UpdateTaskLog/index.d.ts +2 -0
- package/api/features/UpdateTaskLog/index.js +2 -0
- package/api/global.d.ts +1 -0
- package/api/global.js +1 -0
- package/api/graphql/BackgroundTasksGraphQLSchema.d.ts +29 -0
- package/api/graphql/BackgroundTasksGraphQLSchema.js +462 -0
- package/api/graphql/BackgroundTasksGraphQLSchema.js.map +1 -0
- package/api/graphql/checkPermissions.d.ts +7 -0
- package/api/graphql/checkPermissions.js +22 -0
- package/api/graphql/checkPermissions.js.map +1 -0
- package/api/graphql/utils.d.ts +9 -0
- package/api/graphql/utils.js +20 -0
- package/api/graphql/utils.js.map +1 -0
- package/api/handler/types.d.ts +21 -0
- package/api/handler/types.js +0 -0
- package/api/index.d.ts +21 -0
- package/api/index.js +20 -0
- package/api/models/BackgroundTaskSettingsModel.d.ts +8 -0
- package/api/models/BackgroundTaskSettingsModel.js +27 -0
- package/api/models/BackgroundTaskSettingsModel.js.map +1 -0
- package/api/permissions.d.ts +12 -0
- package/api/permissions.js +22 -0
- package/api/permissions.js.map +1 -0
- package/api/response/DatabaseResponse.d.ts +12 -0
- package/api/response/DatabaseResponse.js +127 -0
- package/api/response/DatabaseResponse.js.map +1 -0
- package/api/response/Response.d.ts +14 -0
- package/api/response/Response.js +91 -0
- package/api/response/Response.js.map +1 -0
- package/api/response/ResponseAbortedResult.d.ts +9 -0
- package/api/response/ResponseAbortedResult.js +12 -0
- package/api/response/ResponseAbortedResult.js.map +1 -0
- package/api/response/ResponseContinueResult.d.ts +17 -0
- package/api/response/ResponseContinueResult.js +16 -0
- package/api/response/ResponseContinueResult.js.map +1 -0
- package/api/response/ResponseDoneResult.d.ts +11 -0
- package/api/response/ResponseDoneResult.js +14 -0
- package/api/response/ResponseDoneResult.js.map +1 -0
- package/api/response/ResponseErrorResult.d.ts +10 -0
- package/api/response/ResponseErrorResult.js +13 -0
- package/api/response/ResponseErrorResult.js.map +1 -0
- package/api/response/TaskResponse.d.ts +12 -0
- package/api/response/TaskResponse.js +53 -0
- package/api/response/TaskResponse.js.map +1 -0
- package/api/response/abstractions/Response.d.ts +25 -0
- package/api/response/abstractions/Response.js +0 -0
- package/api/response/abstractions/ResponseAbortedResult.d.ts +5 -0
- package/api/response/abstractions/ResponseAbortedResult.js +0 -0
- package/api/response/abstractions/ResponseBaseResult.d.ts +7 -0
- package/api/response/abstractions/ResponseBaseResult.js +0 -0
- package/api/response/abstractions/ResponseContinueResult.d.ts +21 -0
- package/api/response/abstractions/ResponseContinueResult.js +0 -0
- package/api/response/abstractions/ResponseDoneResult.d.ts +13 -0
- package/api/response/abstractions/ResponseDoneResult.js +0 -0
- package/api/response/abstractions/ResponseErrorResult.d.ts +18 -0
- package/api/response/abstractions/ResponseErrorResult.js +0 -0
- package/api/response/abstractions/TaskResponse.d.ts +16 -0
- package/api/response/abstractions/TaskResponse.js +0 -0
- package/api/response/abstractions/index.d.ts +7 -0
- package/api/response/abstractions/index.js +7 -0
- package/api/response/index.d.ts +7 -0
- package/api/response/index.js +7 -0
- package/api/runner/TaskControl.d.ts +48 -0
- package/api/runner/TaskControl.js +186 -0
- package/api/runner/TaskControl.js.map +1 -0
- package/api/runner/TaskEventValidation.d.ts +5 -0
- package/api/runner/TaskEventValidation.js +20 -0
- package/api/runner/TaskEventValidation.js.map +1 -0
- package/api/runner/TaskManager.d.ts +22 -0
- package/api/runner/TaskManager.js +83 -0
- package/api/runner/TaskManager.js.map +1 -0
- package/api/runner/TaskManagerStore.d.ts +57 -0
- package/api/runner/TaskManagerStore.js +127 -0
- package/api/runner/TaskManagerStore.js.map +1 -0
- package/api/runner/TaskRunner.d.ts +25 -0
- package/api/runner/TaskRunner.js +86 -0
- package/api/runner/TaskRunner.js.map +1 -0
- package/api/runner/abstractions/TaskControl.d.ts +10 -0
- package/api/runner/abstractions/TaskControl.js +0 -0
- package/api/runner/abstractions/TaskEventValidation.d.ts +5 -0
- package/api/runner/abstractions/TaskEventValidation.js +0 -0
- package/api/runner/abstractions/TaskManager.d.ts +5 -0
- package/api/runner/abstractions/TaskManager.js +0 -0
- package/api/runner/abstractions/TaskManagerStore.d.ts +92 -0
- package/api/runner/abstractions/TaskManagerStore.js +0 -0
- package/api/runner/abstractions/TaskRunner.d.ts +13 -0
- package/api/runner/abstractions/TaskRunner.js +0 -0
- package/api/runner/abstractions/index.d.ts +5 -0
- package/api/runner/abstractions/index.js +5 -0
- package/api/runner/index.d.ts +1 -0
- package/api/runner/index.js +1 -0
- package/api/tasks/testingRunTask.d.ts +19 -0
- package/api/tasks/testingRunTask.js +25 -0
- package/api/tasks/testingRunTask.js.map +1 -0
- package/api/types.d.ts +120 -0
- package/api/types.js +20 -0
- package/api/types.js.map +1 -0
- package/api/utils/ObjectUpdater.d.ts +8 -0
- package/api/utils/ObjectUpdater.js +33 -0
- package/api/utils/ObjectUpdater.js.map +1 -0
- package/api/utils/getErrorProperties.d.ts +2 -0
- package/api/utils/getErrorProperties.js +9 -0
- package/api/utils/getErrorProperties.js.map +1 -0
- package/api/utils/getObjectProperties.d.ts +8 -0
- package/api/utils/getObjectProperties.js +11 -0
- package/api/utils/getObjectProperties.js.map +1 -0
- package/api/utils/index.d.ts +3 -0
- package/api/utils/index.js +3 -0
- package/api/utils/normalizeSelfCleanup.d.ts +2 -0
- package/api/utils/normalizeSelfCleanup.js +16 -0
- package/api/utils/normalizeSelfCleanup.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +32 -13
- package/testing/index.d.ts +3 -0
- package/testing/index.js +2 -0
- package/testing/mockTaskTriggerTransportPlugin.d.ts +2 -0
- package/testing/mockTaskTriggerTransportPlugin.js +18 -0
- package/testing/mockTaskTriggerTransportPlugin.js.map +1 -0
- package/testing/runner.d.ts +19 -0
- package/testing/runner.js +44 -0
- package/testing/runner.js.map +1 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { computed, makeAutoObservable, runInAction } from "mobx";
|
|
2
|
+
import { BackgroundTaskSettingsPresenter } from "./abstractions.js";
|
|
3
|
+
import { GetBackgroundTaskSettingsUseCase } from "../../features/getBackgroundTaskSettings/abstractions.js";
|
|
4
|
+
import { UpdateBackgroundTaskSettingsUseCase } from "../../features/updateBackgroundTaskSettings/abstractions.js";
|
|
5
|
+
import { FormModelFactory } from "@webiny/app-admin/features/formModel/abstractions.js";
|
|
6
|
+
import { BACKGROUND_TASK_MAX_RETENTION_DAYS } from "../../../api/domain/constants.js";
|
|
7
|
+
class BackgroundTaskSettingsPresenterImpl {
|
|
8
|
+
get vm() {
|
|
9
|
+
return {
|
|
10
|
+
loading: this._loading,
|
|
11
|
+
saving: this._saving,
|
|
12
|
+
form: this._form.vm
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
constructor(formModelFactory, getSettingsUseCase, updateSettingsUseCase){
|
|
16
|
+
this.formModelFactory = formModelFactory;
|
|
17
|
+
this.getSettingsUseCase = getSettingsUseCase;
|
|
18
|
+
this.updateSettingsUseCase = updateSettingsUseCase;
|
|
19
|
+
this._loading = false;
|
|
20
|
+
this._saving = false;
|
|
21
|
+
this._form = this.buildForm();
|
|
22
|
+
makeAutoObservable(this, {
|
|
23
|
+
vm: computed
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
buildForm() {
|
|
27
|
+
return this.formModelFactory.create({
|
|
28
|
+
fields: (fields)=>({
|
|
29
|
+
retentionDays: fields.number().label("Retention (days)").placeholder("90").description(`How long to keep completed task runs. 0 = never delete. Max ${BACKGROUND_TASK_MAX_RETENTION_DAYS} days. Changing this value only affects future task executions; existing records are not retroactively deleted.`)
|
|
30
|
+
}),
|
|
31
|
+
layout: (layout)=>[
|
|
32
|
+
layout.row("retentionDays")
|
|
33
|
+
]
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async save() {
|
|
37
|
+
const data = await this._form.submit();
|
|
38
|
+
if (false === data) return false;
|
|
39
|
+
runInAction(()=>{
|
|
40
|
+
this._saving = true;
|
|
41
|
+
});
|
|
42
|
+
try {
|
|
43
|
+
const settings = await this.updateSettingsUseCase.execute({
|
|
44
|
+
retentionDays: null != data.retentionDays ? Number(data.retentionDays) : void 0
|
|
45
|
+
});
|
|
46
|
+
runInAction(()=>{
|
|
47
|
+
this._form.setData({
|
|
48
|
+
retentionDays: settings.retentionDays || ""
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
} finally{
|
|
52
|
+
runInAction(()=>{
|
|
53
|
+
this._saving = false;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
async init() {
|
|
59
|
+
this._loading = true;
|
|
60
|
+
try {
|
|
61
|
+
const settings = await this.getSettingsUseCase.execute();
|
|
62
|
+
runInAction(()=>{
|
|
63
|
+
this._form = this.buildForm();
|
|
64
|
+
this._form.setData({
|
|
65
|
+
retentionDays: settings.retentionDays || ""
|
|
66
|
+
});
|
|
67
|
+
this._loading = false;
|
|
68
|
+
});
|
|
69
|
+
} catch {
|
|
70
|
+
runInAction(()=>{
|
|
71
|
+
this._loading = false;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const BackgroundTaskSettingsPresenter_BackgroundTaskSettingsPresenter = BackgroundTaskSettingsPresenter.createImplementation({
|
|
77
|
+
implementation: BackgroundTaskSettingsPresenterImpl,
|
|
78
|
+
dependencies: [
|
|
79
|
+
FormModelFactory,
|
|
80
|
+
GetBackgroundTaskSettingsUseCase,
|
|
81
|
+
UpdateBackgroundTaskSettingsUseCase
|
|
82
|
+
]
|
|
83
|
+
});
|
|
84
|
+
export { BackgroundTaskSettingsPresenter_BackgroundTaskSettingsPresenter as BackgroundTaskSettingsPresenter };
|
|
85
|
+
|
|
86
|
+
//# sourceMappingURL=BackgroundTaskSettingsPresenter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.js","sources":["../../../../src/admin/presentation/BackgroundTaskSettings/BackgroundTaskSettingsPresenter.ts"],"sourcesContent":["import { computed, makeAutoObservable, runInAction } from \"mobx\";\nimport {\n BackgroundTaskSettingsPresenter as Abstraction,\n type IBackgroundTaskSettingsPresenter,\n type IBackgroundTaskSettingsViewModel\n} from \"./abstractions.js\";\nimport { GetBackgroundTaskSettingsUseCase } from \"~/admin/features/getBackgroundTaskSettings/abstractions.js\";\nimport { UpdateBackgroundTaskSettingsUseCase } from \"~/admin/features/updateBackgroundTaskSettings/abstractions.js\";\nimport {\n FormModelFactory,\n type IFormModel\n} from \"@webiny/app-admin/features/formModel/abstractions.js\";\nimport { BACKGROUND_TASK_MAX_RETENTION_DAYS } from \"~/api/domain/constants.js\";\n\nclass BackgroundTaskSettingsPresenterImpl implements IBackgroundTaskSettingsPresenter {\n private _loading = false;\n private _saving = false;\n private _form: IFormModel;\n\n public get vm(): IBackgroundTaskSettingsViewModel {\n return {\n loading: this._loading,\n saving: this._saving,\n form: this._form.vm\n };\n }\n\n public constructor(\n private readonly formModelFactory: FormModelFactory.Interface,\n private readonly getSettingsUseCase: GetBackgroundTaskSettingsUseCase.Interface,\n private readonly updateSettingsUseCase: UpdateBackgroundTaskSettingsUseCase.Interface\n ) {\n this._form = this.buildForm();\n\n makeAutoObservable(this, { vm: computed });\n }\n\n private buildForm(): IFormModel {\n return this.formModelFactory.create({\n fields: fields => ({\n retentionDays: fields\n .number()\n .label(\"Retention (days)\")\n .placeholder(\"90\")\n .description(\n `How long to keep completed task runs. 0 = never delete. Max ${BACKGROUND_TASK_MAX_RETENTION_DAYS} days. Changing this value only affects future task executions; existing records are not retroactively deleted.`\n )\n }),\n layout: layout => [layout.row(\"retentionDays\")]\n });\n }\n\n public async save(): Promise<boolean> {\n const data = await this._form.submit<Record<string, string>>();\n if (data === false) {\n return false;\n }\n\n runInAction(() => {\n this._saving = true;\n });\n\n try {\n const settings = await this.updateSettingsUseCase.execute({\n retentionDays: data.retentionDays != null ? Number(data.retentionDays) : undefined\n });\n\n runInAction(() => {\n this._form.setData({\n retentionDays: settings.retentionDays || \"\"\n });\n });\n } finally {\n runInAction(() => {\n this._saving = false;\n });\n }\n return true;\n }\n\n public async init(): Promise<void> {\n this._loading = true;\n\n try {\n const settings = await this.getSettingsUseCase.execute();\n\n runInAction(() => {\n this._form = this.buildForm();\n this._form.setData({\n retentionDays: settings.retentionDays || \"\"\n });\n this._loading = false;\n });\n } catch {\n runInAction(() => {\n this._loading = false;\n });\n }\n }\n}\n\nexport const BackgroundTaskSettingsPresenter = Abstraction.createImplementation({\n implementation: BackgroundTaskSettingsPresenterImpl,\n dependencies: [\n FormModelFactory,\n GetBackgroundTaskSettingsUseCase,\n UpdateBackgroundTaskSettingsUseCase\n ]\n});\n"],"names":["BackgroundTaskSettingsPresenterImpl","formModelFactory","getSettingsUseCase","updateSettingsUseCase","makeAutoObservable","computed","fields","BACKGROUND_TASK_MAX_RETENTION_DAYS","layout","data","runInAction","settings","Number","undefined","BackgroundTaskSettingsPresenter","Abstraction","FormModelFactory","GetBackgroundTaskSettingsUseCase","UpdateBackgroundTaskSettingsUseCase"],"mappings":";;;;;;AAcA,MAAMA;IAKF,IAAW,KAAuC;QAC9C,OAAO;YACH,SAAS,IAAI,CAAC,QAAQ;YACtB,QAAQ,IAAI,CAAC,OAAO;YACpB,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE;QACvB;IACJ;IAEA,YACqBC,gBAA4C,EAC5CC,kBAA8D,EAC9DC,qBAAoE,CACvF;aAHmBF,gBAAgB,GAAhBA;aACAC,kBAAkB,GAAlBA;aACAC,qBAAqB,GAArBA;aAfb,QAAQ,GAAG;aACX,OAAO,GAAG;QAgBd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;QAE3BC,mBAAmB,IAAI,EAAE;YAAE,IAAIC;QAAS;IAC5C;IAEQ,YAAwB;QAC5B,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAChC,QAAQC,CAAAA,SAAW;oBACf,eAAeA,OACV,MAAM,GACN,KAAK,CAAC,oBACN,WAAW,CAAC,MACZ,WAAW,CACR,CAAC,4DAA4D,EAAEC,mCAAmC,+GAA+G,CAAC;gBAE9N;YACA,QAAQC,CAAAA,SAAU;oBAACA,OAAO,GAAG,CAAC;iBAAiB;QACnD;IACJ;IAEA,MAAa,OAAyB;QAClC,MAAMC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM;QACpC,IAAIA,AAAS,UAATA,MACA,OAAO;QAGXC,YAAY;YACR,IAAI,CAAC,OAAO,GAAG;QACnB;QAEA,IAAI;YACA,MAAMC,WAAW,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;gBACtD,eAAeF,AAAsB,QAAtBA,KAAK,aAAa,GAAWG,OAAOH,KAAK,aAAa,IAAII;YAC7E;YAEAH,YAAY;gBACR,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACf,eAAeC,SAAS,aAAa,IAAI;gBAC7C;YACJ;QACJ,SAAU;YACND,YAAY;gBACR,IAAI,CAAC,OAAO,GAAG;YACnB;QACJ;QACA,OAAO;IACX;IAEA,MAAa,OAAsB;QAC/B,IAAI,CAAC,QAAQ,GAAG;QAEhB,IAAI;YACA,MAAMC,WAAW,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO;YAEtDD,YAAY;gBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;gBAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACf,eAAeC,SAAS,aAAa,IAAI;gBAC7C;gBACA,IAAI,CAAC,QAAQ,GAAG;YACpB;QACJ,EAAE,OAAM;YACJD,YAAY;gBACR,IAAI,CAAC,QAAQ,GAAG;YACpB;QACJ;IACJ;AACJ;AAEO,MAAMI,kEAAkCC,gCAAAA,oBAAgC,CAAC;IAC5E,gBAAgBf;IAChB,cAAc;QACVgB;QACAC;QACAC;KACH;AACL"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { IFormVM } from "@webiny/app-admin/features/formModel/abstractions.js";
|
|
2
|
+
export interface IBackgroundTaskSettingsViewModel {
|
|
3
|
+
loading: boolean;
|
|
4
|
+
saving: boolean;
|
|
5
|
+
form: IFormVM;
|
|
6
|
+
}
|
|
7
|
+
export interface IBackgroundTaskSettingsPresenter {
|
|
8
|
+
vm: IBackgroundTaskSettingsViewModel;
|
|
9
|
+
save(): Promise<boolean>;
|
|
10
|
+
init(): void;
|
|
11
|
+
}
|
|
12
|
+
export declare const BackgroundTaskSettingsPresenter: import("@webiny/di").Abstraction<IBackgroundTaskSettingsPresenter>;
|
|
13
|
+
export declare namespace BackgroundTaskSettingsPresenter {
|
|
14
|
+
type Interface = IBackgroundTaskSettingsPresenter;
|
|
15
|
+
type ViewModel = IBackgroundTaskSettingsViewModel;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/BackgroundTaskSettings/abstractions.js","sources":["../../../../src/admin/presentation/BackgroundTaskSettings/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { IFormVM } from \"@webiny/app-admin/features/formModel/abstractions.js\";\n\nexport interface IBackgroundTaskSettingsViewModel {\n loading: boolean;\n saving: boolean;\n form: IFormVM;\n}\n\nexport interface IBackgroundTaskSettingsPresenter {\n vm: IBackgroundTaskSettingsViewModel;\n save(): Promise<boolean>;\n init(): void;\n}\n\nexport const BackgroundTaskSettingsPresenter = createAbstraction<IBackgroundTaskSettingsPresenter>(\n \"BackgroundTaskSettingsPresenter\"\n);\n\nexport namespace BackgroundTaskSettingsPresenter {\n export type Interface = IBackgroundTaskSettingsPresenter;\n export type ViewModel = IBackgroundTaskSettingsViewModel;\n}\n"],"names":["BackgroundTaskSettingsPresenter","createAbstraction"],"mappings":";AAeO,MAAMA,kCAAkCC,kBAC3C"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import react, { useEffect, useMemo } from "react";
|
|
2
|
+
import { observer } from "mobx-react-lite";
|
|
3
|
+
import { DiContainerProvider, useContainer, useFeature } from "@webiny/app";
|
|
4
|
+
import { CenteredView, FormErrors, SimpleForm, SimpleFormContent, SimpleFormFooter, SimpleFormHeader } from "@webiny/app-admin";
|
|
5
|
+
import { Button, OverlayLoader, useToast } from "@webiny/admin-ui";
|
|
6
|
+
import { FormView } from "@webiny/app-admin/features/formModel/FormView.js";
|
|
7
|
+
import { BackgroundTaskSettingsPresenterFeature } from "../feature.js";
|
|
8
|
+
import { GetBackgroundTaskSettingsFeature } from "../../../features/getBackgroundTaskSettings/feature.js";
|
|
9
|
+
import { UpdateBackgroundTaskSettingsFeature } from "../../../features/updateBackgroundTaskSettings/feature.js";
|
|
10
|
+
const BackgroundTaskSettingsView_BackgroundTaskSettingsViewInner = observer(function() {
|
|
11
|
+
const { presenter } = useFeature(BackgroundTaskSettingsPresenterFeature);
|
|
12
|
+
const toast = useToast();
|
|
13
|
+
useEffect(()=>{
|
|
14
|
+
presenter.init();
|
|
15
|
+
}, [
|
|
16
|
+
presenter
|
|
17
|
+
]);
|
|
18
|
+
const { vm } = presenter;
|
|
19
|
+
const handleSave = async ()=>{
|
|
20
|
+
const success = await presenter.save();
|
|
21
|
+
if (success) toast.showSuccessToast({
|
|
22
|
+
title: "Background task settings saved successfully!"
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
return /*#__PURE__*/ react.createElement(CenteredView, null, /*#__PURE__*/ react.createElement(FormErrors, {
|
|
26
|
+
form: vm.form
|
|
27
|
+
}), /*#__PURE__*/ react.createElement(SimpleForm, null, vm.loading ? /*#__PURE__*/ react.createElement(OverlayLoader, {
|
|
28
|
+
text: "Loading settings..."
|
|
29
|
+
}) : null, vm.saving ? /*#__PURE__*/ react.createElement(OverlayLoader, {
|
|
30
|
+
text: "Saving settings..."
|
|
31
|
+
}) : null, /*#__PURE__*/ react.createElement(SimpleFormHeader, {
|
|
32
|
+
title: "Background Task Settings"
|
|
33
|
+
}), /*#__PURE__*/ react.createElement(SimpleFormContent, null, /*#__PURE__*/ react.createElement(FormView, {
|
|
34
|
+
name: "BackgroundTaskSettings",
|
|
35
|
+
form: vm.form
|
|
36
|
+
})), /*#__PURE__*/ react.createElement(SimpleFormFooter, null, /*#__PURE__*/ react.createElement(Button, {
|
|
37
|
+
text: "Save settings",
|
|
38
|
+
onClick: handleSave
|
|
39
|
+
}))));
|
|
40
|
+
});
|
|
41
|
+
const BackgroundTaskSettingsView = ()=>{
|
|
42
|
+
const container = useContainer();
|
|
43
|
+
const scopedContainer = useMemo(()=>{
|
|
44
|
+
const child = container.createChildContainer();
|
|
45
|
+
GetBackgroundTaskSettingsFeature.register(child);
|
|
46
|
+
UpdateBackgroundTaskSettingsFeature.register(child);
|
|
47
|
+
BackgroundTaskSettingsPresenterFeature.register(child);
|
|
48
|
+
return child;
|
|
49
|
+
}, []);
|
|
50
|
+
return /*#__PURE__*/ react.createElement(DiContainerProvider, {
|
|
51
|
+
container: scopedContainer
|
|
52
|
+
}, /*#__PURE__*/ react.createElement(BackgroundTaskSettingsView_BackgroundTaskSettingsViewInner, null));
|
|
53
|
+
};
|
|
54
|
+
export { BackgroundTaskSettingsView };
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=BackgroundTaskSettingsView.js.map
|
package/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.js","sources":["../../../../../src/admin/presentation/BackgroundTaskSettings/components/BackgroundTaskSettingsView.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { CenteredView, FormErrors } from \"@webiny/app-admin\";\nimport { Button, OverlayLoader } from \"@webiny/admin-ui\";\nimport { FormView } from \"@webiny/app-admin/features/formModel/FormView.js\";\nimport { SimpleFormHeader } from \"@webiny/app-admin\";\nimport { SimpleFormFooter } from \"@webiny/app-admin\";\nimport { SimpleFormContent } from \"@webiny/app-admin\";\nimport { SimpleForm } from \"@webiny/app-admin\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { BackgroundTaskSettingsPresenterFeature } from \"../feature.js\";\nimport { GetBackgroundTaskSettingsFeature } from \"~/admin/features/getBackgroundTaskSettings/feature.js\";\nimport { UpdateBackgroundTaskSettingsFeature } from \"~/admin/features/updateBackgroundTaskSettings/feature.js\";\n\nconst BackgroundTaskSettingsViewInner = observer(function BackgroundTaskSettingsViewInner() {\n const { presenter } = useFeature(BackgroundTaskSettingsPresenterFeature);\n const toast = useToast();\n\n useEffect(() => {\n void presenter.init();\n }, [presenter]);\n\n const { vm } = presenter;\n\n const handleSave = async () => {\n const success = await presenter.save();\n if (success) {\n toast.showSuccessToast({\n title: \"Background task settings saved successfully!\"\n });\n }\n };\n\n return (\n <CenteredView>\n <FormErrors form={vm.form} />\n <SimpleForm>\n {vm.loading ? <OverlayLoader text={\"Loading settings...\"} /> : null}\n {vm.saving ? <OverlayLoader text={\"Saving settings...\"} /> : null}\n <SimpleFormHeader title=\"Background Task Settings\" />\n <SimpleFormContent>\n <FormView name=\"BackgroundTaskSettings\" form={vm.form} />\n </SimpleFormContent>\n <SimpleFormFooter>\n <Button text={\"Save settings\"} onClick={handleSave} />\n </SimpleFormFooter>\n </SimpleForm>\n </CenteredView>\n );\n});\n\nexport const BackgroundTaskSettingsView = () => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n GetBackgroundTaskSettingsFeature.register(child);\n UpdateBackgroundTaskSettingsFeature.register(child);\n BackgroundTaskSettingsPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <BackgroundTaskSettingsViewInner />\n </DiContainerProvider>\n );\n};\n"],"names":["BackgroundTaskSettingsViewInner","observer","presenter","useFeature","BackgroundTaskSettingsPresenterFeature","toast","useToast","useEffect","vm","handleSave","success","CenteredView","FormErrors","SimpleForm","OverlayLoader","SimpleFormHeader","SimpleFormContent","FormView","SimpleFormFooter","Button","BackgroundTaskSettingsView","container","useContainer","scopedContainer","useMemo","child","GetBackgroundTaskSettingsFeature","UpdateBackgroundTaskSettingsFeature","DiContainerProvider"],"mappings":";;;;;;;;;AAeA,MAAMA,6DAAkCC,SAAS;IAC7C,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IACjC,MAAMC,QAAQC;IAEdC,UAAU;QACDL,UAAU,IAAI;IACvB,GAAG;QAACA;KAAU;IAEd,MAAM,EAAEM,EAAE,EAAE,GAAGN;IAEf,MAAMO,aAAa;QACf,MAAMC,UAAU,MAAMR,UAAU,IAAI;QACpC,IAAIQ,SACAL,MAAM,gBAAgB,CAAC;YACnB,OAAO;QACX;IAER;IAEA,OAAO,WAAP,GACI,oBAACM,cAAYA,MAAAA,WAAAA,GACT,oBAACC,YAAUA;QAAC,MAAMJ,GAAG,IAAI;sBACzB,oBAACK,YAAUA,MACNL,GAAG,OAAO,GAAG,WAAH,GAAG,oBAACM,eAAaA;QAAC,MAAM;SAA4B,MAC9DN,GAAG,MAAM,GAAG,WAAH,GAAG,oBAACM,eAAaA;QAAC,MAAM;SAA2B,oBAC7D,oBAACC,kBAAgBA;QAAC,OAAM;sBACxB,oBAACC,mBAAiBA,MAAAA,WAAAA,GACd,oBAACC,UAAQA;QAAC,MAAK;QAAyB,MAAMT,GAAG,IAAI;uBAEzD,oBAACU,kBAAgBA,MAAAA,WAAAA,GACb,oBAACC,QAAMA;QAAC,MAAM;QAAiB,SAASV;;AAK5D;AAEO,MAAMW,6BAA6B;IACtC,MAAMC,YAAYC;IAElB,MAAMC,kBAAkBC,QAAQ;QAC5B,MAAMC,QAAQJ,UAAU,oBAAoB;QAC5CK,iCAAiC,QAAQ,CAACD;QAC1CE,oCAAoC,QAAQ,CAACF;QAC7CrB,uCAAuC,QAAQ,CAACqB;QAChD,OAAOA;IACX,GAAG,EAAE;IAEL,OAAO,WAAP,GACI,oBAACG,qBAAmBA;QAAC,WAAWL;qBAC5B,oBAACvB,4DAA+BA;AAG5C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { BackgroundTaskSettingsPresenter } from "./abstractions.js";
|
|
3
|
+
import { BackgroundTaskSettingsPresenter as external_BackgroundTaskSettingsPresenter_js_BackgroundTaskSettingsPresenter } from "./BackgroundTaskSettingsPresenter.js";
|
|
4
|
+
const BackgroundTaskSettingsPresenterFeature = createFeature({
|
|
5
|
+
name: "BackgroundTasks/BackgroundTaskSettingsPresenter",
|
|
6
|
+
register (container) {
|
|
7
|
+
container.register(external_BackgroundTaskSettingsPresenter_js_BackgroundTaskSettingsPresenter).inSingletonScope();
|
|
8
|
+
},
|
|
9
|
+
resolve (container) {
|
|
10
|
+
return {
|
|
11
|
+
presenter: container.resolve(BackgroundTaskSettingsPresenter)
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
export { BackgroundTaskSettingsPresenterFeature };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/BackgroundTaskSettings/feature.js","sources":["../../../../src/admin/presentation/BackgroundTaskSettings/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { BackgroundTaskSettingsPresenter as PresenterAbstraction } from \"./abstractions.js\";\nimport { BackgroundTaskSettingsPresenter } from \"./BackgroundTaskSettingsPresenter.js\";\n\nexport const BackgroundTaskSettingsPresenterFeature = createFeature({\n name: \"BackgroundTasks/BackgroundTaskSettingsPresenter\",\n register(container) {\n container.register(BackgroundTaskSettingsPresenter).inSingletonScope();\n },\n resolve(container) {\n return {\n presenter: container.resolve(PresenterAbstraction)\n };\n }\n});\n"],"names":["BackgroundTaskSettingsPresenterFeature","createFeature","container","BackgroundTaskSettingsPresenter","PresenterAbstraction"],"mappings":";;;AAIO,MAAMA,yCAAyCC,cAAc;IAChE,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,6EAAiC,gBAAgB;IACxE;IACA,SAAQD,SAAS;QACb,OAAO;YACH,WAAWA,UAAU,OAAO,CAACE;QACjC;IACJ;AACJ"}
|
|
@@ -4,6 +4,7 @@ import { DiContainerProvider, useContainer, useFeature } from "@webiny/app";
|
|
|
4
4
|
import { DataTable, Heading, Separator, Text } from "@webiny/admin-ui";
|
|
5
5
|
import { TaskDefinitionsPresenterFeature } from "../feature.js";
|
|
6
6
|
import { ListDefinitionsFeature } from "../../../features/listDefinitions/feature.js";
|
|
7
|
+
import { TaskExecutionsButton } from "./TaskExecutionsButton.js";
|
|
7
8
|
const TaskDefinitionsView_TaskDefinitionsViewInner = observer(function() {
|
|
8
9
|
const { presenter } = useFeature(TaskDefinitionsPresenterFeature);
|
|
9
10
|
useEffect(()=>{
|
|
@@ -45,7 +46,7 @@ const TaskDefinitionsView_TaskDefinitionsViewInner = observer(function() {
|
|
|
45
46
|
className: "flex items-center justify-between py-sm px-md"
|
|
46
47
|
}, /*#__PURE__*/ react.createElement(Heading, {
|
|
47
48
|
level: 5
|
|
48
|
-
}, "Task Definitions")), /*#__PURE__*/ react.createElement(Separator, null), /*#__PURE__*/ react.createElement("div", {
|
|
49
|
+
}, "Task Definitions"), /*#__PURE__*/ react.createElement(TaskExecutionsButton, null)), /*#__PURE__*/ react.createElement(Separator, null), /*#__PURE__*/ react.createElement("div", {
|
|
49
50
|
className: "flex-1 overflow-auto"
|
|
50
51
|
}, vm.loading || 0 !== vm.definitions.length ? /*#__PURE__*/ react.createElement(DataTable, {
|
|
51
52
|
columns: columns,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js","sources":["../../../../../src/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { DataTable, Heading, Separator, Text } from \"@webiny/admin-ui\";\nimport { TaskDefinitionsPresenterFeature } from \"../feature.js\";\nimport { ListDefinitionsFeature } from \"~/admin/features/listDefinitions/feature.js\";\nimport type { TaskDefinition } from \"~/admin/shared/types.js\";\n\nconst TaskDefinitionsViewInner = observer(function TaskDefinitionsViewInner() {\n const { presenter } = useFeature(TaskDefinitionsPresenterFeature);\n\n useEffect(() => {\n presenter.init();\n }, [presenter]);\n\n const { vm } = presenter;\n\n const columns = useMemo(\n () => ({\n title: {\n header: \"Title\",\n cell: (row: TaskDefinition) => <Text size=\"sm\">{row.title || row.id}</Text>,\n enableSorting: false,\n size: 250\n },\n id: {\n header: \"ID\",\n cell: (row: TaskDefinition) => (\n <Text size=\"sm\" className=\"text-neutral-strong font-mono\">\n {row.id}\n </Text>\n ),\n enableSorting: false,\n size: 250\n },\n description: {\n header: \"Description\",\n cell: (row: TaskDefinition) => (\n <Text size=\"sm\" className=\"text-neutral-strong\">\n {row.description || \"—\"}\n </Text>\n ),\n enableSorting: false\n }\n }),\n []\n );\n\n return (\n <div className=\"flex flex-col h-main-content\">\n <div className=\"flex items-center justify-between py-sm px-md\">\n <Heading level={5}>Task Definitions</Heading>\n </div>\n <Separator />\n <div className=\"flex-1 overflow-auto\">\n {!vm.loading && vm.definitions.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center h-full gap-md\">\n <Text className=\"text-neutral-strong\">No task definitions found.</Text>\n </div>\n ) : (\n <DataTable<TaskDefinition>\n columns={columns}\n data={vm.definitions}\n loading={vm.loading}\n stickyHeader\n />\n )}\n </div>\n </div>\n );\n});\n\nexport const TaskDefinitionsView = () => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n ListDefinitionsFeature.register(child);\n TaskDefinitionsPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <TaskDefinitionsViewInner />\n </DiContainerProvider>\n );\n};\n"],"names":["TaskDefinitionsViewInner","observer","presenter","useFeature","TaskDefinitionsPresenterFeature","useEffect","vm","columns","useMemo","row","Text","Heading","Separator","DataTable","TaskDefinitionsView","container","useContainer","scopedContainer","child","ListDefinitionsFeature","DiContainerProvider"],"mappings":"
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskDefinitions/components/TaskDefinitionsView.js","sources":["../../../../../src/admin/presentation/TaskDefinitions/components/TaskDefinitionsView.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { DataTable, Heading, Separator, Text } from \"@webiny/admin-ui\";\nimport { TaskDefinitionsPresenterFeature } from \"../feature.js\";\nimport { ListDefinitionsFeature } from \"~/admin/features/listDefinitions/feature.js\";\nimport type { TaskDefinition } from \"~/admin/shared/types.js\";\nimport { TaskExecutionsButton } from \"~/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.js\";\n\nconst TaskDefinitionsViewInner = observer(function TaskDefinitionsViewInner() {\n const { presenter } = useFeature(TaskDefinitionsPresenterFeature);\n\n useEffect(() => {\n presenter.init();\n }, [presenter]);\n\n const { vm } = presenter;\n\n const columns = useMemo(\n () => ({\n title: {\n header: \"Title\",\n cell: (row: TaskDefinition) => <Text size=\"sm\">{row.title || row.id}</Text>,\n enableSorting: false,\n size: 250\n },\n id: {\n header: \"ID\",\n cell: (row: TaskDefinition) => (\n <Text size=\"sm\" className=\"text-neutral-strong font-mono\">\n {row.id}\n </Text>\n ),\n enableSorting: false,\n size: 250\n },\n description: {\n header: \"Description\",\n cell: (row: TaskDefinition) => (\n <Text size=\"sm\" className=\"text-neutral-strong\">\n {row.description || \"—\"}\n </Text>\n ),\n enableSorting: false\n }\n }),\n []\n );\n\n return (\n <div className=\"flex flex-col h-main-content\">\n <div className=\"flex items-center justify-between py-sm px-md\">\n <Heading level={5}>Task Definitions</Heading>\n <TaskExecutionsButton />\n </div>\n <Separator />\n <div className=\"flex-1 overflow-auto\">\n {!vm.loading && vm.definitions.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center h-full gap-md\">\n <Text className=\"text-neutral-strong\">No task definitions found.</Text>\n </div>\n ) : (\n <DataTable<TaskDefinition>\n columns={columns}\n data={vm.definitions}\n loading={vm.loading}\n stickyHeader\n />\n )}\n </div>\n </div>\n );\n});\n\nexport const TaskDefinitionsView = () => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n ListDefinitionsFeature.register(child);\n TaskDefinitionsPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <TaskDefinitionsViewInner />\n </DiContainerProvider>\n );\n};\n"],"names":["TaskDefinitionsViewInner","observer","presenter","useFeature","TaskDefinitionsPresenterFeature","useEffect","vm","columns","useMemo","row","Text","Heading","TaskExecutionsButton","Separator","DataTable","TaskDefinitionsView","container","useContainer","scopedContainer","child","ListDefinitionsFeature","DiContainerProvider"],"mappings":";;;;;;;AASA,MAAMA,+CAA2BC,SAAS;IACtC,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IAEjCC,UAAU;QACNH,UAAU,IAAI;IAClB,GAAG;QAACA;KAAU;IAEd,MAAM,EAAEI,EAAE,EAAE,GAAGJ;IAEf,MAAMK,UAAUC,QACZ,IAAO;YACH,OAAO;gBACH,QAAQ;gBACR,MAAM,CAACC,MAAAA,WAAAA,GAAwB,oBAACC,MAAIA;wBAAC,MAAK;uBAAMD,IAAI,KAAK,IAAIA,IAAI,EAAE;gBACnE,eAAe;gBACf,MAAM;YACV;YACA,IAAI;gBACA,QAAQ;gBACR,MAAM,CAACA,MAAAA,WAAAA,GACH,oBAACC,MAAIA;wBAAC,MAAK;wBAAK,WAAU;uBACrBD,IAAI,EAAE;gBAGf,eAAe;gBACf,MAAM;YACV;YACA,aAAa;gBACT,QAAQ;gBACR,MAAM,CAACA,MAAAA,WAAAA,GACH,oBAACC,MAAIA;wBAAC,MAAK;wBAAK,WAAU;uBACrBD,IAAI,WAAW,IAAI;gBAG5B,eAAe;YACnB;QACJ,IACA,EAAE;IAGN,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAAC;QAAI,WAAU;qBACX,oBAACE,SAAOA;QAAC,OAAO;OAAG,mCACnB,oBAACC,sBAAoBA,QAAAA,WAAAA,GAEzB,oBAACC,WAASA,OAAAA,WAAAA,GACV,oBAAC;QAAI,WAAU;OACV,AAACP,GAAG,OAAO,IAAIA,AAA0B,MAA1BA,GAAG,WAAW,CAAC,MAAM,GAES,cAG1C,oBAACQ,WAASA;QACN,SAASP;QACT,MAAMD,GAAG,WAAW;QACpB,SAASA,GAAG,OAAO;QACnB;SATsC,WAAJ,GACtC,oBAAC;QAAI,WAAU;qBACX,oBAACI,MAAIA;QAAC,WAAU;OAAsB;AAa9D;AAEO,MAAMK,sBAAsB;IAC/B,MAAMC,YAAYC;IAElB,MAAMC,kBAAkBV,QAAQ;QAC5B,MAAMW,QAAQH,UAAU,oBAAoB;QAC5CI,uBAAuB,QAAQ,CAACD;QAChCf,gCAAgC,QAAQ,CAACe;QACzC,OAAOA;IACX,GAAG,EAAE;IAEL,OAAO,WAAP,GACI,oBAACE,qBAAmBA;QAAC,WAAWH;qBAC5B,oBAAClB,8CAAwBA;AAGrC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { useRouter } from "@webiny/app-admin";
|
|
3
|
+
import { Button } from "@webiny/admin-ui";
|
|
4
|
+
import { ReactComponent } from "@webiny/icons/task.svg";
|
|
5
|
+
import { Routes } from "../../../routes.js";
|
|
6
|
+
const TaskExecutionsButton = ()=>{
|
|
7
|
+
const { goToRoute } = useRouter();
|
|
8
|
+
return /*#__PURE__*/ react.createElement(Button, {
|
|
9
|
+
variant: "secondary",
|
|
10
|
+
onClick: ()=>goToRoute(Routes.Executions),
|
|
11
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null)
|
|
12
|
+
}, "Task Executions");
|
|
13
|
+
};
|
|
14
|
+
export { TaskExecutionsButton };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=TaskExecutionsButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskDefinitions/components/TaskExecutionsButton.js","sources":["../../../../../src/admin/presentation/TaskDefinitions/components/TaskExecutionsButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { ReactComponent as TaskIcon } from \"@webiny/icons/task.svg\";\nimport { Routes } from \"~/admin/routes.js\";\n\nexport const TaskExecutionsButton = () => {\n const { goToRoute } = useRouter();\n\n return (\n <Button\n variant=\"secondary\"\n onClick={() => goToRoute(Routes.Executions)}\n icon={<TaskIcon />}\n >\n Task Executions\n </Button>\n );\n};\n"],"names":["TaskExecutionsButton","goToRoute","useRouter","Button","Routes","TaskIcon"],"mappings":";;;;;AAMO,MAAMA,uBAAuB;IAChC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAEtB,OAAO,WAAP,GACI,oBAACC,QAAMA;QACH,SAAQ;QACR,SAAS,IAAMF,UAAUG,OAAO,UAAU;QAC1C,oBAAM,oBAACC,gBAAQA;OAClB;AAIT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/TaskDetail/TaskDetailPresenter.js","sources":["../../../../src/admin/presentation/TaskDetail/TaskDetailPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type { Task, TaskLog } from \"~/admin/shared/types.js\";\nimport {\n TaskDetailPresenter as Abstraction,\n type ITaskDetailPresenter,\n type ITaskDetailViewModel\n} from \"./abstractions.js\";\nimport { GetTaskUseCase } from \"~/admin/features/getTask/abstractions.js\";\nimport { ListLogsUseCase } from \"~/admin/features/listLogs/abstractions.js\";\n\nclass TaskDetailPresenterImpl implements ITaskDetailPresenter {\n private _task: Task | null = null;\n private _loading = false;\n private _logs: TaskLog[] = [];\n private _logsLoading = false;\n private _logsCursor: string | null = null;\n private _logsHasMore = false;\n private _logsTotalCount = 0;\n private _taskId: string | null = null;\n\n constructor(\n private readonly getTaskUseCase: GetTaskUseCase.Interface,\n private readonly listLogsUseCase: ListLogsUseCase.Interface\n ) {\n makeAutoObservable(this, { vm: computed });\n }\n\n get vm(): ITaskDetailViewModel {\n return {\n task: this._task,\n loading: this._loading,\n logs: {\n rows: this._logs,\n pagination: {\n totalCount: this._logsTotalCount,\n loading: this._logsLoading,\n hasMore: this._logsHasMore\n }\n }\n };\n }\n\n async init(taskId: string): Promise<void> {\n this._taskId = taskId;\n this._loading = true;\n this._logs = [];\n this._logsCursor = null;\n this._logsHasMore = false;\n this._logsTotalCount = 0;\n\n const task = await this.getTaskUseCase.execute(taskId);\n\n runInAction(() => {\n this._task = task;\n this._loading = false;\n });\n\n await this.fetchLogs();\n }\n\n async loadMore(): Promise<void> {\n if (!this._logsHasMore || this._logsLoading) {\n return;\n }\n\n await this.fetchLogs(this._logsCursor);\n }\n\n private async fetchLogs(after?: string | null): Promise<void> {\n this._logsLoading = true;\n\n const result = await this.listLogsUseCase.execute({\n where: { task: this._taskId! },\n sort: [\"createdOn_DESC\"],\n limit: 50,\n after: after
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskDetail/TaskDetailPresenter.js","sources":["../../../../src/admin/presentation/TaskDetail/TaskDetailPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type { Task, TaskLog } from \"~/admin/shared/types.js\";\nimport {\n TaskDetailPresenter as Abstraction,\n type ITaskDetailPresenter,\n type ITaskDetailViewModel\n} from \"./abstractions.js\";\nimport { GetTaskUseCase } from \"~/admin/features/getTask/abstractions.js\";\nimport { ListLogsUseCase } from \"~/admin/features/listLogs/abstractions.js\";\n\nclass TaskDetailPresenterImpl implements ITaskDetailPresenter {\n private _task: Task | null = null;\n private _loading = false;\n private _logs: TaskLog[] = [];\n private _logsLoading = false;\n private _logsCursor: string | null = null;\n private _logsHasMore = false;\n private _logsTotalCount = 0;\n private _taskId: string | null = null;\n\n constructor(\n private readonly getTaskUseCase: GetTaskUseCase.Interface,\n private readonly listLogsUseCase: ListLogsUseCase.Interface\n ) {\n makeAutoObservable(this, { vm: computed });\n }\n\n get vm(): ITaskDetailViewModel {\n return {\n task: this._task,\n loading: this._loading,\n logs: {\n rows: this._logs,\n pagination: {\n totalCount: this._logsTotalCount,\n loading: this._logsLoading,\n hasMore: this._logsHasMore\n }\n }\n };\n }\n\n async init(taskId: string): Promise<void> {\n this._taskId = taskId;\n this._loading = true;\n this._logs = [];\n this._logsCursor = null;\n this._logsHasMore = false;\n this._logsTotalCount = 0;\n\n const task = await this.getTaskUseCase.execute(taskId);\n\n runInAction(() => {\n this._task = task;\n this._loading = false;\n });\n\n await this.fetchLogs();\n }\n\n async loadMore(): Promise<void> {\n if (!this._logsHasMore || this._logsLoading) {\n return;\n }\n\n await this.fetchLogs(this._logsCursor);\n }\n\n private async fetchLogs(after?: string | null): Promise<void> {\n this._logsLoading = true;\n\n const result = await this.listLogsUseCase.execute({\n where: { task: this._taskId! },\n sort: [\"createdOn_DESC\"],\n limit: 50,\n after: after || undefined\n });\n\n runInAction(() => {\n if (after) {\n this._logs = [...this._logs, ...result.items];\n } else {\n this._logs = result.items;\n }\n this._logsCursor = result.meta.cursor;\n this._logsHasMore = result.meta.hasMoreItems;\n this._logsTotalCount = result.meta.totalCount;\n this._logsLoading = false;\n });\n }\n}\n\nexport const TaskDetailPresenter = Abstraction.createImplementation({\n implementation: TaskDetailPresenterImpl,\n dependencies: [GetTaskUseCase, ListLogsUseCase]\n});\n"],"names":["TaskDetailPresenterImpl","getTaskUseCase","listLogsUseCase","makeAutoObservable","computed","taskId","task","runInAction","after","result","undefined","TaskDetailPresenter","Abstraction","GetTaskUseCase","ListLogsUseCase"],"mappings":";;;;AAUA,MAAMA;IAUF,YACqBC,cAAwC,EACxCC,eAA0C,CAC7D;aAFmBD,cAAc,GAAdA;aACAC,eAAe,GAAfA;aAXb,KAAK,GAAgB;aACrB,QAAQ,GAAG;aACX,KAAK,GAAc,EAAE;aACrB,YAAY,GAAG;aACf,WAAW,GAAkB;aAC7B,YAAY,GAAG;aACf,eAAe,GAAG;aAClB,OAAO,GAAkB;QAM7BC,mBAAmB,IAAI,EAAE;YAAE,IAAIC;QAAS;IAC5C;IAEA,IAAI,KAA2B;QAC3B,OAAO;YACH,MAAM,IAAI,CAAC,KAAK;YAChB,SAAS,IAAI,CAAC,QAAQ;YACtB,MAAM;gBACF,MAAM,IAAI,CAAC,KAAK;gBAChB,YAAY;oBACR,YAAY,IAAI,CAAC,eAAe;oBAChC,SAAS,IAAI,CAAC,YAAY;oBAC1B,SAAS,IAAI,CAAC,YAAY;gBAC9B;YACJ;QACJ;IACJ;IAEA,MAAM,KAAKC,MAAc,EAAiB;QACtC,IAAI,CAAC,OAAO,GAAGA;QACf,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,KAAK,GAAG,EAAE;QACf,IAAI,CAAC,WAAW,GAAG;QACnB,IAAI,CAAC,YAAY,GAAG;QACpB,IAAI,CAAC,eAAe,GAAG;QAEvB,MAAMC,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACD;QAE/CE,YAAY;YACR,IAAI,CAAC,KAAK,GAAGD;YACb,IAAI,CAAC,QAAQ,GAAG;QACpB;QAEA,MAAM,IAAI,CAAC,SAAS;IACxB;IAEA,MAAM,WAA0B;QAC5B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EACvC;QAGJ,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW;IACzC;IAEA,MAAc,UAAUE,KAAqB,EAAiB;QAC1D,IAAI,CAAC,YAAY,GAAG;QAEpB,MAAMC,SAAS,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAC9C,OAAO;gBAAE,MAAM,IAAI,CAAC,OAAO;YAAE;YAC7B,MAAM;gBAAC;aAAiB;YACxB,OAAO;YACP,OAAOD,SAASE;QACpB;QAEAH,YAAY;YACR,IAAIC,OACA,IAAI,CAAC,KAAK,GAAG;mBAAI,IAAI,CAAC,KAAK;mBAAKC,OAAO,KAAK;aAAC;iBAE7C,IAAI,CAAC,KAAK,GAAGA,OAAO,KAAK;YAE7B,IAAI,CAAC,WAAW,GAAGA,OAAO,IAAI,CAAC,MAAM;YACrC,IAAI,CAAC,YAAY,GAAGA,OAAO,IAAI,CAAC,YAAY;YAC5C,IAAI,CAAC,eAAe,GAAGA,OAAO,IAAI,CAAC,UAAU;YAC7C,IAAI,CAAC,YAAY,GAAG;QACxB;IACJ;AACJ;AAEO,MAAME,0CAAsBC,oBAAAA,oBAAgC,CAAC;IAChE,gBAAgBZ;IAChB,cAAc;QAACa;QAAgBC;KAAgB;AACnD"}
|
|
@@ -176,6 +176,7 @@ const TaskDetailDrawer_TaskDetailDrawerInner = observer(function({ task, open, o
|
|
|
176
176
|
}, /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
177
177
|
span: 6
|
|
178
178
|
}, /*#__PURE__*/ react.createElement(Text, {
|
|
179
|
+
as: "div",
|
|
179
180
|
size: "sm",
|
|
180
181
|
className: "text-neutral-strong"
|
|
181
182
|
}, "Definition"), /*#__PURE__*/ react.createElement(Text, {
|
|
@@ -183,6 +184,7 @@ const TaskDetailDrawer_TaskDetailDrawerInner = observer(function({ task, open, o
|
|
|
183
184
|
}, displayTask.definitionId)), /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
184
185
|
span: 6
|
|
185
186
|
}, /*#__PURE__*/ react.createElement(Text, {
|
|
187
|
+
as: "div",
|
|
186
188
|
size: "sm",
|
|
187
189
|
className: "text-neutral-strong"
|
|
188
190
|
}, "Created By"), /*#__PURE__*/ react.createElement(Text, {
|
|
@@ -190,6 +192,7 @@ const TaskDetailDrawer_TaskDetailDrawerInner = observer(function({ task, open, o
|
|
|
190
192
|
}, displayTask.createdBy?.displayName ?? "—")), /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
191
193
|
span: 6
|
|
192
194
|
}, /*#__PURE__*/ react.createElement(Text, {
|
|
195
|
+
as: "div",
|
|
193
196
|
size: "sm",
|
|
194
197
|
className: "text-neutral-strong"
|
|
195
198
|
}, "Created On"), /*#__PURE__*/ react.createElement(Text, {
|
|
@@ -199,6 +202,7 @@ const TaskDetailDrawer_TaskDetailDrawerInner = observer(function({ task, open, o
|
|
|
199
202
|
}) : "—")), /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
200
203
|
span: 6
|
|
201
204
|
}, /*#__PURE__*/ react.createElement(Text, {
|
|
205
|
+
as: "div",
|
|
202
206
|
size: "sm",
|
|
203
207
|
className: "text-neutral-strong"
|
|
204
208
|
}, "Started On"), /*#__PURE__*/ react.createElement(Text, {
|
|
@@ -208,6 +212,7 @@ const TaskDetailDrawer_TaskDetailDrawerInner = observer(function({ task, open, o
|
|
|
208
212
|
}) : "—")), /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
209
213
|
span: 6
|
|
210
214
|
}, /*#__PURE__*/ react.createElement(Text, {
|
|
215
|
+
as: "div",
|
|
211
216
|
size: "sm",
|
|
212
217
|
className: "text-neutral-strong"
|
|
213
218
|
}, "Finished On"), /*#__PURE__*/ react.createElement(Text, {
|
|
@@ -217,6 +222,7 @@ const TaskDetailDrawer_TaskDetailDrawerInner = observer(function({ task, open, o
|
|
|
217
222
|
}) : "—")), /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
218
223
|
span: 6
|
|
219
224
|
}, /*#__PURE__*/ react.createElement(Text, {
|
|
225
|
+
as: "div",
|
|
220
226
|
size: "sm",
|
|
221
227
|
className: "text-neutral-strong"
|
|
222
228
|
}, "Iterations"), /*#__PURE__*/ react.createElement(Text, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/TaskDetail/components/TaskDetailDrawer.js","sources":["../../../../../src/admin/presentation/TaskDetail/components/TaskDetailDrawer.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { Button, Drawer, Grid, Heading, Separator, Tag, Text, TimeAgo } from \"@webiny/admin-ui\";\nimport { CodeEditor } from \"@webiny/admin-ui\";\nimport { useConfirmationDialog } from \"@webiny/app-admin/hooks/index.js\";\nimport { ReactComponent as StopCircleIcon } from \"@webiny/icons/stop_circle.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { ReactComponent as ExpandMoreIcon } from \"@webiny/icons/expand_more.svg\";\nimport { ReactComponent as ExpandLessIcon } from \"@webiny/icons/expand_less.svg\";\nimport { TaskDetailPresenterFeature } from \"../feature.js\";\nimport { GetTaskFeature } from \"~/admin/features/getTask/feature.js\";\nimport { ListLogsFeature } from \"~/admin/features/listLogs/feature.js\";\nimport type { Task, TaskLog, TaskLogItem } from \"~/admin/shared/types.js\";\n\nconst STATUS_TAG_VARIANT: Record<\n string,\n \"neutral-light\" | \"accent\" | \"success\" | \"destructive\" | \"warning\"\n> = {\n pending: \"neutral-light\",\n running: \"accent\",\n success: \"success\",\n failed: \"destructive\",\n aborted: \"warning\"\n};\n\nconst formatJson = (value: unknown): string => {\n if (value === null || value === undefined) {\n return \"\";\n }\n if (typeof value === \"string\") {\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n return JSON.stringify(value, null, 2);\n};\n\ninterface ExpandButtonProps {\n show: boolean;\n expanded: boolean;\n onClick: () => void;\n}\n\nconst ExpandButton = ({ show, expanded, onClick }: ExpandButtonProps) => {\n if (!show) {\n return null;\n }\n\n return (\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n icon={expanded ? <ExpandLessIcon /> : <ExpandMoreIcon />}\n onClick={onClick}\n />\n );\n};\n\ninterface ExpandedPayloadProps {\n show: boolean;\n label: string;\n value: unknown;\n variant?: \"default\" | \"destructive\";\n}\n\nconst ExpandedPayload = ({ show, label, value, variant = \"default\" }: ExpandedPayloadProps) => {\n if (!show) {\n return null;\n }\n\n const textClass = variant === \"destructive\" ? \" text-destructive\" : \"\";\n\n return (\n <div className=\"mt-xs\">\n <Text size=\"sm\" className=\"text-neutral-strong mb-xs\">\n {label}\n </Text>\n <pre\n className={`bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]${textClass}`}\n >\n {formatJson(value)}\n </pre>\n </div>\n );\n};\n\ninterface JsonSectionProps {\n show: boolean;\n title: string;\n value: string;\n}\n\nconst JsonSection = ({ show, title, value }: JsonSectionProps) => {\n if (!show) {\n return null;\n }\n\n return (\n <>\n <Separator />\n <div>\n <Heading level={6} className=\"mb-sm\">\n {title}\n </Heading>\n <CodeEditor value={value} language=\"json\" disabled={true} />\n </div>\n </>\n );\n};\n\ninterface LoadMoreLogsButtonProps {\n show: boolean;\n loading: boolean;\n onClick: () => void;\n}\n\nconst LoadMoreLogsButton = ({ show, loading, onClick }: LoadMoreLogsButtonProps) => {\n if (!show) {\n return null;\n }\n\n return (\n <div className=\"mt-sm\">\n <Button variant=\"tertiary\" size=\"sm\" onClick={onClick} disabled={loading}>\n {loading ? \"Loading...\" : \"Load more logs\"}\n </Button>\n </div>\n );\n};\n\ninterface DrawerActionsProps {\n isRunning: boolean;\n isTerminal: boolean;\n onAbort: () => void;\n onDelete: () => void;\n}\n\nconst DrawerActions = ({ isRunning, isTerminal, onAbort, onDelete }: DrawerActionsProps) => {\n if (!isRunning && !isTerminal) {\n return null;\n }\n\n return (\n <div className=\"flex gap-sm\">\n {isRunning ? (\n <Button variant=\"secondary\" size=\"sm\" icon={<StopCircleIcon />} onClick={onAbort}>\n Abort\n </Button>\n ) : null}\n {isTerminal ? (\n <Button variant=\"secondary\" size=\"sm\" icon={<DeleteIcon />} onClick={onDelete}>\n Delete\n </Button>\n ) : null}\n </div>\n );\n};\n\ninterface LogItemViewProps {\n item: TaskLogItem;\n}\n\nconst LogItemView = ({ item }: LogItemViewProps) => {\n const [expanded, setExpanded] = useState(false);\n const hasData = item.data !== null && item.data !== undefined;\n const hasError = item.error !== null && item.error !== undefined;\n const expandable = hasData || hasError;\n\n return (\n <div className=\"border-b-sm border-neutral-muted py-xs px-sm\">\n <div className=\"flex items-start gap-sm\">\n <div className=\"flex-shrink-0 pt-[2px]\">\n <Tag\n variant={item.type === \"error\" ? \"destructive\" : \"neutral-light\"}\n content={item.type}\n />\n </div>\n <div className=\"flex-1 min-w-0\">\n <Text size=\"sm\">{item.message}</Text>\n </div>\n <div className=\"flex items-center gap-xs flex-shrink-0\">\n <Text size=\"sm\" className=\"text-neutral-strong\">\n <TimeAgo datetime={item.createdOn} />\n </Text>\n <ExpandButton\n show={expandable}\n expanded={expanded}\n onClick={() => setExpanded(!expanded)}\n />\n </div>\n </div>\n <ExpandedPayload show={expanded && hasData} label=\"Data\" value={item.data} />\n <ExpandedPayload\n show={expanded && hasError}\n label=\"Error\"\n value={item.error}\n variant=\"destructive\"\n />\n </div>\n );\n};\n\ninterface TaskDetailDrawerProps {\n task: Task;\n open: boolean;\n onClose: () => void;\n onAbort: (id: string) => Promise<void>;\n onDelete: (id: string) => Promise<void>;\n}\n\nconst TaskDetailDrawerInner = observer(function TaskDetailDrawerInner({\n task,\n open,\n onClose,\n onAbort,\n onDelete\n}: TaskDetailDrawerProps) {\n const { presenter } = useFeature(TaskDetailPresenterFeature);\n\n useEffect(() => {\n if (open) {\n void presenter.init(task.id);\n }\n }, [presenter, task.id, open]);\n\n const { vm } = presenter;\n\n const { showConfirmation: showAbortConfirmation } = useConfirmationDialog({\n title: \"Abort Task\",\n message: \"Are you sure you want to abort this running task?\"\n });\n\n const { showConfirmation: showDeleteConfirmation } = useConfirmationDialog({\n title: \"Delete Task\",\n message: \"Are you sure you want to delete this task?\"\n });\n\n const displayTask = vm.task ?? task;\n const isRunning = displayTask.taskStatus === \"running\";\n const isTerminal =\n displayTask.taskStatus === \"success\" ||\n displayTask.taskStatus === \"failed\" ||\n displayTask.taskStatus === \"aborted\";\n\n const inputJson = formatJson(displayTask.input);\n const outputJson = formatJson(displayTask.output);\n\n return (\n <Drawer\n open={open}\n onOpenChange={isOpen => !isOpen && onClose()}\n title={\n <div className=\"flex items-center gap-sm\">\n <span>{displayTask.name || displayTask.definitionId}</span>\n <Tag\n variant={STATUS_TAG_VARIANT[displayTask.taskStatus] ?? \"neutral-light\"}\n content={displayTask.taskStatus}\n />\n </div>\n }\n modal={true}\n width=\"900px\"\n bodyPadding={false}\n actions={\n <DrawerActions\n isRunning={isRunning}\n isTerminal={isTerminal}\n onAbort={() => showAbortConfirmation(() => onAbort(displayTask.id))}\n onDelete={() => showDeleteConfirmation(() => onDelete(displayTask.id))}\n />\n }\n >\n <div className=\"flex flex-col gap-md p-md overflow-auto\">\n <div>\n <Heading level={6} className=\"mb-sm\">\n General Info\n </Heading>\n <Grid gap=\"comfortable\">\n <Grid.Column span={6}>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Definition\n </Text>\n <Text size=\"sm\">{displayTask.definitionId}</Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Created By\n </Text>\n <Text size=\"sm\">{displayTask.createdBy?.displayName ?? \"—\"}</Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Created On\n </Text>\n <Text size=\"sm\">\n {displayTask.createdOn ? (\n <TimeAgo datetime={displayTask.createdOn} />\n ) : (\n \"—\"\n )}\n </Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Started On\n </Text>\n <Text size=\"sm\">\n {displayTask.startedOn ? (\n <TimeAgo datetime={displayTask.startedOn} />\n ) : (\n \"—\"\n )}\n </Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Finished On\n </Text>\n <Text size=\"sm\">\n {displayTask.finishedOn ? (\n <TimeAgo datetime={displayTask.finishedOn} />\n ) : (\n \"—\"\n )}\n </Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Iterations\n </Text>\n <Text size=\"sm\">{displayTask.iterations ?? 0}</Text>\n </Grid.Column>\n </Grid>\n </div>\n\n <JsonSection show={!!inputJson} title=\"Input\" value={inputJson} />\n <JsonSection show={!!outputJson} title=\"Output\" value={outputJson} />\n\n <Separator />\n <div>\n <Heading level={6} className=\"mb-sm\">\n Logs ({vm.logs.pagination.totalCount})\n </Heading>\n {vm.logs.rows.length === 0 && !vm.logs.pagination.loading ? (\n <Text size=\"sm\" className=\"text-neutral-strong\">\n No logs available.\n </Text>\n ) : (\n <div className=\"border-sm border-neutral-muted rounded-sm\">\n {vm.logs.rows.map((log: TaskLog) =>\n log.items.map((item, idx) => (\n <LogItemView key={`${log.id}-${idx}`} item={item} />\n ))\n )}\n </div>\n )}\n <LoadMoreLogsButton\n show={vm.logs.pagination.hasMore}\n loading={vm.logs.pagination.loading}\n onClick={() => presenter.loadMore()}\n />\n </div>\n </div>\n </Drawer>\n );\n});\n\nexport const TaskDetailDrawer = (props: TaskDetailDrawerProps) => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n GetTaskFeature.register(child);\n ListLogsFeature.register(child);\n TaskDetailPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <TaskDetailDrawerInner {...props} />\n </DiContainerProvider>\n );\n};\n"],"names":["STATUS_TAG_VARIANT","formatJson","value","JSON","ExpandButton","show","expanded","onClick","Button","ExpandLessIcon","ExpandMoreIcon","ExpandedPayload","label","variant","textClass","Text","JsonSection","title","Separator","Heading","CodeEditor","LoadMoreLogsButton","loading","DrawerActions","isRunning","isTerminal","onAbort","onDelete","StopCircleIcon","DeleteIcon","LogItemView","item","setExpanded","useState","hasData","undefined","hasError","expandable","Tag","TimeAgo","TaskDetailDrawerInner","observer","task","open","onClose","presenter","useFeature","TaskDetailPresenterFeature","useEffect","vm","showAbortConfirmation","useConfirmationDialog","showDeleteConfirmation","displayTask","inputJson","outputJson","Drawer","isOpen","Grid","log","idx","TaskDetailDrawer","props","container","useContainer","scopedContainer","useMemo","child","GetTaskFeature","ListLogsFeature","DiContainerProvider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskDetail/components/TaskDetailDrawer.js","sources":["../../../../../src/admin/presentation/TaskDetail/components/TaskDetailDrawer.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { Button, Drawer, Grid, Heading, Separator, Tag, Text, TimeAgo } from \"@webiny/admin-ui\";\nimport { CodeEditor } from \"@webiny/admin-ui\";\nimport { useConfirmationDialog } from \"@webiny/app-admin/hooks/index.js\";\nimport { ReactComponent as StopCircleIcon } from \"@webiny/icons/stop_circle.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { ReactComponent as ExpandMoreIcon } from \"@webiny/icons/expand_more.svg\";\nimport { ReactComponent as ExpandLessIcon } from \"@webiny/icons/expand_less.svg\";\nimport { TaskDetailPresenterFeature } from \"../feature.js\";\nimport { GetTaskFeature } from \"~/admin/features/getTask/feature.js\";\nimport { ListLogsFeature } from \"~/admin/features/listLogs/feature.js\";\nimport type { Task, TaskLog, TaskLogItem } from \"~/admin/shared/types.js\";\n\nconst STATUS_TAG_VARIANT: Record<\n string,\n \"neutral-light\" | \"accent\" | \"success\" | \"destructive\" | \"warning\"\n> = {\n pending: \"neutral-light\",\n running: \"accent\",\n success: \"success\",\n failed: \"destructive\",\n aborted: \"warning\"\n};\n\nconst formatJson = (value: unknown): string => {\n if (value === null || value === undefined) {\n return \"\";\n }\n if (typeof value === \"string\") {\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n return JSON.stringify(value, null, 2);\n};\n\ninterface ExpandButtonProps {\n show: boolean;\n expanded: boolean;\n onClick: () => void;\n}\n\nconst ExpandButton = ({ show, expanded, onClick }: ExpandButtonProps) => {\n if (!show) {\n return null;\n }\n\n return (\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n icon={expanded ? <ExpandLessIcon /> : <ExpandMoreIcon />}\n onClick={onClick}\n />\n );\n};\n\ninterface ExpandedPayloadProps {\n show: boolean;\n label: string;\n value: unknown;\n variant?: \"default\" | \"destructive\";\n}\n\nconst ExpandedPayload = ({ show, label, value, variant = \"default\" }: ExpandedPayloadProps) => {\n if (!show) {\n return null;\n }\n\n const textClass = variant === \"destructive\" ? \" text-destructive\" : \"\";\n\n return (\n <div className=\"mt-xs\">\n <Text size=\"sm\" className=\"text-neutral-strong mb-xs\">\n {label}\n </Text>\n <pre\n className={`bg-neutral-light rounded-sm p-sm text-xs overflow-auto max-h-[200px]${textClass}`}\n >\n {formatJson(value)}\n </pre>\n </div>\n );\n};\n\ninterface JsonSectionProps {\n show: boolean;\n title: string;\n value: string;\n}\n\nconst JsonSection = ({ show, title, value }: JsonSectionProps) => {\n if (!show) {\n return null;\n }\n\n return (\n <>\n <Separator />\n <div>\n <Heading level={6} className=\"mb-sm\">\n {title}\n </Heading>\n <CodeEditor value={value} language=\"json\" disabled={true} />\n </div>\n </>\n );\n};\n\ninterface LoadMoreLogsButtonProps {\n show: boolean;\n loading: boolean;\n onClick: () => void;\n}\n\nconst LoadMoreLogsButton = ({ show, loading, onClick }: LoadMoreLogsButtonProps) => {\n if (!show) {\n return null;\n }\n\n return (\n <div className=\"mt-sm\">\n <Button variant=\"tertiary\" size=\"sm\" onClick={onClick} disabled={loading}>\n {loading ? \"Loading...\" : \"Load more logs\"}\n </Button>\n </div>\n );\n};\n\ninterface DrawerActionsProps {\n isRunning: boolean;\n isTerminal: boolean;\n onAbort: () => void;\n onDelete: () => void;\n}\n\nconst DrawerActions = ({ isRunning, isTerminal, onAbort, onDelete }: DrawerActionsProps) => {\n if (!isRunning && !isTerminal) {\n return null;\n }\n\n return (\n <div className=\"flex gap-sm\">\n {isRunning ? (\n <Button variant=\"secondary\" size=\"sm\" icon={<StopCircleIcon />} onClick={onAbort}>\n Abort\n </Button>\n ) : null}\n {isTerminal ? (\n <Button variant=\"secondary\" size=\"sm\" icon={<DeleteIcon />} onClick={onDelete}>\n Delete\n </Button>\n ) : null}\n </div>\n );\n};\n\ninterface LogItemViewProps {\n item: TaskLogItem;\n}\n\nconst LogItemView = ({ item }: LogItemViewProps) => {\n const [expanded, setExpanded] = useState(false);\n const hasData = item.data !== null && item.data !== undefined;\n const hasError = item.error !== null && item.error !== undefined;\n const expandable = hasData || hasError;\n\n return (\n <div className=\"border-b-sm border-neutral-muted py-xs px-sm\">\n <div className=\"flex items-start gap-sm\">\n <div className=\"flex-shrink-0 pt-[2px]\">\n <Tag\n variant={item.type === \"error\" ? \"destructive\" : \"neutral-light\"}\n content={item.type}\n />\n </div>\n <div className=\"flex-1 min-w-0\">\n <Text size=\"sm\">{item.message}</Text>\n </div>\n <div className=\"flex items-center gap-xs flex-shrink-0\">\n <Text size=\"sm\" className=\"text-neutral-strong\">\n <TimeAgo datetime={item.createdOn} />\n </Text>\n <ExpandButton\n show={expandable}\n expanded={expanded}\n onClick={() => setExpanded(!expanded)}\n />\n </div>\n </div>\n <ExpandedPayload show={expanded && hasData} label=\"Data\" value={item.data} />\n <ExpandedPayload\n show={expanded && hasError}\n label=\"Error\"\n value={item.error}\n variant=\"destructive\"\n />\n </div>\n );\n};\n\ninterface TaskDetailDrawerProps {\n task: Task;\n open: boolean;\n onClose: () => void;\n onAbort: (id: string) => Promise<void>;\n onDelete: (id: string) => Promise<void>;\n}\n\nconst TaskDetailDrawerInner = observer(function TaskDetailDrawerInner({\n task,\n open,\n onClose,\n onAbort,\n onDelete\n}: TaskDetailDrawerProps) {\n const { presenter } = useFeature(TaskDetailPresenterFeature);\n\n useEffect(() => {\n if (open) {\n void presenter.init(task.id);\n }\n }, [presenter, task.id, open]);\n\n const { vm } = presenter;\n\n const { showConfirmation: showAbortConfirmation } = useConfirmationDialog({\n title: \"Abort Task\",\n message: \"Are you sure you want to abort this running task?\"\n });\n\n const { showConfirmation: showDeleteConfirmation } = useConfirmationDialog({\n title: \"Delete Task\",\n message: \"Are you sure you want to delete this task?\"\n });\n\n const displayTask = vm.task ?? task;\n const isRunning = displayTask.taskStatus === \"running\";\n const isTerminal =\n displayTask.taskStatus === \"success\" ||\n displayTask.taskStatus === \"failed\" ||\n displayTask.taskStatus === \"aborted\";\n\n const inputJson = formatJson(displayTask.input);\n const outputJson = formatJson(displayTask.output);\n\n return (\n <Drawer\n open={open}\n onOpenChange={isOpen => !isOpen && onClose()}\n title={\n <div className=\"flex items-center gap-sm\">\n <span>{displayTask.name || displayTask.definitionId}</span>\n <Tag\n variant={STATUS_TAG_VARIANT[displayTask.taskStatus] ?? \"neutral-light\"}\n content={displayTask.taskStatus}\n />\n </div>\n }\n modal={true}\n width=\"900px\"\n bodyPadding={false}\n actions={\n <DrawerActions\n isRunning={isRunning}\n isTerminal={isTerminal}\n onAbort={() => showAbortConfirmation(() => onAbort(displayTask.id))}\n onDelete={() => showDeleteConfirmation(() => onDelete(displayTask.id))}\n />\n }\n >\n <div className=\"flex flex-col gap-md p-md overflow-auto\">\n <div>\n <Heading level={6} className=\"mb-sm\">\n General Info\n </Heading>\n <Grid gap=\"comfortable\">\n <Grid.Column span={6}>\n <Text as=\"div\" size=\"sm\" className=\"text-neutral-strong\">\n Definition\n </Text>\n <Text size=\"sm\">{displayTask.definitionId}</Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text as=\"div\" size=\"sm\" className=\"text-neutral-strong\">\n Created By\n </Text>\n <Text size=\"sm\">{displayTask.createdBy?.displayName ?? \"—\"}</Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text as=\"div\" size=\"sm\" className=\"text-neutral-strong\">\n Created On\n </Text>\n <Text size=\"sm\">\n {displayTask.createdOn ? (\n <TimeAgo datetime={displayTask.createdOn} />\n ) : (\n \"—\"\n )}\n </Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text as=\"div\" size=\"sm\" className=\"text-neutral-strong\">\n Started On\n </Text>\n <Text size=\"sm\">\n {displayTask.startedOn ? (\n <TimeAgo datetime={displayTask.startedOn} />\n ) : (\n \"—\"\n )}\n </Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text as=\"div\" size=\"sm\" className=\"text-neutral-strong\">\n Finished On\n </Text>\n <Text size=\"sm\">\n {displayTask.finishedOn ? (\n <TimeAgo datetime={displayTask.finishedOn} />\n ) : (\n \"—\"\n )}\n </Text>\n </Grid.Column>\n <Grid.Column span={6}>\n <Text as=\"div\" size=\"sm\" className=\"text-neutral-strong\">\n Iterations\n </Text>\n <Text size=\"sm\">{displayTask.iterations ?? 0}</Text>\n </Grid.Column>\n </Grid>\n </div>\n\n <JsonSection show={!!inputJson} title=\"Input\" value={inputJson} />\n <JsonSection show={!!outputJson} title=\"Output\" value={outputJson} />\n\n <Separator />\n <div>\n <Heading level={6} className=\"mb-sm\">\n Logs ({vm.logs.pagination.totalCount})\n </Heading>\n {vm.logs.rows.length === 0 && !vm.logs.pagination.loading ? (\n <Text size=\"sm\" className=\"text-neutral-strong\">\n No logs available.\n </Text>\n ) : (\n <div className=\"border-sm border-neutral-muted rounded-sm\">\n {vm.logs.rows.map((log: TaskLog) =>\n log.items.map((item, idx) => (\n <LogItemView key={`${log.id}-${idx}`} item={item} />\n ))\n )}\n </div>\n )}\n <LoadMoreLogsButton\n show={vm.logs.pagination.hasMore}\n loading={vm.logs.pagination.loading}\n onClick={() => presenter.loadMore()}\n />\n </div>\n </div>\n </Drawer>\n );\n});\n\nexport const TaskDetailDrawer = (props: TaskDetailDrawerProps) => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n GetTaskFeature.register(child);\n ListLogsFeature.register(child);\n TaskDetailPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <TaskDetailDrawerInner {...props} />\n </DiContainerProvider>\n );\n};\n"],"names":["STATUS_TAG_VARIANT","formatJson","value","JSON","ExpandButton","show","expanded","onClick","Button","ExpandLessIcon","ExpandMoreIcon","ExpandedPayload","label","variant","textClass","Text","JsonSection","title","Separator","Heading","CodeEditor","LoadMoreLogsButton","loading","DrawerActions","isRunning","isTerminal","onAbort","onDelete","StopCircleIcon","DeleteIcon","LogItemView","item","setExpanded","useState","hasData","undefined","hasError","expandable","Tag","TimeAgo","TaskDetailDrawerInner","observer","task","open","onClose","presenter","useFeature","TaskDetailPresenterFeature","useEffect","vm","showAbortConfirmation","useConfirmationDialog","showDeleteConfirmation","displayTask","inputJson","outputJson","Drawer","isOpen","Grid","log","idx","TaskDetailDrawer","props","container","useContainer","scopedContainer","useMemo","child","GetTaskFeature","ListLogsFeature","DiContainerProvider"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/presentation/TaskExecutions/TaskExecutionsDataSource.js","sources":["../../../../src/admin/presentation/TaskExecutions/TaskExecutionsDataSource.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type {\n IDataSource,\n IDataSourceQuery,\n IDataSourceMeta\n} from \"@webiny/app-admin/presentation/listPresenter/abstractions.js\";\nimport type { Task } from \"~/admin/shared/types.js\";\nimport type { IListTasksUseCase } from \"~/admin/features/listTasks/abstractions.js\";\n\nconst ENTRY_META_SORT_FIELDS = new Set([\n \"id\",\n \"createdOn\",\n \"modifiedOn\",\n \"savedOn\",\n \"deletedOn\",\n \"restoredOn\",\n \"firstPublishedOn\",\n \"lastPublishedOn\"\n]);\n\nfunction toSortEnum(field: string, direction: \"ASC\" | \"DESC\"): string {\n const prefix = ENTRY_META_SORT_FIELDS.has(field) ? \"\" : \"values_\";\n return `${prefix}${field}_${direction}`;\n}\n\nexport class TaskExecutionsDataSource implements IDataSource<Task> {\n private _rows: Task[] = [];\n private _meta: IDataSourceMeta = { cursor: null, hasMoreItems: false, totalCount: 0 };\n private _loading = false;\n\n constructor(private readonly listTasksUseCase: IListTasksUseCase) {\n makeAutoObservable<TaskExecutionsDataSource, \"listTasksUseCase\">(this, {\n listTasksUseCase: false,\n rows: computed\n });\n }\n\n get rows(): Task[] {\n return this._rows;\n }\n\n get meta(): IDataSourceMeta {\n return this._meta;\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n async query(params: IDataSourceQuery): Promise<void> {\n this._loading = true;\n const sort = params.sort\n ? [toSortEnum(params.sort.field, params.sort.direction)]\n : undefined;\n const result = await this.listTasksUseCase.execute({\n where: params.filters,\n sort,\n limit: params.limit,\n after: params.cursor,\n search: params.search\n });\n runInAction(() => {\n this._rows = result.items;\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n\n async loadMore(params: IDataSourceQuery): Promise<void> {\n if (!this._meta.hasMoreItems || this._loading) {\n return;\n }\n this._loading = true;\n const sort = params.sort\n ? [toSortEnum(params.sort.field, params.sort.direction)]\n : undefined;\n const result = await this.listTasksUseCase.execute({\n where: params.filters,\n sort,\n limit: params.limit,\n after: this._meta.cursor
|
|
1
|
+
{"version":3,"file":"admin/presentation/TaskExecutions/TaskExecutionsDataSource.js","sources":["../../../../src/admin/presentation/TaskExecutions/TaskExecutionsDataSource.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type {\n IDataSource,\n IDataSourceQuery,\n IDataSourceMeta\n} from \"@webiny/app-admin/presentation/listPresenter/abstractions.js\";\nimport type { Task } from \"~/admin/shared/types.js\";\nimport type { IListTasksUseCase } from \"~/admin/features/listTasks/abstractions.js\";\n\nconst ENTRY_META_SORT_FIELDS = new Set([\n \"id\",\n \"createdOn\",\n \"modifiedOn\",\n \"savedOn\",\n \"deletedOn\",\n \"restoredOn\",\n \"firstPublishedOn\",\n \"lastPublishedOn\"\n]);\n\nfunction toSortEnum(field: string, direction: \"ASC\" | \"DESC\"): string {\n const prefix = ENTRY_META_SORT_FIELDS.has(field) ? \"\" : \"values_\";\n return `${prefix}${field}_${direction}`;\n}\n\nexport class TaskExecutionsDataSource implements IDataSource<Task> {\n private _rows: Task[] = [];\n private _meta: IDataSourceMeta = { cursor: null, hasMoreItems: false, totalCount: 0 };\n private _loading = false;\n\n constructor(private readonly listTasksUseCase: IListTasksUseCase) {\n makeAutoObservable<TaskExecutionsDataSource, \"listTasksUseCase\">(this, {\n listTasksUseCase: false,\n rows: computed\n });\n }\n\n get rows(): Task[] {\n return this._rows;\n }\n\n get meta(): IDataSourceMeta {\n return this._meta;\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n async query(params: IDataSourceQuery): Promise<void> {\n this._loading = true;\n const sort = params.sort\n ? [toSortEnum(params.sort.field, params.sort.direction)]\n : undefined;\n const result = await this.listTasksUseCase.execute({\n where: params.filters,\n sort,\n limit: params.limit,\n after: params.cursor,\n search: params.search\n });\n runInAction(() => {\n this._rows = result.items;\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n\n async loadMore(params: IDataSourceQuery): Promise<void> {\n if (!this._meta.hasMoreItems || this._loading) {\n return;\n }\n this._loading = true;\n const sort = params.sort\n ? [toSortEnum(params.sort.field, params.sort.direction)]\n : undefined;\n const result = await this.listTasksUseCase.execute({\n where: params.filters,\n sort,\n limit: params.limit,\n after: this._meta.cursor || undefined,\n search: params.search\n });\n runInAction(() => {\n this._rows = [...this._rows, ...result.items];\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n}\n"],"names":["ENTRY_META_SORT_FIELDS","Set","toSortEnum","field","direction","prefix","TaskExecutionsDataSource","listTasksUseCase","makeAutoObservable","computed","params","sort","undefined","result","runInAction"],"mappings":";AASA,MAAMA,yBAAyB,IAAIC,IAAI;IACnC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACH;AAED,SAASC,WAAWC,KAAa,EAAEC,SAAyB;IACxD,MAAMC,SAASL,uBAAuB,GAAG,CAACG,SAAS,KAAK;IACxD,OAAO,GAAGE,SAASF,MAAM,CAAC,EAAEC,WAAW;AAC3C;AAEO,MAAME;IAKT,YAA6BC,gBAAmC,CAAE;aAArCA,gBAAgB,GAAhBA;aAJrB,KAAK,GAAW,EAAE;aAClB,KAAK,GAAoB;YAAE,QAAQ;YAAM,cAAc;YAAO,YAAY;QAAE;aAC5E,QAAQ,GAAG;QAGfC,mBAAiE,IAAI,EAAE;YACnE,kBAAkB;YAClB,MAAMC;QACV;IACJ;IAEA,IAAI,OAAe;QACf,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,OAAwB;QACxB,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,UAAmB;QACnB,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,MAAM,MAAMC,MAAwB,EAAiB;QACjD,IAAI,CAAC,QAAQ,GAAG;QAChB,MAAMC,OAAOD,OAAO,IAAI,GAClB;YAACR,WAAWQ,OAAO,IAAI,CAAC,KAAK,EAAEA,OAAO,IAAI,CAAC,SAAS;SAAE,GACtDE;QACN,MAAMC,SAAS,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC/C,OAAOH,OAAO,OAAO;YACrBC;YACA,OAAOD,OAAO,KAAK;YACnB,OAAOA,OAAO,MAAM;YACpB,QAAQA,OAAO,MAAM;QACzB;QACAI,YAAY;YACR,IAAI,CAAC,KAAK,GAAGD,OAAO,KAAK;YACzB,IAAI,CAAC,KAAK,GAAG;gBACT,QAAQA,OAAO,IAAI,CAAC,MAAM;gBAC1B,cAAcA,OAAO,IAAI,CAAC,YAAY;gBACtC,YAAYA,OAAO,IAAI,CAAC,UAAU;YACtC;YACA,IAAI,CAAC,QAAQ,GAAG;QACpB;IACJ;IAEA,MAAM,SAASH,MAAwB,EAAiB;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,EACzC;QAEJ,IAAI,CAAC,QAAQ,GAAG;QAChB,MAAMC,OAAOD,OAAO,IAAI,GAClB;YAACR,WAAWQ,OAAO,IAAI,CAAC,KAAK,EAAEA,OAAO,IAAI,CAAC,SAAS;SAAE,GACtDE;QACN,MAAMC,SAAS,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC/C,OAAOH,OAAO,OAAO;YACrBC;YACA,OAAOD,OAAO,KAAK;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAIE;YAC5B,QAAQF,OAAO,MAAM;QACzB;QACAI,YAAY;YACR,IAAI,CAAC,KAAK,GAAG;mBAAI,IAAI,CAAC,KAAK;mBAAKD,OAAO,KAAK;aAAC;YAC7C,IAAI,CAAC,KAAK,GAAG;gBACT,QAAQA,OAAO,IAAI,CAAC,MAAM;gBAC1B,cAAcA,OAAO,IAAI,CAAC,YAAY;gBACtC,YAAYA,OAAO,IAAI,CAAC,UAAU;YACtC;YACA,IAAI,CAAC,QAAQ,GAAG;QACpB;IACJ;AACJ"}
|
|
@@ -30,6 +30,8 @@ declare class TaskExecutionsPresenterImpl implements ITaskExecutionsPresenter {
|
|
|
30
30
|
set: (key: string, value: unknown) => void;
|
|
31
31
|
clear: (key: string) => void;
|
|
32
32
|
clearAll: () => void;
|
|
33
|
+
show: () => void;
|
|
34
|
+
hide: () => void;
|
|
33
35
|
};
|
|
34
36
|
selection: {
|
|
35
37
|
toggle: (id: string) => void;
|
|
@@ -28,7 +28,9 @@ class TaskExecutionsPresenterImpl {
|
|
|
28
28
|
this.filter = {
|
|
29
29
|
set: (key, value)=>this.listPresenter.actions.filter.set(key, value),
|
|
30
30
|
clear: (key)=>this.listPresenter.actions.filter.clear(key),
|
|
31
|
-
clearAll: ()=>this.listPresenter.actions.filter.clearAll()
|
|
31
|
+
clearAll: ()=>this.listPresenter.actions.filter.clearAll(),
|
|
32
|
+
show: ()=>this.listPresenter.actions.filter.show(),
|
|
33
|
+
hide: ()=>this.listPresenter.actions.filter.hide()
|
|
32
34
|
};
|
|
33
35
|
this.selection = {
|
|
34
36
|
toggle: (id)=>this.listPresenter.actions.selection.toggle(id),
|