diff options
author | Matěj Cepl <mcepl@redhat.com> | 2010-06-17 18:20:03 +0200 |
---|---|---|
committer | Matěj Cepl <mcepl@redhat.com> | 2010-06-17 18:20:03 +0200 |
commit | 9279d5bc3902ab0b18af3a3f8440b8ddd884dec5 (patch) | |
tree | 1f642276cfbd30c70cae6307253020206d87e235 /lib/logger.js | |
parent | 620ca44cfa360d6e100215619acab8ae1eb10f34 (diff) | |
download | bugzilla-triage-9279d5bc3902ab0b18af3a3f8440b8ddd884dec5.tar.gz |
Inheritance works, now there are jetpack-prototype-related bugs
Diffstat (limited to 'lib/logger.js')
-rw-r--r-- | lib/logger.js | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/lib/logger.js b/lib/logger.js new file mode 100644 index 0000000..b817056 --- /dev/null +++ b/lib/logger.js @@ -0,0 +1,114 @@ +// Released under the MIT/X11 license +// http://www.opensource.org/licenses/mit-license.php +"use strict"; +var urlMod = require("url"); +var urilMod = require("util"); +var Color = require("color").Color; + +var Logger = exports.Logger = function Logger(store, abbsMap) { + this.EmptyLogsColor = new Color(0, 255, 0); + this.FullLogsColor = new Color(0, 40, 103); + + this.store = store; + this.abbsMap = abbsMap; +}; + +Logger.prototype.addLogRecord = function(that) { + let rec = {}; + rec.date = new Date(); + rec.url = that.doc.location.toString(); + rec.title = that.title; + let comment = jetpack.tabs.focused.contentWindow.prompt( + "Enter comments for this comment"); + if (comment && comment.length > 0) { + comment = comment.trim(); + rec.comment = comment; + let recKey = utilMod.getISODate(rec.date) + "+" + + urlMod.parse(rec.url).host + + "+" + that.bugNo; + console.log("rec = " + rec.toSource()); + + let clearLogAElem = that.doc.getElementById("clearLogs"); + if (clearLogAElem.style.color != this.FullLogsColor) { + clearLogAElem.style.color = this.FullLogsColor; + clearLogAElem.style.fontWeight = "bolder"; + } + if (this.store[recKey]) { + this.store[recKey].comment += "<br/>\n" + comment; + } else { + this.store[recKey] = rec; + } + jetpack.storage.simple.sync(); + } + return comment; +}; + +Logger.prototype.getBugzillaAbbr = function(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.parse(url).host]; + return abbr; +} + +Logger.prototype.timeSheetRecordsPrinter = function(body, records) { + let that = this; + let commentBugRE = new RegExp("[bB]ug\\s+([0-9]+)","g"); + // sort the records into temporary array + let tmpArr = []; + + for ( let i in records) { + if (records.hasOwnProperty(i)) { + tmpArr.push( [ i, records[i] ]); + } + } + tmpArr.sort(function(a, b) { + return a[0] > b[0] ? 1 : -1; + }); + + let currentDay = ""; + // now print the array + tmpArr.forEach(function(rec) { + let x = rec[1]; + let dayStr = utilMod.getISODate(x.date); + let host = urlMod.parse(x.url).host; + let BZName = that.getBugzillaAbbr(x.url); + let bugNo = utilMod.getBugNo(x.url); + if (dayStr != currentDay) { + currentDay = dayStr; + body.innerHTML += "<hr/><p><strong>" + currentDay + + "</strong></p>"; + } + // replace "bug ####" with a hyperlink to the current bugzilla + let comment = x.comment.replace(commentBugRE, + "<a href='http://"+host+"/show_bug.cgi?id=$1'>$&</a>"); + body.innerHTML += "<p><em><a href='" + + x.url + + "'>Bug " + + BZName + "/" + bugNo + ": " + + x.title + + "</a>" + + " </em>\n<br/>" + comment + "</p>"; + }); +}; + +/** + * + */ +Logger.prototype.createBlankPage = function (ttl, bodyBuildCB) { + let title = ttl || "Yet another untitled page"; + let that = this; + + let logTab = jetpack.tabs.open("about:blank"); + jetpack.tabs.onReady(function() { + let otherDoc = logTab.contentDocument; + otherDoc.title = title; + otherDoc.body.innerHTML = "<h1>" + title + "</h1>"; + bodyBuildCB.call(that, otherDoc.body); + logTab.focus(); + }); +}; + +Logger.prototype.generateTimeSheet = function(body) { + let doc = body.ownerDocument; + this.timeSheetRecordsPrinter(body, this.store); +}; |