Skip to content
Snippets Groups Projects
Commit 033f350b authored by jurgenhaas's avatar jurgenhaas
Browse files

Re-use div-container if already present and re-check content for dynamically loaded content

parent 447ea9f5
No related branches found
No related tags found
1 merge request!1Update readme
......@@ -16,6 +16,7 @@ function TogglButtonGM(selector, renderer) {
$newApiUrl = "https://www.toggl.com/api/v8",
$legacyApiUrl = "https://new.toggl.com/api/v8",
$triedAlternative = false,
$addedDynamicListener = false,
$api_token = null,
$default_wid = null,
$clientMap = {},
......@@ -119,34 +120,48 @@ function TogglButtonGM(selector, renderer) {
if (selector == null) {
return;
}
var i, len, elems = document.querySelectorAll(selector);
var i, len, elems = document.querySelectorAll(selector + ':not(.toggl)');
for (i = 0, len = elems.length; i < len; i += 1) {
elems[i].classList.add('toggl');
$instances[i] = new TogglButtonGMInstance(renderer(elems[i]));
}
document.addEventListener('TogglButtonGMUpdateStatus', function() {
GM_xmlhttpRequest({
method: "GET",
url: $activeApiUrl + "/time_entries/current",
headers: {
"Authorization": "Basic " + btoa($api_token + ':api_token')
},
onload: function (result) {
if (result.status === 200) {
var resp = JSON.parse(result.responseText),
data = resp.data || false;
if (data) {
for (i in $instances) {
$instances[i].checkCurrentLinkStatus(data);
if (!$addedDynamicListener) {
$addedDynamicListener = true;
document.addEventListener('TogglButtonGMUpdateStatus', function() {
GM_xmlhttpRequest({
method: "GET",
url: $activeApiUrl + "/time_entries/current",
headers: {
"Authorization": "Basic " + btoa($api_token + ':api_token')
},
onload: function (result) {
if (result.status === 200) {
var resp = JSON.parse(result.responseText),
data = resp.data || false;
if (data) {
for (i in $instances) {
$instances[i].checkCurrentLinkStatus(data);
}
}
}
}
}
});
});
});
window.addEventListener('focus', function() {
document.dispatchEvent(new CustomEvent('TogglButtonGMUpdateStatus'));
});
window.addEventListener('focus', function() {
document.dispatchEvent(new CustomEvent('TogglButtonGMUpdateStatus'));
});
if (selector !== 'body') {
document.body.addEventListener('DOMSubtreeModified', function () {
setTimeout(function () {
render(selector, renderer);
}, 1000);
});
}
}
}
this.clickLinks = function() {
......@@ -341,13 +356,26 @@ function TogglButtonGM(selector, renderer) {
document.querySelector('body').classList.add('toggl-button-available');
if (params.targetSelectors == undefined) {
var wrapper = document.createElement('div'),
var wrapper,
existingWrapper = document.querySelectorAll('#toggl-button-wrapper'),
content = createTag('div', 'content');
wrapper.id = 'toggl-button-wrapper';
content.appendChild($link);
content.appendChild(createProjectSelect());
wrapper.appendChild(content);
document.querySelector('body').appendChild(wrapper);
if (existingWrapper.length > 0) {
console.log('Re-use existing toggl');
wrapper = existingWrapper[0];
while (wrapper.firstChild) {
wrapper.removeChild(wrapper.firstChild);
}
wrapper.appendChild(content);
}
else {
console.log('Create new toggl');
wrapper = document.createElement('div');
wrapper.id = 'toggl-button-wrapper';
wrapper.appendChild(content);
document.querySelector('body').appendChild(wrapper);
}
} else {
var elem = params.targetSelectors.context || document;
if (params.targetSelectors.link != undefined) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment