diff options
Diffstat (limited to 'lib/logger.js')
-rw-r--r-- | lib/logger.js | 131 |
1 files changed, 52 insertions, 79 deletions
diff --git a/lib/logger.js b/lib/logger.js index 659faac..08ef87a 100644 --- a/lib/logger.js +++ b/lib/logger.js @@ -9,61 +9,47 @@ var prompts = require("prompts"); var apiUtils = require("api-utils"); var xrpc = require("xmlrpc"); var myStorage = require("simple-storage"); +var libbz = require("libbugzilla"); -exports.addLogRecord = function addLogRecord(rec) { - if (myStorage.storage.logs[rec.key]) { - myStorage.storage.logs[rec.key].comment += "<br/>\n" + comment; - } else { - myStorage.storage.logs[rec.key] = rec; - } -}; - -exports.generateTimeSheet = function generateTimeSheet() { - ; // FIXME -}; +var EmptyLogsColor = "rgb(0, 255, 0)"; +var FullLogsColor = "rgb(0, 40, 103)"; -exports.clearTimeSheet = function clearTimeSheet() { - ; // FIXME -}; - -exports.importTimeSheet = function importTimeSheet() { - ; /* FIXME - jsonPaths = prompts.promptFileOpenPicker(that.win); - that.log.importOtherStore(jsonPaths, clearLogAElem); - */ -}; - -var Logger = exports.Logger = function Logger(abbsMap) { - this.EmptyLogsColor = rgb(0, 255, 0); - this.FullLogsColor = rgb(0, 40, 103); +var abbsMap = {}; +exports.initialize = function initialize(aMap) { if (!myStorage.storage.logs) { myStorage.storage.logs = {}; } + abbsMap = aMap; +}; - this.abbsMap = abbsMap; +exports.addLogRecord = function addLogRecord(rec) { + if (myStorage.storage.logs[rec.key]) { + myStorage.storage.logs[rec.key].comment += "<br/>\n" + comment; + } else { + myStorage.storage.logs[rec.key] = rec; + } }; -Logger.prototype.size = function size() { +function storeSize() { var size = 0, key; for (key in myStorage.storage.logs) { size++; } return size; -}; +} -Logger.prototype.isEmpty = function isEmpty() { - return (this.size() === 0); -}; +function isEmpty() { + return (storeSize() === 0); +} -Logger.prototype.clearStore = function clearStore(clearLink) { +exports.clearTimeSheet = function clearTimeSheet() { myStorage.storage.logs = {}; - var size = this.size(); - clearLink.style.color = this.EmptyLogsColor; - clearLink.style.fontWeight = "normal"; + var size = storeSize(); }; -Logger.prototype.importOtherStore = function importOtherStore (filename, clearLink) { +exports.importTimeSheet = function importTimeSheet() { + var filename = prompts.promptFileOpenPicker(); if (fileMod.exists(filename)) { var otherTS = JSON.parse(fileMod.read(filename)); if (otherTS.logs) { @@ -76,32 +62,42 @@ Logger.prototype.importOtherStore = function importOtherStore (filename, clearLi } else { console.error("File " + filename + " doesn't exist!"); } - if (this.size() > 0) { - clearLink.style.color = this.FullLogsColor; - clearLink.style.fontWeight = "bolder"; - } }; -Logger.prototype.getBugzillaAbbr = function(url) { +function getBugzillaAbbr(url) { // for https://bugzilla.redhat.com/show_bug.cgi?id=579123 get RH // for https://bugzilla.mozilla.org/show_bug.cgi?id=579123 get MoFo - var abbr = this.abbsMap[urlMod.URL(url).host]; - return abbr; -}; + return abbsMap[urlMod.URL(url).host]; +} + +exports.generateTimeSheet = function generateTimeSheet() { + var docHTML = timeSheetRecordsPrinter(myStorage.storage.logs); + libbz.openURLInNewTab("data:text/html;charset=utf-8," + docHTML); +}; -Logger.prototype.timeSheetRecordsPrinter = function(body, records) { - var that = this; +function timeSheetRecordsPrinter(records) { var commentBugRE = new RegExp("[bB]ug\\s+([0-9]+)","g"); // sort the records into temporary array var tmpArr = []; + var outStr = '<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">' + + "<html><head>\n"+ + "<meta http-equiv='Content-type' content='text/html;charset=utf-8'/>\n"+ + "<title>Status report</title>\n</head>\n<body>\n" + + "<h1>TimeSheet</h1>\n"; - for ( var i in records) { + for (var i in records) { if (records.hasOwnProperty(i)) { tmpArr.push( [ i, records[i] ]); } } tmpArr.sort(function(a, b) { - return a[0] > b[0] ? 1 : -1; + if (a[0] > b[0]) { + return 1; + } else if (a[0] < b[0]) { + return -1; + } else { + return 0; + } }); var currentDay = ""; @@ -110,47 +106,24 @@ Logger.prototype.timeSheetRecordsPrinter = function(body, records) { var x = rec[1]; var dayStr = utilMod.getISODate(x.date); var host = urlMod.URL(x.url).host; - var BZName = that.getBugzillaAbbr(x.url); + var BZName = getBugzillaAbbr(x.url); var bugNo = utilMod.getBugNo(x.url); if (dayStr != currentDay) { currentDay = dayStr; - body.innerHTML += "<hr/><p><strong>" + currentDay - + "</strong></p>"; + outStr += "<hr/><p><strong>" + currentDay + + "</strong></p>\n"; } // replace "bug ####" with a hyperlink to the current bugzilla var comment = x.comment.replace(commentBugRE, "<a href='http://"+host+"/show_bug.cgi?id=$1'>$&</a>"); - body.innerHTML += "<p><em><a href='" + outStr += "<p><em><a href='" + x.url + "'>Bug " + BZName + "/" + bugNo + ": " + x.title + "</a>" - + " </em>\n<br/>" + comment + "</p>"; - }); - }; - -/** - * - */ -Logger.prototype.createBlankPage = function (ttl, bodyBuildCB) { - var title = ttl || "Yet another untitled page"; - var that = this; - - var logTab = tabs.open({ - url: "about:blank", - inBackground: true, - onOpen: function (tab) { - var otherDoc = tab.contentDocument; - otherDoc.title = title; - otherDoc.body.innerHTML = "<h1>" + title + "</h1>"; - bodyBuildCB.call(that, otherDoc.body); - tabs.activeTab = tab; - } + + " </em>\n<br/>" + comment + "</p>\n"; }); -}; - -Logger.prototype.generateTimeSheet = function(body) { - var doc = body.ownerDocument; - this.timeSheetRecordsPrinter(body, myStorage.storage.logs); -}; + outStr += "</body></html>"; + return outStr; +} |