|
1 | 1 | <template> |
2 | 2 | <div class="dropdown dropdown-end dropdown-hover"> |
3 | | - <label tabindex="0" class="btn btn-ghost btn-sm gap-0.5 px-2"> |
| 3 | + <label tabindex="0" class="btn btn-ghost btn-sm w-10 gap-0.5 px-2"> |
4 | 4 | <carbon:circle-solid class="w-2.5 text-red" v-if="streamConfig.stderr" /> |
5 | 5 | <carbon:circle-solid class="w-2.5 text-blue" v-if="streamConfig.stdout" /> |
6 | 6 | </label> |
|
28 | 28 | </li> |
29 | 29 | <li class="line"></li> |
30 | 30 | <li> |
31 | | - <a |
32 | | - @click=" |
33 | | - streamConfig.stdout = true; |
34 | | - streamConfig.stderr = true; |
35 | | - " |
36 | | - > |
37 | | - <div class="flex size-4 gap-0.5"> |
38 | | - <template v-if="streamConfig.stderr && streamConfig.stdout"> |
39 | | - <carbon:circle-solid class="w-2 text-red" /> |
40 | | - <carbon:circle-solid class="w-2 text-blue" /> |
41 | | - </template> |
42 | | - </div> |
43 | | - {{ $t("toolbar.show-all") }} |
44 | | - </a> |
| 31 | + <details> |
| 32 | + <summary> |
| 33 | + <div class="flex w-4"> |
| 34 | + <carbon:circle-solid class="w-2.5 text-red" v-if="streamConfig.stderr" /> |
| 35 | + <carbon:circle-solid class="w-2.5 text-blue" v-if="streamConfig.stdout" /> |
| 36 | + </div> |
| 37 | + Streams |
| 38 | + </summary> |
| 39 | + <ul class="menu"> |
| 40 | + <li> |
| 41 | + <a |
| 42 | + @click=" |
| 43 | + streamConfig.stdout = true; |
| 44 | + streamConfig.stderr = true; |
| 45 | + " |
| 46 | + > |
| 47 | + <mdi:check class="w-4" v-if="streamConfig.stdout == true && streamConfig.stderr == true" /> |
| 48 | + <div v-else class="w-4"></div> |
| 49 | + {{ $t("toolbar.show-all") }} |
| 50 | + </a> |
| 51 | + </li> |
| 52 | + <li> |
| 53 | + <a |
| 54 | + @click=" |
| 55 | + streamConfig.stdout = true; |
| 56 | + streamConfig.stderr = false; |
| 57 | + " |
| 58 | + > |
| 59 | + <mdi:check class="w-4" v-if="streamConfig.stdout == true && streamConfig.stderr == false" /> |
| 60 | + <div v-else class="w-4"></div> |
| 61 | + {{ $t("toolbar.show", { std: "STDOUT" }) }} |
| 62 | + </a> |
| 63 | + </li> |
| 64 | + <li> |
| 65 | + <a |
| 66 | + @click=" |
| 67 | + streamConfig.stdout = false; |
| 68 | + streamConfig.stderr = true; |
| 69 | + " |
| 70 | + > |
| 71 | + <mdi:check class="w-4" v-if="streamConfig.stdout == false && streamConfig.stderr == true" /> |
| 72 | + <div v-else class="w-4"></div> |
| 73 | + {{ $t("toolbar.show", { std: "STDERR" }) }} |
| 74 | + </a> |
| 75 | + </li> |
| 76 | + </ul> |
| 77 | + </details> |
45 | 78 | </li> |
46 | 79 | <li> |
47 | | - <a |
48 | | - @click=" |
49 | | - streamConfig.stdout = true; |
50 | | - streamConfig.stderr = false; |
51 | | - " |
52 | | - > |
53 | | - <div class="flex size-4 flex-col gap-1"> |
54 | | - <carbon:circle-solid class="w-2 text-blue" v-if="!streamConfig.stderr && streamConfig.stdout" /> |
55 | | - </div> |
56 | | - {{ $t("toolbar.show", { std: "STDOUT" }) }} |
57 | | - </a> |
58 | | - </li> |
59 | | - <li> |
60 | | - <a |
61 | | - @click=" |
62 | | - streamConfig.stdout = false; |
63 | | - streamConfig.stderr = true; |
64 | | - " |
65 | | - > |
66 | | - <div class="flex size-4 flex-col gap-1"> |
67 | | - <carbon:circle-solid class="w-2 text-red" v-if="streamConfig.stderr && !streamConfig.stdout" /> |
68 | | - </div> |
69 | | - {{ $t("toolbar.show", { std: "STDERR" }) }} |
70 | | - </a> |
| 80 | + <details> |
| 81 | + <summary> |
| 82 | + <mdi:gauge /> |
| 83 | + Levels |
| 84 | + </summary> |
| 85 | + <ul class="menu"> |
| 86 | + <li v-for="level in allLevels"> |
| 87 | + <a class="capitalize" @click="levels.has(level) ? levels.delete(level) : levels.add(level)"> |
| 88 | + <mdi:check class="w-4" v-if="levels.has(level)" /> |
| 89 | + <div v-else class="w-4"></div> |
| 90 | + |
| 91 | + <div class="flex"> |
| 92 | + <div class="badge" :data-level="level">{{ level }}</div> |
| 93 | + </div> |
| 94 | + </a> |
| 95 | + </li> |
| 96 | + </ul> |
| 97 | + </details> |
71 | 98 | </li> |
72 | 99 |
|
73 | 100 | <!-- Container Actions (Enabled via config) --> |
|
108 | 135 |
|
109 | 136 | <script lang="ts" setup> |
110 | 137 | import { Container } from "@/models/Container"; |
| 138 | +import { allLevels } from "@/composable/logContext"; |
111 | 139 | import LogAnalytics from "../LogViewer/LogAnalytics.vue"; |
112 | 140 |
|
113 | 141 | const { showSearch } = useSearchFilter(); |
114 | 142 | const { enableActions } = config; |
115 | | -const { streamConfig, hasComplexLogs } = useLoggingContext(); |
| 143 | +const { streamConfig, hasComplexLogs, levels } = useLoggingContext(); |
116 | 144 | const showDrawer = useDrawer(); |
117 | 145 |
|
118 | 146 | const { container } = defineProps<{ container: Container }>(); |
@@ -151,4 +179,11 @@ li.line { |
151 | 179 | a { |
152 | 180 | @apply whitespace-nowrap; |
153 | 181 | } |
| 182 | +
|
| 183 | +.menu li ul { |
| 184 | + margin-inline-start: 0; |
| 185 | + &:before { |
| 186 | + display: none; |
| 187 | + } |
| 188 | +} |
154 | 189 | </style> |
0 commit comments