diff options
author | Vitalii Lysak <v.lysak@dunice.net> | 2022-09-22 10:44:35 +0300 |
---|---|---|
committer | Vitalii Lysak <v.lysak@dunice.net> | 2022-09-22 10:44:35 +0300 |
commit | c2d624cace23e834238649ee1f96e71854d2bc63 (patch) | |
tree | ac4557e73b7fddb4cf322cdd195f270c9d08032e | |
parent | 3731ececbd603859fe83b49a2b19f33c2c3e43ec (diff) | |
download | webui-vue-c2d624cace23e834238649ee1f96e71854d2bc63.tar.xz |
SILABMC-316: upd date and time by time zone
-rw-r--r-- | src/components/_sila/Mixins/TableFilterMixin.js | 12 | ||||
-rw-r--r-- | src/main.js | 46 | ||||
-rw-r--r-- | src/store/modules/GlobalStore.js | 11 | ||||
-rw-r--r-- | src/utilities/_sila/convertTimeZone.js | 11 | ||||
-rw-r--r-- | src/views/_sila/Overview/DateTime/DateTime.vue | 8 | ||||
-rw-r--r-- | src/views/_sila/Overview/OverviewQuickLinks.vue | 4 | ||||
-rw-r--r-- | src/views/_sila/ProfileSettings/ProfileSettings.vue | 2 |
7 files changed, 72 insertions, 22 deletions
diff --git a/src/components/_sila/Mixins/TableFilterMixin.js b/src/components/_sila/Mixins/TableFilterMixin.js index 295ca7e5..3295bc34 100644 --- a/src/components/_sila/Mixins/TableFilterMixin.js +++ b/src/components/_sila/Mixins/TableFilterMixin.js @@ -31,17 +31,23 @@ const TableFilterMixin = { let startDateInMs = startDate ? startDate.getTime() : 0; let endDateInMs = endDate ? endDate.getTime() : Number.POSITIVE_INFINITY; - const isUtcDisplay = this.$store.getters['global/isUtcDisplay']; + // const isUtcDisplay = this.$store.getters['global/isUtcDisplay']; //Offset preference selected - if (!isUtcDisplay) { + /*if (!isUtcDisplay) { startDateInMs = startDate ? startDate.getTime() + startDate.getTimezoneOffset() * 60000 : 0; endDateInMs = endDate ? endDate.getTime() + endDate.getTimezoneOffset() * 60000 : Number.POSITIVE_INFINITY; - } + }*/ + startDateInMs = startDate + ? startDate.getTime() + startDate.getTimezoneOffset() * 60000 + : 0; + endDateInMs = endDate + ? endDate.getTime() + endDate.getTimezoneOffset() * 60000 + : Number.POSITIVE_INFINITY; return tableData.filter((row) => { const date = row[propertyKey]; diff --git a/src/main.js b/src/main.js index e00d8868..df8fd65e 100644 --- a/src/main.js +++ b/src/main.js @@ -40,11 +40,11 @@ import { } from 'bootstrap-vue'; import Vuelidate from 'vuelidate'; import i18n from './i18n'; -import { format } from 'date-fns-tz'; import HighchartsVue from 'highcharts-vue'; import VueRandomColor from 'vue-randomcolor'; +import { getDateByTimeZone } from '@/utilities/_sila/convertTimeZone'; -Vue.filter('formatDate', function (value) { +/*Vue.filter('formatDate', function (value) { const isUtcDisplay = store.getters['global/isUtcDisplay']; if (value instanceof Date && !isNaN(value)) { @@ -55,9 +55,27 @@ Vue.filter('formatDate', function (value) { const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; return format(value, pattern, { timezone }); } +});*/ + +Vue.filter('formatDate', function (value) { + let timeZone = store.getters['global/timeZone'].split(' ')[1]; + let bmcDate = getDateByTimeZone(value, timeZone); + + if (!bmcDate) { + return; + } + + let year = bmcDate.getFullYear(); + let month = bmcDate.getMonth() + 1; + let day = bmcDate.getDate(); + if (month < 10) { + month = '0' + month; + } + + return `${year}-${month}-${day}`; }); -Vue.filter('formatTime', function (value) { +/*Vue.filter('formatTime', function (value) { const isUtcDisplay = store.getters['global/isUtcDisplay']; if (value instanceof Date) { @@ -72,6 +90,28 @@ Vue.filter('formatTime', function (value) { const pattern = `HH:mm:ss O`; return format(value, pattern, { timezone }).replace('GMT', 'UTC'); } +});*/ + +Vue.filter('formatTime', function (value) { + let utcOffset = store.getters['global/timeZone'].split(' ')[0]; + let timeZone = store.getters['global/timeZone'].split(' ')[1]; + let bmcDate = getDateByTimeZone(value, timeZone); + + if (!bmcDate) { + return; + } + + let hours = bmcDate.getHours(); + let minutes = bmcDate.getMinutes(); + let sec = bmcDate.getSeconds(); + if (minutes < 10) { + minutes = '0' + minutes; + } + if (sec < 10) { + sec = '0' + sec; + } + + return `${hours}:${minutes}:${sec} ${utcOffset}`; }); Vue.filter('truncate', function (text, length, suffix) { diff --git a/src/store/modules/GlobalStore.js b/src/store/modules/GlobalStore.js index 14c10b7c..3dcbe040 100644 --- a/src/store/modules/GlobalStore.js +++ b/src/store/modules/GlobalStore.js @@ -1,4 +1,5 @@ import api from '@/store/api'; +import { getDateByTimeZone } from '@/utilities/_sila/convertTimeZone'; const HOST_STATE = { on: 'xyz.openbmc_project.State.Host.HostState.Running', @@ -7,14 +8,6 @@ const HOST_STATE = { diagnosticMode: 'xyz.openbmc_project.State.Host.HostState.DiagnosticMode', }; -const convertTZ = (date, tzString) => { - return new Date( - (typeof date === 'string' ? new Date(date) : date).toLocaleString('en-US', { - timeZone: tzString, - }) - ); -}; - const serverStateMapper = (hostState) => { switch (hostState) { case HOST_STATE.on: @@ -146,7 +139,7 @@ const GlobalStore = { const bmcDateTime = response.data.DateTime; const date = new Date(bmcDateTime); const timeZone = getters.timeZone.split(' ')[1]; - commit('setBmcTime', convertTZ(date, timeZone)); + commit('setBmcTime', getDateByTimeZone(date, timeZone)); dispatch('initLiveClock'); }) .catch((error) => console.log(error)); diff --git a/src/utilities/_sila/convertTimeZone.js b/src/utilities/_sila/convertTimeZone.js new file mode 100644 index 00000000..67a1d106 --- /dev/null +++ b/src/utilities/_sila/convertTimeZone.js @@ -0,0 +1,11 @@ +export function getDateByTimeZone(date, tzString) { + if (!date || !tzString) { + return; + } + + return new Date( + (typeof date === 'string' ? new Date(date) : date).toLocaleString('en-US', { + timeZone: tzString, + }) + ); +} diff --git a/src/views/_sila/Overview/DateTime/DateTime.vue b/src/views/_sila/Overview/DateTime/DateTime.vue index 5d985ebe..8cb27fc8 100644 --- a/src/views/_sila/Overview/DateTime/DateTime.vue +++ b/src/views/_sila/Overview/DateTime/DateTime.vue @@ -348,15 +348,15 @@ export default { manualOptionSelected() { return this.form.configurationSelected === 'manual'; }, - isUtcDisplay() { + /*isUtcDisplay() { return this.$store.getters['global/isUtcDisplay']; - }, - timezone() { + },*/ + /*timezone() { if (this.isUtcDisplay) { return 'UTC'; } return this.localOffset(); - }, + },*/ }, watch: { ntpServers() { diff --git a/src/views/_sila/Overview/OverviewQuickLinks.vue b/src/views/_sila/Overview/OverviewQuickLinks.vue index e7b6b03e..9c4afab6 100644 --- a/src/views/_sila/Overview/OverviewQuickLinks.vue +++ b/src/views/_sila/Overview/OverviewQuickLinks.vue @@ -64,9 +64,9 @@ export default { timezone() { return this.localOffset(); }, - isUtcDisplay() { + /*isUtcDisplay() { return this.$store.getters['global/isUtcDisplay']; - }, + },*/ }, created() { Promise.all([this.$store.dispatch('global/getBmcTime')]).finally(() => { diff --git a/src/views/_sila/ProfileSettings/ProfileSettings.vue b/src/views/_sila/ProfileSettings/ProfileSettings.vue index 95636299..06057bb1 100644 --- a/src/views/_sila/ProfileSettings/ProfileSettings.vue +++ b/src/views/_sila/ProfileSettings/ProfileSettings.vue @@ -151,7 +151,7 @@ export default { form: { newPassword: '', confirmPassword: '', - isUtcDisplay: this.$store.getters['global/isUtcDisplay'], + // isUtcDisplay: this.$store.getters['global/isUtcDisplay'], }, }; }, |