summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/pipelines/stores/pipeline_store.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/pipelines/stores/pipeline_store.js')
-rw-r--r--app/assets/javascripts/pipelines/stores/pipeline_store.js206
1 files changed, 0 insertions, 206 deletions
diff --git a/app/assets/javascripts/pipelines/stores/pipeline_store.js b/app/assets/javascripts/pipelines/stores/pipeline_store.js
deleted file mode 100644
index 1f804a107a8..00000000000
--- a/app/assets/javascripts/pipelines/stores/pipeline_store.js
+++ /dev/null
@@ -1,206 +0,0 @@
-import Vue from 'vue';
-
-export default class PipelineStore {
- constructor() {
- this.state = {};
- this.state.pipeline = {};
- this.state.expandedPipelines = [];
- }
- /**
- * For the triggered pipelines adds the `isExpanded` key
- *
- * For the triggered_by pipeline adds the `isExpanded` key
- * and saves it as an array
- *
- * @param {Object} pipeline
- */
- storePipeline(pipeline = {}) {
- const pipelineCopy = { ...pipeline };
-
- if (pipelineCopy.triggered_by) {
- pipelineCopy.triggered_by = [pipelineCopy.triggered_by];
-
- const oldTriggeredBy =
- this.state.pipeline &&
- this.state.pipeline.triggered_by &&
- this.state.pipeline.triggered_by[0];
-
- this.parseTriggeredByPipelines(oldTriggeredBy, pipelineCopy.triggered_by[0]);
- }
-
- if (pipelineCopy.triggered && pipelineCopy.triggered.length) {
- pipelineCopy.triggered.forEach((el) => {
- const oldPipeline =
- this.state.pipeline &&
- this.state.pipeline.triggered &&
- this.state.pipeline.triggered.find((element) => element.id === el.id);
-
- this.parseTriggeredPipelines(oldPipeline, el);
- });
- }
-
- this.state.pipeline = pipelineCopy;
- }
-
- /**
- * Recursiverly parses the triggered by pipelines.
- *
- * Sets triggered_by as an array, there is always only 1 triggered_by pipeline.
- * Adds key `isExpanding`
- * Keeps old isExpading value due to polling
- *
- * @param {Array} parentPipeline
- * @param {Object} pipeline
- */
- parseTriggeredByPipelines(oldPipeline = {}, newPipeline) {
- // keep old value in case it's opened because we're polling
- Vue.set(newPipeline, 'isExpanded', oldPipeline.isExpanded || false);
- // add isLoading property
- Vue.set(newPipeline, 'isLoading', false);
-
- // Because there can only ever be one `triggered_by` for any given pipeline,
- // the API returns an object for the value instead of an Array. However,
- // it's easier to deal with an array in the FE so we convert it.
- if (newPipeline.triggered_by) {
- if (!Array.isArray(newPipeline.triggered_by)) {
- Object.assign(newPipeline, { triggered_by: [newPipeline.triggered_by] });
- }
-
- if (newPipeline.triggered_by?.length > 0) {
- newPipeline.triggered_by.forEach((el) => {
- const oldTriggeredBy = oldPipeline.triggered_by?.find((element) => element.id === el.id);
- this.parseTriggeredPipelines(oldTriggeredBy, el);
- });
- }
- }
- }
-
- /**
- * Recursively parses the triggered pipelines
- * @param {Array} parentPipeline
- * @param {Object} pipeline
- */
- parseTriggeredPipelines(oldPipeline = {}, newPipeline) {
- // keep old value in case it's opened because we're polling
- Vue.set(newPipeline, 'isExpanded', oldPipeline.isExpanded || false);
-
- // add isLoading property
- Vue.set(newPipeline, 'isLoading', false);
-
- if (newPipeline.triggered && newPipeline.triggered.length > 0) {
- newPipeline.triggered.forEach((el) => {
- const oldTriggered =
- oldPipeline.triggered && oldPipeline.triggered.find((element) => element.id === el.id);
- this.parseTriggeredPipelines(oldTriggered, el);
- });
- }
- }
-
- /**
- * Recursively resets all triggered by pipelines
- *
- * @param {Object} pipeline
- */
- resetTriggeredByPipeline(parentPipeline, pipeline) {
- parentPipeline.triggered_by.forEach((el) => this.closePipeline(el));
-
- if (pipeline.triggered_by && pipeline.triggered_by) {
- this.resetTriggeredByPipeline(pipeline, pipeline.triggered_by);
- }
- }
-
- /**
- * Opens the clicked pipeline and closes all other ones.
- * @param {Object} pipeline
- */
- openTriggeredByPipeline(parentPipeline, pipeline) {
- // first we need to reset all triggeredBy pipelines
- this.resetTriggeredByPipeline(parentPipeline, pipeline);
-
- this.openPipeline(pipeline);
- }
-
- /**
- * On click, will close the given pipeline and all nested triggered by pipelines
- *
- * @param {Object} pipeline
- */
- closeTriggeredByPipeline(pipeline) {
- this.closePipeline(pipeline);
-
- if (pipeline.triggered_by && pipeline.triggered_by.length) {
- pipeline.triggered_by.forEach((triggeredBy) => this.closeTriggeredByPipeline(triggeredBy));
- }
- }
-
- /**
- * Recursively closes all triggered pipelines for the given one.
- *
- * @param {Object} pipeline
- */
- resetTriggeredPipelines(parentPipeline, pipeline) {
- parentPipeline.triggered.forEach((el) => this.closePipeline(el));
-
- if (pipeline.triggered && pipeline.triggered.length) {
- pipeline.triggered.forEach((el) => this.resetTriggeredPipelines(pipeline, el));
- }
- }
-
- /**
- * Opens the clicked triggered pipeline and closes all other ones.
- *
- * @param {Object} pipeline
- */
- openTriggeredPipeline(parentPipeline, pipeline) {
- this.resetTriggeredPipelines(parentPipeline, pipeline);
-
- this.openPipeline(pipeline);
- }
-
- /**
- * On click, will close the given pipeline and all the nested triggered ones
- * @param {Object} pipeline
- */
- closeTriggeredPipeline(pipeline) {
- this.closePipeline(pipeline);
-
- if (pipeline.triggered && pipeline.triggered.length) {
- pipeline.triggered.forEach((triggered) => this.closeTriggeredPipeline(triggered));
- }
- }
-
- /**
- * Utility function, Closes the given pipeline
- * @param {Object} pipeline
- */
- closePipeline(pipeline) {
- Vue.set(pipeline, 'isExpanded', false);
- // remove the pipeline from the parameters
- this.removeExpandedPipelineToRequestData(pipeline.id);
- }
-
- /**
- * Utility function, Opens the given pipeline
- * @param {Object} pipeline
- */
- openPipeline(pipeline) {
- Vue.set(pipeline, 'isExpanded', true);
- // add the pipeline to the parameters
- this.addExpandedPipelineToRequestData(pipeline.id);
- }
- // eslint-disable-next-line class-methods-use-this
- toggleLoading(pipeline) {
- Vue.set(pipeline, 'isLoading', !pipeline.isLoading);
- }
-
- addExpandedPipelineToRequestData(id) {
- this.state.expandedPipelines.push(id);
- }
-
- removeExpandedPipelineToRequestData(id) {
- this.state.expandedPipelines.splice(
- this.state.expandedPipelines.findIndex((el) => el === id),
- 1,
- );
- }
-}