summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/pages/projects/learn_gitlab/components/learn_gitlab.vue
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/pages/projects/learn_gitlab/components/learn_gitlab.vue')
-rw-r--r--app/assets/javascripts/pages/projects/learn_gitlab/components/learn_gitlab.vue146
1 files changed, 0 insertions, 146 deletions
diff --git a/app/assets/javascripts/pages/projects/learn_gitlab/components/learn_gitlab.vue b/app/assets/javascripts/pages/projects/learn_gitlab/components/learn_gitlab.vue
deleted file mode 100644
index 54e15b6552c..00000000000
--- a/app/assets/javascripts/pages/projects/learn_gitlab/components/learn_gitlab.vue
+++ /dev/null
@@ -1,146 +0,0 @@
-<script>
-import { GlProgressBar, GlSprintf, GlAlert } from '@gitlab/ui';
-import eventHub from '~/invite_members/event_hub';
-import { s__ } from '~/locale';
-import { getCookie, removeCookie, parseBoolean } from '~/lib/utils/common_utils';
-import { ACTION_LABELS, ACTION_SECTIONS, INVITE_MODAL_OPEN_COOKIE } from '../constants';
-import LearnGitlabSectionCard from './learn_gitlab_section_card.vue';
-
-export default {
- components: { GlProgressBar, GlSprintf, GlAlert, LearnGitlabSectionCard },
- i18n: {
- title: s__('LearnGitLab|Learn GitLab'),
- description: s__(
- 'LearnGitLab|Ready to get started with GitLab? Follow these steps to set up your workspace, plan and commit changes, and deploy your project.',
- ),
- percentageCompleted: s__(`LearnGitLab|%{percentage}%{percentSymbol} completed`),
- successfulInvitations: s__(
- "LearnGitLab|Your team is growing! You've successfully invited new team members to the %{projectName} project.",
- ),
- },
- props: {
- actions: {
- required: true,
- type: Object,
- },
- sections: {
- required: true,
- type: Object,
- },
- project: {
- required: true,
- type: Object,
- },
- },
- data() {
- return {
- showSuccessfulInvitationsAlert: false,
- actionsData: this.actions,
- };
- },
- actionSections: Object.keys(ACTION_SECTIONS),
- computed: {
- maxValue() {
- return Object.keys(this.actionsData).length;
- },
- progressValue() {
- return Object.values(this.actionsData).filter((a) => a.completed).length;
- },
- progressPercentage() {
- return Math.round((this.progressValue / this.maxValue) * 100);
- },
- },
- mounted() {
- if (this.getCookieForInviteMembers()) {
- this.openInviteMembersModal('celebrate');
- }
-
- eventHub.$on('showSuccessfulInvitationsAlert', this.handleShowSuccessfulInvitationsAlert);
- },
- beforeDestroy() {
- eventHub.$off('showSuccessfulInvitationsAlert', this.handleShowSuccessfulInvitationsAlert);
- },
- methods: {
- getCookieForInviteMembers() {
- const value = parseBoolean(getCookie(INVITE_MODAL_OPEN_COOKIE));
-
- removeCookie(INVITE_MODAL_OPEN_COOKIE);
-
- return value;
- },
- openInviteMembersModal(mode) {
- eventHub.$emit('openModal', { mode, source: 'learn-gitlab' });
- },
- handleShowSuccessfulInvitationsAlert() {
- this.showSuccessfulInvitationsAlert = true;
- this.markActionAsCompleted('userAdded');
- },
- actionsFor(section) {
- const actions = Object.fromEntries(
- Object.entries(this.actionsData).filter(
- ([action]) => ACTION_LABELS[action].section === section,
- ),
- );
- return actions;
- },
- svgFor(section) {
- return this.sections[section].svg;
- },
- markActionAsCompleted(completedAction) {
- Object.keys(this.actionsData).forEach((action) => {
- if (action === completedAction) {
- this.actionsData[action].completed = true;
- this.modifySidebarPercentage();
- }
- });
- },
- modifySidebarPercentage() {
- const el = document.querySelector('.sidebar-top-level-items .active .count');
- el.textContent = `${this.progressPercentage}%`;
- },
- },
-};
-</script>
-<template>
- <div>
- <gl-alert
- v-if="showSuccessfulInvitationsAlert"
- class="gl-mt-5"
- @dismiss="showSuccessfulInvitationsAlert = false"
- >
- <gl-sprintf :message="$options.i18n.successfulInvitations">
- <template #projectName>
- <strong>{{ project.name }}</strong>
- </template>
- </gl-sprintf>
- </gl-alert>
- <div class="row">
- <div class="gl-mb-7 gl-ml-5">
- <h1 class="gl-font-size-h1">{{ $options.i18n.title }}</h1>
- <p class="gl-text-gray-700 gl-mb-0">{{ $options.i18n.description }}</p>
- </div>
- </div>
- <div class="gl-mb-3">
- <p class="gl-text-gray-500 gl-mb-2" data-testid="completion-percentage">
- <gl-sprintf :message="$options.i18n.percentageCompleted">
- <template #percentage>{{ progressPercentage }}</template>
- <template #percentSymbol>%</template>
- </gl-sprintf>
- </p>
- <gl-progress-bar :value="progressValue" :max="maxValue" />
- </div>
- <div class="row">
- <div
- v-for="section in $options.actionSections"
- :key="section"
- class="gl-mt-5 col-sm-12 col-mb-6 col-lg-4"
- >
- <learn-gitlab-section-card
- :section="section"
- :svg="svgFor(section)"
- :actions="actionsFor(section)"
- />
- </div>
- </div>
- </div>
-</template>