forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			No EOL
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			No EOL
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {UIElement} from "../UIElement";
 | 
						|
import {VariableUiElement} from "../Base/VariableUIElement";
 | 
						|
import {UIEventSource} from "../../Logic/UIEventSource";
 | 
						|
import {LayoutConfigJson} from "../../Customizations/JSON/LayoutConfigJson";
 | 
						|
import Combine from "../Base/Combine";
 | 
						|
import {OsmConnection} from "../../Logic/Osm/OsmConnection";
 | 
						|
import {FixedUiElement} from "../Base/FixedUiElement";
 | 
						|
 | 
						|
export default class SavePanel extends UIElement {
 | 
						|
    private json: UIElement;
 | 
						|
    private lastSaveEl: UIElement;
 | 
						|
 | 
						|
    constructor(
 | 
						|
        connection: OsmConnection,
 | 
						|
        config: UIEventSource<LayoutConfigJson>,
 | 
						|
        chronic: UIEventSource<Date>) {
 | 
						|
        super();
 | 
						|
 | 
						|
     
 | 
						|
 | 
						|
        this.lastSaveEl = new VariableUiElement(chronic
 | 
						|
            .map(date => {
 | 
						|
                if (date === undefined) {
 | 
						|
                    return new FixedUiElement("Your theme will be saved automatically within two minutes... Click here to force saving").SetClass("alert").Render()
 | 
						|
                }
 | 
						|
                return "Your theme was last saved at " + date.toISOString()
 | 
						|
            })).onClick(() => chronic.setData(new Date()));
 | 
						|
 | 
						|
        this.json = new VariableUiElement(config.map(config => {
 | 
						|
            return JSON.stringify(config, null, 2)
 | 
						|
                .replace(/\n/g, "<br/>")
 | 
						|
                .replace(/ /g, " ");
 | 
						|
        }))
 | 
						|
            .SetClass("literal-code");
 | 
						|
    }
 | 
						|
 | 
						|
    InnerRender(): string {
 | 
						|
        return new Combine([
 | 
						|
            "<h3>Saving</h3>",
 | 
						|
            this.lastSaveEl,
 | 
						|
            "<h3>JSON configuration</h3>",
 | 
						|
            "The url hash is actually no more then a BASE64-encoding of the below JSON. This json contains the full configuration of the theme.<br/>" +
 | 
						|
            "This configuration is mainly useful for debugging",
 | 
						|
            this.json
 | 
						|
        ]).SetClass("scrollable")
 | 
						|
            .Render();
 | 
						|
    }
 | 
						|
 | 
						|
} |