Add configuration option to use a date picker instead of date slider

This commit is contained in:
simon987 2022-01-22 14:41:01 -05:00
parent b799a2e976
commit cf56bdfb74
6 changed files with 70 additions and 11 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,31 @@
<template> <template>
<div id="dateSlider"></div> <div v-if="$store.state.optUseDatePicker">
<b-row>
<b-col sm="6">
<b-form-datepicker
value-as-date
:date-format-options="{ year: 'numeric', month: '2-digit', day: '2-digit' }"
:locale="$store.state.optLang"
class="mb-2"
:value="dateMin" @input="setDateMin"></b-form-datepicker>
</b-col>
<b-col sm="6">
<b-form-datepicker
value-as-date
:date-format-options="{ year: 'numeric', month: '2-digit', day: '2-digit' }"
:locale="$store.state.optLang"
class="mb-2"
:value="dateMax" @input="setDateMax"></b-form-datepicker>
</b-col>
</b-row>
</div>
<div v-else>
<b-row>
<b-col style="height: 70px;">
<div id="dateSlider"></div>
</b-col>
</b-row>
</div>
</template> </template>
<script> <script>
@ -10,11 +36,36 @@ import {mergeTooltips} from "@/util-js";
export default { export default {
name: "DateSlider", name: "DateSlider",
methods: {
setDateMin(val) {
const epochDate = Math.ceil(+val / 1000);
this.$store.commit("setDateMin", epochDate);
},
setDateMax(val) {
const epochDate = Math.ceil(+val / 1000);
this.$store.commit("setDateMax", epochDate);
},
},
computed: {
dateMin() {
const dateMin = this.$store.state.dateMin ? this.$store.state.dateMin : this.$store.state.dateBoundsMin;
return new Date(dateMin * 1000)
},
dateMax() {
const dateMax = this.$store.state.dateMax ? this.$store.state.dateMax : this.$store.state.dateBoundsMax;
return new Date(dateMax * 1000)
}
},
mounted() { mounted() {
this.$store.subscribe((mutation) => { this.$store.subscribe((mutation) => {
if (mutation.type === "setDateBoundsMax") { if (mutation.type === "setDateBoundsMax") {
const elem = document.getElementById("dateSlider"); const elem = document.getElementById("dateSlider");
if (elem === null) {
// Using b-form-datepicker, skip initialisation of slider
return
}
if (elem.children.length > 0) { if (elem.children.length > 0) {
return; return;
} }

View File

@ -67,7 +67,8 @@ export default {
tagOrOperator: "Use OR operator when specifying multiple tags.", tagOrOperator: "Use OR operator when specifying multiple tags.",
hideDuplicates: "Hide duplicate results based on checksum", hideDuplicates: "Hide duplicate results based on checksum",
hideLegacy: "Hide the 'legacyES' Elasticsearch notice", hideLegacy: "Hide the 'legacyES' Elasticsearch notice",
updateMimeMap: "Update the Media Types tree in real time" updateMimeMap: "Update the Media Types tree in real time",
useDatePicker: "Use a Date Picker component rather than a slider"
}, },
queryMode: { queryMode: {
simple: "Simple", simple: "Simple",
@ -229,7 +230,8 @@ export default {
tagOrOperator: "Utiliser l'opérateur OU lors de la spécification de plusieurs tags", tagOrOperator: "Utiliser l'opérateur OU lors de la spécification de plusieurs tags",
hideDuplicates: "Masquer les résultats en double", hideDuplicates: "Masquer les résultats en double",
hideLegacy: "Masquer la notice 'legacyES' Elasticsearch", hideLegacy: "Masquer la notice 'legacyES' Elasticsearch",
updateMimeMap: "Mettre à jour l'arbre de Types de médias en temps réel" updateMimeMap: "Mettre à jour l'arbre de Types de médias en temps réel",
useDatePicker: "Afficher un composant « Date Picker » plutôt qu'un slider"
}, },
queryMode: { queryMode: {
simple: "Simple", simple: "Simple",
@ -391,7 +393,8 @@ export default {
tagOrOperator: "使用或操作OR匹配多个标签。", tagOrOperator: "使用或操作OR匹配多个标签。",
hideDuplicates: "使用校验码隐藏重复结果", hideDuplicates: "使用校验码隐藏重复结果",
hideLegacy: "隐藏'legacyES' Elasticsearch 通知", hideLegacy: "隐藏'legacyES' Elasticsearch 通知",
updateMimeMap: "媒体类型树的实时更新" updateMimeMap: "媒体类型树的实时更新",
useDatePicker: "使用日期选择器组件而不是滑块"
}, },
queryMode: { queryMode: {
simple: "简单", simple: "简单",

View File

@ -49,6 +49,7 @@ export default new Vuex.Store({
optLightboxSlideDuration: 15, optLightboxSlideDuration: 15,
optHideLegacy: false, optHideLegacy: false,
optUpdateMimeMap: true, optUpdateMimeMap: true,
optUseDatePicker: false,
_onLoadSelectedIndices: [] as string[], _onLoadSelectedIndices: [] as string[],
_onLoadSelectedMimeTypes: [] as string[], _onLoadSelectedMimeTypes: [] as string[],
@ -157,6 +158,7 @@ export default new Vuex.Store({
setOptTreemapColor: (state, val) => state.optTreemapColor = val, setOptTreemapColor: (state, val) => state.optTreemapColor = val,
setOptHideLegacy: (state, val) => state.optHideLegacy = val, setOptHideLegacy: (state, val) => state.optHideLegacy = val,
setOptUpdateMimeMap: (state, val) => state.optUpdateMimeMap = val, setOptUpdateMimeMap: (state, val) => state.optUpdateMimeMap = val,
setOptUseDatePicker: (state, val) => state.optUseDatePicker = val,
setOptLightboxLoadOnlyCurrent: (state, val) => state.optLightboxLoadOnlyCurrent = val, setOptLightboxLoadOnlyCurrent: (state, val) => state.optLightboxLoadOnlyCurrent = val,
setOptLightboxSlideDuration: (state, val) => state.optLightboxSlideDuration = val, setOptLightboxSlideDuration: (state, val) => state.optLightboxSlideDuration = val,
@ -366,5 +368,6 @@ export default new Vuex.Store({
optResultSize: state => state.size, optResultSize: state => state.size,
optHideLegacy: state => state.optHideLegacy, optHideLegacy: state => state.optHideLegacy,
optUpdateMimeMap: state => state.optUpdateMimeMap, optUpdateMimeMap: state => state.optUpdateMimeMap,
optUseDatePicker: state => state.optUseDatePicker,
} }
}) })

View File

@ -41,6 +41,10 @@
<b-form-checkbox :checked="optUpdateMimeMap" @input="setOptUpdateMimeMap"> <b-form-checkbox :checked="optUpdateMimeMap" @input="setOptUpdateMimeMap">
{{ $t("opt.updateMimeMap") }} {{ $t("opt.updateMimeMap") }}
</b-form-checkbox> </b-form-checkbox>
<b-form-checkbox :checked="optUseDatePicker" @input="setOptUseDatePicker">
{{ $t("opt.useDatePicker") }}
</b-form-checkbox>
</b-card> </b-card>
<br/> <br/>
@ -229,6 +233,7 @@ export default {
"optHideDuplicates", "optHideDuplicates",
"optHideLegacy", "optHideLegacy",
"optUpdateMimeMap", "optUpdateMimeMap",
"optUseDatePicker",
]), ]),
clientWidth() { clientWidth() {
return window.innerWidth; return window.innerWidth;
@ -272,7 +277,8 @@ export default {
"setOptLang", "setOptLang",
"setOptHideDuplicates", "setOptHideDuplicates",
"setOptHideLegacy", "setOptHideLegacy",
"setOptUpdateMimeMap" "setOptUpdateMimeMap",
"setOptUseDatePicker",
]), ]),
onResetClick() { onResetClick() {
localStorage.removeItem("sist2_configuration"); localStorage.removeItem("sist2_configuration");

View File

@ -19,11 +19,7 @@
</b-row> </b-row>
<b-row> <b-row>
<b-col sm="6"> <b-col sm="6">
<b-row> <DateSlider></DateSlider>
<b-col style="height: 70px;">
<DateSlider></DateSlider>
</b-col>
</b-row>
<b-row> <b-row>
<b-col> <b-col>
<IndexPicker></IndexPicker> <IndexPicker></IndexPicker>