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,191 @@
|
||||
import {TotalTile} from './TotalTile.js?v=2';
|
||||
import {getQueryParams} from './utils/DataSource.js?v=2';
|
||||
import {handleAjaxError} from './utils/ErrorHandler.js?v=2';
|
||||
import {fireEvent} from './utils/Event.js?v=2';
|
||||
|
||||
export class Map {
|
||||
|
||||
constructor(mapParams) {
|
||||
this.config = mapParams;
|
||||
|
||||
this.totalTile = new TotalTile();
|
||||
|
||||
this.regions = {};
|
||||
|
||||
const onRegionTipShow = this.onRegionTipShow.bind(this);
|
||||
const onRegionClick = this.onRegionClick.bind(this);
|
||||
|
||||
$('#world-map-markers').vectorMap({
|
||||
map: 'world_mill_en',
|
||||
|
||||
normalizeFunction: 'polynomial',
|
||||
hoverOpacity: 0.7,
|
||||
regionsSelectable: false,
|
||||
markersSelectable: false,
|
||||
zoomOnScroll: false,
|
||||
hoverColor: false,
|
||||
|
||||
series: {
|
||||
regions: [
|
||||
{
|
||||
values: {},
|
||||
scale: ['#4e6964', '#01EE99'],
|
||||
normalizeFunction: 'polynomial'
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
regionStyle: {
|
||||
initial: {
|
||||
fill: '#575678'
|
||||
},
|
||||
selected: {
|
||||
fill: '#01EE99'
|
||||
}
|
||||
},
|
||||
|
||||
onRegionTipShow: function(e, el, code) {
|
||||
onRegionTipShow(el, code);
|
||||
},
|
||||
onRegionClick: function(e, code) {
|
||||
onRegionClick(code);
|
||||
},
|
||||
|
||||
backgroundColor: '#131220'
|
||||
});
|
||||
|
||||
const onDateFilterChanged = this.onDateFilterChanged.bind(this);
|
||||
window.addEventListener('dateFilterChanged', onDateFilterChanged, false);
|
||||
|
||||
if (!this.config.sequential) {
|
||||
this.loadData();
|
||||
}
|
||||
}
|
||||
|
||||
startLoader() {
|
||||
}
|
||||
|
||||
onRegionTipShow(tipEl, value) {
|
||||
const regionValue = this.mapObject.series.regions[0].values[value];
|
||||
const phrase = this.getTooltipString(regionValue);
|
||||
|
||||
tipEl.html(`${tipEl.html()} - ${phrase}`);
|
||||
}
|
||||
|
||||
onRegionClick(value) {
|
||||
if (this.regions[value] !== undefined && this.regions[value][this.config.tooltipField] > 0) {
|
||||
const url = `/country/${this.regions[value].id}`;
|
||||
if (event.ctrlKey || event.metaKey) {
|
||||
window.open(url, '_blank');
|
||||
} else {
|
||||
window.location.href = url;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getCountriesRegionsFromResponse(records) {
|
||||
const me = this;
|
||||
const regions = {};
|
||||
|
||||
this.regions = {};
|
||||
|
||||
records.forEach(rec => {
|
||||
const country = rec.iso;
|
||||
if (!regions[country]) {
|
||||
regions[country] = 0;
|
||||
this.regions[country] = 0;
|
||||
}
|
||||
|
||||
const value = me.getRegionValue(rec);
|
||||
regions[country] = value;
|
||||
this.regions[country] = {
|
||||
[this.config.tooltipField]: value,
|
||||
id: rec.id,
|
||||
};
|
||||
});
|
||||
|
||||
return regions;
|
||||
}
|
||||
|
||||
getRegionValue(record) {
|
||||
const field = this.config.tooltipField;
|
||||
const value = record[field];
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
selectRegions(regions) {
|
||||
const map = this.mapObject;
|
||||
|
||||
//Remove countries which does not exist in the vectormap: MU, BH, etc...
|
||||
for (const [key, value] of Object.entries(regions)) {
|
||||
if (!map.regions.hasOwnProperty(key)) {
|
||||
delete regions[key];
|
||||
}
|
||||
}
|
||||
|
||||
//https://github.com/bjornd/jvectormap/issues/376
|
||||
map.series.regions[0].params.min = undefined;
|
||||
map.series.regions[0].params.max = undefined;
|
||||
|
||||
map.series.regions[0].clear();
|
||||
map.series.regions[0].setValues(regions);
|
||||
}
|
||||
|
||||
onDateFilterChanged() {
|
||||
this.loadData();
|
||||
}
|
||||
|
||||
loadData() {
|
||||
const me = this;
|
||||
const params = this.config.getParams();
|
||||
const token = document.head.querySelector('[name=\'csrf-token\'][content]').content;
|
||||
|
||||
const data = getQueryParams(params);
|
||||
|
||||
fireEvent('dateFilterChangedCaught');
|
||||
|
||||
$.ajax({
|
||||
type: 'get',
|
||||
url: `/admin/loadMap?token=${token}`,
|
||||
data: data,
|
||||
scope: me,
|
||||
success: me.onCountriesListLoaded,
|
||||
error: handleAjaxError,
|
||||
complete: function() {
|
||||
fireEvent('dateFilterChangedCompleted');
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
onCountriesListLoaded(data, status) {
|
||||
if ('success' == status) {
|
||||
const me = this.scope;
|
||||
|
||||
const tableId = 'countries-table';
|
||||
|
||||
me.totalTile.update(tableId, me.config.tileId, data.length);
|
||||
|
||||
const regions = me.getCountriesRegionsFromResponse(data);
|
||||
|
||||
me.selectRegions(regions);
|
||||
}
|
||||
}
|
||||
|
||||
getTooltipString(value) {
|
||||
value = value ? value : 0;
|
||||
|
||||
let string = this.config.tooltipString;
|
||||
if (1 !== value) {
|
||||
string += 's';
|
||||
}
|
||||
|
||||
const tooltipPhrase = `${value} ${string}`;
|
||||
|
||||
return tooltipPhrase;
|
||||
}
|
||||
|
||||
get mapObject() {
|
||||
return $('#world-map-markers').vectorMap('get', 'mapObject');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user