From 999f47e9e6da399de9dc1de404f073f7dd30af0d Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 12 Aug 2020 12:10:25 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../javascripts/lib/utils/axios_startup_calls.js | 19 ++++---- .../components/dashboard_actions_menu.vue | 44 ++++++++++++++++++- .../monitoring/components/dashboard_header.vue | 4 ++ .../queries/getAnnotations.query.graphql | 1 + .../queries/getEnvironments.query.graphql | 1 + app/assets/javascripts/monitoring/router/routes.js | 4 +- .../javascripts/notes/components/notes_app.vue | 4 ++ app/assets/javascripts/notes/stores/actions.js | 49 +++++++++++---------- .../pages/projects/commit/show/index.js | 50 ++++++++++++++++------ .../repository/components/tree_content.vue | 36 +++++++++++++++- .../confidential/confidential_issue_sidebar.vue | 35 +++++++++++---- .../sidebar/components/confidential/edit_form.vue | 32 ++++++++++---- .../components/confidential/edit_form_buttons.vue | 20 ++++++--- app/assets/stylesheets/pages/editor.scss | 3 +- app/controllers/groups/releases_controller.rb | 23 ++++++++++ app/controllers/projects/commit_controller.rb | 8 +++- .../projects/environments_controller.rb | 1 + .../projects/metrics_dashboard_controller.rb | 1 + app/finders/releases_finder.rb | 41 +++++++++++++++--- app/helpers/search_helper.rb | 1 + app/models/ci/pipeline_artifact.rb | 2 +- app/models/concerns/issuable.rb | 2 + app/serializers/release_entity.rb | 6 +++ app/serializers/release_serializer.rb | 5 +++ app/services/metrics/dashboard/base_service.rb | 1 - .../metrics/dashboard/clone_dashboard_service.rb | 6 +-- .../metrics/dashboard/cluster_dashboard_service.rb | 3 +- .../dashboard/custom_metric_embed_service.rb | 1 - .../metrics/dashboard/pod_dashboard_service.rb | 3 +- .../dashboard/predefined_dashboard_service.rb | 3 +- .../dashboard/self_monitoring_dashboard_service.rb | 3 +- .../metrics/dashboard/system_dashboard_service.rb | 1 - app/views/projects/commit/diff_files.html.haml | 3 ++ app/views/projects/diffs/_diffs.html.haml | 10 ++++- app/views/shared/members/_member.html.haml | 11 +++-- 35 files changed, 332 insertions(+), 105 deletions(-) create mode 100644 app/controllers/groups/releases_controller.rb create mode 100644 app/serializers/release_entity.rb create mode 100644 app/serializers/release_serializer.rb create mode 100644 app/views/projects/commit/diff_files.html.haml (limited to 'app') diff --git a/app/assets/javascripts/lib/utils/axios_startup_calls.js b/app/assets/javascripts/lib/utils/axios_startup_calls.js index cb2e8a76c08..a047cebc8ab 100644 --- a/app/assets/javascripts/lib/utils/axios_startup_calls.js +++ b/app/assets/javascripts/lib/utils/axios_startup_calls.js @@ -34,14 +34,17 @@ const setupAxiosStartupCalls = axios => { }); // eslint-disable-next-line promise/no-nesting - return res.json().then(data => ({ - data, - status: res.status, - statusText: res.statusText, - headers: fetchHeaders, - config: req, - request: req, - })); + return res + .clone() + .json() + .then(data => ({ + data, + status: res.status, + statusText: res.statusText, + headers: fetchHeaders, + config: req, + request: req, + })); }); } diff --git a/app/assets/javascripts/monitoring/components/dashboard_actions_menu.vue b/app/assets/javascripts/monitoring/components/dashboard_actions_menu.vue index 54586c67fef..d82b8e0992e 100644 --- a/app/assets/javascripts/monitoring/components/dashboard_actions_menu.vue +++ b/app/assets/javascripts/monitoring/components/dashboard_actions_menu.vue @@ -11,6 +11,8 @@ import { GlTooltipDirective, } from '@gitlab/ui'; import CustomMetricsFormFields from '~/custom_metrics/components/custom_metrics_form_fields.vue'; +import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; +import { PANEL_NEW_PAGE } from '../router/constants'; import DuplicateDashboardModal from './duplicate_dashboard_modal.vue'; import CreateDashboardModal from './create_dashboard_modal.vue'; import { s__ } from '~/locale'; @@ -36,6 +38,7 @@ export default { GlTooltip: GlTooltipDirective, TrackEvent: TrackEventDirective, }, + mixins: [glFeatureFlagsMixin()], props: { addingMetricsAvailable: { type: Boolean, @@ -56,6 +59,10 @@ export default { type: String, required: true, }, + isOotbDashboard: { + type: Boolean, + required: true, + }, }, data() { return { customMetricsFormIsValid: null }; @@ -72,15 +79,22 @@ export default { }, isMenuItemEnabled() { return { + addPanel: !this.isOotbDashboard, createDashboard: Boolean(this.projectPath), editDashboard: this.selectedDashboard?.can_edit, }; }, isMenuItemShown() { return { + addPanel: this.glFeatures.metricsDashboardNewPanelPage, duplicateDashboard: this.isOutOfTheBoxDashboard, }; }, + newPanelPageLocation() { + // Retains params/query if any + const { params, query } = this.$route ?? {}; + return { name: PANEL_NEW_PAGE, params, query }; + }, }, methods: { ...mapActions('monitoringDashboard', ['toggleStarredValue']), @@ -117,7 +131,9 @@ export default { starDashboard: s__('Metrics|Star dashboard'), unstarDashboard: s__('Metrics|Unstar dashboard'), addMetric: s__('Metrics|Add metric'), - editDashboardInfo: s__('Metrics|Duplicate this dashboard to edit dashboard YAML'), + addPanel: s__('Metrics|Add panel'), + addPanelInfo: s__('Metrics|Duplicate this dashboard to add panel or edit dashboard YAML.'), + editDashboardInfo: s__('Metrics|Duplicate this dashboard to add panel or edit dashboard YAML.'), editDashboard: s__('Metrics|Edit dashboard YAML'), createDashboard: s__('Metrics|Create new dashboard'), }, @@ -176,6 +192,32 @@ export default { + + diff --git a/app/assets/javascripts/monitoring/queries/getAnnotations.query.graphql b/app/assets/javascripts/monitoring/queries/getAnnotations.query.graphql index 27b49860b8a..32b982ff195 100644 --- a/app/assets/javascripts/monitoring/queries/getAnnotations.query.graphql +++ b/app/assets/javascripts/monitoring/queries/getAnnotations.query.graphql @@ -5,6 +5,7 @@ query getAnnotations( $startingFrom: Time! ) { project(fullPath: $projectPath) { + id environments(name: $environmentName) { nodes { id diff --git a/app/assets/javascripts/monitoring/queries/getEnvironments.query.graphql b/app/assets/javascripts/monitoring/queries/getEnvironments.query.graphql index 17cd1b2c342..48d0a780fc7 100644 --- a/app/assets/javascripts/monitoring/queries/getEnvironments.query.graphql +++ b/app/assets/javascripts/monitoring/queries/getEnvironments.query.graphql @@ -1,5 +1,6 @@ query getEnvironments($projectPath: ID!, $search: String, $states: [String!]) { project(fullPath: $projectPath) { + id data: environments(search: $search, states: $states) { environments: nodes { name diff --git a/app/assets/javascripts/monitoring/router/routes.js b/app/assets/javascripts/monitoring/router/routes.js index 8092a5b7c0b..cc43fd8622a 100644 --- a/app/assets/javascripts/monitoring/router/routes.js +++ b/app/assets/javascripts/monitoring/router/routes.js @@ -13,12 +13,12 @@ import { DASHBOARD_PAGE, PANEL_NEW_PAGE } from './constants'; export default [ { name: PANEL_NEW_PAGE, - path: '/:dashboard(.*)?/panel/new', + path: '/:dashboard(.+)?/panel/new', component: PanelNewPage, }, { name: DASHBOARD_PAGE, - path: '/:dashboard(.*)?', + path: '/:dashboard(.+)?', component: DashboardPage, }, ]; diff --git a/app/assets/javascripts/notes/components/notes_app.vue b/app/assets/javascripts/notes/components/notes_app.vue index faa6006945d..262c0b53e79 100644 --- a/app/assets/javascripts/notes/components/notes_app.vue +++ b/app/assets/javascripts/notes/components/notes_app.vue @@ -136,6 +136,8 @@ export default { } window.addEventListener('hashchange', this.handleHashChanged); + + eventHub.$on('notesApp.updateIssuableConfidentiality', this.setConfidentiality); }, updated() { this.$nextTick(() => { @@ -146,6 +148,7 @@ export default { beforeDestroy() { this.stopPolling(); window.removeEventListener('hashchange', this.handleHashChanged); + eventHub.$off('notesApp.updateIssuableConfidentiality', this.setConfidentiality); }, methods: { ...mapActions([ @@ -164,6 +167,7 @@ export default { 'startTaskList', 'convertToDiscussion', 'stopPolling', + 'setConfidentiality', ]), discussionIsIndividualNoteAndNotConverted(discussion) { return discussion.individual_note && !this.convertedDisscussionIds.includes(discussion.id); diff --git a/app/assets/javascripts/notes/stores/actions.js b/app/assets/javascripts/notes/stores/actions.js index ac57fcf2ea5..3f4da32ec35 100644 --- a/app/assets/javascripts/notes/stores/actions.js +++ b/app/assets/javascripts/notes/stores/actions.js @@ -21,29 +21,6 @@ import Api from '~/api'; let eTagPoll; -export const updateConfidentialityOnIssue = ({ commit, getters }, { confidential, fullPath }) => { - const { iid } = getters.getNoteableData; - - return utils.gqClient - .mutate({ - mutation: updateIssueConfidentialMutation, - variables: { - input: { - projectPath: fullPath, - iid: String(iid), - confidential, - }, - }, - }) - .then(({ data }) => { - const { - issueSetConfidential: { issue }, - } = data; - - commit(types.SET_ISSUE_CONFIDENTIAL, issue.confidential); - }); -}; - export const updateLockedAttribute = ({ commit, getters }, { locked, fullPath }) => { const { iid, targetType } = getters.getNoteableData; @@ -712,3 +689,29 @@ export const updateAssignees = ({ commit }, assignees) => { export const updateDiscussionPosition = ({ commit }, updatedPosition) => { commit(types.UPDATE_DISCUSSION_POSITION, updatedPosition); }; + +export const updateConfidentialityOnIssuable = ( + { getters, commit }, + { confidential, fullPath }, +) => { + const { iid } = getters.getNoteableData; + + return utils.gqClient + .mutate({ + mutation: updateIssueConfidentialMutation, + variables: { + input: { + projectPath: fullPath, + iid: String(iid), + confidential, + }, + }, + }) + .then(({ data }) => { + const { + issueSetConfidential: { issue }, + } = data; + + setConfidentiality({ commit }, issue.confidential); + }); +}; diff --git a/app/assets/javascripts/pages/projects/commit/show/index.js b/app/assets/javascripts/pages/projects/commit/show/index.js index 0eb6f231839..a245af72d93 100644 --- a/app/assets/javascripts/pages/projects/commit/show/index.js +++ b/app/assets/javascripts/pages/projects/commit/show/index.js @@ -7,23 +7,47 @@ import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation'; import MiniPipelineGraph from '~/mini_pipeline_graph_dropdown'; import initNotes from '~/init_notes'; import initChangesDropdown from '~/init_changes_dropdown'; -import initDiffNotes from '~/diff_notes/diff_notes_bundle'; import { fetchCommitMergeRequests } from '~/commit_merge_requests'; import '~/sourcegraph/load'; +import { handleLocationHash } from '~/lib/utils/common_utils'; +import axios from '~/lib/utils/axios_utils'; +import syntaxHighlight from '~/syntax_highlight'; +import flash from '~/flash'; +import { __ } from '~/locale'; document.addEventListener('DOMContentLoaded', () => { const hasPerfBar = document.querySelector('.with-performance-bar'); const performanceHeight = hasPerfBar ? 35 : 0; - new Diff(); - new ZenMode(); - new ShortcutsNavigation(); - new MiniPipelineGraph({ - container: '.js-commit-pipeline-graph', - }).bindEvents(); - initNotes(); - initChangesDropdown(document.querySelector('.navbar-gitlab').offsetHeight + performanceHeight); - // eslint-disable-next-line no-jquery/no-load - $('.commit-info.branches').load(document.querySelector('.js-commit-box').dataset.commitPath); - fetchCommitMergeRequests(); - initDiffNotes(); + const filesContainer = $('.js-diffs-batch'); + const initAfterPageLoad = () => { + new Diff(); + new ZenMode(); + new ShortcutsNavigation(); + new MiniPipelineGraph({ + container: '.js-commit-pipeline-graph', + }).bindEvents(); + initNotes(); + initChangesDropdown(document.querySelector('.navbar-gitlab').offsetHeight + performanceHeight); + // eslint-disable-next-line no-jquery/no-load + $('.commit-info.branches').load(document.querySelector('.js-commit-box').dataset.commitPath); + fetchCommitMergeRequests(); + }; + + if (filesContainer.length) { + const batchPath = filesContainer.data('diffFilesPath'); + + axios + .get(batchPath) + .then(({ data }) => { + filesContainer.html($(data.html)); + syntaxHighlight(filesContainer); + handleLocationHash(); + initAfterPageLoad(); + }) + .catch(() => { + flash(__('An error occurred while retrieving diff files')); + }); + } else { + initAfterPageLoad(); + } }); diff --git a/app/assets/javascripts/repository/components/tree_content.vue b/app/assets/javascripts/repository/components/tree_content.vue index 721cc6787dc..702df42d655 100644 --- a/app/assets/javascripts/repository/components/tree_content.vue +++ b/app/assets/javascripts/repository/components/tree_content.vue @@ -1,4 +1,5 @@ @@ -124,6 +143,19 @@ export default { :is-loading="isLoadingFiles" :loading-path="loadingPath" /> +
+ + {{ s__('ProjectFileTree|Show more') }} + +
diff --git a/app/assets/javascripts/sidebar/components/confidential/confidential_issue_sidebar.vue b/app/assets/javascripts/sidebar/components/confidential/confidential_issue_sidebar.vue index 7dbeb3055c6..c6f7d5e44ad 100644 --- a/app/assets/javascripts/sidebar/components/confidential/confidential_issue_sidebar.vue +++ b/app/assets/javascripts/sidebar/components/confidential/confidential_issue_sidebar.vue @@ -1,6 +1,6 @@