mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-25 18:38:55 +00:00
239 lines
9.9 KiB
JavaScript
239 lines
9.9 KiB
JavaScript
(function ($) {
|
|
$(document).ready(function() {
|
|
|
|
App = Ember.Application.create({rootElement: "#content"});
|
|
|
|
if (Ember.Debug && typeof Ember.Debug.registerDeprecationHandler === 'function') {
|
|
Ember.Debug.registerDeprecationHandler(function(message, options, next) {
|
|
if (options && options.id && options.id == 'ember-routing.router-resource') {
|
|
return;
|
|
}
|
|
next(message, options);
|
|
});
|
|
}
|
|
|
|
App.Router.map(function() {
|
|
this.resource('jira', function(){
|
|
this.resource('user', {path: '/:user'});
|
|
});
|
|
});
|
|
|
|
App.IndexRoute = Ember.Route.extend({
|
|
redirect: function() {
|
|
this.transitionTo('user', "jweiner");
|
|
}
|
|
});
|
|
|
|
var genBreadcrumbs = function(urn) {
|
|
var breadcrumbs = []
|
|
var b = urn.split('/')
|
|
b.shift();
|
|
for(var i = 0; i < b.length; i++) {
|
|
var updatedUrn = "/idpc#/jira/" + b[i]
|
|
if(i === 0)
|
|
{
|
|
|
|
breadcrumbs.push({title: b[i], urn: updatedUrn})
|
|
}
|
|
else
|
|
{
|
|
breadcrumbs.push({title: b[i], urn: updatedUrn})
|
|
}
|
|
}
|
|
return breadcrumbs
|
|
}
|
|
|
|
var setActiveTab = function(){
|
|
$('#jiratabs a:first').tab("show");
|
|
}
|
|
|
|
var getMemberHeadlessTickets = function(members, tickets)
|
|
{
|
|
if (!members)
|
|
{
|
|
return members;
|
|
}
|
|
var memberTotal = 0;
|
|
var memberOpened = 0;
|
|
var memberRollupTotal = 0;
|
|
var memberRollupOpened = 0;
|
|
|
|
for(var i = 0; i < members.length; i++)
|
|
{
|
|
memberTotal = 0;
|
|
memberOpened = 0;
|
|
if (tickets)
|
|
{
|
|
for(var j = 0; j < tickets.length; j++)
|
|
{
|
|
if (tickets[j].currentAssigneeOrgHierarchy &&
|
|
(tickets[j].currentAssigneeOrgHierarchy.indexOf(members[i].userName) != -1))
|
|
{
|
|
memberTotal += 1;
|
|
if (tickets[j].ticketStatus.toLowerCase() === 'open')
|
|
{
|
|
memberOpened += 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
members[i].totalHeadlessTickets = memberTotal;
|
|
members[i].openedHeadlessTickets = memberOpened;
|
|
members[i].closedHeadlessTickets = memberTotal - memberOpened;
|
|
if (members[i].totalHeadlessTickets > 0)
|
|
{
|
|
members[i].headlessTicketsCompletion =
|
|
Math.round( ( (memberTotal - memberOpened) / memberTotal ) * 100 );
|
|
}
|
|
else
|
|
{
|
|
members[i].headlessTicketsCompletion = 100;
|
|
}
|
|
members[i].url = "/idpc#/jira/" + members[i].userName;
|
|
memberRollupOpened += memberOpened;
|
|
memberRollupTotal += memberTotal;
|
|
}
|
|
if (jiraController)
|
|
{
|
|
var currentUser = jiraController.get('selectedUser');
|
|
var totalHeadlessTickets = memberRollupTotal;
|
|
var openedHeadlessTickets = memberRollupOpened;
|
|
var headlessTicketsCompletion;
|
|
var closedHeadlessTickets =
|
|
totalHeadlessTickets - openedHeadlessTickets;
|
|
if (totalHeadlessTickets > 0)
|
|
{
|
|
headlessTicketsCompletion =
|
|
Math.round( ( (
|
|
totalHeadlessTickets - openedHeadlessTickets) / totalHeadlessTickets ) * 100 );
|
|
}
|
|
else
|
|
{
|
|
headlessTicketsCompletion = 100;
|
|
}
|
|
Ember.set(currentUser, 'totalHeadlessTickets', totalHeadlessTickets);
|
|
Ember.set(currentUser, 'openedHeadlessTickets', openedHeadlessTickets);
|
|
Ember.set(currentUser, 'closedHeadlessTickets', closedHeadlessTickets);
|
|
Ember.set(currentUser, 'headlessTicketsCompletion', headlessTicketsCompletion);
|
|
}
|
|
return members;
|
|
}
|
|
var jiraController = null;
|
|
var hierarchy = '/jweiner';
|
|
var breadcrumbs;
|
|
var sortOptions = ['Assignee First', 'Jira Status First', 'Directory Path First'];
|
|
var selectedUser = {
|
|
'userId': 'jweiner',
|
|
'displayName': 'jweiner',
|
|
'headlessTicketsCompletion': 0,
|
|
'totalHeadlessTickets': 0,
|
|
'openedHeadlessTickets': 0,
|
|
'closedHeadlessTickets': 0,
|
|
'userCompletion': 0,
|
|
'userTotalTickets': 0,
|
|
'userOpenTickets': 0,
|
|
'userClosedTickets': 0,
|
|
'url': '/idpc#/jira/jweiner'};
|
|
setTimeout(setActiveTab, 500);
|
|
|
|
App.JiraRoute = Ember.Route.extend({
|
|
setupController: function(controller) {
|
|
jiraController = controller;
|
|
breadcrumbs = genBreadcrumbs(hierarchy);
|
|
jiraController.set('breadcrumbs', breadcrumbs);
|
|
jiraController.set('selectedUser', selectedUser);
|
|
jiraController.set('sortOptions', sortOptions);
|
|
}
|
|
});
|
|
|
|
App.UserRoute = Ember.Route.extend({
|
|
setupController: function(controller, params) {
|
|
if (params && params.user)
|
|
{
|
|
jiraController.set('ticketsInProgress', true);
|
|
var ticketsUrl = 'api/v1/jira/tickets/' + params.user;
|
|
var headlessTickets;
|
|
var userTickets;
|
|
$.get(ticketsUrl, function(data) {
|
|
jiraController.set('ticketsInProgress', false);
|
|
if (data && data.status == "ok") {
|
|
jiraController.set('headlessTickets', data.headlessTickets);
|
|
if (data.headlessTickets && data.headlessTickets.length > 0)
|
|
{
|
|
jiraController.set('headlessNoTickets', false);
|
|
headlessTickets = data.headlessTickets;
|
|
jiraController.set('headlessTickets', data.headlessTickets);
|
|
}
|
|
else
|
|
{
|
|
jiraController.set('headlessNoTickets', true);
|
|
}
|
|
jiraController.set('usersTickets', data.userTickets);
|
|
if (data.userTickets && data.userTickets.length > 0)
|
|
{
|
|
jiraController.set('userNoTickets', false);
|
|
userTickets = data.userTickets;
|
|
jiraController.set('userTickets', data.userTickets);
|
|
}
|
|
else
|
|
{
|
|
jiraController.set('userNoTickets', true);
|
|
}
|
|
jiraController.set('membersInProgress', true);
|
|
var membersUrl = 'api/v1/jira/members/' + params.user;
|
|
$.get(membersUrl, function(data) {
|
|
jiraController.set('membersInProgress', false);
|
|
if (data && data.status == "ok" && data.currentUser && data.currentUser[0]) {
|
|
var currentUser = jiraController.get('selectedUser');
|
|
Ember.set(currentUser, 'displayName', data.currentUser[0].displayName);
|
|
var org = data.currentUser[0].orgHierarchy;
|
|
var breadcrumbs;
|
|
if (org)
|
|
{
|
|
breadcrumbs = genBreadcrumbs(org);
|
|
}
|
|
else
|
|
{
|
|
var hierarchy = '/jweiner';
|
|
breadcrumbs = genBreadcrumbs(hierarchy);
|
|
}
|
|
jiraController.set('breadcrumbs', breadcrumbs);
|
|
if (breadcrumbs)
|
|
{
|
|
Ember.set(currentUser, 'url', breadcrumbs[breadcrumbs.length-1].urn);
|
|
}
|
|
|
|
if (data.members && data.members.length > 0)
|
|
{
|
|
jiraController.set('userNoMembers', false);
|
|
var members = getMemberHeadlessTickets(data.members, headlessTickets);
|
|
jiraController.set('members', members);
|
|
}
|
|
else
|
|
{
|
|
jiraController.set('userNoMembers', true);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
App.JiraController = Ember.Controller.extend({
|
|
actions: {
|
|
onSelect: function(dataset, data) {
|
|
highlightRow(dataset, data, false);
|
|
if (dataset && (dataset.id != 0))
|
|
{
|
|
updateTimeLine(dataset.id, false);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
})(jQuery)
|