diff --git a/TogglLibrary.js b/TogglLibrary.js index 96b065065ed78b451b9c5049a255ab9ae469afbf..4e95487aa45a630f41f3fcea1cdb6c94eb3e43fb 100644 --- a/TogglLibrary.js +++ b/TogglLibrary.js @@ -22,7 +22,13 @@ function TogglButtonGM(selector, renderer) { $clientMap = {}, $projectMap = {}, $instances = {}; - + + if (!renderer.renderOriginLink) { + renderer.renderOriginLink = (backReferenceColumn, originUrl) => { + backReferenceColumn.innerHTML = "<a href=\""+originUrl+"\">Origin</a>"; + }; + } + init(selector, renderer); function init(selector, renderer, apiUrl) { @@ -162,6 +168,26 @@ function TogglButtonGM(selector, renderer) { } } + function getIdFromEntry(entry) { + return Number.parseInt(entry.querySelector("input[type=\"checkbox\"]").getAttribute("data-id"), 10); + } + + this.tryDecorateTimer = () => { + if (!window.location.href.startsWith("https://toggl.com/app/timer")) + return; + const timerEntries = document.querySelectorAll("#time-entry-list ul li.entry"); + console.log("Timer entries: " + timerEntries.length); + for (var entry of timerEntries) { + let id = getIdFromEntry(entry); + let originUrl = GM_getValue("_url["+id+"]", null); + if (originUrl) { + console.log("Origin for entry: " + id + ": " + originUrl); + let backReferenceColumn = document.createElement("div"); + renderer.renderOriginLink(backReferenceColumn, originUrl); + entry.appendChild(backReferenceColumn); + } + } + }; this.clickLinks = function() { for (i in $instances) { $instances[i].clickLink();