From ff35bda367ee93af87a33c082e6ebee98a4dcedc Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 7 Feb 2020 00:51:36 +0000 Subject: [PATCH] --- ayanova/src/api/initialize.js | 38 ++++++++++++------------ ayanova/src/api/locale.js | 18 +++++++++++ ayanova/src/components/gz-data-table.vue | 7 ++++- ayanova/src/store.js | 6 ++-- 4 files changed, 46 insertions(+), 23 deletions(-) diff --git a/ayanova/src/api/initialize.js b/ayanova/src/api/initialize.js index d283abce..98e14c69 100644 --- a/ayanova/src/api/initialize.js +++ b/ayanova/src/api/initialize.js @@ -747,26 +747,26 @@ export default function initialize() { ); window.$gz.eventBus.$emit("notify-error", msg); } else { - //TODO: also need the other locale settings such as number and date formats etc - var localOffset = new Date().getTimezoneOffset(); - if (localOffset != 0) { - localOffset = (localOffset / 60) * -1; //time is in minutes and reversed from what we want or expect - } + // //TODO: also need the other locale settings such as number and date formats etc + // var localOffset = new Date().getTimezoneOffset(); + // if (localOffset != 0) { + // localOffset = (localOffset / 60) * -1; //time is in minutes and reversed from what we want or expect + // } - if (res.data.timeZoneOffset != localOffset) { - //TODO: localize message and also actually have a fix for it here - //so this should be a confirm prompt but for now will just show it + // if (res.data.timeZoneOffset != localOffset) { + // //TODO: localize message and also actually have a fix for it here + // //so this should be a confirm prompt but for now will just show it - //for now just show the message - window.$gz.eventBus.$emit( - "notify-info", - "Time zone offset for your account is set to " + - res.data.timeZoneOffset + - " which doesn't match the local timezone offset of " + - localOffset, - window.$gz.store.state.helpUrl + "intro/#searching" - ); - } + // //for now just show the message + // window.$gz.eventBus.$emit( + // "notify-info", + // "Time zone offset for your account is set to " + + // res.data.timeZoneOffset + + // " which doesn't match the local timezone offset of " + + // localOffset, + // window.$gz.store.state.helpUrl + "intro/#searching" + // ); + // } // window.$gz.eventBus.$emit("notify-success", "Success"); // window.$gz.eventBus.$emit( @@ -782,7 +782,7 @@ export default function initialize() { //TODO: also need the other locale settings such as number and date formats etc to be added at server window.$gz.store.commit("setLocale", { decimalSeparator: ".", - currencySymbol: "$", + currencyName: "USD", hour12: true, // shortDate: "YYYY-MM-DD", // shortTime: "hh:mm:ss A", diff --git a/ayanova/src/api/locale.js b/ayanova/src/api/locale.js index 12796379..4b638ea9 100644 --- a/ayanova/src/api/locale.js +++ b/ayanova/src/api/locale.js @@ -376,6 +376,24 @@ export default { }); } }, + /////////////////////////////////////////// + // Turn a decimal number into a local + // currency display + // + currencyLocalized(value, languageName, currencyName) { + if (!value) return ""; + if (!languageName) { + languageName = this.getBrowserLanguages(); + } + if (!currencyName) { + currencyName = window.$gz.store.state.locale.currencyName; + } + + return new Intl.NumberFormat(languageName, { + style: "currency", + currency: currencyName + }).format(value); + }, //////////////////////////////////////////////////////// // dynamically set the vuetify language elements from // users localized text (am/pm etc) diff --git a/ayanova/src/components/gz-data-table.vue b/ayanova/src/components/gz-data-table.vue index 9508edf1..45e1b70d 100644 --- a/ayanova/src/components/gz-data-table.vue +++ b/ayanova/src/components/gz-data-table.vue @@ -436,6 +436,7 @@ function buildRecords(listData, columndefinitions, filters) { var timeZoneName = window.$gz.locale.getTimeZoneName(); var languageName = window.$gz.locale.getBrowserLanguages(); var hour12 = window.$gz.store.state.locale.hour12; + var currencyName = window.$gz.store.state.locale.currencyName; //comes as an array of arrays, needs to leave as an array of objects representing each row for (var iRow = 0; iRow < listData.length; iRow++) { @@ -479,7 +480,11 @@ function buildRecords(listData, columndefinitions, filters) { display = filters.decimal(display); break; case 8: //currency - display = filters.currency(display); + display = window.$gz.locale.currencyLocalized( + display, + languageName, + currencyName + ); break; case 10: //enum display = filters.enum(display, columndefinitions[iColumn].et); diff --git a/ayanova/src/store.js b/ayanova/src/store.js index a1603b29..d9342f4f 100644 --- a/ayanova/src/store.js +++ b/ayanova/src/store.js @@ -23,7 +23,7 @@ export default new Vuex.Store({ locale: { tag: "en-US", decimalSeparator: ".", - currencySymbol: "$", + currencyName: "USD", hour12: true, // shortDate: "YYYY-MM-DD", // shortTime: "hh:mm:ss A", @@ -60,7 +60,7 @@ export default new Vuex.Store({ state.apiUrl = ""; state.locale.tag = "en-US"; state.locale.decimalSeparator = "."; - state.locale.currencySymbol = "$"; + state.locale.currencyName = "USD"; state.locale.hour12 = true; // state.locale.shortDate = "YYYY-MM-DD"; // state.locale.shortTime = "hh:mm:ss A"; @@ -81,7 +81,7 @@ export default new Vuex.Store({ setLocale(state, data) { // mutate state state.locale.decimalSeparator = data.decimalSeparator; - state.locale.currencySymbol = data.currencySymbol; + state.locale.currencyName = data.currencyName; state.locale.hour12 = data.hour12; // state.locale.shortDate = data.shortDate; // state.locale.shortTime = data.shortTime;