feat(cloudron): add tirreno package artifacts
- 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.
This commit is contained in:
@@ -0,0 +1,206 @@
|
||||
import {Loader} from '../Loader.js?v=2';
|
||||
import {Tooltip} from '../Tooltip.js?v=2';
|
||||
import {fireEvent} from '../utils/Event.js?v=2';
|
||||
import {handleAjaxError} from '../utils/ErrorHandler.js?v=2';
|
||||
|
||||
export class BasePanel {
|
||||
|
||||
constructor(eventParams) {
|
||||
this.enrichment = eventParams.enrichment;
|
||||
this.type = eventParams.type;
|
||||
this.url = eventParams.url;
|
||||
this.cardId = eventParams.cardId;
|
||||
this.panelClosed = eventParams.panelClosed;
|
||||
this.closePanel = eventParams.closePanel;
|
||||
this.rowClicked = eventParams.rowClicked;
|
||||
|
||||
this.loader = new Loader();
|
||||
|
||||
this.itemId = null;
|
||||
|
||||
const onCloseDetailsPanel = this.onCloseDetailsPanel.bind(this);
|
||||
window.addEventListener(this.closePanel, onCloseDetailsPanel, false);
|
||||
|
||||
const onTableRowClicked = this.onTableRowClicked.bind(this);
|
||||
window.addEventListener(this.rowClicked, onTableRowClicked, false);
|
||||
|
||||
const onKeydown = this.onKeydown.bind(this);
|
||||
window.addEventListener('keydown', onKeydown, false);
|
||||
|
||||
const onCloseButtonClick = this.onCloseButtonClick.bind(this);
|
||||
this.closeButton.addEventListener('click', onCloseButtonClick, false);
|
||||
|
||||
if (this.enrichment) {
|
||||
const onEnrichmentButtonClick = this.onEnrichmentButtonClick.bind(this);
|
||||
this.reenrichmentButton.addEventListener('click', onEnrichmentButtonClick, false);
|
||||
}
|
||||
|
||||
this.allPanels = {
|
||||
'event': {id: 'event-card', closeEvent: 'eventPanelClosed'},
|
||||
'logbook': {id: 'logbook-card',closeEvent: 'logbookPanelClosed'},
|
||||
'email': {id: 'email-card', closeEvent: 'emailPanelClosed'},
|
||||
'device': {id: 'device-card', closeEvent: 'devicePanelClosed'},
|
||||
'phone': {id: 'phone-card', closeEvent: 'phonePanelClosed'},
|
||||
};
|
||||
}
|
||||
|
||||
//https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
|
||||
onKeydown(e) {
|
||||
// procced keydown even if event was processed
|
||||
|
||||
switch (e.key) {
|
||||
case 'Esc': // IE/Edge specific value
|
||||
case 'Escape': {
|
||||
this.close();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Cancel the default action to avoid it being handled twice
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
onEnrichmentButtonClick(e) {
|
||||
this.contentDiv.classList.add('is-hidden');
|
||||
this.loaderDiv.classList.remove('is-hidden');
|
||||
this.card.classList.remove('is-hidden');
|
||||
|
||||
const el = this.loaderDiv;
|
||||
this.loader.start(el);
|
||||
|
||||
this.reenrichmentButton.setAttribute('disabled', '');
|
||||
this.reenrichmentButton.classList.add('is-hidden');
|
||||
|
||||
const onEnrichmentLoaded = this.onEnrichmentLoaded.bind(this);
|
||||
const token = document.head.querySelector('[name=\'csrf-token\'][content]').content;
|
||||
|
||||
$.ajax({
|
||||
url: '/admin/reenrichment',
|
||||
type: 'post',
|
||||
data: {type: this.type, entityId: this.itemId, token: token},
|
||||
success: onEnrichmentLoaded,
|
||||
error: handleAjaxError,
|
||||
});
|
||||
}
|
||||
|
||||
onEnrichmentLoaded(data, status) {
|
||||
if ('success' !== status || 0 === data.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.loadData(this.itemId);
|
||||
}
|
||||
|
||||
onCloseButtonClick(e) {
|
||||
e.preventDefault();
|
||||
this.close();
|
||||
}
|
||||
|
||||
onCloseDetailsPanel() {
|
||||
this.close();
|
||||
}
|
||||
|
||||
loadData(id) {
|
||||
this.contentDiv.classList.add('is-hidden');
|
||||
this.loaderDiv.classList.remove('is-hidden');
|
||||
this.card.classList.remove('is-hidden');
|
||||
|
||||
const el = this.loaderDiv;
|
||||
this.loader.start(el);
|
||||
|
||||
const onDetailsLoaded = this.onDetailsLoaded.bind(this);
|
||||
const token = document.head.querySelector('[name=\'csrf-token\'][content]').content;
|
||||
|
||||
$.ajax({
|
||||
url: this.url,
|
||||
type: 'get',
|
||||
data: {id: id, token: token},
|
||||
success: onDetailsLoaded,
|
||||
error: handleAjaxError,
|
||||
});
|
||||
}
|
||||
|
||||
onTableRowClicked({detail}) {
|
||||
this.itemId = detail.itemId;
|
||||
this.loadData(this.itemId);
|
||||
}
|
||||
|
||||
onDetailsLoaded(data, status) {
|
||||
|
||||
if ('success' !== status || 0 === data.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
data = this.proceedData(data);
|
||||
|
||||
if (this.enrichment && data.hasOwnProperty('checked') && this.reenrichmentButton) {
|
||||
if (data.checked === false && data.enrichable) {
|
||||
this.reenrichmentButton.removeAttribute('disabled');
|
||||
this.reenrichmentButton.classList.remove('is-hidden');
|
||||
} else {
|
||||
this.reenrichmentButton.setAttribute('disabled', '');
|
||||
this.reenrichmentButton.classList.add('is-hidden');
|
||||
}
|
||||
}
|
||||
|
||||
this.loader.stop();
|
||||
this.contentDiv.classList.remove('is-hidden');
|
||||
this.loaderDiv.classList.add('is-hidden');
|
||||
|
||||
let span = null;
|
||||
//todo: foreach and arrow fn ?
|
||||
for (const key in data) {
|
||||
span = this.card.querySelector(`#details_${key}`);
|
||||
if (span) {
|
||||
if (data[key] instanceof Node) {
|
||||
span.replaceChildren(data[key]);
|
||||
} else {
|
||||
span.innerHTML = data[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.initTooltips();
|
||||
}
|
||||
|
||||
initTooltips() {
|
||||
Tooltip.addTooltipsToEventDetailsPanel();
|
||||
}
|
||||
|
||||
proceedData(data) {
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
close() {
|
||||
fireEvent(this.panelClosed);
|
||||
this.card.classList.add('is-hidden');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
get loaderDiv() {
|
||||
return this.card.querySelector('div.text-loader');
|
||||
}
|
||||
|
||||
get contentDiv() {
|
||||
return this.card.querySelector('div.content');
|
||||
}
|
||||
|
||||
get card() {
|
||||
return document.querySelector(`.details-card#${this.cardId}`);
|
||||
}
|
||||
|
||||
get closeButton() {
|
||||
return this.card.querySelector('.delete');
|
||||
}
|
||||
|
||||
get reenrichmentButton() {
|
||||
return this.card.querySelector('.reenrichment-button');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user