mapcomplete/Customizations/AllKnownLayouts.ts

130 lines
5.3 KiB
TypeScript
Raw Normal View History

2020-07-31 15:11:44 +00:00
import {Layout} from "./Layout";
import * as bookcases from "../assets/themes/bookcases/Bookcases.json";
import * as aed from "../assets/themes/aed/aed.json";
2020-08-22 14:00:33 +00:00
import * as toilets from "../assets/themes/toilets/toilets.json";
import * as artworks from "../assets/themes/artwork/artwork.json";
import * as cyclestreets from "../assets/themes/cyclestreets/cyclestreets.json";
import * as ghostbikes from "../assets/themes/ghostbikes/ghostbikes.json"
2020-09-17 11:13:02 +00:00
import * as cyclofix from "../assets/themes/cyclofix/cyclofix.json"
import * as buurtnatuur from "../assets/themes/buurtnatuur/buurtnatuur.json"
2020-09-19 11:37:04 +00:00
import * as nature from "../assets/themes/nature/nature.json"
import * as maps from "../assets/themes/maps/maps.json"
import * as shops from "../assets/themes/shops/shops.json"
2020-10-17 20:27:27 +00:00
import * as bike_monitoring_stations from "../assets/themes/bike_monitoring_station/bike_monitoring_stations.json"
2020-10-19 10:08:42 +00:00
import * as fritures from "../assets/themes/fritures/fritures.json"
2020-10-23 09:49:39 +00:00
import * as benches from "../assets/themes/benches/benches.json";
2020-10-23 17:26:08 +00:00
import * as charging_stations from "../assets/themes/charging_stations/charging_stations.json"
import * as widths from "../assets/themes/widths/width.json"
2020-10-23 17:26:08 +00:00
import {PersonalLayout} from "../Logic/PersonalLayout";
2020-10-27 00:01:34 +00:00
import LayerConfig from "./JSON/LayerConfig";
import SharedLayers from "./SharedLayers";
2020-07-05 16:59:47 +00:00
export class AllKnownLayouts {
2020-10-27 00:01:34 +00:00
public static allLayers: Map<string, LayerConfig> = undefined;
2020-09-17 11:13:02 +00:00
private static GenerateCycloFix(): Layout {
2020-10-27 00:01:34 +00:00
const layout = Layout.LayoutFromJSON(cyclofix, SharedLayers.sharedLayers)
2020-09-17 11:13:02 +00:00
const now = new Date();
const m = now.getMonth() + 1;
const day = new Date().getDate() + 1;
2020-09-17 11:13:02 +00:00
const date = day + "/" + m;
if (date === "31/10" || date === "1/11" || date === "2/11") {
console.log("The current date is ",date,", which means we remember our dead")
2020-09-17 11:13:02 +00:00
// Around Halloween/Fiesta de muerte/Allerzielen, we remember the dead
layout.layers.push(
2020-10-27 00:01:34 +00:00
SharedLayers.sharedLayers.get("ghost_bike")
2020-09-17 11:13:02 +00:00
);
}
return layout;
}
private static GenerateWidths(): Layout {
const layout = Layout.LayoutFromJSON(widths, SharedLayers.sharedLayers);
layout.enableUserBadge = false;
2020-11-02 18:22:11 +00:00
layout.enableShareScreen = false;
layout.enableMoreQuests = false;
layout.enableLayers = false;
layout.hideFromOverview = true;
layout.enableSearch = false;
layout.enableGeolocation = false;
return layout;
}
2020-09-17 11:13:02 +00:00
private static GenerateBuurtNatuur(): Layout {
2020-10-27 00:01:34 +00:00
const layout = Layout.LayoutFromJSON(buurtnatuur, SharedLayers.sharedLayers);
2020-09-17 11:13:02 +00:00
layout.enableMoreQuests = false;
layout.enableShareScreen = false;
layout.hideFromOverview = true;
console.log("Buurtnatuur:",layout)
2020-09-17 11:13:02 +00:00
return layout;
}
2020-10-17 20:27:27 +00:00
private static GenerateBikeMonitoringStations(): Layout {
2020-10-27 00:01:34 +00:00
const layout = Layout.LayoutFromJSON(bike_monitoring_stations, SharedLayers.sharedLayers);
2020-10-17 20:27:27 +00:00
layout.hideFromOverview = true;
return layout;
}
2020-07-31 02:58:58 +00:00
public static layoutsList: Layout[] = [
new PersonalLayout(),
2020-10-27 00:01:34 +00:00
Layout.LayoutFromJSON(shops, SharedLayers.sharedLayers),
Layout.LayoutFromJSON(bookcases, SharedLayers.sharedLayers),
Layout.LayoutFromJSON(aed, SharedLayers.sharedLayers),
Layout.LayoutFromJSON(toilets, SharedLayers.sharedLayers),
Layout.LayoutFromJSON(artworks, SharedLayers.sharedLayers),
AllKnownLayouts.GenerateCycloFix(),
2020-10-27 00:01:34 +00:00
Layout.LayoutFromJSON(ghostbikes, SharedLayers.sharedLayers),
Layout.LayoutFromJSON(nature, SharedLayers.sharedLayers),
Layout.LayoutFromJSON(cyclestreets, SharedLayers.sharedLayers),
Layout.LayoutFromJSON(maps, SharedLayers.sharedLayers),
Layout.LayoutFromJSON(fritures, SharedLayers.sharedLayers),
Layout.LayoutFromJSON(benches, SharedLayers.sharedLayers),
Layout.LayoutFromJSON(charging_stations, SharedLayers.sharedLayers),
AllKnownLayouts.GenerateWidths(),
AllKnownLayouts.GenerateBuurtNatuur(),
2020-10-17 20:27:27 +00:00
AllKnownLayouts.GenerateBikeMonitoringStations(),
2020-09-17 11:13:02 +00:00
2020-07-31 02:58:58 +00:00
];
2020-09-17 11:13:02 +00:00
2020-07-31 02:58:58 +00:00
public static allSets: Map<string, Layout> = AllKnownLayouts.AllLayouts();
2020-07-24 23:07:02 +00:00
2020-07-31 02:58:58 +00:00
private static AllLayouts(): Map<string, Layout> {
2020-10-27 00:01:34 +00:00
this.allLayers = new Map<string, LayerConfig>();
2020-07-31 02:58:58 +00:00
for (const layout of this.layoutsList) {
for (let i = 0; i < layout.layers.length; i++) {
let layer = layout.layers[i];
if (typeof (layer) === "string") {
2020-10-27 00:01:34 +00:00
layer = layout.layers[i] = SharedLayers.sharedLayers.get(layer);
if(layer === undefined){
2020-10-27 00:01:34 +00:00
console.log("Defined layers are ", SharedLayers.sharedLayers.keys())
throw `Layer ${layer} was not found or defined - probably a type was made`
}
}
2020-07-31 02:58:58 +00:00
if (this.allLayers[layer.id] !== undefined) {
2020-07-24 23:07:02 +00:00
continue;
}
2020-07-31 02:58:58 +00:00
this.allLayers[layer.id] = layer;
this.allLayers[layer.id.toLowerCase()] = layer;
2020-07-24 23:07:02 +00:00
}
}
2020-07-20 10:39:43 +00:00
const allSets: Map<string, Layout> = new Map();
2020-07-31 02:58:58 +00:00
for (const layout of this.layoutsList) {
allSets[layout.id] = layout;
allSets[layout.id.toLowerCase()] = layout;
2020-07-05 16:59:47 +00:00
}
return allSets;
}
2020-07-05 16:59:47 +00:00
}