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,74 @@
import {BaseChart} from './BaseChart.js?v=2';
import {
COLOR_MAP,
X_AXIS_SERIFS,
} from '../utils/Constants.js?v=2';
export class BaseLineChart extends BaseChart {
getSeries() {
return [
this.getDaySeries(),
this.getSingleSeries('Total events', 'green'),
];
}
getSingleSeries(label, color) {
return {
label: label,
scale: 'EVENTS',
value: (u, v) => Number(v.toFixed(0)).toLocaleString(),
points: {
space: 0,
fill: COLOR_MAP[color].main,
},
stroke: COLOR_MAP[color].main,
fill: COLOR_MAP[color].light,
};
}
getAxisConfig() {
const axes = super.getAxisConfig();
axes.x.space = function(self, axisIdx, scaleMin, scaleMax, plotDim) {
let rangeDays = (scaleMax - scaleMin) / 86400;
if (rangeDays > X_AXIS_SERIFS) rangeDays = X_AXIS_SERIFS;
const pxPerDay = plotDim / rangeDays;
return pxPerDay;
};
axes.y.scale = 'EVENTS';
axes.y.side = 3;
axes.y.split = u => [
u.series[1].min,
u.series[1].max,
];
return axes;
}
getOptions(resolution = 'day') {
return super.getOptions(resolution, '—');
}
// invert lines order to keep originally first line on top layer
seriesResolutionShift(series, resolution) {
if (resolution === 'hour') {
series[0].label = 'Hour';
series[0].scale = 'HOUR';
series[0].value = '{YYYY}-{MM}-{DD} {HH}:{mm}';
} else if (resolution === 'minute') {
series[0].label = 'Minute';
series[0].scale = 'MINUTE';
series[0].value = '{YYYY}-{MM}-{DD} {HH}:{mm}';
}
const inverted = [series[0]].concat(series.slice(1).reverse());
return inverted;
}
getData(data) {
return [data[0]].concat(data.slice(1).reverse());
}
}