Merge branch '34371-cycle-analitcs-global' into 'master'
Removes cycle analytics service and store from global namespace See merge request gitlab-org/gitlab-ce!14463
This commit is contained in:
commit
8b1a3d40e7
4 changed files with 54 additions and 59 deletions
|
@ -12,34 +12,38 @@ import './components/stage_review_component';
|
|||
import './components/stage_staging_component';
|
||||
import './components/stage_test_component';
|
||||
import './components/total_time_component';
|
||||
import './cycle_analytics_service';
|
||||
import './cycle_analytics_store';
|
||||
import CycleAnalyticsService from './cycle_analytics_service';
|
||||
import CycleAnalyticsStore from './cycle_analytics_store';
|
||||
|
||||
Vue.use(Translate);
|
||||
|
||||
$(() => {
|
||||
const OVERVIEW_DIALOG_COOKIE = 'cycle_analytics_help_dismissed';
|
||||
const cycleAnalyticsEl = document.querySelector('#cycle-analytics');
|
||||
const cycleAnalyticsStore = gl.cycleAnalytics.CycleAnalyticsStore;
|
||||
const cycleAnalyticsService = new gl.cycleAnalytics.CycleAnalyticsService({
|
||||
requestPath: cycleAnalyticsEl.dataset.requestPath,
|
||||
});
|
||||
|
||||
gl.cycleAnalyticsApp = new Vue({
|
||||
el: '#cycle-analytics',
|
||||
name: 'CycleAnalytics',
|
||||
data: {
|
||||
state: cycleAnalyticsStore.state,
|
||||
isLoading: false,
|
||||
isLoadingStage: false,
|
||||
isEmptyStage: false,
|
||||
hasError: false,
|
||||
startDate: 30,
|
||||
isOverviewDialogDismissed: Cookies.get(OVERVIEW_DIALOG_COOKIE),
|
||||
data() {
|
||||
const cycleAnalyticsEl = document.querySelector('#cycle-analytics');
|
||||
const cycleAnalyticsService = new CycleAnalyticsService({
|
||||
requestPath: cycleAnalyticsEl.dataset.requestPath,
|
||||
});
|
||||
|
||||
return {
|
||||
store: CycleAnalyticsStore,
|
||||
state: CycleAnalyticsStore.state,
|
||||
isLoading: false,
|
||||
isLoadingStage: false,
|
||||
isEmptyStage: false,
|
||||
hasError: false,
|
||||
startDate: 30,
|
||||
isOverviewDialogDismissed: Cookies.get(OVERVIEW_DIALOG_COOKIE),
|
||||
service: cycleAnalyticsService,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
currentStage() {
|
||||
return cycleAnalyticsStore.currentActiveStage();
|
||||
return this.store.currentActiveStage();
|
||||
},
|
||||
},
|
||||
components: {
|
||||
|
@ -56,7 +60,7 @@ $(() => {
|
|||
},
|
||||
methods: {
|
||||
handleError() {
|
||||
cycleAnalyticsStore.setErrorState(true);
|
||||
this.store.setErrorState(true);
|
||||
return new Flash('There was an error while fetching cycle analytics data.');
|
||||
},
|
||||
initDropdown() {
|
||||
|
@ -77,17 +81,17 @@ $(() => {
|
|||
|
||||
this.isLoading = true;
|
||||
|
||||
cycleAnalyticsService
|
||||
this.service
|
||||
.fetchCycleAnalyticsData(fetchOptions)
|
||||
.done((response) => {
|
||||
cycleAnalyticsStore.setCycleAnalyticsData(response);
|
||||
.then(resp => resp.json())
|
||||
.then((response) => {
|
||||
this.store.setCycleAnalyticsData(response);
|
||||
this.selectDefaultStage();
|
||||
this.initDropdown();
|
||||
this.isLoading = false;
|
||||
})
|
||||
.error(() => {
|
||||
.catch(() => {
|
||||
this.handleError();
|
||||
})
|
||||
.always(() => {
|
||||
this.isLoading = false;
|
||||
});
|
||||
},
|
||||
|
@ -100,27 +104,27 @@ $(() => {
|
|||
if (this.currentStage === stage) return;
|
||||
|
||||
if (!stage.isUserAllowed) {
|
||||
cycleAnalyticsStore.setActiveStage(stage);
|
||||
this.store.setActiveStage(stage);
|
||||
return;
|
||||
}
|
||||
|
||||
this.isLoadingStage = true;
|
||||
cycleAnalyticsStore.setStageEvents([], stage);
|
||||
cycleAnalyticsStore.setActiveStage(stage);
|
||||
this.store.setStageEvents([], stage);
|
||||
this.store.setActiveStage(stage);
|
||||
|
||||
cycleAnalyticsService
|
||||
this.service
|
||||
.fetchStageData({
|
||||
stage,
|
||||
startDate: this.startDate,
|
||||
})
|
||||
.done((response) => {
|
||||
.then(resp => resp.json())
|
||||
.then((response) => {
|
||||
this.isEmptyStage = !response.events.length;
|
||||
cycleAnalyticsStore.setStageEvents(response.events, stage);
|
||||
this.store.setStageEvents(response.events, stage);
|
||||
this.isLoadingStage = false;
|
||||
})
|
||||
.error(() => {
|
||||
.catch(() => {
|
||||
this.isEmptyStage = true;
|
||||
})
|
||||
.always(() => {
|
||||
this.isLoadingStage = false;
|
||||
});
|
||||
},
|
||||
|
|
|
@ -1,27 +1,16 @@
|
|||
/* eslint-disable no-param-reassign */
|
||||
import Vue from 'vue';
|
||||
import VueResource from 'vue-resource';
|
||||
|
||||
const global = window.gl || (window.gl = {});
|
||||
global.cycleAnalytics = global.cycleAnalytics || {};
|
||||
Vue.use(VueResource);
|
||||
|
||||
class CycleAnalyticsService {
|
||||
export default class CycleAnalyticsService {
|
||||
constructor(options) {
|
||||
this.requestPath = options.requestPath;
|
||||
this.cycleAnalytics = Vue.resource(this.requestPath);
|
||||
}
|
||||
|
||||
fetchCycleAnalyticsData(options) {
|
||||
options = options || { startDate: 30 };
|
||||
|
||||
return $.ajax({
|
||||
url: this.requestPath,
|
||||
method: 'GET',
|
||||
dataType: 'json',
|
||||
contentType: 'application/json',
|
||||
data: {
|
||||
cycle_analytics: {
|
||||
start_date: options.startDate,
|
||||
},
|
||||
},
|
||||
});
|
||||
fetchCycleAnalyticsData(options = { startDate: 30 }) {
|
||||
return this.cycleAnalytics.get({ cycle_analytics: { start_date: options.startDate } });
|
||||
}
|
||||
|
||||
fetchStageData(options) {
|
||||
|
@ -30,12 +19,12 @@ class CycleAnalyticsService {
|
|||
startDate,
|
||||
} = options;
|
||||
|
||||
return $.get(`${this.requestPath}/events/${stage.name}.json`, {
|
||||
cycle_analytics: {
|
||||
start_date: startDate,
|
||||
return Vue.http.get(`${this.requestPath}/events/${stage.name}.json`, {
|
||||
params: {
|
||||
cycle_analytics: {
|
||||
start_date: startDate,
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
global.cycleAnalytics.CycleAnalyticsService = CycleAnalyticsService;
|
||||
|
|
|
@ -4,9 +4,6 @@ import { __ } from '../locale';
|
|||
import '../lib/utils/text_utility';
|
||||
import DEFAULT_EVENT_OBJECTS from './default_event_objects';
|
||||
|
||||
const global = window.gl || (window.gl = {});
|
||||
global.cycleAnalytics = global.cycleAnalytics || {};
|
||||
|
||||
const EMPTY_STAGE_TEXTS = {
|
||||
issue: __('The issue stage shows the time it takes from creating an issue to assigning the issue to a milestone, or add the issue to a list on your Issue Board. Begin creating issues to see data for this stage.'),
|
||||
plan: __('The planning stage shows the time from the previous step to pushing your first commit. This time will be added automatically once you push your first commit.'),
|
||||
|
@ -17,7 +14,7 @@ const EMPTY_STAGE_TEXTS = {
|
|||
production: __('The production stage shows the total time it takes between creating an issue and deploying the code to production. The data will be automatically added once you have completed the full idea to production cycle.'),
|
||||
};
|
||||
|
||||
global.cycleAnalytics.CycleAnalyticsStore = {
|
||||
export default {
|
||||
state: {
|
||||
summary: '',
|
||||
stats: '',
|
||||
|
|
5
changelogs/unreleased/34371-cycle-analitcs-global.yml
Normal file
5
changelogs/unreleased/34371-cycle-analitcs-global.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Removes cycle analytics service and store from global namespace
|
||||
merge_request:
|
||||
author:
|
||||
type: other
|
Loading…
Reference in a new issue