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/blob/components/blob_header.vue')
-rw-r--r--app/assets/javascripts/blob/components/blob_header.vue61
1 files changed, 61 insertions, 0 deletions
diff --git a/app/assets/javascripts/blob/components/blob_header.vue b/app/assets/javascripts/blob/components/blob_header.vue
index 4e47aa99fd8..699a0491183 100644
--- a/app/assets/javascripts/blob/components/blob_header.vue
+++ b/app/assets/javascripts/blob/components/blob_header.vue
@@ -1,5 +1,8 @@
<script>
import DefaultActions from 'jh_else_ce/blob/components/blob_header_default_actions.vue';
+import { getIdFromGraphQLId } from '~/graphql_shared/utils';
+import userInfoQuery from '../queries/user_info.query.graphql';
+import applicationInfoQuery from '../queries/application_info.query.graphql';
import BlobFilepath from './blob_header_filepath.vue';
import ViewerSwitcher from './blob_header_viewer_switcher.vue';
import { SIMPLE_BLOB_VIEWER } from './constants';
@@ -11,6 +14,21 @@ export default {
DefaultActions,
BlobFilepath,
TableOfContents,
+ WebIdeLink: () => import('ee_else_ce/vue_shared/components/web_ide_link.vue'),
+ },
+ apollo: {
+ currentUser: {
+ query: userInfoQuery,
+ error() {
+ this.$emit('error');
+ },
+ },
+ gitpodEnabled: {
+ query: applicationInfoQuery,
+ error() {
+ this.$emit('error');
+ },
+ },
},
props: {
blob: {
@@ -52,10 +70,26 @@ export default {
required: false,
default: false,
},
+ showForkSuggestion: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
+ projectPath: {
+ type: String,
+ required: false,
+ default: '',
+ },
+ projectId: {
+ type: String,
+ required: false,
+ default: '',
+ },
},
data() {
return {
viewer: this.hideViewerSwitcher ? null : this.activeViewerType,
+ gitpodEnabled: false,
};
},
computed: {
@@ -65,12 +99,18 @@ export default {
showDefaultActions() {
return !this.hideDefaultActions;
},
+ showWebIdeLink() {
+ return !this.blob.archived && this.blob.editBlobPath;
+ },
isEmpty() {
return this.blob.rawSize === '0';
},
blobSwitcherDocIcon() {
return this.blob.richViewer?.fileType === 'csv' ? 'table' : 'document';
},
+ projectIdAsNumber() {
+ return getIdFromGraphQLId(this.projectId);
+ },
},
watch: {
viewer(newVal, oldVal) {
@@ -100,6 +140,27 @@ export default {
<div class="gl-display-flex gl-flex-wrap file-actions">
<viewer-switcher v-if="showViewerSwitcher" v-model="viewer" :doc-icon="blobSwitcherDocIcon" />
+ <web-ide-link
+ v-if="showWebIdeLink"
+ :show-edit-button="!isBinary"
+ class="gl-mr-3"
+ :edit-url="blob.editBlobPath"
+ :web-ide-url="blob.ideEditPath"
+ :needs-to-fork="showForkSuggestion"
+ :show-pipeline-editor-button="Boolean(blob.pipelineEditorPath)"
+ :pipeline-editor-url="blob.pipelineEditorPath"
+ :gitpod-url="blob.gitpodBlobUrl"
+ :show-gitpod-button="gitpodEnabled"
+ :gitpod-enabled="currentUser && currentUser.gitpodEnabled"
+ :project-path="projectPath"
+ :project-id="projectIdAsNumber"
+ :user-preferences-gitpod-path="currentUser && currentUser.preferencesGitpodPath"
+ :user-profile-enable-gitpod-path="currentUser && currentUser.profileEnableGitpodPath"
+ is-blob
+ disable-fork-modal
+ v-on="$listeners"
+ />
+
<slot name="actions"></slot>
<default-actions