Merge branch 'add-additional-checks-to-ca-data' into 'master'
Small improvements for Cycle Analytics See merge request !9126
This commit is contained in:
commit
b7c5ca499d
14 changed files with 167 additions and 29 deletions
|
@ -97,7 +97,7 @@ $(() => {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.isLoadingStage = true;
|
this.isLoadingStage = true;
|
||||||
cycleAnalyticsStore.setStageEvents([]);
|
cycleAnalyticsStore.setStageEvents([], stage);
|
||||||
cycleAnalyticsStore.setActiveStage(stage);
|
cycleAnalyticsStore.setActiveStage(stage);
|
||||||
|
|
||||||
cycleAnalyticsService
|
cycleAnalyticsService
|
||||||
|
@ -107,7 +107,7 @@ $(() => {
|
||||||
})
|
})
|
||||||
.done((response) => {
|
.done((response) => {
|
||||||
this.isEmptyStage = !response.events.length;
|
this.isEmptyStage = !response.events.length;
|
||||||
cycleAnalyticsStore.setStageEvents(response.events);
|
cycleAnalyticsStore.setStageEvents(response.events, stage);
|
||||||
})
|
})
|
||||||
.error(() => {
|
.error(() => {
|
||||||
this.isEmptyStage = true;
|
this.isEmptyStage = true;
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
/* eslint-disable no-param-reassign */
|
/* eslint-disable no-param-reassign */
|
||||||
|
|
||||||
|
require('../lib/utils/text_utility');
|
||||||
|
const DEFAULT_EVENT_OBJECTS = require('./default_event_objects');
|
||||||
|
|
||||||
((global) => {
|
((global) => {
|
||||||
global.cycleAnalytics = global.cycleAnalytics || {};
|
global.cycleAnalytics = global.cycleAnalytics || {};
|
||||||
|
|
||||||
|
@ -34,11 +38,12 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
newData.stages.forEach((item) => {
|
newData.stages.forEach((item) => {
|
||||||
const stageName = item.title.toLowerCase();
|
const stageSlug = gl.text.dasherize(item.title.toLowerCase());
|
||||||
item.active = false;
|
item.active = false;
|
||||||
item.isUserAllowed = data.permissions[stageName];
|
item.isUserAllowed = data.permissions[stageSlug];
|
||||||
item.emptyStageText = EMPTY_STAGE_TEXTS[stageName];
|
item.emptyStageText = EMPTY_STAGE_TEXTS[stageSlug];
|
||||||
item.component = `stage-${stageName}-component`;
|
item.component = `stage-${stageSlug}-component`;
|
||||||
|
item.slug = stageSlug;
|
||||||
});
|
});
|
||||||
newData.analytics = data;
|
newData.analytics = data;
|
||||||
return newData;
|
return newData;
|
||||||
|
@ -58,31 +63,33 @@
|
||||||
this.deactivateAllStages();
|
this.deactivateAllStages();
|
||||||
stage.active = true;
|
stage.active = true;
|
||||||
},
|
},
|
||||||
setStageEvents(events) {
|
setStageEvents(events, stage) {
|
||||||
this.state.events = this.decorateEvents(events);
|
this.state.events = this.decorateEvents(events, stage);
|
||||||
},
|
},
|
||||||
decorateEvents(events) {
|
decorateEvents(events, stage) {
|
||||||
const newEvents = [];
|
const newEvents = [];
|
||||||
|
|
||||||
events.forEach((item) => {
|
events.forEach((item) => {
|
||||||
if (!item) return;
|
if (!item) return;
|
||||||
|
|
||||||
item.totalTime = item.total_time;
|
const eventItem = Object.assign({}, DEFAULT_EVENT_OBJECTS[stage.slug], item);
|
||||||
item.author.webUrl = item.author.web_url;
|
|
||||||
item.author.avatarUrl = item.author.avatar_url;
|
|
||||||
|
|
||||||
if (item.created_at) item.createdAt = item.created_at;
|
eventItem.totalTime = eventItem.total_time;
|
||||||
if (item.short_sha) item.shortSha = item.short_sha;
|
eventItem.author.webUrl = eventItem.author.web_url;
|
||||||
if (item.commit_url) item.commitUrl = item.commit_url;
|
eventItem.author.avatarUrl = eventItem.author.avatar_url;
|
||||||
|
|
||||||
delete item.author.web_url;
|
if (eventItem.created_at) eventItem.createdAt = eventItem.created_at;
|
||||||
delete item.author.avatar_url;
|
if (eventItem.short_sha) eventItem.shortSha = eventItem.short_sha;
|
||||||
delete item.total_time;
|
if (eventItem.commit_url) eventItem.commitUrl = eventItem.commit_url;
|
||||||
delete item.created_at;
|
|
||||||
delete item.short_sha;
|
|
||||||
delete item.commit_url;
|
|
||||||
|
|
||||||
newEvents.push(item);
|
delete eventItem.author.web_url;
|
||||||
|
delete eventItem.author.avatar_url;
|
||||||
|
delete eventItem.total_time;
|
||||||
|
delete eventItem.created_at;
|
||||||
|
delete eventItem.short_sha;
|
||||||
|
delete eventItem.commit_url;
|
||||||
|
|
||||||
|
newEvents.push(eventItem);
|
||||||
});
|
});
|
||||||
|
|
||||||
return newEvents;
|
return newEvents;
|
||||||
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
module.exports = {
|
||||||
|
issue: {
|
||||||
|
created_at: '',
|
||||||
|
url: '',
|
||||||
|
iid: '',
|
||||||
|
title: '',
|
||||||
|
total_time: {},
|
||||||
|
author: {
|
||||||
|
avatar_url: '',
|
||||||
|
id: '',
|
||||||
|
name: '',
|
||||||
|
web_url: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
plan: {
|
||||||
|
title: '',
|
||||||
|
commit_url: '',
|
||||||
|
short_sha: '',
|
||||||
|
total_time: {},
|
||||||
|
author: {
|
||||||
|
name: '',
|
||||||
|
id: '',
|
||||||
|
avatar_url: '',
|
||||||
|
web_url: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
code: {
|
||||||
|
title: '',
|
||||||
|
iid: '',
|
||||||
|
created_at: '',
|
||||||
|
url: '',
|
||||||
|
total_time: {},
|
||||||
|
author: {
|
||||||
|
name: '',
|
||||||
|
id: '',
|
||||||
|
avatar_url: '',
|
||||||
|
web_url: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
test: {
|
||||||
|
name: '',
|
||||||
|
id: '',
|
||||||
|
date: '',
|
||||||
|
url: '',
|
||||||
|
short_sha: '',
|
||||||
|
commit_url: '',
|
||||||
|
total_time: {},
|
||||||
|
branch: {
|
||||||
|
name: '',
|
||||||
|
url: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
review: {
|
||||||
|
title: '',
|
||||||
|
iid: '',
|
||||||
|
created_at: '',
|
||||||
|
url: '',
|
||||||
|
state: '',
|
||||||
|
total_time: {},
|
||||||
|
author: {
|
||||||
|
name: '',
|
||||||
|
id: '',
|
||||||
|
avatar_url: '',
|
||||||
|
web_url: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
staging: {
|
||||||
|
id: '',
|
||||||
|
short_sha: '',
|
||||||
|
date: '',
|
||||||
|
url: '',
|
||||||
|
commit_url: '',
|
||||||
|
total_time: {},
|
||||||
|
author: {
|
||||||
|
name: '',
|
||||||
|
id: '',
|
||||||
|
avatar_url: '',
|
||||||
|
web_url: '',
|
||||||
|
},
|
||||||
|
branch: {
|
||||||
|
name: '',
|
||||||
|
url: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
production: {
|
||||||
|
title: '',
|
||||||
|
created_at: '',
|
||||||
|
url: '',
|
||||||
|
iid: '',
|
||||||
|
total_time: {},
|
||||||
|
author: {
|
||||||
|
name: '',
|
||||||
|
id: '',
|
||||||
|
avatar_url: '',
|
||||||
|
web_url: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
|
@ -1,5 +1,7 @@
|
||||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-param-reassign, no-cond-assign, quotes, one-var, one-var-declaration-per-line, operator-assignment, no-else-return, prefer-template, prefer-arrow-callback, no-empty, max-len, consistent-return, no-unused-vars, no-return-assign, max-len */
|
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-param-reassign, no-cond-assign, quotes, one-var, one-var-declaration-per-line, operator-assignment, no-else-return, prefer-template, prefer-arrow-callback, no-empty, max-len, consistent-return, no-unused-vars, no-return-assign, max-len */
|
||||||
|
|
||||||
|
require('vendor/latinise');
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
(function(w) {
|
(function(w) {
|
||||||
var base;
|
var base;
|
||||||
|
@ -164,8 +166,14 @@
|
||||||
gl.text.pluralize = function(str, count) {
|
gl.text.pluralize = function(str, count) {
|
||||||
return str + (count > 1 || count === 0 ? 's' : '');
|
return str + (count > 1 || count === 0 ? 's' : '');
|
||||||
};
|
};
|
||||||
return gl.text.truncate = function(string, maxLength) {
|
gl.text.truncate = function(string, maxLength) {
|
||||||
return string.substr(0, (maxLength - 3)) + '...';
|
return string.substr(0, (maxLength - 3)) + '...';
|
||||||
};
|
};
|
||||||
|
gl.text.dasherize = function(str) {
|
||||||
|
return str.replace(/[_\s]+/g, '-');
|
||||||
|
};
|
||||||
|
gl.text.slugify = function(str) {
|
||||||
|
return str.trim().toLowerCase().latinise();
|
||||||
|
};
|
||||||
})(window);
|
})(window);
|
||||||
}).call(this);
|
}).call(this);
|
||||||
|
|
|
@ -1,14 +1,10 @@
|
||||||
/* eslint-disable no-param-reassign */
|
/* eslint-disable no-param-reassign */
|
||||||
/* global Breakpoints */
|
/* global Breakpoints */
|
||||||
|
|
||||||
require('vendor/latinise');
|
|
||||||
require('./breakpoints');
|
require('./breakpoints');
|
||||||
require('vendor/jquery.nicescroll');
|
require('vendor/jquery.nicescroll');
|
||||||
|
|
||||||
((global) => {
|
((global) => {
|
||||||
const dasherize = str => str.replace(/[_\s]+/g, '-');
|
|
||||||
const slugify = str => dasherize(str.trim().toLowerCase().latinise());
|
|
||||||
|
|
||||||
class Wikis {
|
class Wikis {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.bp = Breakpoints.get();
|
this.bp = Breakpoints.get();
|
||||||
|
@ -34,7 +30,7 @@ require('vendor/jquery.nicescroll');
|
||||||
if (!this.newWikiForm) return;
|
if (!this.newWikiForm) return;
|
||||||
|
|
||||||
const slugInput = this.newWikiForm.querySelector('#new_wiki_path');
|
const slugInput = this.newWikiForm.querySelector('#new_wiki_path');
|
||||||
const slug = slugify(slugInput.value);
|
const slug = gl.text.slugify(slugInput.value);
|
||||||
|
|
||||||
if (slug.length > 0) {
|
if (slug.length > 0) {
|
||||||
const wikisPath = slugInput.getAttribute('data-wikis-path');
|
const wikisPath = slugInput.getAttribute('data-wikis-path');
|
||||||
|
|
|
@ -2,6 +2,7 @@ class AnalyticsStageEntity < Grape::Entity
|
||||||
include EntityDateHelper
|
include EntityDateHelper
|
||||||
|
|
||||||
expose :title
|
expose :title
|
||||||
|
expose :legend
|
||||||
expose :description
|
expose :description
|
||||||
|
|
||||||
expose :median, as: :value do |stage|
|
expose :median, as: :value do |stage|
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
Last 90 days
|
Last 90 days
|
||||||
.stage-panel-container
|
.stage-panel-container
|
||||||
.panel.panel-default.stage-panel
|
.panel.panel-default.stage-panel
|
||||||
.panel-heading
|
.panel-heading
|
||||||
%nav.col-headers
|
%nav.col-headers
|
||||||
%ul
|
%ul
|
||||||
%li.stage-header
|
%li.stage-header
|
||||||
|
|
|
@ -13,6 +13,10 @@ module Gitlab
|
||||||
:code
|
:code
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def legend
|
||||||
|
"Related Merge Requests"
|
||||||
|
end
|
||||||
|
|
||||||
def description
|
def description
|
||||||
"Time until first merge request"
|
"Time until first merge request"
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,6 +14,10 @@ module Gitlab
|
||||||
:issue
|
:issue
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def legend
|
||||||
|
"Related Issues"
|
||||||
|
end
|
||||||
|
|
||||||
def description
|
def description
|
||||||
"Time before an issue gets scheduled"
|
"Time before an issue gets scheduled"
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,6 +14,10 @@ module Gitlab
|
||||||
:plan
|
:plan
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def legend
|
||||||
|
"Related Commits"
|
||||||
|
end
|
||||||
|
|
||||||
def description
|
def description
|
||||||
"Time before an issue starts implementation"
|
"Time before an issue starts implementation"
|
||||||
end
|
end
|
||||||
|
|
|
@ -15,6 +15,10 @@ module Gitlab
|
||||||
:production
|
:production
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def legend
|
||||||
|
"Related Issues"
|
||||||
|
end
|
||||||
|
|
||||||
def description
|
def description
|
||||||
"From issue creation until deploy to production"
|
"From issue creation until deploy to production"
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,6 +13,10 @@ module Gitlab
|
||||||
:review
|
:review
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def legend
|
||||||
|
"Relative Merged Requests"
|
||||||
|
end
|
||||||
|
|
||||||
def description
|
def description
|
||||||
"Time between merge request creation and merge/close"
|
"Time between merge request creation and merge/close"
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,6 +14,10 @@ module Gitlab
|
||||||
:staging
|
:staging
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def legend
|
||||||
|
"Relative Deployed Builds"
|
||||||
|
end
|
||||||
|
|
||||||
def description
|
def description
|
||||||
"From merge request merge until deploy to production"
|
"From merge request merge until deploy to production"
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,6 +13,10 @@ module Gitlab
|
||||||
:test
|
:test
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def legend
|
||||||
|
"Relative Builds Trigger by Commits"
|
||||||
|
end
|
||||||
|
|
||||||
def description
|
def description
|
||||||
"Total test time for all commits/merges"
|
"Total test time for all commits/merges"
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue