[FE-test] Modify aggregate function test file (QTT-004)
This commit is contained in:
319
backend-api/package-lock.json
generated
319
backend-api/package-lock.json
generated
@@ -5679,6 +5679,7 @@
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
|
||||
"integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"buffers": "~0.1.1",
|
||||
"chainsaw": "~0.1.0"
|
||||
@@ -6092,6 +6093,7 @@
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
|
||||
"integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"buffer-alloc-unsafe": "^1.1.0",
|
||||
"buffer-fill": "^1.0.0"
|
||||
@@ -6100,7 +6102,8 @@
|
||||
"buffer-alloc-unsafe": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
|
||||
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
|
||||
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
|
||||
"dev": true
|
||||
},
|
||||
"buffer-crc32": {
|
||||
"version": "0.2.13",
|
||||
@@ -6116,18 +6119,14 @@
|
||||
"buffer-fill": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
|
||||
"integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="
|
||||
"integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
|
||||
"dev": true
|
||||
},
|
||||
"buffer-from": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
|
||||
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
|
||||
},
|
||||
"buffer-indexof-polyfill": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
|
||||
"integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A=="
|
||||
},
|
||||
"buffer-writer": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz",
|
||||
@@ -6159,7 +6158,8 @@
|
||||
"buffers": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
|
||||
"integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ=="
|
||||
"integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==",
|
||||
"dev": true
|
||||
},
|
||||
"builtin-modules": {
|
||||
"version": "3.3.0",
|
||||
@@ -6314,6 +6314,7 @@
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
|
||||
"integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"traverse": ">=0.3.0 <0.4"
|
||||
},
|
||||
@@ -6321,7 +6322,8 @@
|
||||
"traverse": {
|
||||
"version": "0.3.9",
|
||||
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
|
||||
"integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ=="
|
||||
"integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -6659,57 +6661,6 @@
|
||||
"integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
|
||||
"dev": true
|
||||
},
|
||||
"cockroachdb": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/cockroachdb/-/cockroachdb-1.0.3.tgz",
|
||||
"integrity": "sha512-hpxTiXnE002uE6jCqZiwCUtX84qntaMm/cx+QFgFXAaLYh0MZPWW1hJQawHaxpqBvDXOJ8Ejsf26JaXSZTZmUQ==",
|
||||
"requires": {
|
||||
"buffer-writer": "1.0.1",
|
||||
"packet-reader": "0.3.1",
|
||||
"pg-connection-string": "0.1.3",
|
||||
"pg-types": "~1.12.1",
|
||||
"pgpass": "1.x",
|
||||
"semver": "4.3.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"buffer-writer": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz",
|
||||
"integrity": "sha512-I5M7UuSeDn5aQR2BSH2+270w9qdd2Rd5LB/XhTcIRdSmeLueMNlY3BaMoHtoASmjEQf/NOAqMIZaoAMSpomW6w=="
|
||||
},
|
||||
"packet-reader": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.3.1.tgz",
|
||||
"integrity": "sha512-5hN3f+rVT3PRjNI+GYUKTolUo5Yhypmo97D5+6On6L4bVhnno5wzGTT3agB9u7llRfw6pEV4I1/obWSXTKDY1w=="
|
||||
},
|
||||
"pg-connection-string": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz",
|
||||
"integrity": "sha512-i0NV/CrSkFTaiOQs9AGy3tq0dkSjtTd4d7DfsjeDVZAA4aIHInwfFEmriNYGGJUfZ5x6IAC/QddoUpUJjQAi0w=="
|
||||
},
|
||||
"pg-types": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.12.1.tgz",
|
||||
"integrity": "sha512-7oR1vHzQdSlqa81S8476iSoUYQc6obearJ6RUuRB1OOdGDz9pDHLxmgYgcXCDL+XWHSocYQqwC/GDnwtKhGbWg==",
|
||||
"requires": {
|
||||
"postgres-array": "~1.0.0",
|
||||
"postgres-bytea": "~1.0.0",
|
||||
"postgres-date": "~1.0.0",
|
||||
"postgres-interval": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"postgres-array": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.3.tgz",
|
||||
"integrity": "sha512-5wClXrAP0+78mcsNX3/ithQ5exKvCyK5lr5NEEEeGwwM6NJdQgzIJBVxLvRW+huFpX92F2QnZ5CcokH0VhK2qQ=="
|
||||
},
|
||||
"semver": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz",
|
||||
"integrity": "sha512-VyFUffiBx8hABJ9HYSTXLRwyZtdDHMzMtFmID1aiNAD2BZppBmJm0Hqw3p2jkgxP9BNt1pQ9RnC49P0EcXf6cA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"code-point-at": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
|
||||
@@ -6855,6 +6806,11 @@
|
||||
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
|
||||
"dev": true
|
||||
},
|
||||
"complex.js": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz",
|
||||
"integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg=="
|
||||
},
|
||||
"component-bind": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
|
||||
@@ -7232,6 +7188,11 @@
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"decimal.js": {
|
||||
"version": "10.4.2",
|
||||
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz",
|
||||
"integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA=="
|
||||
},
|
||||
"decode-uri-component": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
|
||||
@@ -7766,6 +7727,7 @@
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
|
||||
"integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"readable-stream": "^2.0.2"
|
||||
}
|
||||
@@ -8130,6 +8092,11 @@
|
||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
|
||||
},
|
||||
"escape-latex": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz",
|
||||
"integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw=="
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
@@ -9151,6 +9118,11 @@
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
||||
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
|
||||
},
|
||||
"fraction.js": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
|
||||
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA=="
|
||||
},
|
||||
"fragment-cache": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
|
||||
@@ -9221,27 +9193,6 @@
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"fstream": {
|
||||
"version": "1.0.12",
|
||||
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
|
||||
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.2",
|
||||
"inherits": "~2.0.0",
|
||||
"mkdirp": ">=0.5 0",
|
||||
"rimraf": "2"
|
||||
},
|
||||
"dependencies": {
|
||||
"rimraf": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
|
||||
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ftp": {
|
||||
"version": "0.3.10",
|
||||
"resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz",
|
||||
@@ -10107,56 +10058,6 @@
|
||||
"ms": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"ibm_db": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ibm_db/-/ibm_db-3.0.0.tgz",
|
||||
"integrity": "sha512-jqKnGq4ay1OWPBExJDvd8mClUVtM3/A+zs3Inm7KEiOyCQB2CXjhImcgWB04hrEKTNgHW7poKqduvokdmESzgQ==",
|
||||
"requires": {
|
||||
"axios": "^0.26.1",
|
||||
"big-integer": "^1.6.51",
|
||||
"bindings": "^1.5.0",
|
||||
"fs-extra": "^8.1.0",
|
||||
"fstream": "^1.0.12",
|
||||
"lodash": "^4.17.21",
|
||||
"nan": "^2.16.0",
|
||||
"q": "^1.5.1",
|
||||
"targz": "^1.0.1",
|
||||
"unzipper": "^0.10.11"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": {
|
||||
"version": "0.26.1",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz",
|
||||
"integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
|
||||
"requires": {
|
||||
"follow-redirects": "^1.14.8"
|
||||
}
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
|
||||
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^4.0.0",
|
||||
"universalify": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
||||
"integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"universalify": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.24",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
||||
@@ -10842,6 +10743,11 @@
|
||||
"integrity": "sha512-gZmQKe1QrfkkMjCn8Qv9cpyJFyogTYqkP5WCobX5RNaHsJzIV/6NvAnlnouOcwKr29QrxLGDGcqYuJ+ae98s1A==",
|
||||
"dev": true
|
||||
},
|
||||
"javascript-natural-sort": {
|
||||
"version": "0.7.1",
|
||||
"resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz",
|
||||
"integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw=="
|
||||
},
|
||||
"jest": {
|
||||
"version": "28.1.3",
|
||||
"resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz",
|
||||
@@ -11564,7 +11470,8 @@
|
||||
"jsonparse": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
|
||||
"integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg=="
|
||||
"integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
|
||||
"dev": true
|
||||
},
|
||||
"jsonpath-plus": {
|
||||
"version": "5.1.0",
|
||||
@@ -12103,11 +12010,6 @@
|
||||
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
|
||||
"dev": true
|
||||
},
|
||||
"listenercount": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
|
||||
"integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ=="
|
||||
},
|
||||
"loader-runner": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
|
||||
@@ -12419,6 +12321,37 @@
|
||||
"object-visit": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"mathjs": {
|
||||
"version": "11.3.3",
|
||||
"resolved": "https://registry.npmjs.org/mathjs/-/mathjs-11.3.3.tgz",
|
||||
"integrity": "sha512-+NsgPRzvnczrw5hp7fNPMnfXCaBo2cs7c8Edoacbjcc2Z3js6jHf+Pz8FY6nb5udmBj0q4zl+a5PxbjWVgOQcA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.20.1",
|
||||
"complex.js": "^2.1.1",
|
||||
"decimal.js": "^10.4.2",
|
||||
"escape-latex": "^1.2.0",
|
||||
"fraction.js": "^4.2.0",
|
||||
"javascript-natural-sort": "^0.7.1",
|
||||
"seedrandom": "^3.0.5",
|
||||
"tiny-emitter": "^2.1.0",
|
||||
"typed-function": "^4.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": {
|
||||
"version": "7.20.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz",
|
||||
"integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==",
|
||||
"requires": {
|
||||
"regenerator-runtime": "^0.13.10"
|
||||
}
|
||||
},
|
||||
"regenerator-runtime": {
|
||||
"version": "0.13.10",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz",
|
||||
"integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"md5.js": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
||||
@@ -12751,24 +12684,6 @@
|
||||
"integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
|
||||
"dev": true
|
||||
},
|
||||
"mysql": {
|
||||
"version": "2.18.1",
|
||||
"resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
|
||||
"integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==",
|
||||
"requires": {
|
||||
"bignumber.js": "9.0.0",
|
||||
"readable-stream": "2.3.7",
|
||||
"safe-buffer": "5.1.2",
|
||||
"sqlstring": "2.3.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"mysql2": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz",
|
||||
@@ -12836,7 +12751,9 @@
|
||||
"nan": {
|
||||
"version": "2.16.0",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz",
|
||||
"integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA=="
|
||||
"integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"nanoid": {
|
||||
"version": "2.1.11",
|
||||
@@ -14413,11 +14330,6 @@
|
||||
"long": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"q": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
|
||||
"integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw=="
|
||||
},
|
||||
"qrcode-terminal": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
|
||||
@@ -15022,6 +14934,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"seedrandom": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
|
||||
"integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg=="
|
||||
},
|
||||
"seek-bzip": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
|
||||
@@ -15576,7 +15493,8 @@
|
||||
"setimmediate": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
|
||||
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
|
||||
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
|
||||
"dev": true
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.2.0",
|
||||
@@ -16169,11 +16087,6 @@
|
||||
"tar": "^6.1.11"
|
||||
}
|
||||
},
|
||||
"sqlstring": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
|
||||
"integrity": "sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ=="
|
||||
},
|
||||
"ssri": {
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
|
||||
@@ -16558,25 +16471,6 @@
|
||||
"swagger-ui-dist": ">=4.11.0"
|
||||
}
|
||||
},
|
||||
"sybase": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/sybase/-/sybase-1.2.3.tgz",
|
||||
"integrity": "sha512-69dtkzLPjWLQknP0x6gGud9WKZs7Ujdo8EEl4nwN/fhLrgXsgMxbGkT2rQfdw1kg2lbJvbpBSbA2vm0rWRxs6g==",
|
||||
"requires": {
|
||||
"JSONStream": "^1.3.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"JSONStream": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
|
||||
"integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
|
||||
"requires": {
|
||||
"jsonparse": "^1.2.0",
|
||||
"through": ">=2.2.7 <3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"symbol-observable": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz",
|
||||
@@ -16861,6 +16755,8 @@
|
||||
"version": "1.16.3",
|
||||
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
|
||||
"integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"chownr": "^1.0.1",
|
||||
"mkdirp": "^0.5.1",
|
||||
@@ -16872,6 +16768,8 @@
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
|
||||
"integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"readable-stream": "^2.3.5",
|
||||
"safe-buffer": "^5.1.1"
|
||||
@@ -16881,6 +16779,8 @@
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
|
||||
"integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"end-of-stream": "^1.1.0",
|
||||
"once": "^1.3.1"
|
||||
@@ -16890,6 +16790,8 @@
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
|
||||
"integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"bl": "^1.0.0",
|
||||
"buffer-alloc": "^1.2.0",
|
||||
@@ -16926,14 +16828,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"targz": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/targz/-/targz-1.0.1.tgz",
|
||||
"integrity": "sha512-6q4tP9U55mZnRuMTBqnqc3nwYQY3kv+QthCFZuMk+Tn1qYUnMPmL/JZ/mzgXINzFpSqfU+242IFmFU9VPvqaQw==",
|
||||
"requires": {
|
||||
"tar-fs": "^1.8.1"
|
||||
}
|
||||
},
|
||||
"tarn": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz",
|
||||
@@ -17190,6 +17084,11 @@
|
||||
"next-tick": "1"
|
||||
}
|
||||
},
|
||||
"tiny-emitter": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
|
||||
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.0.33",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
||||
@@ -17214,7 +17113,8 @@
|
||||
"to-buffer": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
|
||||
"integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
|
||||
"integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
|
||||
"dev": true
|
||||
},
|
||||
"to-fast-properties": {
|
||||
"version": "2.0.0",
|
||||
@@ -17502,6 +17402,11 @@
|
||||
"mime-types": "~2.1.24"
|
||||
}
|
||||
},
|
||||
"typed-function": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.1.0.tgz",
|
||||
"integrity": "sha512-DGwUl6cioBW5gw2L+6SMupGwH/kZOqivy17E4nsh1JI9fKF87orMmlQx3KISQPmg3sfnOUGlwVkroosvgddrlg=="
|
||||
},
|
||||
"typedarray": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
||||
@@ -17771,30 +17676,6 @@
|
||||
"integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
|
||||
"dev": true
|
||||
},
|
||||
"unzipper": {
|
||||
"version": "0.10.11",
|
||||
"resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz",
|
||||
"integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.17",
|
||||
"binary": "~0.3.0",
|
||||
"bluebird": "~3.4.1",
|
||||
"buffer-indexof-polyfill": "~1.0.0",
|
||||
"duplexer2": "~0.1.4",
|
||||
"fstream": "^1.0.12",
|
||||
"graceful-fs": "^4.2.2",
|
||||
"listenercount": "~1.0.1",
|
||||
"readable-stream": "~2.3.6",
|
||||
"setimmediate": "~1.0.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"bluebird": {
|
||||
"version": "3.4.7",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
|
||||
"integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"update-browserslist-db": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz",
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
"knex-bigquery": "^2.0.3",
|
||||
"knex-db2": "^1.0.0",
|
||||
"knex-schema-inspector": "^2.0.4",
|
||||
"mathjs": "^11.3.3",
|
||||
"mustache": "^4.2.0",
|
||||
"mysql2": "^2.3.3",
|
||||
"nest-winston": "^1.7.0",
|
||||
|
||||
88
backend-api/src/utils/aggregation.util.ts
Normal file
88
backend-api/src/utils/aggregation.util.ts
Normal file
@@ -0,0 +1,88 @@
|
||||
import * as math from 'mathjs';
|
||||
|
||||
export const WIDGET_AGGREGATION = {
|
||||
SUM: 'sum',
|
||||
AVG: 'avg',
|
||||
MAX: 'max',
|
||||
MIN: 'min',
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param type
|
||||
* @param data
|
||||
* @param field
|
||||
*/
|
||||
export const getAggregationData = (type, data, field) => {
|
||||
let result = 0;
|
||||
let fits = 0;
|
||||
let dataList = [];
|
||||
if (data.length > 0 && (type === WIDGET_AGGREGATION.MIN || type === WIDGET_AGGREGATION.MAX)) {
|
||||
result = Number(data[0][field]);
|
||||
} else if (data.length > 0 && type === WIDGET_AGGREGATION.SUM) {
|
||||
dataList = data.map(row => row[field]);
|
||||
fits = decimalFits(dataList);
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case WIDGET_AGGREGATION.SUM:
|
||||
data.forEach(item => {
|
||||
// console.log('item ', item[field]);
|
||||
if (item[field] != undefined && item[field] != null) {
|
||||
result += Number(item[field]);
|
||||
}
|
||||
});
|
||||
result = Number(result.toFixed(fits));
|
||||
break;
|
||||
case WIDGET_AGGREGATION.AVG:
|
||||
// result = math.mean(dataList);
|
||||
data.forEach(item => {
|
||||
// console.log('item ', item[field]);
|
||||
if (item[field] != undefined && item[field] != null) {
|
||||
result = math.add(result, math.bignumber(item[field]));
|
||||
}
|
||||
});
|
||||
result = math.divide(result, math.bignumber(data.length));
|
||||
// // result = Number(result.toFixed(fits));
|
||||
// // result = Math.round((result / data.length) * 1000000) / 1000000;
|
||||
// result = result / data.length;
|
||||
// result = Number(result);
|
||||
// result = Math.round(result * 1000000) / 1000000;
|
||||
result = Number(result.toFixed(6));
|
||||
break;
|
||||
case WIDGET_AGGREGATION.MAX:
|
||||
data.forEach(item => {
|
||||
// console.log('item ', item[field]);
|
||||
if (item[field] != undefined && item[field] != null) {
|
||||
result = Math.max(result, item[field]);
|
||||
}
|
||||
});
|
||||
break;
|
||||
case WIDGET_AGGREGATION.MIN:
|
||||
data.forEach(item => {
|
||||
// console.log('item ', item[field]);
|
||||
if (item[field] != undefined && item[field] != null) {
|
||||
result = Math.min(result, item[field]);
|
||||
}
|
||||
});
|
||||
break;
|
||||
default:
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
function decimalFits(arr) {
|
||||
//소수점 자리수가 가장많은 수 return
|
||||
var decimalN = 0;
|
||||
for (var j = 0; j < arr.length; j++) {
|
||||
var n = arr[j];
|
||||
if (!Number.isInteger(n)) {
|
||||
//소수
|
||||
var d = String(n).split('.')[1].length; //문자열 소수점 다음 개수
|
||||
if (decimalN < d) decimalN = d;
|
||||
}
|
||||
}
|
||||
return decimalN;
|
||||
}
|
||||
var arr = [0.1, 0.12, 0.123];
|
||||
decimalFits(arr);
|
||||
37
backend-api/test/QTT-004/QTT-004.spec.ts
Normal file
37
backend-api/test/QTT-004/QTT-004.spec.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import * as dummyJson from './QTT-004_dummyData.json';
|
||||
import * as resultJson from './QTT-004_resultData.json';
|
||||
import { getAggregationData, WIDGET_AGGREGATION } from '../../src/utils/aggregation.util';
|
||||
|
||||
describe('QTT-004', () => {
|
||||
const dummyData = dummyJson.dummyData;
|
||||
const expectData = resultJson.expectData;
|
||||
const fieldList = Object.keys(expectData);
|
||||
|
||||
it.each(fieldList)('QTT-004-01 (MAX): %s', fieldName => {
|
||||
expect(getAggregationData(WIDGET_AGGREGATION.MAX, dummyData, fieldName)).toBe(
|
||||
expectData[fieldName][WIDGET_AGGREGATION.MAX],
|
||||
);
|
||||
});
|
||||
|
||||
it.each(fieldList)('QTT-004-02 (MIN) : %s ', fieldName => {
|
||||
expect(getAggregationData(WIDGET_AGGREGATION.MIN, dummyData, fieldName)).toBe(
|
||||
expectData[fieldName][WIDGET_AGGREGATION.MIN],
|
||||
);
|
||||
});
|
||||
|
||||
it.each(fieldList)('QTT-004-03 (SUM) : %s ', fieldName => {
|
||||
expect(getAggregationData(WIDGET_AGGREGATION.SUM, dummyData, fieldName)).toBe(
|
||||
expectData[fieldName][WIDGET_AGGREGATION.SUM],
|
||||
);
|
||||
});
|
||||
|
||||
it.each(fieldList)('QTT-004-04 (AVG) : %s ', fieldName => {
|
||||
expect(getAggregationData(WIDGET_AGGREGATION.AVG, dummyData, fieldName)).toBe(
|
||||
expectData[fieldName][WIDGET_AGGREGATION.AVG],
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
console.log('test end');
|
||||
});
|
||||
81604
backend-api/test/QTT-004/QTT-004_dummyData.json
Normal file
81604
backend-api/test/QTT-004/QTT-004_dummyData.json
Normal file
File diff suppressed because it is too large
Load Diff
61
frontend-web/package-lock.json
generated
61
frontend-web/package-lock.json
generated
@@ -11467,6 +11467,11 @@
|
||||
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
|
||||
"integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
|
||||
},
|
||||
"complex.js": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz",
|
||||
"integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg=="
|
||||
},
|
||||
"component-emitter": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
|
||||
@@ -13136,6 +13141,11 @@
|
||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
|
||||
},
|
||||
"escape-latex": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz",
|
||||
"integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw=="
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
@@ -16226,6 +16236,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"javascript-natural-sort": {
|
||||
"version": "0.7.1",
|
||||
"resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz",
|
||||
"integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw=="
|
||||
},
|
||||
"jest": {
|
||||
"version": "27.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz",
|
||||
@@ -18084,6 +18099,37 @@
|
||||
"resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz",
|
||||
"integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg=="
|
||||
},
|
||||
"mathjs": {
|
||||
"version": "11.3.3",
|
||||
"resolved": "https://registry.npmjs.org/mathjs/-/mathjs-11.3.3.tgz",
|
||||
"integrity": "sha512-+NsgPRzvnczrw5hp7fNPMnfXCaBo2cs7c8Edoacbjcc2Z3js6jHf+Pz8FY6nb5udmBj0q4zl+a5PxbjWVgOQcA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.20.1",
|
||||
"complex.js": "^2.1.1",
|
||||
"decimal.js": "^10.4.2",
|
||||
"escape-latex": "^1.2.0",
|
||||
"fraction.js": "^4.2.0",
|
||||
"javascript-natural-sort": "^0.7.1",
|
||||
"seedrandom": "^3.0.5",
|
||||
"tiny-emitter": "^2.1.0",
|
||||
"typed-function": "^4.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": {
|
||||
"version": "7.20.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz",
|
||||
"integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==",
|
||||
"requires": {
|
||||
"regenerator-runtime": "^0.13.10"
|
||||
}
|
||||
},
|
||||
"regenerator-runtime": {
|
||||
"version": "0.13.10",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz",
|
||||
"integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"md5.js": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
||||
@@ -22151,6 +22197,11 @@
|
||||
"ajv-keywords": "^3.5.2"
|
||||
}
|
||||
},
|
||||
"seedrandom": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
|
||||
"integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg=="
|
||||
},
|
||||
"select-hose": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
|
||||
@@ -23725,6 +23776,11 @@
|
||||
"setimmediate": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"tiny-emitter": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
|
||||
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
|
||||
},
|
||||
"tiny-glob": {
|
||||
"version": "0.2.9",
|
||||
"resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
|
||||
@@ -24131,6 +24187,11 @@
|
||||
"mime-types": "~2.1.24"
|
||||
}
|
||||
},
|
||||
"typed-function": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.1.0.tgz",
|
||||
"integrity": "sha512-DGwUl6cioBW5gw2L+6SMupGwH/kZOqivy17E4nsh1JI9fKF87orMmlQx3KISQPmg3sfnOUGlwVkroosvgddrlg=="
|
||||
},
|
||||
"typedarray": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
"echarts": "^5.3.3",
|
||||
"echarts-for-react": "^3.0.2",
|
||||
"echarts-gl": "^2.0.9",
|
||||
"mathjs": "^11.3.3",
|
||||
"react": "^18.2.0",
|
||||
"react-ace": "^10.1.0",
|
||||
"react-alert": "^7.0.3",
|
||||
|
||||
@@ -13,37 +13,37 @@ const expectData = {
|
||||
max: 99,
|
||||
min: 0,
|
||||
sum: 29055,
|
||||
avg: 34.58928571,
|
||||
avg: 34.589286,
|
||||
},
|
||||
vcost: {
|
||||
max: 180,
|
||||
min: 2,
|
||||
sum: 40119,
|
||||
avg: 47.76071429,
|
||||
avg: 47.760714,
|
||||
},
|
||||
travel: {
|
||||
max: 1440,
|
||||
min: 63,
|
||||
sum: 408379,
|
||||
avg: 486.1654762,
|
||||
avg: 486.165476,
|
||||
},
|
||||
gcost: {
|
||||
max: 269,
|
||||
min: 30,
|
||||
sum: 93139,
|
||||
avg: 110.8797619,
|
||||
avg: 110.879762,
|
||||
},
|
||||
income: {
|
||||
max: 72,
|
||||
min: 2,
|
||||
sum: 29020,
|
||||
avg: 34.54761905,
|
||||
avg: 34.547619,
|
||||
},
|
||||
size: {
|
||||
max: 6,
|
||||
min: 1,
|
||||
sum: 1464,
|
||||
avg: 1.742857143,
|
||||
avg: 1.742857,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -52,54 +52,28 @@ describe('QTT-004', () => {
|
||||
const fieldList = Object.keys(expectData);
|
||||
|
||||
it.each(fieldList)('QTT-004-01 (MAX): %s', fieldName => {
|
||||
console.log(fieldName);
|
||||
expect(getAggregationData(WIDGET_AGGREGATION.MAX, dummyData, fieldName)).toBe(
|
||||
expectData[fieldName][WIDGET_AGGREGATION.MAX],
|
||||
);
|
||||
});
|
||||
|
||||
it.each(fieldList)('QTT-004-02 (MIN) : %s ', fieldName => {
|
||||
console.log(fieldName);
|
||||
expect(getAggregationData(WIDGET_AGGREGATION.MIN, dummyData, fieldName)).toBe(
|
||||
expectData[fieldName][WIDGET_AGGREGATION.MIN],
|
||||
);
|
||||
});
|
||||
|
||||
it.each(fieldList)('QTT-004-02 (SUM) : %s ', fieldName => {
|
||||
console.log(fieldName);
|
||||
it.each(fieldList)('QTT-004-03 (SUM) : %s ', fieldName => {
|
||||
expect(getAggregationData(WIDGET_AGGREGATION.SUM, dummyData, fieldName)).toBe(
|
||||
expectData[fieldName][WIDGET_AGGREGATION.SUM],
|
||||
);
|
||||
});
|
||||
|
||||
it.each(fieldList)('QTT-004-02 (AVG) : %s ', fieldName => {
|
||||
console.log(fieldName);
|
||||
it.each(fieldList)('QTT-004-04 (AVG) : %s ', fieldName => {
|
||||
expect(getAggregationData(WIDGET_AGGREGATION.AVG, dummyData, fieldName)).toBe(
|
||||
expectData[fieldName][WIDGET_AGGREGATION.AVG],
|
||||
);
|
||||
});
|
||||
|
||||
// fieldList.forEach(fieldName => {
|
||||
// it(`QTT-004-01 : ${fieldName}`, () => {
|
||||
// const dummyData = dummyJson.dummyData;
|
||||
// // fieldList.forEach(fieldName => {
|
||||
// expect(getAggregationData(WIDGET_AGGREGATION.MAX, dummyData, fieldName)).toBe(
|
||||
// expectData[fieldName][WIDGET_AGGREGATION.MAX],
|
||||
// );
|
||||
// // });
|
||||
// // expect(getAggregationData(WIDGET_AGGREGATION.MAX, dummyData, 'individual')).toBe(88621);
|
||||
// });
|
||||
// });
|
||||
// console.log(dummyData);
|
||||
// it('QTT-004-01', () => {
|
||||
// const dummyData = dummyJson.dummyData;
|
||||
// fieldList.forEach(fieldName => {
|
||||
// expect(getAggregationData(WIDGET_AGGREGATION.MAX, dummyData, fieldName)).toBe(
|
||||
// expectData[fieldName][WIDGET_AGGREGATION.MAX],
|
||||
// );
|
||||
// });
|
||||
// // expect(getAggregationData(WIDGET_AGGREGATION.MAX, dummyData, 'individual')).toBe(88621);
|
||||
// });
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { WIDGET_AGGREGATION } from '../../../constant';
|
||||
import * as math from 'mathjs';
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -107,8 +108,13 @@ export const getCenter = position => {
|
||||
*/
|
||||
export const getAggregationData = (type, data, field) => {
|
||||
let result = 0;
|
||||
let fits = 0;
|
||||
let dataList = [];
|
||||
if (data.length > 0 && (type === WIDGET_AGGREGATION.MIN || type === WIDGET_AGGREGATION.MAX)) {
|
||||
result = Number(data[0][field]);
|
||||
} else if (data.length > 0 && type === WIDGET_AGGREGATION.SUM) {
|
||||
dataList = data.map(row => row[field]);
|
||||
fits = decimalFits(dataList);
|
||||
}
|
||||
switch (type) {
|
||||
case WIDGET_AGGREGATION.SUM:
|
||||
@@ -118,16 +124,19 @@ export const getAggregationData = (type, data, field) => {
|
||||
result += Number(item[field]);
|
||||
}
|
||||
});
|
||||
result = Number(result.toFixed(fits));
|
||||
break;
|
||||
case WIDGET_AGGREGATION.AVG:
|
||||
// result = math.mean(dataList);
|
||||
data.forEach(item => {
|
||||
// console.log('item ', item[field]);
|
||||
if (item[field] != undefined && item[field] != null) {
|
||||
result += Number(item[field]);
|
||||
result = math.add(result, math.bignumber(item[field]));
|
||||
}
|
||||
});
|
||||
result = Math.floor((result / data.length) * 100000000) / 100000000;
|
||||
// result = result / data.length;
|
||||
result = math.divide(result, math.bignumber(data.length));
|
||||
result = Number(result);
|
||||
// result = Number(result.toFixed(6));
|
||||
break;
|
||||
case WIDGET_AGGREGATION.MAX:
|
||||
data.forEach(item => {
|
||||
@@ -150,6 +159,20 @@ export const getAggregationData = (type, data, field) => {
|
||||
return result;
|
||||
};
|
||||
|
||||
const decimalFits = arr => {
|
||||
//소수점 자리수가 가장많은 수 return
|
||||
var decimalN = 0;
|
||||
for (var j = 0; j < arr.length; j++) {
|
||||
var n = arr[j];
|
||||
if (!Number.isInteger(n)) {
|
||||
//소수
|
||||
var d = String(n).split('.')[1].length; //문자열 소수점 다음 개수
|
||||
if (decimalN < d) decimalN = d;
|
||||
}
|
||||
}
|
||||
return decimalN;
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param array
|
||||
|
||||
Reference in New Issue
Block a user