forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import LayoutConfig from "./JSON/LayoutConfig";
 | 
						|
import AllKnownLayers from "./AllKnownLayers";
 | 
						|
import * as known_themes from "../assets/generated/known_layers_and_themes.json"
 | 
						|
import {LayoutConfigJson} from "./JSON/LayoutConfigJson";
 | 
						|
import * as all_layouts from "../assets/generated/known_layers_and_themes.json"
 | 
						|
export class AllKnownLayouts {
 | 
						|
 | 
						|
 | 
						|
    public static allKnownLayouts: Map<string, LayoutConfig> = AllKnownLayouts.AllLayouts();
 | 
						|
    public static layoutsList: LayoutConfig[] = AllKnownLayouts.GenerateOrderedList(AllKnownLayouts.allKnownLayouts);
 | 
						|
 | 
						|
    private static GenerateOrderedList(allKnownLayouts: Map<string, LayoutConfig>): LayoutConfig[] {
 | 
						|
        const keys = ["personal", "cyclofix", "hailhydrant", "bookcases", "toilets", "aed"]
 | 
						|
        const list = []
 | 
						|
        for (const key of keys) {
 | 
						|
            list.push(allKnownLayouts.get(key))
 | 
						|
        }
 | 
						|
        allKnownLayouts.forEach((layout, key) => {
 | 
						|
            if (keys.indexOf(key) < 0) {
 | 
						|
                list.push(layout)
 | 
						|
            }
 | 
						|
        })
 | 
						|
        return list;
 | 
						|
    }
 | 
						|
 | 
						|
    private static AddGhostBikes(layout: LayoutConfig): LayoutConfig {
 | 
						|
        const now = new Date();
 | 
						|
        const m = now.getMonth() + 1;
 | 
						|
        const day = new Date().getDate() + 1;
 | 
						|
        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")
 | 
						|
            // Around Halloween/Fiesta de muerte/Allerzielen, we remember the dead
 | 
						|
            layout.layers.push(
 | 
						|
                AllKnownLayers.sharedLayers.get("ghost_bike")
 | 
						|
            );
 | 
						|
 | 
						|
        }
 | 
						|
        return layout;
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    private static AllLayouts(): Map<string, LayoutConfig> {
 | 
						|
        const dict: Map<string, LayoutConfig> = new Map();
 | 
						|
        for (const layoutConfigJson of known_themes.themes) {
 | 
						|
            const layout = new LayoutConfig(layoutConfigJson, true)
 | 
						|
 | 
						|
            if (layout.id === "cyclofix") {
 | 
						|
                AllKnownLayouts.AddGhostBikes(layout)
 | 
						|
            }
 | 
						|
            dict.set(layout.id, layout)
 | 
						|
 | 
						|
            for (let i = 0; i < layout.layers.length; i++) {
 | 
						|
                let layer = layout.layers[i];
 | 
						|
                if (typeof (layer) === "string") {
 | 
						|
                    layer = layout.layers[i] = AllKnownLayers.sharedLayers.get(layer);
 | 
						|
                    if (layer === undefined) {
 | 
						|
                        console.log("Defined layers are ", AllKnownLayers.sharedLayers.keys())
 | 
						|
                        throw `Layer ${layer} was not found or defined - probably a type was made`
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return dict;
 | 
						|
    }
 | 
						|
 | 
						|
}
 |