@necrolab/dashboard 0.4.61 → 0.4.208
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/.prettierrc +1 -27
- package/.vscode/extensions.json +1 -1
- package/README.md +79 -43
- package/backend/api.js +48 -40
- package/backend/auth.js +3 -3
- package/backend/batching.js +1 -1
- package/backend/endpoints.js +77 -13
- package/backend/index.js +2 -2
- package/backend/mock-data.js +38 -29
- package/backend/mock-src/classes/logger.js +8 -8
- package/backend/mock-src/classes/utils.js +3 -7
- package/backend/mock-src/database.js +0 -0
- package/backend/mock-src/ticketmaster.js +79 -79
- package/backend/validator.js +2 -2
- package/config/configs.json +3 -2
- package/config/filter.json +3 -2
- package/index.html +10 -81
- package/index.js +1 -1
- package/package.json +25 -40
- package/postcss.config.js +1 -1
- package/postinstall.js +17 -98
- package/public/android-chrome-192x192.png +0 -0
- package/public/android-chrome-512x512.png +0 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/manifest.json +7 -12
- package/public/sw.js +2 -0
- package/public/workbox-49fdaf31.js +2 -0
- package/public/workbox-49fdaf31.js.map +1 -0
- package/public/workbox-88575b92.js +2 -0
- package/public/workbox-88575b92.js.map +1 -0
- package/public/workbox-a67a7b11.js +2 -0
- package/public/workbox-a67a7b11.js.map +1 -0
- package/public/workbox-d4314735.js +2 -0
- package/public/workbox-d4314735.js.map +1 -0
- package/public/workbox-e0f89ef3.js +2 -0
- package/public/workbox-e0f89ef3.js.map +1 -0
- package/run +9 -176
- package/src/App.vue +85 -498
- package/src/assets/css/_input.scss +99 -144
- package/src/assets/css/main.scss +99 -450
- package/src/assets/img/background.svg +2 -2
- package/src/assets/img/logo_icon.png +0 -0
- package/src/components/Auth/LoginForm.vue +11 -62
- package/src/components/Editors/Account/Account.vue +40 -116
- package/src/components/Editors/Account/AccountCreator.vue +39 -88
- package/src/components/Editors/Account/AccountView.vue +34 -102
- package/src/components/Editors/Account/CreateAccount.vue +32 -80
- package/src/components/Editors/Profile/CreateProfile.vue +83 -269
- package/src/components/Editors/Profile/Profile.vue +47 -132
- package/src/components/Editors/Profile/ProfileCountryChooser.vue +20 -82
- package/src/components/Editors/Profile/ProfileView.vue +34 -91
- package/src/components/Editors/TagLabel.vue +6 -67
- package/src/components/Filter/Filter.vue +72 -289
- package/src/components/Filter/FilterPreview.vue +30 -171
- package/src/components/Filter/PriceSortToggle.vue +4 -74
- package/src/components/Table/Header.vue +1 -1
- package/src/components/Table/Row.vue +1 -1
- package/src/components/Table/Table.vue +2 -19
- package/src/components/Tasks/CheckStock.vue +13 -28
- package/src/components/Tasks/Controls/DesktopControls.vue +17 -17
- package/src/components/Tasks/Controls/MobileControls.vue +45 -8
- package/src/components/Tasks/CreateTaskAXS.vue +73 -79
- package/src/components/Tasks/CreateTaskTM.vue +142 -94
- package/src/components/Tasks/MassEdit.vue +7 -9
- package/src/components/Tasks/QuickSettings.vue +55 -169
- package/src/components/Tasks/ScrapeVenue.vue +4 -7
- package/src/components/Tasks/Stats.vue +23 -52
- package/src/components/Tasks/Task.vue +136 -378
- package/src/components/Tasks/TaskView.vue +47 -107
- package/src/components/Tasks/Utilities.vue +6 -5
- package/src/components/icons/Bag.vue +1 -1
- package/src/components/icons/Loyalty.vue +1 -1
- package/src/components/icons/Mail.vue +2 -2
- package/src/components/icons/Play.vue +2 -2
- package/src/components/icons/Reload.vue +5 -4
- package/src/components/icons/Sandclock.vue +2 -2
- package/src/components/icons/Stadium.vue +1 -1
- package/src/components/icons/index.js +1 -24
- package/src/components/ui/Modal.vue +13 -105
- package/src/components/ui/Navbar.vue +38 -171
- package/src/components/ui/ReconnectIndicator.vue +55 -351
- package/src/components/ui/Splash.vue +35 -5
- package/src/components/ui/controls/CountryChooser.vue +62 -200
- package/src/components/ui/controls/atomic/Checkbox.vue +10 -119
- package/src/components/ui/controls/atomic/Dropdown.vue +39 -208
- package/src/components/ui/controls/atomic/MultiDropdown.vue +37 -300
- package/src/libs/Filter.js +170 -200
- package/src/registerServiceWorker.js +1 -1
- package/src/stores/connection.js +53 -51
- package/src/stores/logger.js +3 -11
- package/src/stores/sampleData.js +235 -207
- package/src/stores/ui.js +44 -112
- package/src/stores/utils.js +6 -90
- package/src/views/Accounts.vue +35 -44
- package/src/views/Console.vue +90 -341
- package/src/views/Editor.vue +123 -1176
- package/src/views/FilterBuilder.vue +251 -607
- package/src/views/Login.vue +14 -76
- package/src/views/Profiles.vue +25 -44
- package/src/views/Tasks.vue +100 -187
- package/static/offline.html +50 -192
- package/tailwind.config.js +26 -104
- package/vite.config.js +16 -73
- package/vue.config.js +32 -0
- package/workbox-config.js +11 -0
- package/artwork/image.png +0 -0
- package/dev-server.js +0 -136
- package/exit +0 -209
- package/jsconfig.json +0 -16
- package/src/assets/css/_utilities.scss +0 -388
- package/src/assets/img/background.svg.backup +0 -11
- package/src/components/icons/Check.vue +0 -5
- package/src/components/icons/Close.vue +0 -21
- package/src/components/icons/CloseX.vue +0 -5
- package/src/components/icons/Key.vue +0 -21
- package/src/components/icons/Pencil.vue +0 -21
- package/src/components/icons/Profile.vue +0 -18
- package/src/components/icons/Sell.vue +0 -21
- package/src/components/icons/Spinner.vue +0 -42
- package/src/components/icons/SquareCheck.vue +0 -18
- package/src/components/icons/SquareUncheck.vue +0 -18
- package/src/components/icons/Wildcard.vue +0 -18
- package/src/components/ui/controls/atomic/LoadingButton.vue +0 -45
- package/src/composables/useClickOutside.js +0 -21
- package/src/composables/useDropdownPosition.js +0 -174
- package/src/types/index.js +0 -41
- package/src/utils/debug.js +0 -1
- package/switch-branch.sh +0 -41
- package/workbox-config.cjs +0 -63
- /package/src/assets/img/{logo_icon-old.png → logo_icon_2.png} +0 -0
|
@@ -1,72 +1,79 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<Modal>
|
|
3
|
-
<template #header
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
<template #header> Quick Settings <GearIcon class="ml-4 w-4" /></template>
|
|
4
|
+
|
|
5
|
+
<div
|
|
6
|
+
v-if="ui.profile.admin"
|
|
7
|
+
class="my-3 flex gap-x-3 justify-between items-center border-dark-550 text-white border-2 bg-dark-500 p-3 rounded w-full h-10 button-default-smaller"
|
|
8
|
+
>
|
|
9
|
+
<span>Backup incap</span>
|
|
10
|
+
<Switch class="scale-75" v-model="quickConfig.incapBackup" />
|
|
11
|
+
</div>
|
|
6
12
|
|
|
7
|
-
<div
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
<input
|
|
17
|
-
type="text"
|
|
18
|
-
class="quick-settings-input"
|
|
19
|
-
:placeholder="`Enter ${keyName} key`"
|
|
20
|
-
v-model="quickConfig.keys[categoryName][keyName]"
|
|
21
|
-
/>
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
13
|
+
<div
|
|
14
|
+
class="text-white bg-dark-500 mb-3 rounded border-dark-550 border-2 px-3 flex items-center justify-between h-10"
|
|
15
|
+
>
|
|
16
|
+
<span class="w-full">HyperAPI key</span>
|
|
17
|
+
<input
|
|
18
|
+
type="text"
|
|
19
|
+
class="transparent w-full bg-transparent border-none text-white placeholder-light-400"
|
|
20
|
+
placeholder="Enter HyperAPI key"
|
|
21
|
+
/>
|
|
24
22
|
</div>
|
|
25
23
|
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
<div
|
|
25
|
+
class="text-white bg-dark-500 mb-3 rounded border-dark-550 border-2 px-3 flex items-center justify-between h-10"
|
|
26
|
+
>
|
|
27
|
+
<span class="w-full">Capsolver key</span>
|
|
28
|
+
<input
|
|
29
|
+
type="text"
|
|
30
|
+
class="transparent w-full bg-transparent border-none text-white placeholder-light-400"
|
|
31
|
+
placeholder="Enter Capsolver key"
|
|
32
|
+
/>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div
|
|
36
|
+
class="text-white bg-dark-500 mb-3 rounded border-dark-550 border-2 px-3 flex items-center justify-between"
|
|
37
|
+
>
|
|
38
|
+
<span class="w-full">Checkout Proxies</span>
|
|
28
39
|
<Dropdown
|
|
29
|
-
class="
|
|
30
|
-
variant="transparent"
|
|
40
|
+
class="rounded text-white pl-2 z-50 special-dropdown"
|
|
31
41
|
:default="ui.profile.proxyList?.checkout || proxyLists[0]"
|
|
32
|
-
:value="ui.profile.proxyList?.checkout"
|
|
33
42
|
:options="proxyLists"
|
|
34
43
|
:onClick="(f) => saveProxyListUpate('checkout', f)"
|
|
35
44
|
:allowDefault="false"
|
|
45
|
+
rightAmount="right-3"
|
|
36
46
|
/>
|
|
37
47
|
</div>
|
|
38
48
|
|
|
39
|
-
|
|
40
|
-
<span class="w-
|
|
49
|
+
<div class="text-white bg-dark-500 rounded border-dark-550 border-2 px-3 flex items-center justify-between">
|
|
50
|
+
<span class="w-full">Queue Proxies</span>
|
|
41
51
|
<Dropdown
|
|
42
|
-
class="
|
|
43
|
-
variant="transparent"
|
|
52
|
+
class="rounded text-white pl-2 z-30 special-dropdown"
|
|
44
53
|
:default="ui.profile.proxyList?.queue || proxyLists[0]"
|
|
45
|
-
:value="ui.profile.proxyList?.queue"
|
|
46
|
-
:options="proxyLists"
|
|
47
54
|
:onClick="(f) => saveProxyListUpate('queue', f)"
|
|
55
|
+
:options="proxyLists"
|
|
48
56
|
:allowDefault="false"
|
|
57
|
+
rightAmount="right-3"
|
|
49
58
|
/>
|
|
50
59
|
</div>
|
|
51
|
-
<div class="flex mt-5 justify-between
|
|
52
|
-
<
|
|
53
|
-
|
|
54
|
-
Dashboard v{{ version }}
|
|
55
|
-
</div>
|
|
56
|
-
<div class="bg-gradient-to-r from-dark-400 to-dark-500 rounded-lg text-xs shadow-lg p-2 px-3 text-white font-medium border border-light-300">
|
|
57
|
-
Bot v{{ ui.botVersion }}
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
60
|
-
|
|
61
|
-
<div class="flex gap-5 quicksettings-buttons">
|
|
60
|
+
<div class="flex mt-5 justify-between items-end">
|
|
61
|
+
<span class="text-light-400 text-sm hidden lg:block">v{{ version }}</span>
|
|
62
|
+
<div class="flex justify-end gap-5">
|
|
62
63
|
<button
|
|
63
|
-
class="button-default bg-dark-400 w-24 text-xs flex items-center justify-center gap-x-2
|
|
64
|
+
class="button-default hover:opacity-70 active:opacity-50 bg-dark-400 w-24 md:w-44 text-xs flex items-center justify-center gap-x-2"
|
|
64
65
|
@click="checkBalances()"
|
|
65
66
|
>
|
|
66
67
|
Balances <img src="@/assets/img/sell.svg" width="14" />
|
|
67
68
|
</button>
|
|
68
69
|
<button
|
|
69
|
-
class="button-default bg-dark-400 w-24 text-xs flex items-center justify-center gap-x-2
|
|
70
|
+
class="button-default hover:opacity-70 active:opacity-50 bg-dark-400 w-24 md:w-44 text-xs flex items-center justify-center gap-x-2"
|
|
71
|
+
@click="done(false)"
|
|
72
|
+
>
|
|
73
|
+
Cancel <img src="@/assets/img/close.svg" width="14" />
|
|
74
|
+
</button>
|
|
75
|
+
<button
|
|
76
|
+
class="button-default hover:opacity-70 active:opacity-50 bg-dark-400 w-24 md:w-44 text-xs flex items-center justify-center gap-x-2"
|
|
70
77
|
@click="done(true)"
|
|
71
78
|
>
|
|
72
79
|
Save <img src="/img/save.svg" width="14" class="invert" />
|
|
@@ -85,125 +92,6 @@
|
|
|
85
92
|
.transparent {
|
|
86
93
|
background: transparent !important;
|
|
87
94
|
}
|
|
88
|
-
|
|
89
|
-
.input-container {
|
|
90
|
-
@apply text-white bg-dark-500 mb-3 px-3 rounded-lg border-dark-550 border-2 flex items-center justify-between h-10;
|
|
91
|
-
overflow: visible;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
.quick-settings-input {
|
|
95
|
-
@apply w-full h-full text-sm text-white bg-transparent border-0 outline-none px-2 py-1 transition-colors duration-150;
|
|
96
|
-
|
|
97
|
-
&:focus {
|
|
98
|
-
@apply outline-none border-0 shadow-none bg-transparent;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
&:hover:not(:focus) {
|
|
102
|
-
@apply bg-dark-550;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
&::placeholder {
|
|
106
|
-
@apply text-light-400 opacity-70;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/* iPhone portrait mode fixes */
|
|
111
|
-
@media (max-width: 430px) and (orientation: portrait) {
|
|
112
|
-
.quicksettings-bottom {
|
|
113
|
-
flex-direction: column;
|
|
114
|
-
gap: 1rem;
|
|
115
|
-
align-items: stretch;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
.quicksettings-versions {
|
|
119
|
-
justify-content: center;
|
|
120
|
-
flex-wrap: wrap;
|
|
121
|
-
gap: 0.5rem;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
.quicksettings-versions > div {
|
|
125
|
-
flex: 1;
|
|
126
|
-
min-width: 120px;
|
|
127
|
-
text-align: center;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
.quicksettings-buttons {
|
|
131
|
-
justify-content: center;
|
|
132
|
-
gap: 0.75rem;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.quicksettings-buttons button {
|
|
136
|
-
width: 5rem;
|
|
137
|
-
padding-left: 0.5rem;
|
|
138
|
-
padding-right: 0.5rem;
|
|
139
|
-
gap: 0.25rem;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
.quicksettings-buttons button img {
|
|
143
|
-
width: 12px;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/* Fix dropdown visibility in modal */
|
|
148
|
-
:deep(.modal-body) {
|
|
149
|
-
overflow: visible !important;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
:deep(.component-modal) {
|
|
153
|
-
overflow: visible !important;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/* Dropdown styling fixes */
|
|
157
|
-
:deep(.dropdown) {
|
|
158
|
-
background: transparent !important;
|
|
159
|
-
border: none !important;
|
|
160
|
-
box-shadow: none !important;
|
|
161
|
-
padding: 0 !important;
|
|
162
|
-
height: 40px !important;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
:deep(.dropdown:hover),
|
|
166
|
-
:deep(.dropdown:focus-within) {
|
|
167
|
-
border: none !important;
|
|
168
|
-
background: transparent !important;
|
|
169
|
-
box-shadow: none !important;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
:deep(.dropdown-display) {
|
|
173
|
-
height: 100%;
|
|
174
|
-
padding: 0.625rem;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
:deep(.dropdown-value) {
|
|
178
|
-
font-size: 0.875rem;
|
|
179
|
-
line-height: 1.25rem;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
:deep(.dropdown-menu-portal) {
|
|
183
|
-
z-index: 1000 !important;
|
|
184
|
-
max-height: 200px !important;
|
|
185
|
-
overflow-y: auto !important;
|
|
186
|
-
overscroll-behavior: contain !important;
|
|
187
|
-
touch-action: pan-y !important;
|
|
188
|
-
-webkit-overflow-scrolling: touch !important;
|
|
189
|
-
border: 1px solid #3d3e44 !important;
|
|
190
|
-
background: linear-gradient(135deg, #2a2b30 0%, #2e2f34 100%) !important;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
:deep(.dropdown-item) {
|
|
194
|
-
padding: 0.625rem 1rem;
|
|
195
|
-
font-size: 0.875rem;
|
|
196
|
-
line-height: 1.25rem;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/* Ensure proper z-index stacking */
|
|
200
|
-
.z-tooltip {
|
|
201
|
-
z-index: 100 !important;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
.z-dropdown {
|
|
205
|
-
z-index: 90 !important;
|
|
206
|
-
}
|
|
207
95
|
</style>
|
|
208
96
|
<script setup>
|
|
209
97
|
import Modal from "@/components/ui/Modal.vue";
|
|
@@ -258,12 +146,10 @@ const loadProxyLists = async () => {
|
|
|
258
146
|
};
|
|
259
147
|
|
|
260
148
|
const checkBalances = async () => {
|
|
261
|
-
const
|
|
262
|
-
if (
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
});
|
|
266
|
-
else ui.showError("Could not get balances");
|
|
149
|
+
const { capsolver, hyper } = await getBalances();
|
|
150
|
+
if (capsolver) ui.showSuccess("Capsolver balance: " + capsolver);
|
|
151
|
+
if (hyper) ui.showSuccess("Hyper balance: " + hyper);
|
|
152
|
+
if (!capsolver && !capsolver) ui.showSuccess("Could not get balances");
|
|
267
153
|
};
|
|
268
154
|
|
|
269
155
|
loadProxyLists();
|
|
@@ -4,15 +4,13 @@
|
|
|
4
4
|
<!-- Event ID -->
|
|
5
5
|
<div class="input-wrapper mt-7 mb-4">
|
|
6
6
|
<label class="label-override mb-2">Event ID or URL <StadiumIcon /></label>
|
|
7
|
-
<div class="input-default
|
|
8
|
-
<input
|
|
9
|
-
|
|
10
|
-
v-model="eventId"
|
|
11
|
-
/>
|
|
7
|
+
<div class="input-default">
|
|
8
|
+
<input placeholder="102PDA9125510GYU" v-model="eventId" />
|
|
9
|
+
<span class="text-red-400 my-auto mr-2 mt-3">* </span>
|
|
12
10
|
</div>
|
|
13
11
|
</div>
|
|
14
12
|
<button
|
|
15
|
-
class="
|
|
13
|
+
class="button-default hover:opacity-70 active:opacity-50 bg-dark-400 w-48 text-xs flex items-center justify-center gap-x-2 ml-auto"
|
|
16
14
|
@click="done()"
|
|
17
15
|
>
|
|
18
16
|
Scrape Venue <ScrapeIcon />
|
|
@@ -31,7 +29,6 @@ import Modal from "@/components/ui/Modal.vue";
|
|
|
31
29
|
import { StadiumIcon, ScrapeIcon } from "@/components/icons";
|
|
32
30
|
import { useUIStore } from "@/stores/ui";
|
|
33
31
|
import { ref } from "vue";
|
|
34
|
-
import { isEU } from "@/stores/utils";
|
|
35
32
|
|
|
36
33
|
const ui = useUIStore();
|
|
37
34
|
const eventId = ref("");
|
|
@@ -1,53 +1,43 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="flex text-white font-bold lg:gap-5 gap-1
|
|
2
|
+
<div class="flex text-white font-bold lg:gap-5 gap-1" v-if="show" :key="key">
|
|
3
3
|
<div
|
|
4
4
|
v-if="ui.queueStats.total"
|
|
5
|
-
class="
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Total MQM
|
|
5
|
+
class="bg-dark-500 mb-5 text-sm rounded-lg lg:p-2 p-1 lg:gap-3 gap-2 flex justify-between"
|
|
6
|
+
>
|
|
7
|
+
<h2 class="font-bold text-sm flex items-center gap-1 scale-100">
|
|
8
|
+
<img width="14px" src="@/assets/img/wildcard.svg" />Total MQM
|
|
9
9
|
</h2>
|
|
10
|
-
<span class="text-light-400 text-
|
|
11
|
-
{{ ui.queueStats.total }}
|
|
12
|
-
</span>
|
|
10
|
+
<span class="text-light-400 text-sm font-black flex justify-center">{{ ui.queueStats.total }} </span>
|
|
13
11
|
</div>
|
|
14
12
|
<div
|
|
15
13
|
v-if="ui.queueStats.queued"
|
|
16
|
-
class="
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
</h2>
|
|
21
|
-
<span class="text-light-400 text-xs font-black flex items-center justify-center whitespace-nowrap">
|
|
22
|
-
{{ ui.queueStats.queued }}
|
|
23
|
-
</span>
|
|
14
|
+
class="bg-dark-500 mb-5 text-sm rounded-lg lg:p-2 p-1 lg:gap-3 gap-2 flex justify-between"
|
|
15
|
+
>
|
|
16
|
+
<h2 class="font-bold text-sm flex items-center gap-1"><SkiIcon />Queued</h2>
|
|
17
|
+
<span class="text-light-400 text-sm font-black flex justify-center">{{ ui.queueStats.queued }} </span>
|
|
24
18
|
</div>
|
|
25
19
|
<div
|
|
26
20
|
v-if="ui.queueStats.sleeping"
|
|
27
|
-
class="
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
</h2>
|
|
32
|
-
<span class="text-light-400 text-xs font-black flex items-center justify-center whitespace-nowrap">
|
|
33
|
-
{{ ui.queueStats.sleeping }}
|
|
34
|
-
</span>
|
|
21
|
+
class="bg-dark-500 mb-5 text-sm rounded-lg lg:p-2 p-1 lg:gap-3 gap-2 flex justify-between"
|
|
22
|
+
>
|
|
23
|
+
<h2 class="font-bold text-sm flex items-center gap-1"><TimerIcon />Sleeping</h2>
|
|
24
|
+
<span class="text-light-400 text-sm font-black flex justify-center">{{ ui.queueStats.sleeping }} </span>
|
|
35
25
|
</div>
|
|
36
26
|
<div
|
|
37
27
|
v-if="ui.queueStats.nextQueuePasses.length > 0"
|
|
38
|
-
class="
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
<span class="sm:block hidden">Next Passes</span>
|
|
28
|
+
class="bg-dark-500 mb-5 rounded-lg text-sm flex justify-between lg:p-2 p-1 lg:gap-3 gap-2"
|
|
29
|
+
>
|
|
30
|
+
<h2 class="font-bold flex text-sm items-center gap-1">
|
|
31
|
+
<CartIcon /><span class="sm:block hidden">Next Passes</span>
|
|
42
32
|
<span class="sm:hidden block">Pass</span>
|
|
43
33
|
</h2>
|
|
44
|
-
<span class="text-light-400 text-
|
|
45
|
-
|
|
46
|
-
</span>
|
|
34
|
+
<span class="text-light-400 text-sm font-black">{{
|
|
35
|
+
ui.queueStats.nextQueuePasses.slice(0, queuePassAmount).join(", ")
|
|
36
|
+
}}</span>
|
|
47
37
|
</div>
|
|
48
38
|
<!-- <div
|
|
49
39
|
v-if="ui.queueStats.carts"
|
|
50
|
-
class="bg-dark-500 mb-
|
|
40
|
+
class="bg-dark-500 mb-5 text-sm rounded-lg lg:p-2 p-1 lg:gap-3 gap-2 flex justify-between"
|
|
51
41
|
>
|
|
52
42
|
<h2 class="font-bold text-sm flex items-center gap-1"><CartIcon />Carts</h2>
|
|
53
43
|
<span class="text-light-400 text-sm font-black flex justify-center">{{ ui.queueStats.sleeping }} </span>
|
|
@@ -68,28 +58,9 @@ const getQueuePassAmount = (width) => {
|
|
|
68
58
|
return 1;
|
|
69
59
|
};
|
|
70
60
|
|
|
61
|
+
let show = ref(true);
|
|
71
62
|
let key = ref(0);
|
|
72
63
|
let queuePassAmount = ref(getQueuePassAmount(window.innerWidth));
|
|
73
64
|
|
|
74
65
|
window.addEventListener("resize", () => (queuePassAmount.value = getQueuePassAmount(window.innerWidth)));
|
|
75
66
|
</script>
|
|
76
|
-
<style lang="scss" scoped>
|
|
77
|
-
.stats-card {
|
|
78
|
-
@apply bg-dark-500 border border-dark-650 rounded;
|
|
79
|
-
transition: all 0.15s ease;
|
|
80
|
-
|
|
81
|
-
&:hover {
|
|
82
|
-
@apply bg-dark-550 border-dark-700;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
h2 {
|
|
86
|
-
font-weight: 600;
|
|
87
|
-
color: #d4d4d4;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
span {
|
|
91
|
-
font-weight: 700;
|
|
92
|
-
color: #cccccc;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
</style>
|