From 871d3819f7c734b604f19da1ba81bf5ee0ea0814 Mon Sep 17 00:00:00 2001 From: mengshukeji Date: Thu, 17 Dec 2020 16:23:01 +0800 Subject: [PATCH] fix(numeral): userInfo fix #338 --- deploy.bat | 4 ++ docs/guide/config.md | 51 +++++++++++++++++++-- docs/zh/guide/config.md | 52 ++++++++++++++++++++-- gulpfile.js | 2 +- package.json | 1 + src/config.js | 8 +--- src/controllers/constant.js | 17 ++++--- src/controllers/luckysheetConfigsetting.js | 2 +- src/controllers/pivotTable.js | 1 + src/css/luckysheet-core.css | 4 +- src/function/func.js | 1 + src/function/functionImplementation.js | 3 +- src/global/api.js | 7 ++- src/global/format.js | 1 + src/global/sort.js | 1 + src/index.html | 6 --- src/plugins/js/numeral.min.js | 8 ---- src/utils/util.js | 7 ++- 18 files changed, 136 insertions(+), 40 deletions(-) delete mode 100644 src/plugins/js/numeral.min.js diff --git a/deploy.bat b/deploy.bat index 30f113a..d26671b 100644 --- a/deploy.bat +++ b/deploy.bat @@ -20,6 +20,10 @@ git push -f origin master:gh-pages # =============================================== +# add a tags +git tag -a doc -m "doc" + + # replease npm run build npm run release -- --release-as patch diff --git a/docs/guide/config.md b/docs/guide/config.md index 4758fcc..3f36235 100644 --- a/docs/guide/config.md +++ b/docs/guide/config.md @@ -360,9 +360,54 @@ Note that you also need to configure `loadUrl` and `loadSheetUrl` to take effect ------------ ### userInfo -- Type: String -- Default: `' rabbit'` -- Usage: User information display style in the upper right corner +- Type: String | Boolean | Object +- Default: false +- Usage: User information display style in the upper right corner,Support the following three formats + 1. HTML template string, such as: + + ```js + options:{ + // Other configuration + userInfo:' Lucky', + } + ``` + + Or an ordinary string, such as: + + ```js + options:{ + // Other configuration + userInfo:'Lucky', + } + ``` + + 2. Boolean type, such as: + + `false`: Do not show + ```js + options:{ + // Other configuration + userInfo:false, // Do not display user information + } + + ``` + `ture`: Show the default string + ```js + options:{ + // Other configuration + userInfo:true, // Show HTML:' Lucky' + } + + ``` + 3. Object format, set `userImage`: user avatar address and `userName`: user name, such as: + ```js + options:{ + // Other configuration + userImage:'https://cdn.jsdelivr.net/npm/luckyresources@1.0.3/assets/img/logo/logo.png', // Avatar url + userName:'Lucky', // username + } + ``` + 4. Note that if set to `undefined` or not set, the same as setting `false` ------------ ### userMenuItem diff --git a/docs/zh/guide/config.md b/docs/zh/guide/config.md index 53ed3e9..8aa22ad 100644 --- a/docs/zh/guide/config.md +++ b/docs/zh/guide/config.md @@ -450,9 +450,55 @@ Luckysheet开放了更细致的自定义配置选项,分别有 ------------ ### userInfo -- 类型:String -- 默认值:`' rabbit'` -- 作用:右上角的用户信息展示样式 +- 类型:String | Boolean | Object +- 默认值:false +- 作用:右上角的用户信息展示样式,支持以下三种形式 + 1. HTML模板字符串,如: + + ```js + options:{ + // 其他配置 + userInfo:' Lucky', + } + ``` + + 或者一个普通字符串,如: + + ```js + options:{ + // 其他配置 + userInfo:'Lucky', + } + ``` + + 2. Boolean类型,如: + + `false`:不展示 + ```js + options:{ + // 其他配置 + userInfo:false, // 不展示用户信息 + } + + ``` + `ture`:展示默认的字符串 + ```js + options:{ + // 其他配置 + userInfo:true, // 展示HTML:' Lucky' + } + + ``` + 3. 对象格式,设置 `userImage`:用户头像地址 和 `userName`:用户名,如: + ```js + options:{ + // 其他配置 + userImage:'https://cdn.jsdelivr.net/npm/luckyresources@1.0.3/assets/img/logo/logo.png', // 头像url + userName:'Lucky', // 用户名 + } + ``` + + 4. 注意,设置为`undefined`或者不设置,同设置`false` ------------ ### userMenuItem diff --git a/gulpfile.js b/gulpfile.js index d99bc18..3a84a7f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -91,7 +91,7 @@ const paths = { 'src/plugins/js/spectrum.min.js', 'src/plugins/js/jquery-ui.min.js', 'src/plugins/js/jquery.mousewheel.min.js', - 'src/plugins/js/numeral.min.js', + // 'src/plugins/js/numeral.min.js', 'src/plugins/js/html2canvas.min.js', 'src/plugins/js/localforage.min.js', 'src/plugins/js/lodash.min.js', diff --git a/package.json b/package.json index a405992..477acdd 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "dayjs": "^1.9.6", "flatpickr": "^4.6.6", "jquery": "^2.2.4", + "numeral": "^2.0.6", "pako": "^1.0.11" }, "scripts": { diff --git a/src/config.js b/src/config.js index 26e111c..5d13cdc 100644 --- a/src/config.js +++ b/src/config.js @@ -16,13 +16,7 @@ export default { // menu: "undo|redo|freezenrow|freezencolumn|download|share|chart|pivot", data: [{ "name": "Sheet1", color: "", "status": "1", "order": "0", "data": [], "config": {}, "index":0 }, { "name": "Sheet2", color: "", "status": "0", "order": "1", "data": [], "config": {}, "index":1 }, { "name": "Sheet3", color: "", "status": "0", "order": "2", "data": [], "config": {}, "index":2 }], //客户端sheet数据[shee1, sheet2, sheet3] title: "Luckysheet Demo", //表格的名称 - // userInfo: ' rabbit' - userInfo:{ - isShow:false, - str:'', - url:'', - username:'', - },//右上角的用户信息展示样式 + userInfo:false,// 右上角的用户信息展示样式,支持 1. boolean类型:false:不展示,ture:展示默认 ' rabbit' ,2. HTML模板字符串或者普通字符串,如:' Lucky'或者'用户名', 3. 对象格式,设置 userImage:用户头像地址 和 userName:用户名 4. 不设置或者设置undefined同设置false userMenuItem: [{url:"www.baidu.com", "icon":'', "name":"我的表格"}, {url:"www.baidu.com", "icon":'', "name":"退出登陆"}], //点击右上角的用户信息弹出的菜单 myFolderUrl: "www.baidu.com", //左上角<返回按钮的链接 config: {}, //表格行高、列宽、合并单元格、公式等设置 diff --git a/src/controllers/constant.js b/src/controllers/constant.js index dfcabc9..f7d5f1a 100644 --- a/src/controllers/constant.js +++ b/src/controllers/constant.js @@ -1,12 +1,13 @@ import locale from '../locale/locale'; import Store from '../store'; import luckysheetConfigsetting from './luckysheetConfigsetting'; +import { getObjType } from '../utils/util'; //dom variable const gridHTML = function(){ const _locale = locale(); const locale_info = _locale.info; const locale_print = _locale.print; - const userInfo = luckysheetConfigsetting.userInfo + const userInfo = luckysheetConfigsetting.userInfo === true ? ' Lucky' : luckysheetConfigsetting.userInfo; // When true, use the default HTML string return `
@@ -20,11 +21,17 @@ const gridHTML = function(){
${locale_info.detailUpdate}
-
${locale_info.wait}
-
\${functionButton} - - ${userInfo.str.length > 0 ? userInfo.str : userInfo.username} +
${locale_info.wait}
+ +
\${functionButton} + ${userInfo}
+ +
\${functionButton} + + ${userInfo.userName} +
+
\${menu}
diff --git a/src/controllers/luckysheetConfigsetting.js b/src/controllers/luckysheetConfigsetting.js index cb4f48c..3d0d886 100644 --- a/src/controllers/luckysheetConfigsetting.js +++ b/src/controllers/luckysheetConfigsetting.js @@ -12,7 +12,7 @@ const luckysheetConfigsetting = { pointEditUpdate: null, pointEditZoom: 1, - userInfo: {}, + userInfo: false, userMenuItem: [], myFolderUrl: null, functionButton: null, diff --git a/src/controllers/pivotTable.js b/src/controllers/pivotTable.js index 5ae04ca..26d5bbe 100644 --- a/src/controllers/pivotTable.js +++ b/src/controllers/pivotTable.js @@ -35,6 +35,7 @@ import server from './server'; import {checkProtectionAuthorityNormal} from './protection'; import Store from '../store'; import locale from '../locale/locale'; +import numeral from 'numeral'; const pivotTable = { pivotDatas: null, diff --git a/src/css/luckysheet-core.css b/src/css/luckysheet-core.css index a08c132..de50539 100644 --- a/src/css/luckysheet-core.css +++ b/src/css/luckysheet-core.css @@ -114,8 +114,8 @@ } #luckysheet_info_detail_user_img { vertical-align: middle; - height: 30px; - line-height: 30px; + height: 20px; + line-height: 20px; border-radius: 50%; object-fit: cover; } diff --git a/src/function/func.js b/src/function/func.js index 0ef3a2b..d656c01 100755 --- a/src/function/func.js +++ b/src/function/func.js @@ -8,6 +8,7 @@ import { inverse } from '../function/matrix_methods'; import { getSheetIndex, getluckysheetfile, getRangetxt } from '../methods/get'; import { getObjType, ABCatNum } from '../utils/util'; import Store from '../store'; +import numeral from 'numeral'; //函数功能:比较或运算 function luckysheet_compareWith() { diff --git a/src/function/functionImplementation.js b/src/function/functionImplementation.js index a02ad33..e67b850 100644 --- a/src/function/functionImplementation.js +++ b/src/function/functionImplementation.js @@ -14,7 +14,8 @@ import { orderbydata } from '../global/sort'; import { getcellvalue } from '../global/getdata'; import { getObjType, ABCatNum, chatatABC, numFormat } from '../utils/util'; import Store from '../store'; -import dayjs from 'dayjs' +import dayjs from 'dayjs'; +import numeral from 'numeral'; //公式函数计算 const functionImplementation = { diff --git a/src/global/api.js b/src/global/api.js index 7f84e12..cd466e7 100644 --- a/src/global/api.js +++ b/src/global/api.js @@ -6260,8 +6260,11 @@ export function toJson(){ // row and column getluckysheetfile().forEach((file,index)=>{ - toJsonOptions.data[index].row = file.data.length; - toJsonOptions.data[index].column = getObjType(file.data[0]) === 'array' ? file.data[0].length : 0; + if(file.data == undefined){ + return; + } + toJsonOptions.data[index].row = getObjType(file.data) === 'array' ? file.data.length : 0; + toJsonOptions.data[index].column = getObjType(file.data[0]) === 'array' ? file.data[0].length : 0; }) diff --git a/src/global/format.js b/src/global/format.js index 66170fe..c7e653f 100644 --- a/src/global/format.js +++ b/src/global/format.js @@ -1,6 +1,7 @@ import { isRealNum, valueIsError } from './validate'; import { isdatetime } from './datecontroll'; import { getcellvalue } from './getdata'; +import numeral from 'numeral'; var SSF = ({}); var make_ssf = function make_ssf(SSF) { diff --git a/src/global/sort.js b/src/global/sort.js index 5d19a3e..e393980 100644 --- a/src/global/sort.js +++ b/src/global/sort.js @@ -7,6 +7,7 @@ import { rowlenByRange } from './getRowlen'; import { jfrefreshgrid } from './refresh'; import {checkProtectionAuthorityNormal} from '../controllers/protection'; import Store from '../store'; +import numeral from 'numeral'; //数据排序方法 function orderbydata(data, index, isAsc) { diff --git a/src/index.html b/src/index.html index 60ac1b7..d463da7 100644 --- a/src/index.html +++ b/src/index.html @@ -77,12 +77,6 @@ container: 'luckysheet', lang: lang, forceCalculation:false, - userInfo: { - isShow:true, - str:' rabbit', - url:'https://dss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1490464830,1853038030&fm=26&gp=0.jpg', - username:'lucky' - }, plugins: ['chart'], fontList:[ { diff --git a/src/plugins/js/numeral.min.js b/src/plugins/js/numeral.min.js deleted file mode 100644 index b721f54..0000000 --- a/src/plugins/js/numeral.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! @preserve - * numeral.js - * version : 2.0.6 - * author : Adam Draper - * license : MIT - * http://adamwdraper.github.com/Numeral-js/ - */ -!function(a,b){"function"==typeof define&&define.amd?define(b):"object"==typeof module&&module.exports?module.exports=b():a.numeral=b()}(this,function(){function a(a,b){this._input=a,this._value=b}var b,c,d="2.0.6",e={},f={},g={currentLocale:"en",zeroFormat:null,nullFormat:null,defaultFormat:"0,0",scalePercentBy100:!0},h={currentLocale:g.currentLocale,zeroFormat:g.zeroFormat,nullFormat:g.nullFormat,defaultFormat:g.defaultFormat,scalePercentBy100:g.scalePercentBy100};return b=function(d){var f,g,i,j;if(b.isNumeral(d))f=d.value();else if(0===d||"undefined"==typeof d)f=0;else if(null===d||c.isNaN(d))f=null;else if("string"==typeof d)if(h.zeroFormat&&d===h.zeroFormat)f=0;else if(h.nullFormat&&d===h.nullFormat||!d.replace(/[^0-9]+/g,"").length)f=null;else{for(g in e)if(j="function"==typeof e[g].regexps.unformat?e[g].regexps.unformat():e[g].regexps.unformat,j&&d.match(j)){i=e[g].unformat;break}i=i||b._.stringToNumber,f=i(d)}else f=Number(d)||null;return new a(d,f)},b.version=d,b.isNumeral=function(b){return b instanceof a},b._=c={numberToFormat:function(a,c,d){var e,g,h,i,j,k,l,m=f[b.options.currentLocale],n=!1,o=!1,p=0,q="",r=1e12,s=1e9,t=1e6,u=1e3,v="",w=!1;if(a=a||0,g=Math.abs(a),b._.includes(c,"(")?(n=!0,c=c.replace(/[\(|\)]/g,"")):(b._.includes(c,"+")||b._.includes(c,"-"))&&(j=b._.includes(c,"+")?c.indexOf("+"):0>a?c.indexOf("-"):-1,c=c.replace(/[\+|\-]/g,"")),b._.includes(c,"a")&&(e=c.match(/a(k|m|b|t)?/),e=e?e[1]:!1,b._.includes(c," a")&&(q=" "),c=c.replace(new RegExp(q+"a[kmbt]?"),""),g>=r&&!e||"t"===e?(q+=m.abbreviations.trillion,a/=r):r>g&&g>=s&&!e||"b"===e?(q+=m.abbreviations.billion,a/=s):s>g&&g>=t&&!e||"m"===e?(q+=m.abbreviations.million,a/=t):(t>g&&g>=u&&!e||"k"===e)&&(q+=m.abbreviations.thousand,a/=u)),b._.includes(c,"[.]")&&(o=!0,c=c.replace("[.]",".")),h=a.toString().split(".")[0],i=c.split(".")[1],k=c.indexOf(","),p=(c.split(".")[0].split(",")[0].match(/0/g)||[]).length,i?(b._.includes(i,"[")?(i=i.replace("]",""),i=i.split("["),v=b._.toFixed(a,i[0].length+i[1].length,d,i[1].length)):v=b._.toFixed(a,i.length,d),h=v.split(".")[0],v=b._.includes(v,".")?m.delimiters.decimal+v.split(".")[1]:"",o&&0===Number(v.slice(1))&&(v="")):h=b._.toFixed(a,0,d),q&&!e&&Number(h)>=1e3&&q!==m.abbreviations.trillion)switch(h=String(Number(h)/1e3),q){case m.abbreviations.thousand:q=m.abbreviations.million;break;case m.abbreviations.million:q=m.abbreviations.billion;break;case m.abbreviations.billion:q=m.abbreviations.trillion}if(b._.includes(h,"-")&&(h=h.slice(1),w=!0),h.length0;x--)h="0"+h;return k>-1&&(h=h.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+m.delimiters.thousands)),0===c.indexOf(".")&&(h=""),l=h+v+(q?q:""),n?l=(n&&w?"(":"")+l+(n&&w?")":""):j>=0?l=0===j?(w?"-":"+")+l:l+(w?"-":"+"):w&&(l="-"+l),l},stringToNumber:function(a){var b,c,d,e=f[h.currentLocale],g=a,i={thousand:3,million:6,billion:9,trillion:12};if(h.zeroFormat&&a===h.zeroFormat)c=0;else if(h.nullFormat&&a===h.nullFormat||!a.replace(/[^0-9]+/g,"").length)c=null;else{c=1,"."!==e.delimiters.decimal&&(a=a.replace(/\./g,"").replace(e.delimiters.decimal,"."));for(b in i)if(d=new RegExp("[^a-zA-Z]"+e.abbreviations[b]+"(?:\\)|(\\"+e.currency.symbol+")?(?:\\))?)?$"),g.match(d)){c*=Math.pow(10,i[b]);break}c*=(a.split("-").length+Math.min(a.split("(").length-1,a.split(")").length-1))%2?1:-1,a=a.replace(/[^0-9\.]+/g,""),c*=Number(a)}return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},includes:function(a,b){return-1!==a.indexOf(b)},insert:function(a,b,c){return a.slice(0,c)+b+a.slice(c)},reduce:function(a,b){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof b)throw new TypeError(b+" is not a function");var c,d=Object(a),e=d.length>>>0,f=0;if(3===arguments.length)c=arguments[2];else{for(;e>f&&!(f in d);)f++;if(f>=e)throw new TypeError("Reduce of empty array with no initial value");c=d[f++]}for(;e>f;f++)f in d&&(c=b(c,d[f],f,d));return c},multiplier:function(a){var b=a.toString().split(".");return b.length<2?1:Math.pow(10,b[1].length)},correctionFactor:function(){var a=Array.prototype.slice.call(arguments);return a.reduce(function(a,b){var d=c.multiplier(b);return a>d?a:d},1)},toFixed:function(a,b,c,d){var e,f,g,h,i=a.toString().split("."),j=b-(d||0);return e=2===i.length?Math.min(Math.max(i[1].length,j),b):j,g=Math.pow(10,e),h=(c(a+"e+"+e)/g).toFixed(e),d>b-e&&(f=new RegExp("\\.?0{1,"+(d-(b-e))+"}$"),h=h.replace(f,"")),h}},b.options=h,b.formats=e,b.locales=f,b.locale=function(a){return a&&(h.currentLocale=a.toLowerCase()),h.currentLocale},b.localeData=function(a){if(!a)return f[h.currentLocale];if(a=a.toLowerCase(),!f[a])throw new Error("Unknown locale : "+a);return f[a]},b.reset=function(){for(var a in g)h[a]=g[a]},b.zeroFormat=function(a){h.zeroFormat="string"==typeof a?a:null},b.nullFormat=function(a){h.nullFormat="string"==typeof a?a:null},b.defaultFormat=function(a){h.defaultFormat="string"==typeof a?a:"0.0"},b.register=function(a,b,c){if(b=b.toLowerCase(),this[a+"s"][b])throw new TypeError(b+" "+a+" already registered.");return this[a+"s"][b]=c,c},b.validate=function(a,c){var d,e,f,g,h,i,j,k;if("string"!=typeof a&&(a+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",a)),a=a.trim(),a.match(/^\d+$/))return!0;if(""===a)return!1;try{j=b.localeData(c)}catch(l){j=b.localeData(b.locale())}return f=j.currency.symbol,h=j.abbreviations,d=j.delimiters.decimal,e="."===j.delimiters.thousands?"\\.":j.delimiters.thousands,k=a.match(/^[^\d]+/),null!==k&&(a=a.substr(1),k[0]!==f)?!1:(k=a.match(/[^\d]+$/),null!==k&&(a=a.slice(0,-1),k[0]!==h.thousand&&k[0]!==h.million&&k[0]!==h.billion&&k[0]!==h.trillion)?!1:(i=new RegExp(e+"{2}"),a.match(/[^\d.,]/g)?!1:(g=a.split(d),g.length>2?!1:g.length<2?!!g[0].match(/^\d+.*\d$/)&&!g[0].match(i):1===g[0].length?!!g[0].match(/^\d+$/)&&!g[0].match(i)&&!!g[1].match(/^\d+$/):!!g[0].match(/^\d+.*\d$/)&&!g[0].match(i)&&!!g[1].match(/^\d+$/))))},b.fn=a.prototype={clone:function(){return b(this)},format:function(a,c){var d,f,g,i=this._value,j=a||h.defaultFormat;if(c=c||Math.round,0===i&&null!==h.zeroFormat)f=h.zeroFormat;else if(null===i&&null!==h.nullFormat)f=h.nullFormat;else{for(d in e)if(j.match(e[d].regexps.format)){g=e[d].format;break}g=g||b._.numberToFormat,f=g(i,j,c)}return f},value:function(){return this._value},input:function(){return this._input},set:function(a){return this._value=Number(a),this},add:function(a){function b(a,b,c,e){return a+Math.round(d*b)}var d=c.correctionFactor.call(null,this._value,a);return this._value=c.reduce([this._value,a],b,0)/d,this},subtract:function(a){function b(a,b,c,e){return a-Math.round(d*b)}var d=c.correctionFactor.call(null,this._value,a);return this._value=c.reduce([a],b,Math.round(this._value*d))/d,this},multiply:function(a){function b(a,b,d,e){var f=c.correctionFactor(a,b);return Math.round(a*f)*Math.round(b*f)/Math.round(f*f)}return this._value=c.reduce([this._value,a],b,1),this},divide:function(a){function b(a,b,d,e){var f=c.correctionFactor(a,b);return Math.round(a*f)/Math.round(b*f)}return this._value=c.reduce([this._value,a],b),this},difference:function(a){return Math.abs(b(this._value).subtract(a).value())}},b.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(a){var b=a%10;return 1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th"},currency:{symbol:"$"}}),function(){b.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(a,c,d){var e,f=b._.includes(c," BPS")?" ":"";return a=1e4*a,c=c.replace(/\s?BPS/,""),e=b._.numberToFormat(a,c,d),b._.includes(e,")")?(e=e.split(""),e.splice(-1,0,f+"BPS"),e=e.join("")):e=e+f+"BPS",e},unformat:function(a){return+(1e-4*b._.stringToNumber(a)).toFixed(15)}})}(),function(){var a={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]},c={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},d=a.suffixes.concat(c.suffixes.filter(function(b){return a.suffixes.indexOf(b)<0})),e=d.join("|");e="("+e.replace("B","B(?!PS)")+")",b.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(e)},format:function(d,e,f){var g,h,i,j,k=b._.includes(e,"ib")?c:a,l=b._.includes(e," b")||b._.includes(e," ib")?" ":"";for(e=e.replace(/\s?i?b/,""),h=0;h<=k.suffixes.length;h++)if(i=Math.pow(k.base,h),j=Math.pow(k.base,h+1),null===d||0===d||d>=i&&j>d){l+=k.suffixes[h],i>0&&(d/=i);break}return g=b._.numberToFormat(d,e,f),g+l},unformat:function(d){var e,f,g=b._.stringToNumber(d);if(g){for(e=a.suffixes.length-1;e>=0;e--){if(b._.includes(d,a.suffixes[e])){f=Math.pow(a.base,e);break}if(b._.includes(d,c.suffixes[e])){f=Math.pow(c.base,e);break}}g*=f||1}return g}})}(),function(){b.register("format","currency",{regexps:{format:/(\$)/},format:function(a,c,d){var e,f,g,h=b.locales[b.options.currentLocale],i={before:c.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:c.match(/([\+|\-|\)|\s|\$]*)$/)[0]};for(c=c.replace(/\s?\$\s?/,""),e=b._.numberToFormat(a,c,d),a>=0?(i.before=i.before.replace(/[\-\(]/,""),i.after=i.after.replace(/[\-\)]/,"")):0>a&&!b._.includes(i.before,"-")&&!b._.includes(i.before,"(")&&(i.before="-"+i.before),g=0;g=0;g--)switch(f=i.after[g]){case"$":e=g===i.after.length-1?e+h.currency.symbol:b._.insert(e,h.currency.symbol,-(i.after.length-(1+g)));break;case" ":e=g===i.after.length-1?e+" ":b._.insert(e," ",-(i.after.length-(1+g)+h.currency.symbol.length-1))}return e}})}(),function(){b.register("format","exponential",{regexps:{format:/(e\+|e-)/,unformat:/(e\+|e-)/},format:function(a,c,d){var e,f="number"!=typeof a||b._.isNaN(a)?"0e+0":a.toExponential(),g=f.split("e");return c=c.replace(/e[\+|\-]{1}0/,""),e=b._.numberToFormat(Number(g[0]),c,d),e+"e"+g[1]},unformat:function(a){function c(a,c,d,e){var f=b._.correctionFactor(a,c),g=a*f*(c*f)/(f*f);return g}var d=b._.includes(a,"e+")?a.split("e+"):a.split("e-"),e=Number(d[0]),f=Number(d[1]);return f=b._.includes(a,"e-")?f*=-1:f,b._.reduce([e,Math.pow(10,f)],c,1)}})}(),function(){b.register("format","ordinal",{regexps:{format:/(o)/},format:function(a,c,d){var e,f=b.locales[b.options.currentLocale],g=b._.includes(c," o")?" ":"";return c=c.replace(/\s?o/,""),g+=f.ordinal(a),e=b._.numberToFormat(a,c,d),e+g}})}(),function(){b.register("format","percentage",{regexps:{format:/(%)/,unformat:/(%)/},format:function(a,c,d){var e,f=b._.includes(c," %")?" ":"";return b.options.scalePercentBy100&&(a=100*a),c=c.replace(/\s?\%/,""),e=b._.numberToFormat(a,c,d),b._.includes(e,")")?(e=e.split(""),e.splice(-1,0,f+"%"),e=e.join("")):e=e+f+"%",e},unformat:function(a){var c=b._.stringToNumber(a);return b.options.scalePercentBy100?.01*c:c}})}(),function(){b.register("format","time",{regexps:{format:/(:)/,unformat:/(:)/},format:function(a,b,c){var d=Math.floor(a/60/60),e=Math.floor((a-60*d*60)/60),f=Math.round(a-60*d*60-60*e);return d+":"+(10>e?"0"+e:e)+":"+(10>f?"0"+f:f)},unformat:function(a){var b=a.split(":"),c=0;return 3===b.length?(c+=60*Number(b[0])*60,c+=60*Number(b[1]),c+=Number(b[2])):2===b.length&&(c+=60*Number(b[0]),c+=Number(b[1])),Number(c)}})}(),b}); \ No newline at end of file diff --git a/src/utils/util.js b/src/utils/util.js index 9c7d13b..b088d5d 100644 --- a/src/utils/util.js +++ b/src/utils/util.js @@ -3,7 +3,8 @@ import menuButton from '../controllers/menuButton'; import { isdatatype, isdatatypemulti } from '../global/datecontroll'; import { hasChinaword,isRealNum } from '../global/validate'; import Store from '../store'; -import locale from '../locale/locale'; +import locale from '../locale/locale'; +import numeral from 'numeral'; // import method from '../global/method'; /** @@ -38,6 +39,10 @@ function common_extend(jsonbject1, jsonbject2) { } for (let attr in jsonbject2) { + // undefined is equivalent to no setting + if(jsonbject2[attr] == undefined){ + continue; + } resultJsonObject[attr] = jsonbject2[attr]; }