X-Git-Url: http://git.roojs.org/?p=gitlive;a=blobdiff_plain;f=GitLogParser.js;h=8c13ff40051b4ab5ab82552d0d07a58b56aaf8ad;hp=ae106adbcc09c27dc5433a97d169b035641f64ec;hb=refs%2Fheads%2Fwip_alan_T5723_make_ticket_creation_faster;hpb=769491d82ccb42e35088f6aaa2198d0465846bc8 diff --git a/GitLogParser.js b/GitLogParser.js index ae106adb..8c13ff40 100644 --- a/GitLogParser.js +++ b/GitLogParser.js @@ -62,8 +62,7 @@ GitLogParser = { // shours should be: // hour : [ ] - var totals = {}; - + for (var i = 0; i < lines.length; i++) { var line = lines[i]; var hour = line.start.format('H'); @@ -83,12 +82,23 @@ GitLogParser = { hours[hour][project].total += line.span; hours[hour][project].items.push(line); + hours[-1] = (typeof(hours[-1]) == 'undefined') ? {} : hours[-1]; + hours[-1][project] = (typeof(hours[-1][project]) == 'undefined') ? + { total : 0, items : {} } + : hours[-1][project]; + + hours[-1][project].total += line.span; + hours[-1][project].items[line.desc] = (typeof(hours[-1][project].items[line.desc]) == 'undefined' ? + 0 : hours[-1][project].items[line.desc]) + line.span; + shours[hour] = (typeof(shours[hour]) == 'undefined') ? {} : shours[hour]; shours[hour][line.desc] = (typeof(shours[hour][line.desc] ) == 'undefined') ? 0 : shours[hour][line.desc] ; shours[hour][line.desc] += line.span; + + } - this.shours = shours; + this.shours = shours; return hours; }, @@ -136,7 +146,8 @@ GitLogParser = { for(var proj in this.regexes) { for(var r in this.regexes[proj]) { - if (ret.line.match(r)) { + if (ret.line.match(this.regexes[proj][r])) { + //print("Match " + proj + " on " + r + ret.line + ) ret.project = proj; break; } @@ -171,16 +182,46 @@ GitLogParser = { }, regexes : { - 'HPA' : [ /web.hpasite/, ], - 'MediaOut' : [ /app\.WorkerBee/, /web.MediaOut/, - /media-outreach/ , /Press Release Image Portal/, /Media Outreach Feed/ , /PressRelease/], + 'HPA' : [ /web.hpasite/, /Roo Application Builder - Site/, /HP Intranet/, /Hpasite/ ], + 'MediaOut' : [ /app\.WorkerBee/, /web\.MediaOut/, /workerbee/, + /media-outreach/ , /Press Release Image Portal/, /Media Outreach Feed/ , /PressRelease/, + /Clipping Portal/, /Media OutReach/, + /Auto Searching/ , // These are the excel files they send over.. + /sitemap\.xml/, + /Builder - Clipping/ + ], 'Habito' : [ /Interspire/ ], - 'Hebe' :[ /web.hhyc_membership_system/ ] - + 'Hebe' :[ /web.hhyc_membership_system/ ,/Builder - Hebe/, /Hebe Haven Membership Managment/], + 'RIS' : [ /Project web.Ris/ , /RIS HK/ , /Hydra/, /hydrajobs/ ], + // for who thoug... + 'Mailfort' : [ /web.FlexySpam/ ], + 'Emily' : [ /greengarden/ ,/Inventory \| Warehouse/, /Emily/ ], + 'GPUK' : [/gp-wordpress/, /Greenpeace UK/], + 'COBA' : [/Veridate/, /web\.coba/, /COBA/ ,/Pipeline - DS view/, /Coba/, /Pman.BAdmin/ , /SoapUI/ ], + 'Regulation Asia' : [/Regulation Asia/, /comocracy/], + 'Unknown Project' : [ /PAC/ , /Guake/ , /WhatsApp/ ,/Mozilla Thunderbird/], + 'Admin Work' : [ /roojs.com\/admin/, /RooJSolutions Management Portal/ ] + + }, + match_project : function(line) { + for(var proj in this.regexes) { + for(var r in this.regexes[proj]) { + if (line.match(this.regexes[proj][r])) { + //print("Match " + proj + " on " + r + ret.line + ) + return proj; + + } + } + + } + return "Unknown"; + }, + + '/usr/bin/perl' : function(ret) { if (ret.title.match(/^PAC/)) { ret.project = 'Unknown'; @@ -224,7 +265,8 @@ if (typeof(Seed.argv[2]) == 'undefined') { } var res = GitLogParser.parse( Seed.argv[2][0] == '/' ? Seed.argv[2] : xDate.Date.parseDate(Seed.argv[2], 'Y-m-d')); -var totals = { work : 0 , idle: 0, shortidle : 0} +var totals = { work : 0 , idle: 0, shortidle : 0}; +var unknown = []; for (var h in res) { for (var p in res[h]) { if (p == 'LONGIDLE') { @@ -247,12 +289,27 @@ for (var h in res) { //print(h + ' ' + Math.floor(res[h][p].total/60000) +'m ' + p ); totals.work += Math.floor(res[h][p].total/60000) ; - for (var k in res[h][p].items) { - - //print( ' ' + Math.floor(res[h][p].items[k].span/60000) +'m ' + res[h][p].items[k].line ); - - } + + if (h == -1) { + + print( "\n" + p + ':' + Math.floor(res[h][p].total/60000) + 'm'); + + if (p != 'Unknown') { + for (var k in res[h][p].items) { + + print( ' ' + Math.floor(res[h][p].items[k]/60000) +'m ' + k ); + + } + } else { + + for (var k in res[h][p].items) { + unknown.push({ desc : k , tot : (res[h][p].items[k]/60000).toFixed(2)*1 }) ; + + + } + } + } } @@ -277,18 +334,16 @@ for (var h in GitLogParser.shours) { hsum.sort(function(a,b) { if (a.tot == b.tot) { return 0; } return a.tot < b.tot ? 1 : -1 }); print("\n\n" + h+': Total (' + htot +')'); hsum.forEach(function(r) { - print (" " + r.tot + " : " + r.desc); + var pr = r.desc.match(/IDLE/) ? '' : (GitLogParser.match_project(r.desc) == "Unknown" ? '??? - ' : ''); + + print (" " + r.tot + " : " + pr + r.desc); }); } -print("\n\n" + h+': Totals (' + htot +')'); + -var hsum = []; -for (var desc in totals) { - hsum.push({ desc : desc, tot : totals[desc] }); -} -hsum.sort(function(a,b) { if (a.tot == b.tot) { return 0; } return a.tot < b.tot ? 1 : -1 }); -print("\n\nDay Total"); -hsum.forEach(function(r) { +unknown.sort(function(a,b) { if (a.tot == b.tot) { return 0; } return a.tot < b.tot ? 1 : -1 }); +print("\n\nUnclassified"); +unknown.forEach(function(r) { print (" " + (r.tot.toFixed(2)*1) + " : " + r.desc); });