This commit is contained in:
2020-07-13 21:32:55 +00:00
parent 731d7e7565
commit 5be385ffd3
2 changed files with 134 additions and 1 deletions

View File

@@ -223,7 +223,11 @@ export default {
"MaintenanceExpired",
"MaintenanceExpiredNote",
"Import",
"Export"
"Export",
"TimeSpanDays",
"TimeSpanHours",
"TimeSpanMinutes",
"TimeSpanSeconds"
],
////////////////////////////////////////////////////////

View File

@@ -0,0 +1,129 @@
<template>
<div>
<template v-if="!readonly">
<v-text-field
ref="dateField"
:value="days"
@input="handleInput"
:readonly="readonly"
:disabled="disabled"
:label="$ay.t('TimeSpanDays')"
type="number"
:num
:data-cy="!!$ay.dev ? 'durationdays:' + testId : false"
></v-text-field>
</template>
<template v-else>
<v-text-field
:value="readonlyFormat()"
:label="label"
readonly
disabled
></v-text-field>
</template>
</div>
</template>
<script>
/* Xeslint-disable */
/*
"TimeSpanDays": "days",
"TimeSpanHours": "hours",
"TimeSpanMinutes": "minutes",
"TimeSpanSeconds": "seconds", */
//example serialized json TimeSpans
//seems to be DD.HH:MM:SS.ms at it's most characters
//two colons always with an optional period at each end to separate days and ms
//we don't give a shit about MS and can safely ignore them
//so just look for a period at the top and the rest is split by colons
//maybe split by colon first then subsplit first and last elements into days and MS
//{"data":{"testTSDaysWMS":"22.10:15:22.0330000","testTSHMS":"05:16:33","testTS_DHMS":"5.10:15:33","testTS_MS":"00:15:33","testTS_S":"00:00:33","testTS_D":"22.00:00:00"}}
export default {
data() {
return {
internalValue: null,
days: 0,
hours: 0,
minutes: 0,
seconds: 0
};
},
watch: {
value(val) {
this.internalValue = val;
}
},
props: {
label: String,
rules: Array,
"error-messages": { type: Array, default: null },
value: { type: String, default: null },
readonly: { type: Boolean, default: false },
disabled: { type: Boolean, default: false },
error: {
type: String,
required: false
},
showSeconds: { type: Boolean, default: true },
showDays: { type: Boolean, default: true },
testId: String
},
methods: {
allErrors() {
let ret = "";
if (this.error != null) {
ret = this.error;
}
if (this.errorMessages != null && this.errorMessages.length > 0) {
ret += this.errorMessages.toString();
}
return ret;
},
readonlyFormat() {
return window.$gz.locale.utcDateToShortDateLocalized(
this.internalValue,
this.timeZoneName,
this.languageName,
this.hour12
);
},
handleDaysInput(value) {},
handleHoursInput(value) {
if (Number(value) > 24) {
this.days = 24;
} else {
this.days = Number(value);
}
//oninput="if(Number(this.value) > Number(this.max)) this.value = this.max;"
},
handleMinutesInput(value) {
if (Number(value) > 60) {
this.minutes = 60;
} else {
this.minutes = Number(value);
}
},
handleSecondsInput(value) {
if (Number(value) > 60) {
this.seconds = 60;
} else {
this.seconds = Number(value);
}
}
//combine these into the proper timespan string
// //combine the time and dates into a consolidated value
// let TimePortion = window.$gz.locale.utcDateStringToLocal8601TimeOnlyString(
// this.internalValue,
// this.timeZoneName
// );
// if (!TimePortion) {
// TimePortion = "00:00:00";
// }
// let newValue = window.$gz.locale.localTimeDateStringToUTC8601String(
// value + "T" + TimePortion,
// this.timeZoneName
// );
// this.$emit("input", newValue);
}
};
</script>