dtable-utils 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -0
- package/dist/index.js +1 -0
- package/es/cell-value-get/cell-value.js +165 -0
- package/es/cell-value-get/collaborator.js +33 -0
- package/es/cell-value-get/date.js +53 -0
- package/es/cell-value-get/digital-sign.js +10 -0
- package/es/cell-value-get/duration.js +86 -0
- package/es/cell-value-get/geolocation.js +74 -0
- package/es/cell-value-get/long-text.js +11 -0
- package/es/cell-value-get/number.js +222 -0
- package/es/cell-value-get/option.js +32 -0
- package/es/cell-value-set/number.js +53 -0
- package/es/column/common.js +41 -0
- package/es/column/date.js +17 -0
- package/es/column/number.js +31 -0
- package/es/common.js +16 -0
- package/es/constants/cell-type.js +33 -0
- package/es/constants/column.js +45 -0
- package/es/constants/filter/filter-column-options.js +65 -0
- package/es/constants/filter/filter-is-within.js +6 -0
- package/es/constants/filter/filter-modifier.js +29 -0
- package/es/constants/filter/filter-predicate.js +33 -0
- package/es/constants/filter/index.js +16 -0
- package/es/constants/formula.js +14 -0
- package/es/constants/select-option.js +129 -0
- package/es/date.js +226 -0
- package/es/helper/number-precision/index.js +64 -0
- package/es/index.js +26 -0
- package/es/validate/email.js +10 -0
- package/es/validate/filter.js +447 -0
- package/lib/cell-value-get/cell-value.js +170 -0
- package/lib/cell-value-get/collaborator.js +38 -0
- package/lib/cell-value-get/date.js +61 -0
- package/lib/cell-value-get/digital-sign.js +14 -0
- package/lib/cell-value-get/duration.js +90 -0
- package/lib/cell-value-get/geolocation.js +78 -0
- package/lib/cell-value-get/long-text.js +15 -0
- package/lib/cell-value-get/number.js +227 -0
- package/lib/cell-value-get/option.js +37 -0
- package/lib/cell-value-set/number.js +58 -0
- package/lib/column/common.js +46 -0
- package/lib/column/date.js +21 -0
- package/lib/column/number.js +36 -0
- package/lib/common.js +20 -0
- package/lib/constants/cell-type.js +37 -0
- package/lib/constants/column.js +63 -0
- package/lib/constants/filter/filter-column-options.js +73 -0
- package/lib/constants/filter/filter-is-within.js +11 -0
- package/lib/constants/filter/filter-modifier.js +38 -0
- package/lib/constants/filter/filter-predicate.js +42 -0
- package/lib/constants/filter/index.js +27 -0
- package/lib/constants/formula.js +23 -0
- package/lib/constants/select-option.js +134 -0
- package/lib/date.js +235 -0
- package/lib/helper/number-precision/index.js +69 -0
- package/lib/index.js +79 -0
- package/lib/validate/email.js +14 -0
- package/lib/validate/filter.js +458 -0
- package/package.json +44 -0
package/README.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# dtable-utils
|
|
2
|
+
🔧 common utils
|
|
3
|
+
|
|
4
|
+
## 项目结构
|
|
5
|
+
```bash
|
|
6
|
+
.
|
|
7
|
+
├── src
|
|
8
|
+
│ ├── cell-value-get # 数据格式化相关工具
|
|
9
|
+
│ ├── cell-value-set # 数据解析相关工具
|
|
10
|
+
│ ├── column # 列相关工具函数
|
|
11
|
+
│ ├── constants # 常量
|
|
12
|
+
│ ├── helper # 辅助工具。例如 number-precision
|
|
13
|
+
│ ├── validate # 验证器。例如,过滤验证器
|
|
14
|
+
│ ├── common.js # 通用辅助工具
|
|
15
|
+
│ ├── date.js # 日期工具函数
|
|
16
|
+
│ └── index.js # 入口文件
|
|
17
|
+
├── tests # 单元测试
|
|
18
|
+
├── README.md
|
|
19
|
+
└── package.json
|
|
20
|
+
```
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("dayjs"),r=require("@babel/runtime/helpers/classCallCheck"),a=require("@babel/runtime/helpers/createClass"),n=require("@babel/runtime/helpers/typeof");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o,_,l,s,u,E,O,c=i(e),T=i(t),d=i(r),f=i(a),R=i(n),A={DEFAULT:"default",NUMBER:"number",TEXT:"text",CHECKBOX:"checkbox",DATE:"date",SINGLE_SELECT:"single-select",LONG_TEXT:"long-text",IMAGE:"image",FILE:"file",MULTIPLE_SELECT:"multiple-select",COLLABORATOR:"collaborator",LINK:"link",FORMULA:"formula",LINK_FORMULA:"link-formula",CREATOR:"creator",CTIME:"ctime",LAST_MODIFIER:"last-modifier",MTIME:"mtime",GEOLOCATION:"geolocation",AUTO_NUMBER:"auto-number",URL:"url",EMAIL:"email",DURATION:"duration",BUTTON:"button",RATE:"rate",DIGITAL_SIGN:"digital-sign",BOOL:"bool",STRING:"string"},M=(o={},c.default(o,A.DEFAULT,"dtable-font dtable-icon-single-line-text"),c.default(o,A.TEXT,"dtable-font dtable-icon-single-line-text"),c.default(o,A.NUMBER,"dtable-font dtable-icon-number"),c.default(o,A.CHECKBOX,"dtable-font dtable-icon-check-square-solid"),c.default(o,A.DATE,"dtable-font dtable-icon-calendar-alt-solid"),c.default(o,A.SINGLE_SELECT,"dtable-font dtable-icon-single-election"),c.default(o,A.LONG_TEXT,"dtable-font dtable-icon-long-text"),c.default(o,A.IMAGE,"dtable-font dtable-icon-picture"),c.default(o,A.FILE,"dtable-font dtable-icon-file-alt-solid"),c.default(o,A.MULTIPLE_SELECT,"dtable-font dtable-icon-multiple-selection"),c.default(o,A.COLLABORATOR,"dtable-font dtable-icon-collaborator"),c.default(o,A.LINK,"dtable-font dtable-icon-link-other-record"),c.default(o,A.FORMULA,"dtable-font dtable-icon-formula"),c.default(o,A.LINK_FORMULA,"dtable-font dtable-icon-link-formulas"),c.default(o,A.CREATOR,"dtable-font dtable-icon-creator"),c.default(o,A.CTIME,"dtable-font dtable-icon-creation-time"),c.default(o,A.LAST_MODIFIER,"dtable-font dtable-icon-creator"),c.default(o,A.MTIME,"dtable-font dtable-icon-creation-time"),c.default(o,A.GEOLOCATION,"dtable-font dtable-icon-location"),c.default(o,A.AUTO_NUMBER,"dtable-font dtable-icon-autonumber"),c.default(o,A.URL,"dtable-font dtable-icon-url"),c.default(o,A.EMAIL,"dtable-font dtable-icon-email"),c.default(o,A.DURATION,"dtable-font dtable-icon-duration"),c.default(o,A.BUTTON,"dtable-font dtable-icon-button"),c.default(o,A.RATE,"dtable-font dtable-icon-rate"),c.default(o,A.DIGITAL_SIGN,"dtable-font dtable-icon-handwritten-signature"),o),N=[A.DATE,A.CTIME,A.MTIME],F=[A.NUMBER,A.DURATION,A.RATE],L=[A.COLLABORATOR,A.CREATOR,A.LAST_MODIFIER],S="YYYY-MM-DD",D="year",C="month",m="day",I="hours",p="minutes",Y={H_MM:"h:mm",H_MM_SS:"h:mm:ss",H_MM_SS_S:"h:mm:ss.s",H_MM_SS_SS:"h:mm:ss.ss",H_MM_SS_SSS:"h:mm:ss.sss"},y=[{name:Y.H_MM,type:Y.H_MM},{name:Y.H_MM_SS,type:Y.H_MM_SS}],h=(_={},c.default(_,Y.H_MM,0),c.default(_,Y.H_MM_SS,0),c.default(_,Y.H_MM_SS_S,1),c.default(_,Y.H_MM_SS_SS,2),c.default(_,Y.H_MM_SS_SSS,3),_),g=(l={},c.default(l,Y.H_MM,"0:00"),c.default(l,Y.H_MM_SS,"0:00"),c.default(l,Y.H_MM_SS_S,"0:00.0"),c.default(l,Y.H_MM_SS_SS,"0:00.00"),c.default(l,Y.H_MM_SS_SSS,"0:00.000"),l),v="number",H={TODAY:"today",TOMORROW:"tomorrow",YESTERDAY:"yesterday",ONE_WEEK_AGO:"one_week_ago",ONE_WEEK_FROM_NOW:"one_week_from_now",ONE_MONTH_AGO:"one_month_ago",ONE_MONTH_FROM_NOW:"one_month_from_now",NUMBER_OF_DAYS_AGO:"number_of_days_ago",NUMBER_OF_DAYS_FROM_NOW:"number_of_days_from_now",EXACT_DATE:"exact_date",THE_PAST_WEEK:"the_past_week",THE_PAST_MONTH:"the_past_month",THE_PAST_YEAR:"the_past_year",THE_NEXT_WEEK:"the_next_week",THE_NEXT_MONTH:"the_next_month",THE_NEXT_YEAR:"the_next_year",THE_NEXT_NUMBERS_OF_DAYS:"the_next_numbers_of_days",THE_PAST_NUMBERS_OF_DAYS:"the_past_numbers_of_days",THIS_WEEK:"this_week",THIS_MONTH:"this_month",THIS_YEAR:"this_year"},U=(s={},c.default(s,H.TODAY,"today"),c.default(s,H.TOMORROW,"tomorrow"),c.default(s,H.YESTERDAY,"yesterday"),c.default(s,H.ONE_WEEK_AGO,"one week ago"),c.default(s,H.ONE_WEEK_FROM_NOW,"one week from now"),c.default(s,H.ONE_MONTH_AGO,"one month ago"),c.default(s,H.ONE_MONTH_FROM_NOW,"one month from now"),c.default(s,H.NUMBER_OF_DAYS_AGO,"number of days ago"),c.default(s,H.NUMBER_OF_DAYS_FROM_NOW,"number of days from now"),c.default(s,H.EXACT_DATE,"exact date"),c.default(s,H.THE_PAST_WEEK,"the past week"),c.default(s,H.THE_PAST_MONTH,"the past month"),c.default(s,H.THE_PAST_YEAR,"the past year"),c.default(s,H.THE_NEXT_WEEK,"the next week"),c.default(s,H.THE_NEXT_MONTH,"the next month"),c.default(s,H.THE_NEXT_YEAR,"the next year"),c.default(s,H.THE_NEXT_NUMBERS_OF_DAYS,"the next numbers of days..."),c.default(s,H.THE_PAST_NUMBERS_OF_DAYS,"the past numbers of days..."),c.default(s,H.THIS_WEEK,"this week"),c.default(s,H.THIS_MONTH,"this month"),c.default(s,H.THIS_YEAR,"this year"),s),B={CONTAINS:"contains",NOT_CONTAIN:"does_not_contain",IS:"is",IS_NOT:"is_not",EQUAL:"equal",NOT_EQUAL:"not_equal",LESS:"less",GREATER:"greater",LESS_OR_EQUAL:"less_or_equal",GREATER_OR_EQUAL:"greater_or_equal",EMPTY:"is_empty",NOT_EMPTY:"is_not_empty",IS_WITHIN:"is_within",IS_BEFORE:"is_before",IS_AFTER:"is_after",IS_ON_OR_BEFORE:"is_on_or_before",IS_ON_OR_AFTER:"is_on_or_after",HAS_ANY_OF:"has_any_of",HAS_ALL_OF:"has_all_of",HAS_NONE_OF:"has_none_of",IS_EXACTLY:"is_exactly",INCLUDE_ME:"include_me",IS_CURRENT_USER_ID:"is_current_user_ID",IS_ANY_OF:"is_any_of",IS_NONE_OF:"is_none_of"},b=(u={},c.default(u,B.CONTAINS,"contains"),c.default(u,B.NOT_CONTAIN,"does not contain"),c.default(u,B.IS,"is"),c.default(u,B.IS_NOT,"is not"),c.default(u,B.EQUAL,"="),c.default(u,B.NOT_EQUAL,"≠"),c.default(u,B.LESS,"<"),c.default(u,B.GREATER,">"),c.default(u,B.LESS_OR_EQUAL,"≤"),c.default(u,B.GREATER_OR_EQUAL,"≥"),c.default(u,B.EMPTY,"is empty"),c.default(u,B.NOT_EMPTY,"is not empty"),c.default(u,B.IS_WITHIN,"is within..."),c.default(u,B.IS_BEFORE,"is before..."),c.default(u,B.IS_AFTER,"is after..."),c.default(u,B.IS_ON_OR_BEFORE,"is on or before..."),c.default(u,B.IS_ON_OR_AFTER,"is on or after..."),c.default(u,B.HAS_ANY_OF,"has any of..."),c.default(u,B.HAS_ALL_OF,"has all of..."),c.default(u,B.HAS_NONE_OF,"has none of..."),c.default(u,B.IS_EXACTLY,"is exactly..."),c.default(u,B.IS_CURRENT_USER_ID,"is current user's ID"),u),P=[B.CONTAINS,B.NOT_CONTAIN,B.IS,B.IS_NOT,B.EMPTY,B.NOT_EMPTY,B.IS_CURRENT_USER_ID],x=[B.EQUAL,B.NOT_EQUAL,B.LESS,B.GREATER,B.LESS_OR_EQUAL,B.GREATER_OR_EQUAL,B.EMPTY,B.NOT_EMPTY],G=[B.IS,B.IS_WITHIN,B.IS_BEFORE,B.IS_AFTER,B.IS_ON_OR_BEFORE,B.IS_ON_OR_AFTER,B.IS_NOT,B.EMPTY,B.NOT_EMPTY],X=P.filter((function(e){return e!==B.IS_CURRENT_USER_ID})),W=[H.TODAY,H.TOMORROW,H.YESTERDAY,H.ONE_WEEK_AGO,H.ONE_WEEK_FROM_NOW,H.ONE_MONTH_AGO,H.ONE_MONTH_FROM_NOW,H.NUMBER_OF_DAYS_AGO,H.NUMBER_OF_DAYS_FROM_NOW,H.EXACT_DATE],w=(E={},c.default(E,A.TEXT,{filterPredicateList:P}),c.default(E,A.NUMBER,{filterPredicateList:x}),c.default(E,A.CHECKBOX,{filterPredicateList:[B.IS]}),c.default(E,A.DATE,{filterPredicateList:G,filterTermModifierList:W}),c.default(E,A.CTIME,{filterPredicateList:G,filterTermModifierList:W}),c.default(E,A.MTIME,{filterPredicateList:G,filterTermModifierList:W}),c.default(E,A.SINGLE_SELECT,{filterPredicateList:[B.IS,B.IS_NOT,B.IS_ANY_OF,B.IS_NONE_OF,B.EMPTY,B.NOT_EMPTY]}),c.default(E,A.MULTIPLE_SELECT,{filterPredicateList:[B.HAS_ANY_OF,B.HAS_ALL_OF,B.HAS_NONE_OF,B.IS_EXACTLY,B.EMPTY,B.NOT_EMPTY]}),c.default(E,A.COLLABORATOR,{filterPredicateList:[B.HAS_ANY_OF,B.HAS_ALL_OF,B.HAS_NONE_OF,B.IS_EXACTLY,B.EMPTY,B.NOT_EMPTY,B.INCLUDE_ME]}),c.default(E,A.CREATOR,{filterPredicateList:[B.CONTAINS,B.NOT_CONTAIN,B.INCLUDE_ME,B.IS,B.IS_NOT]}),c.default(E,A.GEOLOCATION,{filterPredicateList:X}),c.default(E,A.FORMULA,{}),c.default(E,A.LINK_FORMULA,{}),c.default(E,A.LINK,{}),c.default(E,A.LAST_MODIFIER,{filterPredicateList:[B.CONTAINS,B.NOT_CONTAIN,B.INCLUDE_ME,B.IS,B.IS_NOT]}),c.default(E,A.AUTO_NUMBER,{filterPredicateList:[B.CONTAINS,B.NOT_CONTAIN,B.IS,B.IS_NOT]}),c.default(E,A.EMAIL,{filterPredicateList:[B.CONTAINS,B.NOT_CONTAIN,B.IS,B.IS_NOT,B.EMPTY,B.NOT_EMPTY]}),c.default(E,A.URL,{filterPredicateList:[B.CONTAINS,B.NOT_CONTAIN,B.IS,B.IS_NOT,B.EMPTY,B.NOT_EMPTY]}),c.default(E,A.IMAGE,{filterPredicateList:[B.EMPTY,B.NOT_EMPTY]}),c.default(E,A.FILE,{filterPredicateList:[B.EMPTY,B.NOT_EMPTY]}),c.default(E,A.LONG_TEXT,{filterPredicateList:[B.EMPTY,B.NOT_EMPTY]}),c.default(E,A.DURATION,{filterPredicateList:x}),c.default(E,A.RATE,{filterPredicateList:x}),c.default(E,A.DIGITAL_SIGN,{filterPredicateList:[B.EMPTY,B.NOT_EMPTY]}),c.default(E,A.STRING,{filterPredicateList:P}),c.default(E,A.BOOL,{filterPredicateList:[B.IS]}),E),k=[H.EXACT_DATE,H.TODAY,H.TOMORROW,H.YESTERDAY,H.ONE_WEEK_AGO,H.ONE_WEEK_FROM_NOW,H.ONE_MONTH_AGO,H.ONE_MONTH_FROM_NOW,H.NUMBER_OF_DAYS_AGO,H.NUMBER_OF_DAYS_FROM_NOW],V=[H.THE_PAST_WEEK,H.THE_PAST_MONTH,H.THE_PAST_YEAR,H.THIS_WEEK,H.THIS_MONTH,H.THIS_YEAR,H.THE_NEXT_WEEK,H.THE_NEXT_MONTH,H.THE_NEXT_YEAR,H.THE_NEXT_NUMBERS_OF_DAYS,H.THE_PAST_NUMBERS_OF_DAYS],K={INVALID_FILTER:"invalid filter",INCOMPLETE_FILTER:"incomplete filter",COLUMN_MISSING:"the column to filter does not exist",COLUMN_NOT_SUPPORTED:"the column to filter is not supported",UNMATCHED_PREDICATE:"unmatched filter predicate",UNMATCHED_MODIFIER:"unmatched filter modifier",INVALID_TERM:"invalid filter term"},j={NUMBER:"number",STRING:"string",DATE:"date",BOOL:"bool",ARRAY:"array"},Q=(O={},c.default(O,A.FORMULA,!0),c.default(O,A.LINK_FORMULA,!0),O),q=function(e,t){if(!e||"string"!=typeof e)return"";var r=T.default(e);if(!r.isValid())return e;switch(t){case"D/M/YYYY":case"DD/MM/YYYY":var a=r.format("YYYY-MM-DD").split("-");return"".concat(a[2],"/").concat(a[1],"/").concat(a[0]);case"D/M/YYYY HH:mm":case"DD/MM/YYYY HH:mm":var n=r.format("YYYY-MM-DD HH:mm").split(" "),i=n[0].split("-");return"".concat(i[2],"/").concat(i[1],"/").concat(i[0]," ").concat(n[1]);case"M/D/YYYY":return r.format("M/D/YYYY");case"M/D/YYYY HH:mm":return r.format("M/D/YYYY HH:mm");case"YYYY-MM-DD":default:return r.format("YYYY-MM-DD");case"YYYY-MM-DD HH:mm":return r.format("YYYY-MM-DD HH:mm");case"YYYY-MM-DD HH:mm:ss":return r.format("YYYY-MM-DD HH:mm:ss");case"DD.MM.YYYY":return r.format("DD.MM.YYYY");case"DD.MM.YYYY HH:mm":return r.format("DD.MM.YYYY HH:mm")}},Z=function(e,t){if(!e&&0!==e)return"";var r=(t||{}).duration_format;if(r=r||Y.H_MM,y.findIndex((function(e){return e.type===r}))<0)return"";if(0===e)return g[r];var a=r.indexOf(".")>-1,n=Math.abs(e);a||(n=Math.round(n)),n=function(e,t){var r=h[t];if(r<1)return e;var a=Math.pow(10,r);return Math.round(e*a)/a}(n,r);var i=String(n).split("."),o=i.length,_=0;o>1&&(_=(_=i[o-1])?_-0:0);var l=h[r],s=function(e,t){if(e===Y.H_MM_SS_S)return 0===t?".0":"";if(e===Y.H_MM_SS_SS)return 0===t?".00":t<10?"0":"";if(e===Y.H_MM_SS_SSS){if(0===t)return".000";if(t<10)return"00";if(t<100)return"0"}return""}(r,_),u=parseInt(n/3600,10),E=parseInt((n-3600*u)/60,10),O=e<0?"-":"";if(r===Y.H_MM)return O+="".concat(u,":").concat(E>9?E:"0".concat(E));var c=Number.parseFloat((n-3600*u-60*E).toFixed(l));return E=E>9?E:"0".concat(E),c=c>9?c:"0".concat(c),O+="".concat(u,":").concat(E,":").concat(c).concat(s)},z=function(e){var t=e.toString().split(/[eE]/),r=(t[0].split(".")[1]||"").length-+(t[1]||0);return r>0?r:0},$=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;return+parseFloat(Number(e).toPrecision(t))},J=function(e){if(-1===e.toString().indexOf("e"))return Number(e.toString().replace(".",""));var t=z(e);return t>0?$(Number(e)*Math.pow(10,t)):Number(e)},ee=function(e,t){var r=J(e),a=J(t),n=z(e)+z(t);return r*a/Math.pow(10,n)},te={comma:",",dot:".",no:"",space:" "},re=function(e){return"string"!=typeof e?"":e.endsWith("0")?e.replace(/(?:\.0*|(\.\d+?)0+)$/,"$1"):e},ae=function(e,t){var r=t.formats,a=t.isCurrency,n=void 0===a||a,i=r||{},o=i.decimal,_=void 0===o?"dot":o,l=i.thousands,s=void 0===l?"no":l,u=i.precision,E=void 0===u?2:u,O=i.enable_precision,c=void 0!==O&&O;if(String(e).includes("e")){if(e<1&&e>-1){var T=e.toFixed(c?E:8);return c||(T=re(T)),0===parseFloat(T)&&T.startsWith("-")?T.substring(1):T}return e}var d,f,R,A=te[_],M=te[s],N=c?E:function(e){if(Number.isInteger(e))return 0;var t=String(e).split(".")[1],r=t?t.length:8;return r>8?8:r}(e),F=parseFloat(e.toFixed(N)),L=F<0,S=Math.trunc(F),D=String(Math.abs((d=F,f=S,R=Math.pow(10,Math.max(z(d),z(f))),(ee(d,R)-ee(f,R))/R)).toFixed(N)).slice(1);c||(D=re(D)),n&&(c||(D=2===D.length?D=D.padEnd(3,"0"):(D.substring(0,3)||".").padEnd(3,"0"))),D=D.replace(/./,A);for(var C=[],m=0,I=(S=Math.abs(S).toString()).length-1;I>-1;I--)m+=1,C.unshift(S[I]),m%3||0===I||C.unshift(M);return"".concat(L?"-":"").concat(C.join("")).concat(D)},ne=function(e,t){var r=Object.prototype.toString.call(e);if("[object Number]"!==r)return"[object String]"===r&&e.startsWith("#")?e:"";if(isNaN(e)||e===1/0||e===-1/0)return String(e);var a=(t||{}).format;switch(void 0===a?v:a){case"number":return ae(e,{formats:t,isCurrency:!1});case"percent":return"".concat(ae(Number.parseFloat((100*e).toFixed(8)),{formats:t,isCurrency:!1}),"%");case"yuan":return"¥".concat(ae(e,{formats:t}));case"dollar":return"$".concat(ae(e,{formats:t}));case"euro":return"€".concat(ae(e,{formats:t}));case"duration":return Z(e,t);case"custom_currency":return"after"===t.currency_symbol_position?"".concat(ae(e,{formats:t})).concat(t.currency_symbol||""):"".concat(t.currency_symbol||"").concat(ae(e,{formats:t}));default:return String(e)}},ie=function(e,t){if(!t||!Array.isArray(e))return"";var r=e.find((function(e){return e.id===t}));return r?r.name:""},oe=function(e,t){if(!Array.isArray(t)||!Array.isArray(e))return"";var r=e.filter((function(e){return t.includes(e.id)}));return 0===r.length?"":r.map((function(e){return e.name})).join(", ")},_e=function(e,t){if(!Array.isArray(e)||!Array.isArray(t))return[];var r={};return t.forEach((function(e){r[e.email]=e})),e.map((function(e){var t=r[e];return t&&t.name})).filter(Boolean)},le=function(e,t){var r=_e(t,e);return Array.isArray(r)&&0!==r.length?r.join(", "):""},se=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=r.isBaiduMap,n=void 0===a||a,i=r.hyphen,o=void 0===i?"":i;if(!e)return"";switch((t||{}).geo_format){case"lng_lat":var _=e||{},l=_.lng,s=_.lat;return function(e,t){return(e||0===e)&&(t||0===t)}(l,s)?n?"".concat(l,", ").concat(s):"".concat(s,", ").concat(l):"";case"country_region":return(e||{}).country_region||"";case"province":return(e||{}).province||"";case"province_city":var u=e||{},E=u.province,O=u.city;return"".concat(E||"").concat(o).concat(O||"").trim();case"province_city_district":var c=e||{},T=c.province,d=c.city,f=c.district;return"".concat(T||"").concat(o).concat(d||"").concat(o).concat(f||"").trim();default:var R=e||{},A=R.province,M=R.city,N=R.district,F=R.detail;return A||M||N||F?"".concat(A||"").concat(o).concat(M||"").concat(o).concat(N||"").concat(o).concat(F||"").trim():""}},ue=function(e){return e&&e.sign_image_url||""},Ee=function(e){return e&&e.text||""},Oe=[1,1,1,2,2,2,3,3,3,4,4,4],ce=/(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,Te=/\d\d?/,de=/\d\d/,fe={mm:[Te,p],HH:[Te,I],D:[Te,m],DD:[de,m],M:[Te,C],MM:[de,C],YYYY:[/\d{4}/,D]},Re=["YYYY","MM","M","DD","D"],Ae=function(){function e(){d.default(this,e)}return f.default(e,null,[{key:"format",value:function(e,t){var r=this.getValidDate(e);if(!r)return"";var a=t&&t.toUpperCase(),n=r.getFullYear(),i=r.getMonth()+1,o=r.getDate(),_=i<10?"0".concat(i):i,l=o<10?"0".concat(o):o;switch(a){case"YYYY-MM-DD HH:MM:SS":var s=r.getHours(),u=r.getMinutes(),E=r.getSeconds(),O=s<10?"0".concat(s):s,c=u<10?"0".concat(u):u,T=E<10?"0".concat(E):E;return"".concat(n,"-").concat(_,"-").concat(l," ").concat(O,":").concat(c,":").concat(T);case"YYYY-MM-DD HH:MM":var d=r.getHours(),f=r.getMinutes(),R=d<10?"0".concat(d):d,A=f<10?"0".concat(f):f;return"".concat(n,"-").concat(_,"-").concat(l," ").concat(R,":").concat(A);default:return"".concat(n,"-").concat(_,"-").concat(l)}}},{key:"getDateByGranularity",value:function(e,t){var r=this.getValidDate(e);if(!r)return"";var a=t&&t.toUpperCase(),n=r.getFullYear();switch(a){case"YEAR":return"".concat(n);case"QUARTAR":var i=r.getMonth(),o=Oe[i];return"".concat(n,"-Q").concat(o);case"MONTH":var _=r.getMonth()+1,l=_<10?"0".concat(_):_;return"".concat(n,"-").concat(l);case"WEEK":var s=r.getDay(),u=r.getDate()+(0===s?-6:1-s),E=new Date(n,r.getMonth(),u),O=E.getMonth()+1,c=E.getDate(),T=O<10?"0".concat(O):O,d=c<10?"0".concat(c):c;return"".concat(E.getFullYear(),"-").concat(T,"-").concat(d);case"DAY":var f=r.getMonth()+1,R=r.getDate(),A=f<10?"0".concat(f):f,M=R<10?"0".concat(R):R;return"".concat(n,"-").concat(A,"-").concat(M);default:return""}}},{key:"isValidDateObject",value:function(e){return e instanceof Date&&!isNaN(e.getTime())}},{key:"getValidDate",value:function(e){if(!e)return null;var t="string"==typeof e,r=e,a=e;return t&&(r.split(" ").length>1||r.includes("T")?a=new Date(e):(r="".concat(e," 00:00:00"),a=new Date(r))),this.isValidDateObject(a)?a:t?(a=new Date(r.replace(/-/g,"/")),this.isValidDateObject(a)?a:null):null}},{key:"parseDateWithFormat",value:function(e,t){try{var r=this.makeParser(t)(e),a=r.year,n=r.month,i=r.day,o=r.hours,_=r.minutes;if(!a)a=(new Date).getFullYear();var l=new Date("".concat(a,"-").concat(n,"-").concat(i," ").concat(o||"00",":").concat(_||"00"));return this.isValidDateObject(l)?l:this.getValidDate(e)}catch(t){return this.getValidDate(e)}}},{key:"makeParser",value:function(e){var t=(e||S).match(ce),r=t.length;return function(e){for(var a=e.split(" "),n=a[0]||"",i=a[1]||"",o={},_=0;_<r;_++){var l=t[_],s=fe[l];if(s){var u=s[0],E=s[1];if(E){var O=Re.includes(l),c=O?u.exec(n):u.exec(i);if(c){var T=c[0];o[E]=T,O?n=n.replace(T,""):i=i.replace(T,"")}}}}return o}}}]),e}(),Me=[A.IMAGE,A.FILE,A.MULTIPLE_SELECT,A.COLLABORATOR],Ne=function(e,t){if(!t)return"";var r=t.result_type;if(r===j.NUMBER)return ne(e,t);if(r===j.DATE){var a=t.format;return q(e,a)}if(r===j.ARRAY){var n=t.array_type,i=t.array_data;return n?L.includes(n)?e:!Me.includes(n)&&Array.isArray(e)?e.map((function(e){return Fe({FORMULA_ARRAY:e},n,"FORMULA_ARRAY",{data:i})})).join(", "):Fe({FORMULA_ARRAY:e},n,"FORMULA_ARRAY",{data:i}):""}return"[object Boolean]"===Object.prototype.toString.call(e)?String(e):e},Fe=function(e,t,r){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=a.data,i=a.formulaRows,o=void 0===i?{}:i,_=a.collaborators,l=void 0===_?[]:_,s=a.isBaiduMap,u=void 0===s||s,E=a.geolocationHyphen,O=void 0===E?"":E;if(!e)return"";var c=e[r];switch(t){case A.LONG_TEXT:return Ee(c);case A.NUMBER:return ne(c,n);case A.DURATION:return Z(c,n);case A.GEOLOCATION:return se(c,n,{isBaiduMap:u,hyphen:O});case A.SINGLE_SELECT:if(!n)return"";var T=n.options;return ie(T,c);case A.MULTIPLE_SELECT:if(!n)return"";var d=n.options;return oe(d,c);case A.DATE:var f=(n||{}).format;return q(c,void 0===f?S:f);case A.CTIME:case A.MTIME:return Ae.format(c,"YYYY-MM-DD HH:MM:SS");case A.COLLABORATOR:return le(l,c);case A.CREATOR:case A.LAST_MODIFIER:return"anonymous"===c?c:le(l,[c]);case A.FORMULA:case A.LINK_FORMULA:var R=o[e._id]||{};return Ne(R[r],n);case A.DIGITAL_SIGN:return ue(c);default:return c||"boolean"==typeof c?String(c):""}},Le=function(e,t){if(!e&&0!==e)return null;if("number"==typeof e)return e;if("string"!=typeof e)return null;var r,a,n,i,o=parseFloat(e.replace(/[^.-\d]/g,""));return"percent"!==t||isNaN(o)?isNaN(o)?null:o:(a=100,n=J(r=o),i=J(a),ee(n/i,$(Math.pow(10,z(a)-z(r)))))},Se=function(e){var t=e.type,r=e.data;if(Q[t]){var a=r||{},n=a.result_type,i=a.array_type;return n===j.ARRAY?i:n}return t===A.LINK?(r||{}).array_type:t},De=function(e){return e&&e.data&&Array.isArray(e.data.options)?e.data.options:[]},Ce=function(e){var t=Se(e);return N.includes(t)},me="number",Ie="string",pe="boolean",Ye="array",ye=[A.TEXT,A.STRING],he=[B.EMPTY,B.NOT_EMPTY],ge=[B.IS_ANY_OF,B.IS_NONE_OF],ve=[H.NUMBER_OF_DAYS_AGO,H.NUMBER_OF_DAYS_FROM_NOW,H.THE_NEXT_NUMBERS_OF_DAYS,H.THE_PAST_NUMBERS_OF_DAYS,H.EXACT_DATE],He=[H.NUMBER_OF_DAYS_AGO,H.NUMBER_OF_DAYS_FROM_NOW,H.THE_NEXT_NUMBERS_OF_DAYS,H.THE_PAST_NUMBERS_OF_DAYS],Ue=function(){function e(){d.default(this,e)}return f.default(e,null,[{key:"validate",value:function(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=e.column_key,n=e.filter_predicate,i=e.filter_term_modifier,o=e.filter_term,_=this.validateColumn(a,t).error_message;if(_)return{error_message:_};var l=t.find((function(e){return e.key===a})),s=this.validatePredicate(n,l).error_message;if(s)return{error_message:s};if(this.isFilterOnlyWithPredicate(n,l))return{error_message:null};var u=this.validateModifier(i,n,l).error_message;if(u)return{error_message:u};if(this.isFilterOnlyWithModifier(i,l))return{error_message:null};if(r){var E=this.validateTerm(o,n,i,l).error_message;if(E)return{error_message:E}}return{error_message:null}}},{key:"validateColumn",value:function(e,t){if(!e)return{error_message:K.INCOMPLETE_FILTER};var r=t.find((function(t){return t.key===e}));return r?this.isValidColumnType(r)?{error_message:null}:{error_message:K.COLUMN_NOT_SUPPORTED}:{error_message:K.COLUMN_MISSING}}},{key:"validatePredicate",value:function(e,t){if(!e)return{error_message:K.INCOMPLETE_FILTER};var r=t.type,a=t.data,n=w[r].filterPredicateList;if(Q[r]||r===A.LINK){var i=a.result_type;return i===j.ARRAY?this.validatePredicateWithArrayType(e,t):this.validatePredicate(e,{type:i})}return n.includes(e)?{error_message:null}:{error_message:K.UNMATCHED_PREDICATE}}},{key:"validatePredicateWithArrayType",value:function(e,t){var r=t.data.array_type;return r===A.SINGLE_SELECT?this.validatePredicate(e,{type:A.MULTIPLE_SELECT}):L.includes(r)?this.validatePredicate(e,{type:A.COLLABORATOR}):this.validatePredicate(e,{type:r})}},{key:"isFilterOnlyWithPredicate",value:function(e,t){if(he.includes(e))return!0;var r=t.type,a=t.data;if(Q[r]||r===A.LINK){var n=a.result_type,i=a.array_type;return n===j.ARRAY?this.isFilterOnlyWithPredicate(e,{type:i}):this.isFilterOnlyWithPredicate(e,{type:n})}var o=B.INCLUDE_ME;return!(e!==B.IS_CURRENT_USER_ID||!ye.includes(r))||!(e!==o||!L.includes(r))}},{key:"validateModifier",value:function(e,t,r){if(!Ce(r))return{error_message:null};if(!e)return{error_message:K.INCOMPLETE_FILTER};if(t===B.IS_WITHIN){if(V.includes(e))return{error_message:null}}else if(k.includes(e))return{error_message:null};return{error_message:K.UNMATCHED_MODIFIER}}},{key:"isFilterOnlyWithModifier",value:function(e,t){return!!Ce(t)&&!ve.includes(e)}},{key:"validateTerm",value:function(e,t,r,a){return this.isTermMissing(e)?{error_message:K.INCOMPLETE_FILTER}:this.isValidTerm(e,t,r,a)?{error_message:null}:{error_message:K.INVALID_TERM}}},{key:"isTermMissing",value:function(e){return!e&&0!==e&&!1!==e||Array.isArray(e)&&0===e.length}},{key:"isValidTerm",value:function(e,t,r,a){switch(a.type){case A.TEXT:case A.GEOLOCATION:case A.AUTO_NUMBER:case A.EMAIL:case A.URL:case A.STRING:return this.isValidTermType(e,Ie);case A.SINGLE_SELECT:var n=De(a);return ge.includes(t)?!!this.isValidTermType(e,Ye)&&this.isValidSelectedOptions(e,n):!!this.isValidTermType(e,Ie)&&!!n.find((function(t){return e===t.id}));case A.NUMBER:case A.DURATION:case A.RATE:return this.isValidTermType(e,me);case A.CHECKBOX:case A.BOOL:return this.isValidTermType(e,pe);case A.COLLABORATOR:case A.CREATOR:case A.LAST_MODIFIER:return this.isValidTermType(e,Ye);case A.MULTIPLE_SELECT:if(!this.isValidTermType(e,Ye))return!1;var i=De(a);return this.isValidSelectedOptions(e,i);case A.DATE:case A.CTIME:case A.MTIME:return He.includes(r)?this.isValidTermType(e,me):this.isValidTermType(e,Ie);case A.FORMULA:case A.LINK_FORMULA:var o=a.data.result_type;return o===j.ARRAY?this.isValidTermWithArrayType(e,t,r,a):this.isValidTerm(e,t,r,{type:o});case A.LINK:return this.isValidTermWithArrayType(e,t,r,a);default:return!1}}},{key:"isValidTermType",value:function(e,t){return t===Ye?Array.isArray(e)&&e.length>0:t===A.NUMBER?R.default(e)===t||!isNaN(Number(e)):R.default(e)===t}},{key:"isValidTermWithArrayType",value:function(e,t,r,a){var n=a.data,i=n.array_type,o=n.array_data;return i===A.SINGLE_SELECT?this.isValidTerm(e,t,r,{type:A.MULTIPLE_SELECT,data:o}):L.includes(i)?this.isValidTerm(e,t,r,{type:A.COLLABORATOR}):this.isValidTerm(e,t,r,{type:i,data:o})}},{key:"isValidColumnType",value:function(e){var t=e.type,r=e.data;if(Q[t]||t===A.LINK){if(!r)return!1;var a=r.result_type,n=r.array_type;return a===j.ARRAY?this.isValidColumnType({type:n}):this.isValidColumnType({type:a})}return w.hasOwnProperty(t)}},{key:"isValidSelectedOptions",value:function(e,t){var r=t.filter((function(t){return e.includes(t.id)}));return e.length===r.length}}]),e}();exports.COLLABORATOR_COLUMN_TYPES=L,exports.COLUMNS_ICON_CONFIG=M,exports.CellType=A,exports.DATE_COLUMN_OPTIONS=N,exports.DEFAULT_DATE_FORMAT=S,exports.DEFAULT_NUMBER_FORMAT=v,exports.DURATION_DECIMAL_DIGITS=h,exports.DURATION_FORMATS=y,exports.DURATION_FORMATS_MAP=Y,exports.DURATION_ZERO_DISPLAY=g,exports.DateUtils=Ae,exports.FILTER_COLUMN_OPTIONS=w,exports.FILTER_ERR_MSG=K,exports.FILTER_PREDICATE_SHOW=b,exports.FILTER_PREDICATE_TYPE=B,exports.FILTER_TERM_MODIFIER_SHOW=U,exports.FILTER_TERM_MODIFIER_TYPE=H,exports.FORMULA_COLUMN_TYPES_MAP=Q,exports.FORMULA_RESULT_TYPE=j,exports.HIGHLIGHT_COLORS={"#FFE8E6":"#FF6052","#FFDED5":"#FF714A","#FFE7D1":"#FF851A","#EED5FF":"#B64DFD","#DAD7FF":"#5F4CFF","#D7E8FF":"#3C8FFF","#D8FAFF":"#41E7FF","#DDFFE6":"#16BA51","#E9E9E9":"#999999","#FBD44A":"#E5C142","#EAA775":"#D59361","#F4667C":"#DC556A","#DC82D2":"#D166C5","#9860E5":"#844BD2","#9F8CF1":"#8F75E2","#59CB74":"#4EB867","#ADDF84":"#9CCF72","#89D2EA":"#7BC0D6","#4ECCCB":"#45BAB9","#46A1FD":"#3C8FE4","#C2C2C2":"#ADADAD","#FFFCB5":"#E8E79D","#FFEAB6":"#ECD084","#FFD9C8":"#EFBAA3","#FFDDE5":"#EDC4C1","#FFD4FF":"#E6B6E6","#DEF7C4":"#C5EB9E","#B7CEF9":"#96B2E1"},exports.NUMERIC_COLUMNS_TYPES=F,exports.SELECT_OPTION_COLORS=[{COLOR:"#FFFCB5",BORDER_COLOR:"#E8E79D",TEXT_COLOR:"#212529"},{COLOR:"#FFEAB6",BORDER_COLOR:"#ECD084",TEXT_COLOR:"#212529"},{COLOR:"#FFD9C8",BORDER_COLOR:"#EFBAA3",TEXT_COLOR:"#212529"},{COLOR:"#FFDDE5",BORDER_COLOR:"#EDC4C1",TEXT_COLOR:"#212529"},{COLOR:"#FFD4FF",BORDER_COLOR:"#E6B6E6",TEXT_COLOR:"#212529"},{COLOR:"#DAD7FF",BORDER_COLOR:"#C3BEEF",TEXT_COLOR:"#212529"},{COLOR:"#DDFFE6",BORDER_COLOR:"#BBEBCD",TEXT_COLOR:"#212529"},{COLOR:"#DEF7C4",BORDER_COLOR:"#C5EB9E",TEXT_COLOR:"#212529"},{COLOR:"#D8FAFF",BORDER_COLOR:"#B4E4E9",TEXT_COLOR:"#212529"},{COLOR:"#D7E8FF",BORDER_COLOR:"#BAD1E9",TEXT_COLOR:"#212529"},{COLOR:"#B7CEF9",BORDER_COLOR:"#96B2E1",TEXT_COLOR:"#212529"},{COLOR:"#E9E9E9",BORDER_COLOR:"#DADADA",TEXT_COLOR:"#212529"},{COLOR:"#FBD44A",BORDER_COLOR:"#E5C142",TEXT_COLOR:"#FFFFFF"},{COLOR:"#EAA775",BORDER_COLOR:"#D59361",TEXT_COLOR:"#FFFFFF"},{COLOR:"#F4667C",BORDER_COLOR:"#DC556A",TEXT_COLOR:"#FFFFFF"},{COLOR:"#DC82D2",BORDER_COLOR:"#D166C5",TEXT_COLOR:"#FFFFFF"},{COLOR:"#9860E5",BORDER_COLOR:"#844BD2",TEXT_COLOR:"#FFFFFF"},{COLOR:"#9F8CF1",BORDER_COLOR:"#8F75E2",TEXT_COLOR:"#FFFFFF"},{COLOR:"#59CB74",BORDER_COLOR:"#4EB867",TEXT_COLOR:"#FFFFFF"},{COLOR:"#ADDF84",BORDER_COLOR:"#9CCF72",TEXT_COLOR:"#FFFFFF"},{COLOR:"#89D2EA",BORDER_COLOR:"#7BC0D6",TEXT_COLOR:"#FFFFFF"},{COLOR:"#4ECCCB",BORDER_COLOR:"#45BAB9",TEXT_COLOR:"#FFFFFF"},{COLOR:"#46A1FD",BORDER_COLOR:"#3C8FE4",TEXT_COLOR:"#FFFFFF"},{COLOR:"#C2C2C2",BORDER_COLOR:"#ADADAD",TEXT_COLOR:"#FFFFFF"}],exports.ValidateFilter=Ue,exports.filterTermModifierIsWithin=V,exports.filterTermModifierNotWithin=k,exports.formatStringToNumber=function(e,t){var r=t||{},a=r.format,n=r.decimal,i=r.thousands,o=r.enable_precision,_=r.precision,l=e;if(n&&i&&"comma"===n&&(l="dot"===i?(l=(l=l.replace(/,/,"@")).replace(/\./g,",")).replace(/@/,"."):(l=l.replace(/\./g,"")).replace(/,/,".")),l=Le(l,a),o&&l){var s="percent"===a?_+2:_;l=Number(parseFloat(l).toFixed(s))}return l},exports.generatorBase64Code=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:4,t="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789",r="",a=0;a<e;a++)r+=t.charAt(Math.floor(72*Math.random()));return r},exports.getCellValueDisplayString=Fe,exports.getCollaboratorsName=le,exports.getCollaboratorsNames=_e,exports.getColumnOptions=De,exports.getDateDisplayString=q,exports.getDigitalSignImageUrl=ue,exports.getDurationDisplayString=Z,exports.getFloatNumber=Le,exports.getFormulaDisplayString=Ne,exports.getGeolocationDisplayString=se,exports.getLongtextDisplayString=Ee,exports.getMultipleOptionName=oe,exports.getNumberDisplayString=ne,exports.getOptionName=ie,exports.isDateColumn=Ce,exports.isNumberColumn=function(e){return Se(e)===A.NUMBER},exports.isNumericColumn=function(e){var t=Se(e);return F.includes(t)},exports.isValidEmail=function(e){return/^[A-Za-z0-9]+([-_.][A-Za-z0-9]+)*@([A-Za-z0-9]+[-.])+[A-Za-z0-9]{2,20}$/.test(e)},exports.replaceNumberNotAllowInput=function(e,t,r){if(!e)return"";var a=e.replace(/。/g,".");switch(t){case"percent":return a.replace(/[^.-\d,%]/g,"");case"yuan":return a.replace(/[^.-\d¥¥,]/g,"");case"dollar":return a.replace(/[^.-\d$,]/g,"");case"euro":return a.replace(/[^.-\d€,]/g,"");case"custom_currency":var n=new RegExp("[^.-d"+r+",]","g");return a.replace(n,"");default:return a.replace(/[^.-\d,]/g,"")}};
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { CellType } from '../constants/cell-type.js';
|
|
2
|
+
import { COLLABORATOR_COLUMN_TYPES, DEFAULT_DATE_FORMAT } from '../constants/column.js';
|
|
3
|
+
import { FORMULA_RESULT_TYPE } from '../constants/formula.js';
|
|
4
|
+
import { DateUtils } from '../date.js';
|
|
5
|
+
import { getCollaboratorsName } from './collaborator.js';
|
|
6
|
+
import { getDateDisplayString } from './date.js';
|
|
7
|
+
import { getDigitalSignImageUrl } from './digital-sign.js';
|
|
8
|
+
import { getDurationDisplayString } from './duration.js';
|
|
9
|
+
import { getGeolocationDisplayString } from './geolocation.js';
|
|
10
|
+
import { getLongtextDisplayString } from './long-text.js';
|
|
11
|
+
import { getNumberDisplayString } from './number.js';
|
|
12
|
+
import { getMultipleOptionName, getOptionName } from './option.js';
|
|
13
|
+
|
|
14
|
+
var ARRAY_VALUE_COLUMN_TYPES = [CellType.IMAGE, CellType.FILE, CellType.MULTIPLE_SELECT, CellType.COLLABORATOR];
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Get formatted formula result to display. It will not be formatted
|
|
18
|
+
* if formula result_type is array and array_type is collaborator, creator or last-modifier etc.
|
|
19
|
+
* @param {any} cellValue
|
|
20
|
+
* @param {object} columnData the data from column
|
|
21
|
+
* @returns formatted formula result, string|array
|
|
22
|
+
*/
|
|
23
|
+
var getFormulaDisplayString = function getFormulaDisplayString(cellValue, columnData) {
|
|
24
|
+
if (!columnData) {
|
|
25
|
+
return '';
|
|
26
|
+
}
|
|
27
|
+
var result_type = columnData.result_type;
|
|
28
|
+
if (result_type === FORMULA_RESULT_TYPE.NUMBER) {
|
|
29
|
+
return getNumberDisplayString(cellValue, columnData);
|
|
30
|
+
}
|
|
31
|
+
if (result_type === FORMULA_RESULT_TYPE.DATE) {
|
|
32
|
+
var format = columnData.format;
|
|
33
|
+
return getDateDisplayString(cellValue, format);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// rollup result_type is an array, cellValue may not be an array
|
|
37
|
+
if (result_type === FORMULA_RESULT_TYPE.ARRAY) {
|
|
38
|
+
var array_type = columnData.array_type,
|
|
39
|
+
array_data = columnData.array_data;
|
|
40
|
+
if (!array_type) {
|
|
41
|
+
return '';
|
|
42
|
+
}
|
|
43
|
+
if (COLLABORATOR_COLUMN_TYPES.includes(array_type)) {
|
|
44
|
+
return cellValue;
|
|
45
|
+
}
|
|
46
|
+
if (!ARRAY_VALUE_COLUMN_TYPES.includes(array_type) && Array.isArray(cellValue)) {
|
|
47
|
+
return cellValue.map(function (val) {
|
|
48
|
+
return getCellValueDisplayString({
|
|
49
|
+
FORMULA_ARRAY: val
|
|
50
|
+
}, array_type, 'FORMULA_ARRAY', {
|
|
51
|
+
data: array_data
|
|
52
|
+
});
|
|
53
|
+
}).join(', ');
|
|
54
|
+
}
|
|
55
|
+
return getCellValueDisplayString({
|
|
56
|
+
FORMULA_ARRAY: cellValue
|
|
57
|
+
}, array_type, 'FORMULA_ARRAY', {
|
|
58
|
+
data: array_data
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
if (Object.prototype.toString.call(cellValue) === '[object Boolean]') {
|
|
62
|
+
return String(cellValue);
|
|
63
|
+
}
|
|
64
|
+
return cellValue;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Get formatted cell value to display.
|
|
69
|
+
* @param {object} row e.g. { [column.key]: 'xxx' }
|
|
70
|
+
* @param {string} type column type
|
|
71
|
+
* @param {string} key column key
|
|
72
|
+
* @param {object} data column data
|
|
73
|
+
* @param {object} formulaRows formula results of rows. Default as "{}"
|
|
74
|
+
* @param {array} collaborators e.g. [{ email: 'xxx', name: 'xxx' }, ...]. Default as "[]"
|
|
75
|
+
* @param {bool} isBaiduMap Determine the way to connect latitude and longitude. Default as true
|
|
76
|
+
* @param {string} geolocationHyphen Used as a connector between province, city, district and detail. Default as empty string
|
|
77
|
+
* @returns formatted cell value, string|array
|
|
78
|
+
*/
|
|
79
|
+
var getCellValueDisplayString = function getCellValueDisplayString(row, type, key) {
|
|
80
|
+
var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
81
|
+
data = _ref.data,
|
|
82
|
+
_ref$formulaRows = _ref.formulaRows,
|
|
83
|
+
formulaRows = _ref$formulaRows === void 0 ? {} : _ref$formulaRows,
|
|
84
|
+
_ref$collaborators = _ref.collaborators,
|
|
85
|
+
collaborators = _ref$collaborators === void 0 ? [] : _ref$collaborators,
|
|
86
|
+
_ref$isBaiduMap = _ref.isBaiduMap,
|
|
87
|
+
isBaiduMap = _ref$isBaiduMap === void 0 ? true : _ref$isBaiduMap,
|
|
88
|
+
_ref$geolocationHyphe = _ref.geolocationHyphen,
|
|
89
|
+
geolocationHyphen = _ref$geolocationHyphe === void 0 ? '' : _ref$geolocationHyphe;
|
|
90
|
+
if (!row) return '';
|
|
91
|
+
var cellValue = row[key];
|
|
92
|
+
switch (type) {
|
|
93
|
+
case CellType.LONG_TEXT:
|
|
94
|
+
{
|
|
95
|
+
return getLongtextDisplayString(cellValue);
|
|
96
|
+
}
|
|
97
|
+
case CellType.NUMBER:
|
|
98
|
+
{
|
|
99
|
+
return getNumberDisplayString(cellValue, data);
|
|
100
|
+
}
|
|
101
|
+
case CellType.DURATION:
|
|
102
|
+
{
|
|
103
|
+
return getDurationDisplayString(cellValue, data);
|
|
104
|
+
}
|
|
105
|
+
case CellType.GEOLOCATION:
|
|
106
|
+
{
|
|
107
|
+
return getGeolocationDisplayString(cellValue, data, {
|
|
108
|
+
isBaiduMap: isBaiduMap,
|
|
109
|
+
hyphen: geolocationHyphen
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
case CellType.SINGLE_SELECT:
|
|
113
|
+
{
|
|
114
|
+
if (!data) return '';
|
|
115
|
+
var options = data.options;
|
|
116
|
+
return getOptionName(options, cellValue);
|
|
117
|
+
}
|
|
118
|
+
case CellType.MULTIPLE_SELECT:
|
|
119
|
+
{
|
|
120
|
+
if (!data) return '';
|
|
121
|
+
var _options = data.options;
|
|
122
|
+
return getMultipleOptionName(_options, cellValue);
|
|
123
|
+
}
|
|
124
|
+
case CellType.DATE:
|
|
125
|
+
{
|
|
126
|
+
var _ref2 = data || {},
|
|
127
|
+
_ref2$format = _ref2.format,
|
|
128
|
+
format = _ref2$format === void 0 ? DEFAULT_DATE_FORMAT : _ref2$format;
|
|
129
|
+
return getDateDisplayString(cellValue, format);
|
|
130
|
+
}
|
|
131
|
+
case CellType.CTIME:
|
|
132
|
+
case CellType.MTIME:
|
|
133
|
+
{
|
|
134
|
+
return DateUtils.format(cellValue, 'YYYY-MM-DD HH:MM:SS');
|
|
135
|
+
}
|
|
136
|
+
case CellType.COLLABORATOR:
|
|
137
|
+
{
|
|
138
|
+
return getCollaboratorsName(collaborators, cellValue);
|
|
139
|
+
}
|
|
140
|
+
case CellType.CREATOR:
|
|
141
|
+
case CellType.LAST_MODIFIER:
|
|
142
|
+
{
|
|
143
|
+
return cellValue === 'anonymous' ? cellValue : getCollaboratorsName(collaborators, [cellValue]);
|
|
144
|
+
}
|
|
145
|
+
case CellType.FORMULA:
|
|
146
|
+
case CellType.LINK_FORMULA:
|
|
147
|
+
{
|
|
148
|
+
var formulaRow = formulaRows[row._id] || {};
|
|
149
|
+
return getFormulaDisplayString(formulaRow[key], data);
|
|
150
|
+
}
|
|
151
|
+
case CellType.DIGITAL_SIGN:
|
|
152
|
+
{
|
|
153
|
+
return getDigitalSignImageUrl(cellValue);
|
|
154
|
+
}
|
|
155
|
+
default:
|
|
156
|
+
{
|
|
157
|
+
if (cellValue || typeof cellValue === 'boolean') {
|
|
158
|
+
return String(cellValue);
|
|
159
|
+
}
|
|
160
|
+
return '';
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
export { getCellValueDisplayString, getFormulaDisplayString };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get collaborators name list of given emails
|
|
3
|
+
* @param {array} emails e.g. ['email', ...]
|
|
4
|
+
* @param {array} collaborators e.g. [{ email: 'xxx', name: 'xxx' }, ...]
|
|
5
|
+
* @returns name list, array. e.g. ['name1', 'name2']
|
|
6
|
+
*/
|
|
7
|
+
var getCollaboratorsNames = function getCollaboratorsNames(emails, collaborators) {
|
|
8
|
+
if (!Array.isArray(emails) || !Array.isArray(collaborators)) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
var emailCollaboratorMap = {};
|
|
12
|
+
collaborators.forEach(function (collaborator) {
|
|
13
|
+
emailCollaboratorMap[collaborator.email] = collaborator;
|
|
14
|
+
});
|
|
15
|
+
return emails.map(function (email) {
|
|
16
|
+
var collaborator = emailCollaboratorMap[email];
|
|
17
|
+
return collaborator && collaborator.name;
|
|
18
|
+
}).filter(Boolean);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Get concatenated collaborators names of given emails.
|
|
23
|
+
* @param {array} collaborators e.g. [{ email: 'xxx', name: 'xxx' }, ...]
|
|
24
|
+
* @param {array} emails e.g. ['email', ...]
|
|
25
|
+
* @returns concatenated collaborators names, string. e.g. 'name1, name2'
|
|
26
|
+
*/
|
|
27
|
+
var getCollaboratorsName = function getCollaboratorsName(collaborators, emails) {
|
|
28
|
+
var collaboratorsNames = getCollaboratorsNames(emails, collaborators);
|
|
29
|
+
if (!Array.isArray(collaboratorsNames) || collaboratorsNames.length === 0) return '';
|
|
30
|
+
return collaboratorsNames.join(', ');
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { getCollaboratorsName, getCollaboratorsNames };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import dayjs from 'dayjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Get formatted date
|
|
5
|
+
* @param {string} date e.g. "2023-07-06 11:30"
|
|
6
|
+
* @param {string} format e.g. "YYYY-MM-DD"
|
|
7
|
+
* @returns formatted date, string
|
|
8
|
+
*/
|
|
9
|
+
var getDateDisplayString = function getDateDisplayString(date, format) {
|
|
10
|
+
if (!date || typeof date !== 'string') {
|
|
11
|
+
return '';
|
|
12
|
+
}
|
|
13
|
+
var dateObj = dayjs(date);
|
|
14
|
+
if (!dateObj.isValid()) return date;
|
|
15
|
+
switch (format) {
|
|
16
|
+
case 'D/M/YYYY':
|
|
17
|
+
case 'DD/MM/YYYY':
|
|
18
|
+
{
|
|
19
|
+
var formatValue = dateObj.format('YYYY-MM-DD');
|
|
20
|
+
var formatValueList = formatValue.split('-');
|
|
21
|
+
return "".concat(formatValueList[2], "/").concat(formatValueList[1], "/").concat(formatValueList[0]);
|
|
22
|
+
}
|
|
23
|
+
case 'D/M/YYYY HH:mm':
|
|
24
|
+
case 'DD/MM/YYYY HH:mm':
|
|
25
|
+
{
|
|
26
|
+
var formatValues = dateObj.format('YYYY-MM-DD HH:mm');
|
|
27
|
+
var formatValuesList = formatValues.split(' ');
|
|
28
|
+
var formatDateList = formatValuesList[0].split('-');
|
|
29
|
+
return "".concat(formatDateList[2], "/").concat(formatDateList[1], "/").concat(formatDateList[0], " ").concat(formatValuesList[1]);
|
|
30
|
+
}
|
|
31
|
+
case 'M/D/YYYY':
|
|
32
|
+
return dateObj.format('M/D/YYYY');
|
|
33
|
+
case 'M/D/YYYY HH:mm':
|
|
34
|
+
return dateObj.format('M/D/YYYY HH:mm');
|
|
35
|
+
case 'YYYY-MM-DD':
|
|
36
|
+
return dateObj.format('YYYY-MM-DD');
|
|
37
|
+
case 'YYYY-MM-DD HH:mm':
|
|
38
|
+
return dateObj.format('YYYY-MM-DD HH:mm');
|
|
39
|
+
case 'YYYY-MM-DD HH:mm:ss':
|
|
40
|
+
{
|
|
41
|
+
return dateObj.format('YYYY-MM-DD HH:mm:ss');
|
|
42
|
+
}
|
|
43
|
+
case 'DD.MM.YYYY':
|
|
44
|
+
return dateObj.format('DD.MM.YYYY');
|
|
45
|
+
case 'DD.MM.YYYY HH:mm':
|
|
46
|
+
return dateObj.format('DD.MM.YYYY HH:mm');
|
|
47
|
+
default:
|
|
48
|
+
// Compatible with older versions: if format is null, use defaultFormat
|
|
49
|
+
return dateObj.format('YYYY-MM-DD');
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export { getDateDisplayString };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get signature image url to display
|
|
3
|
+
* @param {object} digitalSign object, e.g. { sign_image_url: 'xxx' }
|
|
4
|
+
* @returns signature image url, string
|
|
5
|
+
*/
|
|
6
|
+
var getDigitalSignImageUrl = function getDigitalSignImageUrl(digitalSign) {
|
|
7
|
+
return digitalSign && digitalSign.sign_image_url || '';
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export { getDigitalSignImageUrl };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { DURATION_FORMATS_MAP, DURATION_FORMATS, DURATION_ZERO_DISPLAY, DURATION_DECIMAL_DIGITS } from '../constants/column.js';
|
|
2
|
+
|
|
3
|
+
var getMathRoundedDuration = function getMathRoundedDuration(num, duration_format) {
|
|
4
|
+
var decimalDigits = DURATION_DECIMAL_DIGITS[duration_format];
|
|
5
|
+
if (decimalDigits < 1) {
|
|
6
|
+
return num;
|
|
7
|
+
}
|
|
8
|
+
var ratio = Math.pow(10, decimalDigits);
|
|
9
|
+
return Math.round(num * ratio) / ratio;
|
|
10
|
+
};
|
|
11
|
+
var getDurationDecimalSuffix = function getDurationDecimalSuffix(duration_format, decimal) {
|
|
12
|
+
if (duration_format === DURATION_FORMATS_MAP.H_MM_SS_S) {
|
|
13
|
+
return decimal === 0 ? '.0' : '';
|
|
14
|
+
}
|
|
15
|
+
if (duration_format === DURATION_FORMATS_MAP.H_MM_SS_SS) {
|
|
16
|
+
if (decimal === 0) {
|
|
17
|
+
return '.00';
|
|
18
|
+
}
|
|
19
|
+
if (decimal < 10) {
|
|
20
|
+
return '0';
|
|
21
|
+
}
|
|
22
|
+
return '';
|
|
23
|
+
}
|
|
24
|
+
if (duration_format === DURATION_FORMATS_MAP.H_MM_SS_SSS) {
|
|
25
|
+
if (decimal === 0) {
|
|
26
|
+
return '.000';
|
|
27
|
+
}
|
|
28
|
+
if (decimal < 10) {
|
|
29
|
+
return '00';
|
|
30
|
+
}
|
|
31
|
+
if (decimal < 100) {
|
|
32
|
+
return '0';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return '';
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Get formatted duration.
|
|
40
|
+
* @param {number} duration e.g. 100
|
|
41
|
+
* @param {object} formats { duration_format: 'h:mm', ... }
|
|
42
|
+
* @returns formatted duration, string
|
|
43
|
+
*/
|
|
44
|
+
var getDurationDisplayString = function getDurationDisplayString(duration, formats) {
|
|
45
|
+
if (!duration && duration !== 0) return '';
|
|
46
|
+
var _ref = formats || {},
|
|
47
|
+
duration_format = _ref.duration_format;
|
|
48
|
+
duration_format = duration_format || DURATION_FORMATS_MAP.H_MM;
|
|
49
|
+
if (DURATION_FORMATS.findIndex(function (format) {
|
|
50
|
+
return format.type === duration_format;
|
|
51
|
+
}) < 0) {
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
if (duration === 0) {
|
|
55
|
+
return DURATION_ZERO_DISPLAY[duration_format];
|
|
56
|
+
}
|
|
57
|
+
var includeDecimal = duration_format.indexOf('.') > -1;
|
|
58
|
+
var positiveValue = Math.abs(duration);
|
|
59
|
+
if (!includeDecimal) {
|
|
60
|
+
positiveValue = Math.round(positiveValue);
|
|
61
|
+
}
|
|
62
|
+
positiveValue = getMathRoundedDuration(positiveValue, duration_format);
|
|
63
|
+
var decimalParts = String(positiveValue).split('.');
|
|
64
|
+
var decimalPartsLen = decimalParts.length;
|
|
65
|
+
var decimal = 0;
|
|
66
|
+
if (decimalPartsLen > 1) {
|
|
67
|
+
decimal = decimalParts[decimalPartsLen - 1];
|
|
68
|
+
decimal = decimal ? decimal - 0 : 0;
|
|
69
|
+
}
|
|
70
|
+
var decimalDigits = DURATION_DECIMAL_DIGITS[duration_format];
|
|
71
|
+
var decimalSuffix = getDurationDecimalSuffix(duration_format, decimal);
|
|
72
|
+
var hours = parseInt(positiveValue / 3600, 10);
|
|
73
|
+
var minutes = parseInt((positiveValue - hours * 3600) / 60, 10);
|
|
74
|
+
var displayString = duration < 0 ? '-' : '';
|
|
75
|
+
if (duration_format === DURATION_FORMATS_MAP.H_MM) {
|
|
76
|
+
displayString += "".concat(hours, ":").concat(minutes > 9 ? minutes : "0".concat(minutes));
|
|
77
|
+
return displayString;
|
|
78
|
+
}
|
|
79
|
+
var seconds = Number.parseFloat((positiveValue - hours * 3600 - minutes * 60).toFixed(decimalDigits));
|
|
80
|
+
minutes = minutes > 9 ? minutes : "0".concat(minutes);
|
|
81
|
+
seconds = seconds > 9 ? seconds : "0".concat(seconds);
|
|
82
|
+
displayString += "".concat(hours, ":").concat(minutes, ":").concat(seconds).concat(decimalSuffix);
|
|
83
|
+
return displayString;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export { getDurationDisplayString };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
var isValidPosition = function isValidPosition(lng, lat) {
|
|
2
|
+
return (lng || lng === 0) && (lat || lat === 0);
|
|
3
|
+
};
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Get formatted geolocation
|
|
7
|
+
* @param {object} loc
|
|
8
|
+
* @param {object} formats , e.g. { geo_format: 'xxx' }
|
|
9
|
+
* @param {bool} isBaiduMap Determine the way to connect latitude and longitude. Default as true
|
|
10
|
+
* @param {string} hyphen Used as a connector between province, city, district and detail. Default as empty string
|
|
11
|
+
* @returns formatted geolocation, string
|
|
12
|
+
*/
|
|
13
|
+
var getGeolocationDisplayString = function getGeolocationDisplayString(loc, formats) {
|
|
14
|
+
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
15
|
+
_ref$isBaiduMap = _ref.isBaiduMap,
|
|
16
|
+
isBaiduMap = _ref$isBaiduMap === void 0 ? true : _ref$isBaiduMap,
|
|
17
|
+
_ref$hyphen = _ref.hyphen,
|
|
18
|
+
hyphen = _ref$hyphen === void 0 ? '' : _ref$hyphen;
|
|
19
|
+
if (!loc) {
|
|
20
|
+
return '';
|
|
21
|
+
}
|
|
22
|
+
var _ref2 = formats || {},
|
|
23
|
+
geo_format = _ref2.geo_format;
|
|
24
|
+
switch (geo_format) {
|
|
25
|
+
case 'lng_lat':
|
|
26
|
+
{
|
|
27
|
+
var _ref3 = loc || {},
|
|
28
|
+
lng = _ref3.lng,
|
|
29
|
+
lat = _ref3.lat;
|
|
30
|
+
if (!isValidPosition(lng, lat)) return '';
|
|
31
|
+
return isBaiduMap ? "".concat(lng, ", ").concat(lat) : "".concat(lat, ", ").concat(lng);
|
|
32
|
+
}
|
|
33
|
+
case 'country_region':
|
|
34
|
+
{
|
|
35
|
+
var _ref4 = loc || {},
|
|
36
|
+
country_region = _ref4.country_region;
|
|
37
|
+
return country_region || '';
|
|
38
|
+
}
|
|
39
|
+
case 'province':
|
|
40
|
+
{
|
|
41
|
+
var _ref5 = loc || {},
|
|
42
|
+
province = _ref5.province;
|
|
43
|
+
return province || '';
|
|
44
|
+
}
|
|
45
|
+
case 'province_city':
|
|
46
|
+
{
|
|
47
|
+
var _ref6 = loc || {},
|
|
48
|
+
_province = _ref6.province,
|
|
49
|
+
city = _ref6.city;
|
|
50
|
+
return "".concat(_province || '').concat(hyphen).concat(city || '').trim();
|
|
51
|
+
}
|
|
52
|
+
case 'province_city_district':
|
|
53
|
+
{
|
|
54
|
+
var _ref7 = loc || {},
|
|
55
|
+
_province2 = _ref7.province,
|
|
56
|
+
_city = _ref7.city,
|
|
57
|
+
district = _ref7.district;
|
|
58
|
+
return "".concat(_province2 || '').concat(hyphen).concat(_city || '').concat(hyphen).concat(district || '').trim();
|
|
59
|
+
}
|
|
60
|
+
default:
|
|
61
|
+
{
|
|
62
|
+
// default as 'geolocation'
|
|
63
|
+
var _ref8 = loc || {},
|
|
64
|
+
_province3 = _ref8.province,
|
|
65
|
+
_city2 = _ref8.city,
|
|
66
|
+
_district = _ref8.district,
|
|
67
|
+
detail = _ref8.detail;
|
|
68
|
+
if (!_province3 && !_city2 && !_district && !detail) return '';
|
|
69
|
+
return "".concat(_province3 || '').concat(hyphen).concat(_city2 || '').concat(hyphen).concat(_district || '').concat(hyphen).concat(detail || '').trim();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export { getGeolocationDisplayString };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get text from long-text to display.
|
|
3
|
+
* @param {object} longText e.g. { text: 'xxx' }
|
|
4
|
+
* @returns text from long-text, string
|
|
5
|
+
*/
|
|
6
|
+
var getLongtextDisplayString = function getLongtextDisplayString(longText) {
|
|
7
|
+
if (!longText) return '';
|
|
8
|
+
return longText.text || '';
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { getLongtextDisplayString };
|