summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/vue_merge_request_widget/components/terraform/mr_widget_terraform_container.vue
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/vue_merge_request_widget/components/terraform/mr_widget_terraform_container.vue')
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/terraform/mr_widget_terraform_container.vue137
1 files changed, 0 insertions, 137 deletions
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/terraform/mr_widget_terraform_container.vue b/app/assets/javascripts/vue_merge_request_widget/components/terraform/mr_widget_terraform_container.vue
deleted file mode 100644
index 18fdb29ba54..00000000000
--- a/app/assets/javascripts/vue_merge_request_widget/components/terraform/mr_widget_terraform_container.vue
+++ /dev/null
@@ -1,137 +0,0 @@
-<script>
-import { GlSkeletonLoader, GlSprintf } from '@gitlab/ui';
-import axios from '~/lib/utils/axios_utils';
-import Poll from '~/lib/utils/poll';
-import { n__ } from '~/locale';
-import MrWidgetExpanableSection from '../mr_widget_expandable_section.vue';
-import TerraformPlan from './terraform_plan.vue';
-
-export default {
- name: 'MRWidgetTerraformContainer',
- components: {
- GlSkeletonLoader,
- GlSprintf,
- MrWidgetExpanableSection,
- TerraformPlan,
- },
- props: {
- endpoint: {
- type: String,
- required: true,
- },
- },
- data() {
- return {
- loading: true,
- plansObject: {},
- poll: null,
- };
- },
- computed: {
- inValidPlanCountText() {
- if (this.numberOfInvalidPlans === 0) {
- return null;
- }
-
- return n__(
- 'Terraform|%{number} Terraform report failed to generate',
- 'Terraform|%{number} Terraform reports failed to generate',
- this.numberOfInvalidPlans,
- );
- },
- numberOfInvalidPlans() {
- return Object.values(this.plansObject).filter((plan) => plan.tf_report_error).length;
- },
- numberOfPlans() {
- return Object.keys(this.plansObject).length;
- },
- numberOfValidPlans() {
- return this.numberOfPlans - this.numberOfInvalidPlans;
- },
- validPlanCountText() {
- if (this.numberOfValidPlans === 0) {
- return null;
- }
-
- return n__(
- 'Terraform|%{number} Terraform report was generated in your pipelines',
- 'Terraform|%{number} Terraform reports were generated in your pipelines',
- this.numberOfValidPlans,
- );
- },
- },
- created() {
- this.fetchPlans();
- },
- beforeDestroy() {
- this.poll.stop();
- },
- methods: {
- fetchPlans() {
- this.loading = true;
-
- this.poll = new Poll({
- resource: {
- fetchPlans: () => axios.get(this.endpoint),
- },
- data: this.endpoint,
- method: 'fetchPlans',
- successCallback: ({ data }) => {
- this.plansObject = data;
-
- if (this.numberOfPlans > 0) {
- this.loading = false;
- this.poll.stop();
- }
- },
- errorCallback: () => {
- this.plansObject = { bad_plan: { tf_report_error: 'api_error' } };
- this.loading = false;
- this.poll.stop();
- },
- });
-
- this.poll.makeRequest();
- },
- },
-};
-</script>
-
-<template>
- <section class="mr-widget-section">
- <div v-if="loading" class="mr-widget-body">
- <gl-skeleton-loader />
- </div>
-
- <mr-widget-expanable-section v-else>
- <template #header>
- <div
- data-testid="terraform-header-text"
- class="gl-flex-grow-1 gl-display-flex gl-flex-direction-column"
- >
- <p v-if="validPlanCountText" class="gl-m-0">
- <gl-sprintf :message="validPlanCountText">
- <template #number>
- <strong>{{ numberOfValidPlans }}</strong>
- </template>
- </gl-sprintf>
- </p>
-
- <p v-if="inValidPlanCountText" class="gl-m-0">
- <gl-sprintf :message="inValidPlanCountText">
- <template #number>
- <strong>{{ numberOfInvalidPlans }}</strong>
- </template>
- </gl-sprintf>
- </p>
- </div>
- </template>
-
- <template #content>
- <div class="mr-widget-body gl-pb-1">
- <terraform-plan v-for="(plan, key) in plansObject" :key="key" :plan="plan" />
- </div>
- </template>
- </mr-widget-expanable-section>
- </section>
-</template>