forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			No EOL
		
	
	
		
			3.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			No EOL
		
	
	
		
			3.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {UIElement} from "../UIElement";
 | 
						|
import State from "../../State";
 | 
						|
import ThemeIntroductionPanel from "./ThemeIntroductionPanel";
 | 
						|
import * as personal from "../../assets/themes/personalLayout/personalLayout.json";
 | 
						|
import PersonalLayersPanel from "./PersonalLayersPanel";
 | 
						|
import Svg from "../../Svg";
 | 
						|
import Translations from "../i18n/Translations";
 | 
						|
import ShareScreen from "./ShareScreen";
 | 
						|
import MoreScreen from "./MoreScreen";
 | 
						|
import {VariableUiElement} from "../Base/VariableUIElement";
 | 
						|
import Constants from "../../Models/Constants";
 | 
						|
import Combine from "../Base/Combine";
 | 
						|
import Locale from "../i18n/Locale";
 | 
						|
import {TabbedComponent} from "../Base/TabbedComponent";
 | 
						|
import {UIEventSource} from "../../Logic/UIEventSource";
 | 
						|
import LayoutConfig from "../../Customizations/JSON/LayoutConfig";
 | 
						|
import UserDetails from "../../Logic/Osm/OsmConnection";
 | 
						|
import {FixedUiElement} from "../Base/FixedUiElement";
 | 
						|
import CombinedInputElement from "../Input/CombinedInputElement";
 | 
						|
 | 
						|
export default class FullWelcomePaneWithTabs extends UIElement {
 | 
						|
    private readonly _layoutToUse: UIEventSource<LayoutConfig>;
 | 
						|
    private readonly _userDetails: UIEventSource<UserDetails>;
 | 
						|
 | 
						|
    private readonly _component: UIElement;
 | 
						|
 | 
						|
    constructor() {
 | 
						|
        super(State.state.layoutToUse);
 | 
						|
        this._layoutToUse = State.state.layoutToUse;
 | 
						|
        this._userDetails = State.state.osmConnection.userDetails;
 | 
						|
 | 
						|
 | 
						|
        const layoutToUse = this._layoutToUse.data;
 | 
						|
        let welcome: UIElement = new ThemeIntroductionPanel();
 | 
						|
        if (layoutToUse.id === personal.id) {
 | 
						|
            welcome = new PersonalLayersPanel();
 | 
						|
        }
 | 
						|
        const tabs = [
 | 
						|
            {header: `<img src='${layoutToUse.icon}'>`, content: welcome},
 | 
						|
            {
 | 
						|
                header: Svg.osm_logo_img,
 | 
						|
                content: Translations.t.general.openStreetMapIntro as UIElement
 | 
						|
            },
 | 
						|
 | 
						|
        ]
 | 
						|
 | 
						|
        if (State.state.featureSwitchShareScreen.data) {
 | 
						|
            tabs.push({header: Svg.share_img, content: new ShareScreen()});
 | 
						|
        }
 | 
						|
 | 
						|
        if (State.state.featureSwitchMoreQuests.data) {
 | 
						|
 | 
						|
            tabs.push({
 | 
						|
                header: Svg.add_img,
 | 
						|
                content: new MoreScreen()
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        tabs.push({
 | 
						|
                header: Svg.help,
 | 
						|
                content: new VariableUiElement(this._userDetails.map(userdetails => {
 | 
						|
                    if (userdetails.csCount < Constants.userJourney.mapCompleteHelpUnlock) {
 | 
						|
                        return ""
 | 
						|
                    }
 | 
						|
                    return new Combine([Translations.t.general.aboutMapcomplete, "<br/>Version " + Constants.vNumber]).Render();
 | 
						|
                }, [Locale.language]))
 | 
						|
            }
 | 
						|
        );
 | 
						|
 | 
						|
        const tabbedPart = new TabbedComponent(tabs, State.state.welcomeMessageOpenedTab)
 | 
						|
            .ListenTo(this._userDetails);
 | 
						|
 | 
						|
        const backButton = new Combine([
 | 
						|
            new Combine([Translations.t.general.returnToTheMap.Clone().SetClass("to-the-map")])
 | 
						|
                .SetClass("to-the-map-inner")
 | 
						|
                
 | 
						|
        ]).SetClass("only-on-mobile")
 | 
						|
            .onClick(() => State.state.fullScreenMessage.setData(undefined));
 | 
						|
 | 
						|
        tabbedPart.SetStyle("overflow-y: auto; max-height: calc( 100vh - 4em);display:block;")
 | 
						|
        this._component = new Combine([tabbedPart, backButton]).SetStyle("width:100%;");
 | 
						|
    }
 | 
						|
 | 
						|
    InnerRender(): string {
 | 
						|
        return this._component.Render();
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
} |