@necrolab/dashboard 0.4.31 → 0.4.33
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/package.json +1 -1
- package/src/components/Editors/Profile/CreateProfile.vue +1 -1
- package/src/components/Filter/Filter.vue +15 -3
- package/src/components/Tasks/Task.vue +21 -16
- package/src/components/ui/controls/atomic/Dropdown.vue +6 -1
- package/src/stores/ui.js +4 -1
- package/src/views/FilterBuilder.vue +5 -1
package/package.json
CHANGED
|
@@ -288,11 +288,23 @@ props.filterBuilder.onUpdate(() => {
|
|
|
288
288
|
|
|
289
289
|
<style scoped>
|
|
290
290
|
.filter-card {
|
|
291
|
-
@apply bg-dark-500 border
|
|
291
|
+
@apply bg-dark-500 border-dark-550 relative;
|
|
292
|
+
border: 1px solid rgba(74, 74, 97, 0.3);
|
|
293
|
+
margin-bottom: 8px;
|
|
294
|
+
transition: all 0.15s ease-out;
|
|
292
295
|
}
|
|
293
296
|
|
|
294
|
-
.filter-card:not(
|
|
295
|
-
border-
|
|
297
|
+
.filter-card:hover:not(.expanded-filter) {
|
|
298
|
+
border-color: rgba(74, 74, 97, 0.6);
|
|
299
|
+
background-color: rgba(45, 47, 74, 0.8);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.expanded-filter:hover {
|
|
303
|
+
border-color: rgba(74, 74, 97, 0.8);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.filter-card + .filter-card {
|
|
307
|
+
border-top: 1px solid rgba(74, 74, 97, 0.2);
|
|
296
308
|
}
|
|
297
309
|
|
|
298
310
|
.filter-type-badge {
|
|
@@ -34,7 +34,8 @@
|
|
|
34
34
|
<span
|
|
35
35
|
class="ml-1 font-bold"
|
|
36
36
|
:class="{
|
|
37
|
-
'text-red-400':
|
|
37
|
+
'text-red-400':
|
|
38
|
+
props.task._timeLeftString === '00:00' || props.task._timeLeftString === 'No Cartholds'
|
|
38
39
|
}"
|
|
39
40
|
>
|
|
40
41
|
{{ props.task._timeLeftString !== "00:00" ? props.task._timeLeftString : "Expired" }}
|
|
@@ -46,11 +47,13 @@
|
|
|
46
47
|
<!-- Status circle -->
|
|
47
48
|
<div
|
|
48
49
|
class="status-indicator mx-1 md:ml-3 ml-2"
|
|
49
|
-
:class="
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
:class="
|
|
51
|
+
colorToClass(
|
|
52
|
+
props.task.active || props.task.status.toLowerCase() === 'idle'
|
|
53
|
+
? props.task.statusColor
|
|
54
|
+
: 'red'
|
|
55
|
+
)
|
|
56
|
+
"
|
|
54
57
|
></div>
|
|
55
58
|
<!-- Actual status -->
|
|
56
59
|
<span class="font-bold text-sm p-1 md:mr-3 mr-2 truncate uppercase">{{
|
|
@@ -68,12 +71,12 @@
|
|
|
68
71
|
<PlayIcon />
|
|
69
72
|
</button>
|
|
70
73
|
</li>
|
|
71
|
-
<li v-if="task.status?.toLowerCase()
|
|
74
|
+
<li v-if="task.status?.toLowerCase() == 'waiting' && props.task._timeLeftString !== '00:00'">
|
|
72
75
|
<button @click="ui.continueTask(task.taskId, 'autocheckout')">
|
|
73
76
|
<BagWhiteIcon />
|
|
74
77
|
</button>
|
|
75
78
|
</li>
|
|
76
|
-
<li v-if="task.status?.toLowerCase()
|
|
79
|
+
<li v-if="task.status?.toLowerCase() == 'waiting'">
|
|
77
80
|
<button @click="ui.continueTask(task.taskId, 'change_reservation')">
|
|
78
81
|
<EditIcon />
|
|
79
82
|
</button>
|
|
@@ -83,7 +86,10 @@
|
|
|
83
86
|
<TrashIcon />
|
|
84
87
|
</button>
|
|
85
88
|
</li>
|
|
86
|
-
<li
|
|
89
|
+
<li
|
|
90
|
+
class="text-xl -mt-2"
|
|
91
|
+
@click.right.prevent="window.setTimeout(() => ui.setOpenContextMenu(task.taskId), 10)"
|
|
92
|
+
>
|
|
87
93
|
<button class="mt-1" @click="props.task.isExpanded = !props.task.isExpanded">
|
|
88
94
|
<span>{{ props.task.isExpanded ? "-" : "+" }}</span>
|
|
89
95
|
</button>
|
|
@@ -100,7 +106,6 @@
|
|
|
100
106
|
class="col-span-12 flex flex-wrap gap-x-4 gap-y-4 lg:gap-x-10 pt-8 pb-2 xl:justify-around will-change-auto"
|
|
101
107
|
v-if="props.task.isExpanded"
|
|
102
108
|
>
|
|
103
|
-
|
|
104
109
|
<!-- Details -->
|
|
105
110
|
<TaskLabel
|
|
106
111
|
class="md:hidden"
|
|
@@ -180,15 +185,15 @@ h4 {
|
|
|
180
185
|
|
|
181
186
|
.task-buttons {
|
|
182
187
|
@apply flex mx-auto gap-x-2;
|
|
183
|
-
|
|
188
|
+
|
|
184
189
|
button {
|
|
185
190
|
@apply p-1 rounded transition-colors hover:bg-dark-500;
|
|
186
191
|
}
|
|
187
|
-
|
|
192
|
+
|
|
188
193
|
svg {
|
|
189
194
|
@apply w-4 h-4;
|
|
190
195
|
}
|
|
191
|
-
|
|
196
|
+
|
|
192
197
|
img {
|
|
193
198
|
@apply w-4 h-4;
|
|
194
199
|
}
|
|
@@ -198,15 +203,15 @@ h4 {
|
|
|
198
203
|
h4 {
|
|
199
204
|
font-size: 10px;
|
|
200
205
|
}
|
|
201
|
-
|
|
206
|
+
|
|
202
207
|
.task-buttons {
|
|
203
208
|
@apply gap-x-1;
|
|
204
209
|
}
|
|
205
|
-
|
|
210
|
+
|
|
206
211
|
.task-id {
|
|
207
212
|
font-size: 6px;
|
|
208
213
|
}
|
|
209
|
-
|
|
214
|
+
|
|
210
215
|
.task-id-alt {
|
|
211
216
|
font-size: 7px;
|
|
212
217
|
}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
</template>
|
|
31
31
|
|
|
32
32
|
<script setup>
|
|
33
|
-
import { ref, computed } from "vue";
|
|
33
|
+
import { ref, computed, watch } from "vue";
|
|
34
34
|
import { DownIcon, CheckmarkIcon } from "@/components/icons";
|
|
35
35
|
import { useUIStore } from "@/stores/ui";
|
|
36
36
|
const ui = useUIStore();
|
|
@@ -47,6 +47,11 @@ const props = defineProps({
|
|
|
47
47
|
});
|
|
48
48
|
|
|
49
49
|
const currentValue = ref(props.value);
|
|
50
|
+
|
|
51
|
+
// Watch for changes to the value prop and update currentValue
|
|
52
|
+
watch(() => props.value, (newValue) => {
|
|
53
|
+
currentValue.value = newValue;
|
|
54
|
+
});
|
|
50
55
|
const id = Math.random();
|
|
51
56
|
const opened = computed(() => ui.currentDropdown === id);
|
|
52
57
|
|
package/src/stores/ui.js
CHANGED
|
@@ -236,7 +236,10 @@ export const useUIStore = defineStore("ui", () => {
|
|
|
236
236
|
queueStats.value.sleeping = relevantTasks.filter((t) =>
|
|
237
237
|
sleepingStatuses.includes(t.status.toLowerCase())
|
|
238
238
|
).length;
|
|
239
|
-
const positions = relevantTasks
|
|
239
|
+
const positions = relevantTasks
|
|
240
|
+
.map((t) => t.queuePosition)
|
|
241
|
+
.filter((e) => !isNaN(e))
|
|
242
|
+
.filter(Boolean);
|
|
240
243
|
queueStats.value.nextQueuePasses = positions.sort((a, b) => a - b);
|
|
241
244
|
};
|
|
242
245
|
|
|
@@ -356,7 +356,10 @@ const hasWildcardFilter = computed(() => {
|
|
|
356
356
|
|
|
357
357
|
const addWildcardFilter = () => {
|
|
358
358
|
if (!hasWildcardFilter.value) {
|
|
359
|
+
// Close any expanded filter first
|
|
360
|
+
filterBuilder.value.setExpandedFilter(null);
|
|
359
361
|
filterBuilder.value.addFilter({ buyAny: true, eventId: filterBuilder.value.currentEventId });
|
|
362
|
+
filterBuilder.value.updateCss();
|
|
360
363
|
}
|
|
361
364
|
};
|
|
362
365
|
|
|
@@ -636,7 +639,8 @@ watch(renderSeats, async () => {
|
|
|
636
639
|
|
|
637
640
|
/* Enhanced table and filter styling */
|
|
638
641
|
.filters-container {
|
|
639
|
-
@apply space-y-
|
|
642
|
+
@apply space-y-0;
|
|
643
|
+
padding: 4px;
|
|
640
644
|
}
|
|
641
645
|
|
|
642
646
|
/* Dragging states for better UX */
|