You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by ne...@apache.org on 2022/09/06 20:33:50 UTC
[helix] branch master updated: Helix Front storybook visual tests (#2204)
This is an automated email from the ASF dual-hosted git repository.
nealsun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/helix.git
The following commit(s) were added to refs/heads/master by this push:
new 46309d27c Helix Front storybook visual tests (#2204)
46309d27c is described below
commit 46309d27c08376a3aa43b569967667f00a71321c
Author: Micah Stubbs <mi...@gmail.com>
AuthorDate: Tue Sep 6 13:33:44 2022 -0700
Helix Front storybook visual tests (#2204)
Add visual tests and config for helix-front.
---
helix-front/.babelrc | 5 +
helix-front/.storybook/main.js | 39 +
helix-front/angular.json | 45 +-
helix-front/docs/classes/Cluster.html | 518 +
helix-front/docs/classes/Controller.html | 436 +
helix-front/docs/classes/HelixCtrl.html | 535 +
helix-front/docs/classes/History.html | 308 +
helix-front/docs/classes/Instance.html | 549 +
helix-front/docs/classes/Job.html | 657 +
helix-front/docs/classes/Node.html | 838 +
helix-front/docs/classes/Partition.html | 482 +
helix-front/docs/classes/Resource.html | 838 +
helix-front/docs/classes/Settings.html | 344 +
helix-front/docs/classes/Task.html | 244 +
helix-front/docs/classes/UserCtrl.html | 667 +
helix-front/docs/classes/Workflow.html | 689 +
.../docs/components/AlertDialogComponent.html | 488 +
helix-front/docs/components/AppComponent.html | 812 +
helix-front/docs/components/ClusterComponent.html | 582 +
.../docs/components/ClusterDetailComponent.html | 1268 ++
.../docs/components/ClusterListComponent.html | 901 ++
.../docs/components/ConfigDetailComponent.html | 949 ++
.../docs/components/ConfirmDialogComponent.html | 610 +
.../docs/components/ControllerDetailComponent.html | 589 +
.../docs/components/DashboardComponent.html | 1566 ++
.../docs/components/DataTableComponent.html | 1132 ++
.../docs/components/DetailHeaderComponent.html | 631 +
.../docs/components/DisabledLabelComponent.html | 431 +
.../docs/components/HelixListComponent.html | 516 +
.../docs/components/HistoryListComponent.html | 894 +
.../docs/components/InputDialogComponent.html | 751 +
.../docs/components/InputInlineComponent.html | 1738 ++
.../docs/components/InstanceDetailComponent.html | 959 ++
.../docs/components/InstanceListComponent.html | 811 +
.../docs/components/JobDetailComponent.html | 523 +
helix-front/docs/components/JobListComponent.html | 833 +
.../docs/components/JsonViewerComponent.html | 461 +
.../docs/components/KeyValuePairsComponent.html | 458 +
.../docs/components/NodeViewerComponent.html | 2772 ++++
.../docs/components/PartitionDetailComponent.html | 587 +
.../docs/components/PartitionListComponent.html | 1088 ++
.../docs/components/ResourceDetailComponent.html | 970 ++
.../ResourceDetailForInstanceComponent.html | 708 +
.../docs/components/ResourceListComponent.html | 1012 ++
.../components/ResourceNodeViewerComponent.html | 705 +
.../docs/components/StateLabelComponent.html | 470 +
.../docs/components/WorkflowDagComponent.html | 864 +
.../docs/components/WorkflowDetailComponent.html | 877 +
.../docs/components/WorkflowListComponent.html | 854 +
helix-front/docs/coverage.html | 1073 ++
helix-front/docs/dependencies.html | 212 +
.../docs/directives/KeyValuePairDirective.html | 276 +
helix-front/docs/fonts/ionicons.eot | Bin 0 -> 112650 bytes
helix-front/docs/fonts/ionicons.svg | 2090 +++
helix-front/docs/fonts/ionicons.ttf | Bin 0 -> 112472 bytes
helix-front/docs/fonts/ionicons.woff | Bin 0 -> 65912 bytes
helix-front/docs/fonts/ionicons.woff2 | Bin 0 -> 50632 bytes
helix-front/docs/fonts/roboto-v15-latin-300.eot | Bin 0 -> 16205 bytes
helix-front/docs/fonts/roboto-v15-latin-300.svg | 314 +
helix-front/docs/fonts/roboto-v15-latin-300.ttf | Bin 0 -> 32664 bytes
helix-front/docs/fonts/roboto-v15-latin-300.woff | Bin 0 -> 18520 bytes
helix-front/docs/fonts/roboto-v15-latin-300.woff2 | Bin 0 -> 14524 bytes
helix-front/docs/fonts/roboto-v15-latin-700.eot | Bin 0 -> 16208 bytes
helix-front/docs/fonts/roboto-v15-latin-700.svg | 310 +
helix-front/docs/fonts/roboto-v15-latin-700.ttf | Bin 0 -> 32500 bytes
helix-front/docs/fonts/roboto-v15-latin-700.woff | Bin 0 -> 18568 bytes
helix-front/docs/fonts/roboto-v15-latin-700.woff2 | Bin 0 -> 14552 bytes
helix-front/docs/fonts/roboto-v15-latin-italic.eot | Bin 0 -> 17534 bytes
helix-front/docs/fonts/roboto-v15-latin-italic.svg | 323 +
helix-front/docs/fonts/roboto-v15-latin-italic.ttf | Bin 0 -> 33404 bytes
.../docs/fonts/roboto-v15-latin-italic.woff | Bin 0 -> 19880 bytes
.../docs/fonts/roboto-v15-latin-italic.woff2 | Bin 0 -> 11500 bytes
.../docs/fonts/roboto-v15-latin-regular.eot | Bin 0 -> 16227 bytes
.../docs/fonts/roboto-v15-latin-regular.svg | 308 +
.../docs/fonts/roboto-v15-latin-regular.ttf | Bin 0 -> 32652 bytes
.../docs/fonts/roboto-v15-latin-regular.woff | Bin 0 -> 18520 bytes
.../docs/fonts/roboto-v15-latin-regular.woff2 | Bin 0 -> 14584 bytes
helix-front/docs/graph/dependencies.svg | 1030 ++
helix-front/docs/guards/ClusterResolver.html | 315 +
helix-front/docs/guards/ResourceResolver.html | 316 +
.../docs/images/compodoc-vectorise-inverted.png | Bin 0 -> 21782 bytes
.../docs/images/compodoc-vectorise-inverted.svg | 201 +
helix-front/docs/images/compodoc-vectorise.png | Bin 0 -> 21325 bytes
helix-front/docs/images/compodoc-vectorise.svg | 201 +
.../docs/images/coverage-badge-documentation.svg | 9 +
helix-front/docs/images/favicon.ico | Bin 0 -> 1150 bytes
helix-front/docs/index.html | 124 +
helix-front/docs/injectables/ChooserService.html | 827 +
helix-front/docs/injectables/ClusterService.html | 1497 ++
.../docs/injectables/ConfigurationService.html | 1674 ++
.../docs/injectables/ControllerService.html | 872 +
helix-front/docs/injectables/HelixService.html | 867 +
helix-front/docs/injectables/HelperService.html | 494 +
helix-front/docs/injectables/HistoryService.html | 1057 ++
helix-front/docs/injectables/InstanceService.html | 1403 ++
helix-front/docs/injectables/JobService.html | 868 +
helix-front/docs/injectables/ResourceService.html | 1605 ++
helix-front/docs/injectables/UserService.html | 446 +
helix-front/docs/injectables/WorkflowService.html | 1144 ++
helix-front/docs/interfaces/HelixSession.html | 259 +
helix-front/docs/interfaces/HelixUserRequest.html | 232 +
helix-front/docs/interfaces/IReplica.html | 437 +
helix-front/docs/interfaces/ListFieldObject.html | 370 +
helix-front/docs/interfaces/MapFieldObject.html | 370 +
helix-front/docs/interfaces/SimpleFieldObject.html | 370 +
helix-front/docs/js/compodoc.js | 14 +
helix-front/docs/js/lazy-load-graphs.js | 44 +
helix-front/docs/js/libs/EventDispatcher.js | 5 +
helix-front/docs/js/libs/bootstrap-native.js | 2 +
helix-front/docs/js/libs/clipboard.min.js | 7 +
.../docs/js/libs/custom-elements-es5-adapter.js | 15 +
helix-front/docs/js/libs/custom-elements.min.js | 38 +
helix-front/docs/js/libs/d3.v3.min.js | 2 +
helix-front/docs/js/libs/deep-iterator.js | 2 +
helix-front/docs/js/libs/es6-shim.min.js | 11 +
helix-front/docs/js/libs/htmlparser.js | 23 +
helix-front/docs/js/libs/innersvg.js | 9 +
helix-front/docs/js/libs/lit-html.js | 1 +
helix-front/docs/js/libs/prism.js | 46 +
helix-front/docs/js/libs/promise.min.js | 6 +
helix-front/docs/js/libs/svg-pan-zoom.min.js | 3 +
helix-front/docs/js/libs/tablesort.min.js | 6 +
helix-front/docs/js/libs/tablesort.number.min.js | 6 +
helix-front/docs/js/libs/vis.min.js | 46 +
helix-front/docs/js/libs/zepto.min.js | 2 +
helix-front/docs/js/menu-wc.js | 574 +
helix-front/docs/js/menu-wc_es5.js | 60 +
helix-front/docs/js/menu.js | 321 +
helix-front/docs/js/routes.js | 280 +
helix-front/docs/js/search/lunr.min.js | 6 +
helix-front/docs/js/search/search-lunr.js | 67 +
helix-front/docs/js/search/search.js | 268 +
helix-front/docs/js/search/search_index.js | 4 +
helix-front/docs/js/sourceCode.js | 58 +
helix-front/docs/js/svg-pan-zoom.controls.js | 53 +
helix-front/docs/js/tabs.js | 21 +
helix-front/docs/js/tree.js | 147 +
helix-front/docs/miscellaneous/functions.html | 188 +
helix-front/docs/miscellaneous/typealiases.html | 173 +
helix-front/docs/miscellaneous/variables.html | 451 +
helix-front/docs/modules.html | 353 +
helix-front/docs/modules/AppModule.html | 461 +
.../docs/modules/AppModule/dependencies.svg | 196 +
helix-front/docs/modules/ChooserModule.html | 278 +
.../docs/modules/ChooserModule/dependencies.svg | 72 +
helix-front/docs/modules/ClusterModule.html | 357 +
.../docs/modules/ClusterModule/dependencies.svg | 124 +
helix-front/docs/modules/ConfigurationModule.html | 277 +
.../modules/ConfigurationModule/dependencies.svg | 72 +
helix-front/docs/modules/ControllerModule.html | 251 +
.../docs/modules/ControllerModule/dependencies.svg | 56 +
helix-front/docs/modules/CoreModule.html | 161 +
helix-front/docs/modules/DashboardModule.html | 278 +
.../docs/modules/DashboardModule/dependencies.svg | 80 +
helix-front/docs/modules/HistoryModule.html | 254 +
.../docs/modules/HistoryModule/dependencies.svg | 56 +
helix-front/docs/modules/InstanceModule.html | 296 +
.../docs/modules/InstanceModule/dependencies.svg | 84 +
helix-front/docs/modules/MaterialModule.html | 219 +
helix-front/docs/modules/ResourceModule.html | 374 +
.../docs/modules/ResourceModule/dependencies.svg | 132 +
helix-front/docs/modules/SharedModule.html | 629 +
.../docs/modules/SharedModule/dependencies.svg | 304 +
helix-front/docs/modules/TestingModule.html | 270 +
.../docs/modules/TestingModule/dependencies.svg | 56 +
helix-front/docs/modules/WorkflowModule.html | 374 +
.../docs/modules/WorkflowModule/dependencies.svg | 132 +
helix-front/docs/overview.html | 1221 ++
helix-front/docs/properties.html | 127 +
helix-front/docs/styles/bootstrap-card.css | 219 +
helix-front/docs/styles/bootstrap.min.css | 6 +
helix-front/docs/styles/compodoc.css | 1082 ++
helix-front/docs/styles/dark.css | 117 +
helix-front/docs/styles/ionicons.min.css | 11 +
helix-front/docs/styles/laravel.css | 113 +
helix-front/docs/styles/material.css | 131 +
helix-front/docs/styles/original.css | 51 +
helix-front/docs/styles/postmark.css | 238 +
helix-front/docs/styles/prism.css | 301 +
helix-front/docs/styles/readthedocs.css | 117 +
helix-front/docs/styles/reset.css | 129 +
helix-front/docs/styles/stripe.css | 106 +
helix-front/docs/styles/style.css | 7 +
helix-front/docs/styles/tablesort.css | 33 +
helix-front/docs/styles/vagrant.css | 130 +
helix-front/documentation.json | 16106 +++++++++++++++++++
helix-front/jest.config.js | 5 +-
helix-front/package.json | 34 +-
.../{client => src}/app/app-routing.module.ts | 0
helix-front/{client => src}/app/app.component.html | 0
helix-front/{client => src}/app/app.component.scss | 0
.../{client => src}/app/app.component.spec.ts | 0
helix-front/{client => src}/app/app.component.ts | 0
helix-front/{client => src}/app/app.module.ts | 0
.../{client => src}/app/chooser/chooser.module.ts | 0
.../chooser/helix-list/helix-list.component.html | 0
.../chooser/helix-list/helix-list.component.scss | 0
.../helix-list/helix-list.component.spec.ts | 0
.../app/chooser/helix-list/helix-list.component.ts | 0
.../app/chooser/shared/chooser.service.spec.ts | 0
.../app/chooser/shared/chooser.service.ts | 0
.../cluster-detail/cluster-detail.component.html | 0
.../cluster-detail/cluster-detail.component.scss | 0
.../cluster-detail.component.spec.ts | 0
.../cluster-detail/cluster-detail.component.ts | 0
.../cluster-list/cluster-list.component.html | 0
.../cluster-list/cluster-list.component.scss | 2 +-
.../cluster-list/cluster-list.component.spec.ts | 0
.../cluster/cluster-list/cluster-list.component.ts | 0
.../app/cluster/cluster.component.html | 0
.../app/cluster/cluster.component.scss | 0
.../app/cluster/cluster.component.spec.ts | 0
.../app/cluster/cluster.component.ts | 0
.../{client => src}/app/cluster/cluster.module.ts | 0
.../app/cluster/shared/cluster.model.ts | 0
.../app/cluster/shared/cluster.resolver.ts | 0
.../app/cluster/shared/cluster.service.spec.ts | 0
.../app/cluster/shared/cluster.service.ts | 0
.../config-detail/config-detail.component.html | 0
.../config-detail/config-detail.component.scss | 0
.../config-detail/config-detail.component.spec.ts | 0
.../config-detail/config-detail.component.ts | 0
.../app/configuration/configuration.module.ts | 0
.../shared/configuration.service.spec.ts | 0
.../configuration/shared/configuration.service.ts | 0
.../controller-detail.component.html | 0
.../controller-detail.component.scss | 0
.../controller-detail.component.spec.ts | 0
.../controller-detail.component.ts | 0
.../app/controller/controller.module.ts | 0
.../app/controller/shared/controller.model.ts | 0
.../controller/shared/controller.service.spec.ts | 0
.../app/controller/shared/controller.service.ts | 0
.../{client => src}/app/core/core.module.ts | 0
.../{client => src}/app/core/helix.service.spec.ts | 0
.../{client => src}/app/core/helix.service.ts | 0
helix-front/{client => src}/app/core/settings.ts | 0
.../{client => src}/app/core/user.service.ts | 0
.../app/dashboard/dashboard.component.html | 0
.../app/dashboard/dashboard.component.scss | 0
.../app/dashboard/dashboard.component.spec.ts | 0
.../app/dashboard/dashboard.component.ts | 0
.../app/dashboard/dashboard.module.ts | 0
.../history-list/history-list.component.html | 0
.../history-list/history-list.component.scss | 2 +-
.../history-list/history-list.component.spec.ts | 0
.../history/history-list/history-list.component.ts | 0
.../{client => src}/app/history/history.module.ts | 0
.../app/history/shared/history.model.ts | 0
.../app/history/shared/history.service.spec.ts | 0
.../app/history/shared/history.service.ts | 0
.../instance-detail/instance-detail.component.html | 0
.../instance-detail/instance-detail.component.scss | 0
.../instance-detail.component.spec.ts | 0
.../instance-detail/instance-detail.component.ts | 0
.../instance-list/instance-list.component.html | 0
.../instance-list/instance-list.component.scss | 0
.../instance-list/instance-list.component.spec.ts | 0
.../instance-list/instance-list.component.ts | 0
.../app/instance/instance.module.ts | 0
.../app/instance/shared/instance.model.ts | 0
.../app/instance/shared/instance.service.spec.ts | 0
.../app/instance/shared/instance.service.ts | 0
.../partition-detail.component.html | 0
.../partition-detail.component.scss | 0
.../partition-detail.component.spec.ts | 0
.../partition-detail/partition-detail.component.ts | 0
.../partition-list/partition-list.component.html | 0
.../partition-list/partition-list.component.scss | 0
.../partition-list.component.spec.ts | 0
.../partition-list/partition-list.component.ts | 0
.../resource-detail-for-instance.component.html | 0
.../resource-detail-for-instance.component.scss | 0
.../resource-detail-for-instance.component.spec.ts | 0
.../resource-detail-for-instance.component.ts | 0
.../resource-detail/resource-detail.component.html | 0
.../resource-detail/resource-detail.component.scss | 2 +-
.../resource-detail.component.spec.ts | 0
.../resource-detail/resource-detail.component.ts | 0
.../resource-list/resource-list.component.html | 0
.../resource-list/resource-list.component.scss | 0
.../resource-list/resource-list.component.spec.ts | 0
.../resource-list/resource-list.component.ts | 0
.../resource-node-viewer.component.html | 0
.../resource-node-viewer.component.scss | 0
.../resource-node-viewer.component.spec.ts | 0
.../resource-node-viewer.component.ts | 0
.../app/resource/resource.module.ts | 0
.../app/resource/shared/resource.model.ts | 0
.../app/resource/shared/resource.resolver.ts | 0
.../app/resource/shared/resource.service.spec.ts | 0
.../app/resource/shared/resource.service.ts | 0
.../shared/data-table/data-table.component.html | 0
.../shared/data-table/data-table.component.scss | 2 +-
.../shared/data-table/data-table.component.spec.ts | 0
.../app/shared/data-table/data-table.component.ts | 0
.../detail-header/detail-header.component.html | 0
.../detail-header/detail-header.component.scss | 0
.../detail-header/detail-header.component.spec.ts | 0
.../detail-header/detail-header.component.ts | 0
.../alert-dialog/alert-dialog.component.html | 0
.../alert-dialog/alert-dialog.component.scss | 0
.../alert-dialog/alert-dialog.component.spec.ts | 0
.../dialog/alert-dialog/alert-dialog.component.ts | 0
.../confirm-dialog/confirm-dialog.component.html | 0
.../confirm-dialog/confirm-dialog.component.scss | 0
.../confirm-dialog.component.spec.ts | 0
.../confirm-dialog/confirm-dialog.component.ts | 0
.../input-dialog/input-dialog.component.html | 0
.../input-dialog/input-dialog.component.scss | 0
.../input-dialog/input-dialog.component.spec.ts | 0
.../dialog/input-dialog/input-dialog.component.ts | 0
.../disabled-label/disabled-label.component.html | 0
.../disabled-label/disabled-label.component.scss | 0
.../disabled-label.component.spec.ts | 0
.../disabled-label/disabled-label.component.ts | 0
.../app/shared/helper.service.spec.ts | 0
.../{client => src}/app/shared/helper.service.ts | 0
.../input-inline/input-inline.component.html | 0
.../input-inline/input-inline.component.scss | 0
.../input-inline/input-inline.component.spec.ts | 0
.../shared/input-inline/input-inline.component.ts | 0
.../shared/json-viewer/json-viewer.component.html | 0
.../shared/json-viewer/json-viewer.component.scss | 0
.../json-viewer/json-viewer.component.spec.ts | 0
.../shared/json-viewer/json-viewer.component.ts | 0
.../key-value-pairs/key-value-pairs.component.html | 0
.../key-value-pairs/key-value-pairs.component.scss | 0
.../key-value-pairs.component.spec.ts | 0
.../key-value-pairs/key-value-pairs.component.ts | 0
.../{client => src}/app/shared/material.module.ts | 0
.../app/shared/models/node.model.ts | 0
.../shared/node-viewer/node-viewer.component.html | 0
.../shared/node-viewer/node-viewer.component.scss | 2 +-
.../node-viewer/node-viewer.component.spec.ts | 4 +-
.../shared/node-viewer/node-viewer.component.ts | 0
.../{client => src}/app/shared/shared.module.ts | 0
.../shared/state-label/state-label.component.html | 0
.../shared/state-label/state-label.component.scss | 0
.../state-label/state-label.component.spec.ts | 0
.../shared/state-label/state-label.component.ts | 0
.../app/shared/state-label/state-label.stories.ts | 59 +
.../workflow/job-detail/job-detail.component.html | 0
.../workflow/job-detail/job-detail.component.scss | 0
.../job-detail/job-detail.component.spec.ts | 0
.../workflow/job-detail/job-detail.component.ts | 0
.../app/workflow/job-list/job-list.component.html | 0
.../app/workflow/job-list/job-list.component.scss | 0
.../workflow/job-list/job-list.component.spec.ts | 0
.../app/workflow/job-list/job-list.component.ts | 0
.../app/workflow/shared/job.service.spec.ts | 0
.../app/workflow/shared/job.service.ts | 0
.../app/workflow/shared/workflow.model.ts | 0
.../app/workflow/shared/workflow.service.spec.ts | 0
.../app/workflow/shared/workflow.service.ts | 0
.../workflow-dag/workflow-dag.component.html | 0
.../workflow-dag/workflow-dag.component.scss | 0
.../workflow-dag/workflow-dag.component.spec.ts | 0
.../workflow-dag/workflow-dag.component.ts | 0
.../workflow-detail/workflow-detail.component.html | 0
.../workflow-detail/workflow-detail.component.scss | 0
.../workflow-detail.component.spec.ts | 0
.../workflow-detail/workflow-detail.component.ts | 0
.../workflow-list/workflow-list.component.html | 0
.../workflow-list/workflow-list.component.scss | 0
.../workflow-list/workflow-list.component.spec.ts | 0
.../workflow-list/workflow-list.component.ts | 0
.../workflow-list/workflow-list.stories.ts | 84 +
.../app/workflow/workflow.module.ts | 0
helix-front/{client => src}/assets/.gitkeep | 0
helix-front/{client => src}/assets/logo.png | Bin
.../environments/environment.prod.ts | 0
.../{client => src}/environments/environment.ts | 0
helix-front/{client => src}/favicon.ico | Bin
helix-front/{client => src}/index.html | 0
helix-front/{client => src}/main.ts | 0
helix-front/{client => src}/polyfills.ts | 0
helix-front/{client => src}/styles.scss | 0
helix-front/{client => src}/testing/stubs.ts | 0
.../{client => src}/testing/testing.module.ts | 0
helix-front/{client => src}/theme.scss | 0
helix-front/{client => src}/tsconfig.app.json | 2 +-
helix-front/{client => src}/tsconfig.spec.json | 0
helix-front/{client => src}/typings.d.ts | 0
helix-front/tsconfig.json | 3 +-
helix-front/yarn.lock | 6429 +++++++-
386 files changed, 93765 insertions(+), 163 deletions(-)
diff --git a/helix-front/.babelrc b/helix-front/.babelrc
new file mode 100644
index 000000000..38d5956bb
--- /dev/null
+++ b/helix-front/.babelrc
@@ -0,0 +1,5 @@
+// .babelrc
+
+{
+ "presets": ["@babel/preset-env", "@babel/preset-typescript"]
+}
diff --git a/helix-front/.storybook/main.js b/helix-front/.storybook/main.js
new file mode 100644
index 000000000..26155133f
--- /dev/null
+++ b/helix-front/.storybook/main.js
@@ -0,0 +1,39 @@
+// .storybook/main.js
+const path = require('path');
+
+module.exports = {
+ addons: ['@storybook/addon-essentials'],
+ core: {
+ builder: 'webpack5',
+ },
+ features: {
+ storyStoreV7: true,
+ },
+ framework: '@storybook/angular',
+ stories: ['../src/app/**/*.stories.@(ts|mdx)'],
+ typescript: {
+ check: false,
+ checkOptions: {},
+ },
+ webpackFinal: async (config, { configType }) => {
+ // Make whatever fine-grained changes you need
+ // Return the altered config
+ return {
+ ...config,
+ resolve: {
+ ...config.resolve,
+ modules: [path.resolve('./src'), ...config.resolve.modules],
+ fallback: {
+ timers: false,
+ tty: false,
+ os: false,
+ http: false,
+ https: false,
+ zlib: false,
+ util: false,
+ ...config.resolve.fallback,
+ },
+ },
+ };
+ },
+};
diff --git a/helix-front/angular.json b/helix-front/angular.json
index c81813ddf..473df6427 100644
--- a/helix-front/angular.json
+++ b/helix-front/angular.json
@@ -5,7 +5,7 @@
"projects": {
"helix-front": {
"root": "",
- "sourceRoot": "client",
+ "sourceRoot": "src",
"projectType": "application",
"architect": {
"build": {
@@ -13,20 +13,20 @@
"options": {
"aot": true,
"outputPath": "dist/public",
- "index": "client/index.html",
- "main": "client/main.ts",
- "tsConfig": "client/tsconfig.app.json",
- "polyfills": "client/polyfills.ts",
+ "index": "src/index.html",
+ "main": "src/main.ts",
+ "tsConfig": "src/tsconfig.app.json",
+ "polyfills": "src/polyfills.ts",
"assets": [
- "client/assets",
- "client/favicon.ico",
+ "src/assets",
+ "src/favicon.ico",
{
"glob": "**/*",
"input": "node_modules/ace-builds/src-min/",
"output": "/"
}
],
- "styles": ["client/styles.scss", "client/theme.scss"],
+ "styles": ["src/styles.scss", "src/theme.scss"],
"scripts": [
"node_modules/ace-builds/src-min/ace.js",
"node_modules/ace-builds/src-min/theme-eclipse.js",
@@ -60,8 +60,8 @@
"buildOptimizer": true,
"fileReplacements": [
{
- "replace": "client/environments/environment.ts",
- "with": "client/environments/environment.prod.ts"
+ "replace": "src/environments/environment.ts",
+ "with": "src/environments/environment.prod.ts"
}
]
},
@@ -94,8 +94,8 @@
"builder": "@angular-builders/jest:run",
"options": {
"main": ["setupJest.ts"],
- "tsConfig": "client/tsconfig.spec.json",
- "polyfills": ["client/polyfills.ts"],
+ "tsConfig": "src/tsconfig.spec.json",
+ "polyfills": ["src/polyfills.ts"],
"no-cache": true,
"scripts": [
"node_modules/ace-builds/src-min/ace.js",
@@ -105,16 +105,16 @@
"node_modules/ace-builds/src-min/mode-css.js",
"node_modules/ace-builds/src-min/mode-json.js"
],
- "styles": ["client/styles.scss", "client/theme.scss"],
- "assets": ["client/assets", "client/favicon.ico"]
+ "styles": ["src/styles.scss", "src/theme.scss"],
+ "assets": ["src/assets", "src/favicon.ico"]
}
},
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"tsConfig": [
- "client/tsconfig.app.json",
- "client/tsconfig.spec.json",
+ "src/tsconfig.app.json",
+ "src/tsconfig.spec.json",
"cypress/tsconfig.json"
],
"exclude": [],
@@ -152,6 +152,19 @@
"devServerTarget": "helix-front:serve:production"
}
}
+ },
+ "storybook": {
+ "builder": "@storybook/angular:start-storybook",
+ "options": {
+ "browserTarget": "helix-front:serve:development",
+ "port": 6006
+ }
+ },
+ "build-storybook": {
+ "builder": "@storybook/angular:build-storybook",
+ "options": {
+ "browserTarget": "helix-front:build:development"
+ }
}
}
},
diff --git a/helix-front/docs/classes/Cluster.html b/helix-front/docs/classes/Cluster.html
new file mode 100644
index 000000000..b01345c78
--- /dev/null
+++ b/helix-front/docs/classes/Cluster.html
@@ -0,0 +1,518 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >Cluster</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>src/app/cluster/shared/cluster.model.ts</code>
+ </p>
+
+
+
+
+
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#config" >config</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#controller" >controller</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#enabled" >enabled</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#inMaintenance" >inMaintenance</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#instances" >instances</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#name" >name</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#resources" >resources</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#stateModels" >stateModels</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(obj: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="16" class="link-to-prism">src/app/cluster/shared/cluster.model.ts:16</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>obj</td>
+
+ <td>
+ <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="config"></a>
+ <span class="name">
+ <span ><b>config</b></span>
+ <a href="#config"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object" target="_blank" >Object</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="16" class="link-to-prism">src/app/cluster/shared/cluster.model.ts:16</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="controller"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>controller</b></span>
+ <a href="#controller"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="5" class="link-to-prism">src/app/cluster/shared/cluster.model.ts:5</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="enabled"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>enabled</b></span>
+ <a href="#enabled"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="6" class="link-to-prism">src/app/cluster/shared/cluster.model.ts:6</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="inMaintenance"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>inMaintenance</b></span>
+ <a href="#inMaintenance"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="8" class="link-to-prism">src/app/cluster/shared/cluster.model.ts:8</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="instances"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>instances</b></span>
+ <a href="#instances"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="../classes/Instance.html" target="_self" >Instance[]</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="7" class="link-to-prism">src/app/cluster/shared/cluster.model.ts:7</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="name"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>name</b></span>
+ <a href="#name"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="4" class="link-to-prism">src/app/cluster/shared/cluster.model.ts:4</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="resources"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>resources</b></span>
+ <a href="#resources"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code>string[]</code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="11" class="link-to-prism">src/app/cluster/shared/cluster.model.ts:11</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="stateModels"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>stateModels</b></span>
+ <a href="#stateModels"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code>string[]</code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="14" class="link-to-prism">src/app/cluster/shared/cluster.model.ts:14</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+
+
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Instance } from '../../instance/shared/instance.model';
+
+export class Cluster {
+ readonly name: string;
+ readonly controller: string;
+ readonly enabled: boolean;
+ readonly instances: Instance[];
+ readonly inMaintenance: boolean;
+
+ // TODO vxu: Resources are useless here. Remove it please.
+ readonly resources: string[];
+
+ // TODO vxu: convert it to use StateModel[]
+ readonly stateModels: string[];
+
+ config: Object;
+
+ constructor(obj: any) {
+ this.name = obj.id;
+ this.controller = obj.controller;
+ this.enabled = !obj.paused;
+ this.resources = obj.resources;
+ this.inMaintenance = obj.maintenance;
+
+ const ins: Instance[] = [];
+ for (const instance of obj.instances) {
+ ins.push(
+ new Instance(
+ instance,
+ this.name,
+ false, // here's a dummy value. should not be used
+ obj.liveInstances.indexOf(instance) >= 0
+ )
+ );
+ }
+ this.instances = ins;
+ }
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'Cluster.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/classes/Controller.html b/helix-front/docs/classes/Controller.html
new file mode 100644
index 000000000..390e4f546
--- /dev/null
+++ b/helix-front/docs/classes/Controller.html
@@ -0,0 +1,436 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >Controller</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>src/app/controller/shared/controller.model.ts</code>
+ </p>
+
+
+
+
+
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#clusterName" >clusterName</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#helixVersion" >helixVersion</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#liveInstance" >liveInstance</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#name" >name</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#sessionId" >sessionId</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(name, cluster, liveInstance, sessionId, version)</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="6" class="link-to-prism">src/app/controller/shared/controller.model.ts:6</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>name</td>
+
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>cluster</td>
+
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>liveInstance</td>
+
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>sessionId</td>
+
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>version</td>
+
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="clusterName"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>clusterName</b></span>
+ <a href="#clusterName"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="3" class="link-to-prism">src/app/controller/shared/controller.model.ts:3</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="helixVersion"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>helixVersion</b></span>
+ <a href="#helixVersion"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="6" class="link-to-prism">src/app/controller/shared/controller.model.ts:6</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="liveInstance"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>liveInstance</b></span>
+ <a href="#liveInstance"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="4" class="link-to-prism">src/app/controller/shared/controller.model.ts:4</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="name"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>name</b></span>
+ <a href="#name"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="2" class="link-to-prism">src/app/controller/shared/controller.model.ts:2</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="sessionId"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>sessionId</b></span>
+ <a href="#sessionId"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="5" class="link-to-prism">src/app/controller/shared/controller.model.ts:5</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+
+
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">export class Controller {
+ readonly name: string;
+ readonly clusterName: string;
+ readonly liveInstance: string;
+ readonly sessionId: string;
+ readonly helixVersion: string;
+
+ constructor(name, cluster, liveInstance, sessionId, version) {
+ this.name = name;
+ this.clusterName = cluster;
+ this.liveInstance = liveInstance;
+ this.sessionId = sessionId;
+ this.helixVersion = version;
+ }
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'Controller.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/classes/HelixCtrl.html b/helix-front/docs/classes/HelixCtrl.html
new file mode 100644
index 000000000..e82d01c22
--- /dev/null
+++ b/helix-front/docs/classes/HelixCtrl.html
@@ -0,0 +1,535 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >HelixCtrl</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>server/controllers/helix.ts</code>
+ </p>
+
+
+
+
+
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <span class="modifier">Static</span>
+ <span class="modifier">Readonly</span>
+ <a href="#ROUTE_PREFIX" >ROUTE_PREFIX</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Methods</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <span class="modifier">Protected</span>
+ <a href="#list" >list</a>
+ </li>
+ <li>
+ <span class="modifier">Protected</span>
+ <a href="#proxy" >proxy</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(router: <a href="https://angular.io/api/router/Router" target="_blank">Router</a>)</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="9" class="link-to-prism">server/controllers/helix.ts:9</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>router</td>
+
+ <td>
+ <code><a href="https://angular.io/api/router/Router" target="_blank" >Router</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="ROUTE_PREFIX"></a>
+ <span class="name">
+ <span class="modifier">Static</span>
+ <span class="modifier">Readonly</span>
+ <span ><b>ROUTE_PREFIX</b></span>
+ <a href="#ROUTE_PREFIX"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Default value : </i><code>'/api/helix'</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="9" class="link-to-prism">server/controllers/helix.ts:9</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+
+ <h3 id="methods">
+ Methods
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="list"></a>
+ <span class="name">
+ <span class="modifier">Protected</span>
+ <span ><b>list</b></span>
+ <a href="#list"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <span class="modifier-icon icon ion-ios-reset"></span>
+ <code>list(req: Request, res: Response)</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="65"
+ class="link-to-prism">server/controllers/helix.ts:65</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Parameters :</b>
+
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>req</td>
+ <td>
+ <code>Request</code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ <tr>
+ <td>res</td>
+ <td>
+ <code>Response</code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div>
+ </div>
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
+
+ </div>
+ <div class="io-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="proxy"></a>
+ <span class="name">
+ <span class="modifier">Protected</span>
+ <span ><b>proxy</b></span>
+ <a href="#proxy"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <span class="modifier-icon icon ion-ios-reset"></span>
+ <code>proxy(req: <a href="../interfaces/HelixUserRequest.html" target="_self">HelixUserRequest</a>, res: Response)</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="16"
+ class="link-to-prism">server/controllers/helix.ts:16</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Parameters :</b>
+
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>req</td>
+ <td>
+ <code><a href="../interfaces/HelixUserRequest.html" target="_self" >HelixUserRequest</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ <tr>
+ <td>res</td>
+ <td>
+ <code>Response</code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div>
+ </div>
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
+
+ </div>
+ <div class="io-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Request, Response, Router } from 'express';
+
+import * as request from 'request';
+
+import { HELIX_ENDPOINTS } from '../config';
+import { HelixUserRequest } from './d';
+
+export class HelixCtrl {
+ static readonly ROUTE_PREFIX = '/api/helix';
+
+ constructor(router: Router) {
+ router.route('/helix/list').get(this.list);
+ router.route('/helix/*').all(this.proxy);
+ }
+
+ protected proxy(req: HelixUserRequest, res: Response) {
+ const url = req.originalUrl.replace(HelixCtrl.ROUTE_PREFIX, '');
+ const helixKey = url.split('/')[1];
+
+ const segments = helixKey.split('.');
+ const group = segments[0];
+
+ segments.shift();
+ const name = segments.join('.');
+
+ const user = req.session.username;
+ const method = req.method.toLowerCase();
+ if (method != 'get' && !req.session.isAdmin) {
+ res.status(403).send('Forbidden');
+ return;
+ }
+
+ let apiPrefix = null;
+ if (HELIX_ENDPOINTS[group]) {
+ HELIX_ENDPOINTS[group].forEach((section) => {
+ if (section[name]) {
+ apiPrefix = section[name];
+ }
+ });
+ }
+
+ if (apiPrefix) {
+ const realUrl = apiPrefix + url.replace(`/${helixKey}`, '');
+ const options = {
+ url: realUrl,
+ json: req.body,
+ headers: {
+ 'Helix-User': user,
+ },
+ };
+ request[method](options, (error, response, body) => {
+ if (error) {
+ res.status(500).send(error);
+ } else if (body?.error) {
+ res.status(500).send(body?.error);
+ } else {
+ res.status(response.statusCode).send(body);
+ }
+ });
+ } else {
+ res.status(404).send('Not found');
+ }
+ }
+
+ protected list(req: Request, res: Response) {
+ try {
+ res.json(HELIX_ENDPOINTS);
+ } catch (err) {
+ console.log('error from helix/list/');
+ console.log(err);
+ }
+ }
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'HelixCtrl.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/classes/History.html b/helix-front/docs/classes/History.html
new file mode 100644
index 000000000..2cf26b245
--- /dev/null
+++ b/helix-front/docs/classes/History.html
@@ -0,0 +1,308 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >History</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>src/app/history/shared/history.model.ts</code>
+ </p>
+
+
+
+
+
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#controller" >controller</a>
+ </li>
+ <li>
+ <a href="#date" >date</a>
+ </li>
+ <li>
+ <a href="#session" >session</a>
+ </li>
+ <li>
+ <a href="#time" >time</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="controller"></a>
+ <span class="name">
+ <span ><b>controller</b></span>
+ <a href="#controller"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="5" class="link-to-prism">src/app/history/shared/history.model.ts:5</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="date"></a>
+ <span class="name">
+ <span ><b>date</b></span>
+ <a href="#date"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="2" class="link-to-prism">src/app/history/shared/history.model.ts:2</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="session"></a>
+ <span class="name">
+ <span ><b>session</b></span>
+ <a href="#session"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="4" class="link-to-prism">src/app/history/shared/history.model.ts:4</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="time"></a>
+ <span class="name">
+ <span ><b>time</b></span>
+ <a href="#time"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="3" class="link-to-prism">src/app/history/shared/history.model.ts:3</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+
+
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">export class History {
+ date: string;
+ time: number;
+ session: string;
+ controller: string;
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'History.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/classes/Instance.html b/helix-front/docs/classes/Instance.html
new file mode 100644
index 000000000..c809be135
--- /dev/null
+++ b/helix-front/docs/classes/Instance.html
@@ -0,0 +1,549 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >Instance</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>src/app/instance/shared/instance.model.ts</code>
+ </p>
+
+
+
+
+
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#clusterName" >clusterName</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#enabled" >enabled</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#helixVersion" >helixVersion</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#liveInstance" >liveInstance</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#name" >name</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#sessionId" >sessionId</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Accessors</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#healthy" >healthy</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(name: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, clusterName: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, enabled: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank">boolean</a>, liveInstance: boolean | string, sessionId?: <a href="https://devel [...]
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="11" class="link-to-prism">src/app/instance/shared/instance.model.ts:11</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>name</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>clusterName</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>enabled</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>liveInstance</td>
+
+ <td>
+ <code>boolean | string</code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>sessionId</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ Yes
+ </td>
+
+ </tr>
+ <tr>
+ <td>helixVersion</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ Yes
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="clusterName"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>clusterName</b></span>
+ <a href="#clusterName"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="3" class="link-to-prism">src/app/instance/shared/instance.model.ts:3</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="enabled"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>enabled</b></span>
+ <a href="#enabled"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="4" class="link-to-prism">src/app/instance/shared/instance.model.ts:4</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="helixVersion"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>helixVersion</b></span>
+ <a href="#helixVersion"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="7" class="link-to-prism">src/app/instance/shared/instance.model.ts:7</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="liveInstance"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>liveInstance</b></span>
+ <a href="#liveInstance"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code>boolean | string</code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="5" class="link-to-prism">src/app/instance/shared/instance.model.ts:5</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="name"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>name</b></span>
+ <a href="#name"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="2" class="link-to-prism">src/app/instance/shared/instance.model.ts:2</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="sessionId"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>sessionId</b></span>
+ <a href="#sessionId"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="6" class="link-to-prism">src/app/instance/shared/instance.model.ts:6</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+
+
+ <section>
+ <h3 id="accessors">
+ Accessors
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="healthy"></a>
+ <span class="name"><b>healthy</b><a href="#healthy"><span class="icon ion-ios-link"></span></a></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <span class="accessor"><b>get</b><code>healthy()</code></span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="9" class="link-to-prism">src/app/instance/shared/instance.model.ts:9</a></div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+</section>
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">export class Instance {
+ readonly name: string;
+ readonly clusterName: string;
+ readonly enabled: boolean;
+ readonly liveInstance: boolean | string;
+ readonly sessionId: string;
+ readonly helixVersion: string;
+
+ get healthy(): boolean {
+ return this.liveInstance && this.enabled;
+ }
+
+ constructor(
+ name: string,
+ clusterName: string,
+ enabled: boolean,
+ liveInstance: boolean | string,
+ sessionId?: string,
+ helixVersion?: string
+ ) {
+ this.name = name;
+ this.clusterName = clusterName;
+ this.enabled = enabled;
+ this.liveInstance = liveInstance;
+ this.sessionId = sessionId;
+ this.helixVersion = helixVersion;
+ }
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'Instance.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/classes/Job.html b/helix-front/docs/classes/Job.html
new file mode 100644
index 000000000..e94c6920e
--- /dev/null
+++ b/helix-front/docs/classes/Job.html
@@ -0,0 +1,657 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >Job</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>src/app/workflow/shared/workflow.model.ts</code>
+ </p>
+
+
+
+
+
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#clusterName" >clusterName</a>
+ </li>
+ <li>
+ <a href="#config" >config</a>
+ </li>
+ <li>
+ <a href="#context" >context</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#name" >name</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#parents" >parents</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#rawName" >rawName</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#startTime" >startTime</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#state" >state</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#workflowName" >workflowName</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(rawName: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, workflowName: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, clusterName: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, startTime: <a href="https://developer.mozilla.org/en-US/docs [...]
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="17" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:17</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>rawName</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>workflowName</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>clusterName</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>startTime</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>state</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>parents</td>
+
+ <td>
+ <code>string[]</code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="clusterName"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>clusterName</b></span>
+ <a href="#clusterName"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="13" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:13</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="config"></a>
+ <span class="name">
+ <span ><b>config</b></span>
+ <a href="#config"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="16" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:16</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="context"></a>
+ <span class="name">
+ <span ><b>context</b></span>
+ <a href="#context"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="17" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:17</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="name"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>name</b></span>
+ <a href="#name"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="6" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:6</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="parents"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>parents</b></span>
+ <a href="#parents"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code>string[]</code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="10" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:10</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="rawName"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>rawName</b></span>
+ <a href="#rawName"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="7" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:7</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="startTime"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>startTime</b></span>
+ <a href="#startTime"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="8" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:8</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="state"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>state</b></span>
+ <a href="#state"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="9" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:9</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="workflowName"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>workflowName</b></span>
+ <a href="#workflowName"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="12" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:12</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+
+
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import * as _ from 'lodash';
+
+export class Task {}
+
+export class Job {
+ readonly name: string;
+ readonly rawName: string;
+ readonly startTime: string;
+ readonly state: string;
+ readonly parents: string[];
+
+ readonly workflowName: string;
+ readonly clusterName: string;
+
+ // will load later
+ config: any;
+ context: any;
+
+ constructor(
+ rawName: string,
+ workflowName: string,
+ clusterName: string,
+ startTime: string,
+ state: string,
+ parents: string[]
+ ) {
+ this.rawName = rawName;
+ // try to reduce the name
+ this.name = _.replace(rawName, workflowName + '_', '');
+ this.workflowName = workflowName;
+ this.clusterName = clusterName;
+ this.startTime = startTime;
+ this.state = state;
+ // try to reduce parent names
+ this.parents = _.map(parents, (parent) =>
+ _.replace(parent, workflowName + '_', '')
+ );
+ }
+}
+
+export class Workflow {
+ readonly name: string;
+ readonly clusterName: string;
+ readonly config: any;
+ readonly jobs: Job[];
+ readonly context: any;
+ readonly json: any;
+
+ get isJobQueue(): boolean {
+ return (
+ this.config &&
+ this.config.IsJobQueue &&
+ this.config.IsJobQueue.toLowerCase() == 'true'
+ );
+ }
+
+ get state(): string {
+ return this.context.STATE || 'NOT STARTED';
+ }
+
+ constructor(obj: any, clusterName: string) {
+ this.json = obj;
+ this.name = obj.id;
+ this.clusterName = clusterName;
+ this.config = obj.WorkflowConfig;
+ this.context = obj.WorkflowContext;
+ this.jobs = this.parseJobs(obj.Jobs, obj.ParentJobs);
+ }
+
+ protected parseJobs(list: string[], parents: any): Job[] {
+ const result: Job[] = [];
+
+ _.forEach(list, (jobName) => {
+ result.push(
+ new Job(
+ jobName,
+ this.name,
+ this.clusterName,
+ _.get(this.context, ['StartTime', jobName]),
+ _.get(this.context, ['JOB_STATES', jobName]),
+ parents[jobName]
+ )
+ );
+ });
+
+ return result;
+ }
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'Job.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/classes/Node.html b/helix-front/docs/classes/Node.html
new file mode 100644
index 000000000..21dd2953b
--- /dev/null
+++ b/helix-front/docs/classes/Node.html
@@ -0,0 +1,838 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >Node</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>src/app/shared/models/node.model.ts</code>
+ </p>
+
+
+
+
+
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#id" >id</a>
+ </li>
+ <li>
+ <a href="#listFields" >listFields</a>
+ </li>
+ <li>
+ <a href="#mapFields" >mapFields</a>
+ </li>
+ <li>
+ <a href="#simpleFields" >simpleFields</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Methods</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <span class="modifier">Public</span>
+ <a href="#appendMapField" >appendMapField</a>
+ </li>
+ <li>
+ <span class="modifier">Public</span>
+ <a href="#appendSimpleField" >appendSimpleField</a>
+ </li>
+ <li>
+ <span class="modifier">Public</span>
+ <a href="#json" >json</a>
+ </li>
+ <li>
+ <span class="modifier">Private</span>
+ <a href="#keyValueToArray" >keyValueToArray</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(obj: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="23" class="link-to-prism">src/app/shared/models/node.model.ts:23</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>obj</td>
+
+ <td>
+ <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="id"></a>
+ <span class="name">
+ <span ><b>id</b></span>
+ <a href="#id"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="20" class="link-to-prism">src/app/shared/models/node.model.ts:20</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="listFields"></a>
+ <span class="name">
+ <span ><b>listFields</b></span>
+ <a href="#listFields"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="../interfaces/ListFieldObject.html" target="_self" >ListFieldObject[]</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Default value : </i><code>[]</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="22" class="link-to-prism">src/app/shared/models/node.model.ts:22</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="mapFields"></a>
+ <span class="name">
+ <span ><b>mapFields</b></span>
+ <a href="#mapFields"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="../interfaces/MapFieldObject.html" target="_self" >MapFieldObject[]</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Default value : </i><code>[]</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="23" class="link-to-prism">src/app/shared/models/node.model.ts:23</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="simpleFields"></a>
+ <span class="name">
+ <span ><b>simpleFields</b></span>
+ <a href="#simpleFields"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="../interfaces/SimpleFieldObject.html" target="_self" >SimpleFieldObject[]</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Default value : </i><code>[]</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="21" class="link-to-prism">src/app/shared/models/node.model.ts:21</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+
+ <h3 id="methods">
+ Methods
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="appendMapField"></a>
+ <span class="name">
+ <span class="modifier">Public</span>
+ <span ><b>appendMapField</b></span>
+ <a href="#appendMapField"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <span class="modifier-icon icon ion-ios-reset"></span>
+ <code>appendMapField(key: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, name: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, value: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="59"
+ class="link-to-prism">src/app/shared/models/node.model.ts:59</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Parameters :</b>
+
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>key</td>
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ <tr>
+ <td>name</td>
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ <tr>
+ <td>value</td>
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div>
+ </div>
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
+
+ </div>
+ <div class="io-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="appendSimpleField"></a>
+ <span class="name">
+ <span class="modifier">Public</span>
+ <span ><b>appendSimpleField</b></span>
+ <a href="#appendSimpleField"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <span class="modifier-icon icon ion-ios-reset"></span>
+ <code>appendSimpleField(name: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, value: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="52"
+ class="link-to-prism">src/app/shared/models/node.model.ts:52</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Parameters :</b>
+
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>name</td>
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ <tr>
+ <td>value</td>
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div>
+ </div>
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
+
+ </div>
+ <div class="io-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="json"></a>
+ <span class="name">
+ <span class="modifier">Public</span>
+ <span ><b>json</b></span>
+ <a href="#json"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <span class="modifier-icon icon ion-ios-reset"></span>
+ <code>json(id: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="79"
+ class="link-to-prism">src/app/shared/models/node.model.ts:79</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Parameters :</b>
+
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>id</td>
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div>
+ </div>
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </div>
+ <div class="io-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="keyValueToArray"></a>
+ <span class="name">
+ <span class="modifier">Private</span>
+ <span ><b>keyValueToArray</b></span>
+ <a href="#keyValueToArray"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <span class="modifier-icon icon ion-ios-reset"></span>
+ <code>keyValueToArray(obj: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object" target="_blank">Object</a>)</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="109"
+ class="link-to-prism">src/app/shared/models/node.model.ts:109</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Parameters :</b>
+
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>obj</td>
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object" target="_blank" >Object</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div>
+ </div>
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="../interfaces/SimpleFieldObject.html" target="_self" >SimpleFieldObject[]</a></code>
+
+ </div>
+ <div class="io-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import * as _ from 'lodash';
+
+interface SimpleFieldObject {
+ name: string;
+ value: string;
+}
+
+interface ListFieldObject {
+ name: string;
+ value: SimpleFieldObject[];
+}
+
+interface MapFieldObject {
+ name: string;
+ value: SimpleFieldObject[];
+}
+
+// This is a typical Helix Node definition
+export class Node {
+ id: string;
+ simpleFields: SimpleFieldObject[] = [];
+ listFields: ListFieldObject[] = [];
+ mapFields: MapFieldObject[] = [];
+
+ constructor(obj: any) {
+ if (obj != null) {
+ this.id = obj.id;
+ this.simpleFields = this.keyValueToArray(obj.simpleFields);
+
+ _.forOwn(obj['listFields'], (v, k) => {
+ this.listFields.push(<ListFieldObject>{
+ name: k,
+ value: _.map(
+ v,
+ (item) =>
+ <SimpleFieldObject>{
+ value: item,
+ }
+ ),
+ });
+ });
+
+ _.forOwn(obj['mapFields'], (v, k) => {
+ this.mapFields.push(<MapFieldObject>{
+ name: k,
+ value: this.keyValueToArray(v),
+ });
+ });
+ }
+ }
+
+ public appendSimpleField(name: string, value: string) {
+ this.simpleFields.push(<SimpleFieldObject>{
+ name,
+ value,
+ });
+ }
+
+ public appendMapField(key: string, name: string, value: string) {
+ const index = _.findIndex(this.mapFields, { name: key });
+ if (index >= 0) {
+ this.mapFields[index].value.push(<SimpleFieldObject>{
+ name,
+ value,
+ });
+ } else {
+ this.mapFields.push(<MapFieldObject>{
+ name: key,
+ value: [
+ <SimpleFieldObject>{
+ name,
+ value,
+ },
+ ],
+ });
+ }
+ }
+
+ public json(id: string): string {
+ const obj = {
+ id,
+ simpleFields: {},
+ listFields: {},
+ mapFields: {},
+ };
+
+ _.forEach(this.simpleFields, (item: SimpleFieldObject) => {
+ obj.simpleFields[item.name] = item.value;
+ });
+
+ _.forEach(this.listFields, (item: ListFieldObject) => {
+ obj.listFields[item.name] = [];
+ _.forEach(item.value, (subItem: SimpleFieldObject) => {
+ obj.listFields[item.name].push(subItem.value);
+ });
+ });
+
+ _.forEach(this.mapFields, (item: MapFieldObject) => {
+ obj.mapFields[item.name] = item.value ? {} : null;
+ _.forEach(item.value, (subItem: SimpleFieldObject) => {
+ obj.mapFields[item.name][subItem.name] = subItem.value;
+ });
+ });
+
+ return JSON.stringify(obj);
+ }
+
+ // Converting raw simpleFields to SimpleFieldObject[]
+ private keyValueToArray(obj: Object): SimpleFieldObject[] {
+ const result: SimpleFieldObject[] = [];
+ for (const k in obj) {
+ if (obj.hasOwnProperty(k)) {
+ result.push(<SimpleFieldObject>{
+ name: k,
+ value: obj[k],
+ });
+ }
+ }
+ return result;
+ }
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'Node.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/classes/Partition.html b/helix-front/docs/classes/Partition.html
new file mode 100644
index 000000000..ac7ca9924
--- /dev/null
+++ b/helix-front/docs/classes/Partition.html
@@ -0,0 +1,482 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >Partition</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>src/app/resource/shared/resource.model.ts</code>
+ </p>
+
+
+
+
+
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#name" >name</a>
+ </li>
+ <li>
+ <a href="#replicas" >replicas</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Accessors</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#isReady" >isReady</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(name: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="19" class="link-to-prism">src/app/resource/shared/resource.model.ts:19</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>name</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="name"></a>
+ <span class="name">
+ <span ><b>name</b></span>
+ <a href="#name"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="10" class="link-to-prism">src/app/resource/shared/resource.model.ts:10</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="replicas"></a>
+ <span class="name">
+ <span ><b>replicas</b></span>
+ <a href="#replicas"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="../interfaces/IReplica.html" target="_self" >IReplica[]</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="11" class="link-to-prism">src/app/resource/shared/resource.model.ts:11</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+
+
+ <section>
+ <h3 id="accessors">
+ Accessors
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="isReady"></a>
+ <span class="name"><b>isReady</b><a href="#isReady"><span class="icon ion-ios-link"></span></a></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <span class="accessor"><b>get</b><code>isReady()</code></span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="13" class="link-to-prism">src/app/resource/shared/resource.model.ts:13</a></div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+</section>
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import * as _ from 'lodash';
+
+export interface IReplica {
+ instanceName: string;
+ externalView: string;
+ idealState: string;
+}
+
+export class Partition {
+ name: string;
+ replicas: IReplica[];
+
+ get isReady() {
+ return !_.some(
+ this.replicas,
+ (replica) =>
+ !replica.externalView || replica.externalView != replica.idealState
+ );
+ }
+
+ constructor(name: string) {
+ this.name = name;
+ this.replicas = [];
+ }
+}
+
+export class Resource {
+ readonly name: string;
+
+ // TODO vxu: convert it to an enum in future if necessary
+ readonly alive: boolean;
+
+ readonly cluster: string;
+
+ // meta data
+ readonly idealStateMode: string;
+ readonly rebalanceMode: string;
+ readonly stateModel: string;
+ readonly partitionCount: number;
+ readonly replicaCount: number;
+
+ readonly idealState: any;
+ readonly externalView: any;
+
+ readonly partitions: Partition[];
+
+ get enabled(): boolean {
+ // there are two cases meaning enabled both:
+ // HELIX_ENABLED: true or no such item in idealState
+ return _.get(this.idealState, 'simpleFields.HELIX_ENABLED') != 'false';
+ }
+
+ get online(): boolean {
+ return !_.isEmpty(this.externalView);
+ }
+
+ constructor(
+ cluster: string,
+ name: string,
+ config: any,
+ idealState: any,
+ externalView: any
+ ) {
+ this.cluster = cluster;
+ this.name = name;
+
+ externalView = externalView || {};
+
+ // ignore config for now since config component will fetch itself
+
+ this.idealStateMode = idealState.simpleFields.IDEAL_STATE_MODE;
+ this.rebalanceMode = idealState.simpleFields.REBALANCE_MODE;
+ this.stateModel = idealState.simpleFields.STATE_MODEL_DEF_REF;
+ this.partitionCount = +idealState.simpleFields.NUM_PARTITIONS;
+ this.replicaCount = +idealState.simpleFields.REPLICAS;
+
+ // fetch partition names from externalView.mapFields is (relatively) more stable
+ this.partitions = [];
+ for (const partitionName in externalView.mapFields) {
+ const partition = new Partition(partitionName);
+
+ // in FULL_AUTO mode, externalView is more important
+ // if preferences list exists, fetch instances from it, else whatever
+ if (
+ this.rebalanceMode != 'FULL_AUTO' &&
+ idealState.listFields[partitionName]
+ ) {
+ for (const replicaName of idealState.listFields[partitionName]) {
+ partition.replicas.push(<IReplica>{
+ instanceName: replicaName,
+ externalView: _.get(externalView, [
+ 'mapFields',
+ partitionName,
+ replicaName,
+ ]),
+ idealState: _.get(idealState, [
+ 'mapFields',
+ partitionName,
+ replicaName,
+ ]),
+ });
+ }
+ } else if (
+ this.rebalanceMode != 'FULL_AUTO' &&
+ idealState.mapFields[partitionName]
+ ) {
+ for (const replicaName in idealState.mapFields[partitionName]) {
+ partition.replicas.push(<IReplica>{
+ instanceName: replicaName,
+ externalView: _.get(externalView, [
+ 'mapFields',
+ partitionName,
+ replicaName,
+ ]),
+ idealState: _.get(idealState, [
+ 'mapFields',
+ partitionName,
+ replicaName,
+ ]),
+ });
+ }
+ } else {
+ for (const replicaName in externalView.mapFields[partitionName]) {
+ partition.replicas.push(<IReplica>{
+ instanceName: replicaName,
+ externalView: _.get(externalView, [
+ 'mapFields',
+ partitionName,
+ replicaName,
+ ]),
+ idealState: _.get(idealState, [
+ 'mapFields',
+ partitionName,
+ replicaName,
+ ]),
+ });
+ }
+ }
+
+ // sort replicas by states
+ partition.replicas = _.sortBy(partition.replicas, 'externalView');
+
+ this.partitions.push(partition);
+ }
+
+ this.idealState = idealState;
+ this.externalView = externalView;
+ }
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'Partition.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/classes/Resource.html b/helix-front/docs/classes/Resource.html
new file mode 100644
index 000000000..72579b44d
--- /dev/null
+++ b/helix-front/docs/classes/Resource.html
@@ -0,0 +1,838 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >Resource</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>src/app/resource/shared/resource.model.ts</code>
+ </p>
+
+
+
+
+
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#alive" >alive</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#cluster" >cluster</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#externalView" >externalView</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#idealState" >idealState</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#idealStateMode" >idealStateMode</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#name" >name</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#partitionCount" >partitionCount</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#partitions" >partitions</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#rebalanceMode" >rebalanceMode</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#replicaCount" >replicaCount</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#stateModel" >stateModel</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Accessors</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#enabled" >enabled</a>
+ </li>
+ <li>
+ <a href="#online" >online</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(cluster: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, name: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, config: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>, idealState: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">an [...]
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="55" class="link-to-prism">src/app/resource/shared/resource.model.ts:55</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>cluster</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>name</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>config</td>
+
+ <td>
+ <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>idealState</td>
+
+ <td>
+ <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>externalView</td>
+
+ <td>
+ <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="alive"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>alive</b></span>
+ <a href="#alive"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="31" class="link-to-prism">src/app/resource/shared/resource.model.ts:31</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="cluster"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>cluster</b></span>
+ <a href="#cluster"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="33" class="link-to-prism">src/app/resource/shared/resource.model.ts:33</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="externalView"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>externalView</b></span>
+ <a href="#externalView"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="43" class="link-to-prism">src/app/resource/shared/resource.model.ts:43</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="idealState"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>idealState</b></span>
+ <a href="#idealState"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="42" class="link-to-prism">src/app/resource/shared/resource.model.ts:42</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="idealStateMode"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>idealStateMode</b></span>
+ <a href="#idealStateMode"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="36" class="link-to-prism">src/app/resource/shared/resource.model.ts:36</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="name"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>name</b></span>
+ <a href="#name"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="28" class="link-to-prism">src/app/resource/shared/resource.model.ts:28</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="partitionCount"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>partitionCount</b></span>
+ <a href="#partitionCount"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="39" class="link-to-prism">src/app/resource/shared/resource.model.ts:39</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="partitions"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>partitions</b></span>
+ <a href="#partitions"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="../classes/Partition.html" target="_self" >Partition[]</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="45" class="link-to-prism">src/app/resource/shared/resource.model.ts:45</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="rebalanceMode"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>rebalanceMode</b></span>
+ <a href="#rebalanceMode"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="37" class="link-to-prism">src/app/resource/shared/resource.model.ts:37</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="replicaCount"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>replicaCount</b></span>
+ <a href="#replicaCount"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="40" class="link-to-prism">src/app/resource/shared/resource.model.ts:40</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="stateModel"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>stateModel</b></span>
+ <a href="#stateModel"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="38" class="link-to-prism">src/app/resource/shared/resource.model.ts:38</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+
+
+ <section>
+ <h3 id="accessors">
+ Accessors
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="enabled"></a>
+ <span class="name"><b>enabled</b><a href="#enabled"><span class="icon ion-ios-link"></span></a></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <span class="accessor"><b>get</b><code>enabled()</code></span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="47" class="link-to-prism">src/app/resource/shared/resource.model.ts:47</a></div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="online"></a>
+ <span class="name"><b>online</b><a href="#online"><span class="icon ion-ios-link"></span></a></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <span class="accessor"><b>get</b><code>online()</code></span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="53" class="link-to-prism">src/app/resource/shared/resource.model.ts:53</a></div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+</section>
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import * as _ from 'lodash';
+
+export interface IReplica {
+ instanceName: string;
+ externalView: string;
+ idealState: string;
+}
+
+export class Partition {
+ name: string;
+ replicas: IReplica[];
+
+ get isReady() {
+ return !_.some(
+ this.replicas,
+ (replica) =>
+ !replica.externalView || replica.externalView != replica.idealState
+ );
+ }
+
+ constructor(name: string) {
+ this.name = name;
+ this.replicas = [];
+ }
+}
+
+export class Resource {
+ readonly name: string;
+
+ // TODO vxu: convert it to an enum in future if necessary
+ readonly alive: boolean;
+
+ readonly cluster: string;
+
+ // meta data
+ readonly idealStateMode: string;
+ readonly rebalanceMode: string;
+ readonly stateModel: string;
+ readonly partitionCount: number;
+ readonly replicaCount: number;
+
+ readonly idealState: any;
+ readonly externalView: any;
+
+ readonly partitions: Partition[];
+
+ get enabled(): boolean {
+ // there are two cases meaning enabled both:
+ // HELIX_ENABLED: true or no such item in idealState
+ return _.get(this.idealState, 'simpleFields.HELIX_ENABLED') != 'false';
+ }
+
+ get online(): boolean {
+ return !_.isEmpty(this.externalView);
+ }
+
+ constructor(
+ cluster: string,
+ name: string,
+ config: any,
+ idealState: any,
+ externalView: any
+ ) {
+ this.cluster = cluster;
+ this.name = name;
+
+ externalView = externalView || {};
+
+ // ignore config for now since config component will fetch itself
+
+ this.idealStateMode = idealState.simpleFields.IDEAL_STATE_MODE;
+ this.rebalanceMode = idealState.simpleFields.REBALANCE_MODE;
+ this.stateModel = idealState.simpleFields.STATE_MODEL_DEF_REF;
+ this.partitionCount = +idealState.simpleFields.NUM_PARTITIONS;
+ this.replicaCount = +idealState.simpleFields.REPLICAS;
+
+ // fetch partition names from externalView.mapFields is (relatively) more stable
+ this.partitions = [];
+ for (const partitionName in externalView.mapFields) {
+ const partition = new Partition(partitionName);
+
+ // in FULL_AUTO mode, externalView is more important
+ // if preferences list exists, fetch instances from it, else whatever
+ if (
+ this.rebalanceMode != 'FULL_AUTO' &&
+ idealState.listFields[partitionName]
+ ) {
+ for (const replicaName of idealState.listFields[partitionName]) {
+ partition.replicas.push(<IReplica>{
+ instanceName: replicaName,
+ externalView: _.get(externalView, [
+ 'mapFields',
+ partitionName,
+ replicaName,
+ ]),
+ idealState: _.get(idealState, [
+ 'mapFields',
+ partitionName,
+ replicaName,
+ ]),
+ });
+ }
+ } else if (
+ this.rebalanceMode != 'FULL_AUTO' &&
+ idealState.mapFields[partitionName]
+ ) {
+ for (const replicaName in idealState.mapFields[partitionName]) {
+ partition.replicas.push(<IReplica>{
+ instanceName: replicaName,
+ externalView: _.get(externalView, [
+ 'mapFields',
+ partitionName,
+ replicaName,
+ ]),
+ idealState: _.get(idealState, [
+ 'mapFields',
+ partitionName,
+ replicaName,
+ ]),
+ });
+ }
+ } else {
+ for (const replicaName in externalView.mapFields[partitionName]) {
+ partition.replicas.push(<IReplica>{
+ instanceName: replicaName,
+ externalView: _.get(externalView, [
+ 'mapFields',
+ partitionName,
+ replicaName,
+ ]),
+ idealState: _.get(idealState, [
+ 'mapFields',
+ partitionName,
+ replicaName,
+ ]),
+ });
+ }
+ }
+
+ // sort replicas by states
+ partition.replicas = _.sortBy(partition.replicas, 'externalView');
+
+ this.partitions.push(partition);
+ }
+
+ this.idealState = idealState;
+ this.externalView = externalView;
+ }
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'Resource.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/classes/Settings.html b/helix-front/docs/classes/Settings.html
new file mode 100644
index 000000000..74f84c5ff
--- /dev/null
+++ b/helix-front/docs/classes/Settings.html
@@ -0,0 +1,344 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >Settings</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>src/app/core/settings.ts</code>
+ </p>
+
+
+
+
+
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <span class="modifier">Static</span>
+ <span class="modifier">Readonly</span>
+ <a href="#helixAPI" >helixAPI</a>
+ </li>
+ <li>
+ <span class="modifier">Static</span>
+ <span class="modifier">Readonly</span>
+ <a href="#tableHeaderHeight" >tableHeaderHeight</a>
+ </li>
+ <li>
+ <span class="modifier">Static</span>
+ <span class="modifier">Readonly</span>
+ <a href="#tableRowHeight" >tableRowHeight</a>
+ </li>
+ <li>
+ <span class="modifier">Static</span>
+ <span class="modifier">Readonly</span>
+ <a href="#userAPI" >userAPI</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="helixAPI"></a>
+ <span class="name">
+ <span class="modifier">Static</span>
+ <span class="modifier">Readonly</span>
+ <span ><b>helixAPI</b></span>
+ <a href="#helixAPI"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Default value : </i><code>'/api/helix'</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="4" class="link-to-prism">src/app/core/settings.ts:4</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="tableHeaderHeight"></a>
+ <span class="name">
+ <span class="modifier">Static</span>
+ <span class="modifier">Readonly</span>
+ <span ><b>tableHeaderHeight</b></span>
+ <a href="#tableHeaderHeight"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Default value : </i><code>40</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="2" class="link-to-prism">src/app/core/settings.ts:2</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="tableRowHeight"></a>
+ <span class="name">
+ <span class="modifier">Static</span>
+ <span class="modifier">Readonly</span>
+ <span ><b>tableRowHeight</b></span>
+ <a href="#tableRowHeight"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Default value : </i><code>50</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="3" class="link-to-prism">src/app/core/settings.ts:3</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="userAPI"></a>
+ <span class="name">
+ <span class="modifier">Static</span>
+ <span class="modifier">Readonly</span>
+ <span ><b>userAPI</b></span>
+ <a href="#userAPI"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Default value : </i><code>'/api/user'</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="5" class="link-to-prism">src/app/core/settings.ts:5</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+
+
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">export class Settings {
+ static readonly tableHeaderHeight = 40;
+ static readonly tableRowHeight = 50;
+ static readonly helixAPI = '/api/helix';
+ static readonly userAPI = '/api/user';
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'Settings.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/classes/Task.html b/helix-front/docs/classes/Task.html
new file mode 100644
index 000000000..5ba2a8d04
--- /dev/null
+++ b/helix-front/docs/classes/Task.html
@@ -0,0 +1,244 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >Task</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>src/app/workflow/shared/workflow.model.ts</code>
+ </p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import * as _ from 'lodash';
+
+export class Task {}
+
+export class Job {
+ readonly name: string;
+ readonly rawName: string;
+ readonly startTime: string;
+ readonly state: string;
+ readonly parents: string[];
+
+ readonly workflowName: string;
+ readonly clusterName: string;
+
+ // will load later
+ config: any;
+ context: any;
+
+ constructor(
+ rawName: string,
+ workflowName: string,
+ clusterName: string,
+ startTime: string,
+ state: string,
+ parents: string[]
+ ) {
+ this.rawName = rawName;
+ // try to reduce the name
+ this.name = _.replace(rawName, workflowName + '_', '');
+ this.workflowName = workflowName;
+ this.clusterName = clusterName;
+ this.startTime = startTime;
+ this.state = state;
+ // try to reduce parent names
+ this.parents = _.map(parents, (parent) =>
+ _.replace(parent, workflowName + '_', '')
+ );
+ }
+}
+
+export class Workflow {
+ readonly name: string;
+ readonly clusterName: string;
+ readonly config: any;
+ readonly jobs: Job[];
+ readonly context: any;
+ readonly json: any;
+
+ get isJobQueue(): boolean {
+ return (
+ this.config &&
+ this.config.IsJobQueue &&
+ this.config.IsJobQueue.toLowerCase() == 'true'
+ );
+ }
+
+ get state(): string {
+ return this.context.STATE || 'NOT STARTED';
+ }
+
+ constructor(obj: any, clusterName: string) {
+ this.json = obj;
+ this.name = obj.id;
+ this.clusterName = clusterName;
+ this.config = obj.WorkflowConfig;
+ this.context = obj.WorkflowContext;
+ this.jobs = this.parseJobs(obj.Jobs, obj.ParentJobs);
+ }
+
+ protected parseJobs(list: string[], parents: any): Job[] {
+ const result: Job[] = [];
+
+ _.forEach(list, (jobName) => {
+ result.push(
+ new Job(
+ jobName,
+ this.name,
+ this.clusterName,
+ _.get(this.context, ['StartTime', jobName]),
+ _.get(this.context, ['JOB_STATES', jobName]),
+ parents[jobName]
+ )
+ );
+ });
+
+ return result;
+ }
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'Task.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/classes/UserCtrl.html b/helix-front/docs/classes/UserCtrl.html
new file mode 100644
index 000000000..5e5113fd3
--- /dev/null
+++ b/helix-front/docs/classes/UserCtrl.html
@@ -0,0 +1,667 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >UserCtrl</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>server/controllers/user.ts</code>
+ </p>
+
+
+
+
+
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Methods</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <span class="modifier">Protected</span>
+ <a href="#authorize" >authorize</a>
+ </li>
+ <li>
+ <span class="modifier">Protected</span>
+ <a href="#can" >can</a>
+ </li>
+ <li>
+ <span class="modifier">Protected</span>
+ <a href="#current" >current</a>
+ </li>
+ <li>
+ <span class="modifier">Protected</span>
+ <a href="#login" >login</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(router: <a href="https://angular.io/api/router/Router" target="_blank">Router</a>)</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="7" class="link-to-prism">server/controllers/user.ts:7</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>router</td>
+
+ <td>
+ <code><a href="https://angular.io/api/router/Router" target="_blank" >Router</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+
+ <section>
+
+ <h3 id="methods">
+ Methods
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="authorize"></a>
+ <span class="name">
+ <span class="modifier">Protected</span>
+ <span ><b>authorize</b></span>
+ <a href="#authorize"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <span class="modifier-icon icon ion-ios-reset"></span>
+ <code>authorize(req: <a href="../interfaces/HelixUserRequest.html" target="_self">HelixUserRequest</a>, res: Response)</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="15"
+ class="link-to-prism">server/controllers/user.ts:15</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Parameters :</b>
+
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>req</td>
+ <td>
+ <code><a href="../interfaces/HelixUserRequest.html" target="_self" >HelixUserRequest</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ <tr>
+ <td>res</td>
+ <td>
+ <code>Response</code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div>
+ </div>
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
+
+ </div>
+ <div class="io-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="can"></a>
+ <span class="name">
+ <span class="modifier">Protected</span>
+ <span ><b>can</b></span>
+ <a href="#can"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <span class="modifier-icon icon ion-ios-reset"></span>
+ <code>can(req: <a href="../interfaces/HelixUserRequest.html" target="_self">HelixUserRequest</a>, res: Response)</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="29"
+ class="link-to-prism">server/controllers/user.ts:29</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Parameters :</b>
+
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>req</td>
+ <td>
+ <code><a href="../interfaces/HelixUserRequest.html" target="_self" >HelixUserRequest</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ <tr>
+ <td>res</td>
+ <td>
+ <code>Response</code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div>
+ </div>
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+
+ </div>
+ <div class="io-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="current"></a>
+ <span class="name">
+ <span class="modifier">Protected</span>
+ <span ><b>current</b></span>
+ <a href="#current"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <span class="modifier-icon icon ion-ios-reset"></span>
+ <code>current(req: <a href="../interfaces/HelixUserRequest.html" target="_self">HelixUserRequest</a>, res: Response)</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="25"
+ class="link-to-prism">server/controllers/user.ts:25</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Parameters :</b>
+
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>req</td>
+ <td>
+ <code><a href="../interfaces/HelixUserRequest.html" target="_self" >HelixUserRequest</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ <tr>
+ <td>res</td>
+ <td>
+ <code>Response</code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div>
+ </div>
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
+
+ </div>
+ <div class="io-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="login"></a>
+ <span class="name">
+ <span class="modifier">Protected</span>
+ <span ><b>login</b></span>
+ <a href="#login"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <span class="modifier-icon icon ion-ios-reset"></span>
+ <code>login(request: <a href="../interfaces/HelixUserRequest.html" target="_self">HelixUserRequest</a>, response: Response)</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="38"
+ class="link-to-prism">server/controllers/user.ts:38</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Parameters :</b>
+
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>request</td>
+ <td>
+ <code><a href="../interfaces/HelixUserRequest.html" target="_self" >HelixUserRequest</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ <tr>
+ <td>response</td>
+ <td>
+ <code>Response</code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div>
+ </div>
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
+
+ </div>
+ <div class="io-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Request, Response, Router } from 'express';
+import * as LdapClient from 'ldapjs';
+
+import { LDAP } from '../config';
+import { HelixUserRequest } from './d';
+
+export class UserCtrl {
+ constructor(router: Router) {
+ router.route('/user/authorize').get(this.authorize);
+ router.route('/user/login').post(this.login.bind(this));
+ router.route('/user/current').get(this.current);
+ router.route('/user/can').get(this.can);
+ }
+
+ protected authorize(req: HelixUserRequest, res: Response) {
+ // you can rewrite this function to support your own authorization logic
+ // by default, doing nothing but redirection
+ if (req.query.url) {
+ res.redirect(req.query.url as string);
+ } else {
+ res.redirect('/');
+ }
+ }
+
+ protected current(req: HelixUserRequest, res: Response) {
+ res.json(req.session.username || 'Sign In');
+ }
+
+ protected can(req: HelixUserRequest, res: Response) {
+ try {
+ return res.json(req.session.isAdmin ? true : false);
+ } catch (err) {
+ // console.log('error from can', err)
+ return false;
+ }
+ }
+
+ protected login(request: HelixUserRequest, response: Response) {
+ const credential = request.body;
+ if (!credential.username || !credential.password) {
+ response.status(401).json(false);
+ return;
+ }
+
+ // check LDAP
+ const ldap = LdapClient.createClient({ url: LDAP.uri });
+ ldap.bind(
+ credential.username + LDAP.principalSuffix,
+ credential.password,
+ (err) => {
+ if (err) {
+ response.status(401).json(false);
+ } else {
+ // login success
+ const opts = {
+ filter:
+ '(&(sAMAccountName=' +
+ credential.username +
+ ')(objectcategory=person))',
+ scope: 'sub',
+ };
+
+ ldap.search(LDAP.base, opts, function (err, result) {
+ let isInAdminGroup = false;
+ result.on('searchEntry', function (entry) {
+ if (entry.object && !err) {
+ const groups = entry.object['memberOf'];
+ for (const group of groups) {
+ const groupName = group.split(',', 1)[0].split('=')[1];
+ if (groupName == LDAP.adminGroup) {
+ isInAdminGroup = true;
+ break;
+ }
+ }
+ }
+
+ request.session.username = credential.username;
+ request.session.isAdmin = isInAdminGroup;
+ response.json(isInAdminGroup);
+ });
+ });
+ }
+ }
+ );
+ }
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'UserCtrl.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/classes/Workflow.html b/helix-front/docs/classes/Workflow.html
new file mode 100644
index 000000000..6b1ea5e48
--- /dev/null
+++ b/helix-front/docs/classes/Workflow.html
@@ -0,0 +1,689 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content class">
+ <div class="content-data">
+
+
+
+
+
+
+
+
+
+
+
+
+<ol class="breadcrumb">
+ <li>Classes</li>
+ <li >Workflow</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info">
+ <p class="comment">
+ <h3>File</h3>
+ </p>
+ <p class="comment">
+ <code>src/app/workflow/shared/workflow.model.ts</code>
+ </p>
+
+
+
+
+
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#clusterName" >clusterName</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#config" >config</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#context" >context</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#jobs" >jobs</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#json" >json</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#name" >name</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Methods</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <span class="modifier">Protected</span>
+ <a href="#parseJobs" >parseJobs</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Accessors</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#isJobQueue" >isJobQueue</a>
+ </li>
+ <li>
+ <a href="#state" >state</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(obj: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>, clusterName: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="59" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:59</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>obj</td>
+
+ <td>
+ <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>clusterName</td>
+
+ <td>
+ <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="clusterName"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>clusterName</b></span>
+ <a href="#clusterName"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="43" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:43</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="config"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>config</b></span>
+ <a href="#config"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="44" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:44</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="context"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>context</b></span>
+ <a href="#context"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="46" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:46</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="jobs"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>jobs</b></span>
+ <a href="#jobs"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="../classes/Job.html" target="_self" >Job[]</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="45" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:45</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="json"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>json</b></span>
+ <a href="#json"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="47" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:47</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="name"></a>
+ <span class="name">
+ <span class="modifier">Readonly</span>
+ <span ><b>name</b></span>
+ <a href="#name"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="42" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:42</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+
+ <h3 id="methods">
+ Methods
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="parseJobs"></a>
+ <span class="name">
+ <span class="modifier">Protected</span>
+ <span ><b>parseJobs</b></span>
+ <a href="#parseJobs"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <span class="modifier-icon icon ion-ios-reset"></span>
+ <code>parseJobs(list: string[], parents: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="70"
+ class="link-to-prism">src/app/workflow/shared/workflow.model.ts:70</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Parameters :</b>
+
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>list</td>
+ <td>
+ <code>string[]</code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ <tr>
+ <td>parents</td>
+ <td>
+ <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div>
+ </div>
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="../classes/Job.html" target="_self" >Job[]</a></code>
+
+ </div>
+ <div class="io-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+ <section>
+ <h3 id="accessors">
+ Accessors
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="isJobQueue"></a>
+ <span class="name"><b>isJobQueue</b><a href="#isJobQueue"><span class="icon ion-ios-link"></span></a></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <span class="accessor"><b>get</b><code>isJobQueue()</code></span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="49" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:49</a></div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="state"></a>
+ <span class="name"><b>state</b><a href="#state"><span class="icon ion-ios-link"></span></a></span>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <span class="accessor"><b>get</b><code>state()</code></span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="57" class="link-to-prism">src/app/workflow/shared/workflow.model.ts:57</a></div>
+ </td>
+ </tr>
+
+ </tbody>
+ </table>
+</section>
+ </div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import * as _ from 'lodash';
+
+export class Task {}
+
+export class Job {
+ readonly name: string;
+ readonly rawName: string;
+ readonly startTime: string;
+ readonly state: string;
+ readonly parents: string[];
+
+ readonly workflowName: string;
+ readonly clusterName: string;
+
+ // will load later
+ config: any;
+ context: any;
+
+ constructor(
+ rawName: string,
+ workflowName: string,
+ clusterName: string,
+ startTime: string,
+ state: string,
+ parents: string[]
+ ) {
+ this.rawName = rawName;
+ // try to reduce the name
+ this.name = _.replace(rawName, workflowName + '_', '');
+ this.workflowName = workflowName;
+ this.clusterName = clusterName;
+ this.startTime = startTime;
+ this.state = state;
+ // try to reduce parent names
+ this.parents = _.map(parents, (parent) =>
+ _.replace(parent, workflowName + '_', '')
+ );
+ }
+}
+
+export class Workflow {
+ readonly name: string;
+ readonly clusterName: string;
+ readonly config: any;
+ readonly jobs: Job[];
+ readonly context: any;
+ readonly json: any;
+
+ get isJobQueue(): boolean {
+ return (
+ this.config &&
+ this.config.IsJobQueue &&
+ this.config.IsJobQueue.toLowerCase() == 'true'
+ );
+ }
+
+ get state(): string {
+ return this.context.STATE || 'NOT STARTED';
+ }
+
+ constructor(obj: any, clusterName: string) {
+ this.json = obj;
+ this.name = obj.id;
+ this.clusterName = clusterName;
+ this.config = obj.WorkflowConfig;
+ this.context = obj.WorkflowContext;
+ this.jobs = this.parseJobs(obj.Jobs, obj.ParentJobs);
+ }
+
+ protected parseJobs(list: string[], parents: any): Job[] {
+ const result: Job[] = [];
+
+ _.forEach(list, (jobName) => {
+ result.push(
+ new Job(
+ jobName,
+ this.name,
+ this.clusterName,
+ _.get(this.context, ['StartTime', jobName]),
+ _.get(this.context, ['JOB_STATES', jobName]),
+ parents[jobName]
+ )
+ );
+ });
+
+ return result;
+ }
+}
+</code></pre>
+ </div>
+</div>
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
+ var COMPODOC_CURRENT_PAGE_URL = 'Workflow.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/components/AlertDialogComponent.html b/helix-front/docs/components/AlertDialogComponent.html
new file mode 100644
index 000000000..7d178f28e
--- /dev/null
+++ b/helix-front/docs/components/AlertDialogComponent.html
@@ -0,0 +1,488 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content component">
+ <div class="content-data">
+
+
+
+
+<ol class="breadcrumb">
+ <li>Components</li>
+ <li
+ >
+ AlertDialogComponent</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+ <li >
+ <a href="#templateData" role="tab" id="templateData-tab" data-toggle="tab" data-link="template">Template</a>
+ </li>
+ <li >
+ <a href="#styleData" role="tab" id="styleData-tab" data-toggle="tab" data-link="style">Styles</a>
+ </li>
+ <li >
+ <a href="#tree" role="tab" id="tree-tab" data-toggle="tab" data-link="dom-tree">DOM Tree</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info"><p class="comment">
+ <h3>File</h3>
+</p>
+<p class="comment">
+ <code>src/app/shared/dialog/alert-dialog/alert-dialog.component.ts</code>
+</p>
+
+
+
+
+ <p class="comment">
+ <h3>Implements</h3>
+ </p>
+ <p class="comment">
+ <code><a href="https://angular.io/api/core/OnInit" target="_blank" >OnInit</a></code>
+ </p>
+
+
+<section>
+ <h3>Metadata</h3>
+ <table class="table table-sm table-hover metadata">
+ <tbody>
+
+
+
+
+
+
+
+
+
+
+
+ <tr>
+ <td class="col-md-3">selector</td>
+ <td class="col-md-9"><code>hi-alert-dialog</code></td>
+ </tr>
+
+ <tr>
+ <td class="col-md-3">styleUrls</td>
+ <td class="col-md-9"><code>./alert-dialog.component.scss</code></td>
+ </tr>
+
+
+
+ <tr>
+ <td class="col-md-3">templateUrl</td>
+ <td class="col-md-9"><code>./alert-dialog.component.html</code></td>
+ </tr>
+
+
+
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#message" >message</a>
+ </li>
+ <li>
+ <a href="#title" >title</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Methods</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#ngOnInit" >ngOnInit</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(data: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="11" class="link-to-prism">src/app/shared/dialog/alert-dialog/alert-dialog.component.ts:11</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>data</td>
+
+ <td>
+ <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+ <section>
+
+ <h3 id="methods">
+ Methods
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="ngOnInit"></a>
+ <span class="name">
+ <span ><b>ngOnInit</b></span>
+ <a href="#ngOnInit"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+<code>ngOnInit()</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="15"
+ class="link-to-prism">src/app/shared/dialog/alert-dialog/alert-dialog.component.ts:15</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="message"></a>
+ <span class="name">
+ <span ><b>message</b></span>
+ <a href="#message"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="11" class="link-to-prism">src/app/shared/dialog/alert-dialog/alert-dialog.component.ts:11</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="title"></a>
+ <span class="name">
+ <span ><b>title</b></span>
+ <a href="#title"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="10" class="link-to-prism">src/app/shared/dialog/alert-dialog/alert-dialog.component.ts:10</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+</div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Component, OnInit, Inject } from '@angular/core';
+import { MAT_DIALOG_DATA } from '@angular/material/dialog';
+
+@Component({
+ selector: 'hi-alert-dialog',
+ templateUrl: './alert-dialog.component.html',
+ styleUrls: ['./alert-dialog.component.scss'],
+})
+export class AlertDialogComponent implements OnInit {
+ title: string;
+ message: string;
+
+ constructor(@Inject(MAT_DIALOG_DATA) protected data: any) {}
+
+ ngOnInit() {
+ this.title = (this.data && this.data.title) || 'Alert';
+ this.message = (this.data && this.data.message) || 'Something happened.';
+ }
+}
+</code></pre>
+ </div>
+
+ <div class="tab-pane fade " id="c-templateData">
+ <pre class="line-numbers"><code class="language-html"><!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<h1 mat-dialog-title>{{ title }}</h1>
+<div mat-dialog-content>{{ message }}</div>
+</code></pre>
+ </div>
+
+ <div class="tab-pane fade " id="c-styleData">
+ <p class="comment">
+ <code>./alert-dialog.component.scss</code>
+ </p>
+ <pre class="line-numbers"><code class="language-scss"></code></pre>
+ </div>
+
+ <div class="tab-pane fade " id="c-tree">
+ <div id="tree-container"></div>
+ <div class="tree-legend">
+ <div class="title">
+ <b>Legend</b>
+ </div>
+ <div>
+ <div class="color htmlelement"></div><span>Html element</span>
+ </div>
+ <div>
+ <div class="color component"></div><span>Component</span>
+ </div>
+ <div>
+ <div class="color directive"></div><span>Html element with directive</span>
+ </div>
+ </div>
+ </div>
+
+
+</div>
+
+<script src="../js/libs/vis.min.js"></script>
+<script src="../js/libs/htmlparser.js"></script>
+<script src="../js/libs/deep-iterator.js"></script>
+<script>
+ var COMPONENT_TEMPLATE = '<div><!-- ~ Licensed to the Apache Software Foundation (ASF) under one ~ or more contributor license agreements. See the NOTICE file ~ distributed with this work for additional information ~ regarding copyright ownership. The ASF licenses this file ~ to you under the Apache License, Version 2.0 (the ~ "License"); you may not use this file except in compliance ~ with the License. You may obtain a copy of the License at ~ ~ http://www.apach [...]
+ var COMPONENTS = [{'name': 'AlertDialogComponent', 'selector': 'hi-alert-dialog'},{'name': 'AppComponent', 'selector': 'hi-root'},{'name': 'ClusterComponent', 'selector': 'hi-cluster'},{'name': 'ClusterDetailComponent', 'selector': 'hi-cluster-detail'},{'name': 'ClusterListComponent', 'selector': 'hi-cluster-list'},{'name': 'ConfigDetailComponent', 'selector': 'hi-config-detail'},{'name': 'ConfirmDialogComponent', 'selector': 'hi-confirm-dialog'},{'name': 'ControllerDetailComponent', [...]
+ var DIRECTIVES = [{'name': 'KeyValuePairDirective', 'selector': 'hi-key-value-pair'}];
+ var ACTUAL_COMPONENT = {'name': 'AlertDialogComponent'};
+</script>
+<script src="../js/tree.js"></script>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'component';
+ var COMPODOC_CURRENT_PAGE_URL = 'AlertDialogComponent.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/components/AppComponent.html b/helix-front/docs/components/AppComponent.html
new file mode 100644
index 000000000..6af014e2f
--- /dev/null
+++ b/helix-front/docs/components/AppComponent.html
@@ -0,0 +1,812 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content component">
+ <div class="content-data">
+
+
+
+
+<ol class="breadcrumb">
+ <li>Components</li>
+ <li
+ >
+ AppComponent</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+ <li >
+ <a href="#templateData" role="tab" id="templateData-tab" data-toggle="tab" data-link="template">Template</a>
+ </li>
+ <li >
+ <a href="#styleData" role="tab" id="styleData-tab" data-toggle="tab" data-link="style">Styles</a>
+ </li>
+ <li >
+ <a href="#tree" role="tab" id="tree-tab" data-toggle="tab" data-link="dom-tree">DOM Tree</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info"><p class="comment">
+ <h3>File</h3>
+</p>
+<p class="comment">
+ <code>src/app/app.component.ts</code>
+</p>
+
+
+
+
+ <p class="comment">
+ <h3>Implements</h3>
+ </p>
+ <p class="comment">
+ <code><a href="https://angular.io/api/core/OnInit" target="_blank" >OnInit</a></code>
+ </p>
+
+
+<section>
+ <h3>Metadata</h3>
+ <table class="table table-sm table-hover metadata">
+ <tbody>
+
+
+
+
+
+
+
+
+
+ <tr>
+ <td class="col-md-3">providers</td>
+ <td class="col-md-9">
+ <code><a href="../injectables/UserService.html" target="_self" >UserService</a></code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-3">selector</td>
+ <td class="col-md-9"><code>hi-root</code></td>
+ </tr>
+
+ <tr>
+ <td class="col-md-3">styleUrls</td>
+ <td class="col-md-9"><code>./app.component.scss</code></td>
+ </tr>
+
+
+
+ <tr>
+ <td class="col-md-3">templateUrl</td>
+ <td class="col-md-9"><code>./app.component.html</code></td>
+ </tr>
+
+
+
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#currentUser" >currentUser</a>
+ </li>
+ <li>
+ <a href="#footerEnabled" >footerEnabled</a>
+ </li>
+ <li>
+ <a href="#headerEnabled" >headerEnabled</a>
+ </li>
+ <li>
+ <a href="#isLoading" >isLoading</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Methods</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#login" >login</a>
+ </li>
+ <li>
+ <a href="#ngOnInit" >ngOnInit</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(route: <a href="https://angular.io/api/router/ActivatedRoute" target="_blank">ActivatedRoute</a>, router: <a href="https://angular.io/api/router/Router" target="_blank">Router</a>, dialog: MatDialog, service: <a href="../injectables/UserService.html" target="_self">UserService</a>, helper: <a href="../injectables/HelperService.html" target="_self">HelperService</a>)</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="28" class="link-to-prism">src/app/app.component.ts:28</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>route</td>
+
+ <td>
+ <code><a href="https://angular.io/api/router/ActivatedRoute" target="_blank" >ActivatedRoute</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>router</td>
+
+ <td>
+ <code><a href="https://angular.io/api/router/Router" target="_blank" >Router</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>dialog</td>
+
+ <td>
+ <code>MatDialog</code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>service</td>
+
+ <td>
+ <code><a href="../injectables/UserService.html" target="_self" >UserService</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>helper</td>
+
+ <td>
+ <code><a href="../injectables/HelperService.html" target="_self" >HelperService</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+ <section>
+
+ <h3 id="methods">
+ Methods
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="login"></a>
+ <span class="name">
+ <span ><b>login</b></span>
+ <a href="#login"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+<code>login()</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="65"
+ class="link-to-prism">src/app/app.component.ts:65</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="ngOnInit"></a>
+ <span class="name">
+ <span ><b>ngOnInit</b></span>
+ <a href="#ngOnInit"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+<code>ngOnInit()</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="55"
+ class="link-to-prism">src/app/app.component.ts:55</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="currentUser"></a>
+ <span class="name">
+ <span ><b>currentUser</b></span>
+ <a href="#currentUser"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="28" class="link-to-prism">src/app/app.component.ts:28</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="footerEnabled"></a>
+ <span class="name">
+ <span ><b>footerEnabled</b></span>
+ <a href="#footerEnabled"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Default value : </i><code>true</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="26" class="link-to-prism">src/app/app.component.ts:26</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="headerEnabled"></a>
+ <span class="name">
+ <span ><b>headerEnabled</b></span>
+ <a href="#headerEnabled"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Default value : </i><code>true</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="25" class="link-to-prism">src/app/app.component.ts:25</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="isLoading"></a>
+ <span class="name">
+ <span ><b>isLoading</b></span>
+ <a href="#isLoading"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Default value : </i><code>true</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="27" class="link-to-prism">src/app/app.component.ts:27</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+</div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Component, OnInit } from '@angular/core';
+import {
+ Router,
+ ActivatedRoute,
+ NavigationStart,
+ NavigationEnd,
+ NavigationCancel,
+ NavigationError,
+} from '@angular/router';
+import { MatDialog } from '@angular/material/dialog';
+
+// import { Angulartics2Piwik } from 'angulartics2/piwik';
+
+import { UserService } from './core/user.service';
+import { InputDialogComponent } from './shared/dialog/input-dialog/input-dialog.component';
+import { HelperService } from './shared/helper.service';
+
+@Component({
+ selector: 'hi-root',
+ templateUrl: './app.component.html',
+ styleUrls: ['./app.component.scss'],
+ providers: [UserService /*, Angulartics2Piwik */],
+})
+export class AppComponent implements OnInit {
+ headerEnabled = true;
+ footerEnabled = true;
+ isLoading = true;
+ currentUser: any;
+
+ constructor(
+ // protected angulartics2Piwik: Angulartics2Piwik,
+ protected route: ActivatedRoute,
+ protected router: Router,
+ protected dialog: MatDialog,
+ protected service: UserService,
+ protected helper: HelperService
+ ) {
+ router.events.subscribe((event) => {
+ if (event instanceof NavigationStart) {
+ this.isLoading = true;
+ }
+ if (event instanceof NavigationEnd) {
+ this.isLoading = false;
+ }
+ if (event instanceof NavigationError) {
+ this.isLoading = false;
+ }
+ if (event instanceof NavigationCancel) {
+ this.isLoading = false;
+ }
+ });
+ // angulartics2Piwik.startTracking();
+ }
+
+ ngOnInit() {
+ this.currentUser = this.service.getCurrentUser();
+
+ this.route.queryParams.subscribe((params) => {
+ if (params['embed'] == 'true') {
+ this.headerEnabled = this.footerEnabled = false;
+ }
+ });
+ }
+
+ login() {
+ this.dialog
+ .open(InputDialogComponent, {
+ data: {
+ title: 'Sign In',
+ message: 'Please enter your LDAP username and password to continue:',
+ values: {
+ username: {
+ label: 'Username',
+ },
+ password: {
+ label: 'Password',
+ type: 'password',
+ },
+ },
+ },
+ })
+ .afterClosed()
+ .subscribe(
+ (result) => {
+ if (result && result.username.value && result.password.value) {
+ this.service
+ .login(result.username.value, result.password.value)
+ .subscribe(
+ (isAuthorized) => {
+ if (!isAuthorized) {
+ this.helper.showError(
+ "You're not part of helix-admin group or password incorrect"
+ );
+ }
+ this.currentUser = this.service.getCurrentUser();
+ },
+ (error) => {
+ // since rest API simply throws 404 instead of empty config when config is not initialized yet
+ // frontend has to treat 404 as normal result
+ if (error != 'Not Found') {
+ this.helper.showError(error);
+ }
+ this.isLoading = false;
+ }
+ );
+ }
+ },
+ (error) => {
+ // since rest API simply throws 404 instead of empty config when config is not initialized yet
+ // frontend has to treat 404 as normal result
+ if (error != 'Not Found') {
+ this.helper.showError(error);
+ }
+ this.isLoading = false;
+ }
+ );
+ }
+}
+</code></pre>
+ </div>
+
+ <div class="tab-pane fade " id="c-templateData">
+ <pre class="line-numbers"><code class="language-html"><!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<section class="app" fxLayout="column" fxFill>
+ <mat-toolbar
+ *ngIf="headerEnabled"
+ class="header mat-elevation-z7"
+ color="primary"
+ >
+ <a mat-button routerLink="/">
+ <img class="helix-logo" src="assets/logo.png" />
+ <span class="helix-title">Helix</span>
+ </a>
+ <span fxFlex="1 1 auto"></span>
+ <a mat-button (click)="login()">
+ <mat-icon>person</mat-icon>
+ {{ currentUser | async }}
+ </a>
+ </mat-toolbar>
+ <mat-progress-bar
+ *ngIf="isLoading"
+ mode="indeterminate"
+ [ngClass]="{ 'no-header': !headerEnabled }"
+ ></mat-progress-bar>
+ <section class="main-container" [ngClass]="{ 'no-header': !headerEnabled }">
+ <router-outlet></router-outlet>
+ </section>
+ <section
+ *ngIf="footerEnabled"
+ class="footer mat-elevation-z7"
+ fxLayout="row"
+ fxLayoutAlign="center center"
+ >
+ <span>&copy; 2022 Helix. All rights reserved.</span>
+ </section>
+</section>
+</code></pre>
+ </div>
+
+ <div class="tab-pane fade " id="c-styleData">
+ <p class="comment">
+ <code>./app.component.scss</code>
+ </p>
+ <pre class="line-numbers"><code class="language-scss">.header,
+.footer {
+ z-index: 7;
+}
+
+.helix-logo {
+ width: 30px;
+ height: 30px;
+ padding-right: 10px;
+}
+
+.helix-title {
+ font-size: 30px;
+ text-transform: uppercase;
+}
+
+.mat-progress-bar {
+ position: fixed;
+ top: 64px;
+ z-index: 5;
+
+ &.no-header {
+ top: 0;
+ }
+}
+
+.footer {
+ background-color: #f5f5f5;
+ height: 50px;
+
+ span {
+ font-weight: normal;
+ font-size: 14px;
+ color: #666;
+ }
+}
+
+.main-container {
+ height: calc(100vh - 64px - 50px);
+ overflow-y: scroll;
+
+ &.no-header {
+ height: 100vh;
+ }
+}
+</code></pre>
+ </div>
+
+ <div class="tab-pane fade " id="c-tree">
+ <div id="tree-container"></div>
+ <div class="tree-legend">
+ <div class="title">
+ <b>Legend</b>
+ </div>
+ <div>
+ <div class="color htmlelement"></div><span>Html element</span>
+ </div>
+ <div>
+ <div class="color component"></div><span>Component</span>
+ </div>
+ <div>
+ <div class="color directive"></div><span>Html element with directive</span>
+ </div>
+ </div>
+ </div>
+
+
+</div>
+
+<script src="../js/libs/vis.min.js"></script>
+<script src="../js/libs/htmlparser.js"></script>
+<script src="../js/libs/deep-iterator.js"></script>
+<script>
+ var COMPONENT_TEMPLATE = '<div><!-- ~ Licensed to the Apache Software Foundation (ASF) under one ~ or more contributor license agreements. See the NOTICE file ~ distributed with this work for additional information ~ regarding copyright ownership. The ASF licenses this file ~ to you under the Apache License, Version 2.0 (the ~ "License"); you may not use this file except in compliance ~ with the License. You may obtain a copy of the License at ~ ~ http://www.apach [...]
+ var COMPONENTS = [{'name': 'AlertDialogComponent', 'selector': 'hi-alert-dialog'},{'name': 'AppComponent', 'selector': 'hi-root'},{'name': 'ClusterComponent', 'selector': 'hi-cluster'},{'name': 'ClusterDetailComponent', 'selector': 'hi-cluster-detail'},{'name': 'ClusterListComponent', 'selector': 'hi-cluster-list'},{'name': 'ConfigDetailComponent', 'selector': 'hi-config-detail'},{'name': 'ConfirmDialogComponent', 'selector': 'hi-confirm-dialog'},{'name': 'ControllerDetailComponent', [...]
+ var DIRECTIVES = [{'name': 'KeyValuePairDirective', 'selector': 'hi-key-value-pair'}];
+ var ACTUAL_COMPONENT = {'name': 'AppComponent'};
+</script>
+<script src="../js/tree.js"></script>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'component';
+ var COMPODOC_CURRENT_PAGE_URL = 'AppComponent.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/components/ClusterComponent.html b/helix-front/docs/components/ClusterComponent.html
new file mode 100644
index 000000000..6c1fc1758
--- /dev/null
+++ b/helix-front/docs/components/ClusterComponent.html
@@ -0,0 +1,582 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content component">
+ <div class="content-data">
+
+
+
+
+<ol class="breadcrumb">
+ <li>Components</li>
+ <li
+ >
+ ClusterComponent</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+ <li >
+ <a href="#templateData" role="tab" id="templateData-tab" data-toggle="tab" data-link="template">Template</a>
+ </li>
+ <li >
+ <a href="#styleData" role="tab" id="styleData-tab" data-toggle="tab" data-link="style">Styles</a>
+ </li>
+ <li >
+ <a href="#tree" role="tab" id="tree-tab" data-toggle="tab" data-link="dom-tree">DOM Tree</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info"><p class="comment">
+ <h3>File</h3>
+</p>
+<p class="comment">
+ <code>src/app/cluster/cluster.component.ts</code>
+</p>
+
+
+
+
+ <p class="comment">
+ <h3>Implements</h3>
+ </p>
+ <p class="comment">
+ <code><a href="https://angular.io/api/core/OnInit" target="_blank" >OnInit</a></code>
+ </p>
+
+
+<section>
+ <h3>Metadata</h3>
+ <table class="table table-sm table-hover metadata">
+ <tbody>
+
+
+
+
+
+
+
+
+
+
+
+ <tr>
+ <td class="col-md-3">selector</td>
+ <td class="col-md-9"><code>hi-cluster</code></td>
+ </tr>
+
+ <tr>
+ <td class="col-md-3">styleUrls</td>
+ <td class="col-md-9"><code>./cluster.component.scss</code></td>
+ </tr>
+
+
+
+ <tr>
+ <td class="col-md-3">templateUrl</td>
+ <td class="col-md-9"><code>./cluster.component.html</code></td>
+ </tr>
+
+
+
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#isNarrowView" >isNarrowView</a>
+ </li>
+ <li>
+ <a href="#sidenav" >sidenav</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Methods</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#ngOnInit" >ngOnInit</a>
+ </li>
+ <li>
+ <a href="#toggleSidenav" >toggleSidenav</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(media: <a href="../s/server.html" target="_self">MediaObserver</a>)</code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="12" class="link-to-prism">src/app/cluster/cluster.component.ts:12</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>media</td>
+
+ <td>
+ <code><a href="../miscellaneous/variables.html#server" target="_self" >MediaObserver</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+ <section>
+
+ <h3 id="methods">
+ Methods
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="ngOnInit"></a>
+ <span class="name">
+ <span ><b>ngOnInit</b></span>
+ <a href="#ngOnInit"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+<code>ngOnInit()</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="16"
+ class="link-to-prism">src/app/cluster/cluster.component.ts:16</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="toggleSidenav"></a>
+ <span class="name">
+ <span ><b>toggleSidenav</b></span>
+ <a href="#toggleSidenav"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+<code>toggleSidenav()</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="27"
+ class="link-to-prism">src/app/cluster/cluster.component.ts:27</a></div>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+
+ <div class="io-description">
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+ <section>
+
+ <h3 id="inputs">
+ Properties
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="isNarrowView"></a>
+ <span class="name">
+ <span ><b>isNarrowView</b></span>
+ <a href="#isNarrowView"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
+
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="12" class="link-to-prism">src/app/cluster/cluster.component.ts:12</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="sidenav"></a>
+ <span class="name">
+ <span ><b>sidenav</b></span>
+ <a href="#sidenav"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <b>Decorators : </b>
+ <br />
+ <code>
+ @ViewChild('sidenav', {static: true})<br />
+ </code>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="10" class="link-to-prism">src/app/cluster/cluster.component.ts:10</a></div>
+ </td>
+ </tr>
+
+
+ </tbody>
+ </table>
+</section>
+
+</div>
+
+
+ <div class="tab-pane fade tab-source-code" id="c-source">
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Component, OnInit, ViewChild } from '@angular/core';
+import { MediaChange, MediaObserver } from '@angular/flex-layout';
+
+@Component({
+ selector: 'hi-cluster',
+ templateUrl: './cluster.component.html',
+ styleUrls: ['./cluster.component.scss'],
+})
+export class ClusterComponent implements OnInit {
+ @ViewChild('sidenav', { static: true }) sidenav;
+
+ isNarrowView: boolean;
+
+ constructor(protected media: MediaObserver) {}
+
+ ngOnInit() {
+ // auto adjust side nav only if not embed
+ this.isNarrowView = this.media.isActive('xs') || this.media.isActive('sm');
+
+ this.media.asObservable().subscribe((change: MediaChange[]) => {
+ change.forEach((item) => {
+ this.isNarrowView = item.mqAlias === 'xs' || item.mqAlias === 'sm';
+ });
+ });
+ }
+
+ toggleSidenav() {
+ this.sidenav.opened ? this.sidenav.close() : this.sidenav.open();
+ }
+}
+</code></pre>
+ </div>
+
+ <div class="tab-pane fade " id="c-templateData">
+ <pre class="line-numbers"><code class="language-html"><!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<mat-sidenav-container fxFill>
+ <mat-sidenav
+ #sidenav
+ [mode]="isNarrowView ? 'over' : 'side'"
+ [opened]="!isNarrowView"
+ [disableClose]="!isNarrowView"
+ class="mat-elevation-z4"
+ >
+ <hi-cluster-list></hi-cluster-list>
+ </mat-sidenav>
+ <section fxFill>
+ <router-outlet></router-outlet>
+ </section>
+</mat-sidenav-container>
+<button
+ mat-mini-fab
+ [ngClass]="['toggle-button', sidenav.opened ? 'open' : 'close']"
+ color=""
+ (click)="toggleSidenav()"
+>
+ <mat-icon>chevron_{{ sidenav.opened ? 'left' : 'right' }}</mat-icon>
+</button>
+</code></pre>
+ </div>
+
+ <div class="tab-pane fade " id="c-styleData">
+ <p class="comment">
+ <code>./cluster.component.scss</code>
+ </p>
+ <pre class="line-numbers"><code class="language-scss">.mat-sidenav {
+ width: 25vw;
+ min-width: 200px;
+}
+
+.toggle-button {
+ position: fixed;
+ top: 50%;
+ z-index: 3;
+ transition: all 400ms cubic-bezier(0.25, 0.8, 0.25, 1);
+ cursor: pointer;
+
+ &.open {
+ left: calc(25vw - 20px);
+ }
+
+ &.close {
+ left: -15px;
+ }
+}
+</code></pre>
+ </div>
+
+ <div class="tab-pane fade " id="c-tree">
+ <div id="tree-container"></div>
+ <div class="tree-legend">
+ <div class="title">
+ <b>Legend</b>
+ </div>
+ <div>
+ <div class="color htmlelement"></div><span>Html element</span>
+ </div>
+ <div>
+ <div class="color component"></div><span>Component</span>
+ </div>
+ <div>
+ <div class="color directive"></div><span>Html element with directive</span>
+ </div>
+ </div>
+ </div>
+
+
+</div>
+
+<script src="../js/libs/vis.min.js"></script>
+<script src="../js/libs/htmlparser.js"></script>
+<script src="../js/libs/deep-iterator.js"></script>
+<script>
+ var COMPONENT_TEMPLATE = '<div><!-- ~ Licensed to the Apache Software Foundation (ASF) under one ~ or more contributor license agreements. See the NOTICE file ~ distributed with this work for additional information ~ regarding copyright ownership. The ASF licenses this file ~ to you under the Apache License, Version 2.0 (the ~ "License"); you may not use this file except in compliance ~ with the License. You may obtain a copy of the License at ~ ~ http://www.apach [...]
+ var COMPONENTS = [{'name': 'AlertDialogComponent', 'selector': 'hi-alert-dialog'},{'name': 'AppComponent', 'selector': 'hi-root'},{'name': 'ClusterComponent', 'selector': 'hi-cluster'},{'name': 'ClusterDetailComponent', 'selector': 'hi-cluster-detail'},{'name': 'ClusterListComponent', 'selector': 'hi-cluster-list'},{'name': 'ConfigDetailComponent', 'selector': 'hi-config-detail'},{'name': 'ConfirmDialogComponent', 'selector': 'hi-confirm-dialog'},{'name': 'ControllerDetailComponent', [...]
+ var DIRECTIVES = [{'name': 'KeyValuePairDirective', 'selector': 'hi-key-value-pair'}];
+ var ACTUAL_COMPONENT = {'name': 'ClusterComponent'};
+</script>
+<script src="../js/tree.js"></script>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div><div class="search-results">
+ <div class="has-results">
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
+ <ul class="search-results-list"></ul>
+ </div>
+ <div class="no-results">
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
+ </div>
+</div>
+</div>
+ <!-- END CONTENT -->
+ </div>
+ </div>
+
+ <label class="dark-mode-switch">
+ <input type="checkbox">
+ <span class="slider">
+ <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
+ </svg>
+ </span>
+ </label>
+
+ <script>
+ var COMPODOC_CURRENT_PAGE_DEPTH = 1;
+ var COMPODOC_CURRENT_PAGE_CONTEXT = 'component';
+ var COMPODOC_CURRENT_PAGE_URL = 'ClusterComponent.html';
+ var MAX_SEARCH_RESULTS = 15;
+ </script>
+
+ <script src="../js/libs/custom-elements.min.js"></script>
+ <script src="../js/libs/lit-html.js"></script>
+
+ <script src="../js/menu-wc.js" defer></script>
+ <script nomodule src="../js/menu-wc_es5.js" defer></script>
+
+ <script src="../js/libs/bootstrap-native.js"></script>
+
+ <script src="../js/libs/es6-shim.min.js"></script>
+ <script src="../js/libs/EventDispatcher.js"></script>
+ <script src="../js/libs/promise.min.js"></script>
+ <script src="../js/libs/zepto.min.js"></script>
+
+ <script src="../js/compodoc.js"></script>
+
+ <script src="../js/tabs.js"></script>
+ <script src="../js/menu.js"></script>
+ <script src="../js/libs/clipboard.min.js"></script>
+ <script src="../js/libs/prism.js"></script>
+ <script src="../js/sourceCode.js"></script>
+ <script src="../js/search/search.js"></script>
+ <script src="../js/search/lunr.min.js"></script>
+ <script src="../js/search/search-lunr.js"></script>
+ <script src="../js/search/search_index.js"></script>
+ <script src="../js/lazy-load-graphs.js"></script>
+
+
+ </body>
+</html>
diff --git a/helix-front/docs/components/ClusterDetailComponent.html b/helix-front/docs/components/ClusterDetailComponent.html
new file mode 100644
index 000000000..f1866c077
--- /dev/null
+++ b/helix-front/docs/components/ClusterDetailComponent.html
@@ -0,0 +1,1268 @@
+<!doctype html>
+<html class="no-js" lang="">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <title>helix-front documentation</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
+ <link rel="stylesheet" href="../styles/style.css">
+ <link rel="stylesheet" href="../styles/dark.css">
+ </head>
+ <body>
+
+ <div class="navbar navbar-default navbar-fixed-top visible-xs">
+ <a href="../" class="navbar-brand">helix-front documentation</a>
+ <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
+ </div>
+
+ <div class="xs-menu menu" id="mobile-menu">
+ <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu>
+ </div>
+
+ <div class="container-fluid main">
+ <div class="row main">
+ <div class="hidden-xs menu">
+ <compodoc-menu mode="normal"></compodoc-menu>
+ </div>
+ <!-- START CONTENT -->
+ <div class="content component">
+ <div class="content-data">
+
+
+
+
+<ol class="breadcrumb">
+ <li>Components</li>
+ <li
+ >
+ ClusterDetailComponent</li>
+</ol>
+
+<ul class="nav nav-tabs" role="tablist">
+ <li class="active">
+ <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
+ </li>
+ <li >
+ <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
+ </li>
+ <li >
+ <a href="#templateData" role="tab" id="templateData-tab" data-toggle="tab" data-link="template">Template</a>
+ </li>
+ <li >
+ <a href="#styleData" role="tab" id="styleData-tab" data-toggle="tab" data-link="style">Styles</a>
+ </li>
+ <li >
+ <a href="#tree" role="tab" id="tree-tab" data-toggle="tab" data-link="dom-tree">DOM Tree</a>
+ </li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane fade active in" id="c-info"><p class="comment">
+ <h3>File</h3>
+</p>
+<p class="comment">
+ <code>src/app/cluster/cluster-detail/cluster-detail.component.ts</code>
+</p>
+
+
+
+
+ <p class="comment">
+ <h3>Implements</h3>
+ </p>
+ <p class="comment">
+ <code><a href="https://angular.io/api/core/OnInit" target="_blank" >OnInit</a></code>
+ </p>
+
+
+<section>
+ <h3>Metadata</h3>
+ <table class="table table-sm table-hover metadata">
+ <tbody>
+
+
+
+
+
+
+
+
+
+ <tr>
+ <td class="col-md-3">providers</td>
+ <td class="col-md-9">
+ <code><a href="../injectables/InstanceService.html" target="_self" >InstanceService</a></code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-3">selector</td>
+ <td class="col-md-9"><code>hi-cluster-detail</code></td>
+ </tr>
+
+ <tr>
+ <td class="col-md-3">styleUrls</td>
+ <td class="col-md-9"><code>./cluster-detail.component.scss</code></td>
+ </tr>
+
+
+
+ <tr>
+ <td class="col-md-3">templateUrl</td>
+ <td class="col-md-9"><code>./cluster-detail.component.html</code></td>
+ </tr>
+
+
+
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="index">Index</h3>
+ <table class="table table-sm table-bordered index-table">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Properties</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#can" >can</a>
+ </li>
+ <li>
+ <a href="#cluster" >cluster</a>
+ </li>
+ <li>
+ <a href="#clusterName" >clusterName</a>
+ </li>
+ <li>
+ <a href="#isLoading" >isLoading</a>
+ </li>
+ <li>
+ <span class="modifier">Readonly</span>
+ <a href="#tabLinks" >tabLinks</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <h6><b>Methods</b></h6>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <ul class="index-list">
+ <li>
+ <a href="#activateCluster" >activateCluster</a>
+ </li>
+ <li>
+ <a href="#addInstance" >addInstance</a>
+ </li>
+ <li>
+ <a href="#deleteCluster" >deleteCluster</a>
+ </li>
+ <li>
+ <a href="#disableCluster" >disableCluster</a>
+ </li>
+ <li>
+ <a href="#disableMaintenanceMode" >disableMaintenanceMode</a>
+ </li>
+ <li>
+ <a href="#enableCluster" >enableCluster</a>
+ </li>
+ <li>
+ <a href="#enableMaintenanceMode" >enableMaintenanceMode</a>
+ </li>
+ <li>
+ <span class="modifier">Protected</span>
+ <a href="#loadCluster" >loadCluster</a>
+ </li>
+ <li>
+ <a href="#ngOnInit" >ngOnInit</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+
+
+
+
+ </tbody>
+ </table>
+</section>
+
+ <section>
+ <h3 id="constructor">Constructor</h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+<code>constructor(route: <a href="https://angular.io/api/router/ActivatedRoute" target="_blank">ActivatedRoute</a>, router: <a href="https://angular.io/api/router/Router" target="_blank">Router</a>, dialog: MatDialog, helperService: <a href="../injectables/HelperService.html" target="_self">HelperService</a>, clusterService: <a href="../injectables/ClusterService.html" target="_self">ClusterService</a>, instanceService: <a href="../injectables/InstanceService.html" target="_self">Instanc [...]
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="31" class="link-to-prism">src/app/cluster/cluster-detail/cluster-detail.component.ts:31</a></div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="col-md-4">
+ <div>
+ <b>Parameters :</b>
+ <table class="params">
+ <thead>
+ <tr>
+ <td>Name</td>
+ <td>Type</td>
+ <td>Optional</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>route</td>
+
+ <td>
+ <code><a href="https://angular.io/api/router/ActivatedRoute" target="_blank" >ActivatedRoute</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>router</td>
+
+ <td>
+ <code><a href="https://angular.io/api/router/Router" target="_blank" >Router</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>dialog</td>
+
+ <td>
+ <code>MatDialog</code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>helperService</td>
+
+ <td>
+ <code><a href="../injectables/HelperService.html" target="_self" >HelperService</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>clusterService</td>
+
+ <td>
+ <code><a href="../injectables/ClusterService.html" target="_self" >ClusterService</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ <tr>
+ <td>instanceService</td>
+
+ <td>
+ <code><a href="../injectables/InstanceService.html" target="_self" >InstanceService</a></code>
+ </td>
+
+ <td>
+ No
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+
+
+
+
+ <section>
+
+ <h3 id="methods">
+ Methods
+ </h3>
+ <table class="table table-sm table-bordered">
+ <tbody>
+ <tr>
+ <td class="col-md-4">
+ <a name="activateCluster"></a>
+ <span class="name">
+ <span ><b>activateCluster</b></span>
+ <a href="#activateCluster"><span class="icon ion-ios-link"></span></a>
+ </span>
+ </td>
+ </tr>
+ <tr>
+ <td class="col-md-4">
+<code>activateCluster()</code>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="col-md-4">
+ <div class="io-line">Defined in <a href="" data-line="122"
+ class="link-to-prism">src/app/cluster/cluster-detail/cluster-detail.component.ts:122</a></div>
+ </td>
+ </tr>
... 89506 lines suppressed ...