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:
2025-10-30 11:43:06 -05:00
parent 0ce353ea9d
commit 91d52d2de5
1692 changed files with 202851 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
import {fireEvent} from '../utils/Event.js?v=2';
export class BaseFilter {
constructor(selectorId, renderItemFn, renderChoiceFn, eventType) {
this.selectorId = selectorId;
this.renderItemFn = renderItemFn;
this.renderChoiceFn = renderChoiceFn;
this.eventType = eventType;
const renderItem = renderItemFn;
const renderChoice = renderChoiceFn;
const choices = new Choices(`${this.selectorId} select`, {
removeItemButton: true,
allowHTML: true,
callbackOnCreateTemplates: function(strToEl) {
const {classNames, itemSelectText} = this.config;
return {
item: function({classNames}, data) {
return strToEl(renderItem(classNames, data));
},
choice: function({classNames}, data) {
return strToEl(renderChoice(classNames, data, itemSelectText));
},
};
}
});
choices.passedElement.element.addEventListener(
'change',
() => fireEvent(this.eventType)
);
}
getValues() {
return Array.from(document.querySelector(`${this.selectorId} select`).options)
.filter(option => option.selected)
.map(option => option.value);
}
getEventType() {
return this.eventType;
}
}

View File

@@ -0,0 +1,16 @@
import {BaseFilter} from './BaseFilter.js?v=2';
import {
renderDeviceTypeSelectorItem,
renderDeviceTypeSelectorChoice,
} from '../DataRenderers.js?v=2';
export class DeviceTypeFilter extends BaseFilter {
constructor() {
super(
'#device-type-selectors',
renderDeviceTypeSelectorItem,
renderDeviceTypeSelectorChoice,
'deviceTypeFilterChanged'
);
}
}

View File

@@ -0,0 +1,16 @@
import {BaseFilter} from './BaseFilter.js?v=2';
import {
renderEntityTypeSelectorItem,
renderEntityTypeSelectorChoice,
} from '../DataRenderers.js?v=2';
export class EntityTypeFilter extends BaseFilter {
constructor() {
super(
'#entity-type-selectors',
renderEntityTypeSelectorItem,
renderEntityTypeSelectorChoice,
'entityTypeFilterChanged'
);
}
}

View File

@@ -0,0 +1,16 @@
import {BaseFilter} from './BaseFilter.js?v=2';
import {
renderEventTypeSelectorItem,
renderEventTypeSelectorChoice,
} from '../DataRenderers.js?v=2';
export class EventTypeFilter extends BaseFilter {
constructor() {
super(
'#event-type-selectors',
renderEventTypeSelectorItem,
renderEventTypeSelectorChoice,
'eventTypeFilterChanged'
);
}
}

View File

@@ -0,0 +1,16 @@
import {BaseFilter} from './BaseFilter.js?v=2';
import {
renderIpTypeSelectorItem,
renderIpTypeSelectorChoice,
} from '../DataRenderers.js?v=2';
export class IpTypeFilter extends BaseFilter {
constructor() {
super(
'#ip-type-selectors',
renderIpTypeSelectorItem,
renderIpTypeSelectorChoice,
'ipTypeFilterChanged'
);
}
}

View File

@@ -0,0 +1,16 @@
import {BaseFilter} from './BaseFilter.js?v=2';
import {
renderRuleSelectorItem,
renderRuleSelectorChoice,
} from '../DataRenderers.js?v=2';
export class RulesFilter extends BaseFilter {
constructor() {
super(
'#rule-selectors',
renderRuleSelectorItem,
renderRuleSelectorChoice,
'rulesFilterChanged'
);
}
}

View File

@@ -0,0 +1,16 @@
import {BaseFilter} from './BaseFilter.js?v=2';
import {
renderScoresRangeSelectorItem,
renderScoresRangeSelectorChoice,
} from '../DataRenderers.js?v=2';
export class ScoresRangeFilter extends BaseFilter {
constructor() {
super(
'#scores-range-selectors',
renderScoresRangeSelectorItem,
renderScoresRangeSelectorChoice,
'scoresRangeFilterChanged'
);
}
}