diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-09 06:09:24 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-09 06:09:24 +0300 |
commit | a25cab22f84ee674ebb32625a6da566acd454e8a (patch) | |
tree | f52667dd7f61cace3157fd55c1485cc2becbe3e3 /app | |
parent | 77914793a349059bf523b131fc925b34349d6884 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
8 files changed, 73 insertions, 6 deletions
diff --git a/app/assets/javascripts/terraform/components/states_table.vue b/app/assets/javascripts/terraform/components/states_table.vue index 2e4c18c5a5b..c77eb84dddb 100644 --- a/app/assets/javascripts/terraform/components/states_table.vue +++ b/app/assets/javascripts/terraform/components/states_table.vue @@ -1,6 +1,7 @@ <script> import { GlBadge, GlIcon, GlSprintf, GlTable, GlTooltip } from '@gitlab/ui'; import { s__ } from '~/locale'; +import StateActions from './states_table_actions.vue'; import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue'; import timeagoMixin from '~/vue_shared/mixins/timeago'; @@ -11,6 +12,7 @@ export default { GlSprintf, GlTable, GlTooltip, + StateActions, TimeAgoTooltip, }, mixins: [timeagoMixin], @@ -19,10 +21,15 @@ export default { required: true, type: Array, }, + terraformAdmin: { + required: false, + type: Boolean, + default: false, + }, }, computed: { fields() { - return [ + const columns = [ { key: 'name', thClass: 'gl-display-none', @@ -33,6 +40,16 @@ export default { tdClass: 'gl-text-right', }, ]; + + if (this.terraformAdmin) { + columns.push({ + key: 'actions', + thClass: 'gl-display-none', + tdClass: 'gl-w-10', + }); + } + + return columns; }, }, methods: { @@ -97,5 +114,9 @@ export default { </gl-sprintf> </p> </template> + + <template v-if="terraformAdmin" #cell(actions)="{ item }"> + <state-actions :state="item" /> + </template> </gl-table> </template> diff --git a/app/assets/javascripts/terraform/components/states_table_actions.vue b/app/assets/javascripts/terraform/components/states_table_actions.vue new file mode 100644 index 00000000000..64d30f0c678 --- /dev/null +++ b/app/assets/javascripts/terraform/components/states_table_actions.vue @@ -0,0 +1,34 @@ +<script> +import { GlDropdown, GlDropdownItem } from '@gitlab/ui'; +import { s__ } from '~/locale'; + +export default { + components: { + GlDropdown, + GlDropdownItem, + }, + props: { + state: { + required: true, + type: Object, + }, + }, + i18n: { + downloadJSON: s__('Terraform|Download JSON'), + }, +}; +</script> + +<template> + <div v-if="state.latestVersion"> + <gl-dropdown icon="ellipsis_v" right :data-testid="`terraform-state-actions-${state.name}`"> + <gl-dropdown-item + data-testid="terraform-state-download" + :download="`${state.name}.json`" + :href="state.latestVersion.downloadPath" + > + {{ $options.i18n.downloadJSON }} + </gl-dropdown-item> + </gl-dropdown> + </div> +</template> diff --git a/app/assets/javascripts/terraform/components/terraform_list.vue b/app/assets/javascripts/terraform/components/terraform_list.vue index f614bdc8d43..ad21bc47a76 100644 --- a/app/assets/javascripts/terraform/components/terraform_list.vue +++ b/app/assets/javascripts/terraform/components/terraform_list.vue @@ -46,6 +46,11 @@ export default { required: true, type: String, }, + terraformAdmin: { + required: false, + type: Boolean, + default: false, + }, }, data() { return { @@ -111,7 +116,7 @@ export default { <div v-else-if="statesList"> <div v-if="statesCount"> - <states-table :states="statesList" /> + <states-table :states="statesList" :terraform-admin="terraformAdmin" /> <div v-if="showPagination" class="gl-display-flex gl-justify-content-center gl-mt-5"> <gl-keyset-pagination diff --git a/app/assets/javascripts/terraform/graphql/fragments/state_version.fragment.graphql b/app/assets/javascripts/terraform/graphql/fragments/state_version.fragment.graphql index c7e9700c696..bd139b05b99 100644 --- a/app/assets/javascripts/terraform/graphql/fragments/state_version.fragment.graphql +++ b/app/assets/javascripts/terraform/graphql/fragments/state_version.fragment.graphql @@ -1,6 +1,8 @@ #import "~/graphql_shared/fragments/user.fragment.graphql" fragment StateVersion on TerraformStateVersion { + downloadPath + serial updatedAt createdByUser { diff --git a/app/assets/javascripts/terraform/index.js b/app/assets/javascripts/terraform/index.js index 579d2d14023..e27a29433f3 100644 --- a/app/assets/javascripts/terraform/index.js +++ b/app/assets/javascripts/terraform/index.js @@ -24,6 +24,7 @@ export default () => { props: { emptyStateImage, projectPath, + terraformAdmin: el.hasAttribute('data-terraform-admin'), }, }); }, diff --git a/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue b/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue index d121daf0aa7..bb4b66009de 100644 --- a/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue +++ b/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue @@ -197,6 +197,9 @@ export default { shouldShowAccessibilityReport() { return this.mr.accessibilityReportPath; }, + formattedHumanAccess() { + return (this.mr.humanAccess || '').toLowerCase(); + }, }, watch: { state(newVal, oldVal) { @@ -434,7 +437,7 @@ export default { class="mr-widget-workflow" :pipeline-path="mr.mergeRequestAddCiConfigPath" :pipeline-svg-path="mr.pipelinesEmptySvgPath" - :human-access="mr.humanAccess.toLowerCase()" + :human-access="formattedHumanAccess" :user-callouts-path="mr.userCalloutsPath" :user-callout-feature-id="mr.suggestPipelineFeatureId" @dismiss="dismissSuggestPipelines" diff --git a/app/helpers/projects/terraform_helper.rb b/app/helpers/projects/terraform_helper.rb index b286bc4d7a5..621d97ffb69 100644 --- a/app/helpers/projects/terraform_helper.rb +++ b/app/helpers/projects/terraform_helper.rb @@ -1,10 +1,11 @@ # frozen_string_literal: true module Projects::TerraformHelper - def js_terraform_list_data(project) + def js_terraform_list_data(current_user, project) { empty_state_image: image_path('illustrations/empty-state/empty-serverless-lg.svg'), - project_path: project.full_path + project_path: project.full_path, + terraform_admin: current_user&.can?(:admin_terraform_state, project) } end end diff --git a/app/views/projects/terraform/index.html.haml b/app/views/projects/terraform/index.html.haml index 136e7ded224..d8196649b38 100644 --- a/app/views/projects/terraform/index.html.haml +++ b/app/views/projects/terraform/index.html.haml @@ -1,4 +1,4 @@ - breadcrumb_title _('Terraform') - page_title _('Terraform') -#js-terraform-list{ data: js_terraform_list_data(@project) } +#js-terraform-list{ data: js_terraform_list_data(current_user, @project) } |