score weight + quantils tooltip
This commit is contained in:
216
package-lock.json
generated
216
package-lock.json
generated
@@ -1,15 +1,16 @@
|
|||||||
{
|
{
|
||||||
"name": "eveal-gemory",
|
"name": "gemory",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "eveal-gemory",
|
"name": "gemory",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@heroicons/vue": "^2.0.18",
|
"@heroicons/vue": "^2.0.18",
|
||||||
"@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
|
"@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
|
||||||
|
"@vueuse/components": "^10.5.0",
|
||||||
"@vueuse/core": "^10.2.1",
|
"@vueuse/core": "^10.2.1",
|
||||||
"@vueuse/integrations": "^10.2.1",
|
"@vueuse/integrations": "^10.2.1",
|
||||||
"axios": "^1.4.0",
|
"axios": "^1.4.0",
|
||||||
@@ -508,20 +509,23 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "20.8.0",
|
"version": "20.8.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.4.tgz",
|
||||||
"integrity": "sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==",
|
"integrity": "sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"undici-types": "~5.25.1"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/web-bluetooth": {
|
"node_modules/@types/web-bluetooth": {
|
||||||
"version": "0.0.17",
|
"version": "0.0.18",
|
||||||
"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz",
|
"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.18.tgz",
|
||||||
"integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA=="
|
"integrity": "sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw=="
|
||||||
},
|
},
|
||||||
"node_modules/@vitejs/plugin-vue": {
|
"node_modules/@vitejs/plugin-vue": {
|
||||||
"version": "4.3.4",
|
"version": "4.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz",
|
||||||
"integrity": "sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==",
|
"integrity": "sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^14.18.0 || >=16.0.0"
|
"node": "^14.18.0 || >=16.0.0"
|
||||||
@@ -532,30 +536,30 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@volar/language-core": {
|
"node_modules/@volar/language-core": {
|
||||||
"version": "1.10.1",
|
"version": "1.10.4",
|
||||||
"resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.1.tgz",
|
"resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.4.tgz",
|
||||||
"integrity": "sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA==",
|
"integrity": "sha512-Na69qA6uwVIdA0rHuOc2W3pHtVQQO8hCNim7FOaKNpRJh0oAFnu5r9i7Oopo5C4cnELZkPNjTrbmpcCTiW+CMQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@volar/source-map": "1.10.1"
|
"@volar/source-map": "1.10.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@volar/source-map": {
|
"node_modules/@volar/source-map": {
|
||||||
"version": "1.10.1",
|
"version": "1.10.4",
|
||||||
"resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.1.tgz",
|
"resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.4.tgz",
|
||||||
"integrity": "sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA==",
|
"integrity": "sha512-RxZdUEL+pV8p+SMqnhVjzy5zpb1QRZTlcwSk4bdcBO7yOu4rtEWqDGahVCEj4CcXour+0yJUMrMczfSCpP9Uxg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"muggle-string": "^0.3.1"
|
"muggle-string": "^0.3.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@volar/typescript": {
|
"node_modules/@volar/typescript": {
|
||||||
"version": "1.10.1",
|
"version": "1.10.4",
|
||||||
"resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.1.tgz",
|
"resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.4.tgz",
|
||||||
"integrity": "sha512-+iiO9yUSRHIYjlteT+QcdRq8b44qH19/eiUZtjNtuh6D9ailYM7DVR0zO2sEgJlvCaunw/CF9Ov2KooQBpR4VQ==",
|
"integrity": "sha512-BCCUEBASBEMCrz7qmNSi2hBEWYsXD0doaktRKpmmhvb6XntM2sAWYu6gbyK/MluLDgluGLFiFRpWgobgzUqolg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@volar/language-core": "1.10.1"
|
"@volar/language-core": "1.10.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/compiler-core": {
|
"node_modules/@vue/compiler-core": {
|
||||||
@@ -605,22 +609,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/devtools-api": {
|
"node_modules/@vue/devtools-api": {
|
||||||
"version": "6.5.0",
|
"version": "6.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
|
||||||
"integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
|
"integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
|
||||||
},
|
},
|
||||||
"node_modules/@vue/language-core": {
|
"node_modules/@vue/language-core": {
|
||||||
"version": "1.8.15",
|
"version": "1.8.19",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.15.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.19.tgz",
|
||||||
"integrity": "sha512-zche5Aw8kkvp3YaghuLiOZyVIpoWHjSQ0EfjxGSsqHOPMamdCoa9x3HtbenpR38UMUoKJ88wiWuiOrV3B/Yq+A==",
|
"integrity": "sha512-nt3dodGs97UM6fnxeQBazO50yYCKBK53waFWB3qMbLmR6eL3aUryZgQtZoBe1pye17Wl8fs9HysV3si6xMgndQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@volar/language-core": "~1.10.0",
|
"@volar/language-core": "~1.10.4",
|
||||||
"@volar/source-map": "~1.10.0",
|
"@volar/source-map": "~1.10.4",
|
||||||
"@vue/compiler-dom": "^3.3.0",
|
"@vue/compiler-dom": "^3.3.0",
|
||||||
"@vue/reactivity": "^3.3.0",
|
"@vue/reactivity": "^3.3.0",
|
||||||
"@vue/shared": "^3.3.0",
|
"@vue/shared": "^3.3.0",
|
||||||
"minimatch": "^9.0.0",
|
"minimatch": "^9.0.3",
|
||||||
"muggle-string": "^0.3.1",
|
"muggle-string": "^0.3.1",
|
||||||
"vue-template-compiler": "^2.7.14"
|
"vue-template-compiler": "^2.7.14"
|
||||||
},
|
},
|
||||||
@@ -714,24 +718,59 @@
|
|||||||
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
|
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
|
||||||
},
|
},
|
||||||
"node_modules/@vue/typescript": {
|
"node_modules/@vue/typescript": {
|
||||||
"version": "1.8.15",
|
"version": "1.8.19",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/typescript/-/typescript-1.8.15.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/typescript/-/typescript-1.8.19.tgz",
|
||||||
"integrity": "sha512-qWyanQKXOsK84S8rP7QBrqsvUdQ0nZABZmTjXMpb3ox4Bp5IbkscREA3OPUrkgl64mAxwwCzIWcOc3BPTCPjQw==",
|
"integrity": "sha512-k/SHeeQROUgqsxyHQ8Cs3Zz5TnX57p7BcBDVYR2E0c61QL2DJ2G8CsaBremmNGuGE6o1R5D50IHIxFmroMz8iw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@volar/typescript": "~1.10.0",
|
"@volar/typescript": "~1.10.4",
|
||||||
"@vue/language-core": "1.8.15"
|
"@vue/language-core": "1.8.19"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vueuse/components": {
|
||||||
|
"version": "10.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vueuse/components/-/components-10.5.0.tgz",
|
||||||
|
"integrity": "sha512-zWQZ8zkNBvX++VHfyiUaQ4otb+4PWI8679GR8FvdrNnj+01LXnqvrkyKd8yTCMJ9nHqwRRTJikS5fu4Zspn9DQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"@vueuse/core": "10.5.0",
|
||||||
|
"@vueuse/shared": "10.5.0",
|
||||||
|
"vue-demi": ">=0.14.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vueuse/components/node_modules/vue-demi": {
|
||||||
|
"version": "0.14.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
|
||||||
|
"integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"bin": {
|
||||||
|
"vue-demi-fix": "bin/vue-demi-fix.js",
|
||||||
|
"vue-demi-switch": "bin/vue-demi-switch.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/antfu"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@vue/composition-api": "^1.0.0-rc.1",
|
||||||
|
"vue": "^3.0.0-0 || ^2.6.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@vue/composition-api": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vueuse/core": {
|
"node_modules/@vueuse/core": {
|
||||||
"version": "10.4.1",
|
"version": "10.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.5.0.tgz",
|
||||||
"integrity": "sha512-DkHIfMIoSIBjMgRRvdIvxsyboRZQmImofLyOHADqiVbQVilP8VVHDhBX2ZqoItOgu7dWa8oXiNnScOdPLhdEXg==",
|
"integrity": "sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/web-bluetooth": "^0.0.17",
|
"@types/web-bluetooth": "^0.0.18",
|
||||||
"@vueuse/metadata": "10.4.1",
|
"@vueuse/metadata": "10.5.0",
|
||||||
"@vueuse/shared": "10.4.1",
|
"@vueuse/shared": "10.5.0",
|
||||||
"vue-demi": ">=0.14.5"
|
"vue-demi": ">=0.14.6"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/antfu"
|
"url": "https://github.com/sponsors/antfu"
|
||||||
@@ -763,13 +802,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vueuse/integrations": {
|
"node_modules/@vueuse/integrations": {
|
||||||
"version": "10.4.1",
|
"version": "10.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.5.0.tgz",
|
||||||
"integrity": "sha512-uRBPyG5Lxoh1A/J+boiioPT3ELEAPEo4t8W6Mr4yTKIQBeW/FcbsotZNPr4k9uz+3QEksMmflWloS9wCnypM7g==",
|
"integrity": "sha512-fm5sXLCK0Ww3rRnzqnCQRmfjDURaI4xMsx+T+cec0ngQqHx/JgUtm8G0vRjwtonIeTBsH1Q8L3SucE+7K7upJQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vueuse/core": "10.4.1",
|
"@vueuse/core": "10.5.0",
|
||||||
"@vueuse/shared": "10.4.1",
|
"@vueuse/shared": "10.5.0",
|
||||||
"vue-demi": ">=0.14.5"
|
"vue-demi": ">=0.14.6"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/antfu"
|
"url": "https://github.com/sponsors/antfu"
|
||||||
@@ -853,19 +892,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vueuse/metadata": {
|
"node_modules/@vueuse/metadata": {
|
||||||
"version": "10.4.1",
|
"version": "10.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.5.0.tgz",
|
||||||
"integrity": "sha512-2Sc8X+iVzeuMGHr6O2j4gv/zxvQGGOYETYXEc41h0iZXIRnRbJZGmY/QP8dvzqUelf8vg0p/yEA5VpCEu+WpZg==",
|
"integrity": "sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw==",
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/antfu"
|
"url": "https://github.com/sponsors/antfu"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vueuse/shared": {
|
"node_modules/@vueuse/shared": {
|
||||||
"version": "10.4.1",
|
"version": "10.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.5.0.tgz",
|
||||||
"integrity": "sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg==",
|
"integrity": "sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"vue-demi": ">=0.14.5"
|
"vue-demi": ">=0.14.6"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/antfu"
|
"url": "https://github.com/sponsors/antfu"
|
||||||
@@ -1052,9 +1091,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001541",
|
"version": "1.0.30001547",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001547.tgz",
|
||||||
"integrity": "sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==",
|
"integrity": "sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1179,9 +1218,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.4.537",
|
"version": "1.4.549",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.549.tgz",
|
||||||
"integrity": "sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==",
|
"integrity": "sha512-gpXfJslSi4hYDkA0mTLEpYKRv9siAgSUgZ+UWyk+J5Cttpd1ThCVwdclzIwQSclz3hYn049+M2fgrP1WpvF8xg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/esbuild": {
|
"node_modules/esbuild": {
|
||||||
@@ -1349,12 +1388,6 @@
|
|||||||
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/function-bind": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
|
||||||
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/glob": {
|
"node_modules/glob": {
|
||||||
"version": "7.1.6",
|
"version": "7.1.6",
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
||||||
@@ -1388,13 +1421,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/has": {
|
"node_modules/has": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
|
||||||
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
"integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
|
||||||
"function-bind": "^1.1.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4.0"
|
"node": ">= 0.4.0"
|
||||||
}
|
}
|
||||||
@@ -1781,9 +1811,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/pocketbase": {
|
"node_modules/pocketbase": {
|
||||||
"version": "0.18.0",
|
"version": "0.18.2",
|
||||||
"resolved": "https://registry.npmjs.org/pocketbase/-/pocketbase-0.18.0.tgz",
|
"resolved": "https://registry.npmjs.org/pocketbase/-/pocketbase-0.18.2.tgz",
|
||||||
"integrity": "sha512-09ri0Rnm4JjboU4OJeibd6pgvKi4DPg/r/Uu/QI3mKSZsrROoMT75zyiOldbBBMWZUDG1TRlv6BjQj30SFsrVw=="
|
"integrity": "sha512-kFtbGiRxEiqtE/GkNkBNgjg7XCaVnzo6t/q1lc2wm7cTBpOyXTTHHN+B27TKlt8H+ZxO3NRxmq5tlVI/U9V9yQ=="
|
||||||
},
|
},
|
||||||
"node_modules/postcss": {
|
"node_modules/postcss": {
|
||||||
"version": "8.4.31",
|
"version": "8.4.31",
|
||||||
@@ -1960,9 +1990,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/resolve": {
|
"node_modules/resolve": {
|
||||||
"version": "1.22.6",
|
"version": "1.22.8",
|
||||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz",
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
|
||||||
"integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==",
|
"integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-core-module": "^2.13.0",
|
"is-core-module": "^2.13.0",
|
||||||
@@ -2190,6 +2220,12 @@
|
|||||||
"node": ">=14.17"
|
"node": ">=14.17"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/undici-types": {
|
||||||
|
"version": "5.25.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
|
||||||
|
"integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/update-browserslist-db": {
|
"node_modules/update-browserslist-db": {
|
||||||
"version": "1.0.13",
|
"version": "1.0.13",
|
||||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
|
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
|
||||||
@@ -2226,9 +2262,9 @@
|
|||||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||||
},
|
},
|
||||||
"node_modules/vite": {
|
"node_modules/vite": {
|
||||||
"version": "4.4.9",
|
"version": "4.4.11",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz",
|
||||||
"integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==",
|
"integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"esbuild": "^0.18.10",
|
"esbuild": "^0.18.10",
|
||||||
@@ -2317,14 +2353,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vue-tsc": {
|
"node_modules/vue-tsc": {
|
||||||
"version": "1.8.15",
|
"version": "1.8.19",
|
||||||
"resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.15.tgz",
|
"resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.19.tgz",
|
||||||
"integrity": "sha512-4DoB3LUj7IToLmggoCxRiFG+QU5lem0nv03m1ocqugXA9rSVoTOEoYYaP8vu8b99Eh+/cCVdYOeIAQ+RsgUYUw==",
|
"integrity": "sha512-tacMQLQ0CXAfbhRycCL5sWIy1qujXaIEtP1hIQpzHWOUuICbtTj9gJyFf91PvzG5KCNIkA5Eg7k2Fmgt28l5DQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/language-core": "1.8.15",
|
"@vue/language-core": "1.8.19",
|
||||||
"@vue/typescript": "1.8.15",
|
"@vue/typescript": "1.8.19",
|
||||||
"semver": "^7.3.8"
|
"semver": "^7.5.4"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"vue-tsc": "bin/vue-tsc.js"
|
"vue-tsc": "bin/vue-tsc.js"
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@heroicons/vue": "^2.0.18",
|
"@heroicons/vue": "^2.0.18",
|
||||||
"@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
|
"@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
|
||||||
|
"@vueuse/components": "^10.5.0",
|
||||||
"@vueuse/core": "^10.2.1",
|
"@vueuse/core": "^10.2.1",
|
||||||
"@vueuse/integrations": "^10.2.1",
|
"@vueuse/integrations": "^10.2.1",
|
||||||
"axios": "^1.4.0",
|
"axios": "^1.4.0",
|
||||||
|
|||||||
33
src/components/Tooltip.vue
Normal file
33
src/components/Tooltip.vue
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import { vElementHover } from '@vueuse/components';
|
||||||
|
import { useVModel } from '@vueuse/core';
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
open: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Emit {
|
||||||
|
(e: 'update:open', value: boolean): void;
|
||||||
|
}
|
||||||
|
|
||||||
|
const props = withDefaults(defineProps<Props>(), {
|
||||||
|
open: false,
|
||||||
|
});
|
||||||
|
const emit = defineEmits<Emit>();
|
||||||
|
|
||||||
|
const isOpen = useVModel(props, 'open', emit, {passive: true});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div clas="flex flex-col items-center justify-center" :class="{'open': isOpen}">
|
||||||
|
<div v-element-hover="(h: boolean) => isOpen = h" class="m-auto header">
|
||||||
|
<slot name="header" />
|
||||||
|
</div>
|
||||||
|
<div v-if="isOpen" class="m-auto">
|
||||||
|
<div class="z-10 absolute">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
4
src/components/index.ts
Normal file
4
src/components/index.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
export { default as Modal } from './Modal.vue';
|
||||||
|
export { default as SliderCheckbox } from './SliderCheckbox.vue';
|
||||||
|
export { default as Tooltip } from './Tooltip.vue';
|
||||||
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import SliderCheckbox from '@/SliderCheckbox.vue';
|
import { SliderCheckbox } from '@/components';
|
||||||
|
import { SortableHeader, useSort } from '@/components/table';
|
||||||
import { formatIsk, percentFormater } from '@/formaters';
|
import { formatIsk, percentFormater } from '@/formaters';
|
||||||
import { MarketType, MarketTypeLabel, TaxInput, useMarketTaxStore } from "@/market";
|
import { MarketType, MarketTypeLabel, TaxInput, useMarketTaxStore } from "@/market";
|
||||||
import { SortableHeader, useSort } from '@/table';
|
|
||||||
import { ShoppingCartIcon, TrashIcon } from '@heroicons/vue/24/outline';
|
import { ShoppingCartIcon, TrashIcon } from '@heroicons/vue/24/outline';
|
||||||
import { useStorage } from '@vueuse/core';
|
import { useStorage } from '@vueuse/core';
|
||||||
import { computed, ref } from 'vue';
|
import { computed, ref } from 'vue';
|
||||||
@@ -15,7 +15,7 @@ type Result = {
|
|||||||
buy: number;
|
buy: number;
|
||||||
sell: number;
|
sell: number;
|
||||||
q1: number;
|
q1: number;
|
||||||
mmedian: number;
|
median: number;
|
||||||
q3: number;
|
q3: number;
|
||||||
profit: number;
|
profit: number;
|
||||||
score: number;
|
score: number;
|
||||||
@@ -50,7 +50,7 @@ const { sortedArray, headerProps } = useSort<Result>(computed(() => props.items
|
|||||||
.map(r => {
|
.map(r => {
|
||||||
const quartils = getHistoryQuartils(r.history, days.value);
|
const quartils = getHistoryQuartils(r.history, days.value);
|
||||||
const profit = quartils.q1 === 0 || quartils.q3 === 0 ? 0 : marketTaxStore.calculateProfit(quartils.q1, quartils.q3);
|
const profit = quartils.q1 === 0 || quartils.q3 === 0 ? 0 : marketTaxStore.calculateProfit(quartils.q1, quartils.q3);
|
||||||
const score = profit <= 0 ? 0 : Math.sqrt(quartils.totalVolume * quartils.q1 * profit / (days.value * Math.max(1, r.orderCount)));
|
const score = profit <= 0 ? 0 : Math.sqrt((Math.pow(quartils.totalVolume, 1.1) * Math.pow(quartils.q1, 1.2) * Math.pow(profit, 0.5) * Math.pow(Math.max(1, r.orderCount), -0.7)) / days.value);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
type: r.type,
|
type: r.type,
|
||||||
@@ -59,7 +59,7 @@ const { sortedArray, headerProps } = useSort<Result>(computed(() => props.items
|
|||||||
buy: r.buy,
|
buy: r.buy,
|
||||||
sell: r.sell,
|
sell: r.sell,
|
||||||
q1: quartils.q1,
|
q1: quartils.q1,
|
||||||
mmedian: quartils.median,
|
median: quartils.median,
|
||||||
q3: quartils.q3,
|
q3: quartils.q3,
|
||||||
profit,
|
profit,
|
||||||
score
|
score
|
||||||
@@ -123,7 +123,7 @@ const getLineColor = (result: Result) => {
|
|||||||
<td class="text-right">{{ formatIsk(r.buy) }}</td>
|
<td class="text-right">{{ formatIsk(r.buy) }}</td>
|
||||||
<td class="text-right">{{ formatIsk(r.sell) }}</td>
|
<td class="text-right">{{ formatIsk(r.sell) }}</td>
|
||||||
<td class="text-right">{{ formatIsk(r.q1) }}</td>
|
<td class="text-right">{{ formatIsk(r.q1) }}</td>
|
||||||
<td class="text-right">{{ formatIsk(r.mmedian) }}</td>
|
<td class="text-right">{{ formatIsk(r.median) }}</td>
|
||||||
<td class="text-right">{{ formatIsk(r.q3) }}</td>
|
<td class="text-right">{{ formatIsk(r.q3) }}</td>
|
||||||
<td class="text-right">{{ percentFormater.format(r.profit) }}</td>
|
<td class="text-right">{{ percentFormater.format(r.profit) }}</td>
|
||||||
<td class="text-right">{{ scoreFormater.format(r.score) }}</td>
|
<td class="text-right">{{ scoreFormater.format(r.score) }}</td>
|
||||||
@@ -140,4 +140,4 @@ const getLineColor = (result: Result) => {
|
|||||||
div.end {
|
div.end {
|
||||||
@apply justify-self-end ms-2;
|
@apply justify-self-end ms-2;
|
||||||
}
|
}
|
||||||
</style>
|
</style>@/components/table
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import Modal from '@/Modal.vue';
|
import { Modal } from '@/components';
|
||||||
import { formatIsk } from '@/formaters';
|
import { formatIsk } from '@/formaters';
|
||||||
import { MarketType } from '@/market';
|
import { MarketType } from '@/market';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import Modal from '@/Modal.vue';
|
import { Modal } from '@/components';
|
||||||
import { MarketType } from '@/market';
|
import { MarketType } from '@/market';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { useTrackedItemStore } from './track';
|
import { useTrackedItemStore } from './track';
|
||||||
|
|||||||
83
src/market/track/TrackQuantilsTooltip.vue
Normal file
83
src/market/track/TrackQuantilsTooltip.vue
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import { Tooltip } from '@/components';
|
||||||
|
import { formatIsk } from '@/formaters';
|
||||||
|
import { getHistory, jitaId } from '@/market';
|
||||||
|
import { getHistoryQuartils } from '@/market/scan';
|
||||||
|
import { ArrowTrendingUpIcon } from '@heroicons/vue/24/outline';
|
||||||
|
import { ref, watchEffect } from 'vue';
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
id: number;
|
||||||
|
buy: number;
|
||||||
|
sell: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
const props = defineProps<Props>();
|
||||||
|
|
||||||
|
const open = ref(false);
|
||||||
|
|
||||||
|
const q1 = ref(0);
|
||||||
|
const median = ref(0);
|
||||||
|
const q3 = ref(0);
|
||||||
|
const lineColor = ref('');
|
||||||
|
|
||||||
|
watchEffect(async () => {
|
||||||
|
if (!open.value || !props.id) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const history = await getHistory(jitaId, props.id);
|
||||||
|
const quartils = getHistoryQuartils(history);
|
||||||
|
|
||||||
|
q1.value = quartils.q1;
|
||||||
|
median.value = quartils.median;
|
||||||
|
q3.value = quartils.q3;
|
||||||
|
|
||||||
|
if (props.buy >= quartils.q3) {
|
||||||
|
lineColor.value = 'line-blue';
|
||||||
|
} else if (props.sell >= quartils.q3) {
|
||||||
|
lineColor.value = 'line-green';
|
||||||
|
} else {
|
||||||
|
lineColor.value = '';
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Tooltip v-model:open="open" class="tooltip">
|
||||||
|
<template #header>
|
||||||
|
<ArrowTrendingUpIcon />
|
||||||
|
</template>
|
||||||
|
<template #default>
|
||||||
|
<div class="bg-slate-500 -left-1/2 relative -top-2">
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Q1</th>
|
||||||
|
<th>Median</th>
|
||||||
|
<th>Q3</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr :class="lineColor">
|
||||||
|
<td class="text-right">{{ formatIsk(q1) }}</td>
|
||||||
|
<td class="text-right">{{ formatIsk(median) }}</td>
|
||||||
|
<td class="text-right">{{ formatIsk(q3) }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</Tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="postcss">
|
||||||
|
.tooltip {
|
||||||
|
@apply ms-auto;
|
||||||
|
>:deep(div.header) {
|
||||||
|
@apply btn-icon-stroke px-2;
|
||||||
|
}
|
||||||
|
&.open>:deep(div.header) {
|
||||||
|
@apply bg-slate-600 rounded-t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { SortableHeader, useSort } from '@/components/table';
|
||||||
import { formatIsk, percentFormater } from '@/formaters';
|
import { formatIsk, percentFormater } from '@/formaters';
|
||||||
import { MarketType, MarketTypeLabel, TaxInput, useMarketTaxStore } from "@/market";
|
import { MarketType, MarketTypeLabel, TaxInput, useMarketTaxStore } from "@/market";
|
||||||
import { SortableHeader, useSort } from '@/table';
|
|
||||||
import { MinusIcon, PlusIcon } from '@heroicons/vue/24/outline';
|
import { MinusIcon, PlusIcon } from '@heroicons/vue/24/outline';
|
||||||
import { useStorage } from '@vueuse/core';
|
import { useStorage } from '@vueuse/core';
|
||||||
import { computed, ref } from 'vue';
|
import { computed, ref } from 'vue';
|
||||||
import { TrackedItem } from '.';
|
import { TrackedItem } from '.';
|
||||||
|
import TrackQuantilsTooltip from './TrackQuantilsTooltip.vue';
|
||||||
|
|
||||||
type Result = {
|
type Result = {
|
||||||
type: MarketType;
|
type: MarketType;
|
||||||
@@ -97,7 +98,10 @@ const getLineColor = (result: Result) => {
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr v-for="r in sortedArray" :key="r.typeID" :class="getLineColor(r)">
|
<tr v-for="r in sortedArray" :key="r.typeID" :class="getLineColor(r)">
|
||||||
<td>
|
<td>
|
||||||
<MarketTypeLabel :id="r.typeID" :name="r.name" />
|
<div class="flex">
|
||||||
|
<MarketTypeLabel :id="r.typeID" :name="r.name" />
|
||||||
|
<TrackQuantilsTooltip :id="r.typeID" :buy="r.buy" :sell="r.sell" />
|
||||||
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-right">{{ formatIsk(r.buy) }}</td>
|
<td class="text-right">{{ formatIsk(r.buy) }}</td>
|
||||||
<td class="text-right">{{ formatIsk(r.sell) }}</td>
|
<td class="text-right">{{ formatIsk(r.sell) }}</td>
|
||||||
@@ -118,4 +122,4 @@ const getLineColor = (result: Result) => {
|
|||||||
div.end {
|
div.end {
|
||||||
@apply justify-self-end ms-2;
|
@apply justify-self-end ms-2;
|
||||||
}
|
}
|
||||||
</style>
|
</style>@/components/table
|
||||||
@@ -15,9 +15,11 @@ withDefaults(defineProps<Props>(), {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<img v-if="id" :src="`https://images.evetech.net/types/${id}/icon`" class="inline-block w-5 h-5 me-1" />
|
<div v-if="id || name">
|
||||||
<template v-if="name">
|
<img v-if="id" :src="`https://images.evetech.net/types/${id}/icon`" class="inline-block w-5 h-5 me-1" />
|
||||||
{{ name }}
|
<template v-if="name">
|
||||||
<button class="btn-icon-stroke" @click="copyToClipboard(name)"><ClipboardIcon class="relative top-0.5 !w-4 !h-4" /></button>
|
{{ name }}
|
||||||
</template>
|
<button class="btn-icon-stroke" @click="copyToClipboard(name)"><ClipboardIcon class="relative top-0.5 !w-4 !h-4" /></button>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { SortableHeader, useSort } from '@/components/table';
|
||||||
import { formatIsk, percentFormater } from '@/formaters';
|
import { formatIsk, percentFormater } from '@/formaters';
|
||||||
import { MarketTypeLabel } from '@/market/type';
|
import { MarketTypeLabel } from '@/market/type';
|
||||||
import { SortableHeader, useSort } from '@/table';
|
|
||||||
import { useStorage } from '@vueuse/core';
|
import { useStorage } from '@vueuse/core';
|
||||||
import { computed } from 'vue';
|
import { computed } from 'vue';
|
||||||
import BuySellSlider from './BuySellSlider.vue';
|
import BuySellSlider from './BuySellSlider.vue';
|
||||||
@@ -59,3 +59,4 @@ const { sortedArray, headerProps } = useSort(computed(() => props.result.map(r =
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</template>
|
</template>
|
||||||
|
@/components/table
|
||||||
Reference in New Issue
Block a user