diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-09 12:06:13 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-09 12:06:13 +0000 |
commit | 0a850868dfb85086cba8320cee9dac4657dcae6c (patch) | |
tree | 40d17228fe23d9db7b861fe2a20d024d64c50323 /app/assets/javascripts | |
parent | 3744bcc0d10d24104e39985b6833a0ec51791c0a (diff) | |
download | gitlab-ce-0a850868dfb85086cba8320cee9dac4657dcae6c.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts')
17 files changed, 145 insertions, 34 deletions
diff --git a/app/assets/javascripts/behaviors/markdown/editor_extensions.js b/app/assets/javascripts/behaviors/markdown/editor_extensions.js index 47e5fc65c48..8bd2145db1c 100644 --- a/app/assets/javascripts/behaviors/markdown/editor_extensions.js +++ b/app/assets/javascripts/behaviors/markdown/editor_extensions.js @@ -21,6 +21,7 @@ import Reference from './nodes/reference'; import TableOfContents from './nodes/table_of_contents'; import Video from './nodes/video'; +import Audio from './nodes/audio'; import BulletList from './nodes/bullet_list'; import OrderedList from './nodes/ordered_list'; @@ -78,6 +79,7 @@ export default [ new TableOfContents(), new Video(), + new Audio(), new BulletList(), new OrderedList(), diff --git a/app/assets/javascripts/behaviors/markdown/nodes/audio.js b/app/assets/javascripts/behaviors/markdown/nodes/audio.js new file mode 100644 index 00000000000..48ac408cf24 --- /dev/null +++ b/app/assets/javascripts/behaviors/markdown/nodes/audio.js @@ -0,0 +1,53 @@ +/* eslint-disable class-methods-use-this */ + +import { Node } from 'tiptap'; +import { defaultMarkdownSerializer } from 'prosemirror-markdown'; + +// Transforms generated HTML back to GFM for Banzai::Filter::AudioLinkFilter +export default class Audio extends Node { + get name() { + return 'audio'; + } + + get schema() { + return { + attrs: { + src: {}, + alt: { + default: null, + }, + }, + group: 'block', + draggable: true, + parseDOM: [ + { + tag: '.audio-container', + skip: true, + }, + { + tag: '.audio-container p', + priority: 51, + ignore: true, + }, + { + tag: 'audio[src]', + getAttrs: el => ({ src: el.getAttribute('src'), alt: el.dataset.title }), + }, + ], + toDOM: node => [ + 'audio', + { + src: node.attrs.src, + controls: true, + 'data-setup': '{}', + 'data-title': node.attrs.alt, + }, + ], + }; + } + + toMarkdown(state, node) { + defaultMarkdownSerializer.nodes.image(state, node); + state.closeBlock(node); + } +} diff --git a/app/assets/javascripts/blob/viewer/index.js b/app/assets/javascripts/blob/viewer/index.js index 9ea455069f3..07e4dde41d9 100644 --- a/app/assets/javascripts/blob/viewer/index.js +++ b/app/assets/javascripts/blob/viewer/index.js @@ -107,18 +107,18 @@ export default class BlobViewer { toggleCopyButtonState() { if (!this.copySourceBtn) return; if (this.simpleViewer.getAttribute('data-loaded')) { - this.copySourceBtn.setAttribute('title', __('Copy source to clipboard')); + this.copySourceBtn.setAttribute('title', __('Copy file contents')); this.copySourceBtn.classList.remove('disabled'); } else if (this.activeViewer === this.simpleViewer) { this.copySourceBtn.setAttribute( 'title', - __('Wait for the source to load to copy it to the clipboard'), + __('Wait for the file to load to copy its contents'), ); this.copySourceBtn.classList.add('disabled'); } else { this.copySourceBtn.setAttribute( 'title', - __('Switch to the source to copy it to the clipboard'), + __('Switch to the source to copy the file contents'), ); this.copySourceBtn.classList.add('disabled'); } diff --git a/app/assets/javascripts/clusters/components/applications.vue b/app/assets/javascripts/clusters/components/applications.vue index 4d3e759d8d4..b95f97077f6 100644 --- a/app/assets/javascripts/clusters/components/applications.vue +++ b/app/assets/javascripts/clusters/components/applications.vue @@ -294,7 +294,7 @@ export default { <span class="input-group-append"> <clipboard-button :text="ingressExternalEndpoint" - :title="s__('ClusterIntegration|Copy Ingress Endpoint to clipboard')" + :title="s__('ClusterIntegration|Copy Ingress Endpoint')" class="input-group-text js-clipboard-btn" /> </span> @@ -472,7 +472,7 @@ export default { <span class="input-group-btn"> <clipboard-button :text="jupyterHostname" - :title="s__('ClusterIntegration|Copy Jupyter Hostname to clipboard')" + :title="s__('ClusterIntegration|Copy Jupyter Hostname')" class="js-clipboard-btn" /> </span> diff --git a/app/assets/javascripts/clusters/components/knative_domain_editor.vue b/app/assets/javascripts/clusters/components/knative_domain_editor.vue index e26ef135bc5..25347b11b6c 100644 --- a/app/assets/javascripts/clusters/components/knative_domain_editor.vue +++ b/app/assets/javascripts/clusters/components/knative_domain_editor.vue @@ -103,7 +103,7 @@ export default { <span class="input-group-append"> <clipboard-button :text="knativeExternalEndpoint" - :title="s__('ClusterIntegration|Copy Knative Endpoint to clipboard')" + :title="s__('ClusterIntegration|Copy Knative Endpoint')" class="input-group-text js-knative-endpoint-clipboard-btn" /> </span> diff --git a/app/assets/javascripts/diffs/components/commit_item.vue b/app/assets/javascripts/diffs/components/commit_item.vue index 761fd1583ed..43a7703f611 100644 --- a/app/assets/javascripts/diffs/components/commit_item.vue +++ b/app/assets/javascripts/diffs/components/commit_item.vue @@ -121,7 +121,7 @@ export default { <div class="label label-monospace monospace" v-text="commit.short_id"></div> <clipboard-button :text="commit.id" - :title="__('Copy commit SHA to clipboard')" + :title="__('Copy commit SHA')" class="btn btn-default" /> </div> diff --git a/app/assets/javascripts/diffs/components/diff_file_header.vue b/app/assets/javascripts/diffs/components/diff_file_header.vue index bfcc726a030..665328eb234 100644 --- a/app/assets/javascripts/diffs/components/diff_file_header.vue +++ b/app/assets/javascripts/diffs/components/diff_file_header.vue @@ -209,7 +209,7 @@ export default { </a> <clipboard-button - :title="__('Copy file path to clipboard')" + :title="__('Copy file path')" :text="diffFile.file_path" :gfm="gfmCopyText" css-class="btn-default btn-transparent btn-clipboard" diff --git a/app/assets/javascripts/jobs/components/commit_block.vue b/app/assets/javascripts/jobs/components/commit_block.vue index 9fac880c5f8..8156f26ffb1 100644 --- a/app/assets/javascripts/jobs/components/commit_block.vue +++ b/app/assets/javascripts/jobs/components/commit_block.vue @@ -41,7 +41,7 @@ export default { <clipboard-button :text="commit.id" - :title="__('Copy commit SHA to clipboard')" + :title="__('Copy commit SHA')" css-class="btn btn-clipboard btn-transparent" /> diff --git a/app/assets/javascripts/monitoring/components/dashboard.vue b/app/assets/javascripts/monitoring/components/dashboard.vue index 084f736911f..9ecb9324f8c 100644 --- a/app/assets/javascripts/monitoring/components/dashboard.vue +++ b/app/assets/javascripts/monitoring/components/dashboard.vue @@ -1,4 +1,7 @@ <script> +import _ from 'underscore'; +import { mapActions, mapState } from 'vuex'; +import VueDraggable from 'vuedraggable'; import { GlButton, GlDropdown, @@ -8,8 +11,6 @@ import { GlModalDirective, GlTooltipDirective, } from '@gitlab/ui'; -import _ from 'underscore'; -import { mapActions, mapState } from 'vuex'; import { __, s__ } from '~/locale'; import Icon from '~/vue_shared/components/icon.vue'; import { getParameterValues, mergeUrlParams } from '~/lib/utils/url_utility'; @@ -26,6 +27,7 @@ let sidebarMutationObserver; export default { components: { + VueDraggable, MonitorTimeSeriesChart, MonitorSingleStatChart, PanelType, @@ -151,6 +153,11 @@ export default { required: false, default: false, }, + rearrangePanelsAvailable: { + type: Boolean, + required: false, + default: false, + }, }, data() { return { @@ -160,6 +167,7 @@ export default { selectedTimeWindowKey: '', formIsValid: null, timeWindows: {}, + isRearrangingPanels: false, }; }, computed: { @@ -183,6 +191,9 @@ export default { selectedDashboardText() { return this.currentDashboard || this.firstDashboard.display_name; }, + showRearrangePanelsBtn() { + return !this.showEmptyState && this.rearrangePanelsAvailable; + }, addingMetricsAvailable() { return IS_EE && this.canAddMetrics && !this.showEmptyState; }, @@ -271,9 +282,14 @@ export default { return Object.values(this.getGraphAlerts(queries)); }, showToast() { - this.$toast.show(__('Link copied to clipboard')); + this.$toast.show(__('Link copied')); }, // TODO: END + removeGraph(metrics, graphIndex) { + // At present graphs will not be removed, they should removed using the vuex store + // See https://gitlab.com/gitlab-org/gitlab/issues/27835 + metrics.splice(graphIndex, 1); + }, generateLink(group, title, yLabel) { const dashboard = this.currentDashboard || this.firstDashboard.path; const params = _.pick({ dashboard, group, title, y_label: yLabel }, value => value != null); @@ -287,6 +303,9 @@ export default { this.elWidth = this.$el.clientWidth; }, sidebarAnimationDuration); }, + toggleRearrangingPanels() { + this.isRearrangingPanels = !this.isRearrangingPanels; + }, setFormValidity(isValid) { this.formIsValid = isValid; }, @@ -389,15 +408,27 @@ export default { </template> <gl-form-group - v-if="addingMetricsAvailable || externalDashboardUrl.length" + v-if="addingMetricsAvailable || showRearrangePanelsBtn || externalDashboardUrl.length" label-for="prometheus-graphs-dropdown-buttons" class="dropdown-buttons col-lg d-lg-flex align-items-end" > <div id="prometheus-graphs-dropdown-buttons"> <gl-button + v-if="showRearrangePanelsBtn" + :pressed="isRearrangingPanels" + new-style + variant="default" + class="mr-2 mt-1 js-rearrange-button" + @click="toggleRearrangingPanels" + > + {{ __('Arrange charts') }} + </gl-button> + <gl-button v-if="addingMetricsAvailable" v-gl-modal="$options.addMetric.modalId" - class="mr-2 mt-1 js-add-metric-button text-success border-success" + new-style + variant="outline-success" + class="mr-2 mt-1 js-add-metric-button" > {{ $options.addMetric.title }} </gl-button> @@ -451,17 +482,42 @@ export default { :collapse-group="groupHasData(groupData)" > <template v-if="additionalPanelTypesEnabled"> - <panel-type - v-for="(graphData, graphIndex) in groupData.metrics" - :key="`panel-type-${graphIndex}`" - class="col-12 col-lg-6 pb-3" - :clipboard-text="generateLink(groupData.group, graphData.title, graphData.y_label)" - :graph-data="graphData" - :dashboard-width="elWidth" - :alerts-endpoint="alertsEndpoint" - :prometheus-alerts-available="prometheusAlertsAvailable" - :index="`${index}-${graphIndex}`" - /> + <vue-draggable + :list="groupData.metrics" + group="metrics-dashboard" + :component-data="{ attrs: { class: 'row mx-0 w-100' } }" + :disabled="!isRearrangingPanels" + > + <div + v-for="(graphData, graphIndex) in groupData.metrics" + :key="`panel-type-${graphIndex}`" + class="col-12 col-lg-6 px-2 mb-2 draggable" + :class="{ 'draggable-enabled': isRearrangingPanels }" + > + <div class="position-relative draggable-panel js-draggable-panel"> + <div + v-if="isRearrangingPanels" + class="draggable-remove js-draggable-remove p-2 w-100 position-absolute d-flex justify-content-end" + @click="removeGraph(groupData.metrics, graphIndex)" + > + <a class="mx-2 p-2 draggable-remove-link" :aria-label="__('Remove')" + ><icon name="close" + /></a> + </div> + + <panel-type + :clipboard-text=" + generateLink(groupData.group, graphData.title, graphData.y_label) + " + :graph-data="graphData" + :dashboard-width="elWidth" + :alerts-endpoint="alertsEndpoint" + :prometheus-alerts-available="prometheusAlertsAvailable" + :index="`${index}-${graphIndex}`" + /> + </div> + </div> + </vue-draggable> </template> <template v-else> <monitor-time-series-chart diff --git a/app/assets/javascripts/monitoring/components/graph_group.vue b/app/assets/javascripts/monitoring/components/graph_group.vue index 72ddd8d4fcf..ee3a2bae79b 100644 --- a/app/assets/javascripts/monitoring/components/graph_group.vue +++ b/app/assets/javascripts/monitoring/components/graph_group.vue @@ -52,7 +52,7 @@ export default { <div v-if="collapseGroup" v-show="collapseGroup && showGroup" - class="card-body prometheus-graph-group" + class="card-body prometheus-graph-group p-0" > <slot></slot> </div> diff --git a/app/assets/javascripts/monitoring/components/panel_type.vue b/app/assets/javascripts/monitoring/components/panel_type.vue index 73ff651d510..af0d8335c43 100644 --- a/app/assets/javascripts/monitoring/components/panel_type.vue +++ b/app/assets/javascripts/monitoring/components/panel_type.vue @@ -82,7 +82,7 @@ export default { return this.graphData.type && this.graphData.type === type; }, showToast() { - this.$toast.show(__('Link copied to clipboard')); + this.$toast.show(__('Link copied')); }, }, }; diff --git a/app/assets/javascripts/registry/components/app.vue b/app/assets/javascripts/registry/components/app.vue index 60aaef656a0..7ae06af02cf 100644 --- a/app/assets/javascripts/registry/components/app.vue +++ b/app/assets/javascripts/registry/components/app.vue @@ -143,7 +143,7 @@ export default { <span class="input-group-append"> <clipboard-button :text="dockerBuildCommand" - :title="s__('ContainerRegistry|Copy build command to clipboard')" + :title="s__('ContainerRegistry|Copy build command')" class="input-group-text" /> </span> @@ -154,7 +154,7 @@ export default { <span class="input-group-append"> <clipboard-button :text="dockerPushCommand" - :title="s__('ContainerRegistry|Copy push command to clipboard')" + :title="s__('ContainerRegistry|Copy push command')" class="input-group-text" /> </span> diff --git a/app/assets/javascripts/repository/components/last_commit.vue b/app/assets/javascripts/repository/components/last_commit.vue index 1b023f13862..19a2db2db25 100644 --- a/app/assets/javascripts/repository/components/last_commit.vue +++ b/app/assets/javascripts/repository/components/last_commit.vue @@ -144,7 +144,7 @@ export default { </div> <clipboard-button :text="commit.sha" - :title="__('Copy commit SHA to clipboard')" + :title="__('Copy commit SHA')" tooltip-placement="bottom" /> </div> diff --git a/app/assets/javascripts/serverless/components/url.vue b/app/assets/javascripts/serverless/components/url.vue index e47a03f1939..5e30c8d614e 100644 --- a/app/assets/javascripts/serverless/components/url.vue +++ b/app/assets/javascripts/serverless/components/url.vue @@ -23,7 +23,7 @@ export default { <div class="url-text-field label label-monospace monospace">{{ uri }}</div> <clipboard-button :text="uri" - :title="s__('ServerlessURL|Copy URL to clipboard')" + :title="s__('ServerlessURL|Copy URL')" class="input-group-text js-clipboard-btn" /> <gl-button diff --git a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_header.vue b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_header.vue index fb826be19f5..2aaba6e1c8a 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_header.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_header.vue @@ -90,7 +90,7 @@ export default { v-html="mr.sourceBranchLink" /><clipboard-button :text="branchNameClipboardData" - :title="__('Copy branch name to clipboard')" + :title="__('Copy branch name')" css-class="btn-default btn-transparent btn-clipboard" /> {{ s__('mrWidget|into') }} diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue index fb07c03e34d..a2b5a79af36 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue @@ -170,7 +170,7 @@ export default { > </a> <clipboard-button - :title="__('Copy commit SHA to clipboard')" + :title="__('Copy commit SHA')" :text="mr.mergeCommitSha" css-class="btn-default btn-transparent btn-clipboard js-mr-merged-copy-sha" /> diff --git a/app/assets/javascripts/vue_shared/components/clipboard_button.vue b/app/assets/javascripts/vue_shared/components/clipboard_button.vue index a620f560b52..9f498037185 100644 --- a/app/assets/javascripts/vue_shared/components/clipboard_button.vue +++ b/app/assets/javascripts/vue_shared/components/clipboard_button.vue @@ -7,7 +7,7 @@ * * @example * <clipboard-button - * title="Copy to clipboard" + * title="Copy" * text="Content to be copied" * css-class="btn-transparent" * /> |