// Released under the MIT/X11 license // http://www.opensource.org/licenses/mit-license.php "use strict"; var urlMod = require("url"); var utilMod = require("util"); var fileMod = require("file"); var tabs = require("tabs"); var prompts = require("prompts"); var apiUtils = require("api-utils"); var xrpc = require("xmlrpc"); var myStorage = require("simple-storage"); var EmptyLogsColor = "rgb(0, 255, 0)"; var FullLogsColor = "rgb(0, 40, 103)"; var abbsMap = {}; exports.initialize = function initialize(aMap) { if (!myStorage.storage.logs) { myStorage.storage.logs = {}; } abbsMap = aMap; }; exports.addLogRecord = function addLogRecord(rec) { if (myStorage.storage.logs[rec.key]) { myStorage.storage.logs[rec.key].comment += "
\n" + comment; } else { myStorage.storage.logs[rec.key] = rec; } }; function storeSize() { var size = 0, key; for (key in myStorage.storage.logs) { size++; } return size; } function isEmpty() { return (storeSize() === 0); } exports.clearTimeSheet = function clearTimeSheet() { myStorage.storage.logs = {}; var size = storeSize(); }; exports.importTimeSheet = function importTimeSheet() { var filename = prompts.promptFileOpenPicker(that.win); if (fileMod.exists(filename)) { var otherTS = JSON.parse(fileMod.read(filename)); if (otherTS.logs) { for (var rec in otherTS.logs) { myStorage.storage.logs[rec] = otherTS.logs[rec]; } } else { console.error("This is not a log file!"); } } else { console.error("File " + filename + " doesn't exist!"); } }; 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 return abbsMap[urlMod.URL(url).host]; } exports.generateTimeSheet = function generateTimeSheet() { // Logger.prototype.generateTimeSheet = function(body) { // var doc = body.ownerDocument; // this.timeSheetRecordsPrinter(body, myStorage.storage.logs); }; function timeSheetRecordsPrinter(body, records) { var commentBugRE = new RegExp("[bB]ug\\s+([0-9]+)","g"); // sort the records into temporary array var tmpArr = []; 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; }); var currentDay = ""; // now print the array tmpArr.forEach(function(rec) { var x = rec[1]; var dayStr = utilMod.getISODate(x.date); var host = urlMod.URL(x.url).host; var BZName = getBugzillaAbbr(x.url); var bugNo = utilMod.getBugNo(x.url); if (dayStr != currentDay) { currentDay = dayStr; body.innerHTML += "

" + currentDay + "

"; } // replace "bug ####" with a hyperlink to the current bugzilla var comment = x.comment.replace(commentBugRE, "$&"); body.innerHTML += "

Bug " + BZName + "/" + bugNo + ": " + x.title + "" + " \n
" + comment + "

"; }); } /** * */ function createBlankPage(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 = "

" + title + "

"; bodyBuildCB.call(that, otherDoc.body); tabs.activeTab = tab; } }); }