diff options
author | Matěj Cepl <mcepl@redhat.com> | 2010-06-11 22:42:25 +0200 |
---|---|---|
committer | Matěj Cepl <mcepl@redhat.com> | 2010-06-11 22:42:25 +0200 |
commit | d5f5588729a9d40d193651436560899336341c1a (patch) | |
tree | db887a1f6be48305e1825bd4bc0b0438011f6d2e /lib/puvodni/logger.js | |
parent | 54426f47a1149e5b833653660db3b208c78e67f1 (diff) | |
download | bugzilla-triage-d5f5588729a9d40d193651436560899336341c1a.tar.gz |
Even more brutal
Diffstat (limited to 'lib/puvodni/logger.js')
-rw-r--r-- | lib/puvodni/logger.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/lib/puvodni/logger.js b/lib/puvodni/logger.js new file mode 100644 index 0000000..cc3f213 --- /dev/null +++ b/lib/puvodni/logger.js @@ -0,0 +1,108 @@ +// 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 Logger = exports.Logger = function Logger(store, abbsMap) { + + 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; + let clearLogAElem = that.doc.getElementById("clearLogs"); + 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 rec; + } else { + 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); +}; |