@necrolab/dashboard 0.4.61 → 0.4.209
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 +2 -64
- package/backend/api.js +48 -40
- package/backend/auth.js +3 -3
- package/backend/batching.js +1 -1
- package/backend/endpoints.js +76 -12
- package/backend/index.js +2 -2
- package/backend/mock-data.js +36 -27
- 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 +8 -79
- 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 +135 -377
- 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 +37 -170
- 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 +201 -173
- 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,61 +1,76 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<Modal class="max-w-screen
|
|
2
|
+
<Modal class="overflow-y-scroll max-w-screen">
|
|
3
3
|
<template #header>
|
|
4
4
|
Create Task
|
|
5
5
|
<img src="@/assets/img/pencil.svg" class="ml-4" />
|
|
6
6
|
</template>
|
|
7
7
|
|
|
8
|
+
<!-- <div v-if="displayConfigSelector" class="w-3/12 input-wrapper z-inf2 mt-4">
|
|
9
|
+
<div class="dropdown input-default p-2">
|
|
10
|
+
<span class="flex justify-between items-center z-inf2 text-white">
|
|
11
|
+
<span class="text-sm">Load config</span>
|
|
12
|
+
<DownIcon class="absolute right-5" />
|
|
13
|
+
</span>
|
|
14
|
+
<div class="dropdown-content z-inf2">
|
|
15
|
+
<div
|
|
16
|
+
v-bind:key="opt.name"
|
|
17
|
+
class="py-1 my-1 cursor-pointer"
|
|
18
|
+
v-for="opt in addTaskConfigs"
|
|
19
|
+
@click="useConfig(opt.config)"
|
|
20
|
+
>
|
|
21
|
+
<p>{{ opt.name }}</p>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</div> -->
|
|
26
|
+
|
|
8
27
|
<!-- Task Form -->
|
|
9
|
-
<div class="
|
|
28
|
+
<div class="grid grid-cols-2 gap-x-4 gap-y-4 mt-4 mb-4">
|
|
10
29
|
<!-- Event ID -->
|
|
11
30
|
<div class="input-wrapper">
|
|
12
|
-
<label class="label-override mb-2"
|
|
13
|
-
Event ID
|
|
31
|
+
<label class="label-override mb-2"
|
|
32
|
+
>Event ID
|
|
14
33
|
<StadiumIcon />
|
|
15
34
|
</label>
|
|
16
|
-
<div class="input-default
|
|
17
|
-
<input placeholder="827474" v-model="task.eventId"
|
|
35
|
+
<div class="input-default">
|
|
36
|
+
<input placeholder="827474" v-model="task.eventId" />
|
|
37
|
+
<span class="text-red-400 my-auto mr-2 mt-3">* </span>
|
|
18
38
|
</div>
|
|
19
39
|
</div>
|
|
20
40
|
<!-- Email -->
|
|
21
41
|
<div class="input-wrapper">
|
|
22
|
-
<label class="label-override mb-2"
|
|
23
|
-
Email
|
|
42
|
+
<label class="label-override mb-2"
|
|
43
|
+
>Email
|
|
24
44
|
<MailIcon />
|
|
25
45
|
</label>
|
|
26
46
|
<div class="input-default">
|
|
27
|
-
<input
|
|
28
|
-
placeholder="Email"
|
|
29
|
-
v-model="task.email"
|
|
30
|
-
autocomplete="off"
|
|
31
|
-
data-form-type="other"
|
|
32
|
-
name="axs_email_not_for_auth" />
|
|
47
|
+
<input placeholder="Email" v-model="task.email" />
|
|
33
48
|
</div>
|
|
34
49
|
</div>
|
|
35
50
|
<!-- Proxy -->
|
|
36
51
|
<div class="input-wrapper">
|
|
37
|
-
<label class="label-override mb-2"
|
|
38
|
-
Proxy
|
|
52
|
+
<label class="label-override mb-2"
|
|
53
|
+
>Proxy
|
|
39
54
|
<CameraIcon />
|
|
40
55
|
</label>
|
|
41
56
|
<div class="input-default">
|
|
42
|
-
<input placeholder="Proxy" v-model="task.proxy"
|
|
57
|
+
<input placeholder="Proxy" v-model="task.proxy" />
|
|
43
58
|
</div>
|
|
44
59
|
</div>
|
|
45
60
|
<!-- Presale Code -->
|
|
46
61
|
<div class="input-wrapper">
|
|
47
|
-
<label class="label-override mb-2"
|
|
48
|
-
Presale Code
|
|
62
|
+
<label class="label-override mb-2"
|
|
63
|
+
>Presale Code
|
|
49
64
|
<AwardIcon />
|
|
50
65
|
</label>
|
|
51
66
|
<div class="input-default">
|
|
52
|
-
<input placeholder="Code" v-model="task.presaleCode" maxlength="15"
|
|
67
|
+
<input placeholder="Code" v-model="task.presaleCode" maxlength="15" />
|
|
53
68
|
</div>
|
|
54
69
|
</div>
|
|
55
70
|
<!-- Ticket Quantity -->
|
|
56
71
|
<div class="input-wrapper">
|
|
57
|
-
<label class="label-override mb-2"
|
|
58
|
-
Ticket Quantity
|
|
72
|
+
<label class="label-override mb-2"
|
|
73
|
+
>Ticket Quantity
|
|
59
74
|
<BagIcon />
|
|
60
75
|
</label>
|
|
61
76
|
<div class="input-default">
|
|
@@ -72,10 +87,7 @@
|
|
|
72
87
|
</div>
|
|
73
88
|
<!-- Ticket Quantity -->
|
|
74
89
|
<div class="input-wrapper">
|
|
75
|
-
<label class="label-override mb-2">
|
|
76
|
-
Amount
|
|
77
|
-
<span class="ml-2 h-[18px]">#</span>
|
|
78
|
-
</label>
|
|
90
|
+
<label class="label-override mb-2">Amount <span class="ml-2" style="height: 18px">#</span></label>
|
|
79
91
|
<div class="input-default">
|
|
80
92
|
<input placeholder="20" min="1" type="number" pattern="\d*" v-model="task.taskQuantity" />
|
|
81
93
|
<div class="input-incrementer">
|
|
@@ -90,26 +102,27 @@
|
|
|
90
102
|
</div>
|
|
91
103
|
|
|
92
104
|
<!-- Profile Tag(s) -->
|
|
93
|
-
<div class="input-wrapper
|
|
94
|
-
<label class="label-override mb-2"
|
|
95
|
-
Profile Tag(s)
|
|
105
|
+
<div class="input-wrapper" style="z-index: 50 !important">
|
|
106
|
+
<label class="label-override mb-2"
|
|
107
|
+
>Profile Tag(s)
|
|
96
108
|
<TagIcon />
|
|
97
109
|
</label>
|
|
98
110
|
<MultiDropdown
|
|
99
|
-
class="
|
|
111
|
+
class="w-full will-change-auto input-default"
|
|
100
112
|
:onSelect="(v) => (task.profileTags = v)"
|
|
101
113
|
default="Any"
|
|
102
114
|
:options="
|
|
103
115
|
profileTagsOptions.map((opt) => {
|
|
104
116
|
return { label: opt, value: opt };
|
|
105
117
|
})
|
|
106
|
-
"
|
|
118
|
+
"
|
|
119
|
+
/>
|
|
107
120
|
</div>
|
|
108
121
|
|
|
109
122
|
<!-- Account Tag -->
|
|
110
|
-
<div class="input-wrapper
|
|
111
|
-
<label class="label-override mb-2"
|
|
112
|
-
Account Tag
|
|
123
|
+
<div class="input-wrapper">
|
|
124
|
+
<label class="label-override mb-2"
|
|
125
|
+
>Account Tag
|
|
113
126
|
<ScannerIcon />
|
|
114
127
|
</label>
|
|
115
128
|
|
|
@@ -120,22 +133,20 @@
|
|
|
120
133
|
:options="accountTagOptions"
|
|
121
134
|
:allowDefault="false"
|
|
122
135
|
:capitalize="true"
|
|
123
|
-
class="input-default dropdown w-full
|
|
136
|
+
class="input-default dropdown p-4 w-full"
|
|
137
|
+
/>
|
|
124
138
|
</div>
|
|
125
139
|
|
|
126
140
|
<div class="input-wrapper">
|
|
127
|
-
<label class="label-override mb-2">
|
|
128
|
-
Start Offset (Minutes)
|
|
129
|
-
<ShieldIcon />
|
|
130
|
-
</label>
|
|
141
|
+
<label class="label-override mb-2">Start Offset (Minutes)<ShieldIcon /></label>
|
|
131
142
|
<div class="input-default">
|
|
132
143
|
<input placeholder="120" type="number" pattern="\d*" v-model="task.startOffset" />
|
|
133
144
|
</div>
|
|
134
145
|
</div>
|
|
135
146
|
|
|
136
147
|
<div class="input-wrapper">
|
|
137
|
-
<label class="label-override mb-2"
|
|
138
|
-
Promo ID
|
|
148
|
+
<label class="label-override mb-2"
|
|
149
|
+
>Promo ID
|
|
139
150
|
<AwardIcon />
|
|
140
151
|
</label>
|
|
141
152
|
<div class="input-default">
|
|
@@ -143,9 +154,9 @@
|
|
|
143
154
|
</div>
|
|
144
155
|
</div>
|
|
145
156
|
</div>
|
|
146
|
-
<div class="
|
|
157
|
+
<div class="border border-light-300 mb-3" />
|
|
147
158
|
<!-- Task Switches -->
|
|
148
|
-
<div class="
|
|
159
|
+
<div class="grid grid-cols-4 gap-y-4 mb-4 justify-between task-switches">
|
|
149
160
|
<div class="switch-wrapper flex flex-col">
|
|
150
161
|
<h4>
|
|
151
162
|
<span class="hidden xs:block">Do Not Pay</span>
|
|
@@ -165,23 +176,24 @@
|
|
|
165
176
|
<div class="switch-wrapper flex flex-col">
|
|
166
177
|
<h4>
|
|
167
178
|
<span class="hidden xs:block">Quick Queue</span>
|
|
168
|
-
<span class="block xs:hidden">Quick Q.</span>
|
|
169
|
-
<SkiIcon class="scale-90" />
|
|
179
|
+
<span class="block xs:hidden">Quick Q.</span> <SkiIcon class="scale-90" />
|
|
170
180
|
</h4>
|
|
171
181
|
<Switch class="mx-auto" v-model="task.quickQueue" />
|
|
172
182
|
</div>
|
|
173
183
|
<div class="switch-wrapper flex flex-col">
|
|
174
184
|
<h4>
|
|
175
|
-
Manual
|
|
176
|
-
<HandIcon />
|
|
185
|
+
<span class="hidden xs:block">Manual</span>
|
|
177
186
|
</h4>
|
|
178
187
|
<Switch class="mx-auto" v-model="task.manual" />
|
|
179
188
|
</div>
|
|
180
189
|
</div>
|
|
181
190
|
|
|
182
191
|
<!-- Task prefab -->
|
|
183
|
-
<div class="
|
|
184
|
-
<button
|
|
192
|
+
<div class="border border-light-300 my-3" />
|
|
193
|
+
<button
|
|
194
|
+
class="button-default hover:opacity-70 active:opacity-50 bg-dark-400 w-48 text-xs mx-auto flex items-center justify-center gap-x-2"
|
|
195
|
+
@click="createTask"
|
|
196
|
+
>
|
|
185
197
|
Create
|
|
186
198
|
<EditIcon />
|
|
187
199
|
</button>
|
|
@@ -190,7 +202,6 @@
|
|
|
190
202
|
|
|
191
203
|
<script setup>
|
|
192
204
|
import { ref, watch } from "vue";
|
|
193
|
-
import { countries } from "@/stores/countries";
|
|
194
205
|
import Modal from "@/components/ui/Modal.vue";
|
|
195
206
|
import Switch from "@/components/ui/controls/atomic/Switch.vue";
|
|
196
207
|
import {
|
|
@@ -216,16 +227,15 @@ import {
|
|
|
216
227
|
import { useUIStore } from "@/stores/ui";
|
|
217
228
|
import Dropdown from "@/components/ui/controls/atomic/Dropdown.vue";
|
|
218
229
|
import MultiDropdown from "@/components/ui/controls/atomic/MultiDropdown.vue";
|
|
219
|
-
import {
|
|
230
|
+
import { isEU, removeDuplicates } from "@/stores/utils";
|
|
220
231
|
|
|
221
232
|
const ui = useUIStore();
|
|
222
233
|
|
|
223
|
-
const accountTagOptions = ref(ui.profile.
|
|
234
|
+
const accountTagOptions = ref(ui.profile.accountTags);
|
|
224
235
|
const defaultTags = ["Amex", "Visa", "Master"];
|
|
225
236
|
|
|
226
|
-
const profileTagsOptions = ref(
|
|
227
|
-
|
|
228
|
-
);
|
|
237
|
+
const profileTagsOptions = ref(removeDuplicates(["Any", ...defaultTags, ...ui.profile.profileTags]));
|
|
238
|
+
|
|
229
239
|
const baseTask = ref({
|
|
230
240
|
selected: false,
|
|
231
241
|
taskId: "",
|
|
@@ -251,7 +261,7 @@ const baseTask = ref({
|
|
|
251
261
|
const task = ref(ui.modalData[`task_${ui.currentCountry.siteId}`] || baseTask);
|
|
252
262
|
|
|
253
263
|
function createTask() {
|
|
254
|
-
ui.logger.Info("Created new task", task.value
|
|
264
|
+
ui.logger.Info("Created new task", task.value);
|
|
255
265
|
const eventIds = task.value.eventId.split(",").map((t) => t.trim());
|
|
256
266
|
const presaleCodes = task.value.presaleCode ? task.value.presaleCode.split(",").map((t) => t.trim()) : [undefined];
|
|
257
267
|
eventIds.forEach((eventId) => {
|
|
@@ -274,28 +284,12 @@ watch(
|
|
|
274
284
|
}
|
|
275
285
|
);
|
|
276
286
|
|
|
277
|
-
watch(
|
|
278
|
-
() => task.value,
|
|
279
|
-
() => (ui.modalData[`task_${ui.currentCountry.siteId}`] = task.value),
|
|
280
|
-
{ deep: true }
|
|
281
|
-
);
|
|
287
|
+
watch(() => task.value, (ui.modalData[`task_${ui.currentCountry.siteId}`] = task.value));
|
|
282
288
|
|
|
283
289
|
watch(
|
|
284
290
|
() => task.value.eventId,
|
|
285
291
|
(url) => {
|
|
286
292
|
ui.logger.Info("URL changed", url);
|
|
287
|
-
if (!url.includes("https://")) return;
|
|
288
|
-
try {
|
|
289
|
-
const parsed = parseAxsEventUrl(url);
|
|
290
|
-
const country = countries.AXS.find((c) => c.siteId === parsed.siteId);
|
|
291
|
-
if (country) ui.setCurrentCountry(country, false, ui.currentModule);
|
|
292
|
-
|
|
293
|
-
task.value.eventId = parsed.eventId;
|
|
294
|
-
debugger;
|
|
295
|
-
if (parsed.promoId) task.value.promoId = parsed.promoId;
|
|
296
|
-
} catch (ex) {
|
|
297
|
-
ui.logger.Error("Could not parse url (2)", ex);
|
|
298
|
-
}
|
|
299
293
|
}
|
|
300
294
|
);
|
|
301
295
|
|
|
@@ -305,7 +299,7 @@ watch(
|
|
|
305
299
|
<style lang="scss" scoped>
|
|
306
300
|
.label-override {
|
|
307
301
|
@apply flex;
|
|
308
|
-
color: #
|
|
302
|
+
color: #6e7084 !important;
|
|
309
303
|
|
|
310
304
|
img {
|
|
311
305
|
@apply ml-2;
|
|
@@ -314,8 +308,8 @@ watch(
|
|
|
314
308
|
|
|
315
309
|
.task-switches {
|
|
316
310
|
h4 {
|
|
317
|
-
color: #
|
|
318
|
-
@apply
|
|
311
|
+
color: #6e7084;
|
|
312
|
+
@apply text-xs text-center flex items-center gap-x-2 mx-auto;
|
|
319
313
|
}
|
|
320
314
|
|
|
321
315
|
.switch-wrapper {
|
|
@@ -331,13 +325,13 @@ watch(
|
|
|
331
325
|
}
|
|
332
326
|
}
|
|
333
327
|
</style>
|
|
334
|
-
<style lang="scss"
|
|
328
|
+
<style lang="scss">
|
|
335
329
|
.label-override {
|
|
336
330
|
svg {
|
|
337
331
|
@apply ml-2;
|
|
338
332
|
|
|
339
333
|
path {
|
|
340
|
-
fill: #
|
|
334
|
+
fill: #6e7084 !important;
|
|
341
335
|
}
|
|
342
336
|
}
|
|
343
337
|
@apply flex items-center;
|
|
@@ -346,7 +340,7 @@ watch(
|
|
|
346
340
|
.switch-wrapper {
|
|
347
341
|
svg {
|
|
348
342
|
path {
|
|
349
|
-
fill: #
|
|
343
|
+
fill: #6e7084 !important;
|
|
350
344
|
}
|
|
351
345
|
}
|
|
352
346
|
}
|