Skip to content

Commit 7177482

Browse files
authored
Fix level and channel checklist filter (#5)
1 parent ac99ea9 commit 7177482

File tree

10 files changed

+43
-34
lines changed

10 files changed

+43
-34
lines changed
Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,39 @@
11
<script setup lang="ts">
22
import ClickOutside from '@/services/ClickOutside';
33
import {setRelativeTo} from '@/services/Positioner';
4-
import {onUpdated, ref, watch} from 'vue';
4+
import {onMounted, onUpdated, ref, watch} from 'vue';
55
66
const active = ref<boolean>(false);
77
const dropdownRef = ref();
88
const clickOutside = new ClickOutside([], () => toggle(false));
9-
const props = defineProps<{ alignment: 'left' | 'right', split: boolean }>();
9+
const props = defineProps<{ alignment: 'left' | 'right', split: boolean, hideOnSelected?: boolean }>();
1010
1111
const toggle = (forceActive: boolean | null = null): void => {
12-
active.value = forceActive ?? !active.value;
12+
active.value = forceActive ?? !active.value;
1313
}
1414
1515
watch(active, () => setTimeout(() => clickOutside.enable(active.value), 1));
1616
17+
onMounted(() => {
18+
if (props.hideOnSelected !== true) {
19+
clickOutside.addElement(dropdownRef.value);
20+
}
21+
})
1722
onUpdated(() => {
18-
if (active.value === false) {
19-
return;
20-
}
21-
setRelativeTo(dropdownRef.value.parentElement, dropdownRef.value, props.alignment);
23+
if (active.value === false) {
24+
return;
25+
}
26+
setRelativeTo(dropdownRef.value.parentElement, dropdownRef.value, props.alignment);
2227
});
2328
defineExpose({toggle});
2429
</script>
2530

2631
<template>
27-
<div class="slv-btn-group" :class="{ 'btn-group': split, 'dropdown': !split }">
28-
<slot name="btn_left"></slot>
29-
<slot name="btn_right"></slot>
30-
<ul class="dropdown-menu" :class="{'d-block': active}" ref="dropdownRef">
31-
<slot name="dropdown"></slot>
32-
</ul>
33-
</div>
32+
<div class="slv-btn-group" :class="{ 'btn-group': split, 'dropdown': !split }">
33+
<slot name="btn_left"></slot>
34+
<slot name="btn_right"></slot>
35+
<ul class="dropdown-menu" :class="{'d-block': active}" ref="dropdownRef">
36+
<slot name="dropdown"></slot>
37+
</ul>
38+
</div>
3439
</template>

frontend/src/components/LogFile.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ watch(() => route.query.file, () => selectedFile.value = String(route.query.file
3030

3131
<template>
3232
<!-- LogFile -->
33-
<button-group ref="toggleRef" alignment="right" :split="file.can_download || file.can_delete" class="mb-1">
33+
<button-group ref="toggleRef" alignment="right" :split="file.can_download || file.can_delete" class="mb-1" :hide-on-selected="true">
3434
<template v-slot:btn_left>
3535
<router-link :to="'/log?file=' + encodeURI(file.identifier)"
3636
class="btn btn-file text-start btn-outline-primary w-100"

frontend/src/components/LogFolder.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const deleteFile = (identifier: string) => {
2929
<template>
3030
<!-- LogFolder -->
3131
<div class="folder-group mt-1" :aria-expanded="expanded">
32-
<button-group ref="toggleRef" alignment="right" :split="folder.can_download || folder.can_delete">
32+
<button-group ref="toggleRef" alignment="right" :split="folder.can_download || folder.can_delete" :hide-on-selected="true">
3333
<template v-slot:btn_left>
3434
<button type="button" class="btn btn-outline-primary text-start w-100" @click="$emit('expand')">
3535
<i class="slv-indicator bi bi-chevron-right me-2"></i>

frontend/src/services/ClickOutside.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ export default class ClickOutside {
1515
document.removeEventListener('click', this.onClick);
1616
}
1717

18+
public addElement(element: HTMLElement): void {
19+
this.elements.push(element);
20+
}
21+
1822
private onClick(event: MouseEvent): void {
1923
if (event.target instanceof HTMLElement === false || this.isOutside(event.target)) {
2024
this.onClickOutside();

frontend/src/stores/log_records.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export const useLogRecordStore = defineStore('log_records', () => {
2626
}
2727
const channelChoices = Object.keys(records.value.channels.choices);
2828
if (channels.length > 0 && channels.length !== channelChoices.length) {
29-
params.channels = levels.join(',');
29+
params.channels = channels.join(',');
3030
}
3131
if (offset > 0) {
3232
params.offset = offset.toString();

src/Entity/Output/LogRecordsOutput.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ public function jsonSerialize(): array
3131
return [
3232
'levels' => [
3333
'choices' => $this->levels,
34-
'selected' => array_keys($this->logQuery->levels ?? $this->levels)
34+
'selected' => $this->logQuery->levels ?? array_keys($this->levels)
3535
],
3636
'channels' => [
3737
'choices' => $this->channels,
38-
'selected' => array_keys($this->logQuery->channels ?? $this->channels)
38+
'selected' => $this->logQuery->channels ?? array_keys($this->channels)
3939
],
4040
'logs' => $this->logIndex->getLines(),
4141
'paginator' => $this->logIndex->getPaginator(),

src/Resources/public/.vite/manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
"assets/bootstrap-icons-bb42NSi8.woff2",
1313
"assets/bootstrap-icons-TqycWyKO.woff"
1414
],
15-
"file": "assets/main-5sgKIkti.js",
15+
"file": "assets/main-_Tsc7ogr.js",
1616
"isEntry": true,
1717
"src": "src/main.ts"
1818
},
1919
"style.css": {
20-
"file": "assets/style-d7plGNAV.css",
20+
"file": "assets/style-_EKrxENf.css",
2121
"src": "style.css"
2222
}
2323
}

0 commit comments

Comments
 (0)