0
0
Fork 0
mirror of https://github.com/kevinpapst/kimai2.git synced 2025-01-10 19:47:35 +00:00
kevinpapst_kimai2/assets/js/widgets/KimaiReloadPageWidget.js

63 lines
1.8 KiB
JavaScript

/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/*!
* [KIMAI] KimaiReloadPageWidget: a simple helper to reload the page on events
*/
export default class KimaiReloadPageWidget {
constructor(events, fullReload) {
const reloadPage = () => {
if (fullReload) {
document.location.reload();
} else {
this._loadPage(document.location);
}
};
for (const eventName of events.split(' ')) {
document.addEventListener(eventName, reloadPage);
}
}
static create(events, fullReload) {
if (fullReload === undefined || fullReload === null) {
fullReload = false;
}
return new KimaiReloadPageWidget(events, fullReload);
}
_showOverlay() {
document.dispatchEvent(new CustomEvent('kimai.reloadContent', {detail: 'div.page-wrapper'}));
}
_hideOverlay() {
document.dispatchEvent(new Event('kimai.reloadedContent'));
}
_loadPage(url) {
this._showOverlay();
window.kimai.getPlugin('fetch').fetch(url)
.then(response => {
response.text().then((text) => {
const temp = document.createElement('div');
temp.innerHTML = text;
const newContent = temp.querySelector('section.content');
document.querySelector('section.content').replaceWith(newContent);
document.dispatchEvent(new Event('kimai.reloadPage'));
this._hideOverlay();
});
})
.catch(() => {
this._hideOverlay();
document.location = url;
});
}
}