Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/ci/pipeline_details/pipeline_tabs.js')
-rw-r--r--app/assets/javascripts/ci/pipeline_details/pipeline_tabs.js116
1 files changed, 116 insertions, 0 deletions
diff --git a/app/assets/javascripts/ci/pipeline_details/pipeline_tabs.js b/app/assets/javascripts/ci/pipeline_details/pipeline_tabs.js
new file mode 100644
index 00000000000..0ca9a68e70d
--- /dev/null
+++ b/app/assets/javascripts/ci/pipeline_details/pipeline_tabs.js
@@ -0,0 +1,116 @@
+import Vue from 'vue';
+import VueRouter from 'vue-router';
+// eslint-disable-next-line no-restricted-imports
+import Vuex from 'vuex';
+import VueApollo from 'vue-apollo';
+import { GlToast } from '@gitlab/ui';
+import PipelineTabs from 'ee_else_ce/ci/pipeline_details/tabs/pipeline_tabs.vue';
+import { reportToSentry } from '~/ci/utils';
+import { parseBoolean } from '~/lib/utils/common_utils';
+import createTestReportsStore from './stores/test_reports';
+import { getPipelineDefaultTab } from './utils';
+
+Vue.use(GlToast);
+Vue.use(VueApollo);
+Vue.use(VueRouter);
+Vue.use(Vuex);
+
+export const createAppOptions = (selector, apolloProvider, router) => {
+ const el = document.querySelector(selector);
+
+ if (!el) return null;
+
+ const { dataset } = el;
+ const {
+ canGenerateCodequalityReports,
+ codequalityReportDownloadPath,
+ codequalityBlobPath,
+ codequalityProjectPath,
+ downloadablePathForReportType,
+ exposeSecurityDashboard,
+ exposeLicenseScanningData,
+ failedJobsCount,
+ projectPath,
+ graphqlResourceEtag,
+ pipelineIid,
+ pipelineProjectPath,
+ totalJobCount,
+ licenseManagementApiUrl,
+ licenseScanCount,
+ licensesApiPath,
+ canManageLicenses,
+ summaryEndpoint,
+ suiteEndpoint,
+ blobPath,
+ hasTestReport,
+ emptyDagSvgPath,
+ emptyStateImagePath,
+ artifactsExpiredImagePath,
+ isFullCodequalityReportAvailable,
+ securityPoliciesPath,
+ testsCount,
+ } = dataset;
+
+ const defaultTabValue = getPipelineDefaultTab(window.location.href);
+
+ return {
+ el,
+ components: {
+ PipelineTabs,
+ },
+ apolloProvider,
+ store: new Vuex.Store({
+ modules: {
+ testReports: createTestReportsStore({
+ blobPath,
+ summaryEndpoint,
+ suiteEndpoint,
+ }),
+ },
+ }),
+ router,
+ provide: {
+ canGenerateCodequalityReports: parseBoolean(canGenerateCodequalityReports),
+ codequalityReportDownloadPath,
+ codequalityBlobPath,
+ codequalityProjectPath,
+ isFullCodequalityReportAvailable: parseBoolean(isFullCodequalityReportAvailable),
+ projectPath,
+ defaultTabValue,
+ downloadablePathForReportType,
+ exposeSecurityDashboard: parseBoolean(exposeSecurityDashboard),
+ exposeLicenseScanningData: parseBoolean(exposeLicenseScanningData),
+ failedJobsCount,
+ graphqlResourceEtag,
+ pipelineIid,
+ pipelineProjectPath,
+ totalJobCount,
+ licenseManagementApiUrl,
+ licenseScanCount,
+ licensesApiPath,
+ canManageLicenses: parseBoolean(canManageLicenses),
+ summaryEndpoint,
+ suiteEndpoint,
+ blobPath,
+ hasTestReport,
+ emptyDagSvgPath,
+ emptyStateImagePath,
+ artifactsExpiredImagePath,
+ securityPoliciesPath,
+ testsCount,
+ },
+ errorCaptured(err, _vm, info) {
+ reportToSentry('pipeline_tabs', `error: ${err}, info: ${info}`);
+ },
+ render(createElement) {
+ return createElement(PipelineTabs);
+ },
+ };
+};
+
+export const createPipelineTabs = (options) => {
+ if (!options) return;
+
+ // eslint-disable-next-line no-new
+ new Vue(options);
+};