@provoly/dashboard 1.4.18 → 1.4.20

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 (190) hide show
  1. package/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.d.ts +2 -3
  2. package/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.d.ts +2 -3
  3. package/admin/components/admin-classes/store/admin-class.effects.d.ts +22 -8
  4. package/admin/components/admin-dataset/store/admin-dataset.effects.d.ts +13 -5
  5. package/admin/components/admin-fields/store/fields.effects.d.ts +7 -5
  6. package/admin/store/admin.effects.d.ts +3 -1
  7. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +3 -3
  8. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +3 -3
  9. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +3 -3
  10. package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +4 -4
  11. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +2 -2
  12. package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +2 -2
  13. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +2 -2
  14. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +5 -6
  15. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +3 -3
  16. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +5 -6
  17. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +4 -4
  18. package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +3 -3
  19. package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +14 -13
  20. package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +3 -3
  21. package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs +3 -3
  22. package/esm2022/admin/components/admin-dataset/store/admin-dataset.effects.mjs +7 -8
  23. package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +2 -2
  24. package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +2 -2
  25. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +2 -2
  26. package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +4 -4
  27. package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +7 -10
  28. package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +3 -3
  29. package/esm2022/admin/components/admin-links/admin-links.component.mjs +3 -3
  30. package/esm2022/admin/components/admin-links/store/links.effects.mjs +2 -2
  31. package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +2 -2
  32. package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +2 -2
  33. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +2 -2
  34. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +2 -2
  35. package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +2 -2
  36. package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +2 -2
  37. package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +2 -2
  38. package/esm2022/admin/components/shared/add-category-modal/add-category-modal.component.mjs +2 -2
  39. package/esm2022/admin/store/admin.effects.mjs +2 -2
  40. package/esm2022/components/metadata-editor/store/metadata.effects.mjs +2 -2
  41. package/esm2022/components/text-editor/component/text-editor.component.mjs +2 -2
  42. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -4
  43. package/esm2022/dataset/components/dataset.component.mjs +4 -4
  44. package/esm2022/filters/autocomplete/autocomplete.component.mjs +4 -4
  45. package/esm2022/filters/number/number-filter.component.mjs +2 -2
  46. package/esm2022/filters/text/text-filter.component.mjs +2 -2
  47. package/esm2022/import/components/form/import-form.component.mjs +2 -2
  48. package/esm2022/import/components/list/import-list.component.mjs +2 -2
  49. package/esm2022/import/store/import.effects.mjs +2 -2
  50. package/esm2022/lib/core/components/select/select.component.mjs +2 -2
  51. package/esm2022/lib/core/components/share/access-rights-share-modal/access-rights-share-modal.component.mjs +3 -3
  52. package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +2 -2
  53. package/esm2022/lib/core/components/upload/upload.component.mjs +2 -2
  54. package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +2 -2
  55. package/esm2022/lib/core/model/filter.interface.mjs +1 -1
  56. package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +3 -4
  57. package/esm2022/lib/core/store/category/category.actions.mjs +3 -3
  58. package/esm2022/lib/core/store/category/category.effects.mjs +10 -6
  59. package/esm2022/lib/core/store/class/class.actions.mjs +3 -3
  60. package/esm2022/lib/core/store/class/class.effects.mjs +10 -6
  61. package/esm2022/lib/core/store/config/config.actions.mjs +2 -2
  62. package/esm2022/lib/core/store/config/config.effects.mjs +13 -8
  63. package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +2 -2
  64. package/esm2022/lib/core/store/data-source/data-source.actions.mjs +8 -8
  65. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +21 -21
  66. package/esm2022/lib/core/store/field/field.actions.mjs +3 -3
  67. package/esm2022/lib/core/store/field/field.effects.mjs +10 -6
  68. package/esm2022/lib/core/store/image/image.effects.mjs +2 -2
  69. package/esm2022/lib/core/store/item/item.effects.mjs +2 -2
  70. package/esm2022/lib/core/store/relation-types/relation-types.actions.mjs +4 -4
  71. package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +11 -10
  72. package/esm2022/lib/core/store/search/search.actions.mjs +1 -1
  73. package/esm2022/lib/core/store/search/search.effects.mjs +3 -2
  74. package/esm2022/lib/core/store/search/search.selectors.mjs +3 -1
  75. package/esm2022/lib/core/store/search/search.service.mjs +4 -9
  76. package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +2 -2
  77. package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +2 -2
  78. package/esm2022/lib/dashboard/components/dashboard.component.mjs +29 -23
  79. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +3 -4
  80. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +2 -2
  81. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +2 -2
  82. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +2 -2
  83. package/esm2022/lib/dashboard/store/manifest.service.mjs +2 -2
  84. package/esm2022/lib/dashboard/store/refresh.service.mjs +2 -2
  85. package/esm2022/lib/dashboard/store/wms.service.mjs +2 -2
  86. package/esm2022/notification/components/notification/content/notification-content.component.mjs +2 -2
  87. package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +3 -5
  88. package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +2 -2
  89. package/esm2022/pipeline/store/pipeline.effects.mjs +2 -2
  90. package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +2 -3
  91. package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +2 -2
  92. package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +2 -2
  93. package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +2 -2
  94. package/esm2022/restitution/components/restitution/restitution.component.mjs +5 -5
  95. package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +2 -2
  96. package/esm2022/search/search-home/search-home.component.mjs +3 -4
  97. package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +2 -2
  98. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +2 -2
  99. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +1 -1
  100. package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +2 -2
  101. package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +2 -2
  102. package/esm2022/search/search-tools/search-tools.component.mjs +5 -6
  103. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +2 -2
  104. package/esm2022/toolbox/components/named-query/named-query.component.mjs +2 -2
  105. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +2 -2
  106. package/esm2022/toolbox/components/toolbox.component.mjs +2 -2
  107. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +2 -2
  108. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +2 -2
  109. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +2 -2
  110. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +2 -2
  111. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +10 -13
  112. package/esm2022/widgets/widget-image/component/widget-image.component.mjs +2 -2
  113. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +3 -3
  114. package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +2 -2
  115. package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +2 -2
  116. package/esm2022/widgets/widget-template/component/widget-template.component.mjs +2 -2
  117. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +2 -2
  118. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +2 -2
  119. package/fesm2022/provoly-dashboard-admin.mjs +121 -123
  120. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  121. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +12 -13
  122. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
  123. package/fesm2022/provoly-dashboard-components-text-editor.mjs +1 -2
  124. package/fesm2022/provoly-dashboard-components-text-editor.mjs.map +1 -1
  125. package/fesm2022/provoly-dashboard-dataset.mjs +5 -6
  126. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  127. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +3 -3
  128. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
  129. package/fesm2022/provoly-dashboard-filters-number.mjs +1 -2
  130. package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
  131. package/fesm2022/provoly-dashboard-filters-text.mjs +1 -2
  132. package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
  133. package/fesm2022/provoly-dashboard-import.mjs +5 -6
  134. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  135. package/fesm2022/provoly-dashboard-notification.mjs +3 -4
  136. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
  137. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +2 -3
  138. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
  139. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +2 -2
  140. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
  141. package/fesm2022/provoly-dashboard-pipeline.mjs +16 -18
  142. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
  143. package/fesm2022/provoly-dashboard-restitution.mjs +4 -4
  144. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  145. package/fesm2022/provoly-dashboard-search.mjs +19 -20
  146. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  147. package/fesm2022/provoly-dashboard-toolbox.mjs +3 -4
  148. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  149. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +1 -2
  150. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  151. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +1 -2
  152. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  153. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -2
  154. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  155. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +1 -2
  156. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  157. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +8 -12
  158. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  159. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +1 -1
  160. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -1
  161. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +2 -3
  162. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  163. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +1 -2
  164. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
  165. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +1 -2
  166. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  167. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -2
  168. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  169. package/fesm2022/provoly-dashboard.mjs +989 -975
  170. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  171. package/lib/core/model/filter.interface.d.ts +1 -0
  172. package/lib/core/store/category/category.actions.d.ts +7 -3
  173. package/lib/core/store/category/category.effects.d.ts +4 -2
  174. package/lib/core/store/class/class.actions.d.ts +7 -3
  175. package/lib/core/store/class/class.effects.d.ts +4 -2
  176. package/lib/core/store/config/config.actions.d.ts +5 -1
  177. package/lib/core/store/config/config.effects.d.ts +12 -4
  178. package/lib/core/store/data-source/data-source.actions.d.ts +23 -11
  179. package/lib/core/store/data-source/data-source.effects.d.ts +23 -15
  180. package/lib/core/store/field/field.actions.d.ts +7 -3
  181. package/lib/core/store/field/field.effects.d.ts +4 -2
  182. package/lib/core/store/relation-types/relation-types.actions.d.ts +9 -5
  183. package/lib/core/store/relation-types/relation-types.effects.d.ts +8 -6
  184. package/lib/core/store/search/search.actions.d.ts +2 -0
  185. package/lib/core/store/search/search.selectors.d.ts +5 -0
  186. package/lib/core/store/search/search.service.d.ts +1 -1
  187. package/lib/dashboard/components/dashboard.component.d.ts +5 -3
  188. package/package.json +11 -11
  189. package/search/search-mono-class/store/search-mono-class.effects.d.ts +1 -1
  190. package/widgets/widget-graph/component/widget-graph.component.d.ts +2 -5
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-pipeline.mjs","sources":["../../../../projects/provoly/dashboard/pipeline/store/pipeline.actions.ts","../../../../projects/provoly/dashboard/pipeline/store/pipeline.reducer.ts","../../../../projects/provoly/dashboard/pipeline/store/pipeline.selectors.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-details/pipeline-details.component.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-details/pipeline-details.component.html","../../../../projects/provoly/dashboard/pipeline/node-class/base-node.class.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-editor/graph-serializer.utils.ts","../../../../projects/provoly/dashboard/pipeline/factory/pipeline-component-factory.service.ts","../../../../projects/provoly/dashboard/pipeline/style/css.component.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-editor/pipeline-editor.component.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-editor/pipeline-editor.component.html","../../../../projects/provoly/dashboard/pipeline/components/pipeline-editor/pipeline.interface.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-list/pipeline-list.component.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-list/pipeline-list.component.html","../../../../projects/provoly/dashboard/pipeline/i18n/en.translations.ts","../../../../projects/provoly/dashboard/pipeline/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/pipeline/store/pipeline.service.ts","../../../../projects/provoly/dashboard/pipeline/store/pipeline.effects.ts","../../../../projects/provoly/dashboard/pipeline/pipeline.module.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-properties-panel.component.ts","../../../../projects/provoly/dashboard/pipeline/provoly-dashboard-pipeline.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { PryTransfo } from '../components/pipeline-editor/pipeline.interface';\n\nexport interface PipelineError {\n code: string;\n\n [name: string]: any;\n}\n\nexport interface NodePipelineError extends PipelineError {\n nodeId: string;\n}\n\nexport interface NodeStatusModel {\n attributes: { technicalName: string; type: string }[];\n}\n\nexport interface NodeStatus {\n nodeId: string;\n outModel: NodeStatusModel;\n errors: NodePipelineError[];\n}\n\nexport interface PipelineResponse {\n id: string;\n errors: PipelineError[];\n status: NodeStatus[];\n}\n\nexport const PipelineActions = {\n select: createAction('[Pipeline] select', props<{ id: string }>()),\n setResponse: createAction('[Pipeline] set response', props<{ response: PipelineResponse }>()),\n check: createAction('[Pipeline] check', props<{ graph: any; fetch?: boolean }>()),\n fetchTransfosList: createAction('[Pipeline] fetching available transfos'),\n fetchTransfosListSuccess: createAction('[Pipeline] received transfos', props<{ transfos: PryTransfo[] }>()),\n fetchTransfosListFailure: createAction('[Pipeline] failure transfos', props<{ error: any }>()),\n toggleActivation: createAction('[Pipeline] toggle transfo activation', props<{ transfo: PryTransfo }>()),\n activationError: createAction('[Pipeline] Error on toggle activate', props<{ id: string; error: any }>()),\n executeTransfo: createAction('[Pipeline] execute transfo', props<{ id: string }>()),\n getTransformation: createAction('[Pipeline] get transformation by id', props<{ id: string }>()),\n getTransformationSuccess: createAction(\n '[Pipeline] get transformation by id success',\n props<{ transfo: PryTransfo }>()\n )\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { PryTransfo } from '../components/pipeline-editor/pipeline.interface';\nimport { PipelineActions, PipelineResponse } from './pipeline.actions';\n\nexport const pipelineFeatureKey = '@pry/pipeline';\n\nexport interface PipelineState {\n selectedNode: string;\n checkResponse: PipelineResponse | undefined;\n transfos: PryTransfo[];\n error: any;\n activeError: any;\n loading: boolean;\n}\n\nexport const initialPipelineState: PipelineState = {\n selectedNode: '',\n checkResponse: undefined,\n transfos: [],\n error: undefined,\n activeError: undefined,\n loading: false\n};\n\nexport const pipelineReducer = createReducer(\n initialPipelineState,\n on(PipelineActions.select, (state, action) => ({\n ...state,\n selectedNode: action.id\n })),\n on(PipelineActions.setResponse, (state, action) => ({\n ...state,\n checkResponse: action.response\n })),\n on(PipelineActions.fetchTransfosList, (state) => ({\n ...state,\n loading: true\n })),\n on(PipelineActions.fetchTransfosListSuccess, (state, action) => ({\n ...state,\n transfos: action.transfos,\n loading: false\n })),\n on(PipelineActions.fetchTransfosListFailure, (state, action) => ({\n ...state,\n error: action.error,\n loading: false\n })),\n on(PipelineActions.toggleActivation, (state, action) => ({\n ...state,\n activeError: undefined,\n loading: action.transfo.active\n })),\n on(PipelineActions.activationError, (state, action) => ({\n ...state,\n activeError: {\n id: action.id,\n error: action.error\n },\n loading: false\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromPipeline from './pipeline.reducer';\n\nconst feature = createFeatureSelector<fromPipeline.PipelineState>(fromPipeline.pipelineFeatureKey);\n\nconst selectedNodeId = createSelector(feature, (state) => state?.selectedNode);\nconst checkResponse = createSelector(feature, (state) => state?.checkResponse);\nconst transfos = createSelector(feature, (state) => state?.transfos);\nconst activeError = createSelector(feature, (state) => state?.activeError);\nconst transfo = (id: string) =>\n createSelector(feature, (state) => {\n return state.transfos.find((transfo) => transfo.id === id);\n });\n\nexport const PipelineSelectors = {\n selectedNodeId,\n checkResponse,\n transfos,\n transfo,\n activeError\n};\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { combineLatestWith, map, Observable, startWith } from 'rxjs';\nimport { v4 } from 'uuid';\nimport { PipelineActions } from '../../store/pipeline.actions';\nimport { PipelineSelectors } from '../../store/pipeline.selectors';\nimport { PryTransfo } from '../pipeline-editor/pipeline.interface';\n\n@Component({\n selector: 'pry-pipeline-details',\n templateUrl: './pipeline-details.component.html'\n})\nexport class PryPipelineDetailsComponent extends SubscriptionnerDirective implements OnInit {\n @Input() pipeline: PryTransfo = {\n id: v4(),\n links: [],\n nodes: [],\n title: '',\n description: '',\n creationDate: new Date().toDateString(),\n version: '',\n active: false,\n lastJobExecution: null\n };\n @Output() goToList = new EventEmitter();\n @Output() goToConsult = new EventEmitter();\n @Output() goToEditor = new EventEmitter<PryTransfo>();\n @Output() executeConfirm = new EventEmitter();\n pipeline$!: Observable<PryTransfo | undefined>;\n isSaved$!: Observable<boolean>;\n isSavingDisabled$!: Observable<boolean>;\n form!: FormGroup;\n\n constructor(private store: Store) {\n super();\n this.form = new FormGroup({\n title: new FormControl(null, [Validators.required, Validators.maxLength(30)]),\n description: new FormControl(null, [Validators.maxLength(200)])\n });\n }\n\n ngOnInit(): void {\n this.form.setValue({ title: this.pipeline.title, description: this.pipeline.description });\n this.pipeline$ = this.store.select(PipelineSelectors.transfo(this.pipeline.id));\n this.isSaved$ = this.pipeline$.pipe(map((pipeline) => !!pipeline));\n this.isSavingDisabled$ = this.pipeline$.pipe(\n combineLatestWith(\n this.form.valueChanges.pipe(\n startWith({ title: this.form.value.title, description: this.form.value.description })\n )\n ),\n map(([pipeline, form]) => {\n return !!pipeline && form.title === pipeline?.title && form.description === pipeline?.description;\n })\n );\n this.subscriptions.add(\n this.store.select(PipelineSelectors.activeError).subscribe((error) => {\n if (error && error.id === this.pipeline.id) {\n this.pipeline = {\n ...this.pipeline,\n active: false\n };\n }\n })\n );\n }\n\n save() {\n this.setFormDataInPipeline();\n this.store.dispatch(\n PipelineActions.check({\n graph: {\n id: this.pipeline.id,\n title: this.pipeline.title,\n description: this.pipeline.description,\n links: this.pipeline.links,\n nodes: this.pipeline.nodes\n },\n fetch: true\n })\n );\n }\n\n setFormDataInPipeline() {\n this.pipeline = {\n ...this.pipeline,\n title: this.form.value.title,\n description: this.form.value.description\n } as PryTransfo;\n }\n\n openEditor() {\n this.setFormDataInPipeline();\n this.goToEditor.emit(this.pipeline);\n }\n\n toggleActivation() {\n this.store.dispatch(PipelineActions.toggleActivation({ transfo: this.pipeline }));\n this.pipeline = {\n ...this.pipeline,\n active: !this.pipeline.active\n };\n }\n}\n","<div class=\"o-pipeline-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n type=\"button\"\n [disabled]=\"!(isSaved$ | async) || !pipeline.active\"\n (click)=\"executeConfirm.emit()\"\n >\n {{ '@pry.pipeline.execute' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary a-btn--icon-text\" type=\"button\" (click)=\"goToList.emit()\">\n {{ '@pry.pipeline.goBack' | i18n }}\n </button>\n @if (isSaved$ | async) {\n <div class=\"\">\n <pry-toggle [ngModel]=\"pipeline.active\" (ngModelChange)=\"toggleActivation()\" dir=\"ltr\" mode=\"action\">{{\n '@pry.pipeline.activated' | i18n\n }}</pry-toggle>\n </div>\n }\n</div>\n<div class=\"o-pipeline-layout__details\">\n <h2>{{ '@pry.pipeline.details.transformation' | i18n }} {{ pipeline.title }}</h2>\n <div class=\"row\">\n <form id=\"detailForm\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <label for=\"title\" class=\"a-label\">{{ '@pry.pipeline.details.title' | i18n }}</label>\n <input type=\"text\" id=\"title\" name=\"title\" class=\"a-form-field\" formControlName=\"title\" />\n @if (form.get('title')?.touched && form.get('title')?.hasError('required')) {\n <label\n for=\"title\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.required' | i18n }}\n </label>\n }\n @if (form.get('title')?.hasError('maxlength')) {\n <label for=\"title\" class=\"a-label a-label--help -error\">\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '30' } }}\n </label>\n }\n <label for=\"description\" class=\"a-label\">{{ '@pry.pipeline.details.description' | i18n }}</label>\n <textarea id=\"description\" name=\"description\" class=\"a-form-field\" formControlName=\"description\"></textarea>\n @if (form.get('description')?.hasError('maxlength')) {\n <label\n for=\"description\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </form>\n <div>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.creation_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.creationDate | sinceDate }}</span>\n </h4>\n @if (pipeline.lastJobExecution) {\n <div>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.execution_status' | i18n }} :\n <span class=\"property-value\"> {{ '@pry.pipeline.status.' + pipeline.lastJobExecution.status | i18n }}</span>\n </h4>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.last_execution_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.lastJobExecution.executionDate | sinceDate }}</span>\n </h4>\n </div>\n }\n </div>\n </div>\n</div>\n<div class=\"o-pipeline-layout__toolbox\">\n <button\n type=\"submit\"\n form=\"detailForm\"\n [disabled]=\"form.invalid || (isSavingDisabled$ | async)\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n >\n {{ '@pry.pipeline.save' | i18n }}\n </button>\n <button (click)=\"openEditor()\" [disabled]=\"form.invalid\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.editor' | i18n }}\n </button>\n</div>\n","import { Store } from '@ngrx/store';\nimport { LGraphNode, LiteGraph } from 'litegraph.js';\nimport { v4 } from 'uuid';\nimport { PipelineActions } from '../store/pipeline.actions';\n\nLiteGraph.NODE_DEFAULT_BGCOLOR = '#FFFFFF';\nLiteGraph.NODE_TITLE_COLOR = 'transparent';\n\nexport class BaseNode extends LGraphNode {\n static store: Store;\n static check: () => void;\n titleColor: string;\n\n constructor(title?: string, ...other: any) {\n super();\n this.properties['id'] = v4();\n this.color = BaseNode.getNodeTitleColor();\n this.titleColor = '#FFFFFF';\n this.title = (this.type ?? '?').split('.')[(this.type ?? '?').split('.').length - 1] ?? '?';\n }\n\n static getNodeTitleColor() {\n return '#4E92E4';\n }\n\n override onSelected() {\n BaseNode.store.dispatch(PipelineActions.select({ id: this.properties['id'] }));\n }\n\n override onPropertyChanged(property: string, value: any, prevValue: any): void | boolean {\n BaseNode.check();\n }\n\n override onConnectionsChange() {\n BaseNode.check();\n }\n\n onDrawTitleText(ctx: any, title_height: any, size: any, scale: any, title_text_font: any, selected: any) {\n ctx.font = title_text_font;\n const title = this.getTitle();\n if (title) {\n ctx.fillStyle = this.titleColor;\n if (this.flags.collapsed) {\n ctx.textAlign = 'center';\n const measure = ctx.measureText(title);\n ctx.fillText(title, title_height + measure.width * 0.5, LiteGraph.NODE_TITLE_TEXT_Y - title_height);\n ctx.textAlign = 'left';\n } else {\n ctx.textAlign = 'left';\n ctx.fillText(title, title_height, LiteGraph.NODE_TITLE_TEXT_Y - title_height);\n }\n }\n }\n}\n","import { LGraph, LGraphNode, LiteGraph } from 'litegraph.js';\nimport { PrySerializedNode, PrySerializedPipeline } from './pipeline.interface';\n\nexport class GraphSerializerUtils {\n static serialize(lgraph: LGraph, id?: string): PrySerializedPipeline {\n const output = {\n id: id,\n links: [],\n nodes: []\n } as PrySerializedPipeline;\n\n if (!!lgraph) {\n const baseLiteGraph = structuredClone(lgraph.serialize());\n const translated = GraphSerializerUtils.translateFromSerializedLGraphToPryModel(baseLiteGraph);\n output.nodes = translated.nodes;\n output.links = translated.links;\n }\n return output;\n }\n\n static translateFromSerializedLGraphToPryModel(graph: any): PrySerializedPipeline {\n return {\n nodes: graph.nodes.map((node: any) => {\n const output = {\n id: node.properties['id'],\n type: node.type,\n title: node.title ?? node.type,\n spec: {\n ...node.properties\n },\n gui: {\n pos: [node.pos[0], node.pos[1]],\n size: [node.size[0], node.size[1]]\n }\n } as PrySerializedNode;\n\n delete output.spec['subgraph'];\n delete output.spec['id'];\n delete output.spec['type'];\n delete output.spec['_label'];\n\n if (node.type === 'SubGraphNode') {\n output.subgraph = GraphSerializerUtils.translateFromSerializedLGraphToPryModel(node.properties['subgraph']);\n }\n\n return output;\n }),\n links: graph.links.map((linkArray: any[]) => ({\n start: {\n id: graph.nodes.find((node: LGraphNode) => node.id === linkArray[1]).properties['id'],\n slot: linkArray[2]\n },\n end: {\n id: graph.nodes.find((node: LGraphNode) => node.id === linkArray[3]).properties['id'],\n slot: linkArray[4]\n }\n }))\n };\n }\n\n static hydrate(serializedGraph: PrySerializedPipeline, lgraph: LGraph) {\n const hydratedNodes = serializedGraph.nodes\n .map((node) => GraphSerializerUtils.createNode(node))\n .filter((node) => !!node);\n hydratedNodes.forEach((node) => lgraph.add(node));\n\n serializedGraph.links.forEach((link) => {\n const startNode = hydratedNodes.find((hNode) => link.start.id === hNode.properties['id']);\n const endNode = hydratedNodes.find((hNode) => link.end.id === hNode.properties['id']);\n if (startNode && endNode) {\n startNode.connect(link.start.slot, endNode, link.end.slot);\n } else {\n if (!startNode) {\n console.error(`Missing node id ${link.start.id} for link hydratation`);\n }\n if (!endNode) {\n console.error(`Missing node id ${link.end.id} for link hydratation`);\n }\n }\n });\n }\n\n static createNode(serializedNode: PrySerializedNode): LGraphNode {\n const node_const = LiteGraph.createNode(serializedNode.type, serializedNode.title, {});\n if (!node_const) {\n console.error(`Node with type ${serializedNode.type} could not have been created (id ${serializedNode.id}).`);\n } else {\n node_const.title = serializedNode.title;\n for (let i = 0; i < 2; i++) {\n node_const.pos[i] = serializedNode.gui.pos[i];\n node_const.size[i] = serializedNode.gui.size[i];\n }\n Object.keys(serializedNode.spec).forEach((key) => (node_const.properties[key] = serializedNode.spec[key]));\n node_const.properties['id'] = serializedNode.id;\n\n if (serializedNode.type === 'SubGraphNode') {\n const subGraphNode = node_const as any; // type is SubGRaphNode, but we don't want to introduce a dependency to optional module Subgraph\n\n for (let i = 0; i < subGraphNode.properties['inputs']; i++) {\n subGraphNode.createInput(\n serializedNode.subgraph!.nodes.filter((node) => node.type === 'SubGraphInput')[i].id\n );\n }\n for (let i = 0; i < subGraphNode.properties['outputs']; i++) {\n subGraphNode.createOutput(\n serializedNode.subgraph!.nodes.filter((node) => node.type === 'SubGraphOutput')[i].id\n );\n }\n\n GraphSerializerUtils.hydrate({ ...serializedNode.subgraph! }, subGraphNode.subGraph);\n }\n }\n return node_const;\n }\n}\n","import { Injectable, Type } from '@angular/core';\nimport { LiteGraph } from 'litegraph.js';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PipelinePropertiesPanelComponent } from '../components/pipeline-properties-panel.component';\nimport { BaseNode } from '../node-class/base-node.class';\n\nexport interface PipelineComponentDefinition {\n type: string;\n label: string;\n component: Type<PipelinePropertiesPanelComponent>;\n nodeClass: Type<BaseNode>;\n draggable: boolean;\n category: 'operation' | 'input' | 'output';\n additionalProperties: any;\n color: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PipelineComponentFactoryService {\n referential$ = new BehaviorSubject<PipelineComponentDefinition[]>([]);\n public typesByCategories$: Observable<{ [category: string]: PipelineComponentDefinition[] }>;\n public categories$: Observable<string[]>;\n\n constructor() {\n this.typesByCategories$ = this.referential$.pipe(\n map((ref) => ref.filter((component) => component.draggable)),\n map((ref) => {\n const categories = {} as { [category: string]: PipelineComponentDefinition[] };\n\n ref.forEach((componentDef) => {\n if (!categories[componentDef.category]) {\n categories[componentDef.category] = [];\n }\n categories[componentDef.category].push(componentDef);\n });\n\n Object.keys(categories).forEach((category) =>\n categories[category].sort((a, b) => a.label.localeCompare(b.label))\n );\n\n return categories;\n })\n );\n\n this.categories$ = this.typesByCategories$.pipe(map((typesByCategories) => Object.keys(typesByCategories).sort()));\n }\n\n addType(\n type: string,\n component: Type<PipelinePropertiesPanelComponent>,\n nodeClass: Type<BaseNode>,\n category: 'operation' | 'input' | 'output' = 'operation',\n label = '',\n draggable = true,\n additionalProperties = {}\n ) {\n const shortLabel = label.length > 0 ? label : type.split('.')[type.split('.').length - 1];\n this.referential$.next([\n ...this.referential$.getValue().filter((ref) => ref.type !== type || ref.label !== shortLabel),\n {\n type,\n component,\n nodeClass,\n draggable,\n category,\n label: shortLabel,\n additionalProperties,\n // @ts-ignore\n color: nodeClass.getNodeTitleColor()\n }\n ]);\n if (LiteGraph.getNodeType(type)) {\n LiteGraph.unregisterNodeType(type);\n }\n LiteGraph.registerNodeType(type, nodeClass);\n }\n\n removeType(type: string) {\n this.referential$.next([...this.referential$.getValue().filter((component) => component.type !== type)]);\n }\n\n get(type: string): PipelineComponentDefinition {\n return this.referential$.getValue().find((component) => component.type === type) as PipelineComponentDefinition;\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-pipeline-css',\n template: '',\n styleUrls: ['./_o-pipeline.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryPipelineCssComponent {}\n","import {\n AfterViewInit,\n Component,\n ComponentRef,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { DataSourceActions, PryI18nService, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { LGraph, LGraphCanvas, LGraphNode, LiteGraph } from 'litegraph.js';\nimport { auditTime, BehaviorSubject, combineLatest, combineLatestWith, fromEvent, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n PipelineComponentDefinition,\n PipelineComponentFactoryService\n} from '../../factory/pipeline-component-factory.service';\nimport { BaseNode } from '../../node-class/base-node.class';\nimport { NodePipelineError, PipelineActions, PipelineResponse } from '../../store/pipeline.actions';\nimport { PipelineSelectors } from '../../store/pipeline.selectors';\nimport { GraphSerializerUtils } from './graph-serializer.utils';\nimport { PrySerializedPipeline, PryTransfo } from './pipeline.interface';\n\nexport const MIME_TYPE_PIPELINE_COMPONENT = 'pipeline/component';\nexport const MIME_TYPE_PIPELINE_PROPERTIES = 'pipeline/properties';\n\n@Component({\n selector: 'pry-pipeline-editor',\n templateUrl: './pipeline-editor.component.html'\n})\nexport class PryPipelineEditorComponent extends SubscriptionnerDirective implements AfterViewInit {\n @Input() pipeline?: PryTransfo;\n @Output() goToConsult = new EventEmitter<PryTransfo>();\n @ViewChild('canvas') canvas!: ElementRef<HTMLCanvasElement>;\n @ViewChild('canvasParent') canvasParent!: ElementRef<HTMLDivElement>;\n @ViewChild('specific', { read: ViewContainerRef, static: false }) componentRef!: ViewContainerRef;\n lGraphs: LGraph[] = [];\n private lGraphCanvas!: LGraphCanvas;\n types$: Observable<{ [category: string]: PipelineComponentDefinition[] }>;\n categories$: Observable<string[]>;\n selectedNode$: Observable<BaseNode | undefined>;\n response$: Observable<PipelineResponse | undefined>;\n instanciatedComponent!: ComponentRef<any>;\n selectedNode?: BaseNode;\n actions = [] as { type: string; icon: string }[];\n errors$: Observable<(NodePipelineError & { translated: string })[]>;\n disableEditing: boolean = false;\n images: { start: HTMLImageElement; after: HTMLImageElement };\n search$ = new BehaviorSubject<any>({});\n\n constructor(\n private store: Store,\n private pipelineComponentFactoryService: PipelineComponentFactoryService,\n private translateService: PryI18nService\n ) {\n super();\n BaseNode.store = store;\n BaseNode.check = () => this.check();\n\n this.store.dispatch(DataSourceActions.namedQuery.load());\n this.store.dispatch(DataSourceActions.dataset.loadDataset());\n\n this.types$ = combineLatest([pipelineComponentFactoryService.typesByCategories$, this.search$]).pipe(\n map(([typesByCategory, search]) => {\n const result = {} as { [category: string]: PipelineComponentDefinition[] };\n Object.keys(typesByCategory).forEach((cat) => {\n result[cat] = typesByCategory[cat].filter((type) =>\n type.label.toLocaleLowerCase().includes((search[cat] ?? '').toLocaleLowerCase())\n );\n });\n return result;\n })\n );\n this.categories$ = pipelineComponentFactoryService.categories$;\n\n this.selectedNode$ = this.store.select(PipelineSelectors.selectedNodeId).pipe(map((id) => this.findNodeById(id)));\n\n this.response$ = this.store.select(PipelineSelectors.checkResponse);\n\n this.subscriptions.add(\n this.response$.subscribe((response) => {\n this.allNodes.forEach((errorNode) => {\n // @ts-ignore\n delete errorNode?.bgcolor;\n });\n\n (response?.status.map((status) => status.errors).reduce((p, c) => [...p, ...c], []) ?? [])\n ?.map((error) => this.findNodeById(error.nodeId))\n .filter((errorNode) => !!errorNode)\n .forEach((errorNode) => (errorNode!.bgcolor = '#d93535'));\n\n this.refresh();\n })\n );\n\n this.selectedNode$.pipe(combineLatestWith(this.response$)).subscribe(([node, response]) => {\n if (this.instanciatedComponent) {\n this.componentRef.clear();\n }\n this.removeAction('down');\n if (node) {\n const module = this.pipelineComponentFactoryService.get(node?.type ?? '');\n if (module) {\n this.instanciatedComponent = this.componentRef.createComponent(module.component);\n this.instanciatedComponent.instance.node = node;\n this.instanciatedComponent.instance.checkFn = () => {};\n this.instanciatedComponent.instance.disabled = this.disableEditing;\n setTimeout(() => {\n this.instanciatedComponent.instance.checkFn = () => this.check();\n }, 100);\n\n if (response) {\n const matchingStatus = response.status.find((status) => status.nodeId === node.properties['id']);\n if (matchingStatus) {\n this.instanciatedComponent.instance.model = matchingStatus.outModel;\n }\n }\n }\n if (node.type === 'SubGraphNode') {\n this.addAction({ icon: 'eye-arrow-down', type: 'down' });\n }\n this.addAction({ icon: 'delete', type: 'delete' });\n } else {\n this.removeAction('delete');\n }\n });\n\n this.subscriptions.add(this.selectedNode$.subscribe((node) => (this.selectedNode = node)));\n\n this.errors$ = combineLatest([this.response$, this.selectedNode$]).pipe(\n map(([response, selectedNode]) => [\n ...(response?.errors ?? []).map((error) => ({ ...error, nodeId: '-' })),\n ...(response?.status.find((status) => status.nodeId === (selectedNode?.properties['id'] ?? '-----'))?.errors ??\n [])\n ]),\n map((errors) =>\n errors.map((error) => ({\n ...error,\n translated: this.translateService.instant('@pry.pipeline.codes.' + error.code, error)\n }))\n )\n );\n\n this.subscriptions.add(\n fromEvent(window, 'resize')\n .pipe(auditTime(100))\n .subscribe(() => {\n this.onResize();\n })\n );\n\n this.images = {\n start: new Image(),\n after: new Image()\n };\n this.images.start.src = '/assets/backgrounds/img_processus.png';\n this.images.after.src = '';\n }\n\n get currentGraph() {\n return this.lGraphs[this.lGraphs.length - 1];\n }\n\n get allNodes(): BaseNode[] {\n // @ts-ignore\n return this.currentGraph?._nodes ?? [];\n }\n\n get backgroundImage() {\n return (this.pipeline?.nodes ?? []).length > 0 ? this.images.after : this.images.start;\n }\n\n findNodeById(id: string) {\n return this.allNodes.find((node) => node.properties['id'] === id);\n }\n\n ngAfterViewInit(): void {\n this.lGraphs.push(new LGraph());\n this.lGraphCanvas = new LGraphCanvas(this.canvas.nativeElement, this.currentGraph);\n this.lGraphCanvas.allow_searchbox = false;\n this.lGraphCanvas.title_text_font = 'bold 14px Ubuntu';\n this.lGraphCanvas.inner_text_font = 'normal 12px Ubuntu';\n this.lGraphCanvas.default_link_color = '#000000';\n // @ts-ignore\n this.lGraphCanvas.background_image = undefined;\n this.lGraphCanvas.onDrawBackground = (ctx, vector) => {\n const rect = this.canvas.nativeElement.getBoundingClientRect();\n\n ctx.fillStyle = 'white';\n ctx.fillRect(0, 0, rect.width, rect.height);\n\n const imgSize = [306, 171];\n ctx.drawImage(\n this.backgroundImage,\n (rect.width - imgSize[0]) / 2,\n (rect.height - imgSize[1]) / 2,\n imgSize[0],\n imgSize[1]\n );\n };\n this.lGraphCanvas.onNodeDeselected = () => {\n this.store.dispatch(PipelineActions.select({ id: '' }));\n };\n this.currentGraph.start();\n if (this.pipeline) {\n GraphSerializerUtils.hydrate(this.pipeline as PrySerializedPipeline, this.currentGraph);\n this.disableEditing = this.pipeline.active;\n }\n this.onResize();\n }\n\n onResize() {\n // Make canvas so little that it doesn't impact css size calculation\n this.canvas.nativeElement.width = 10;\n this.canvas.nativeElement.height = 10;\n this.lGraphCanvas.resize(10, 10);\n\n // Later, make it grow to proper size\n setTimeout(() => {\n const rect = this.canvasParent.nativeElement.getBoundingClientRect();\n this.canvas.nativeElement.width = rect.width;\n this.canvas.nativeElement.height = rect.height;\n this.lGraphCanvas.resize(rect.width, rect.height);\n this.refresh();\n }, 10);\n }\n\n displayGraph(graph: LGraph) {\n this.currentGraph.stop();\n this.lGraphs.push(graph);\n this.lGraphCanvas.setGraph(graph);\n graph.start();\n }\n\n popGraph() {\n this.currentGraph.stop();\n this.lGraphs.length = this.lGraphs.length - 1;\n this.currentGraph.start();\n this.lGraphCanvas.setGraph(this.currentGraph);\n this.store.dispatch(PipelineActions.select({ id: '' }));\n this.lGraphCanvas.deselectAllNodes();\n if (this.lGraphs.length === 1) {\n this.removeAction('up');\n }\n }\n\n pupGraph(node: BaseNode) {\n // @ts-ignore\n if (!!node.subGraph) {\n // @ts-ignore\n this.displayGraph(node.subGraph);\n this.store.dispatch(PipelineActions.select({ id: '' }));\n this.lGraphCanvas.deselectAllNodes();\n this.addAction({ icon: 'eye-arrow-up', type: 'up' });\n }\n }\n\n check() {\n if (!this.disableEditing) {\n this.pipeline = {\n ...this.pipeline,\n ...GraphSerializerUtils.serialize(this.lGraphs[0], this.pipeline?.id)\n } as PryTransfo;\n setTimeout(() => {\n this.store.dispatch(\n PipelineActions.check({\n graph: {\n id: this.pipeline?.id,\n nodes: this.pipeline?.nodes,\n links: this.pipeline?.links,\n title: this.pipeline?.title,\n description: this.pipeline?.description\n }\n })\n );\n }, 100);\n }\n }\n\n refresh() {\n this.currentGraph?.change();\n }\n\n createNode(type: string, position: [number, number], additionalProperties: any) {\n const title = additionalProperties._label ?? type.split('.')[type.split('.').length - 1] ?? '?';\n const node_const = LiteGraph.createNode(type, title, {});\n if (node_const !== null) {\n node_const.title = title;\n node_const.pos = position;\n Object.keys(additionalProperties).forEach((key) => {\n node_const.properties[key] = additionalProperties[key];\n });\n\n this.currentGraph.add(node_const);\n } else {\n console.error(`Cannot create node of type ${type}`);\n }\n }\n\n onDragStart($event: DragEvent, component: PipelineComponentDefinition) {\n if (!!$event && !!$event.dataTransfer && !$event.dataTransfer.types.includes(MIME_TYPE_PIPELINE_COMPONENT)) {\n $event.dataTransfer.dropEffect = 'copy';\n $event.dataTransfer.effectAllowed = 'copy';\n $event.dataTransfer.setData(MIME_TYPE_PIPELINE_COMPONENT, component.type);\n $event.dataTransfer.setData(MIME_TYPE_PIPELINE_PROPERTIES, JSON.stringify({ ...component.additionalProperties }));\n }\n }\n\n onDrop($event: DragEvent) {\n $event.preventDefault();\n if (!!$event && !!$event.dataTransfer) {\n if ($event.dataTransfer.types.includes(MIME_TYPE_PIPELINE_COMPONENT)) {\n const componentType = $event.dataTransfer.getData(MIME_TYPE_PIPELINE_COMPONENT);\n const additionalProperties = JSON.parse($event.dataTransfer.getData(MIME_TYPE_PIPELINE_PROPERTIES));\n const convertedEvent = this.lGraphCanvas.convertEventToCanvasOffset($event);\n this.createNode(componentType, [convertedEvent[0], convertedEvent[1]], additionalProperties);\n this.check();\n $event.stopPropagation();\n }\n }\n }\n\n changeTitle(node: LGraphNode, $event: Event) {\n // @ts-ignore\n node.title = $event.target?.value;\n this.refresh();\n }\n\n clickedAction(action: any) {\n switch (action.type) {\n case 'up':\n this.popGraph();\n break;\n case 'down':\n this.pupGraph(this.selectedNode!);\n break;\n case 'delete':\n this.currentGraph.remove(this.selectedNode!);\n this.removeAction('delete');\n this.check();\n break;\n }\n this.store.dispatch(PipelineActions.select({ id: '' }));\n }\n\n addAction(add: { type: string; icon: string }) {\n if (!this.actions.find((action) => action.type === add.type)) {\n this.actions.push(add);\n }\n this.actions.sort((a, b) => a.type.localeCompare(b.type));\n }\n\n removeAction(type: string) {\n this.actions = this.actions.filter((action) => action.type !== type);\n }\n\n goBack() {\n this.goToConsult.emit(this.pipeline);\n }\n\n search($event: any) {\n this.search$.next({ ...$event });\n }\n}\n","<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline\">\n <div class=\"o-pipeline__menu\">\n <pry-accordion>\n @for (category of categories$ | async; track category; let index = $index) {\n <pry-accordion-item\n [item]=\"category\"\n [borderColor]=\"(types$ | async)![category][0].color\"\n [index]=\"index\"\n [showSearchBar]=\"true\"\n [search$]=\"search$\"\n (search)=\"search($event)\"\n translationStringBase=\"@pry.pipeline.\"\n >\n <ul class=\"o-pipeline__components\">\n @for (type of (types$ | async)![category]; track type) {\n <li [draggable]=\"!this.disableEditing\" (dragstart)=\"onDragStart($event, type)\">\n <p class=\"a-p\">{{ type.label }}</p>\n <pry-icon [width]=\"2\" [height]=\"20\" iconSvg=\"info\"></pry-icon>\n </li>\n }\n </ul>\n </pry-accordion-item>\n }\n </pry-accordion>\n </div>\n\n <div class=\"o-pipeline__workspace\">\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"goBack()\">\n {{ '@pry.pipeline.backToDescription' | i18n }}\n </button>\n @for (action of actions; track action) {\n <button type=\"button\" (click)=\"clickedAction(action)\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.' + action.type | i18n }}\n <pry-icon [iconSvg]=\"action.icon\"></pry-icon>\n </button>\n }\n </div>\n <div>\n <h1 class=\"a-h1\">{{ this.pipeline?.title }}</h1>\n </div>\n <div class=\"o-pipeline-editor\">\n <div (drop)=\"onDrop($event)\" class=\"o-pipeline-editor__grid\" #canvasParent>\n <canvas #canvas class=\"canvas\"></canvas>\n </div>\n <div class=\"o-pipeline-editor__properties\">\n @if (selectedNode$ | async; as node) {\n <div\n class=\"o-pipeline-editor__properties__node\"\n [title]=\"node.properties['id']\"\n >\n <h3 class=\"a-h3\">{{ '@pry.pipeline.selectedTask' | i18n }}</h3>\n <h4 class=\"a-h4\">{{ '@pry.pipeline.type' | i18n }}</h4>\n <p class=\"a-p a-p--type\">{{ node.type }}</p>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"{{ node.id }}\">{{ '@pry.pipeline.title' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"{{ node.id }}\"\n type=\"text\"\n [value]=\"node.title\"\n [disabled]=\"disableEditing\"\n (change)=\"changeTitle(node, $event)\"\n />\n </div>\n </div>\n }\n <div class=\"o-pipeline-editor__properties__detail\" [class.is-empty]=\"!selectedNode\">\n <div>\n <div #specific></div>\n </div>\n </div>\n @if (((errors$ | async)?.length ?? 0) > 0) {\n <div class=\"o-pipeline-editor__properties__errors\">\n <div class=\"o-pipeline-editor__properties__errors__title\">\n <pry-icon iconSvg=\"warning-triangle\"></pry-icon>\n <p class=\"a-p\">{{ '@pry.pipeline.errors' | i18n }}:</p>\n </div>\n <ul>\n @for (error of errors$ | async; track error) {\n <li>\n <span class=\"type\">{{\n (error?.nodeId === '-' ? '@pry.pipeline.global' : '@pry.pipeline.node') | i18n\n }}</span>\n {{ error.translated }}\n </li>\n }\n </ul>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n","export interface PrySerializedPipeline {\n id?: string;\n links: PrySerializedLink[];\n nodes: PrySerializedNode[];\n}\n\nexport interface PryTransfo extends PrySerializedPipeline {\n id: string;\n title: string;\n description: string;\n version: string;\n active: boolean;\n lastJobExecution?: LastJobExecution | null;\n creationDate: string;\n jobInstanceId?: string;\n}\n\ninterface LastJobExecution {\n uuid: string;\n status: ExecutionState;\n executionDate: string;\n}\n\nexport enum ExecutionState {\n STARTED = 'started',\n TERMINATED = 'terminated',\n ERROR = 'error'\n}\n\nexport interface PrySerializedLink {\n start: PrySerializedSlot;\n end: PrySerializedSlot;\n}\n\nexport interface PrySerializedSlot {\n id: string;\n slot: number;\n}\n\nexport interface PrySerializedNode {\n id: string;\n type: string;\n title: string;\n spec: PrySerializedSpec;\n gui: PrySerializedGui;\n subgraph?: {\n nodes: PrySerializedNode[];\n links: PrySerializedLink[];\n };\n}\n\nexport interface PrySerializedGui {\n pos: any;\n size: any;\n}\n\nexport interface PrySerializedSpec {\n [key: string]: string | number;\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, ElementRef, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigActions, ViewMode } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { PipelineActions } from '../../store/pipeline.actions';\nimport { PipelineSelectors } from '../../store/pipeline.selectors';\nimport { ExecutionState, PryTransfo } from '../pipeline-editor/pipeline.interface';\n\n@Component({\n selector: 'pry-pipeline-list',\n templateUrl: './pipeline-list.component.html'\n})\nexport class PryPipelineListComponent {\n transformation$: Observable<PryTransfo[]>;\n sortActive? = 'creationDate';\n sortDirection? = 'desc';\n toggleIndex?: number;\n selectedTransfo?: PryTransfo;\n overlayRef: any;\n @ViewChild('dropdown', { read: TemplateRef }) templateDropdown!: TemplateRef<any>;\n @ViewChild('templateModal', { read: TemplateRef }) templateModal!: TemplateRef<any>;\n @ViewChild('actions') actions!: ElementRef<HTMLButtonElement>;\n @ViewChild('toggleActions') toggleActions!: ElementRef<HTMLButtonElement>;\n @ViewChild('cancel') cancel!: ElementRef<HTMLButtonElement>;\n @ViewChild('cross') cross!: ElementRef<HTMLButtonElement>;\n @ViewChild('confirm') confirm!: ElementRef<HTMLButtonElement>;\n selectedMode: ViewMode = ViewMode.CATALOG;\n ViewMode = ViewMode;\n private confirmExecutionRef?: OverlayRef;\n\n constructor(private store: Store, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {\n this.store.dispatch(PipelineActions.fetchTransfosList());\n this.transformation$ = this.store.select(PipelineSelectors.transfos);\n this.selectedMode = ViewMode.CATALOG;\n }\n\n toggleMoreDropdown($event: any, index: number, transfo: PryTransfo) {\n if (this.toggleIndex !== index) {\n this.selectedTransfo = transfo;\n this.toggleIndex = index;\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['modal'],\n backdropClass: 'backdrop'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.backdropClick().subscribe(() => this.toggleMoreDropdown($event, index, transfo));\n this.overlayRef.attach(new TemplatePortal(this.templateDropdown, this.viewContainerRef));\n setTimeout(() => {\n this.toggleActions.nativeElement.focus();\n }, 10);\n const modal = document.querySelector('div.modal') as HTMLDivElement;\n if (!!modal) {\n if ($event.pointerType === 'mouse') {\n modal.style.left = $event.clientX - 150 + 'px';\n modal.style.top = $event.clientY - 10 + 'px';\n } else {\n const toggleMenuButton = document.querySelector('#' + $event.target.id);\n const rect = toggleMenuButton?.getBoundingClientRect();\n modal.style.left = (rect?.left ?? 0) - (modal?.clientWidth ?? 0) + 'px';\n modal.style.top = (rect?.top ?? 0) + 'px';\n }\n }\n } else {\n this.overlayRef?.dispose();\n this.closeDropdown();\n }\n }\n\n closeDropdown() {\n this.overlayRef?.dispose();\n this.toggleIndex = undefined;\n this.overlayRef = undefined;\n this.actions.nativeElement.focus();\n }\n\n toggleState(selectedTransfo: PryTransfo) {\n if (selectedTransfo) {\n this.store.dispatch(PipelineActions.toggleActivation({ transfo: selectedTransfo }));\n }\n this.closeDropdown();\n }\n\n toggleExecuteConfirm() {\n if (!this.confirmExecutionRef) {\n this.confirmExecutionRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['o-modal-wrapper'],\n backdropClass: 'backdrop'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.confirmExecutionRef.attach(new TemplatePortal(this.templateModal, this.viewContainerRef));\n this.confirmExecutionRef.backdropClick().subscribe(() => this.toggleExecuteConfirm());\n const panel = document.querySelector('div.o-modal-wrapper') as HTMLDivElement;\n if (!!panel) {\n panel.style.position = 'fixed';\n panel.style.top = '50%';\n panel.style.left = '50%';\n panel.style.transform = 'translate(-50%, -50%)';\n }\n setTimeout(() => {\n this.cancel.nativeElement.focus();\n }, 10);\n } else {\n this.confirmExecutionRef.dispose();\n this.confirmExecutionRef = undefined;\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n this.actions.nativeElement.focus();\n this.closeDropdown();\n }\n }\n\n cancelRemoveConfirm() {\n this.confirmExecutionRef?.dispose();\n this.confirmExecutionRef = undefined;\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n this.closeDropdown();\n }\n\n confirmExecution(selectedTransfo?: PryTransfo) {\n if (selectedTransfo?.jobInstanceId) {\n this.store.dispatch(PipelineActions.executeTransfo({ id: selectedTransfo.jobInstanceId }));\n }\n this.cancelRemoveConfirm();\n }\n\n list() {\n this.store.dispatch(PipelineActions.fetchTransfosList());\n this.selectedMode = ViewMode.CATALOG;\n }\n\n create() {\n this.selectedMode = ViewMode.CREATION;\n }\n\n consult(transfo: PryTransfo) {\n this.selectedTransfo = transfo;\n this.selectedMode = ViewMode.CONSULT;\n }\n\n savePipeline(transfo: PryTransfo) {\n this.selectedTransfo = transfo;\n this.selectedMode = ViewMode.EDITOR;\n }\n\n disableSelectedTranso() {\n if (this.selectedTransfo?.active === false) {\n this.closeDropdown();\n }\n }\n\n focusElement(element: HTMLButtonElement) {\n element.focus();\n }\n\n navigateContextMenu(button: HTMLButtonElement, nextButton: HTMLButtonElement) {\n if (!nextButton.disabled) {\n nextButton.tabIndex = 0;\n nextButton.focus();\n button.tabIndex = -1;\n }\n }\n\n protected readonly ExecutionState = ExecutionState;\n}\n","<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline-layout\">\n @switch (selectedMode) {\n @case (ViewMode.CATALOG) {\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--primary a-btn--icon-text\" type=\"button\" (click)=\"create()\">\n {{ '@pry.pipeline.create' | i18n }}\n </button>\n </div>\n <h1 class=\"a-h1\">{{ '@pry.pipeline.transformation_catalog' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"date\"\n prySortDirection=\"desc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.pipeline.transformation_catalog' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th prySortHeader=\"state\">{{ '@pry.pipeline.details.state' | i18n }}</th>\n <th prySortHeader=\"title\">{{ '@pry.pipeline.details.title' | i18n }}</th>\n <th prySortHeader=\"date\">{{ '@pry.pipeline.details.last_execution_date' | i18n }}</th>\n <th>\n <div class=\"u-display-flex -align-center -column\">\n {{ '@pry.pipeline.details.execution_status' | i18n }}\n </div>\n </th>\n <th>{{ '@pry.pipeline.action' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (transfo of transformation$ | async | prySortData : sortActive : sortDirection; track transfo; let index = $index) {\n <tr\n >\n <td>\n @if (transfo.active) {\n <div class=\"container-state\">\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"check\" class=\"check\"></pry-icon>\n <span> {{ '@pry.pipeline.activated' | i18n }}</span>\n </div>\n } @else {\n <div class=\"container-state\">\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"stop\" class=\"stop\"></pry-icon>\n <span>{{ '@pry.pipeline.deactivated' | i18n }}</span>\n </div>\n }\n <ng-template #deactivated>\n <div class=\"container-state\">\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"stop\" class=\"stop\"></pry-icon>\n <span>{{ '@pry.pipeline.deactivated' | i18n }}</span>\n </div>\n </ng-template>\n </td>\n <td>{{ transfo.title }}</td>\n <td>{{ transfo?.lastJobExecution?.executionDate | sinceDate }}</td>\n @if (transfo.lastJobExecution) {\n <td class=\"u-display-flex -align-center -column\">\n <div>\n @switch (transfo.lastJobExecution.status) {\n @case (ExecutionState.TERMINATED) {\n <pry-icon iconSvg=\"check\" [height]=\"25\" [width]=\"25\" class=\"check\"></pry-icon>\n }\n @case (ExecutionState.STARTED) {\n <pry-icon iconSvg=\"synchro\" [height]=\"25\" [width]=\"25\" class=\"warning\"></pry-icon>\n }\n @case (ExecutionState.ERROR) {\n <pry-icon iconSvg=\"close\" [height]=\"25\" [width]=\"25\" class=\"danger\"></pry-icon>\n }\n }\n </div>\n </td>\n }\n <td>\n <button type=\"button\" class=\"a-btn a-btn--secondary -size-sm\" (click)=\"consult(transfo)\">\n {{ '@pry.pipeline.consult' | i18n }}\n <span class=\"u-visually-hidden\"> {{ transfo.title }} </span>\n </button>\n </td>\n <td>\n <button\n class=\"a-btn a-btn--more\"\n type=\"button\"\n id=\"actions-{{ index }}\"\n #actions\n aria-controls=\"panelActions\"\n [attr.aria-expanded]=\"!!overlayRef\"\n (click)=\"toggleMoreDropdown($event, index, transfo)\"\n >\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n @case (ViewMode.CONSULT) {\n @if (selectedTransfo) {\n <pry-pipeline-details\n [pipeline]=\"selectedTransfo\"\n (goToList)=\"list()\"\n (goToEditor)=\"savePipeline($event)\"\n (executeConfirm)=\"toggleExecuteConfirm()\"\n ></pry-pipeline-details>\n }\n }\n @case (ViewMode.CREATION) {\n <pry-pipeline-details (goToList)=\"list()\" (goToEditor)=\"savePipeline($event)\"></pry-pipeline-details>\n }\n @case (ViewMode.EDITOR) {\n <pry-pipeline-editor [pipeline]=\"selectedTransfo\" (goToConsult)=\"consult($event)\"></pry-pipeline-editor>\n }\n }\n</div>\n<ng-template #noExecution>\n <div class=\"container-state\">\n <span>{{ '@pry.pipeline.ko' | i18n }}</span>\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"danger\" class=\"danger\"></pry-icon>\n </div>\n</ng-template>\n\n<ng-template #dropdown>\n @if (selectedTransfo) {\n <div\n class=\"m-context-menu\"\n id=\"panelActions\"\n (click)=\"$event.stopPropagation()\"\n (keydown.escape)=\"closeDropdown()\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog panelActions\"\n >\n <ul class=\"m-context-menu__list\">\n <li class=\"m-context-menu__list__item\" role=\"none\">\n <button\n #toggleActions\n type=\"button\"\n class=\"a-btn\"\n role=\"menuitem\"\n (click)=\"toggleState(selectedTransfo)\"\n (keydown.arrowDown)=\"navigateContextMenu(activate, execute)\"\n (keydown.arrowUp)=\"navigateContextMenu(activate, execute)\"\n tabindex=\"0\"\n #activate\n >\n <span>{{ (selectedTransfo.active ? '@pry.pipeline.deactivate' : '@pry.pipeline.activate') | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\">\n <button\n #execute\n type=\"button\"\n role=\"menuitem\"\n id=\"execute\"\n class=\"a-btn\"\n tabindex=\"-1\"\n (keydown.arrowDown)=\"navigateContextMenu(execute, activate)\"\n (keydown.arrowUp)=\"navigateContextMenu(execute, activate)\"\n [disabled]=\"!selectedTransfo.active\"\n (click)=\"toggleExecuteConfirm()\"\n >\n <span>{{ '@pry.pipeline.execute' | i18n }}</span>\n </button>\n </li>\n </ul>\n </div>\n }\n</ng-template>\n<ng-template #templateModal>\n @if (selectedTransfo) {\n <div\n class=\"o-modal\"\n (keydown.escape)=\"toggleExecuteConfirm()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog confirm delete presentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #cross\n (keydown.shift.tab)=\"focusElement(confirm)\"\n (click)=\"cancelRemoveConfirm()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" #cancel (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n #confirm\n id=\"confirm\"\n class=\"a-btn a-btn--primary\"\n (click)=\"confirmExecution(selectedTransfo)\"\n (keydown.tab)=\"focusElement(cross)\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n }\n</ng-template>\n","export const enTranslations = {\n '@pry': {\n pipeline: {\n codes: {\n LOOP_IN_TASK: 'A loop is present in the task model, using following nodes: {{ids}}',\n MISSING_NODE: 'A link to a non-existent node is present : {{value}}',\n DUPLICATE_NODE: 'Node with id {{id}} is present twice in the model',\n NO_INPUT: 'A node input is not link even though it is mandatory',\n NO_INPUT_MODEL: 'Previous node in graph has not provided a model',\n GRAPH_CANNOT_BE_PARSED: 'Serialized graph cannot be parsed.',\n GENERIC_ERROR: 'Server validation error ({{error}})',\n MISSING_PROPERTY: 'Property {{propertyName}} is mandatory',\n BAD_ATTRIBUTE_TYPE: 'Attribute {{attributeName}} has wrong type.',\n DATASET_CONFLICT: 'Following datasets ({{datasetIds}}) are inputs and outputs of the pipeline'\n },\n activateError: 'Error on activate',\n deactivateError: 'Error on deactivate',\n editor: 'Go to process',\n errors: 'Errors',\n global: 'Global',\n node: 'Node',\n consult: 'Consult',\n execute: 'Execute',\n execution_date: 'Execution date',\n version: 'Version',\n execution: 'Execution state',\n title: 'Component title',\n activity: 'Activity',\n action: 'Action',\n transformation_catalog: 'Transformation catalog',\n activate: 'Activate',\n activated: 'Activated',\n deactivate: 'Deactivate',\n deactivated: 'Deactivated',\n backToDescription: 'Back to description',\n selectedTask: 'Selected task',\n type: 'Type',\n ok: 'OK',\n ko: 'KO',\n create: 'Create transformation',\n save: 'Save',\n cancel: 'Cancel',\n goBack: 'Back to catalog',\n details: {\n consult: 'Consultation',\n transformation: 'Transformation',\n detail: 'Detail',\n title: 'Title',\n description: 'Description',\n version: 'Version',\n creation_date: 'Creation date',\n state: 'State',\n execution: 'Execution',\n execution_status: 'Execution status',\n execution_date: 'Execution date',\n last_execution_date: 'Last execution date',\n required: 'This field is required',\n maxLength: 'Number of characters allowed: {{len}}'\n },\n input: 'Incoming data sources',\n operation: 'Operation list',\n output: 'Outgoing dataset',\n delete: 'Delete component',\n down: 'Display sub-graph',\n up: 'Exit sub-graph',\n status: {\n terminated: 'Completed',\n started: 'In progress',\n error: 'Error'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n pipeline: {\n codes: {\n LOOP_IN_TASK:\n \"Une boucle est présente dans le modèle des tâches, en utilisant les noeuds d'id suivants: {{ids}}\",\n MISSING_NODE: \"Un lien pointe vers un noeud qui n'existe pas : {{value}}\",\n DUPLICATE_NODE: \"Le noeud d'id {{id}} est présent deux fois dans le modèle envoyé\",\n NO_INPUT: \"Une entrée de noeud n'est pas liée alors que c'est nécessaire\",\n NO_INPUT_MODEL: \"Le noeud précédent dans le graphe n'a pas généré son modèle\",\n GRAPH_CANNOT_BE_PARSED: \"Le graphe serialisé n'a pas pu être lu par le serveur\",\n GENERIC_ERROR: 'Problème de validation du serveur ({{error}})',\n MISSING_PROPERTY: 'La propriété {{propertyName}} est obligatoire',\n BAD_ATTRIBUTE_TYPE: \"L'attribut {{attributeName}} a un type incorrect.\",\n DATASET_CONFLICT:\n 'Les jeux de données suivants ({{datasetDefIds}}) sont en entrée et en sortie de la transformation'\n },\n activateError: \"Erreur lors de l'activation\",\n deactivateError: 'Erreur lors de la désactivation',\n editor: 'Accéder au processus',\n errors: 'Erreurs',\n global: 'Global',\n node: 'Noeud',\n consult: 'Consulter',\n execute: 'Exécuter',\n execution_date: 'Date exécution',\n version: 'Version',\n execution: 'Status exécution',\n title: 'Titre du composant',\n activity: 'Activité',\n action: 'Action',\n transformation_catalog: 'Catalogue des transformations',\n activate: 'Activer',\n activated: 'Activée',\n deactivate: 'Désactiver',\n deactivated: 'Désactivée',\n backToDescription: 'Retour à la description',\n selectedTask: 'Tâche sélectionnée',\n type: 'Type',\n ok: 'OK',\n ko: 'KO',\n create: 'Créer une transformation',\n save: 'Enregistrer',\n cancel: 'Annuler',\n goBack: 'Retour au catalogue',\n details: {\n consult: 'Consultation',\n transformation: 'Transformation',\n detail: 'Détail',\n title: 'Titre',\n description: 'Description',\n version: 'Version',\n creation_date: 'Date de création',\n state: 'Etat',\n execution: 'Exécution',\n execution_status: 'Status exécution',\n execution_date: 'Date exécution',\n last_execution_date: 'Date de la dernière exécution',\n required: 'Le champs est requis',\n maxLength: 'Nombre de caractères autorisé : {{len}}'\n },\n input: 'Sources de données entrantes',\n operation: 'Liste des opérations',\n output: 'Jeux de données sortants',\n delete: 'Supprimer le composant',\n down: 'Afficher le contenu du sous-graphe',\n up: 'Sortir du sous-graphe',\n status: {\n terminated: 'Terminé',\n started: 'En cours',\n error: 'Erreur'\n }\n }\n }\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors } from '@provoly/dashboard';\nimport { mergeMap, Observable } from 'rxjs';\nimport { PryTransfo } from '../components/pipeline-editor/pipeline.interface';\nimport { PipelineResponse } from './pipeline.actions';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PipelineService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n check(graph: any): Observable<PipelineResponse> {\n return this.store\n .select(ConfigSelectors.transfoUrl)\n .pipe(mergeMap((url) => this.httpClient.put<PipelineResponse>(`${url}/transfos`, graph)));\n }\n\n list(): Observable<PryTransfo[]> {\n return this.store\n .select(ConfigSelectors.transfoUrl)\n .pipe(mergeMap((url) => this.httpClient.get<PryTransfo[]>(encodeURI(`${url}/transfos`))));\n }\n\n get(id: string): Observable<PryTransfo> {\n return this.store\n .select(ConfigSelectors.transfoUrl)\n .pipe(mergeMap((url) => this.httpClient.get<PryTransfo>(encodeURI(`${url}/transfos/id/${id}`))));\n }\n\n activate(id: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.transfoUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(encodeURI(`${url}/transfos/id/${id}/activation`), null)));\n }\n\n deactivate(id: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.transfoUrl)\n .pipe(mergeMap((url) => this.httpClient.delete<void>(encodeURI(`${url}/transfos/id/${id}/activation`))));\n }\n\n execute(id: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.execUrl)\n .pipe(mergeMap((url) => this.httpClient.put<void>(encodeURI(`${url}/job/instances/id/${id}/start`), null)));\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { PryI18nService, PrySnackbarService } from '@provoly/dashboard';\nimport { of } from 'rxjs';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs/operators';\nimport { PryTransfo } from '../components/pipeline-editor/pipeline.interface';\nimport { PipelineActions } from './pipeline.actions';\nimport { PipelineService } from './pipeline.service';\n\n@Injectable()\nexport class PipelineEffects {\n callCheck$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PipelineActions.check),\n debounceTime(100),\n mergeMap((action) =>\n this.pipelineService.check(action.graph).pipe(\n map((response) => {\n if (action.fetch) {\n return PipelineActions.fetchTransfosList();\n } else {\n return PipelineActions.setResponse({ response });\n }\n }),\n catchError((response: HttpErrorResponse) => {\n let code = 'GENERIC_ERROR';\n const params = {} as { [key: string]: string };\n switch (response.status) {\n case 404:\n code = 'GRAPH_CANNOT_BE_PARSED';\n break;\n default:\n params['error'] = `${response.status} - ${response.message}`;\n }\n return of(\n PipelineActions.setResponse({\n response: {\n id: action.graph.id,\n errors: [{ code, params }],\n status: []\n }\n })\n );\n })\n )\n )\n )\n );\n\n listTransfo$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PipelineActions.fetchTransfosList),\n mergeMap((action) =>\n this.pipelineService.list().pipe(\n map((transfos) => PipelineActions.fetchTransfosListSuccess({ transfos })),\n catchError((error) => [PipelineActions.fetchTransfosListFailure({ error: error })])\n )\n )\n )\n );\n\n toggleTransfoActivation$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PipelineActions.toggleActivation),\n mergeMap((action) => {\n if (action.transfo.active) {\n return this.pipelineService.deactivate(action.transfo.id).pipe(\n map(() => PipelineActions.fetchTransfosList()),\n catchError((error) => {\n this.snackBar.open({\n message: this.translate.instant('@pry.pipeline.deactivateError'),\n type: 'error'\n });\n return [PipelineActions.activationError({ id: action.transfo.id, error: error })];\n })\n );\n }\n return this.pipelineService.activate(action.transfo.id).pipe(\n map(() => PipelineActions.fetchTransfosList()),\n catchError((error) => {\n this.snackBar.open({\n message: this.translate.instant('@pry.pipeline.activateError'),\n type: 'error'\n });\n return [PipelineActions.activationError({ id: action.transfo.id, error: error })];\n })\n );\n })\n )\n );\n\n executeTransfo$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PipelineActions.executeTransfo),\n mergeMap((action) => this.pipelineService.execute(action.id).pipe(map(() => PipelineActions.fetchTransfosList())))\n )\n );\n\n getTransformation$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PipelineActions.getTransformation),\n mergeMap((action) =>\n this.pipelineService\n .get(action.id)\n .pipe(map((transfo: PryTransfo) => PipelineActions.getTransformationSuccess({ transfo })))\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private pipelineService: PipelineService,\n private snackBar: PrySnackbarService,\n private translate: PryI18nService\n ) {}\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n PryCoreModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule, PrySinceDateModule,\n PrySortModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryPipelineDetailsComponent } from './components/pipeline-details/pipeline-details.component';\nimport { PryPipelineEditorComponent } from './components/pipeline-editor/pipeline-editor.component';\nimport { PryPipelineListComponent } from './components/pipeline-list/pipeline-list.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PipelineEffects } from './store/pipeline.effects';\nimport { pipelineFeatureKey, pipelineReducer } from './store/pipeline.reducer';\nimport { PryPipelineCssComponent } from './style/css.component';\nimport { A11yModule } from '@angular/cdk/a11y';\n\nconst components = [\n PryPipelineEditorComponent,\n PryPipelineCssComponent,\n PryPipelineListComponent,\n PryPipelineDetailsComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n PryCoreModule,\n StoreModule.forFeature(pipelineFeatureKey, pipelineReducer),\n EffectsModule.forFeature([PipelineEffects]),\n PryIconModule,\n PryI18nModule,\n PrySortModule,\n FormsModule,\n PryToggleModule,\n ReactiveFormsModule,\n OverlayModule,\n A11yModule,\n PrySinceDateModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class PryPipelineModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'pipeline', frTranslations);\n this.pryTranslateService.addLangObject('en', 'pipeline', enTranslations);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { BaseNode } from '../node-class/base-node.class';\nimport { NodeStatusModel } from '../store/pipeline.actions';\n\n@Component({ selector: 'pry-properties-panel', template: '' })\nexport class PipelinePropertiesPanelComponent {\n @Input() node!: BaseNode;\n @Input() checkFn!: () => void;\n @Input() model?: NodeStatusModel;\n @Input() disabled: boolean = false;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fromPipeline.pipelineFeatureKey","map","i2.PipelineComponentFactoryService","i4.PryPipelineCssComponent","i2","i4","i5.PryPipelineEditorComponent","i6.PryPipelineCssComponent","i7.PryPipelineDetailsComponent","i8","i1","mergeMap","i2.PipelineService"],"mappings":"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"}
1
+ {"version":3,"file":"provoly-dashboard-pipeline.mjs","sources":["../../../../projects/provoly/dashboard/pipeline/store/pipeline.actions.ts","../../../../projects/provoly/dashboard/pipeline/store/pipeline.reducer.ts","../../../../projects/provoly/dashboard/pipeline/store/pipeline.selectors.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-details/pipeline-details.component.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-details/pipeline-details.component.html","../../../../projects/provoly/dashboard/pipeline/node-class/base-node.class.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-editor/graph-serializer.utils.ts","../../../../projects/provoly/dashboard/pipeline/factory/pipeline-component-factory.service.ts","../../../../projects/provoly/dashboard/pipeline/style/css.component.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-editor/pipeline-editor.component.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-editor/pipeline-editor.component.html","../../../../projects/provoly/dashboard/pipeline/components/pipeline-editor/pipeline.interface.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-list/pipeline-list.component.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-list/pipeline-list.component.html","../../../../projects/provoly/dashboard/pipeline/i18n/en.translations.ts","../../../../projects/provoly/dashboard/pipeline/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/pipeline/store/pipeline.service.ts","../../../../projects/provoly/dashboard/pipeline/store/pipeline.effects.ts","../../../../projects/provoly/dashboard/pipeline/pipeline.module.ts","../../../../projects/provoly/dashboard/pipeline/components/pipeline-properties-panel.component.ts","../../../../projects/provoly/dashboard/pipeline/provoly-dashboard-pipeline.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { PryTransfo } from '../components/pipeline-editor/pipeline.interface';\n\nexport interface PipelineError {\n code: string;\n\n [name: string]: any;\n}\n\nexport interface NodePipelineError extends PipelineError {\n nodeId: string;\n}\n\nexport interface NodeStatusModel {\n attributes: { technicalName: string; type: string }[];\n}\n\nexport interface NodeStatus {\n nodeId: string;\n outModel: NodeStatusModel;\n errors: NodePipelineError[];\n}\n\nexport interface PipelineResponse {\n id: string;\n errors: PipelineError[];\n status: NodeStatus[];\n}\n\nexport const PipelineActions = {\n select: createAction('[Pipeline] select', props<{ id: string }>()),\n setResponse: createAction('[Pipeline] set response', props<{ response: PipelineResponse }>()),\n check: createAction('[Pipeline] check', props<{ graph: any; fetch?: boolean }>()),\n fetchTransfosList: createAction('[Pipeline] fetching available transfos'),\n fetchTransfosListSuccess: createAction('[Pipeline] received transfos', props<{ transfos: PryTransfo[] }>()),\n fetchTransfosListFailure: createAction('[Pipeline] failure transfos', props<{ error: any }>()),\n toggleActivation: createAction('[Pipeline] toggle transfo activation', props<{ transfo: PryTransfo }>()),\n activationError: createAction('[Pipeline] Error on toggle activate', props<{ id: string; error: any }>()),\n executeTransfo: createAction('[Pipeline] execute transfo', props<{ id: string }>()),\n getTransformation: createAction('[Pipeline] get transformation by id', props<{ id: string }>()),\n getTransformationSuccess: createAction(\n '[Pipeline] get transformation by id success',\n props<{ transfo: PryTransfo }>()\n )\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { PryTransfo } from '../components/pipeline-editor/pipeline.interface';\nimport { PipelineActions, PipelineResponse } from './pipeline.actions';\n\nexport const pipelineFeatureKey = '@pry/pipeline';\n\nexport interface PipelineState {\n selectedNode: string;\n checkResponse: PipelineResponse | undefined;\n transfos: PryTransfo[];\n error: any;\n activeError: any;\n loading: boolean;\n}\n\nexport const initialPipelineState: PipelineState = {\n selectedNode: '',\n checkResponse: undefined,\n transfos: [],\n error: undefined,\n activeError: undefined,\n loading: false\n};\n\nexport const pipelineReducer = createReducer(\n initialPipelineState,\n on(PipelineActions.select, (state, action) => ({\n ...state,\n selectedNode: action.id\n })),\n on(PipelineActions.setResponse, (state, action) => ({\n ...state,\n checkResponse: action.response\n })),\n on(PipelineActions.fetchTransfosList, (state) => ({\n ...state,\n loading: true\n })),\n on(PipelineActions.fetchTransfosListSuccess, (state, action) => ({\n ...state,\n transfos: action.transfos,\n loading: false\n })),\n on(PipelineActions.fetchTransfosListFailure, (state, action) => ({\n ...state,\n error: action.error,\n loading: false\n })),\n on(PipelineActions.toggleActivation, (state, action) => ({\n ...state,\n activeError: undefined,\n loading: action.transfo.active\n })),\n on(PipelineActions.activationError, (state, action) => ({\n ...state,\n activeError: {\n id: action.id,\n error: action.error\n },\n loading: false\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromPipeline from './pipeline.reducer';\n\nconst feature = createFeatureSelector<fromPipeline.PipelineState>(fromPipeline.pipelineFeatureKey);\n\nconst selectedNodeId = createSelector(feature, (state) => state?.selectedNode);\nconst checkResponse = createSelector(feature, (state) => state?.checkResponse);\nconst transfos = createSelector(feature, (state) => state?.transfos);\nconst activeError = createSelector(feature, (state) => state?.activeError);\nconst transfo = (id: string) =>\n createSelector(feature, (state) => {\n return state.transfos.find((transfo) => transfo.id === id);\n });\n\nexport const PipelineSelectors = {\n selectedNodeId,\n checkResponse,\n transfos,\n transfo,\n activeError\n};\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { combineLatestWith, map, Observable, startWith } from 'rxjs';\nimport { v4 } from 'uuid';\nimport { PipelineActions } from '../../store/pipeline.actions';\nimport { PipelineSelectors } from '../../store/pipeline.selectors';\nimport { PryTransfo } from '../pipeline-editor/pipeline.interface';\n\n@Component({\n selector: 'pry-pipeline-details',\n templateUrl: './pipeline-details.component.html'\n})\nexport class PryPipelineDetailsComponent extends SubscriptionnerDirective implements OnInit {\n @Input() pipeline: PryTransfo = {\n id: v4(),\n links: [],\n nodes: [],\n title: '',\n description: '',\n creationDate: new Date().toDateString(),\n version: '',\n active: false,\n lastJobExecution: null\n };\n @Output() goToList = new EventEmitter();\n @Output() goToConsult = new EventEmitter();\n @Output() goToEditor = new EventEmitter<PryTransfo>();\n @Output() executeConfirm = new EventEmitter();\n pipeline$!: Observable<PryTransfo | undefined>;\n isSaved$!: Observable<boolean>;\n isSavingDisabled$!: Observable<boolean>;\n form!: FormGroup;\n\n constructor(private store: Store) {\n super();\n this.form = new FormGroup({\n title: new FormControl(null, [Validators.required, Validators.maxLength(30)]),\n description: new FormControl(null, [Validators.maxLength(200)])\n });\n }\n\n ngOnInit(): void {\n this.form.setValue({ title: this.pipeline.title, description: this.pipeline.description });\n this.pipeline$ = this.store.select(PipelineSelectors.transfo(this.pipeline.id));\n this.isSaved$ = this.pipeline$.pipe(map((pipeline) => !!pipeline));\n this.isSavingDisabled$ = this.pipeline$.pipe(\n combineLatestWith(\n this.form.valueChanges.pipe(\n startWith({ title: this.form.value.title, description: this.form.value.description })\n )\n ),\n map(([pipeline, form]) => {\n return !!pipeline && form.title === pipeline?.title && form.description === pipeline?.description;\n })\n );\n this.subscriptions.add(\n this.store.select(PipelineSelectors.activeError).subscribe((error) => {\n if (error && error.id === this.pipeline.id) {\n this.pipeline = {\n ...this.pipeline,\n active: false\n };\n }\n })\n );\n }\n\n save() {\n this.setFormDataInPipeline();\n this.store.dispatch(\n PipelineActions.check({\n graph: {\n id: this.pipeline.id,\n title: this.pipeline.title,\n description: this.pipeline.description,\n links: this.pipeline.links,\n nodes: this.pipeline.nodes\n },\n fetch: true\n })\n );\n }\n\n setFormDataInPipeline() {\n this.pipeline = {\n ...this.pipeline,\n title: this.form.value.title,\n description: this.form.value.description\n } as PryTransfo;\n }\n\n openEditor() {\n this.setFormDataInPipeline();\n this.goToEditor.emit(this.pipeline);\n }\n\n toggleActivation() {\n this.store.dispatch(PipelineActions.toggleActivation({ transfo: this.pipeline }));\n this.pipeline = {\n ...this.pipeline,\n active: !this.pipeline.active\n };\n }\n}\n","<div class=\"o-pipeline-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n type=\"button\"\n [disabled]=\"!(isSaved$ | async) || !pipeline.active\"\n (click)=\"executeConfirm.emit()\"\n >\n {{ '@pry.pipeline.execute' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary a-btn--icon-text\" type=\"button\" (click)=\"goToList.emit()\">\n {{ '@pry.pipeline.goBack' | i18n }}\n </button>\n @if (isSaved$ | async) {\n <div class=\"\">\n <pry-toggle [ngModel]=\"pipeline.active\" (ngModelChange)=\"toggleActivation()\" dir=\"ltr\" mode=\"action\">{{\n '@pry.pipeline.activated' | i18n\n }}</pry-toggle>\n </div>\n }\n</div>\n<div class=\"o-pipeline-layout__details\">\n <h2>{{ '@pry.pipeline.details.transformation' | i18n }} {{ pipeline.title }}</h2>\n <div class=\"row\">\n <form id=\"detailForm\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <label for=\"title\" class=\"a-label\">{{ '@pry.pipeline.details.title' | i18n }}</label>\n <input type=\"text\" id=\"title\" name=\"title\" class=\"a-form-field\" formControlName=\"title\" />\n @if (form.get('title')?.touched && form.get('title')?.hasError('required')) {\n <label\n for=\"title\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.required' | i18n }}\n </label>\n }\n @if (form.get('title')?.hasError('maxlength')) {\n <label for=\"title\" class=\"a-label a-label--help -error\">\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '30' } }}\n </label>\n }\n <label for=\"description\" class=\"a-label\">{{ '@pry.pipeline.details.description' | i18n }}</label>\n <textarea id=\"description\" name=\"description\" class=\"a-form-field\" formControlName=\"description\"></textarea>\n @if (form.get('description')?.hasError('maxlength')) {\n <label\n for=\"description\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </form>\n <div>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.creation_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.creationDate | sinceDate }}</span>\n </h4>\n @if (pipeline.lastJobExecution) {\n <div>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.execution_status' | i18n }} :\n <span class=\"property-value\"> {{ '@pry.pipeline.status.' + pipeline.lastJobExecution.status | i18n }}</span>\n </h4>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.last_execution_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.lastJobExecution.executionDate | sinceDate }}</span>\n </h4>\n </div>\n }\n </div>\n </div>\n</div>\n<div class=\"o-pipeline-layout__toolbox\">\n <button\n type=\"submit\"\n form=\"detailForm\"\n [disabled]=\"form.invalid || (isSavingDisabled$ | async)\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n >\n {{ '@pry.pipeline.save' | i18n }}\n </button>\n <button (click)=\"openEditor()\" [disabled]=\"form.invalid\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.editor' | i18n }}\n </button>\n</div>\n","import { Store } from '@ngrx/store';\nimport { LGraphNode, LiteGraph } from 'litegraph.js';\nimport { v4 } from 'uuid';\nimport { PipelineActions } from '../store/pipeline.actions';\n\nLiteGraph.NODE_DEFAULT_BGCOLOR = '#FFFFFF';\nLiteGraph.NODE_TITLE_COLOR = 'transparent';\n\nexport class BaseNode extends LGraphNode {\n static store: Store;\n static check: () => void;\n titleColor: string;\n\n constructor(title?: string, ...other: any) {\n super();\n this.properties['id'] = v4();\n this.color = BaseNode.getNodeTitleColor();\n this.titleColor = '#FFFFFF';\n this.title = (this.type ?? '?').split('.')[(this.type ?? '?').split('.').length - 1] ?? '?';\n }\n\n static getNodeTitleColor() {\n return '#4E92E4';\n }\n\n override onSelected() {\n BaseNode.store.dispatch(PipelineActions.select({ id: this.properties['id'] }));\n }\n\n override onPropertyChanged(property: string, value: any, prevValue: any): void | boolean {\n BaseNode.check();\n }\n\n override onConnectionsChange() {\n BaseNode.check();\n }\n\n onDrawTitleText(ctx: any, title_height: any, size: any, scale: any, title_text_font: any, selected: any) {\n ctx.font = title_text_font;\n const title = this.getTitle();\n if (title) {\n ctx.fillStyle = this.titleColor;\n if (this.flags.collapsed) {\n ctx.textAlign = 'center';\n const measure = ctx.measureText(title);\n ctx.fillText(title, title_height + measure.width * 0.5, LiteGraph.NODE_TITLE_TEXT_Y - title_height);\n ctx.textAlign = 'left';\n } else {\n ctx.textAlign = 'left';\n ctx.fillText(title, title_height, LiteGraph.NODE_TITLE_TEXT_Y - title_height);\n }\n }\n }\n}\n","import { LGraph, LGraphNode, LiteGraph } from 'litegraph.js';\nimport { PrySerializedNode, PrySerializedPipeline } from './pipeline.interface';\n\nexport class GraphSerializerUtils {\n static serialize(lgraph: LGraph, id?: string): PrySerializedPipeline {\n const output = {\n id: id,\n links: [],\n nodes: []\n } as PrySerializedPipeline;\n\n if (!!lgraph) {\n const baseLiteGraph = structuredClone(lgraph.serialize());\n const translated = GraphSerializerUtils.translateFromSerializedLGraphToPryModel(baseLiteGraph);\n output.nodes = translated.nodes;\n output.links = translated.links;\n }\n return output;\n }\n\n static translateFromSerializedLGraphToPryModel(graph: any): PrySerializedPipeline {\n return {\n nodes: graph.nodes.map((node: any) => {\n const output = {\n id: node.properties['id'],\n type: node.type,\n title: node.title ?? node.type,\n spec: {\n ...node.properties\n },\n gui: {\n pos: [node.pos[0], node.pos[1]],\n size: [node.size[0], node.size[1]]\n }\n } as PrySerializedNode;\n\n delete output.spec['subgraph'];\n delete output.spec['id'];\n delete output.spec['type'];\n delete output.spec['_label'];\n\n if (node.type === 'SubGraphNode') {\n output.subgraph = GraphSerializerUtils.translateFromSerializedLGraphToPryModel(node.properties['subgraph']);\n }\n\n return output;\n }),\n links: graph.links.map((linkArray: any[]) => ({\n start: {\n id: graph.nodes.find((node: LGraphNode) => node.id === linkArray[1]).properties['id'],\n slot: linkArray[2]\n },\n end: {\n id: graph.nodes.find((node: LGraphNode) => node.id === linkArray[3]).properties['id'],\n slot: linkArray[4]\n }\n }))\n };\n }\n\n static hydrate(serializedGraph: PrySerializedPipeline, lgraph: LGraph) {\n const hydratedNodes = serializedGraph.nodes\n .map((node) => GraphSerializerUtils.createNode(node))\n .filter((node) => !!node);\n hydratedNodes.forEach((node) => lgraph.add(node));\n\n serializedGraph.links.forEach((link) => {\n const startNode = hydratedNodes.find((hNode) => link.start.id === hNode.properties['id']);\n const endNode = hydratedNodes.find((hNode) => link.end.id === hNode.properties['id']);\n if (startNode && endNode) {\n startNode.connect(link.start.slot, endNode, link.end.slot);\n } else {\n if (!startNode) {\n console.error(`Missing node id ${link.start.id} for link hydratation`);\n }\n if (!endNode) {\n console.error(`Missing node id ${link.end.id} for link hydratation`);\n }\n }\n });\n }\n\n static createNode(serializedNode: PrySerializedNode): LGraphNode {\n const node_const = LiteGraph.createNode(serializedNode.type, serializedNode.title, {});\n if (!node_const) {\n console.error(`Node with type ${serializedNode.type} could not have been created (id ${serializedNode.id}).`);\n } else {\n node_const.title = serializedNode.title;\n for (let i = 0; i < 2; i++) {\n node_const.pos[i] = serializedNode.gui.pos[i];\n node_const.size[i] = serializedNode.gui.size[i];\n }\n Object.keys(serializedNode.spec).forEach((key) => (node_const.properties[key] = serializedNode.spec[key]));\n node_const.properties['id'] = serializedNode.id;\n\n if (serializedNode.type === 'SubGraphNode') {\n const subGraphNode = node_const as any; // type is SubGRaphNode, but we don't want to introduce a dependency to optional module Subgraph\n\n for (let i = 0; i < subGraphNode.properties['inputs']; i++) {\n subGraphNode.createInput(\n serializedNode.subgraph!.nodes.filter((node) => node.type === 'SubGraphInput')[i].id\n );\n }\n for (let i = 0; i < subGraphNode.properties['outputs']; i++) {\n subGraphNode.createOutput(\n serializedNode.subgraph!.nodes.filter((node) => node.type === 'SubGraphOutput')[i].id\n );\n }\n\n GraphSerializerUtils.hydrate({ ...serializedNode.subgraph! }, subGraphNode.subGraph);\n }\n }\n return node_const;\n }\n}\n","import { Injectable, Type } from '@angular/core';\nimport { LiteGraph } from 'litegraph.js';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs';\nimport { PipelinePropertiesPanelComponent } from '../components/pipeline-properties-panel.component';\nimport { BaseNode } from '../node-class/base-node.class';\n\nexport interface PipelineComponentDefinition {\n type: string;\n label: string;\n component: Type<PipelinePropertiesPanelComponent>;\n nodeClass: Type<BaseNode>;\n draggable: boolean;\n category: 'operation' | 'input' | 'output';\n additionalProperties: any;\n color: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PipelineComponentFactoryService {\n referential$ = new BehaviorSubject<PipelineComponentDefinition[]>([]);\n public typesByCategories$: Observable<{ [category: string]: PipelineComponentDefinition[] }>;\n public categories$: Observable<string[]>;\n\n constructor() {\n this.typesByCategories$ = this.referential$.pipe(\n map((ref) => ref.filter((component) => component.draggable)),\n map((ref) => {\n const categories = {} as { [category: string]: PipelineComponentDefinition[] };\n\n ref.forEach((componentDef) => {\n if (!categories[componentDef.category]) {\n categories[componentDef.category] = [];\n }\n categories[componentDef.category].push(componentDef);\n });\n\n Object.keys(categories).forEach((category) =>\n categories[category].sort((a, b) => a.label.localeCompare(b.label))\n );\n\n return categories;\n })\n );\n\n this.categories$ = this.typesByCategories$.pipe(map((typesByCategories) => Object.keys(typesByCategories).sort()));\n }\n\n addType(\n type: string,\n component: Type<PipelinePropertiesPanelComponent>,\n nodeClass: Type<BaseNode>,\n category: 'operation' | 'input' | 'output' = 'operation',\n label = '',\n draggable = true,\n additionalProperties = {}\n ) {\n const shortLabel = label.length > 0 ? label : type.split('.')[type.split('.').length - 1];\n this.referential$.next([\n ...this.referential$.getValue().filter((ref) => ref.type !== type || ref.label !== shortLabel),\n {\n type,\n component,\n nodeClass,\n draggable,\n category,\n label: shortLabel,\n additionalProperties,\n // @ts-ignore\n color: nodeClass.getNodeTitleColor()\n }\n ]);\n if (LiteGraph.getNodeType(type)) {\n LiteGraph.unregisterNodeType(type);\n }\n LiteGraph.registerNodeType(type, nodeClass);\n }\n\n removeType(type: string) {\n this.referential$.next([...this.referential$.getValue().filter((component) => component.type !== type)]);\n }\n\n get(type: string): PipelineComponentDefinition {\n return this.referential$.getValue().find((component) => component.type === type) as PipelineComponentDefinition;\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-pipeline-css',\n template: '',\n styleUrls: ['./_o-pipeline.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryPipelineCssComponent {}\n","import {\n AfterViewInit,\n Component,\n ComponentRef,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { DataSourceActions, PryI18nService, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { LGraph, LGraphCanvas, LGraphNode, LiteGraph } from 'litegraph.js';\nimport { auditTime, BehaviorSubject, combineLatest, combineLatestWith, fromEvent, map, Observable } from 'rxjs';\nimport {\n PipelineComponentDefinition,\n PipelineComponentFactoryService\n} from '../../factory/pipeline-component-factory.service';\nimport { BaseNode } from '../../node-class/base-node.class';\nimport { NodePipelineError, PipelineActions, PipelineResponse } from '../../store/pipeline.actions';\nimport { PipelineSelectors } from '../../store/pipeline.selectors';\nimport { GraphSerializerUtils } from './graph-serializer.utils';\nimport { PrySerializedPipeline, PryTransfo } from './pipeline.interface';\n\nexport const MIME_TYPE_PIPELINE_COMPONENT = 'pipeline/component';\nexport const MIME_TYPE_PIPELINE_PROPERTIES = 'pipeline/properties';\n\n@Component({\n selector: 'pry-pipeline-editor',\n templateUrl: './pipeline-editor.component.html'\n})\nexport class PryPipelineEditorComponent extends SubscriptionnerDirective implements AfterViewInit {\n @Input() pipeline?: PryTransfo;\n @Output() goToConsult = new EventEmitter<PryTransfo>();\n @ViewChild('canvas') canvas!: ElementRef<HTMLCanvasElement>;\n @ViewChild('canvasParent') canvasParent!: ElementRef<HTMLDivElement>;\n @ViewChild('specific', { read: ViewContainerRef, static: false }) componentRef!: ViewContainerRef;\n lGraphs: LGraph[] = [];\n private lGraphCanvas!: LGraphCanvas;\n types$: Observable<{ [category: string]: PipelineComponentDefinition[] }>;\n categories$: Observable<string[]>;\n selectedNode$: Observable<BaseNode | undefined>;\n response$: Observable<PipelineResponse | undefined>;\n instanciatedComponent!: ComponentRef<any>;\n selectedNode?: BaseNode;\n actions = [] as { type: string; icon: string }[];\n errors$: Observable<(NodePipelineError & { translated: string })[]>;\n disableEditing: boolean = false;\n images: { start: HTMLImageElement; after: HTMLImageElement };\n search$ = new BehaviorSubject<any>({});\n\n constructor(\n private store: Store,\n private pipelineComponentFactoryService: PipelineComponentFactoryService,\n private translateService: PryI18nService\n ) {\n super();\n BaseNode.store = store;\n BaseNode.check = () => this.check();\n\n this.store.dispatch(DataSourceActions.load({}));\n\n this.types$ = combineLatest([pipelineComponentFactoryService.typesByCategories$, this.search$]).pipe(\n map(([typesByCategory, search]) => {\n const result = {} as { [category: string]: PipelineComponentDefinition[] };\n Object.keys(typesByCategory).forEach((cat) => {\n result[cat] = typesByCategory[cat].filter((type) =>\n type.label.toLocaleLowerCase().includes((search[cat] ?? '').toLocaleLowerCase())\n );\n });\n return result;\n })\n );\n this.categories$ = pipelineComponentFactoryService.categories$;\n\n this.selectedNode$ = this.store.select(PipelineSelectors.selectedNodeId).pipe(map((id) => this.findNodeById(id)));\n\n this.response$ = this.store.select(PipelineSelectors.checkResponse);\n\n this.subscriptions.add(\n this.response$.subscribe((response) => {\n this.allNodes.forEach((errorNode) => {\n // @ts-ignore\n delete errorNode?.bgcolor;\n });\n\n (response?.status.map((status) => status.errors).reduce((p, c) => [...p, ...c], []) ?? [])\n ?.map((error) => this.findNodeById(error.nodeId))\n .filter((errorNode) => !!errorNode)\n .forEach((errorNode) => (errorNode!.bgcolor = '#d93535'));\n\n this.refresh();\n })\n );\n\n this.selectedNode$.pipe(combineLatestWith(this.response$)).subscribe(([node, response]) => {\n if (this.instanciatedComponent) {\n this.componentRef.clear();\n }\n this.removeAction('down');\n if (node) {\n const module = this.pipelineComponentFactoryService.get(node?.type ?? '');\n if (module) {\n this.instanciatedComponent = this.componentRef.createComponent(module.component);\n this.instanciatedComponent.instance.node = node;\n this.instanciatedComponent.instance.checkFn = () => {};\n this.instanciatedComponent.instance.disabled = this.disableEditing;\n setTimeout(() => {\n this.instanciatedComponent.instance.checkFn = () => this.check();\n }, 100);\n\n if (response) {\n const matchingStatus = response.status.find((status) => status.nodeId === node.properties['id']);\n if (matchingStatus) {\n this.instanciatedComponent.instance.model = matchingStatus.outModel;\n }\n }\n }\n if (node.type === 'SubGraphNode') {\n this.addAction({ icon: 'eye-arrow-down', type: 'down' });\n }\n this.addAction({ icon: 'delete', type: 'delete' });\n } else {\n this.removeAction('delete');\n }\n });\n\n this.subscriptions.add(this.selectedNode$.subscribe((node) => (this.selectedNode = node)));\n\n this.errors$ = combineLatest([this.response$, this.selectedNode$]).pipe(\n map(([response, selectedNode]) => [\n ...(response?.errors ?? []).map((error) => ({ ...error, nodeId: '-' })),\n ...(response?.status.find((status) => status.nodeId === (selectedNode?.properties['id'] ?? '-----'))?.errors ??\n [])\n ]),\n map((errors) =>\n errors.map((error) => ({\n ...error,\n translated: this.translateService.instant('@pry.pipeline.codes.' + error.code, error)\n }))\n )\n );\n\n this.subscriptions.add(\n fromEvent(window, 'resize')\n .pipe(auditTime(100))\n .subscribe(() => {\n this.onResize();\n })\n );\n\n this.images = {\n start: new Image(),\n after: new Image()\n };\n this.images.start.src = '/assets/backgrounds/img_processus.png';\n this.images.after.src = '';\n }\n\n get currentGraph() {\n return this.lGraphs[this.lGraphs.length - 1];\n }\n\n get allNodes(): BaseNode[] {\n // @ts-ignore\n return this.currentGraph?._nodes ?? [];\n }\n\n get backgroundImage() {\n return (this.pipeline?.nodes ?? []).length > 0 ? this.images.after : this.images.start;\n }\n\n findNodeById(id: string) {\n return this.allNodes.find((node) => node.properties['id'] === id);\n }\n\n ngAfterViewInit(): void {\n this.lGraphs.push(new LGraph());\n this.lGraphCanvas = new LGraphCanvas(this.canvas.nativeElement, this.currentGraph);\n this.lGraphCanvas.allow_searchbox = false;\n this.lGraphCanvas.title_text_font = 'bold 14px Ubuntu';\n this.lGraphCanvas.inner_text_font = 'normal 12px Ubuntu';\n this.lGraphCanvas.default_link_color = '#000000';\n // @ts-ignore\n this.lGraphCanvas.background_image = undefined;\n this.lGraphCanvas.onDrawBackground = (ctx, vector) => {\n const rect = this.canvas.nativeElement.getBoundingClientRect();\n\n ctx.fillStyle = 'white';\n ctx.fillRect(0, 0, rect.width, rect.height);\n\n const imgSize = [306, 171];\n ctx.drawImage(\n this.backgroundImage,\n (rect.width - imgSize[0]) / 2,\n (rect.height - imgSize[1]) / 2,\n imgSize[0],\n imgSize[1]\n );\n };\n this.lGraphCanvas.onNodeDeselected = () => {\n this.store.dispatch(PipelineActions.select({ id: '' }));\n };\n this.currentGraph.start();\n if (this.pipeline) {\n GraphSerializerUtils.hydrate(this.pipeline as PrySerializedPipeline, this.currentGraph);\n this.disableEditing = this.pipeline.active;\n }\n this.onResize();\n }\n\n onResize() {\n // Make canvas so little that it doesn't impact css size calculation\n this.canvas.nativeElement.width = 10;\n this.canvas.nativeElement.height = 10;\n this.lGraphCanvas.resize(10, 10);\n\n // Later, make it grow to proper size\n setTimeout(() => {\n const rect = this.canvasParent.nativeElement.getBoundingClientRect();\n this.canvas.nativeElement.width = rect.width;\n this.canvas.nativeElement.height = rect.height;\n this.lGraphCanvas.resize(rect.width, rect.height);\n this.refresh();\n }, 10);\n }\n\n displayGraph(graph: LGraph) {\n this.currentGraph.stop();\n this.lGraphs.push(graph);\n this.lGraphCanvas.setGraph(graph);\n graph.start();\n }\n\n popGraph() {\n this.currentGraph.stop();\n this.lGraphs.length = this.lGraphs.length - 1;\n this.currentGraph.start();\n this.lGraphCanvas.setGraph(this.currentGraph);\n this.store.dispatch(PipelineActions.select({ id: '' }));\n this.lGraphCanvas.deselectAllNodes();\n if (this.lGraphs.length === 1) {\n this.removeAction('up');\n }\n }\n\n pupGraph(node: BaseNode) {\n // @ts-ignore\n if (!!node.subGraph) {\n // @ts-ignore\n this.displayGraph(node.subGraph);\n this.store.dispatch(PipelineActions.select({ id: '' }));\n this.lGraphCanvas.deselectAllNodes();\n this.addAction({ icon: 'eye-arrow-up', type: 'up' });\n }\n }\n\n check() {\n if (!this.disableEditing) {\n this.pipeline = {\n ...this.pipeline,\n ...GraphSerializerUtils.serialize(this.lGraphs[0], this.pipeline?.id)\n } as PryTransfo;\n setTimeout(() => {\n this.store.dispatch(\n PipelineActions.check({\n graph: {\n id: this.pipeline?.id,\n nodes: this.pipeline?.nodes,\n links: this.pipeline?.links,\n title: this.pipeline?.title,\n description: this.pipeline?.description\n }\n })\n );\n }, 100);\n }\n }\n\n refresh() {\n this.currentGraph?.change();\n }\n\n createNode(type: string, position: [number, number], additionalProperties: any) {\n const title = additionalProperties._label ?? type.split('.')[type.split('.').length - 1] ?? '?';\n const node_const = LiteGraph.createNode(type, title, {});\n if (node_const !== null) {\n node_const.title = title;\n node_const.pos = position;\n Object.keys(additionalProperties).forEach((key) => {\n node_const.properties[key] = additionalProperties[key];\n });\n\n this.currentGraph.add(node_const);\n } else {\n console.error(`Cannot create node of type ${type}`);\n }\n }\n\n onDragStart($event: DragEvent, component: PipelineComponentDefinition) {\n if (!!$event && !!$event.dataTransfer && !$event.dataTransfer.types.includes(MIME_TYPE_PIPELINE_COMPONENT)) {\n $event.dataTransfer.dropEffect = 'copy';\n $event.dataTransfer.effectAllowed = 'copy';\n $event.dataTransfer.setData(MIME_TYPE_PIPELINE_COMPONENT, component.type);\n $event.dataTransfer.setData(MIME_TYPE_PIPELINE_PROPERTIES, JSON.stringify({ ...component.additionalProperties }));\n }\n }\n\n onDrop($event: DragEvent) {\n $event.preventDefault();\n if (!!$event && !!$event.dataTransfer) {\n if ($event.dataTransfer.types.includes(MIME_TYPE_PIPELINE_COMPONENT)) {\n const componentType = $event.dataTransfer.getData(MIME_TYPE_PIPELINE_COMPONENT);\n const additionalProperties = JSON.parse($event.dataTransfer.getData(MIME_TYPE_PIPELINE_PROPERTIES));\n const convertedEvent = this.lGraphCanvas.convertEventToCanvasOffset($event);\n this.createNode(componentType, [convertedEvent[0], convertedEvent[1]], additionalProperties);\n this.check();\n $event.stopPropagation();\n }\n }\n }\n\n changeTitle(node: LGraphNode, $event: Event) {\n // @ts-ignore\n node.title = $event.target?.value;\n this.refresh();\n }\n\n clickedAction(action: any) {\n switch (action.type) {\n case 'up':\n this.popGraph();\n break;\n case 'down':\n this.pupGraph(this.selectedNode!);\n break;\n case 'delete':\n this.currentGraph.remove(this.selectedNode!);\n this.removeAction('delete');\n this.check();\n break;\n }\n this.store.dispatch(PipelineActions.select({ id: '' }));\n }\n\n addAction(add: { type: string; icon: string }) {\n if (!this.actions.find((action) => action.type === add.type)) {\n this.actions.push(add);\n }\n this.actions.sort((a, b) => a.type.localeCompare(b.type));\n }\n\n removeAction(type: string) {\n this.actions = this.actions.filter((action) => action.type !== type);\n }\n\n goBack() {\n this.goToConsult.emit(this.pipeline);\n }\n\n search($event: any) {\n this.search$.next({ ...$event });\n }\n}\n","<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline\">\n <div class=\"o-pipeline__menu\">\n <pry-accordion>\n @for (category of categories$ | async; track category; let index = $index) {\n <pry-accordion-item\n [item]=\"category\"\n [borderColor]=\"(types$ | async)![category][0].color\"\n [index]=\"index\"\n [showSearchBar]=\"true\"\n [search$]=\"search$\"\n (search)=\"search($event)\"\n translationStringBase=\"@pry.pipeline.\"\n >\n <ul class=\"o-pipeline__components\">\n @for (type of (types$ | async)![category]; track type) {\n <li [draggable]=\"!this.disableEditing\" (dragstart)=\"onDragStart($event, type)\">\n <p class=\"a-p\">{{ type.label }}</p>\n <pry-icon [width]=\"2\" [height]=\"20\" iconSvg=\"info\"></pry-icon>\n </li>\n }\n </ul>\n </pry-accordion-item>\n }\n </pry-accordion>\n </div>\n\n <div class=\"o-pipeline__workspace\">\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"goBack()\">\n {{ '@pry.pipeline.backToDescription' | i18n }}\n </button>\n @for (action of actions; track action) {\n <button type=\"button\" (click)=\"clickedAction(action)\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.' + action.type | i18n }}\n <pry-icon [iconSvg]=\"action.icon\"></pry-icon>\n </button>\n }\n </div>\n <div>\n <h1 class=\"a-h1\">{{ this.pipeline?.title }}</h1>\n </div>\n <div class=\"o-pipeline-editor\">\n <div (drop)=\"onDrop($event)\" class=\"o-pipeline-editor__grid\" #canvasParent>\n <canvas #canvas class=\"canvas\"></canvas>\n </div>\n <div class=\"o-pipeline-editor__properties\">\n @if (selectedNode$ | async; as node) {\n <div\n class=\"o-pipeline-editor__properties__node\"\n [title]=\"node.properties['id']\"\n >\n <h3 class=\"a-h3\">{{ '@pry.pipeline.selectedTask' | i18n }}</h3>\n <h4 class=\"a-h4\">{{ '@pry.pipeline.type' | i18n }}</h4>\n <p class=\"a-p a-p--type\">{{ node.type }}</p>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"{{ node.id }}\">{{ '@pry.pipeline.title' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"{{ node.id }}\"\n type=\"text\"\n [value]=\"node.title\"\n [disabled]=\"disableEditing\"\n (change)=\"changeTitle(node, $event)\"\n />\n </div>\n </div>\n }\n <div class=\"o-pipeline-editor__properties__detail\" [class.is-empty]=\"!selectedNode\">\n <div>\n <div #specific></div>\n </div>\n </div>\n @if (((errors$ | async)?.length ?? 0) > 0) {\n <div class=\"o-pipeline-editor__properties__errors\">\n <div class=\"o-pipeline-editor__properties__errors__title\">\n <pry-icon iconSvg=\"warning-triangle\"></pry-icon>\n <p class=\"a-p\">{{ '@pry.pipeline.errors' | i18n }}:</p>\n </div>\n <ul>\n @for (error of errors$ | async; track error) {\n <li>\n <span class=\"type\">{{\n (error?.nodeId === '-' ? '@pry.pipeline.global' : '@pry.pipeline.node') | i18n\n }}</span>\n {{ error.translated }}\n </li>\n }\n </ul>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n","export interface PrySerializedPipeline {\n id?: string;\n links: PrySerializedLink[];\n nodes: PrySerializedNode[];\n}\n\nexport interface PryTransfo extends PrySerializedPipeline {\n id: string;\n title: string;\n description: string;\n version: string;\n active: boolean;\n lastJobExecution?: LastJobExecution | null;\n creationDate: string;\n jobInstanceId?: string;\n}\n\ninterface LastJobExecution {\n uuid: string;\n status: ExecutionState;\n executionDate: string;\n}\n\nexport enum ExecutionState {\n STARTED = 'started',\n TERMINATED = 'terminated',\n ERROR = 'error'\n}\n\nexport interface PrySerializedLink {\n start: PrySerializedSlot;\n end: PrySerializedSlot;\n}\n\nexport interface PrySerializedSlot {\n id: string;\n slot: number;\n}\n\nexport interface PrySerializedNode {\n id: string;\n type: string;\n title: string;\n spec: PrySerializedSpec;\n gui: PrySerializedGui;\n subgraph?: {\n nodes: PrySerializedNode[];\n links: PrySerializedLink[];\n };\n}\n\nexport interface PrySerializedGui {\n pos: any;\n size: any;\n}\n\nexport interface PrySerializedSpec {\n [key: string]: string | number;\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, ElementRef, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigActions, ViewMode } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { PipelineActions } from '../../store/pipeline.actions';\nimport { PipelineSelectors } from '../../store/pipeline.selectors';\nimport { ExecutionState, PryTransfo } from '../pipeline-editor/pipeline.interface';\n\n@Component({\n selector: 'pry-pipeline-list',\n templateUrl: './pipeline-list.component.html'\n})\nexport class PryPipelineListComponent {\n transformation$: Observable<PryTransfo[]>;\n sortActive? = 'creationDate';\n sortDirection? = 'desc';\n toggleIndex?: number;\n selectedTransfo?: PryTransfo;\n overlayRef: any;\n @ViewChild('dropdown', { read: TemplateRef }) templateDropdown!: TemplateRef<any>;\n @ViewChild('templateModal', { read: TemplateRef }) templateModal!: TemplateRef<any>;\n @ViewChild('actions') actions!: ElementRef<HTMLButtonElement>;\n @ViewChild('toggleActions') toggleActions!: ElementRef<HTMLButtonElement>;\n @ViewChild('cancel') cancel!: ElementRef<HTMLButtonElement>;\n @ViewChild('cross') cross!: ElementRef<HTMLButtonElement>;\n @ViewChild('confirm') confirm!: ElementRef<HTMLButtonElement>;\n selectedMode: ViewMode = ViewMode.CATALOG;\n ViewMode = ViewMode;\n private confirmExecutionRef?: OverlayRef;\n\n constructor(private store: Store, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {\n this.store.dispatch(PipelineActions.fetchTransfosList());\n this.transformation$ = this.store.select(PipelineSelectors.transfos);\n this.selectedMode = ViewMode.CATALOG;\n }\n\n toggleMoreDropdown($event: any, index: number, transfo: PryTransfo) {\n if (this.toggleIndex !== index) {\n this.selectedTransfo = transfo;\n this.toggleIndex = index;\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['modal'],\n backdropClass: 'backdrop'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.backdropClick().subscribe(() => this.toggleMoreDropdown($event, index, transfo));\n this.overlayRef.attach(new TemplatePortal(this.templateDropdown, this.viewContainerRef));\n setTimeout(() => {\n this.toggleActions.nativeElement.focus();\n }, 10);\n const modal = document.querySelector('div.modal') as HTMLDivElement;\n if (!!modal) {\n if ($event.pointerType === 'mouse') {\n modal.style.left = $event.clientX - 150 + 'px';\n modal.style.top = $event.clientY - 10 + 'px';\n } else {\n const toggleMenuButton = document.querySelector('#' + $event.target.id);\n const rect = toggleMenuButton?.getBoundingClientRect();\n modal.style.left = (rect?.left ?? 0) - (modal?.clientWidth ?? 0) + 'px';\n modal.style.top = (rect?.top ?? 0) + 'px';\n }\n }\n } else {\n this.overlayRef?.dispose();\n this.closeDropdown();\n }\n }\n\n closeDropdown() {\n this.overlayRef?.dispose();\n this.toggleIndex = undefined;\n this.overlayRef = undefined;\n this.actions.nativeElement.focus();\n }\n\n toggleState(selectedTransfo: PryTransfo) {\n if (selectedTransfo) {\n this.store.dispatch(PipelineActions.toggleActivation({ transfo: selectedTransfo }));\n }\n this.closeDropdown();\n }\n\n toggleExecuteConfirm() {\n if (!this.confirmExecutionRef) {\n this.confirmExecutionRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['o-modal-wrapper'],\n backdropClass: 'backdrop'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.confirmExecutionRef.attach(new TemplatePortal(this.templateModal, this.viewContainerRef));\n this.confirmExecutionRef.backdropClick().subscribe(() => this.toggleExecuteConfirm());\n const panel = document.querySelector('div.o-modal-wrapper') as HTMLDivElement;\n if (!!panel) {\n panel.style.position = 'fixed';\n panel.style.top = '50%';\n panel.style.left = '50%';\n panel.style.transform = 'translate(-50%, -50%)';\n }\n setTimeout(() => {\n this.cancel.nativeElement.focus();\n }, 10);\n } else {\n this.confirmExecutionRef.dispose();\n this.confirmExecutionRef = undefined;\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n this.actions.nativeElement.focus();\n this.closeDropdown();\n }\n }\n\n cancelRemoveConfirm() {\n this.confirmExecutionRef?.dispose();\n this.confirmExecutionRef = undefined;\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n this.closeDropdown();\n }\n\n confirmExecution(selectedTransfo?: PryTransfo) {\n if (selectedTransfo?.jobInstanceId) {\n this.store.dispatch(PipelineActions.executeTransfo({ id: selectedTransfo.jobInstanceId }));\n }\n this.cancelRemoveConfirm();\n }\n\n list() {\n this.store.dispatch(PipelineActions.fetchTransfosList());\n this.selectedMode = ViewMode.CATALOG;\n }\n\n create() {\n this.selectedMode = ViewMode.CREATION;\n }\n\n consult(transfo: PryTransfo) {\n this.selectedTransfo = transfo;\n this.selectedMode = ViewMode.CONSULT;\n }\n\n savePipeline(transfo: PryTransfo) {\n this.selectedTransfo = transfo;\n this.selectedMode = ViewMode.EDITOR;\n }\n\n disableSelectedTranso() {\n if (this.selectedTransfo?.active === false) {\n this.closeDropdown();\n }\n }\n\n focusElement(element: HTMLButtonElement) {\n element.focus();\n }\n\n navigateContextMenu(button: HTMLButtonElement, nextButton: HTMLButtonElement) {\n if (!nextButton.disabled) {\n nextButton.tabIndex = 0;\n nextButton.focus();\n button.tabIndex = -1;\n }\n }\n\n protected readonly ExecutionState = ExecutionState;\n}\n","<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline-layout\">\n @switch (selectedMode) {\n @case (ViewMode.CATALOG) {\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--primary a-btn--icon-text\" type=\"button\" (click)=\"create()\">\n {{ '@pry.pipeline.create' | i18n }}\n </button>\n </div>\n <h1 class=\"a-h1\">{{ '@pry.pipeline.transformation_catalog' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"date\"\n prySortDirection=\"desc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.pipeline.transformation_catalog' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th prySortHeader=\"state\">{{ '@pry.pipeline.details.state' | i18n }}</th>\n <th prySortHeader=\"title\">{{ '@pry.pipeline.details.title' | i18n }}</th>\n <th prySortHeader=\"date\">{{ '@pry.pipeline.details.last_execution_date' | i18n }}</th>\n <th>\n <div class=\"u-display-flex -align-center -column\">\n {{ '@pry.pipeline.details.execution_status' | i18n }}\n </div>\n </th>\n <th>{{ '@pry.pipeline.action' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (transfo of transformation$ | async | prySortData : sortActive : sortDirection; track transfo; let index = $index) {\n <tr\n >\n <td>\n @if (transfo.active) {\n <div class=\"container-state\">\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"check\" class=\"check\"></pry-icon>\n <span> {{ '@pry.pipeline.activated' | i18n }}</span>\n </div>\n } @else {\n <div class=\"container-state\">\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"stop\" class=\"stop\"></pry-icon>\n <span>{{ '@pry.pipeline.deactivated' | i18n }}</span>\n </div>\n }\n <ng-template #deactivated>\n <div class=\"container-state\">\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"stop\" class=\"stop\"></pry-icon>\n <span>{{ '@pry.pipeline.deactivated' | i18n }}</span>\n </div>\n </ng-template>\n </td>\n <td>{{ transfo.title }}</td>\n <td>{{ transfo?.lastJobExecution?.executionDate | sinceDate }}</td>\n @if (transfo.lastJobExecution) {\n <td class=\"u-display-flex -align-center -column\">\n <div>\n @switch (transfo.lastJobExecution.status) {\n @case (ExecutionState.TERMINATED) {\n <pry-icon iconSvg=\"check\" [height]=\"25\" [width]=\"25\" class=\"check\"></pry-icon>\n }\n @case (ExecutionState.STARTED) {\n <pry-icon iconSvg=\"synchro\" [height]=\"25\" [width]=\"25\" class=\"warning\"></pry-icon>\n }\n @case (ExecutionState.ERROR) {\n <pry-icon iconSvg=\"close\" [height]=\"25\" [width]=\"25\" class=\"danger\"></pry-icon>\n }\n }\n </div>\n </td>\n }\n <td>\n <button type=\"button\" class=\"a-btn a-btn--secondary -size-sm\" (click)=\"consult(transfo)\">\n {{ '@pry.pipeline.consult' | i18n }}\n <span class=\"u-visually-hidden\"> {{ transfo.title }} </span>\n </button>\n </td>\n <td>\n <button\n class=\"a-btn a-btn--more\"\n type=\"button\"\n id=\"actions-{{ index }}\"\n #actions\n aria-controls=\"panelActions\"\n [attr.aria-expanded]=\"!!overlayRef\"\n (click)=\"toggleMoreDropdown($event, index, transfo)\"\n >\n <pry-icon iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n @case (ViewMode.CONSULT) {\n @if (selectedTransfo) {\n <pry-pipeline-details\n [pipeline]=\"selectedTransfo\"\n (goToList)=\"list()\"\n (goToEditor)=\"savePipeline($event)\"\n (executeConfirm)=\"toggleExecuteConfirm()\"\n ></pry-pipeline-details>\n }\n }\n @case (ViewMode.CREATION) {\n <pry-pipeline-details (goToList)=\"list()\" (goToEditor)=\"savePipeline($event)\"></pry-pipeline-details>\n }\n @case (ViewMode.EDITOR) {\n <pry-pipeline-editor [pipeline]=\"selectedTransfo\" (goToConsult)=\"consult($event)\"></pry-pipeline-editor>\n }\n }\n</div>\n<ng-template #noExecution>\n <div class=\"container-state\">\n <span>{{ '@pry.pipeline.ko' | i18n }}</span>\n <pry-icon [height]=\"15\" [width]=\"15\" iconSvg=\"danger\" class=\"danger\"></pry-icon>\n </div>\n</ng-template>\n\n<ng-template #dropdown>\n @if (selectedTransfo) {\n <div\n class=\"m-context-menu\"\n id=\"panelActions\"\n (click)=\"$event.stopPropagation()\"\n (keydown.escape)=\"closeDropdown()\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog panelActions\"\n >\n <ul class=\"m-context-menu__list\">\n <li class=\"m-context-menu__list__item\" role=\"none\">\n <button\n #toggleActions\n type=\"button\"\n class=\"a-btn\"\n role=\"menuitem\"\n (click)=\"toggleState(selectedTransfo)\"\n (keydown.arrowDown)=\"navigateContextMenu(activate, execute)\"\n (keydown.arrowUp)=\"navigateContextMenu(activate, execute)\"\n tabindex=\"0\"\n #activate\n >\n <span>{{ (selectedTransfo.active ? '@pry.pipeline.deactivate' : '@pry.pipeline.activate') | i18n }}</span>\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" role=\"none\">\n <button\n #execute\n type=\"button\"\n role=\"menuitem\"\n id=\"execute\"\n class=\"a-btn\"\n tabindex=\"-1\"\n (keydown.arrowDown)=\"navigateContextMenu(execute, activate)\"\n (keydown.arrowUp)=\"navigateContextMenu(execute, activate)\"\n [disabled]=\"!selectedTransfo.active\"\n (click)=\"toggleExecuteConfirm()\"\n >\n <span>{{ '@pry.pipeline.execute' | i18n }}</span>\n </button>\n </li>\n </ul>\n </div>\n }\n</ng-template>\n<ng-template #templateModal>\n @if (selectedTransfo) {\n <div\n class=\"o-modal\"\n (keydown.escape)=\"toggleExecuteConfirm()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog confirm delete presentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #cross\n (keydown.shift.tab)=\"focusElement(confirm)\"\n (click)=\"cancelRemoveConfirm()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" #cancel (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n #confirm\n id=\"confirm\"\n class=\"a-btn a-btn--primary\"\n (click)=\"confirmExecution(selectedTransfo)\"\n (keydown.tab)=\"focusElement(cross)\"\n >\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n }\n</ng-template>\n","export const enTranslations = {\n '@pry': {\n pipeline: {\n codes: {\n LOOP_IN_TASK: 'A loop is present in the task model, using following nodes: {{ids}}',\n MISSING_NODE: 'A link to a non-existent node is present : {{value}}',\n DUPLICATE_NODE: 'Node with id {{id}} is present twice in the model',\n NO_INPUT: 'A node input is not link even though it is mandatory',\n NO_INPUT_MODEL: 'Previous node in graph has not provided a model',\n GRAPH_CANNOT_BE_PARSED: 'Serialized graph cannot be parsed.',\n GENERIC_ERROR: 'Server validation error ({{error}})',\n MISSING_PROPERTY: 'Property {{propertyName}} is mandatory',\n BAD_ATTRIBUTE_TYPE: 'Attribute {{attributeName}} has wrong type.',\n DATASET_CONFLICT: 'Following datasets ({{datasetIds}}) are inputs and outputs of the pipeline'\n },\n activateError: 'Error on activate',\n deactivateError: 'Error on deactivate',\n editor: 'Go to process',\n errors: 'Errors',\n global: 'Global',\n node: 'Node',\n consult: 'Consult',\n execute: 'Execute',\n execution_date: 'Execution date',\n version: 'Version',\n execution: 'Execution state',\n title: 'Component title',\n activity: 'Activity',\n action: 'Action',\n transformation_catalog: 'Transformation catalog',\n activate: 'Activate',\n activated: 'Activated',\n deactivate: 'Deactivate',\n deactivated: 'Deactivated',\n backToDescription: 'Back to description',\n selectedTask: 'Selected task',\n type: 'Type',\n ok: 'OK',\n ko: 'KO',\n create: 'Create transformation',\n save: 'Save',\n cancel: 'Cancel',\n goBack: 'Back to catalog',\n details: {\n consult: 'Consultation',\n transformation: 'Transformation',\n detail: 'Detail',\n title: 'Title',\n description: 'Description',\n version: 'Version',\n creation_date: 'Creation date',\n state: 'State',\n execution: 'Execution',\n execution_status: 'Execution status',\n execution_date: 'Execution date',\n last_execution_date: 'Last execution date',\n required: 'This field is required',\n maxLength: 'Number of characters allowed: {{len}}'\n },\n input: 'Incoming data sources',\n operation: 'Operation list',\n output: 'Outgoing dataset',\n delete: 'Delete component',\n down: 'Display sub-graph',\n up: 'Exit sub-graph',\n status: {\n terminated: 'Completed',\n started: 'In progress',\n error: 'Error'\n }\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n pipeline: {\n codes: {\n LOOP_IN_TASK:\n \"Une boucle est présente dans le modèle des tâches, en utilisant les noeuds d'id suivants: {{ids}}\",\n MISSING_NODE: \"Un lien pointe vers un noeud qui n'existe pas : {{value}}\",\n DUPLICATE_NODE: \"Le noeud d'id {{id}} est présent deux fois dans le modèle envoyé\",\n NO_INPUT: \"Une entrée de noeud n'est pas liée alors que c'est nécessaire\",\n NO_INPUT_MODEL: \"Le noeud précédent dans le graphe n'a pas généré son modèle\",\n GRAPH_CANNOT_BE_PARSED: \"Le graphe serialisé n'a pas pu être lu par le serveur\",\n GENERIC_ERROR: 'Problème de validation du serveur ({{error}})',\n MISSING_PROPERTY: 'La propriété {{propertyName}} est obligatoire',\n BAD_ATTRIBUTE_TYPE: \"L'attribut {{attributeName}} a un type incorrect.\",\n DATASET_CONFLICT:\n 'Les jeux de données suivants ({{datasetDefIds}}) sont en entrée et en sortie de la transformation'\n },\n activateError: \"Erreur lors de l'activation\",\n deactivateError: 'Erreur lors de la désactivation',\n editor: 'Accéder au processus',\n errors: 'Erreurs',\n global: 'Global',\n node: 'Noeud',\n consult: 'Consulter',\n execute: 'Exécuter',\n execution_date: 'Date exécution',\n version: 'Version',\n execution: 'Status exécution',\n title: 'Titre du composant',\n activity: 'Activité',\n action: 'Action',\n transformation_catalog: 'Catalogue des transformations',\n activate: 'Activer',\n activated: 'Activée',\n deactivate: 'Désactiver',\n deactivated: 'Désactivée',\n backToDescription: 'Retour à la description',\n selectedTask: 'Tâche sélectionnée',\n type: 'Type',\n ok: 'OK',\n ko: 'KO',\n create: 'Créer une transformation',\n save: 'Enregistrer',\n cancel: 'Annuler',\n goBack: 'Retour au catalogue',\n details: {\n consult: 'Consultation',\n transformation: 'Transformation',\n detail: 'Détail',\n title: 'Titre',\n description: 'Description',\n version: 'Version',\n creation_date: 'Date de création',\n state: 'Etat',\n execution: 'Exécution',\n execution_status: 'Status exécution',\n execution_date: 'Date exécution',\n last_execution_date: 'Date de la dernière exécution',\n required: 'Le champs est requis',\n maxLength: 'Nombre de caractères autorisé : {{len}}'\n },\n input: 'Sources de données entrantes',\n operation: 'Liste des opérations',\n output: 'Jeux de données sortants',\n delete: 'Supprimer le composant',\n down: 'Afficher le contenu du sous-graphe',\n up: 'Sortir du sous-graphe',\n status: {\n terminated: 'Terminé',\n started: 'En cours',\n error: 'Erreur'\n }\n }\n }\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ConfigSelectors } from '@provoly/dashboard';\nimport { mergeMap, Observable } from 'rxjs';\nimport { PryTransfo } from '../components/pipeline-editor/pipeline.interface';\nimport { PipelineResponse } from './pipeline.actions';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PipelineService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n check(graph: any): Observable<PipelineResponse> {\n return this.store\n .select(ConfigSelectors.transfoUrl)\n .pipe(mergeMap((url) => this.httpClient.put<PipelineResponse>(`${url}/transfos`, graph)));\n }\n\n list(): Observable<PryTransfo[]> {\n return this.store\n .select(ConfigSelectors.transfoUrl)\n .pipe(mergeMap((url) => this.httpClient.get<PryTransfo[]>(encodeURI(`${url}/transfos`))));\n }\n\n get(id: string): Observable<PryTransfo> {\n return this.store\n .select(ConfigSelectors.transfoUrl)\n .pipe(mergeMap((url) => this.httpClient.get<PryTransfo>(encodeURI(`${url}/transfos/id/${id}`))));\n }\n\n activate(id: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.transfoUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(encodeURI(`${url}/transfos/id/${id}/activation`), null)));\n }\n\n deactivate(id: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.transfoUrl)\n .pipe(mergeMap((url) => this.httpClient.delete<void>(encodeURI(`${url}/transfos/id/${id}/activation`))));\n }\n\n execute(id: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.execUrl)\n .pipe(mergeMap((url) => this.httpClient.put<void>(encodeURI(`${url}/job/instances/id/${id}/start`), null)));\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { PryI18nService, PrySnackbarService } from '@provoly/dashboard';\nimport { of } from 'rxjs';\nimport { catchError, debounceTime, map, mergeMap } from 'rxjs';\nimport { PryTransfo } from '../components/pipeline-editor/pipeline.interface';\nimport { PipelineActions } from './pipeline.actions';\nimport { PipelineService } from './pipeline.service';\n\n@Injectable()\nexport class PipelineEffects {\n callCheck$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PipelineActions.check),\n debounceTime(100),\n mergeMap((action) =>\n this.pipelineService.check(action.graph).pipe(\n map((response) => {\n if (action.fetch) {\n return PipelineActions.fetchTransfosList();\n } else {\n return PipelineActions.setResponse({ response });\n }\n }),\n catchError((response: HttpErrorResponse) => {\n let code = 'GENERIC_ERROR';\n const params = {} as { [key: string]: string };\n switch (response.status) {\n case 404:\n code = 'GRAPH_CANNOT_BE_PARSED';\n break;\n default:\n params['error'] = `${response.status} - ${response.message}`;\n }\n return of(\n PipelineActions.setResponse({\n response: {\n id: action.graph.id,\n errors: [{ code, params }],\n status: []\n }\n })\n );\n })\n )\n )\n )\n );\n\n listTransfo$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PipelineActions.fetchTransfosList),\n mergeMap((action) =>\n this.pipelineService.list().pipe(\n map((transfos) => PipelineActions.fetchTransfosListSuccess({ transfos })),\n catchError((error) => [PipelineActions.fetchTransfosListFailure({ error: error })])\n )\n )\n )\n );\n\n toggleTransfoActivation$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PipelineActions.toggleActivation),\n mergeMap((action) => {\n if (action.transfo.active) {\n return this.pipelineService.deactivate(action.transfo.id).pipe(\n map(() => PipelineActions.fetchTransfosList()),\n catchError((error) => {\n this.snackBar.open({\n message: this.translate.instant('@pry.pipeline.deactivateError'),\n type: 'error'\n });\n return [PipelineActions.activationError({ id: action.transfo.id, error: error })];\n })\n );\n }\n return this.pipelineService.activate(action.transfo.id).pipe(\n map(() => PipelineActions.fetchTransfosList()),\n catchError((error) => {\n this.snackBar.open({\n message: this.translate.instant('@pry.pipeline.activateError'),\n type: 'error'\n });\n return [PipelineActions.activationError({ id: action.transfo.id, error: error })];\n })\n );\n })\n )\n );\n\n executeTransfo$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PipelineActions.executeTransfo),\n mergeMap((action) => this.pipelineService.execute(action.id).pipe(map(() => PipelineActions.fetchTransfosList())))\n )\n );\n\n getTransformation$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PipelineActions.getTransformation),\n mergeMap((action) =>\n this.pipelineService\n .get(action.id)\n .pipe(map((transfo: PryTransfo) => PipelineActions.getTransformationSuccess({ transfo })))\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private pipelineService: PipelineService,\n private snackBar: PrySnackbarService,\n private translate: PryI18nService\n ) {}\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n PryCoreModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule, PrySinceDateModule,\n PrySortModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryPipelineDetailsComponent } from './components/pipeline-details/pipeline-details.component';\nimport { PryPipelineEditorComponent } from './components/pipeline-editor/pipeline-editor.component';\nimport { PryPipelineListComponent } from './components/pipeline-list/pipeline-list.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PipelineEffects } from './store/pipeline.effects';\nimport { pipelineFeatureKey, pipelineReducer } from './store/pipeline.reducer';\nimport { PryPipelineCssComponent } from './style/css.component';\nimport { A11yModule } from '@angular/cdk/a11y';\n\nconst components = [\n PryPipelineEditorComponent,\n PryPipelineCssComponent,\n PryPipelineListComponent,\n PryPipelineDetailsComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n PryCoreModule,\n StoreModule.forFeature(pipelineFeatureKey, pipelineReducer),\n EffectsModule.forFeature([PipelineEffects]),\n PryIconModule,\n PryI18nModule,\n PrySortModule,\n FormsModule,\n PryToggleModule,\n ReactiveFormsModule,\n OverlayModule,\n A11yModule,\n PrySinceDateModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class PryPipelineModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'pipeline', frTranslations);\n this.pryTranslateService.addLangObject('en', 'pipeline', enTranslations);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { BaseNode } from '../node-class/base-node.class';\nimport { NodeStatusModel } from '../store/pipeline.actions';\n\n@Component({ selector: 'pry-properties-panel', template: '' })\nexport class PipelinePropertiesPanelComponent {\n @Input() node!: BaseNode;\n @Input() checkFn!: () => void;\n @Input() model?: NodeStatusModel;\n @Input() disabled: boolean = false;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fromPipeline.pipelineFeatureKey","i2.PipelineComponentFactoryService","i4.PryPipelineCssComponent","i2","i4","i5.PryPipelineEditorComponent","i6.PryPipelineCssComponent","i7.PryPipelineDetailsComponent","i8","i1","i2.PipelineService"],"mappings":"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"}