// Released under the MIT/X11 license // http://www.opensource.org/licenses/mit-license.php "use strict"; var EmptyLogsColor = new Color(0, 255, 0); var FullLogsColor = new Color(0, 40, 103); var submitHandlerInstalled = false; // for setUpLogging function addLogRecord() { var rec = {}; rec.date = new Date(); rec.url = document.location.toString(); rec.title = document.title; var comment = window.prompt("Enter comments for this comment"); if (comment !== null) { comment = comment.trim(); if (comment.length > 0) { comment = comment.trim(); rec.comment = comment; var dateStr = getISODate(rec.date); var urlStr = window.location.hostname; var bugNo = getBugNoFromURL(window.location.href); rec.key = dateStr + "+" + urlStr + "+" + bugNo; self.postMessage(new Message("AddLogRecord", rec)); } return rec; } return null; } /** */ function setUpLogging() { // Protection against double-call if (document.getElementById("generateTSButton")) { return; } // For adding additional buttons to the top toolbar var additionalButtons = document .querySelector("#bugzilla-body *.related_actions"); var that = this; // logging all submits for timesheet if (!submitHandlerInstalled) { document.forms.namedItem("changeform").addEventListener( "submit", function(evt) { if (addLogRecord() === null) { evt.stopPropagation(); evt.preventDefault(); } }, false); submitHandlerInstalled = true; } // (id, text, parent, callback, params, before, covered, accesskey) createDeadLink("generateTSButton", "Generate TS", additionalButtons, function(evt) { self.postMessage(new Message("GetTSData")); }, [], "dash", "li"); createDeadLink("clearLogs", "Clear TS", additionalButtons, function(evt) { self.postMessage(new Message("ClearTS")); }, [], "dash", "li"); createDeadLink("importTSButton", "Import TS", additionalButtons, function(evt) { self.postMessage(new Message("ImportTS")); }, [], "dash", "li"); /* * TODO var clearLogAElem = document.getElementById("clearLogs"); if * (this.log.isEmpty()) { clearLogAElem.style.color = this.log.EmptyLogsColor; * clearLogAElem.style.fontWeight = "normal"; } else { * clearLogAElem.style.color = this.log.FullLogsColor; * clearLogAElem.style.fontWeight = "bolder"; } */ } function getBugzillaAbbr(url) { // Abbreviations are in constantData.BugzillaAbbreviations // 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 constantData.BugzillaAbbreviations[parseURL(url).host]; } function timeSheetRecordsPrinter(records, date) { var commentBugRE = new RegExp("[bB]ug\\s+([0-9]+)", "g"); // sort the records into temporary array var tmpArr = []; var dateStr = getISODate(date); var outStr = "data:text/html;charset=utf-8," + '' + "\n" + "\n" + "TimeSheet-" + dateStr + "\n\n\n" + "

TimeSheet

\n"; for ( var i in records) { if (records.hasOwnProperty(i)) { tmpArr.push([ i, records[i] ]); } } tmpArr.sort(function(a, b) { if (a[0] > b[0]) { return 1; } else if (a[0] < b[0]) { return -1; } else { return 0; } }); var currentDay = ""; // now print the array tmpArr.forEach(function(rec) { var x = rec[1]; var dayStr = getISODate(x.date); var host = parseURL(x.url).host; var BZName = getBugzillaAbbr(x.url); var bugNo = getBugNo(x.url); if (dayStr != currentDay) { currentDay = dayStr; outStr += "

" + currentDay + "

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

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

\n"; }); outStr += ""; self.postMessage(new Message("OpenURLinTab", outStr)); };