Files
raven-client/ayanova/src/api/locale.js
2019-04-17 00:01:35 +00:00

138 lines
3.3 KiB
JavaScript

/* ZZeslint-disable */
import store from "../store";
import apiUtil from "./gzapi";
import _ from "../libs/lodash.min.js";
export default {
get(key) {
// debugger;
if (!_.has(store.state.localeText, key)) {
return "??" + key;
}
return store.state.localeText[key];
},
fetch(keys) {
return new Promise(function(resolve) {
//, reject
//step 1: build an array of keys that we don't have already
//Note: this will ensure only unique keys go into the store so it's safe to call this with dupes as can happen
var needIt = [];
for (var i = 0; i < keys.length; i++) {
if (!_.has(store.state.localeText, keys[i])) {
needIt.push(keys[i]);
}
}
if (needIt.length == 0) {
resolve();
return;
}
//step 2: get it
fetch(apiUtil.APIUrl("locale/subset"), apiUtil.fetchPostOptions(needIt))
.then(apiUtil.status)
.then(apiUtil.json)
.then(response => {
_.forEach(response.data, function(item) {
store.commit("addLocaleText", item);
});
resolve();
});
});
},
//Keys that will always be required for any AyaNova work for any user
coreKeys: [
//main nav options
"Home",
"Service",
"Dispatch",
"Inventory",
"Accounting",
"Administration",
"Operations",
"HelpAboutAyaNova",
"MenuHelp",
"Logout",
//form required options
"Active",
"Add",
"Cancel",
"Close",
"Save",
"Delete",
"OK",
"Print",
"WikiPage",
"Duplicate",
"RecordHistory",
"ErrorFieldLengthExceeded",
"ErrorStartDateAfterEndDate",
"ErrorRequiredFieldEmpty",
"ErrorFieldValueNotInteger",
"ErrorFieldValueNotDecimal",
"ErrorAPI2000",
"ErrorAPI2001",
"ErrorAPI2002",
"ErrorAPI2003",
"ErrorAPI2004",
"ErrorAPI2005",
"ErrorAPI2010",
"ErrorAPI2020",
"ErrorAPI2030",
"ErrorAPI2200",
"ErrorAPI2201",
"ErrorAPI2202",
"ErrorAPI2203",
"ErrorAPI2204",
"ErrorAPI2205",
"ErrorAPI2206",
"ErrorAPI2207",
"ErrorAPI2208",
"ErrorAPI2209",
"ErrorServerUnresponsive",
"ErrorUserNotAuthenticated"
],
decimalValidate(required) {
return { required: required, decimal: [2, this.formats.decimalSeparator] };
},
decimalParse(v) {
if (v) {
if (
this.decimalSeparator != "." &&
v.includes(this.formats.decimalSeparator)
) {
v = v.replace(this.formats.decimalSeparator, ".");
}
v = parseFloat(v);
}
return v;
},
formats: {
decimalSeparator: ".",
currencySymbol: "$",
shortDate: "YYYY-MM-DD",
shortTime: "hh:mm:ss A",
shortDateAndTime: "YYYY-MM-DD hh:mm:ss A"
},
//timeZoneOffset is in decimal hours
timeZoneOffset: -8.0,
////////////////////////////////////////////////////////
// Take in a string that contains one or more
//locale keys between square brackets
//translate each and return the string translated
//
translateString(s) {
var ret = s;
var pattern = /\[(.*?)\]/g;
var match;
while ((match = pattern.exec(s)) != null) {
var foundMatch = match[0];
var ltKey = match[1];
var newValue = this.get(ltKey);
ret = ret.replace(foundMatch, newValue);
}
return ret;
}
};