forked from MapComplete/MapComplete
Fix bbox bug, add ids to filters, add filter state to the URL
This commit is contained in:
parent
38037014b0
commit
0a9e7c0b36
23 changed files with 248 additions and 59 deletions
|
@ -2,7 +2,7 @@ import {Utils} from "../Utils";
|
|||
|
||||
export default class Constants {
|
||||
|
||||
public static vNumber = "0.10.0-alpha-2";
|
||||
public static vNumber = "0.10.0-alpha-3";
|
||||
public static ImgurApiKey = '7070e7167f0a25a'
|
||||
|
||||
// The user journey states thresholds when a new feature gets unlocked
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
import {UIEventSource} from "../Logic/UIEventSource";
|
||||
import LayerConfig from "./ThemeConfig/LayerConfig";
|
||||
import {And} from "../Logic/Tags/And";
|
||||
import FilterConfig from "./ThemeConfig/FilterConfig";
|
||||
|
||||
export default interface FilteredLayer {
|
||||
readonly isDisplayed: UIEventSource<boolean>;
|
||||
readonly appliedFilters: UIEventSource<And>;
|
||||
readonly appliedFilters: UIEventSource<{filter: FilterConfig, selected: number}[]>;
|
||||
readonly layerDef: LayerConfig;
|
||||
}
|
|
@ -5,7 +5,8 @@ import Translations from "../../UI/i18n/Translations";
|
|||
import {TagUtils} from "../../Logic/Tags/TagUtils";
|
||||
|
||||
export default class FilterConfig {
|
||||
readonly options: {
|
||||
public readonly id: string
|
||||
public readonly options: {
|
||||
question: Translation;
|
||||
osmTags: TagsFilter;
|
||||
}[];
|
||||
|
@ -14,11 +15,18 @@ export default class FilterConfig {
|
|||
if (json.options === undefined) {
|
||||
throw `A filter without options was given at ${context}`
|
||||
}
|
||||
if (json.id === undefined) {
|
||||
throw `A filter without id was found at ${context}`
|
||||
}
|
||||
if(json.id.match(/^[a-zA-Z0-9_-]*$/) === null){
|
||||
throw `A filter with invalid id was found at ${context}. Ids should only contain letters, numbers or - _`
|
||||
|
||||
}
|
||||
|
||||
if (json.options.map === undefined) {
|
||||
throw `A filter was given where the options aren't a list at ${context}`
|
||||
}
|
||||
|
||||
this.id = json.id;
|
||||
this.options = json.options.map((option, i) => {
|
||||
const question = Translations.T(
|
||||
option.question,
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
import {AndOrTagConfigJson} from "./TagConfigJson";
|
||||
|
||||
export default interface FilterConfigJson {
|
||||
/**
|
||||
* An id/name for this filter, used to set the URL parameters
|
||||
*/
|
||||
id: string,
|
||||
/**
|
||||
* The options for a filter
|
||||
* If there are multiple options these will be a list of radio buttons
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue