mirror of
https://github.com/kevinpapst/kimai2.git
synced 2025-01-10 19:47:35 +00:00
63 lines
1.8 KiB
JavaScript
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;
|
|
});
|
|
}
|
|
|
|
}
|