diff options
Diffstat (limited to 'app/assets/javascripts/pipelines/pipeline_details_bundle.js')
-rw-r--r-- | app/assets/javascripts/pipelines/pipeline_details_bundle.js | 58 |
1 files changed, 43 insertions, 15 deletions
diff --git a/app/assets/javascripts/pipelines/pipeline_details_bundle.js b/app/assets/javascripts/pipelines/pipeline_details_bundle.js index 67aec12655a..29dec2309a7 100644 --- a/app/assets/javascripts/pipelines/pipeline_details_bundle.js +++ b/app/assets/javascripts/pipelines/pipeline_details_bundle.js @@ -6,12 +6,10 @@ import { setUrlFragment, redirectTo } from '~/lib/utils/url_utility'; import pipelineGraph from './components/graph/graph_component.vue'; import createDagApp from './pipeline_details_dag'; import GraphBundleMixin from './mixins/graph_pipeline_bundle_mixin'; -import PipelinesMediator from './pipeline_details_mediator'; import legacyPipelineHeader from './components/legacy_header_component.vue'; import eventHub from './event_hub'; import TestReports from './components/test_reports/test_reports.vue'; import createTestReportsStore from './stores/test_reports'; -import { createPipelineHeaderApp } from './pipeline_details_header'; Vue.use(Translate); @@ -22,7 +20,7 @@ const SELECTORS = { PIPELINE_TESTS: '#js-pipeline-tests-detail', }; -const createPipelinesDetailApp = mediator => { +const createLegacyPipelinesDetailApp = mediator => { if (!document.querySelector(SELECTORS.PIPELINE_GRAPH)) { return; } @@ -47,10 +45,10 @@ const createPipelinesDetailApp = mediator => { }, on: { refreshPipelineGraph: this.requestRefreshPipelineGraph, - onResetTriggered: (parentPipeline, pipeline) => - this.resetTriggeredPipelines(parentPipeline, pipeline), - onClickTriggeredBy: pipeline => this.clickTriggeredByPipeline(pipeline), - onClickTriggered: pipeline => this.clickTriggeredPipeline(pipeline), + onResetDownstream: (parentPipeline, pipeline) => + this.resetDownstreamPipelines(parentPipeline, pipeline), + onClickUpstreamPipeline: pipeline => this.clickUpstreamPipeline(pipeline), + onClickDownstreamPipeline: pipeline => this.clickDownstreamPipeline(pipeline), }, }); }, @@ -127,18 +125,48 @@ const createTestDetails = () => { }); }; -export default () => { +export default async function() { + createTestDetails(); + createDagApp(); + const { dataset } = document.querySelector(SELECTORS.PIPELINE_DETAILS); - const mediator = new PipelinesMediator({ endpoint: dataset.endpoint }); - mediator.fetchPipeline(); + let mediator; + + if (!gon.features.graphqlPipelineHeader || !gon.features.graphqlPipelineDetails) { + try { + const { default: PipelinesMediator } = await import( + /* webpackChunkName: 'PipelinesMediator' */ './pipeline_details_mediator' + ); + mediator = new PipelinesMediator({ endpoint: dataset.endpoint }); + mediator.fetchPipeline(); + } catch { + Flash(__('An error occurred while loading the pipeline.')); + } + } - createPipelinesDetailApp(mediator); + if (gon.features.graphqlPipelineDetails) { + try { + const { createPipelinesDetailApp } = await import( + /* webpackChunkName: 'createPipelinesDetailApp' */ './pipeline_details_graph' + ); + createPipelinesDetailApp(); + } catch { + Flash(__('An error occurred while loading the pipeline.')); + } + } else { + createLegacyPipelinesDetailApp(mediator); + } if (gon.features.graphqlPipelineHeader) { - createPipelineHeaderApp(SELECTORS.PIPELINE_HEADER); + try { + const { createPipelineHeaderApp } = await import( + /* webpackChunkName: 'createPipelineHeaderApp' */ './pipeline_details_header' + ); + createPipelineHeaderApp(SELECTORS.PIPELINE_HEADER); + } catch { + Flash(__('An error occurred while loading a section of this page.')); + } } else { createLegacyPipelineHeaderApp(mediator); } - createTestDetails(); - createDagApp(); -}; +} |