forked from MapComplete/MapComplete
Feature(create_copy): add layer filter lock
This commit is contained in:
parent
6a200e04bc
commit
d78207c98a
3 changed files with 48 additions and 2 deletions
|
@ -24,7 +24,9 @@ export default class FilteredLayer {
|
|||
|
||||
/**
|
||||
* Indicates if some filter is set.
|
||||
* If this is the case, adding a new element of this type might be a bad idea
|
||||
* If this is the case, adding a new element of this type might be a bad idea.
|
||||
*
|
||||
* Does not include the global filters
|
||||
*/
|
||||
readonly hasFilter: Store<boolean>
|
||||
|
||||
|
|
|
@ -72,6 +72,12 @@ export class MenuState {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
this.pageStates.filter.addCallback(opened => {
|
||||
if(!opened){
|
||||
this.highlightedLayerInFilters.set(undefined)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
public openMenuIfNeeded(shouldShowWelcomeMessage: boolean, themeid: string) {
|
||||
|
|
|
@ -22,6 +22,9 @@
|
|||
import Loading from "../../Base/Loading.svelte"
|
||||
import CreateNewNodeAction from "../../../Logic/Osm/Actions/CreateNewNodeAction"
|
||||
import DocumentDuplicate from "@babeard/svelte-heroicons/solid/DocumentDuplicate"
|
||||
import type { GlobalFilter } from "../../../Models/GlobalFilter"
|
||||
import { EyeOffIcon } from "@rgossiaux/svelte-heroicons/solid"
|
||||
import Layers from "../../../assets/svg/Layers.svelte"
|
||||
|
||||
export let state: ThemeViewState
|
||||
export let layer: LayerConfig
|
||||
|
@ -46,6 +49,8 @@
|
|||
let creatingCopy = new UIEventSource(false)
|
||||
|
||||
const t = Translations.t.copy
|
||||
let globalFilter: UIEventSource<GlobalFilter[]> = state.layerState.globalFilters
|
||||
let hasFilter = state.layerState.filteredLayers.get(layer.id).hasFilter
|
||||
|
||||
async function createCopy() {
|
||||
creatingCopy.set(true)
|
||||
|
@ -84,12 +89,45 @@
|
|||
state.mapProperties.location.setData(location)
|
||||
|
||||
}
|
||||
|
||||
async function abort(){
|
||||
showPopup.set(false)
|
||||
}
|
||||
</script>
|
||||
|
||||
<Popup shown={showPopup} fullscreen>
|
||||
<Tr slot="header" t={t.title} />
|
||||
|
||||
{#if $creatingCopy}
|
||||
{#if $globalFilter?.length >0 }
|
||||
{#if $hasFilter}
|
||||
<!-- Some filters are enabled. The feature to add might already be mapped, but hidden -->
|
||||
<div class="alert flex items-center justify-center">
|
||||
<EyeOffIcon class="w-8" />
|
||||
<Tr t={Translations.t.general.add.disableFiltersExplanation} />
|
||||
</div>
|
||||
<div class="flex flex-wrap-reverse md:flex-nowrap">
|
||||
<button
|
||||
class="primary flex w-full gap-x-1"
|
||||
on:click={() => {
|
||||
abort()
|
||||
state.layerState.filteredLayers.get(layer.id).disableAllFilters()
|
||||
}}
|
||||
>
|
||||
<EyeOffIcon class="w-12" />
|
||||
<Tr t={Translations.t.general.add.disableFilters} />
|
||||
</button>
|
||||
<button
|
||||
class="flex w-full gap-x-1"
|
||||
on:click={() => {
|
||||
abort()
|
||||
state.guistate.openFilterView(layer)
|
||||
}}
|
||||
>
|
||||
<Layers class="w-12" />
|
||||
<Tr t={Translations.t.general.add.openLayerControl} />
|
||||
</button>
|
||||
</div>
|
||||
{:else if $creatingCopy}
|
||||
<div class="h-full flex flex-col justify-center">
|
||||
<div class="h-fit flex justify-center">
|
||||
<Loading>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue