Jiny pristup k vytvareni letu, polofunkcni editace letu

This commit is contained in:
Michal Kváček
2023-06-27 22:45:24 +02:00
parent 4d9950e362
commit d399e1aaf1
20 changed files with 672 additions and 261 deletions
+29 -14
View File
@@ -1,17 +1,18 @@
<script setup>
import {computed, onMounted, ref, watch} from "vue";
import {parseDate} from "src/composables/datetimeUtils";
const props = defineProps({
modelValue: {
type: Date,
type: [String, Date]
},
dateMask: {
type: String, Boolean,
type: [String, Boolean],
required: false,
default: "YYYY-MM-DD"
},
timeMask: {
type: String, Boolean,
type: [String, Boolean],
required: false,
default: "HH:mm"
}
@@ -19,35 +20,49 @@ const props = defineProps({
let dateModel = ref("");
let timeModel = ref("");
onMounted(() => {
let date = "";
let time = "";
let emitDefaultValue = false;
if (props.modelValue) {
let modelVal = props.modelValue;
if (typeof modelVal === 'string') {
modelVal = parseDate(props.modelValue);
emitDefaultValue = true;
}
date = props.dateMask.replace("YYYY", props.modelValue.getFullYear())
.replace("MM", ('0' + props.modelValue.getMonth()).slice(-2))
.replace("DD", ('0' + props.modelValue.getDate()).slice(-2));
date = props.dateMask
.replace("YYYY", modelVal.getFullYear().toString())
.replace("MM", ('0' + modelVal.getMonth()).slice(-2))
.replace("DD", ('0' + modelVal.getDate()).slice(-2));
time = props.timeMask.replace("HH", ('0' + props.modelValue.getHours()).slice(-2))
.replace("mm", ('0' + props.modelValue.getMinutes()).slice(-2))
}
time = props.timeMask
.replace("HH", ('0' + modelVal.getHours()).slice(-2))
.replace("mm", ('0' + modelVal.getMinutes()).slice(-2))
.replace("ss", ('0' + modelVal.getSeconds()).slice(-2))
if (time === '') {
time = "00:00";
// if (time === '') {
// time = "00:00";
// }
}
dateModel.value = date;
timeModel.value = time;
if (emitDefaultValue) {
emitModelUpdate();
}
});
const model = computed(() => dateModel.value + " " + timeModel.value);
const model = computed(() => dateModel.value + " " + timeModel.value);
const emit = defineEmits(['update:modelValue']);
const emitModelUpdate = () => {
const now = new Date();
const val = new Date(model.value);
val.setHours(val.getHours() + now.getTimezoneOffset());
const val = parseDate(model.value);
// val.setHours(val.getHours() + now.getTimezoneOffset());
emit("update:modelValue", val);
}
watch([dateModel, timeModel], emitModelUpdate)