add: resolution filter

v0.8
rrr-marble 3 years ago
parent 14ea755a51
commit 3ca855ff06

@ -25,6 +25,12 @@
<datalist-filter @filter="$emit('filter', $event)" /> <datalist-filter @filter="$emit('filter', $event)" />
</div> </div>
<div class="sidebar-item">
<h3>Разрешение съемки</h3>
<resolution-filter @filter="$emit('filter', $event)" />
</div>
<div class="sidebar-item"> <div class="sidebar-item">
<h3>Глубины</h3> <h3>Глубины</h3>
<depth-filter @filter="$emit('filter', $event)" /> <depth-filter @filter="$emit('filter', $event)" />
@ -45,9 +51,14 @@ import BasinFilter from "@/components/filters/BasinFilter.vue";
import ProjectFilter from "@/components/filters/ProjectFilter.vue"; import ProjectFilter from "@/components/filters/ProjectFilter.vue";
import DescriptionFilter from "@/components/filters/DescriptionFilter.vue"; import DescriptionFilter from "@/components/filters/DescriptionFilter.vue";
import DatalistFilter from "@/components/filters/DatalistFilter.vue"; import DatalistFilter from "@/components/filters/DatalistFilter.vue";
import ResolutionFilter from "@/components/filters/ResolutionFilter.vue";
export default { export default {
name: "filter-panel", name: "filter-panel",
components: { CategoryFilter, GisCategoryFilter, ScannerFilter, OrgFilter, StratumFilter, DepthFilter, BasinFilter, ProjectFilter, DescriptionFilter, DatalistFilter }, components: {
CategoryFilter, GisCategoryFilter, ScannerFilter, OrgFilter,
StratumFilter, DepthFilter, BasinFilter, ProjectFilter,
DescriptionFilter, DatalistFilter, ResolutionFilter
},
methods: {}, methods: {},
data() { data() {
return {} return {}

@ -0,0 +1,44 @@
<template>
<div class="range-input">
<va-input placeholder="1.59" v-model="reso_min" input-class="text--center"
:mask="{ numeral: true, delimiter: '', numeralDecimalMark: ',' }" @change="applyFilter" />
<va-input placeholder="264" v-model="reso_max" input-class="text--center"
:mask="{ numeral: true, delimiter: '', numeralDecimalMark: ',' }" @change="applyFilter" />
</div>
</template>
<script>
export default {
name: "resolution-filter",
data() {
return {
// SELECT MIN(resolution), MAX(resolution) FROM geodata;
reso_min: "1.59",
reso_max: "264",
}
},
methods: {
applyFilter() {
console.log("asd");
const filter = { "resolution": [this.reso_min, this.reso_max] }
this.$emit('filter', filter, this.name)
},
},
}
</script>
<style lang="css">
.range-input {
display: flex;
flex-direction: row;
justify-content: space-between;
gap: 5rem
}
.range-input>div {
--va-input-wrapper-min-width: 4rem;
width: 4rem;
}
</style>

@ -91,6 +91,17 @@ export default {
if (item.depth_max < filterValues[0] || item.depth_min > filterValues[1]) { if (item.depth_max < filterValues[0] || item.depth_min > filterValues[1]) {
return false; return false;
} }
} else if (filterParam === "resolution") {
if (
// we control resolution input format, so we can be reasonbly sure
// it has upto one comma to denote decimal point and no dots
// therefore it's safe to normalize it into
// JavaScript definition of a decimal literal
item.resolution < parseFloat(filterValues[0].replace(/,/, '.'))
|| item.resolution > parseFloat(filterValues[1].replace(/,/, '.'))
) {
return false;
}
} else if (filterParam === "datalist") { } else if (filterParam === "datalist") {
// for all selected datalist options check if we can find it in the datalist string // for all selected datalist options check if we can find it in the datalist string
for (let datalistOption of filterValues) { for (let datalistOption of filterValues) {

Loading…
Cancel
Save