Skip to content
Snippets Groups Projects
Commit b7c5ca49 authored by Alfredo Sumaran's avatar Alfredo Sumaran
Browse files

Merge branch 'add-additional-checks-to-ca-data' into 'master'

Small improvements for Cycle Analytics

See merge request !9126
parents 9745c98b f193ef16
No related branches found
No related tags found
No related merge requests found
Showing
with 167 additions and 29 deletions
Loading
Loading
@@ -97,7 +97,7 @@ $(() => {
}
 
this.isLoadingStage = true;
cycleAnalyticsStore.setStageEvents([]);
cycleAnalyticsStore.setStageEvents([], stage);
cycleAnalyticsStore.setActiveStage(stage);
 
cycleAnalyticsService
Loading
Loading
@@ -107,7 +107,7 @@ $(() => {
})
.done((response) => {
this.isEmptyStage = !response.events.length;
cycleAnalyticsStore.setStageEvents(response.events);
cycleAnalyticsStore.setStageEvents(response.events, stage);
})
.error(() => {
this.isEmptyStage = true;
Loading
Loading
/* eslint-disable no-param-reassign */
require('../lib/utils/text_utility');
const DEFAULT_EVENT_OBJECTS = require('./default_event_objects');
((global) => {
global.cycleAnalytics = global.cycleAnalytics || {};
 
Loading
Loading
@@ -34,11 +38,12 @@
});
 
newData.stages.forEach((item) => {
const stageName = item.title.toLowerCase();
const stageSlug = gl.text.dasherize(item.title.toLowerCase());
item.active = false;
item.isUserAllowed = data.permissions[stageName];
item.emptyStageText = EMPTY_STAGE_TEXTS[stageName];
item.component = `stage-${stageName}-component`;
item.isUserAllowed = data.permissions[stageSlug];
item.emptyStageText = EMPTY_STAGE_TEXTS[stageSlug];
item.component = `stage-${stageSlug}-component`;
item.slug = stageSlug;
});
newData.analytics = data;
return newData;
Loading
Loading
@@ -58,31 +63,33 @@
this.deactivateAllStages();
stage.active = true;
},
setStageEvents(events) {
this.state.events = this.decorateEvents(events);
setStageEvents(events, stage) {
this.state.events = this.decorateEvents(events, stage);
},
decorateEvents(events) {
decorateEvents(events, stage) {
const newEvents = [];
 
events.forEach((item) => {
if (!item) return;
 
item.totalTime = item.total_time;
item.author.webUrl = item.author.web_url;
item.author.avatarUrl = item.author.avatar_url;
const eventItem = Object.assign({}, DEFAULT_EVENT_OBJECTS[stage.slug], item);
eventItem.totalTime = eventItem.total_time;
eventItem.author.webUrl = eventItem.author.web_url;
eventItem.author.avatarUrl = eventItem.author.avatar_url;
 
if (item.created_at) item.createdAt = item.created_at;
if (item.short_sha) item.shortSha = item.short_sha;
if (item.commit_url) item.commitUrl = item.commit_url;
if (eventItem.created_at) eventItem.createdAt = eventItem.created_at;
if (eventItem.short_sha) eventItem.shortSha = eventItem.short_sha;
if (eventItem.commit_url) eventItem.commitUrl = eventItem.commit_url;
 
delete item.author.web_url;
delete item.author.avatar_url;
delete item.total_time;
delete item.created_at;
delete item.short_sha;
delete item.commit_url;
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(item);
newEvents.push(eventItem);
});
 
return newEvents;
Loading
Loading
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: '',
},
},
};
/* 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(w) {
var base;
Loading
Loading
@@ -164,8 +166,14 @@
gl.text.pluralize = function(str, count) {
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)) + '...';
};
gl.text.dasherize = function(str) {
return str.replace(/[_\s]+/g, '-');
};
gl.text.slugify = function(str) {
return str.trim().toLowerCase().latinise();
};
})(window);
}).call(this);
/* eslint-disable no-param-reassign */
/* global Breakpoints */
 
require('vendor/latinise');
require('./breakpoints');
require('vendor/jquery.nicescroll');
 
((global) => {
const dasherize = str => str.replace(/[_\s]+/g, '-');
const slugify = str => dasherize(str.trim().toLowerCase().latinise());
class Wikis {
constructor() {
this.bp = Breakpoints.get();
Loading
Loading
@@ -34,7 +30,7 @@ require('vendor/jquery.nicescroll');
if (!this.newWikiForm) return;
 
const slugInput = this.newWikiForm.querySelector('#new_wiki_path');
const slug = slugify(slugInput.value);
const slug = gl.text.slugify(slugInput.value);
 
if (slug.length > 0) {
const wikisPath = slugInput.getAttribute('data-wikis-path');
Loading
Loading
Loading
Loading
@@ -2,6 +2,7 @@ class AnalyticsStageEntity < Grape::Entity
include EntityDateHelper
 
expose :title
expose :legend
expose :description
 
expose :median, as: :value do |stage|
Loading
Loading
Loading
Loading
@@ -44,7 +44,7 @@
Last 90 days
.stage-panel-container
.panel.panel-default.stage-panel
.panel-heading
.panel-heading
%nav.col-headers
%ul
%li.stage-header
Loading
Loading
Loading
Loading
@@ -13,6 +13,10 @@ module Gitlab
:code
end
 
def legend
"Related Merge Requests"
end
def description
"Time until first merge request"
end
Loading
Loading
Loading
Loading
@@ -14,6 +14,10 @@ module Gitlab
:issue
end
 
def legend
"Related Issues"
end
def description
"Time before an issue gets scheduled"
end
Loading
Loading
Loading
Loading
@@ -14,6 +14,10 @@ module Gitlab
:plan
end
 
def legend
"Related Commits"
end
def description
"Time before an issue starts implementation"
end
Loading
Loading
Loading
Loading
@@ -15,6 +15,10 @@ module Gitlab
:production
end
 
def legend
"Related Issues"
end
def description
"From issue creation until deploy to production"
end
Loading
Loading
Loading
Loading
@@ -13,6 +13,10 @@ module Gitlab
:review
end
 
def legend
"Relative Merged Requests"
end
def description
"Time between merge request creation and merge/close"
end
Loading
Loading
Loading
Loading
@@ -14,6 +14,10 @@ module Gitlab
:staging
end
 
def legend
"Relative Deployed Builds"
end
def description
"From merge request merge until deploy to production"
end
Loading
Loading
Loading
Loading
@@ -13,6 +13,10 @@ module Gitlab
:test
end
 
def legend
"Relative Builds Trigger by Commits"
end
def description
"Total test time for all commits/merges"
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment