forked from MapComplete/MapComplete
		
	Finetuning of various features
This commit is contained in:
		
							parent
							
								
									1b5737a06c
								
							
						
					
					
						commit
						c175202006
					
				
					 4 changed files with 522 additions and 526 deletions
				
			
		| 
						 | 
					@ -1,19 +1,19 @@
 | 
				
			||||||
import { CenterFlexedElement } from "./UI/Base/CenterFlexedElement";
 | 
					import {CenterFlexedElement} from "./UI/Base/CenterFlexedElement";
 | 
				
			||||||
import { FixedUiElement } from "./UI/Base/FixedUiElement";
 | 
					import {FixedUiElement} from "./UI/Base/FixedUiElement";
 | 
				
			||||||
import Toggle from "./UI/Input/Toggle";
 | 
					import Toggle from "./UI/Input/Toggle";
 | 
				
			||||||
import { Basemap } from "./UI/BigComponents/Basemap";
 | 
					import {Basemap} from "./UI/BigComponents/Basemap";
 | 
				
			||||||
import State from "./State";
 | 
					import State from "./State";
 | 
				
			||||||
import LoadFromOverpass from "./Logic/Actors/OverpassFeatureSource";
 | 
					import LoadFromOverpass from "./Logic/Actors/OverpassFeatureSource";
 | 
				
			||||||
import { UIEventSource } from "./Logic/UIEventSource";
 | 
					import {UIEventSource} from "./Logic/UIEventSource";
 | 
				
			||||||
import { QueryParameters } from "./Logic/Web/QueryParameters";
 | 
					import {QueryParameters} from "./Logic/Web/QueryParameters";
 | 
				
			||||||
import StrayClickHandler from "./Logic/Actors/StrayClickHandler";
 | 
					import StrayClickHandler from "./Logic/Actors/StrayClickHandler";
 | 
				
			||||||
import SimpleAddUI from "./UI/BigComponents/SimpleAddUI";
 | 
					import SimpleAddUI from "./UI/BigComponents/SimpleAddUI";
 | 
				
			||||||
import CenterMessageBox from "./UI/CenterMessageBox";
 | 
					import CenterMessageBox from "./UI/CenterMessageBox";
 | 
				
			||||||
import UserBadge from "./UI/BigComponents/UserBadge";
 | 
					import UserBadge from "./UI/BigComponents/UserBadge";
 | 
				
			||||||
import SearchAndGo from "./UI/BigComponents/SearchAndGo";
 | 
					import SearchAndGo from "./UI/BigComponents/SearchAndGo";
 | 
				
			||||||
import GeoLocationHandler from "./Logic/Actors/GeoLocationHandler";
 | 
					import GeoLocationHandler from "./Logic/Actors/GeoLocationHandler";
 | 
				
			||||||
import { LocalStorageSource } from "./Logic/Web/LocalStorageSource";
 | 
					import {LocalStorageSource} from "./Logic/Web/LocalStorageSource";
 | 
				
			||||||
import { Utils } from "./Utils";
 | 
					import {Utils} from "./Utils";
 | 
				
			||||||
import Svg from "./Svg";
 | 
					import Svg from "./Svg";
 | 
				
			||||||
import Link from "./UI/Base/Link";
 | 
					import Link from "./UI/Base/Link";
 | 
				
			||||||
import * as personal from "./assets/themes/personal/personal.json"
 | 
					import * as personal from "./assets/themes/personal/personal.json"
 | 
				
			||||||
| 
						 | 
					@ -34,7 +34,7 @@ import MapControlButton from "./UI/MapControlButton";
 | 
				
			||||||
import Combine from "./UI/Base/Combine";
 | 
					import Combine from "./UI/Base/Combine";
 | 
				
			||||||
import SelectedFeatureHandler from "./Logic/Actors/SelectedFeatureHandler";
 | 
					import SelectedFeatureHandler from "./Logic/Actors/SelectedFeatureHandler";
 | 
				
			||||||
import LZString from "lz-string";
 | 
					import LZString from "lz-string";
 | 
				
			||||||
import { LayoutConfigJson } from "./Customizations/JSON/LayoutConfigJson";
 | 
					import {LayoutConfigJson} from "./Customizations/JSON/LayoutConfigJson";
 | 
				
			||||||
import AttributionPanel from "./UI/BigComponents/AttributionPanel";
 | 
					import AttributionPanel from "./UI/BigComponents/AttributionPanel";
 | 
				
			||||||
import ContributorCount from "./Logic/ContributorCount";
 | 
					import ContributorCount from "./Logic/ContributorCount";
 | 
				
			||||||
import FeatureSource from "./Logic/FeatureSource/FeatureSource";
 | 
					import FeatureSource from "./Logic/FeatureSource/FeatureSource";
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,6 @@ import LayerConfig from "./Customizations/JSON/LayerConfig";
 | 
				
			||||||
import AvailableBaseLayers from "./Logic/Actors/AvailableBaseLayers";
 | 
					import AvailableBaseLayers from "./Logic/Actors/AvailableBaseLayers";
 | 
				
			||||||
import {TagsFilter} from "./Logic/Tags/TagsFilter";
 | 
					import {TagsFilter} from "./Logic/Tags/TagsFilter";
 | 
				
			||||||
import FilterView from "./UI/BigComponents/FilterView";
 | 
					import FilterView from "./UI/BigComponents/FilterView";
 | 
				
			||||||
import ExportPDF from "./Logic/Actors/ExportPDF";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class InitUiElements {
 | 
					export class InitUiElements {
 | 
				
			||||||
    static InitAll(
 | 
					    static InitAll(
 | 
				
			||||||
| 
						 | 
					@ -59,7 +58,8 @@ export class InitUiElements {
 | 
				
			||||||
                `Error: incorrect layout <i>${layoutName}</i><br/><a href='https://${window.location.host}/'>Go back</a>`
 | 
					                `Error: incorrect layout <i>${layoutName}</i><br/><a href='https://${window.location.host}/'>Go back</a>`
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
                .AttachTo("centermessage")
 | 
					                .AttachTo("centermessage")
 | 
				
			||||||
        .onClick(() => {});
 | 
					                .onClick(() => {
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
            throw "Incorrect layout";
 | 
					            throw "Incorrect layout";
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -187,7 +187,7 @@ export class InitUiElements {
 | 
				
			||||||
                    iconSize: [30, 30],
 | 
					                    iconSize: [30, 30],
 | 
				
			||||||
                    iconAnchor: [15, 15],
 | 
					                    iconAnchor: [15, 15],
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
        const marker = L.marker([home.lat, home.lon], { icon: icon });
 | 
					                const marker = L.marker([home.lat, home.lon], {icon: icon});
 | 
				
			||||||
                marker.addTo(State.state.leafletMap.data);
 | 
					                marker.addTo(State.state.leafletMap.data);
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -222,9 +222,7 @@ export class InitUiElements {
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        new Combine(
 | 
					        new Combine(
 | 
				
			||||||
      [plus, min, geolocationButton].map((el) =>
 | 
					            [plus, min, geolocationButton]
 | 
				
			||||||
        el.SetClass("m-0.5 md:m-1")
 | 
					 | 
				
			||||||
      )
 | 
					 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
            .SetClass("flex flex-col")
 | 
					            .SetClass("flex flex-col")
 | 
				
			||||||
            .AttachTo("bottom-right");
 | 
					            .AttachTo("bottom-right");
 | 
				
			||||||
| 
						 | 
					@ -372,10 +370,18 @@ export class InitUiElements {
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const filterView = new FilterView(State.state.filteredLayers).SetClass(
 | 
					        const filterView = 
 | 
				
			||||||
 | 
					            new ScrollableFullScreen(
 | 
				
			||||||
 | 
					                () => Translations.t.general.layerSelection.title.Clone(),
 | 
				
			||||||
 | 
					                () => 
 | 
				
			||||||
 | 
					                    new FilterView(State.state.filteredLayers).SetClass(
 | 
				
			||||||
                        "block p-1 rounded-full"
 | 
					                        "block p-1 rounded-full"
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                "filter",
 | 
				
			||||||
 | 
					                State.state.filterIsOpened
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const filterMapControlButton = new MapControlButton(
 | 
					        const filterMapControlButton = new MapControlButton(
 | 
				
			||||||
            new CenterFlexedElement(
 | 
					            new CenterFlexedElement(
 | 
				
			||||||
                Img.AsImageElement(Svg.filter, "", "width:1.25rem;height:1.25rem")
 | 
					                Img.AsImageElement(Svg.filter, "", "width:1.25rem;height:1.25rem")
 | 
				
			||||||
| 
						 | 
					@ -385,18 +391,18 @@ export class InitUiElements {
 | 
				
			||||||
        const filterButton = new Toggle(
 | 
					        const filterButton = new Toggle(
 | 
				
			||||||
            filterView,
 | 
					            filterView,
 | 
				
			||||||
            filterMapControlButton,
 | 
					            filterMapControlButton,
 | 
				
			||||||
      State.state.FilterIsOpened
 | 
					            State.state.filterIsOpened
 | 
				
			||||||
        ).ToggleOnClick();
 | 
					        ).ToggleOnClick();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const filterControl = new Toggle(
 | 
					        const filterControl = new Toggle(
 | 
				
			||||||
            filterButton,
 | 
					            filterButton,
 | 
				
			||||||
      "",
 | 
					            undefined,
 | 
				
			||||||
            State.state.featureSwitchFilter
 | 
					            State.state.featureSwitchFilter
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    new Combine([copyrightButton, layerControl, filterControl]).AttachTo(
 | 
					        new Combine([copyrightButton, layerControl, filterControl])
 | 
				
			||||||
      "bottom-left"
 | 
					            .SetClass("flex flex-col")
 | 
				
			||||||
    );
 | 
					            .AttachTo("bottom-left");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        State.state.locationControl.addCallback(() => {
 | 
					        State.state.locationControl.addCallback(() => {
 | 
				
			||||||
            // Close the layer selection when the map is moved
 | 
					            // Close the layer selection when the map is moved
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										4
									
								
								State.ts
									
										
									
									
									
								
							
							
						
						
									
										4
									
								
								State.ts
									
										
									
									
									
								
							| 
						 | 
					@ -137,11 +137,11 @@ export default class State {
 | 
				
			||||||
            (b) => "" + b
 | 
					            (b) => "" + b
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public FilterIsOpened: UIEventSource<boolean> =
 | 
					    public filterIsOpened: UIEventSource<boolean> =
 | 
				
			||||||
        QueryParameters.GetQueryParameter(
 | 
					        QueryParameters.GetQueryParameter(
 | 
				
			||||||
            "filter-toggle",
 | 
					            "filter-toggle",
 | 
				
			||||||
            "false",
 | 
					            "false",
 | 
				
			||||||
            "Whether or not the filter is shown"
 | 
					            "Whether or not the filter view is shown"
 | 
				
			||||||
        ).map<boolean>(
 | 
					        ).map<boolean>(
 | 
				
			||||||
            (str) => str !== "false",
 | 
					            (str) => str !== "false",
 | 
				
			||||||
            [],
 | 
					            [],
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,6 @@ import Translations from "../i18n/Translations";
 | 
				
			||||||
import {UIEventSource} from "../../Logic/UIEventSource";
 | 
					import {UIEventSource} from "../../Logic/UIEventSource";
 | 
				
			||||||
import BaseUIElement from "../BaseUIElement";
 | 
					import BaseUIElement from "../BaseUIElement";
 | 
				
			||||||
import Toggle from "../Input/Toggle";
 | 
					import Toggle from "../Input/Toggle";
 | 
				
			||||||
import FilterView from "./FilterView";
 | 
					 | 
				
			||||||
import {DownloadPanel} from "./DownloadPanel";
 | 
					import {DownloadPanel} from "./DownloadPanel";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class LayerControlPanel extends ScrollableFullScreen {
 | 
					export default class LayerControlPanel extends ScrollableFullScreen {
 | 
				
			||||||
| 
						 | 
					@ -31,15 +30,6 @@ export default class LayerControlPanel extends ScrollableFullScreen {
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
            elements.push(backgroundSelector)
 | 
					            elements.push(backgroundSelector)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        elements.push(
 | 
					 | 
				
			||||||
            new Toggle(
 | 
					 | 
				
			||||||
                new FilterView(State.state.filteredLayers),
 | 
					 | 
				
			||||||
                undefined,
 | 
					 | 
				
			||||||
                State.state.filteredLayers.map(
 | 
					 | 
				
			||||||
                    (layers) => layers.length > 1 || layers[0].layerDef.filters.length > 0
 | 
					 | 
				
			||||||
                )
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        elements.push(new Toggle(
 | 
					        elements.push(new Toggle(
 | 
				
			||||||
            new DownloadPanel(),
 | 
					            new DownloadPanel(),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@ export default class MapControlButton extends Combine {
 | 
				
			||||||
  constructor(contents: BaseUIElement) {
 | 
					  constructor(contents: BaseUIElement) {
 | 
				
			||||||
    super([contents]);
 | 
					    super([contents]);
 | 
				
			||||||
    this.SetClass(
 | 
					    this.SetClass(
 | 
				
			||||||
      "relative block rounded-full w-10 h-10 p-1 pointer-events-auto z-above-map subtle-background"
 | 
					      "relative block rounded-full w-10 h-10 p-1 pointer-events-auto z-above-map subtle-background m-0.5 md:m-1"
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    this.SetStyle("box-shadow: 0 0 10px var(--shadow-color);");
 | 
					    this.SetStyle("box-shadow: 0 0 10px var(--shadow-color);");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue