added filter ui
This commit is contained in:
parent
4abe74fbf1
commit
0f2a2c651a
4 changed files with 55 additions and 7 deletions
|
@ -1,17 +1,18 @@
|
||||||
import {UIElement} from "../UIElement";
|
import {UIElement} from "../UIElement";
|
||||||
import {UIEventSource} from "../UIEventSource";
|
import {UIEventSource} from "../UIEventSource";
|
||||||
|
import { FilteredLayer } from "../../Logic/FilteredLayer";
|
||||||
|
|
||||||
|
|
||||||
export class CheckBox extends UIElement{
|
export class CheckBox extends UIElement{
|
||||||
|
|
||||||
constructor(data: UIEventSource<boolean>) {
|
constructor(data: UIEventSource<boolean>, name: String) {
|
||||||
super(data);
|
super(data);
|
||||||
|
this.data = data;
|
||||||
|
this.name = name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected InnerRender(): string {
|
protected InnerRender(): string {
|
||||||
return "";
|
return `${this.data.data? `<svg class="checkbox__check" width="28" height="20" viewBox="0 0 28 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 8L11.5 17L25.5 3" stroke="#003B8B" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/></svg><p class="checkbox__label--checked">${this.name}</p>`: `<p class="checkbox__label--unchecked">${this.name}</p>`}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
24
index.css
24
index.css
|
@ -254,6 +254,30 @@ form {
|
||||||
pointer-events: all;
|
pointer-events: all;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#filterui {
|
||||||
|
padding: 2em;
|
||||||
|
padding-top: 1em;
|
||||||
|
padding-bottom: 1em;
|
||||||
|
z-index: 5000;
|
||||||
|
background-color: white;
|
||||||
|
border-radius: 2em;
|
||||||
|
pointer-events: all;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#filterui li span {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox__label--checked {
|
||||||
|
margin-left: .7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox__label--unchecked {
|
||||||
|
margin-left: 2.45rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@media only screen and (max-width: 600px) {
|
@media only screen and (max-width: 600px) {
|
||||||
#messagesbox-wrapper {
|
#messagesbox-wrapper {
|
||||||
|
|
|
@ -36,6 +36,8 @@
|
||||||
<div id="collapseButton"></div>
|
<div id="collapseButton"></div>
|
||||||
<div id="messagesbox"></div>
|
<div id="messagesbox"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<ul id="filterui">
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
23
index.ts
23
index.ts
|
@ -22,6 +22,8 @@ import {SearchAndGo} from "./UI/SearchAndGo";
|
||||||
import {CollapseButton} from "./UI/Base/CollapseButton";
|
import {CollapseButton} from "./UI/Base/CollapseButton";
|
||||||
import {AllKnownLayouts} from "./Customizations/AllKnownLayouts";
|
import {AllKnownLayouts} from "./Customizations/AllKnownLayouts";
|
||||||
import { All } from "./Customizations/Layouts/All";
|
import { All } from "./Customizations/Layouts/All";
|
||||||
|
import {CheckBox} from "./UI/Base/CheckBox";
|
||||||
|
import { DrinkingWater } from "./Customizations/Layers/DrinkingWater";
|
||||||
|
|
||||||
|
|
||||||
// --------------------- Read the URL parameters -----------------
|
// --------------------- Read the URL parameters -----------------
|
||||||
|
@ -48,7 +50,7 @@ if (location.hostname === "localhost" || location.hostname === "127.0.0.1") {
|
||||||
// ----------------- SELECT THE RIGHT QUESTSET -----------------
|
// ----------------- SELECT THE RIGHT QUESTSET -----------------
|
||||||
|
|
||||||
|
|
||||||
let defaultLayout = "buurtnatuur"
|
let defaultLayout = "walkbybrussels"
|
||||||
|
|
||||||
|
|
||||||
// Run over all questsets. If a part of the URL matches a searched-for part in the layout, it'll take that as the default
|
// Run over all questsets. If a part of the URL matches a searched-for part in the layout, it'll take that as the default
|
||||||
|
@ -177,6 +179,9 @@ for (const layer of layoutToUse.layers) {
|
||||||
}
|
}
|
||||||
addButtons.push(addButton);
|
addButtons.push(addButton);
|
||||||
flayers.push(flayer);
|
flayers.push(flayer);
|
||||||
|
|
||||||
|
console.log(flayers);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const layerUpdater = new LayerUpdater(bm, minZoom, flayers);
|
const layerUpdater = new LayerUpdater(bm, minZoom, flayers);
|
||||||
|
@ -277,3 +282,19 @@ new GeoLocationHandler(bm).AttachTo("geolocate-button");
|
||||||
|
|
||||||
locationControl.ping();
|
locationControl.ping();
|
||||||
messageBox.update();
|
messageBox.update();
|
||||||
|
|
||||||
|
// --------------- Setting up filter ui --------
|
||||||
|
|
||||||
|
for (let i = 0; i < flayers.length; i++) {
|
||||||
|
const listItem = document.createElement(`li`);
|
||||||
|
listItem.setAttribute(`id`,`${flayers[i].name}`)
|
||||||
|
document.querySelector(`#filterui`).appendChild(listItem);
|
||||||
|
const eventSource = new UIEventSource(flayers[i].isDisplayed.data);
|
||||||
|
new CheckBox(eventSource, flayers[i].name)
|
||||||
|
.onClick(() => {
|
||||||
|
eventSource.setData(!eventSource.data);
|
||||||
|
flayers[i].isDisplayed.setData(eventSource.data);
|
||||||
|
})
|
||||||
|
.AttachTo(flayers[i].name);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue