@evenicanpm/admin-integrate 1.2.0 → 1.3.0

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.
Files changed (208) hide show
  1. package/documents/ConfigImport/configuration-import.ts +54 -0
  2. package/documents/CopyProcess/copy.ts +25 -0
  3. package/documents/Endpoint/fragments.ts +9 -0
  4. package/documents/Endpoint/list.ts +22 -0
  5. package/documents/Process/fragments.ts +35 -0
  6. package/documents/Process/get-process-details.ts +73 -0
  7. package/documents/Process/list.ts +51 -0
  8. package/documents/ProcessConfig/fragments.ts +116 -0
  9. package/documents/ProcessConfig/read.ts +35 -0
  10. package/documents/ProcessExecution/fragments.ts +12 -0
  11. package/documents/ProcessExecution/list.ts +30 -1
  12. package/documents/ProcessExecutionDetails/fragments.ts +96 -0
  13. package/documents/ProcessExecutionDetails/read.ts +12 -0
  14. package/documents/ProcessScheduleGroup/read.ts +43 -0
  15. package/documents/ProcessTask/fragments.ts +285 -0
  16. package/documents/ProcessTask/read.ts +12 -0
  17. package/documents/ProcessTemplate/fragments.ts +69 -0
  18. package/documents/ProcessTemplate/list.ts +67 -0
  19. package/documents/ProcessTemplate/read.ts +12 -0
  20. package/documents/RunProcess/run.ts +11 -0
  21. package/package.json +4 -3
  22. package/src/api/Integrations/queries/get-process.query.ts +48 -0
  23. package/src/api/Integrations/queries/get-process.server.ts +14 -0
  24. package/src/api/Integrations/queries/index.ts +1 -0
  25. package/src/api/dashboard/queries/get-process-executions.query.ts +6 -3
  26. package/src/api/dashboard/queries/get-process-executions.server.ts +1 -1
  27. package/src/api/execution-details/queries/get-process-execution-details.query.ts +46 -0
  28. package/src/api/execution-details/queries/get-process-execution-details.server.ts +11 -0
  29. package/src/api/execution-details/queries/get-process-executions-by-process.query.ts +48 -0
  30. package/src/api/execution-details/queries/get-process-executions-by-process.server.ts +11 -0
  31. package/src/api/execution-details/queries/index.ts +2 -0
  32. package/src/api/process/mutations/copy-process.mutation.ts +48 -0
  33. package/src/api/process/mutations/copy-process.server.ts +14 -0
  34. package/src/api/process/mutations/index.ts +2 -0
  35. package/src/api/process/mutations/run-process.mutation.ts +41 -0
  36. package/src/api/process/mutations/run-process.server.ts +14 -0
  37. package/src/api/process/queries/get-process-by-id.query.ts +85 -0
  38. package/src/api/process/queries/get-process-by-id.server.ts +20 -0
  39. package/src/api/process/queries/index.ts +4 -0
  40. package/src/api/process-config/mutation/index.ts +2 -0
  41. package/src/api/process-config/mutation/process-config-import.mutation.ts +33 -0
  42. package/src/api/process-config/mutation/process-config-import.server.ts +14 -0
  43. package/src/api/process-config/mutation/process-config-merge.mutation.ts +33 -0
  44. package/src/api/process-config/mutation/process-config-merge.server.ts +14 -0
  45. package/src/api/process-task/queries/get-process-task-by-id.query.ts +45 -0
  46. package/src/api/process-task/queries/get-process-task-by-id.server.ts +9 -0
  47. package/src/api/process-task/queries/index.ts +1 -0
  48. package/src/api/scheduler/mutation/create-process-schedule-group-details.mutation.ts +47 -0
  49. package/src/api/scheduler/mutation/create-process-schedule-group-details.server.ts +14 -0
  50. package/src/api/scheduler/mutation/index.ts +2 -0
  51. package/src/api/scheduler/mutation/update-process-schedule-group-details.mutation.ts +47 -0
  52. package/src/api/scheduler/mutation/update-process-schedule-group-details.server.ts +14 -0
  53. package/src/api/scheduler/queries/get-non-scheduled-processes.query.ts +48 -0
  54. package/src/api/scheduler/queries/get-non-scheduled-processes.server.ts +11 -0
  55. package/src/api/scheduler/queries/get-process-schedule-group-details.query.ts +6 -3
  56. package/src/api/scheduler/queries/get-process-schedule-group-details.server.ts +3 -3
  57. package/src/api/scheduler/queries/get-process-schedule.query.ts +6 -3
  58. package/src/api/scheduler/queries/get-process-schedule.server.ts +3 -3
  59. package/src/api/scheduler/queries/get-scheduled-processes.query.ts +6 -3
  60. package/src/api/scheduler/queries/get-scheduled-processes.server.ts +1 -1
  61. package/src/api/scheduler/queries/index.ts +3 -2
  62. package/src/api/templates/queries/get-process-template-groups.query.ts +48 -0
  63. package/src/api/templates/queries/get-process-template-groups.server.ts +11 -0
  64. package/src/api/templates/queries/get-process-template-records.query.ts +48 -0
  65. package/src/api/templates/queries/get-process-template-records.server.ts +11 -0
  66. package/src/api/templates/queries/get-process-template.query.ts +48 -0
  67. package/src/api/templates/queries/get-process-template.server.ts +9 -0
  68. package/src/api/templates/queries/get-process-templates.query.ts +45 -0
  69. package/src/api/templates/queries/get-process-templates.server.ts +9 -0
  70. package/src/api/templates/queries/index.ts +5 -0
  71. package/src/api/templates/queries/template-input-search.query.ts +34 -0
  72. package/src/api/templates/queries/template-input-search.server.ts +35 -0
  73. package/src/api/templates/queries/types.ts +28 -0
  74. package/src/components/breadcrumbs/breadcrumbs.tsx +32 -5
  75. package/src/components/button/outlined-icon-button.tsx +2 -2
  76. package/src/components/core/date-time-popover.tsx +11 -4
  77. package/src/components/core/drawer-buttons.tsx +52 -0
  78. package/src/components/core/edited-typography.tsx +1 -1
  79. package/src/components/core/index.ts +4 -2
  80. package/src/components/core/loading.tsx +1 -1
  81. package/src/components/core/status-tag.tsx +97 -0
  82. package/src/components/core/title-edit.tsx +18 -11
  83. package/src/components/dashboard-list/dashboard-list-row.tsx +22 -29
  84. package/src/components/dashboard-list/dashboard-list.tsx +19 -15
  85. package/src/components/data-table/table-header.tsx +5 -7
  86. package/src/components/data-table/table-pagination.tsx +1 -1
  87. package/src/components/data-table/table-row.tsx +1 -1
  88. package/src/components/data-table/table-skeleton.tsx +9 -4
  89. package/src/components/execution/execution-filter.ts +1 -1
  90. package/src/components/execution/execution-status-icon.tsx +7 -7
  91. package/src/components/execution/execution-tag.tsx +12 -77
  92. package/src/components/execution/index.ts +1 -1
  93. package/src/components/execution-history-drawer/execution-history-drawer.tsx +203 -0
  94. package/src/components/execution-history-drawer/executions-card.tsx +85 -0
  95. package/src/components/execution-history-drawer/index.ts +1 -0
  96. package/src/components/footer/footer.tsx +10 -6
  97. package/src/components/header/dashboard-list-header.tsx +12 -7
  98. package/src/components/header/execution-details-header.tsx +35 -26
  99. package/src/components/header/header.tsx +10 -3
  100. package/src/components/header/index.ts +1 -1
  101. package/src/components/header/integration-details-header.tsx +104 -45
  102. package/src/components/integration-list/index.ts +3 -0
  103. package/src/components/integration-list/integration-filter.ts +21 -0
  104. package/src/components/integration-list/integration-status-icon.tsx +32 -0
  105. package/src/components/integration-list/integration-tag.tsx +33 -0
  106. package/src/components/integration-list/list/index.ts +1 -0
  107. package/src/components/integration-list/list/integration-list-row.tsx +161 -0
  108. package/src/components/integration-list/list/integration-list-table.tsx +62 -0
  109. package/src/components/integration-list/list/integration-list.tsx +258 -0
  110. package/src/components/integration-view/animated-svg.tsx +31 -0
  111. package/src/components/integration-view/edges/default-edge.tsx +1 -1
  112. package/src/components/integration-view/elk-layout-options.ts +2 -2
  113. package/src/components/integration-view/elk-types.ts +35 -6
  114. package/src/components/integration-view/flow-types.tsx +10 -0
  115. package/src/components/integration-view/integration-view.tsx +990 -55
  116. package/src/components/integration-view/nodes/empty-node.tsx +65 -0
  117. package/src/components/integration-view/nodes/entry-node.tsx +98 -4
  118. package/src/components/integration-view/nodes/execution-entry-node.tsx +107 -0
  119. package/src/components/integration-view/nodes/execution-task-node.tsx +88 -0
  120. package/src/components/integration-view/nodes/group-node.tsx +19 -13
  121. package/src/components/integration-view/nodes/row-node.tsx +19 -0
  122. package/src/components/integration-view/nodes/task-node.tsx +14 -8
  123. package/src/components/integration-view/task-icon.tsx +193 -0
  124. package/src/components/integration-view/temp-data/initialElements.tsx +36 -32
  125. package/src/components/integration-view/types.ts +2 -2
  126. package/src/components/layouts/main-layout.tsx +2 -3
  127. package/src/components/layouts/root-container.tsx +3 -6
  128. package/src/components/link-cards/link-card.tsx +15 -4
  129. package/src/components/link-cards/styles.ts +1 -1
  130. package/src/components/list-filter/date-filter.tsx +4 -3
  131. package/src/components/list-filter/date-range-filter.tsx +11 -5
  132. package/src/components/list-filter/index.ts +1 -1
  133. package/src/components/list-filter/list-filter.tsx +31 -26
  134. package/src/components/list-filter/multi-select-filter.tsx +11 -10
  135. package/src/components/list-filter/select-filter.tsx +13 -8
  136. package/src/components/scheduler/day-selector.tsx +29 -15
  137. package/src/components/scheduler/day-tag.tsx +14 -51
  138. package/src/components/scheduler/index.ts +2 -1
  139. package/src/components/scheduler/schedule-drawer/details-reducer.ts +217 -0
  140. package/src/components/scheduler/schedule-drawer/schedule-details-integrations.tsx +503 -0
  141. package/src/{pages → components}/scheduler/schedule-drawer/schedule-details-main.tsx +136 -99
  142. package/src/components/scheduler/schedule-drawer/schedule-details-name.tsx +94 -0
  143. package/src/{pages → components}/scheduler/schedule-drawer/schedule-details-skeleton.tsx +1 -2
  144. package/src/{pages → components}/scheduler/schedule-drawer/schedule-details.tsx +9 -13
  145. package/src/components/scheduler/schedule-drawer/schedule-drawer-group.tsx +218 -0
  146. package/src/{pages → components}/scheduler/schedule-drawer/schedule-drawer-legacy.tsx +6 -25
  147. package/src/components/scheduler/schedule-drawer/schedule-drawer.tsx +116 -0
  148. package/src/components/scheduler/schedule-drawer/sortable-integration-row.tsx +130 -0
  149. package/src/components/scheduler/schedule-filter.ts +1 -1
  150. package/src/components/scheduler/schedule-icon.tsx +5 -6
  151. package/src/components/scheduler/schedule-integration-icon.tsx +31 -0
  152. package/src/components/templates/index.ts +1 -0
  153. package/src/components/templates/inputs/index.tsx +1351 -0
  154. package/src/components/templates/template-filter.ts +5 -0
  155. package/src/components/templates/templates-list/index.ts +1 -0
  156. package/src/components/templates/templates-list/templates-list-row.tsx +55 -0
  157. package/src/components/templates/templates-list/templates-list-table.tsx +58 -0
  158. package/src/components/templates/templates-list/templates-list.tsx +253 -0
  159. package/src/components/templates/types.tsx +75 -0
  160. package/src/components/templates/wizard.tsx +689 -0
  161. package/src/hooks/use-breadcrumbs.ts +1 -1
  162. package/src/hooks/use-recurrence.tsx +1 -2
  163. package/src/pages/dashboard/dashboard-link-cards.tsx +8 -11
  164. package/src/pages/dashboard/dashboard-list-sections.tsx +7 -9
  165. package/src/pages/dashboard/dashboard.tsx +1 -2
  166. package/src/pages/execution-details/execution-details.tsx +211 -14
  167. package/src/pages/execution-details/task-execution-details.tsx +160 -0
  168. package/src/pages/execution-details/task-execution-drawer.tsx +54 -0
  169. package/src/pages/executions/executions-list/executions-list-row.tsx +21 -27
  170. package/src/pages/executions/executions-list/executions-list-table.tsx +28 -35
  171. package/src/pages/executions/executions-list/executions-list.tsx +24 -18
  172. package/src/pages/executions/executions.tsx +11 -15
  173. package/src/pages/integration-create/index.ts +1 -0
  174. package/src/pages/integration-create/integration-create.tsx +174 -0
  175. package/src/pages/integration-create/pre-creation-step.tsx +12 -0
  176. package/src/pages/integration-create/select-step.tsx +105 -0
  177. package/src/pages/integration-create/template-list-step.tsx +77 -0
  178. package/src/pages/integration-create/wizard-step.tsx +50 -0
  179. package/src/pages/integration-details/import-process/copy-tasks-list.tsx +265 -0
  180. package/src/pages/integration-details/import-process/copy-tasks-row.tsx +77 -0
  181. package/src/pages/integration-details/import-process/import-confirm.tsx +61 -0
  182. package/src/pages/integration-details/import-process/import-drawer.tsx +48 -0
  183. package/src/pages/integration-details/import-process/import-process-reducer.ts +90 -0
  184. package/src/pages/integration-details/import-process/import-process.tsx +149 -0
  185. package/src/pages/integration-details/index.ts +1 -0
  186. package/src/pages/integration-details/integration-details.tsx +221 -0
  187. package/src/pages/integration-details/task-drawer/add-task.tsx +120 -0
  188. package/src/pages/integration-details/task-drawer/edit-task.tsx +175 -0
  189. package/src/pages/integration-details/task-drawer/task-drawer.tsx +139 -0
  190. package/src/pages/integration-details/task-drawer/task-reducer.ts +73 -0
  191. package/src/pages/integrations/integrations.tsx +68 -8
  192. package/src/pages/scheduler/scheduler.tsx +12 -24
  193. package/src/pages/scheduler/schedules-list/schedules-list-row.tsx +27 -37
  194. package/src/pages/scheduler/schedules-list/schedules-list-table.tsx +27 -42
  195. package/src/pages/scheduler/schedules-list/schedules-list.tsx +48 -21
  196. package/src/utils/date-functions.ts +69 -0
  197. package/src/utils/slugify.ts +3 -0
  198. package/tsconfig.json +12 -4
  199. package/src/hooks/use-timestamp.tsx +0 -25
  200. package/src/pages/scheduler/schedule-drawer/schedule-details-integrations.tsx +0 -227
  201. package/src/pages/scheduler/schedule-drawer/schedule-details-name.tsx +0 -77
  202. package/src/pages/scheduler/schedule-drawer/schedule-drawer-buttons.tsx +0 -72
  203. package/src/pages/scheduler/schedule-drawer/schedule-drawer-group.tsx +0 -103
  204. package/src/pages/scheduler/schedule-drawer/schedule-drawer.tsx +0 -101
  205. package/src/pages/scheduler/schedule-drawer/sortable-integration-row.tsx +0 -93
  206. /package/src/{pages → components}/scheduler/schedule-drawer/edited/edited-types.ts +0 -0
  207. /package/src/{pages → components}/scheduler/schedule-drawer/edited/index.ts +0 -0
  208. /package/src/{pages → components}/scheduler/schedule-drawer/index.ts +0 -0
@@ -1,8 +1,11 @@
1
- import { useQuery, QueryClient, UseQueryOptions } from "@tanstack/react-query";
1
+ import type { GetScheduledProcessesQueryVariables } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
2
+ import {
3
+ type QueryClient,
4
+ type UseQueryOptions,
5
+ useQuery,
6
+ } from "@tanstack/react-query";
2
7
  import { queryFn } from "./get-scheduled-processes.server";
3
8
 
4
- import { GetScheduledProcessesQueryVariables } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
5
-
6
9
  export const buildScheduledProcessesQueryKey = {
7
10
  all: () => ["getScheduledProcesses"] as const,
8
11
  byInput: (variables?: GetScheduledProcessesQueryVariables) => [
@@ -1,6 +1,6 @@
1
1
  "use server";
2
+ import type { GetScheduledProcessesQueryVariables } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
2
3
  import createGraphqlclient from "@evenicanpm/admin-core/api/sdk/graphqlClient.client";
3
- import { GetScheduledProcessesQueryVariables } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
4
4
 
5
5
  export const queryFn = async (
6
6
  variables: GetScheduledProcessesQueryVariables,
@@ -1,3 +1,4 @@
1
- export { getScheduledProcesses } from "./get-scheduled-processes.query";
2
- export { getProcessScheduleGroupDetails } from "./get-process-schedule-group-details.query";
1
+ export { getNonScheduledProcesses } from "./get-non-scheduled-processes.query";
3
2
  export { getProcessScheduleById } from "./get-process-schedule.query";
3
+ export { getProcessScheduleGroupDetails } from "./get-process-schedule-group-details.query";
4
+ export { getScheduledProcesses } from "./get-scheduled-processes.query";
@@ -0,0 +1,48 @@
1
+ import type { GetProcessTemplateGroupsQueryVariables } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
2
+ import {
3
+ type QueryClient,
4
+ type UseQueryOptions,
5
+ useQuery,
6
+ } from "@tanstack/react-query";
7
+ import { queryFn } from "./get-process-template-groups.server";
8
+
9
+ export const buildProcessTemplateGroupsQueryKey = {
10
+ all: () => ["getProcessTemplateGroups"] as const,
11
+ byInput: (variables?: GetProcessTemplateGroupsQueryVariables) => [
12
+ "getProcessTemplateGroups",
13
+ variables,
14
+ ],
15
+ };
16
+
17
+ export const getProcessTemplateGroups = {
18
+ queryKey: buildProcessTemplateGroupsQueryKey.all(),
19
+
20
+ prefetch: (
21
+ queryClient: QueryClient,
22
+ variables: GetProcessTemplateGroupsQueryVariables,
23
+ ) =>
24
+ queryClient.prefetchQuery({
25
+ queryKey: buildProcessTemplateGroupsQueryKey.byInput(variables),
26
+ queryFn: () => queryFn(variables),
27
+ }),
28
+
29
+ fetchData: async (
30
+ queryClient: QueryClient,
31
+ variables: GetProcessTemplateGroupsQueryVariables,
32
+ ) => {
33
+ return await queryClient.fetchQuery({
34
+ queryKey: buildProcessTemplateGroupsQueryKey.byInput(variables),
35
+ queryFn: () => queryFn(variables),
36
+ });
37
+ },
38
+
39
+ useData: (
40
+ variables: GetProcessTemplateGroupsQueryVariables,
41
+ options?: UseQueryOptions,
42
+ ) =>
43
+ useQuery({
44
+ queryKey: buildProcessTemplateGroupsQueryKey.byInput(variables),
45
+ queryFn: () => queryFn(variables),
46
+ ...options,
47
+ }),
48
+ };
@@ -0,0 +1,11 @@
1
+ "use server";
2
+ import type { GetProcessTemplateGroupsQueryVariables } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
3
+ import createGraphqlclient from "@evenicanpm/admin-core/api/sdk/graphqlClient.client";
4
+
5
+ export const queryFn = async (
6
+ variables: GetProcessTemplateGroupsQueryVariables,
7
+ ) => {
8
+ const sdk = await createGraphqlclient();
9
+ const { data } = await sdk.GetProcessTemplateGroups(variables);
10
+ return data;
11
+ };
@@ -0,0 +1,48 @@
1
+ import type { GetProcessTemplateRecordsQueryVariables } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
2
+ import {
3
+ type QueryClient,
4
+ type UseQueryOptions,
5
+ useQuery,
6
+ } from "@tanstack/react-query";
7
+ import { queryFn } from "./get-process-template-records.server";
8
+
9
+ export const buildProcessTemplateRecordsQueryKey = {
10
+ all: () => ["getProcessTemplateRecords"] as const,
11
+ byInput: (variables?: GetProcessTemplateRecordsQueryVariables) => [
12
+ "getProcessTemplateRecords",
13
+ variables,
14
+ ],
15
+ };
16
+
17
+ export const getProcessTemplateRecords = {
18
+ queryKey: buildProcessTemplateRecordsQueryKey.all(),
19
+
20
+ prefetch: (
21
+ queryClient: QueryClient,
22
+ variables: GetProcessTemplateRecordsQueryVariables,
23
+ ) =>
24
+ queryClient.prefetchQuery({
25
+ queryKey: buildProcessTemplateRecordsQueryKey.byInput(variables),
26
+ queryFn: () => queryFn(variables),
27
+ }),
28
+
29
+ fetchData: async (
30
+ queryClient: QueryClient,
31
+ variables: GetProcessTemplateRecordsQueryVariables,
32
+ ) => {
33
+ return await queryClient.fetchQuery({
34
+ queryKey: buildProcessTemplateRecordsQueryKey.byInput(variables),
35
+ queryFn: () => queryFn(variables),
36
+ });
37
+ },
38
+
39
+ useData: (
40
+ variables: GetProcessTemplateRecordsQueryVariables,
41
+ options?: UseQueryOptions,
42
+ ) =>
43
+ useQuery({
44
+ queryKey: buildProcessTemplateRecordsQueryKey.byInput(variables),
45
+ queryFn: () => queryFn(variables),
46
+ ...options,
47
+ }),
48
+ };
@@ -0,0 +1,11 @@
1
+ "use server";
2
+ import type { GetProcessTemplateRecordsQueryVariables } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
3
+ import createGraphqlclient from "@evenicanpm/admin-core/api/sdk/graphqlClient.client";
4
+
5
+ export const queryFn = async (
6
+ variables: GetProcessTemplateRecordsQueryVariables,
7
+ ) => {
8
+ const sdk = await createGraphqlclient();
9
+ const { data } = await sdk.GetProcessTemplateRecords(variables);
10
+ return data;
11
+ };
@@ -0,0 +1,48 @@
1
+ import type { GetProcessTemplateQueryVariables } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
2
+ import {
3
+ type QueryClient,
4
+ type UseQueryOptions,
5
+ useQuery,
6
+ } from "@tanstack/react-query";
7
+ import { queryFn } from "./get-process-template.server";
8
+
9
+ export const buildProcessTemplateQueryKey = {
10
+ all: () => ["getProcessTemplate"] as const,
11
+ byInput: (variables?: GetProcessTemplateQueryVariables) => [
12
+ "getProcessTemplate",
13
+ variables,
14
+ ],
15
+ };
16
+
17
+ export const getProcessTemplate = {
18
+ queryKey: buildProcessTemplateQueryKey.all(),
19
+
20
+ prefetch: (
21
+ queryClient: QueryClient,
22
+ variables: GetProcessTemplateQueryVariables,
23
+ ) =>
24
+ queryClient.prefetchQuery({
25
+ queryKey: buildProcessTemplateQueryKey.byInput(variables),
26
+ queryFn: () => queryFn(variables),
27
+ }),
28
+
29
+ fetchData: async (
30
+ queryClient: QueryClient,
31
+ variables: GetProcessTemplateQueryVariables,
32
+ ) => {
33
+ return await queryClient.fetchQuery({
34
+ queryKey: buildProcessTemplateQueryKey.byInput(variables),
35
+ queryFn: () => queryFn(variables),
36
+ });
37
+ },
38
+
39
+ useData: (
40
+ variables: GetProcessTemplateQueryVariables,
41
+ options?: UseQueryOptions,
42
+ ) =>
43
+ useQuery({
44
+ queryKey: buildProcessTemplateQueryKey.byInput(variables),
45
+ queryFn: () => queryFn(variables),
46
+ ...options,
47
+ }),
48
+ };
@@ -0,0 +1,9 @@
1
+ "use server";
2
+ import type { GetProcessTemplateQueryVariables } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
3
+ import createGraphqlclient from "@evenicanpm/admin-core/api/sdk/graphqlClient.client";
4
+
5
+ export const queryFn = async (variables: GetProcessTemplateQueryVariables) => {
6
+ const sdk = await createGraphqlclient();
7
+ const { data } = await sdk.GetProcessTemplate(variables);
8
+ return data;
9
+ };
@@ -0,0 +1,45 @@
1
+ import type { GetProcessTemplatesQueryVariables } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
2
+ import {
3
+ type QueryClient,
4
+ type UseQueryOptions,
5
+ useQuery,
6
+ } from "@tanstack/react-query";
7
+ import { queryFn } from "./get-process-templates.server";
8
+
9
+ export const buildProcessTemplatesQueryKey = {
10
+ byInput: (variables?: GetProcessTemplatesQueryVariables) => [
11
+ "getProcessTemplates",
12
+ variables,
13
+ ],
14
+ };
15
+
16
+ export const getProcessTemplates = {
17
+ prefetch: (
18
+ queryClient: QueryClient,
19
+ variables: GetProcessTemplatesQueryVariables,
20
+ ) =>
21
+ queryClient.prefetchQuery({
22
+ queryKey: buildProcessTemplatesQueryKey.byInput(variables),
23
+ queryFn: () => queryFn(variables),
24
+ }),
25
+
26
+ fetchData: async (
27
+ queryClient: QueryClient,
28
+ variables: GetProcessTemplatesQueryVariables,
29
+ ) => {
30
+ return await queryClient.fetchQuery({
31
+ queryKey: buildProcessTemplatesQueryKey.byInput(variables),
32
+ queryFn: () => queryFn(variables),
33
+ });
34
+ },
35
+
36
+ useData: (
37
+ variables: GetProcessTemplatesQueryVariables,
38
+ options?: UseQueryOptions,
39
+ ) =>
40
+ useQuery({
41
+ queryKey: buildProcessTemplatesQueryKey.byInput(variables),
42
+ queryFn: () => queryFn(variables),
43
+ ...options,
44
+ }),
45
+ };
@@ -0,0 +1,9 @@
1
+ "use server";
2
+ import type { GetProcessTemplatesQueryVariables } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
3
+ import createGraphqlclient from "@evenicanpm/admin-core/api/sdk/graphqlClient.client";
4
+
5
+ export const queryFn = async (variables: GetProcessTemplatesQueryVariables) => {
6
+ const sdk = await createGraphqlclient();
7
+ const { data } = await sdk.GetProcessTemplates(variables);
8
+ return data;
9
+ };
@@ -0,0 +1,5 @@
1
+ export { getProcessTemplate } from "./get-process-template.query";
2
+ export { getProcessTemplateGroups } from "./get-process-template-groups.query";
3
+ export { getProcessTemplateRecords } from "./get-process-template-records.query";
4
+ export { getProcessTemplates } from "./get-process-templates.query";
5
+ export { templateInputSearch } from "./template-input-search.query";
@@ -0,0 +1,34 @@
1
+ import type {
2
+ GetDataDescriptionsQueryVariables,
3
+ GetSourceEndpointsQueryVariables,
4
+ } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
5
+ import { type UseQueryOptions, useQuery } from "@tanstack/react-query";
6
+ import { queryFn } from "./template-input-search.server";
7
+ import type {
8
+ TemplateInputSearchQueryKey,
9
+ TemplateInputSearchQueryVariables,
10
+ } from "./types";
11
+
12
+ export const buildTemplateSearchQueryKey = {
13
+ getSourceEndpoints: (variables: GetSourceEndpointsQueryVariables) => [
14
+ "getSourceEndpoints",
15
+ variables,
16
+ ],
17
+ getDataDescriptions: (variables: GetDataDescriptionsQueryVariables) => [
18
+ "getDataDescriptions",
19
+ variables,
20
+ ],
21
+ };
22
+
23
+ export const templateInputSearch = {
24
+ useData: (
25
+ variables: TemplateInputSearchQueryVariables,
26
+ queryKey: TemplateInputSearchQueryKey,
27
+ options?: UseQueryOptions,
28
+ ) =>
29
+ useQuery({
30
+ queryKey: buildTemplateSearchQueryKey[queryKey](variables),
31
+ queryFn: () => queryFn(variables, queryKey),
32
+ ...options,
33
+ }),
34
+ };
@@ -0,0 +1,35 @@
1
+ "use server";
2
+ import type {
3
+ GetDataDescriptionsQueryVariables,
4
+ GetSourceEndpointsQueryVariables,
5
+ } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
6
+ import createGraphqlclient from "@evenicanpm/admin-core/api/sdk/graphqlClient.client";
7
+ import type {
8
+ TemplateInputSearchQueryKey,
9
+ TemplateInputSearchQueryVariables,
10
+ } from "./types";
11
+
12
+ export const queryFn = async (
13
+ variables: TemplateInputSearchQueryVariables,
14
+ queryKey: TemplateInputSearchQueryKey,
15
+ ) => {
16
+ const sdk = await createGraphqlclient();
17
+
18
+ switch (queryKey) {
19
+ case "getSourceEndpoints": {
20
+ const { data } = await sdk.GetSourceEndpoints(
21
+ variables as GetSourceEndpointsQueryVariables,
22
+ );
23
+ return data;
24
+ }
25
+ case "getDataDescriptions": {
26
+ const { data } = await sdk.GetDataDescriptions(
27
+ variables as GetDataDescriptionsQueryVariables,
28
+ );
29
+ return data;
30
+ }
31
+ default: {
32
+ throw new Error(`queryKey "${queryKey}" invalid`);
33
+ }
34
+ }
35
+ };
@@ -0,0 +1,28 @@
1
+ import type {
2
+ GetDataDescriptionsQuery,
3
+ GetDataDescriptionsQueryVariables,
4
+ GetSourceEndpointsQuery,
5
+ GetSourceEndpointsQueryVariables,
6
+ } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
7
+
8
+ export type TemplateInputSearchQueryVariables =
9
+ | GetSourceEndpointsQueryVariables
10
+ | GetDataDescriptionsQueryVariables;
11
+
12
+ export type TemplateInputSearchQuery =
13
+ | GetSourceEndpointsQuery
14
+ | GetDataDescriptionsQuery;
15
+
16
+ export type TemplateInputSearchQueryKey =
17
+ | "getSourceEndpoints"
18
+ | "getDataDescriptions";
19
+
20
+ export const isTemplateInputSearchQueryKey = (
21
+ qn: string,
22
+ ): qn is TemplateInputSearchQueryKey => {
23
+ const keys: TemplateInputSearchQueryKey[] = [
24
+ "getSourceEndpoints",
25
+ "getDataDescriptions",
26
+ ];
27
+ return keys.includes(qn as TemplateInputSearchQueryKey);
28
+ };
@@ -1,15 +1,18 @@
1
- import React from "react";
2
- import Link from "next/link";
3
-
1
+ import ArrowBackIosIcon from "@mui/icons-material/ArrowBackIos";
2
+ import { Breadcrumbs, Button, Typography } from "@mui/material";
4
3
  // MUI
5
4
  import styled from "@mui/material/styles/styled";
6
- import { Breadcrumbs, Typography } from "@mui/material";
5
+ import Link from "next/link";
6
+ import { usePathname, useRouter } from "next/navigation";
7
7
 
8
- import { Crumb } from "./types";
8
+ import type { Crumb } from "./types";
9
9
 
10
10
  // STYLED COMPONENTS
11
11
  export const Wrapper = styled("div")(({ theme }) => ({
12
12
  padding: theme.spacing(0, 1, 3),
13
+ display: "flex",
14
+ alignItems: "center",
15
+ justifyContent: "space-between",
13
16
  }));
14
17
 
15
18
  type Props = {
@@ -17,6 +20,13 @@ type Props = {
17
20
  };
18
21
 
19
22
  export default function IntegrateBreadcrumbs({ breadcrumbs }: Props) {
23
+ const router = useRouter();
24
+ const pathname = usePathname();
25
+
26
+ const showBackButton = /^\/e4integrate\/(integrations|executions)\/\w+/.test(
27
+ pathname || "",
28
+ );
29
+
20
30
  return (
21
31
  <Wrapper>
22
32
  <Breadcrumbs>
@@ -34,6 +44,23 @@ export default function IntegrateBreadcrumbs({ breadcrumbs }: Props) {
34
44
  ),
35
45
  )}
36
46
  </Breadcrumbs>
47
+ {showBackButton ? (
48
+ <Button
49
+ variant="text"
50
+ size="small"
51
+ color="info"
52
+ onClick={() => router.back()}
53
+ sx={{
54
+ textTransform: "none",
55
+ minWidth: "auto",
56
+ backgroundColor: "transparent",
57
+ }}
58
+ >
59
+ <ArrowBackIosIcon sx={{ width: "14px" }} /> Back
60
+ </Button>
61
+ ) : (
62
+ <div />
63
+ )}
37
64
  </Wrapper>
38
65
  );
39
66
  }
@@ -1,5 +1,5 @@
1
- import React from "react";
2
- import { IconButton, IconButtonProps } from "@mui/material";
1
+ import { IconButton, type IconButtonProps } from "@mui/material";
2
+ import type React from "react";
3
3
 
4
4
  interface Props extends IconButtonProps {
5
5
  children: React.ReactNode;
@@ -1,5 +1,12 @@
1
- import { Theme, useTheme } from "@mui/material";
2
- import { Popover, Box, Typography, PopoverProps } from "@mui/material";
1
+ import { toLongDate } from "@evenicanpm/admin-integrate/utils/date-functions";
2
+ import {
3
+ Box,
4
+ Popover,
5
+ type PopoverProps,
6
+ type Theme,
7
+ Typography,
8
+ useTheme,
9
+ } from "@mui/material";
3
10
 
4
11
  interface Props extends PopoverProps {
5
12
  dateIsoString: string;
@@ -12,12 +19,12 @@ export default function DateTimePopover({
12
19
  const theme = useTheme();
13
20
  const styles = getStyles(theme);
14
21
 
15
- const date = new Date(dateIsoString);
22
+ const formatted = toLongDate(dateIsoString);
16
23
 
17
24
  return (
18
25
  <Popover {...popoverProps}>
19
26
  <Box sx={styles.popover}>
20
- <Typography>{date.toString()}</Typography>
27
+ <Typography>{formatted}</Typography>
21
28
  </Box>
22
29
  </Popover>
23
30
  );
@@ -0,0 +1,52 @@
1
+ import { OutlinedIconButton } from "@evenicanpm/admin-integrate/components/button";
2
+ import { Clear } from "@mui/icons-material";
3
+ import { Box, Divider, Stack, type Theme, useTheme } from "@mui/material";
4
+
5
+ interface Props {
6
+ handleClose: () => void;
7
+ children?: React.ReactNode; // e.g. add button, save button, etc.
8
+ }
9
+
10
+ export default function DrawerButtons(props: Props) {
11
+ const theme = useTheme();
12
+ const styles = getStyles(theme);
13
+
14
+ return (
15
+ <>
16
+ <Box sx={styles.buttons} display="flex" justifyContent="flex-end">
17
+ {/* <IconButton onClick={props.handleClose}>
18
+ <KeyboardDoubleArrowRightOutlined />
19
+ </IconButton> */}
20
+ <Stack spacing={1} direction="row">
21
+ {props.children}
22
+ <OutlinedIconButton
23
+ onClick={props.handleClose}
24
+ sx={styles.closeButton}
25
+ >
26
+ <Clear />
27
+ </OutlinedIconButton>
28
+ </Stack>
29
+ </Box>
30
+ <Divider sx={styles.divider} />
31
+ </>
32
+ );
33
+ }
34
+
35
+ const getStyles = (theme: Theme) => {
36
+ return {
37
+ buttons: {
38
+ padding: theme.spacing(2),
39
+ backgroundColor: "grey.100",
40
+ },
41
+ closeButton: {
42
+ backgroundColor: "error.main",
43
+ "&:hover": {
44
+ backgroundColor: "error.500",
45
+ },
46
+ color: "white",
47
+ },
48
+ divider: {
49
+ borderColor: "grey.400",
50
+ },
51
+ };
52
+ };
@@ -1,5 +1,5 @@
1
- import { useTranslations } from "next-intl";
2
1
  import { Typography } from "@mui/material";
2
+ import { useTranslations } from "next-intl";
3
3
 
4
4
  interface Props {
5
5
  edited: boolean;
@@ -1,4 +1,6 @@
1
- export { default as Loading } from "./loading";
2
1
  export { default as DateTimePopover } from "./date-time-popover";
3
- export { default as TitleEdit } from "./title-edit";
2
+ export { default as DrawerButtons } from "./drawer-buttons";
4
3
  export { default as EditedTypography } from "./edited-typography";
4
+ export { default as Loading } from "./loading";
5
+ export { default as StatusTag } from "./status-tag";
6
+ export { default as TitleEdit } from "./title-edit";
@@ -1,6 +1,6 @@
1
- import CircularProgress from "@mui/material/CircularProgress";
2
1
  import FlexRowCenter from "@evenicanpm/admin-core/components/flex-box/flex-row-center";
3
2
  import { useTheme } from "@mui/material";
3
+ import CircularProgress from "@mui/material/CircularProgress";
4
4
 
5
5
  const Loading = () => {
6
6
  const theme = useTheme();
@@ -0,0 +1,97 @@
1
+ import { Box, type SxProps, Typography } from "@mui/material";
2
+ import { styled } from "@mui/material/styles";
3
+
4
+ // Styled components
5
+ const StyledTagBox = styled(Box)(({ theme }) => ({
6
+ padding: theme.spacing(0, 1.5),
7
+ border: "solid 1px",
8
+ borderRadius: 4,
9
+ alignContent: "center",
10
+ maxWidth: "fit-content",
11
+ maxHeight: "fit-content",
12
+ }));
13
+ const StyledTag = styled(Typography)(() => ({
14
+ fontWeight: "bold",
15
+ }));
16
+
17
+ type Status = "info" | "success" | "warning" | "error" | "unavailable";
18
+
19
+ interface Props {
20
+ type: Status;
21
+ text: string;
22
+ sx?: SxProps;
23
+ }
24
+
25
+ export default function StatusTag(props: Props) {
26
+ const statusTagMap: { [key in Status]: React.ReactNode } = {
27
+ info: (
28
+ <StyledTagBox
29
+ sx={{
30
+ backgroundColor: "info.100",
31
+ borderColor: "info.main",
32
+ ...props.sx,
33
+ }}
34
+ >
35
+ <StyledTag color="info" variant="caption">
36
+ {props.text}
37
+ </StyledTag>
38
+ </StyledTagBox>
39
+ ),
40
+ success: (
41
+ <StyledTagBox
42
+ sx={{
43
+ backgroundColor: "success.100",
44
+ borderColor: "success.main",
45
+ ...props.sx,
46
+ }}
47
+ >
48
+ <StyledTag color="success" variant="caption">
49
+ {props.text}
50
+ </StyledTag>
51
+ </StyledTagBox>
52
+ ),
53
+ warning: (
54
+ <StyledTagBox
55
+ sx={{
56
+ backgroundColor: "warning.100",
57
+ borderColor: "orange.700",
58
+ color: "orange.700",
59
+ ...props.sx,
60
+ }}
61
+ >
62
+ <StyledTag color="inherit" variant="caption">
63
+ {props.text}
64
+ </StyledTag>
65
+ </StyledTagBox>
66
+ ),
67
+ error: (
68
+ <StyledTagBox
69
+ sx={{
70
+ backgroundColor: "error.100",
71
+ borderColor: "error.main",
72
+ ...props.sx,
73
+ }}
74
+ >
75
+ <StyledTag color="error" variant="caption">
76
+ {props.text}
77
+ </StyledTag>
78
+ </StyledTagBox>
79
+ ),
80
+ unavailable: (
81
+ <StyledTagBox
82
+ sx={{
83
+ backgroundColor: "grey.300",
84
+ borderColor: "grey.700",
85
+ color: "grey.700",
86
+ ...props.sx,
87
+ }}
88
+ >
89
+ <StyledTag color="inherit" variant="caption">
90
+ {props.text}
91
+ </StyledTag>
92
+ </StyledTagBox>
93
+ ),
94
+ };
95
+
96
+ return statusTagMap[props.type] || statusTagMap["unavailable" as Status];
97
+ }