- Add CloudronStack/output/CloudronPackages-Artifacts/tirreno/ directory and its contents - Includes package manifest, Dockerfile, source code, documentation, and build artifacts - Add tirreno-1761840148.tar.gz as a build artifact - Add tirreno-cloudron-package-1761841304.tar.gz as the Cloudron package - Include all necessary files for the tirreno Cloudron package This adds the complete tirreno Cloudron package artifacts to the repository.
169 lines
4.4 KiB
JavaScript
169 lines
4.4 KiB
JavaScript
import {SearchLine} from '../parts/SearchLine.js';
|
|
import {Tooltip} from '../parts/Tooltip.js?v=2';
|
|
|
|
export class BasePage {
|
|
constructor(name, single = false) {
|
|
this.initCommonUi();
|
|
|
|
if (name) {
|
|
this.name = name;
|
|
if (single) {
|
|
let path = (this.name !== 'user') ? this.name : 'id';
|
|
this.id = parseInt(window.location.pathname.replace('/' + path + '/', ''), 10);
|
|
const key = this.name + 'Id';
|
|
this.getParams = () => {
|
|
return {[key]: this.id};
|
|
};
|
|
}
|
|
}
|
|
}
|
|
|
|
initCommonUi() {
|
|
new SearchLine();
|
|
|
|
document.addEventListener('keyup', e => {
|
|
if (e.key !== '/' || e.ctrlKey || e.metaKey) return;
|
|
if (/^(?:input|textarea|select|button)$/i.test(e.target.tagName)) return;
|
|
|
|
e.preventDefault();
|
|
document.getElementById('auto-complete').focus();
|
|
});
|
|
|
|
const initTooltip = this.initTooltip;
|
|
if (initTooltip) {
|
|
Tooltip.init();
|
|
}
|
|
|
|
const closeNotificationButtons = this.closeNotificationButtons;
|
|
if (closeNotificationButtons && closeNotificationButtons.length) {
|
|
const onCloseNotificationButtonClick = this.onCloseNotificationButtonClick.bind(this);
|
|
closeNotificationButtons.forEach(
|
|
button => button.addEventListener('click', onCloseNotificationButtonClick, false)
|
|
);
|
|
}
|
|
|
|
this.procedureNotifications.forEach(notification => {
|
|
const btn = notification.querySelector('.delete');
|
|
if (!btn) return;
|
|
btn.addEventListener('click', () => {notification.remove();}, false);
|
|
});
|
|
}
|
|
|
|
onCloseNotificationButtonClick() {
|
|
const notification = event.target.closest('.notification.system');
|
|
if (notification) {
|
|
notification.remove();
|
|
}
|
|
}
|
|
|
|
getDevicesGridParams() {
|
|
return {
|
|
url: '/admin/loadDevices',
|
|
tileId: 'totalDevices',
|
|
tableId: 'devices-table',
|
|
panelType: 'device',
|
|
|
|
isSortable: false,
|
|
|
|
getParams: this.getParams,
|
|
};
|
|
}
|
|
|
|
getIpsGridParams() {
|
|
return {
|
|
url: '/admin/loadIps',
|
|
tileId: 'totalIps',
|
|
tableId: 'ips-table',
|
|
|
|
isSortable: false,
|
|
orderByLastseen: true,
|
|
|
|
getParams: this.getParams,
|
|
};
|
|
}
|
|
|
|
getEventsGridParams() {
|
|
return {
|
|
url: '/admin/loadEvents',
|
|
tileId: 'totalEvents',
|
|
tableId: 'user-events-table',
|
|
panelType: 'event',
|
|
|
|
isSortable: false,
|
|
|
|
getParams: this.getParams,
|
|
};
|
|
}
|
|
|
|
getUsersGridParams() {
|
|
return {
|
|
url: '/admin/loadUsers',
|
|
tileId: 'totalUsers',
|
|
tableId: 'users-table',
|
|
|
|
isSortable: false,
|
|
|
|
getParams: this.getParams,
|
|
};
|
|
}
|
|
|
|
getIspsGridParams() {
|
|
return {
|
|
url: '/admin/loadIsps',
|
|
tableId: 'isps-table',
|
|
|
|
isSortable: false,
|
|
|
|
getParams: this.getParams,
|
|
};
|
|
}
|
|
|
|
getMapParams() {
|
|
return {
|
|
getParams: this.getParams,
|
|
tooltipString: 'event',
|
|
tooltipField: 'total_visit',
|
|
tileId: 'totalCountries',
|
|
};
|
|
}
|
|
|
|
getBarChartParams() {
|
|
return {
|
|
getParams: () => ({
|
|
mode: this.name,
|
|
id: this.id,
|
|
}),
|
|
};
|
|
}
|
|
|
|
getChartParams(datesFilter, searchFilter) {
|
|
return {
|
|
getParams: () => {
|
|
const mode = this.name;
|
|
const dateRange = datesFilter.getValue();
|
|
const searchValue = searchFilter.getValue();
|
|
|
|
return {mode, dateRange, searchValue};
|
|
},
|
|
};
|
|
}
|
|
|
|
getSelfDetails() {
|
|
return {
|
|
getParams: this.getParams,
|
|
};
|
|
}
|
|
|
|
get initTooltip() {
|
|
return true;
|
|
}
|
|
|
|
get closeNotificationButtons() {
|
|
return document.querySelectorAll('.notification.system:not(.is-hidden) .delete');
|
|
}
|
|
|
|
get procedureNotifications() {
|
|
return document.querySelectorAll('#success-procedure-notification, #error-procedure-notification');
|
|
}
|
|
}
|