@corva/ui 3.22.3 → 3.22.4
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/cjs-bundle/components/Attachment/index.js +1 -1
- package/cjs-bundle/components/Attachment/index.js.map +1 -1
- package/cjs-bundle/components/Avatar/index.js +1 -1
- package/cjs-bundle/components/Comment/index.js +1 -1
- package/cjs-bundle/components/Comment/index.js.map +1 -1
- package/cjs-bundle/components/CommentInput/index.js +1 -1
- package/cjs-bundle/components/CommentInput/index.js.map +1 -1
- package/cjs-bundle/components/CopyToClipboard/CopyToClipboard.js +1 -1
- package/cjs-bundle/components/FeedItem/FeedItem.js +1 -1
- package/cjs-bundle/components/FeedItem/FeedItem.js.map +1 -1
- package/cjs-bundle/components/FeedItem/FeedItemEditProvider/FeedItemEditModal.js +1 -1
- package/cjs-bundle/components/FeedItem/FeedItemEditProvider/FeedItemEditModal.js.map +1 -1
- package/cjs-bundle/components/FeedItem/components/Reactions.js +1 -1
- package/cjs-bundle/components/FeedItem/components/Reactions.js.map +1 -1
- package/cjs-bundle/components/FilePreview/index.js +1 -1
- package/cjs-bundle/components/FilePreview/index.js.map +1 -1
- package/cjs-bundle/components/OffsetWellChips/Chip.js +1 -1
- package/cjs-bundle/components/WellSummary/WellSummaryItemValue.js +1 -1
- package/cjs-bundle/components/WellSummary/WellSummaryItemValue.js.map +1 -1
- package/cjs-bundle/componentsV2/Avatar/Avatar.js +1 -1
- package/cjs-bundle/componentsV2/Avatar/constants.js +1 -1
- package/cjs-bundle/utils/index.js +1 -1
- package/cjs-bundle/utils/index.js.map +1 -1
- package/cjs-bundle/utils/lasParser.js +1 -1
- package/cjs-bundle/utils/lasParser.js.map +1 -1
- package/cjs-bundle/utils/main.js +1 -1
- package/cjs-bundle/utils/main.js.map +1 -1
- package/cjs-bundle/utils/mapUnits.js +1 -1
- package/cjs-bundle/utils/mapUnits.js.map +1 -1
- package/cjs-bundle/utils/permissions.js +1 -1
- package/cjs-bundle/utils/permissions.js.map +1 -1
- package/componentsV2/CopyToClipboard/CopyToClipboard.js +1 -1
- package/package.json +1 -1
- package/utils/lasParser.d.ts +2 -1
- package/utils/lasParser.js +1 -1
- package/utils/lasParser.js.map +1 -1
- package/utils/main.d.ts +53 -112
- package/utils/main.d.ts.map +1 -1
- package/utils/main.js +1 -1
- package/utils/main.js.map +1 -1
- package/utils/mapUnits.d.ts +1 -10
- package/utils/mapUnits.d.ts.map +1 -1
- package/utils/mapUnits.js +1 -1
- package/utils/mapUnits.js.map +1 -1
- package/utils/permissions.d.ts +2 -1
- package/utils/permissions.d.ts.map +1 -1
- package/utils/permissions.js +1 -1
- package/utils/permissions.js.map +1 -1
package/utils/main.d.ts
CHANGED
|
@@ -1,116 +1,57 @@
|
|
|
1
|
+
export function formatValuePrecision(value: any): any;
|
|
2
|
+
export function downloadPDF(filename: any, pdfBlob: any): void;
|
|
3
|
+
export function unescapeLineBreaks(string?: string): string;
|
|
4
|
+
export function dataURLtoBlob(dataURL: string): Blob;
|
|
5
|
+
export function banchmarkTimer(name: string): any;
|
|
6
|
+
export function convertToPercent(value: number, sum: number): number;
|
|
7
|
+
export function parseNumberFromString(string: string): [type];
|
|
8
|
+
export function getLinesFrequency(linesAmount: number): number;
|
|
9
|
+
export function getAverageByColumnsForCSV(csv: string): any[];
|
|
10
|
+
export function intToRGB(i: any): string;
|
|
11
|
+
export function hashCode(str: any): number;
|
|
12
|
+
export function getColorFromString(str: string): string;
|
|
13
|
+
export function throttledEventListener(obj: any, type: any, callback: any, ctx: any): () => any;
|
|
14
|
+
export function getSnapshotForElement(elemId: string): string;
|
|
15
|
+
export function getAssetStatusColor(status: any): "#9e9e9e" | "#f44336" | "#ffeb3b" | "#2196f3" | "#4caf50";
|
|
16
|
+
export function closest(array: any[], value: number): number;
|
|
17
|
+
export function mathMax(a: any, b: any): any;
|
|
18
|
+
export function mathMin(a: any, b: any): any;
|
|
19
|
+
export function getOperationByType(operationType: number | null): object | undefined;
|
|
20
|
+
export function getUserFullName(user: any): string;
|
|
21
|
+
export function getNameInitials(name: any): any;
|
|
22
|
+
export function getS3BucketName(): "corva-files-qa" | "corva-files";
|
|
23
|
+
export function getS3FileUrl(bucket: any, fileName: any): string;
|
|
24
|
+
export function getFileNameWithExtensionFromPath(path?: string): string;
|
|
25
|
+
export function hexToRgbA(hex: any, alpha?: number): string;
|
|
26
|
+
export function truncateString(str: any, limit: any): any;
|
|
27
|
+
export function copyToClipboard(text: string): undefined;
|
|
1
28
|
export default utils;
|
|
2
29
|
declare namespace utils {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
*/
|
|
30
|
-
function convertToPercent(value: number, sum: number): number;
|
|
31
|
-
/**
|
|
32
|
-
* Gets average by each column in CSV
|
|
33
|
-
* @param {String} csv - CSV
|
|
34
|
-
* @return {Array} - first element is headers, second element is averages
|
|
35
|
-
*/
|
|
36
|
-
function getAverageByColumnsForCSV(csv: string): any[];
|
|
37
|
-
/**
|
|
38
|
-
* Parse number from string, if not number - returns 0
|
|
39
|
-
* @param {String} string - string that may contain number
|
|
40
|
-
* @return {[type]} - parsed number or 0
|
|
41
|
-
*/
|
|
42
|
-
function parseNumberFromString(string: string): [type];
|
|
43
|
-
/**
|
|
44
|
-
* Get lines friquency to get from CSV
|
|
45
|
-
* Helps to get from 1000 to 9999 lines from CSV to preven complex calculations
|
|
46
|
-
* @param {Number} linesAmount - lines amount in CSV
|
|
47
|
-
* @return {Number} - fines frequency
|
|
48
|
-
*/
|
|
49
|
-
function getLinesFrequency(linesAmount: number): number;
|
|
50
|
-
/**
|
|
51
|
-
* Transform given string to a color (RGB)
|
|
52
|
-
* @param {string} str
|
|
53
|
-
* @returns {string}
|
|
54
|
-
*/
|
|
55
|
-
function getColorFromString(str: string): string;
|
|
56
|
-
/**
|
|
57
|
-
* Transform given number to a color (RGB)
|
|
58
|
-
* @param i
|
|
59
|
-
* @returns {string}
|
|
60
|
-
* @private
|
|
61
|
-
*/
|
|
62
|
-
function intToRGB(i: any): string;
|
|
63
|
-
/**
|
|
64
|
-
* Transform given string to a hash code
|
|
65
|
-
* @param str
|
|
66
|
-
* @returns {number}
|
|
67
|
-
* @private
|
|
68
|
-
*/
|
|
69
|
-
function hashCode(str: any): number;
|
|
70
|
-
/**
|
|
71
|
-
* Optimize event handler via throttling
|
|
72
|
-
* @param obj - event emitter (must have addEventListener method)
|
|
73
|
-
* @param type - event type
|
|
74
|
-
* @param callback - event handler
|
|
75
|
-
* @param ctx - context for event handler execution
|
|
76
|
-
* @returns {function()} - unsubscribe function
|
|
77
|
-
*/
|
|
78
|
-
function throttledEventListener(obj: any, type: any, callback: any, ctx: any): () => any;
|
|
79
|
-
/**
|
|
80
|
-
* Get a snapshot for any DOM element on the page
|
|
81
|
-
* @param elemId {string} - dom element id
|
|
82
|
-
* @returns {string} - data URL for snapshot
|
|
83
|
-
*/
|
|
84
|
-
function getSnapshotForElement(elemId: string): string;
|
|
85
|
-
function getAssetStatusColor(status: any): "#9e9e9e" | "#f44336" | "#ffeb3b" | "#2196f3" | "#4caf50";
|
|
86
|
-
/**
|
|
87
|
-
* Finds closest to value in array of numbers
|
|
88
|
-
* Source: https://stackoverflow.com/a/19277804/8337033
|
|
89
|
-
* @param {array} array - array to find closest to value
|
|
90
|
-
* @param {number} value - value to which find closest in array
|
|
91
|
-
* @return {number} - closest to value in array
|
|
92
|
-
*/
|
|
93
|
-
function closest(array: any[], value: number): number;
|
|
94
|
-
function mathMax(a: any, b: any): any;
|
|
95
|
-
function mathMin(a: any, b: any): any;
|
|
96
|
-
/**
|
|
97
|
-
* Gets operation by operation type
|
|
98
|
-
* @param {number|null} operationType - operation type
|
|
99
|
-
* @return {object|undefined} operation - operation
|
|
100
|
-
*/
|
|
101
|
-
function getOperationByType(operationType: number | null): object | undefined;
|
|
102
|
-
function getUserFullName(user: any): string;
|
|
103
|
-
function getNameInitials(name: any): any;
|
|
104
|
-
function getS3BucketName(): "corva-files-qa" | "corva-files";
|
|
105
|
-
function getS3FileUrl(bucket: any, fileName: any): string;
|
|
106
|
-
function getFileNameWithExtensionFromPath(path?: string): string;
|
|
107
|
-
function hexToRgbA(hex: any, alpha?: number): string;
|
|
108
|
-
function truncateString(str: any, limit: any): any;
|
|
109
|
-
/**
|
|
110
|
-
* Copies text to clipboard
|
|
111
|
-
* @param {string} text - text to copy
|
|
112
|
-
* @return {undefined}
|
|
113
|
-
*/
|
|
114
|
-
function copyToClipboard(text: string): undefined;
|
|
30
|
+
export { formatValuePrecision };
|
|
31
|
+
export { downloadPDF };
|
|
32
|
+
export { unescapeLineBreaks };
|
|
33
|
+
export { dataURLtoBlob };
|
|
34
|
+
export { banchmarkTimer };
|
|
35
|
+
export { convertToPercent };
|
|
36
|
+
export { getAverageByColumnsForCSV };
|
|
37
|
+
export { getLinesFrequency };
|
|
38
|
+
export { getColorFromString };
|
|
39
|
+
export { intToRGB };
|
|
40
|
+
export { hashCode };
|
|
41
|
+
export { throttledEventListener };
|
|
42
|
+
export { getSnapshotForElement };
|
|
43
|
+
export { getAssetStatusColor };
|
|
44
|
+
export { closest };
|
|
45
|
+
export { mathMax };
|
|
46
|
+
export { mathMin };
|
|
47
|
+
export { getOperationByType };
|
|
48
|
+
export { getUserFullName };
|
|
49
|
+
export { getNameInitials };
|
|
50
|
+
export { getS3BucketName };
|
|
51
|
+
export { getS3FileUrl };
|
|
52
|
+
export { getFileNameWithExtensionFromPath };
|
|
53
|
+
export { hexToRgbA };
|
|
54
|
+
export { truncateString };
|
|
55
|
+
export { copyToClipboard };
|
|
115
56
|
}
|
|
116
57
|
//# sourceMappingURL=main.d.ts.map
|
package/utils/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/utils/main.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/utils/main.js"],"names":[],"mappings":"AAwBO,sDAKN;AAEM,+DAKN;AAQM,4DAEN;AAOM,gDAFM,IAAI,CAWhB;AAOM,kDASN;AAQM,wCAJK,MAAM,OACN,MAAM,GACN,MAAM,CAMjB;AAOM,uDAFK,CAAC,IAAI,CAAC,CAKjB;AAQM,+DAWN;AAOM,8DAmCN;AAQM,kCAHM,MAAM,CAQlB;AAQM,oCAHM,MAAM,CASlB;AAOM,wCAHK,MAAM,GACL,MAAM,CAIlB;AAUM,sFAFM,SAAU,CAmBtB;AAOM,8CAHW,MAAM,GACX,MAAM,CASlB;AAEM,4GAWN;AASM,6CAHK,MAAM,GACN,MAAM,CAMjB;AAEM,6CAON;AAEM,6CAON;AAOM,kDAHK,MAAM,GAAC,IAAI,GACX,MAAM,GAAC,SAAS,CAM3B;AAEM,mDAEN;AAEM,gDAMN;AAEM,oEAKN;AAEM,iEAEN;AAEM,wEAEN;AAEM,4DAIN;AAEM,0DAEN;AAOM,sCAHK,MAAM,GACN,SAAS,CAuBpB"}
|
package/utils/main.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/helpers/toConsumableArray";import
|
|
1
|
+
import e from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/helpers/toConsumableArray";import n from"@babel/runtime/regenerator";import r from"file-saver";import o from"chroma-js";import i from"lodash/round";import a from"lodash/isNaN";import u from"lodash/isNumber";import c from"html2canvas";import l from"@material-ui/core/colors/grey";import s from"@material-ui/core/colors/red";import m from"@material-ui/core/colors/yellow";import f from"@material-ui/core/colors/blue";import p from"@material-ui/core/colors/green";import{SUPPORTED_DRILLING_OPERATIONS as d,DEFAULT_DRILLING_OPERATION_TYPE as h}from"../constants/apps.js";var g,v=l[500],b=s[500],w=m[500],N=f[500],y=p[500],F=function(e){return Number.isFinite(e)?e<100&&e>-100?e.formatNumeral("0,0.00"):e.formatNumeral("0,0.0"):e},A=function(e,t){var n=new File([t],"".concat(e,".pdf"),{type:"application/pdf;charset=utf-8"});r.saveAs(n)},C=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.replace(/\\n/g,"\n")},T=function(e){for(var t=window.atob(e.split(",")[1]),n=e.split(",")[0].split(":")[1].split(";")[0],r=new ArrayBuffer(t.length),o=new Uint8Array(r),i=0;i<t.length;i+=1)o[i]=t.charCodeAt(i);return new Blob([r],{type:n})},E=function(e){var t=new Date;return{stop:function(){var n=(new Date).getTime()-t.getTime();console.info("Timer:",e,"finished in",n,"ms")}}},x=function(e,t){return e&&Number.isFinite(t)&&0!==t?Math.round(100*e/t*100)/100:0},R=function(e){var t=+e;return a(t)?0:t},M=function(e){var t="".concat(e);if(t.length<=4)return 1;var n=t.slice(4).length;return 1*Math.pow(10,n)},S=function(e){var n=e.split("\n"),r=n[0].split(","),o=n[1].split(",").map((function(e){return[R(e)]})),c=M(n.length);n.shift();var l=n.reduce((function(e,n,r){if(r%c==0){var o=n.split(",").map(R);return e.map((function(e,n){var r=+o[n];return u(r)&&!a(r)&&r>0?[].concat(t(e),[r]):e}))}return e}),o).map((function(e){return e.reduce((function(e,t){return e+t}))/e.length}));return l.map((function(e,t){return{header:r[t],value:i(e,5)}}))},B=function(e){var t=(16777215&e).toString(16).toUpperCase();return"00000".substring(0,6-t.length)+t},P=function(e){for(var t=0,n=0;n<e.length;n+=1)t=e.charCodeAt(n)+((t<<5)-t);return t},L=function(e){return B(P(e))},k=function(e,t,n,r){var o=!1,i=function(){o||(o=!0,window.requestAnimationFrame((function(){n.call(r),o=!1})))};return e.addEventListener(t,i),function(){e.removeEventListener(t,i)}},U=(g=e(n.mark((function e(t){var r,o,i,a;return n.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=window.document.getElementById(t)){e.next=3;break}return e.abrupt("return",null);case 3:return o=r.clientHeight,i=r.clientWidth,e.next=6,c(r,{height:o,width:i,logging:!1});case 6:return a=e.sent,e.abrupt("return",a.toDataURL());case 8:case"end":return e.stop()}}),e)}))),function(e){return g.apply(this,arguments)}),_=function(e){return"active"===e?y:"complete"===e?N:"paused"===e?w:"idle"===e||"unknown"===e?v:b},j=function(e,t){return e.reduce((function(e,n){return Math.abs(n-t)<Math.abs(e-t)?n:e}))},q=function(e,t){return Number.isFinite(e)?Number.isFinite(t)?Math.max(e,t):e:t},D=function(e,t){return Number.isFinite(e)?Number.isFinite(t)?Math.min(e,t):e:t},I=function(e){return Object.values(d).find((function(t){return t.value===e||h}))},O=function(e){return e?"".concat(e.first_name," ").concat(e.last_name):""},V=function(e){return e.split(" ").slice(0,2).map((function(e){return e.substr(0,1)})).join("")},G=function(){return"development"===process.env.REACT_APP_ENVIRONMENT||"qa"===process.env.REACT_APP_ENVIRONMENT?"corva-files-qa":"corva-files"},W=function(e,t){return"https://".concat(e,".s3.amazonaws.com/").concat(t)},z=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.split("?")[0].replace(/^.*[\\/]/,"")},H=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=o(e).rgba();return n[n.length-1]=t,"rgba(".concat(n.join(","),")")},J=function(e,t){return e.length>t?"".concat(e.substr(0,t-1),"…"):e},K=function(e){if(navigator.clipboard)navigator.clipboard.writeText(e);else{var t=document.createElement("textarea");t.textContent=e,document.body.appendChild(t);var n=document.getSelection(),r=document.createRange();r.selectNode(t),n.removeAllRanges(),n.addRange(r),document.execCommand("copy"),n.removeAllRanges(),document.body.removeChild(t)}},Q={formatValuePrecision:F,downloadPDF:A,unescapeLineBreaks:C,dataURLtoBlob:T,banchmarkTimer:E,convertToPercent:x,getAverageByColumnsForCSV:S,getLinesFrequency:M,getColorFromString:L,intToRGB:B,hashCode:P,throttledEventListener:k,getSnapshotForElement:U,getAssetStatusColor:_,closest:j,mathMax:q,mathMin:D,getOperationByType:I,getUserFullName:O,getNameInitials:V,getS3BucketName:G,getS3FileUrl:W,getFileNameWithExtensionFromPath:z,hexToRgbA:H,truncateString:J,copyToClipboard:K};window.getSnapshotForElement=U;export{E as banchmarkTimer,j as closest,x as convertToPercent,K as copyToClipboard,T as dataURLtoBlob,Q as default,A as downloadPDF,F as formatValuePrecision,_ as getAssetStatusColor,S as getAverageByColumnsForCSV,L as getColorFromString,z as getFileNameWithExtensionFromPath,M as getLinesFrequency,V as getNameInitials,I as getOperationByType,G as getS3BucketName,W as getS3FileUrl,U as getSnapshotForElement,O as getUserFullName,P as hashCode,H as hexToRgbA,B as intToRGB,q as mathMax,D as mathMin,R as parseNumberFromString,k as throttledEventListener,J as truncateString,C as unescapeLineBreaks};
|
|
2
2
|
//# sourceMappingURL=main.js.map
|
package/utils/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../../src/utils/main.js"],"sourcesContent":["import FileSaver from 'file-saver';\nimport chroma from 'chroma-js';\nimport round from 'lodash/round';\nimport isNaN from 'lodash/isNaN';\nimport isNumber from 'lodash/isNumber';\n/**\n * TODO: html2canvas - is used in order to take snapshots for DOM elements.\n * It must be removed after moving snapshot functionality to the back-end\n */\nimport html2canvas from 'html2canvas';\nimport grey from '@material-ui/core/colors/grey';\nimport red from '@material-ui/core/colors/red';\nimport yellow from '@material-ui/core/colors/yellow';\nimport blue from '@material-ui/core/colors/blue';\nimport green from '@material-ui/core/colors/green';\n\nimport { SUPPORTED_DRILLING_OPERATIONS, DEFAULT_DRILLING_OPERATION_TYPE } from '~/constants/apps';\n\nconst grey500 = grey['500'];\nconst red500 = red['500'];\nconst yellow500 = yellow['500'];\nconst blue500 = blue['500'];\nconst green500 = green['500'];\n\nconst utils = {\n formatValuePrecision(value) {\n if (!Number.isFinite(value)) return value;\n\n const displayMorePrecise = value < 100 && value > -100;\n return displayMorePrecise ? value.formatNumeral('0,0.00') : value.formatNumeral('0,0.0');\n },\n\n downloadPDF(filename, pdfBlob) {\n const pdf = new File([pdfBlob], `${filename}.pdf`, {\n type: 'application/pdf;charset=utf-8',\n });\n FileSaver.saveAs(pdf);\n },\n\n /**\n * Unescape line break '\\n' symbols. Summary and description of App may contain escaped\n * single '\\\\n' or multiple '\\\\n\\\\n...' line break symbols.\n * @param {String} - String to unescape\n * @return {String} - Unescaped string\n */\n unescapeLineBreaks(string = '') {\n return string.replace(/\\\\n/g, '\\n');\n },\n\n /**\n * Convert dataURL to Blob object.\n * @param dataURL {String} - dataURL string to convert\n * @returns {Blob} - result Blob object\n */\n dataURLtoBlob(dataURL) {\n const byteString = window.atob(dataURL.split(',')[1]);\n const mimeString = dataURL.split(',')[0].split(':')[1].split(';')[0];\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i += 1) {\n ia[i] = byteString.charCodeAt(i);\n }\n return new Blob([ab], { type: mimeString });\n },\n\n /**\n * Timer for code banchmarks\n * @param {String} name - bame of timer\n * @return {Object} - object with timer stop method\n */\n banchmarkTimer(name) {\n const start = new Date();\n return {\n stop() {\n const end = new Date();\n const time = end.getTime() - start.getTime();\n console.info('Timer:', name, 'finished in', time, 'ms'); // eslint-disable-line no-console\n },\n };\n },\n\n /**\n * Get percent value\n * @param {number} value - target value\n * @param {number} sum - base value\n * @return {number} - percentage\n */\n convertToPercent(value, sum) {\n return value && Number.isFinite(sum) && sum !== 0\n ? Math.round(((value * 100) / sum) * 100) / 100\n : 0;\n },\n\n /**\n * Gets average by each column in CSV\n * @param {String} csv - CSV\n * @return {Array} - first element is headers, second element is averages\n */\n getAverageByColumnsForCSV(csv) {\n const lines = csv.split('\\n');\n\n const headers = lines[0].split(',');\n const initAverages = lines[1].split(',').map(string => [this.parseNumberFromString(string)]);\n const linesFrequency = this.getLinesFrequency(lines.length);\n\n lines.shift(); // NOTE: Remove CSV headers\n\n const averages = lines\n .reduce((averagesAccum, line, index) => {\n if (index % linesFrequency === 0) {\n // NOTE: every 'linesFrequency' line\n const numbers = line.split(',').map(this.parseNumberFromString);\n\n return averagesAccum.map((averagesArr, i) => {\n const number = +numbers[i];\n return isNumber(number) && !isNaN(number) && number > 0\n ? [...averagesArr, number]\n : averagesArr;\n });\n }\n return averagesAccum;\n }, initAverages)\n .map(averagesArr => {\n const sum = averagesArr.reduce((a, b) => a + b);\n return sum / averagesArr.length;\n });\n\n const maxDigitsAfterComa = 5;\n\n return averages.map((average, index) => ({\n header: headers[index],\n value: round(average, maxDigitsAfterComa),\n }));\n },\n\n /**\n * Parse number from string, if not number - returns 0\n * @param {String} string - string that may contain number\n * @return {[type]} - parsed number or 0\n */\n parseNumberFromString(string) {\n const number = +string;\n return isNaN(number) ? 0 : number;\n },\n\n /**\n * Get lines friquency to get from CSV\n * Helps to get from 1000 to 9999 lines from CSV to preven complex calculations\n * @param {Number} linesAmount - lines amount in CSV\n * @return {Number} - fines frequency\n */\n getLinesFrequency(linesAmount) {\n const linesFrequency = 1;\n const linesAmountString = `${linesAmount}`;\n const maxDigits = 4; // NOTE: linesAmount <= 9999\n\n if (linesAmountString.length <= maxDigits) {\n return linesFrequency;\n }\n const amountOfDigitsAfterThird = linesAmountString.slice(maxDigits).length;\n const numberWithSameAmountOfZeroes = 10 ** amountOfDigitsAfterThird;\n return linesFrequency * numberWithSameAmountOfZeroes;\n },\n\n /**\n * Transform given string to a color (RGB)\n * @param {string} str\n * @returns {string}\n */\n getColorFromString(str) {\n return this.intToRGB(this.hashCode(str));\n },\n\n /**\n * Transform given number to a color (RGB)\n * @param i\n * @returns {string}\n * @private\n */\n intToRGB(i) {\n const c = (i & 0x00ffffff) // eslint-disable-line no-bitwise\n .toString(16)\n .toUpperCase();\n return '00000'.substring(0, 6 - c.length) + c;\n },\n\n /**\n * Transform given string to a hash code\n * @param str\n * @returns {number}\n * @private\n */\n hashCode(str) {\n let hash = 0;\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash); // eslint-disable-line no-bitwise\n }\n return hash;\n },\n\n /**\n * Optimize event handler via throttling\n * @param obj - event emitter (must have addEventListener method)\n * @param type - event type\n * @param callback - event handler\n * @param ctx - context for event handler execution\n * @returns {function()} - unsubscribe function\n */\n throttledEventListener(obj, type, callback, ctx) {\n let running = false;\n\n const func = function eventListener() {\n if (running) return;\n running = true;\n window.requestAnimationFrame(() => {\n callback.call(ctx);\n running = false;\n });\n };\n\n obj.addEventListener(type, func);\n\n return () => {\n obj.removeEventListener(type, func);\n };\n },\n\n /**\n * Get a snapshot for any DOM element on the page\n * @param elemId {string} - dom element id\n * @returns {string} - data URL for snapshot\n */\n async getSnapshotForElement(elemId) {\n const elem = window.document.getElementById(elemId);\n if (!elem) return null;\n\n const { clientHeight: height, clientWidth: width } = elem;\n const canvas = await html2canvas(elem, { height, width, logging: false });\n return canvas.toDataURL();\n },\n\n getAssetStatusColor(status) {\n if (status === 'active') {\n return green500;\n } else if (status === 'complete') {\n return blue500;\n } else if (status === 'paused') {\n return yellow500;\n } else if (status === 'idle' || status === 'unknown') {\n return grey500;\n }\n return red500;\n },\n\n /**\n * Finds closest to value in array of numbers\n * Source: https://stackoverflow.com/a/19277804/8337033\n * @param {array} array - array to find closest to value\n * @param {number} value - value to which find closest in array\n * @return {number} - closest to value in array\n */\n closest(array, value) {\n return array.reduce((currentClosest, arrayItem) =>\n Math.abs(arrayItem - value) < Math.abs(currentClosest - value) ? arrayItem : currentClosest\n );\n },\n\n mathMax(a, b) {\n if (!Number.isFinite(a)) {\n return b;\n } else if (!Number.isFinite(b)) {\n return a;\n }\n return Math.max(a, b);\n },\n\n mathMin(a, b) {\n if (!Number.isFinite(a)) {\n return b;\n } else if (!Number.isFinite(b)) {\n return a;\n }\n return Math.min(a, b);\n },\n\n /**\n * Gets operation by operation type\n * @param {number|null} operationType - operation type\n * @return {object|undefined} operation - operation\n */\n getOperationByType(operationType) {\n return Object.values(SUPPORTED_DRILLING_OPERATIONS).find(\n ({ value }) => value === operationType || DEFAULT_DRILLING_OPERATION_TYPE\n );\n },\n\n getUserFullName(user) {\n return user ? `${user.first_name} ${user.last_name}` : '';\n },\n\n getNameInitials(name) {\n return name\n .split(' ')\n .slice(0, 2)\n .map(part => part.substr(0, 1))\n .join('');\n },\n\n getS3BucketName() {\n return process.env.REACT_APP_ENVIRONMENT === 'development' ||\n process.env.REACT_APP_ENVIRONMENT === 'qa'\n ? 'corva-files-qa'\n : 'corva-files';\n },\n\n getS3FileUrl(bucket, fileName) {\n return `https://${bucket}.s3.amazonaws.com/${fileName}`;\n },\n\n getFileNameWithExtensionFromPath(path = '') {\n return path.split('?')[0].replace(/^.*[\\\\/]/, '');\n },\n\n hexToRgbA(hex, alpha = 1) {\n const rgba = chroma(hex).rgba();\n rgba[rgba.length - 1] = alpha;\n return `rgba(${rgba.join(',')})`;\n },\n\n truncateString(str, limit) {\n return str.length > limit ? `${str.substr(0, limit - 1)}…` : str;\n },\n\n /**\n * Copies text to clipboard\n * @param {string} text - text to copy\n * @return {undefined}\n */\n copyToClipboard(text) {\n // NOTE: it doesn't work if page is served from insecure origin like http://app.local.corva.ai\n if (navigator.clipboard) {\n navigator.clipboard.writeText(text);\n return;\n }\n\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n document.body.appendChild(textarea);\n\n const selection = document.getSelection();\n const range = document.createRange();\n range.selectNode(textarea);\n selection.removeAllRanges();\n selection.addRange(range);\n\n document.execCommand('copy');\n\n selection.removeAllRanges();\n document.body.removeChild(textarea);\n },\n};\n\n/**\n * Enable that for \"HTML to image\" service\n */\nwindow.getSnapshotForElement = utils.getSnapshotForElement;\n\nexport default utils;\n"],"names":["grey500","grey","red500","red","yellow500","yellow","blue500","blue","green500","green","utils","formatValuePrecision","value","Number","isFinite","formatNumeral","downloadPDF","filename","pdfBlob","pdf","File","type","FileSaver","saveAs","unescapeLineBreaks","string","replace","dataURLtoBlob","dataURL","byteString","window","atob","split","mimeString","ab","ArrayBuffer","length","ia","Uint8Array","i","charCodeAt","Blob","banchmarkTimer","name","start","Date","stop","time","getTime","console","info","convertToPercent","sum","Math","round","getAverageByColumnsForCSV","csv","_this","this","lines","headers","initAverages","map","parseNumberFromString","linesFrequency","getLinesFrequency","shift","averages","reduce","averagesAccum","line","index","numbers","averagesArr","number","isNumber","isNaN","concat","_toConsumableArray","a","b","average","header","linesAmount","linesAmountString","amountOfDigitsAfterThird","slice","pow","getColorFromString","str","intToRGB","hashCode","c","toString","toUpperCase","substring","hash","throttledEventListener","obj","callback","ctx","running","func","requestAnimationFrame","call","addEventListener","removeEventListener","getSnapshotForElement","elemId","_asyncToGenerator","_regeneratorRuntime","mark","_callee","elem","height","width","canvas","wrap","_context","prev","next","document","getElementById","abrupt","clientHeight","clientWidth","html2canvas","logging","sent","toDataURL","getAssetStatusColor","status","closest","array","currentClosest","arrayItem","abs","mathMax","max","mathMin","min","getOperationByType","operationType","Object","values","SUPPORTED_DRILLING_OPERATIONS","find","_ref","DEFAULT_DRILLING_OPERATION_TYPE","getUserFullName","user","first_name","last_name","getNameInitials","part","substr","join","getS3BucketName","process","env","REACT_APP_ENVIRONMENT","getS3FileUrl","bucket","fileName","getFileNameWithExtensionFromPath","path","hexToRgbA","hex","alpha","rgba","chroma","truncateString","limit","copyToClipboard","text","navigator","clipboard","writeText","textarea","createElement","textContent","body","appendChild","selection","getSelection","range","createRange","selectNode","removeAllRanges","addRange","execCommand","removeChild"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../../src/utils/main.js"],"sourcesContent":["import FileSaver from 'file-saver';\nimport chroma from 'chroma-js';\nimport round from 'lodash/round';\nimport isNaN from 'lodash/isNaN';\nimport isNumber from 'lodash/isNumber';\n/**\n * TODO: html2canvas - is used in order to take snapshots for DOM elements.\n * It must be removed after moving snapshot functionality to the back-end\n */\nimport html2canvas from 'html2canvas';\nimport grey from '@material-ui/core/colors/grey';\nimport red from '@material-ui/core/colors/red';\nimport yellow from '@material-ui/core/colors/yellow';\nimport blue from '@material-ui/core/colors/blue';\nimport green from '@material-ui/core/colors/green';\n\nimport { SUPPORTED_DRILLING_OPERATIONS, DEFAULT_DRILLING_OPERATION_TYPE } from '~/constants/apps';\n\nconst grey500 = grey['500'];\nconst red500 = red['500'];\nconst yellow500 = yellow['500'];\nconst blue500 = blue['500'];\nconst green500 = green['500'];\n\nexport const formatValuePrecision = value => {\n if (!Number.isFinite(value)) return value;\n\n const displayMorePrecise = value < 100 && value > -100;\n return displayMorePrecise ? value.formatNumeral('0,0.00') : value.formatNumeral('0,0.0');\n};\n\nexport const downloadPDF = (filename, pdfBlob) => {\n const pdf = new File([pdfBlob], `${filename}.pdf`, {\n type: 'application/pdf;charset=utf-8',\n });\n FileSaver.saveAs(pdf);\n};\n\n/**\n * Unescape line break '\\n' symbols. Summary and description of App may contain escaped\n * single '\\\\n' or multiple '\\\\n\\\\n...' line break symbols.\n * @param {String} - String to unescape\n * @return {String} - Unescaped string\n */\nexport const unescapeLineBreaks = (string = '') => {\n return string.replace(/\\\\n/g, '\\n');\n};\n\n/**\n * Convert dataURL to Blob object.\n * @param dataURL {String} - dataURL string to convert\n * @returns {Blob} - result Blob object\n */\nexport const dataURLtoBlob = dataURL => {\n const byteString = window.atob(dataURL.split(',')[1]);\n const mimeString = dataURL.split(',')[0].split(':')[1].split(';')[0];\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i += 1) {\n ia[i] = byteString.charCodeAt(i);\n }\n return new Blob([ab], { type: mimeString });\n};\n\n/**\n * Timer for code banchmarks\n * @param {String} name - bame of timer\n * @return {Object} - object with timer stop method\n */\nexport const banchmarkTimer = name => {\n const start = new Date();\n return {\n stop() {\n const end = new Date();\n const time = end.getTime() - start.getTime();\n console.info('Timer:', name, 'finished in', time, 'ms'); // eslint-disable-line no-console\n },\n };\n};\n\n/**\n * Get percent value\n * @param {number} value - target value\n * @param {number} sum - base value\n * @return {number} - percentage\n */\nexport const convertToPercent = (value, sum) => {\n return value && Number.isFinite(sum) && sum !== 0\n ? Math.round(((value * 100) / sum) * 100) / 100\n : 0;\n};\n\n/**\n * Parse number from string, if not number - returns 0\n * @param {String} string - string that may contain number\n * @return {[type]} - parsed number or 0\n */\nexport const parseNumberFromString = string => {\n const number = +string;\n return isNaN(number) ? 0 : number;\n};\n\n/**\n * Get lines friquency to get from CSV\n * Helps to get from 1000 to 9999 lines from CSV to preven complex calculations\n * @param {Number} linesAmount - lines amount in CSV\n * @return {Number} - fines frequency\n */\nexport const getLinesFrequency = linesAmount => {\n const linesFrequency = 1;\n const linesAmountString = `${linesAmount}`;\n const maxDigits = 4; // NOTE: linesAmount <= 9999\n\n if (linesAmountString.length <= maxDigits) {\n return linesFrequency;\n }\n const amountOfDigitsAfterThird = linesAmountString.slice(maxDigits).length;\n const numberWithSameAmountOfZeroes = 10 ** amountOfDigitsAfterThird;\n return linesFrequency * numberWithSameAmountOfZeroes;\n};\n\n/**\n * Gets average by each column in CSV\n * @param {String} csv - CSV\n * @return {Array} - first element is headers, second element is averages\n */\nexport const getAverageByColumnsForCSV = csv => {\n const lines = csv.split('\\n');\n\n const headers = lines[0].split(',');\n const initAverages = lines[1].split(',').map(string => [parseNumberFromString(string)]);\n const linesFrequency = getLinesFrequency(lines.length);\n\n lines.shift(); // NOTE: Remove CSV headers\n\n const averages = lines\n .reduce((averagesAccum, line, index) => {\n if (index % linesFrequency === 0) {\n // NOTE: every 'linesFrequency' line\n const numbers = line.split(',').map(parseNumberFromString);\n\n return averagesAccum.map((averagesArr, i) => {\n const number = +numbers[i];\n return isNumber(number) && !isNaN(number) && number > 0\n ? [...averagesArr, number]\n : averagesArr;\n });\n }\n return averagesAccum;\n }, initAverages)\n .map(averagesArr => {\n const sum = averagesArr.reduce((a, b) => a + b);\n return sum / averagesArr.length;\n });\n\n const maxDigitsAfterComa = 5;\n\n return averages.map((average, index) => ({\n header: headers[index],\n value: round(average, maxDigitsAfterComa),\n }));\n};\n\n/**\n * Transform given number to a color (RGB)\n * @param i\n * @returns {string}\n * @private\n */\nexport const intToRGB = i => {\n const c = (i & 0x00ffffff) // eslint-disable-line no-bitwise\n .toString(16)\n .toUpperCase();\n return '00000'.substring(0, 6 - c.length) + c;\n};\n\n/**\n * Transform given string to a hash code\n * @param str\n * @returns {number}\n * @private\n */\nexport const hashCode = str => {\n let hash = 0;\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash); // eslint-disable-line no-bitwise\n }\n return hash;\n};\n\n/**\n * Transform given string to a color (RGB)\n * @param {string} str\n * @returns {string}\n */\nexport const getColorFromString = str => {\n return intToRGB(hashCode(str));\n};\n\n/**\n * Optimize event handler via throttling\n * @param obj - event emitter (must have addEventListener method)\n * @param type - event type\n * @param callback - event handler\n * @param ctx - context for event handler execution\n * @returns {function()} - unsubscribe function\n */\nexport const throttledEventListener = (obj, type, callback, ctx) => {\n let running = false;\n\n const func = function eventListener() {\n if (running) return;\n running = true;\n window.requestAnimationFrame(() => {\n callback.call(ctx);\n running = false;\n });\n };\n\n obj.addEventListener(type, func);\n\n return () => {\n obj.removeEventListener(type, func);\n };\n};\n\n/**\n * Get a snapshot for any DOM element on the page\n * @param elemId {string} - dom element id\n * @returns {string} - data URL for snapshot\n */\nexport const getSnapshotForElement = async elemId => {\n const elem = window.document.getElementById(elemId);\n if (!elem) return null;\n\n const { clientHeight: height, clientWidth: width } = elem;\n const canvas = await html2canvas(elem, { height, width, logging: false });\n return canvas.toDataURL();\n};\n\nexport const getAssetStatusColor = status => {\n if (status === 'active') {\n return green500;\n } else if (status === 'complete') {\n return blue500;\n } else if (status === 'paused') {\n return yellow500;\n } else if (status === 'idle' || status === 'unknown') {\n return grey500;\n }\n return red500;\n};\n\n/**\n * Finds closest to value in array of numbers\n * Source: https://stackoverflow.com/a/19277804/8337033\n * @param {array} array - array to find closest to value\n * @param {number} value - value to which find closest in array\n * @return {number} - closest to value in array\n */\nexport const closest = (array, value) => {\n return array.reduce((currentClosest, arrayItem) =>\n Math.abs(arrayItem - value) < Math.abs(currentClosest - value) ? arrayItem : currentClosest\n );\n};\n\nexport const mathMax = (a, b) => {\n if (!Number.isFinite(a)) {\n return b;\n } else if (!Number.isFinite(b)) {\n return a;\n }\n return Math.max(a, b);\n};\n\nexport const mathMin = (a, b) => {\n if (!Number.isFinite(a)) {\n return b;\n } else if (!Number.isFinite(b)) {\n return a;\n }\n return Math.min(a, b);\n};\n\n/**\n * Gets operation by operation type\n * @param {number|null} operationType - operation type\n * @return {object|undefined} operation - operation\n */\nexport const getOperationByType = operationType => {\n return Object.values(SUPPORTED_DRILLING_OPERATIONS).find(\n ({ value }) => value === operationType || DEFAULT_DRILLING_OPERATION_TYPE\n );\n};\n\nexport const getUserFullName = user => {\n return user ? `${user.first_name} ${user.last_name}` : '';\n};\n\nexport const getNameInitials = name => {\n return name\n .split(' ')\n .slice(0, 2)\n .map(part => part.substr(0, 1))\n .join('');\n};\n\nexport const getS3BucketName = () => {\n return process.env.REACT_APP_ENVIRONMENT === 'development' ||\n process.env.REACT_APP_ENVIRONMENT === 'qa'\n ? 'corva-files-qa'\n : 'corva-files';\n};\n\nexport const getS3FileUrl = (bucket, fileName) => {\n return `https://${bucket}.s3.amazonaws.com/${fileName}`;\n};\n\nexport const getFileNameWithExtensionFromPath = (path = '') => {\n return path.split('?')[0].replace(/^.*[\\\\/]/, '');\n};\n\nexport const hexToRgbA = (hex, alpha = 1) => {\n const rgba = chroma(hex).rgba();\n rgba[rgba.length - 1] = alpha;\n return `rgba(${rgba.join(',')})`;\n};\n\nexport const truncateString = (str, limit) => {\n return str.length > limit ? `${str.substr(0, limit - 1)}…` : str;\n};\n\n/**\n * Copies text to clipboard\n * @param {string} text - text to copy\n * @return {undefined}\n */\nexport const copyToClipboard = text => {\n // NOTE: it doesn't work if page is served from insecure origin like http://app.local.corva.ai\n if (navigator.clipboard) {\n navigator.clipboard.writeText(text);\n return;\n }\n\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n document.body.appendChild(textarea);\n\n const selection = document.getSelection();\n const range = document.createRange();\n range.selectNode(textarea);\n selection.removeAllRanges();\n selection.addRange(range);\n\n document.execCommand('copy');\n\n selection.removeAllRanges();\n document.body.removeChild(textarea);\n};\n\nconst utils = {\n formatValuePrecision,\n downloadPDF,\n unescapeLineBreaks,\n dataURLtoBlob,\n banchmarkTimer,\n convertToPercent,\n getAverageByColumnsForCSV,\n getLinesFrequency,\n getColorFromString,\n intToRGB,\n hashCode,\n throttledEventListener,\n getSnapshotForElement,\n getAssetStatusColor,\n closest,\n mathMax,\n mathMin,\n getOperationByType,\n getUserFullName,\n getNameInitials,\n getS3BucketName,\n getS3FileUrl,\n getFileNameWithExtensionFromPath,\n hexToRgbA,\n truncateString,\n copyToClipboard,\n};\n\n/**\n * Enable that for \"HTML to image\" service\n */\nwindow.getSnapshotForElement = getSnapshotForElement;\n\nexport default utils;\n"],"names":["_ref","grey500","grey","red500","red","yellow500","yellow","blue500","blue","green500","green","formatValuePrecision","value","Number","isFinite","formatNumeral","downloadPDF","filename","pdfBlob","pdf","File","type","FileSaver","saveAs","unescapeLineBreaks","string","replace","dataURLtoBlob","dataURL","byteString","window","atob","split","mimeString","ab","ArrayBuffer","length","ia","Uint8Array","i","charCodeAt","Blob","banchmarkTimer","name","start","Date","stop","time","getTime","console","info","convertToPercent","sum","Math","round","parseNumberFromString","number","isNaN","getLinesFrequency","linesAmount","linesAmountString","amountOfDigitsAfterThird","slice","pow","getAverageByColumnsForCSV","csv","lines","headers","initAverages","map","linesFrequency","shift","averages","reduce","averagesAccum","line","index","numbers","averagesArr","isNumber","concat","_toConsumableArray","a","b","average","header","intToRGB","c","toString","toUpperCase","substring","hashCode","str","hash","getColorFromString","throttledEventListener","obj","callback","ctx","running","func","requestAnimationFrame","call","addEventListener","removeEventListener","getSnapshotForElement","_asyncToGenerator","_regeneratorRuntime","mark","elemId","elem","height","width","canvas","wrap","_context","prev","next","document","getElementById","abrupt","clientHeight","clientWidth","html2canvas","logging","sent","toDataURL","_callee","_x","apply","this","arguments","getAssetStatusColor","status","closest","array","currentClosest","arrayItem","abs","mathMax","max","mathMin","min","getOperationByType","operationType","Object","values","SUPPORTED_DRILLING_OPERATIONS","find","_ref2","DEFAULT_DRILLING_OPERATION_TYPE","getUserFullName","user","first_name","last_name","getNameInitials","part","substr","join","getS3BucketName","process","env","REACT_APP_ENVIRONMENT","getS3FileUrl","bucket","fileName","getFileNameWithExtensionFromPath","path","hexToRgbA","hex","alpha","rgba","chroma","truncateString","limit","copyToClipboard","text","navigator","clipboard","writeText","textarea","createElement","textContent","body","appendChild","selection","getSelection","range","createRange","selectNode","removeAllRanges","addRange","execCommand","removeChild","utils"],"mappings":"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"}
|
package/utils/mapUnits.d.ts
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
+
export function mapUnits(data: any, units: any): any;
|
|
1
2
|
export default mapUnits;
|
|
2
|
-
/**
|
|
3
|
-
* Map titles(labels) with respective metrics
|
|
4
|
-
* @param {Object} data - object with titles/labels and metrics: { footage: {
|
|
5
|
-
* label: 'Some text',
|
|
6
|
-
* metrics: 'length',
|
|
7
|
-
* } }
|
|
8
|
-
* @param {Object} units - object with metrics: { length: 'meters' }
|
|
9
|
-
* @return {Object} - Formatted object with titles(labels) and respective metrics
|
|
10
|
-
*/
|
|
11
|
-
declare function mapUnits(data: any, units: any): any;
|
|
12
3
|
//# sourceMappingURL=mapUnits.d.ts.map
|
package/utils/mapUnits.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapUnits.d.ts","sourceRoot":"","sources":["../../src/utils/mapUnits.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mapUnits.d.ts","sourceRoot":"","sources":["../../src/utils/mapUnits.js"],"names":[],"mappings":"AAUO,qDAUC"}
|
package/utils/mapUnits.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=function(e,r){return Object.keys(e).reduce((function(t,c){var n=e[c];return t[c]=n.label,"metrics"in n&&(t[c]+=" (".concat(r[n.metrics],")")),t}),{})};export{e as default};
|
|
1
|
+
var e=function(e,r){return Object.keys(e).reduce((function(t,c){var n=e[c];return t[c]=n.label,"metrics"in n&&(t[c]+=" (".concat(r[n.metrics],")")),t}),{})};export{e as default,e as mapUnits};
|
|
2
2
|
//# sourceMappingURL=mapUnits.js.map
|
package/utils/mapUnits.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapUnits.js","sources":["../../src/utils/mapUnits.js"],"sourcesContent":["/**\n * Map titles(labels) with respective metrics\n * @param {Object} data - object with titles/labels and metrics: { footage: {\n * label: 'Some text',\n * metrics: 'length',\n * } }\n * @param {Object} units - object with metrics: { length: 'meters' }\n * @return {Object} - Formatted object with titles(labels) and respective metrics\n */\n\
|
|
1
|
+
{"version":3,"file":"mapUnits.js","sources":["../../src/utils/mapUnits.js"],"sourcesContent":["/**\n * Map titles(labels) with respective metrics\n * @param {Object} data - object with titles/labels and metrics: { footage: {\n * label: 'Some text',\n * metrics: 'length',\n * } }\n * @param {Object} units - object with metrics: { length: 'meters' }\n * @return {Object} - Formatted object with titles(labels) and respective metrics\n */\n\nexport const mapUnits = (data, units) =>\n Object.keys(data).reduce((acc, key) => {\n const field = data[key];\n acc[key] = field.label;\n\n if ('metrics' in field) {\n acc[key] += ` (${units[field.metrics]})`;\n }\n\n return acc;\n }, {});\n\nexport default mapUnits;\n"],"names":["mapUnits","data","units","Object","keys","reduce","acc","key","field","label","metrics"],"mappings":"AAUO,IAAMA,EAAW,SAACC,EAAMC,GAAK,OAClCC,OAAOC,KAAKH,GAAMI,QAAO,SAACC,EAAKC,GAC7B,IAAMC,EAAQP,EAAKM,GAOnB,OANAD,EAAIC,GAAOC,EAAMC,MAEb,YAAaD,IACfF,EAAIC,IAAaL,KAAAA,OAAAA,EAAMM,EAAME,SAAW,MAGnCJ,CACR,GAAE,CAAE,EAAC"}
|
package/utils/permissions.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/utils/permissions.js"],"names":[],"mappings":"AAuBA,
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/utils/permissions.js"],"names":[],"mappings":"AAuBA,0EAKC"}
|
package/utils/permissions.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import r from"lodash/get";function n(r){return"admin"===r.role}var e={is_admin:n,is_corva_admin:function(e){return n(e)&&"corva"===r(e,["company","provider"],null)}};function o(r,n){if(n in e)return e[n](r);throw new Error("There is no rule ".concat(n,", please check the spelling"))}function t(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return n.reduce((function(n,e){return n&&o(r,e)}),!0)}export{t as default};
|
|
1
|
+
import r from"lodash/get";function n(r){return"admin"===r.role}var e={is_admin:n,is_corva_admin:function(e){return n(e)&&"corva"===r(e,["company","provider"],null)}};function o(r,n){if(n in e)return e[n](r);throw new Error("There is no rule ".concat(n,", please check the spelling"))}function t(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return n.reduce((function(n,e){return n&&o(r,e)}),!0)}export{t as checkUserPermissions,t as default};
|
|
2
2
|
//# sourceMappingURL=permissions.js.map
|
package/utils/permissions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sources":["../../src/utils/permissions.js"],"sourcesContent":["import get from 'lodash/get';\n\nfunction isAdmin(user) {\n return user.role === 'admin';\n}\n\nfunction isCorvaAdmin(user) {\n return isAdmin(user) && get(user, ['company', 'provider'], null) === 'corva';\n}\n\nconst PERMISSION_RULES = {\n is_admin: isAdmin,\n is_corva_admin: isCorvaAdmin,\n};\n\nfunction checkUserPermissionByKey(user, key) {\n if (key in PERMISSION_RULES) {\n return PERMISSION_RULES[key](user);\n }\n\n throw new Error(`There is no rule ${key}, please check the spelling`);\n}\n\nexport
|
|
1
|
+
{"version":3,"file":"permissions.js","sources":["../../src/utils/permissions.js"],"sourcesContent":["import get from 'lodash/get';\n\nfunction isAdmin(user) {\n return user.role === 'admin';\n}\n\nfunction isCorvaAdmin(user) {\n return isAdmin(user) && get(user, ['company', 'provider'], null) === 'corva';\n}\n\nconst PERMISSION_RULES = {\n is_admin: isAdmin,\n is_corva_admin: isCorvaAdmin,\n};\n\nfunction checkUserPermissionByKey(user, key) {\n if (key in PERMISSION_RULES) {\n return PERMISSION_RULES[key](user);\n }\n\n throw new Error(`There is no rule ${key}, please check the spelling`);\n}\n\nexport function checkUserPermissions(user, permissions = []) {\n return permissions.reduce(\n (isAllowed, rule) => isAllowed && checkUserPermissionByKey(user, rule),\n true\n );\n}\n\nexport default checkUserPermissions;\n"],"names":["isAdmin","user","role","PERMISSION_RULES","is_admin","is_corva_admin","get","checkUserPermissionByKey","key","Error","checkUserPermissions","permissions","reduce","isAllowed","rule"],"mappings":"0BAEA,SAASA,EAAQC,GACf,MAAqB,UAAdA,EAAKC,IACd,CAMA,IAAMC,EAAmB,CACvBC,SAAUJ,EACVK,eANF,SAAsBJ,GACpB,OAAOD,EAAQC,IAAsD,UAA7CK,EAAIL,EAAM,CAAC,UAAW,YAAa,KAC7D,GAOA,SAASM,EAAyBN,EAAMO,GACtC,GAAIA,KAAOL,EACT,OAAOA,EAAiBK,GAAKP,GAG/B,MAAM,IAAIQ,MAA0BD,oBAAAA,OAAAA,EAAiC,+BACvE,CAEO,SAASE,EAAqBT,GAAwB,IAAlBU,yDAAc,GACvD,OAAOA,EAAYC,QACjB,SAACC,EAAWC,GAAI,OAAKD,GAAaN,EAAyBN,EAAMa,EAAK,IACtE,EAEJ"}
|