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,115 @@
|
||||
import {BaseGrid} from './Base.js?v=2';
|
||||
import {fireEvent} from '../utils/Event.js?v=2';
|
||||
|
||||
export class BaseGridWithPanel extends BaseGrid {
|
||||
|
||||
constructor(gridParams) {
|
||||
super(gridParams);
|
||||
|
||||
this.config = gridParams;
|
||||
this.markerClass = 'marker';
|
||||
|
||||
this.allPanels = {
|
||||
'event': {
|
||||
id: 'event-card',
|
||||
closedEvent: 'eventPanelClosed',
|
||||
close: 'closeEventPanel',
|
||||
rowClicked: 'eventTableRowClicked',
|
||||
},
|
||||
'logbook': {
|
||||
id: 'logbook-card',
|
||||
closedEvent: 'logbookPanelClosed',
|
||||
close: 'closeLogbookPanel',
|
||||
rowClicked: 'logbookTableRowClicked',
|
||||
},
|
||||
'email': {
|
||||
id: 'email-card',
|
||||
closedEvent: 'emailPanelClosed',
|
||||
close: 'closeEmailPanel',
|
||||
rowClicked: 'emailTableRowClicked',
|
||||
},
|
||||
'device': {
|
||||
id: 'device-card',
|
||||
closedEvent: 'devicePanelClosed',
|
||||
close: 'closeDevicePanel',
|
||||
rowClicked: 'deviceTableRowClicked',
|
||||
},
|
||||
'phone': {
|
||||
id: 'phone-card',
|
||||
closedEvent: 'phonePanelClosed',
|
||||
close: 'closePhonePanel',
|
||||
rowClicked: 'phoneTableRowClicked',
|
||||
},
|
||||
};
|
||||
|
||||
this.panelType = gridParams.panelType;
|
||||
|
||||
this.currentPanel = this.allPanels[this.panelType];
|
||||
|
||||
const onDetailsPanelClosed = this.onDetailsPanelClosed.bind(this);
|
||||
window.addEventListener(this.currentPanel.closedEvent, onDetailsPanelClosed, false);
|
||||
|
||||
const onTableRowClicked = this.onTableRowClicked.bind(this);
|
||||
window.addEventListener(this.currentPanel.rowClicked, onTableRowClicked, false);
|
||||
}
|
||||
|
||||
drawCallback(settings) {
|
||||
super.drawCallback(settings);
|
||||
|
||||
this.addTableRowsEvents();
|
||||
}
|
||||
|
||||
onDetailsPanelClosed() {
|
||||
const markerClass = this.markerClass;
|
||||
const tableId = this.config.tableId;
|
||||
|
||||
$(`#${tableId} tbody tr`).removeClass(markerClass);
|
||||
}
|
||||
|
||||
onRowClick(e) {
|
||||
const selection = window.getSelection();
|
||||
if ('Range' === selection.type) {
|
||||
return;
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
const row = e.target.closest('tr');
|
||||
const itemId = row.dataset.itemId;
|
||||
const data = {itemId: itemId};
|
||||
|
||||
fireEvent(this.currentPanel.rowClicked, data);
|
||||
}
|
||||
|
||||
onTableRowClicked(e) {
|
||||
e.preventDefault();
|
||||
|
||||
const itemId = e.detail.itemId;
|
||||
const targetRow = this.table.querySelector(`tr[data-item-id="${itemId}"]`);
|
||||
|
||||
const markerClass = this.markerClass;
|
||||
const isRowMarkered = targetRow.classList.contains(markerClass);
|
||||
|
||||
if (isRowMarkered) {
|
||||
fireEvent(this.currentPanel.close);
|
||||
targetRow.classList.remove(markerClass);
|
||||
} else {
|
||||
// close other panels
|
||||
for (const panel in this.allPanels) {
|
||||
if (panel !== this.panelType) {
|
||||
const card = document.querySelector(`.details-card#${this.allPanels[panel].id}`);
|
||||
if (card && !card.classList.contains('is-hidden')) {
|
||||
fireEvent(this.allPanels[panel].closedEvent);
|
||||
card.classList.add('is-hidden');
|
||||
}
|
||||
}
|
||||
}
|
||||
// unmark other rows in the same table
|
||||
const rows = this.table.querySelectorAll('tr[data-item-id]');
|
||||
rows.forEach(row => row.classList.remove(markerClass));
|
||||
|
||||
// mark current row
|
||||
targetRow.classList.add(markerClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user