|
5 | 5 |
|
6 | 6 | <style> |
7 | 7 | .form-label-inline { |
8 | | - position: relative; |
| 8 | + position: relative; |
9 | 9 | } |
10 | 10 |
|
11 | | - .form-label-inline > label { |
12 | | - position: absolute; |
13 | | - top: .25rem; |
14 | | - left: .75rem; |
15 | | - z-index: 2; |
16 | | - color: rgba(var(--bs-body-color-rgb), 0.65); |
17 | | - font-weight: 400; |
18 | | - line-height: var(--bs-body-line-height); |
19 | | - overflow: hidden; |
20 | | - text-align: start; |
21 | | - text-overflow: ellipsis; |
22 | | - white-space: nowrap; |
23 | | - pointer-events: none; |
24 | | - border: var(--bs-border-width) solid transparent; |
25 | | - transform-origin: 0 0; |
26 | | - transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; |
27 | | - padding: 0 .25em; |
28 | | - } |
| 11 | + .form-label-inline > label { |
| 12 | + position: absolute; |
| 13 | + top: .25rem; |
| 14 | + left: .75rem; |
| 15 | + z-index: 2; |
| 16 | + color: rgba(var(--bs-body-color-rgb), 0.65); |
| 17 | + font-weight: 400; |
| 18 | + line-height: var(--bs-body-line-height); |
| 19 | + overflow: hidden; |
| 20 | + text-align: start; |
| 21 | + text-overflow: ellipsis; |
| 22 | + white-space: nowrap; |
| 23 | + pointer-events: none; |
| 24 | + border: var(--bs-border-width) solid transparent; |
| 25 | + transform-origin: 0 0; |
| 26 | + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; |
| 27 | + padding: 0 .25em; |
| 28 | + } |
29 | 29 |
|
30 | | - .form-label-inline > .form-control::placeholder, |
31 | | - .form-label-inline > .form-control-plaintext::placeholder { |
32 | | - color: transparent; |
33 | | - } |
| 30 | + .form-label-inline > .form-control::placeholder, |
| 31 | + .form-label-inline > .form-control-plaintext::placeholder { |
| 32 | + color: transparent; |
| 33 | + } |
34 | 34 |
|
35 | | - .form-label-inline > .form-control:focus ~ label, |
36 | | - .form-label-inline > .form-control:not(:placeholder-shown) ~ label, |
37 | | - .form-label-inline > .form-control-plaintext ~ label, |
38 | | - .form-label-inline > .form-select ~ label { |
39 | | - color: rgba(var(--bs-body-color-rgb), 0.65); |
40 | | - transform: scale(0.85) translateY(-1.2rem) translateX(0.15rem); |
41 | | - background-color: var(--bs-body-bg); |
42 | | - } |
| 35 | + .form-label-inline > .form-control:focus ~ label, |
| 36 | + .form-label-inline > .form-control:not(:placeholder-shown) ~ label, |
| 37 | + .form-label-inline > .form-control-plaintext ~ label, |
| 38 | + .form-label-inline > .form-select ~ label { |
| 39 | + color: rgba(var(--bs-body-color-rgb), 0.65); |
| 40 | + transform: scale(0.85) translateY(-1.1rem) translateX(0.15rem); |
| 41 | + background-color: var(--bs-body-bg); |
| 42 | + } |
43 | 43 |
|
44 | | - .form-label-inline > .form-control-plaintext ~ label { |
45 | | - border-width: var(--bs-border-width) 0; |
46 | | - } |
| 44 | + .form-label-inline > .form-control-plaintext ~ label { |
| 45 | + border-width: var(--bs-border-width) 0; |
| 46 | + } |
47 | 47 | </style> |
48 | 48 |
|
| 49 | +<script> |
| 50 | + function submitForm(element) { |
| 51 | + if (element.value != element.defaultValue) { |
| 52 | + element.defaultValue = element.value; |
| 53 | + element.form.submit(); |
| 54 | + } |
| 55 | + } |
| 56 | +</script> |
| 57 | + |
49 | 58 | <div class="card"> |
50 | 59 | <form id="log-search-form" |
51 | | - name="log-search-form" |
52 | | - role="form" |
53 | | - method="get"> |
| 60 | + name="log-search-form" |
| 61 | + role="form" |
| 62 | + method="get"> |
54 | 63 |
|
55 | 64 | <div class="card-header d-flex align-items-center"> |
56 | 65 | <h5 class="me-auto"> |
57 | 66 | <i class="bi bi-files"></i> Logs |
58 | 67 | </h5> |
59 | | - @if (Sources != null && Sources.Count > 1) |
60 | | - { |
61 | | - <div class="form-label-inline mx-1"> |
62 | | - <select id="DataSource" |
63 | | - name="DataSource" |
64 | | - class="form-select" |
65 | | - autocomplete="off" |
66 | | - onchange="this.form.submit()" |
67 | | - title="Data Source for Logs"> |
68 | | - @foreach (var source in Sources) |
69 | | - { |
70 | | - <option @key="source" |
71 | | - value="@source" |
72 | | - selected="@(Request.DataSource == source)"> |
73 | | - @source |
74 | | - </option> |
75 | | - } |
76 | | - </select> |
77 | | - <label for="DataSource">Data Source</label> |
78 | | - </div> |
79 | | - } |
80 | 68 |
|
81 | | - <div class="form-label-inline mx-1"> |
| 69 | + <div class="form-label-inline m-1"> |
82 | 70 | <input type="text" |
83 | | - id="SourceContext" |
84 | | - name="SourceContext" |
85 | | - class="form-control" |
86 | | - placeholder="Source Context" |
87 | | - autocomplete="off" |
88 | | - spellcheck="false" |
89 | | - onblur="this.form.submit()" |
90 | | - value="@Request.SourceContext"> |
| 71 | + id="SourceContext" |
| 72 | + name="SourceContext" |
| 73 | + class="form-control" |
| 74 | + placeholder="Source Context" |
| 75 | + autocomplete="off" |
| 76 | + spellcheck="false" |
| 77 | + onblur="submitForm(this)" |
| 78 | + value="@Request.SourceContext"> |
91 | 79 | <label for="SourceContext">Source Context</label> |
92 | 80 | </div> |
93 | | - <div class="form-label-inline mx-1"> |
| 81 | + <div class="form-label-inline m-1"> |
94 | 82 | <input type="text" |
95 | | - id="TraceId" |
96 | | - name="TraceId" |
97 | | - class="form-control" |
98 | | - placeholder="Trace Id" |
99 | | - autocomplete="off" |
100 | | - spellcheck="false" |
101 | | - onblur="this.form.submit()" |
102 | | - value="@Request.TraceId"> |
| 83 | + id="TraceId" |
| 84 | + name="TraceId" |
| 85 | + class="form-control" |
| 86 | + placeholder="Trace Id" |
| 87 | + autocomplete="off" |
| 88 | + spellcheck="false" |
| 89 | + onblur="submitForm(this)" |
| 90 | + value="@Request.TraceId"> |
103 | 91 | <label for="TraceId">Trace Id</label> |
104 | 92 | </div> |
105 | | - <div class="form-label-inline mx-1"> |
| 93 | + <div class="form-label-inline m-1"> |
106 | 94 | <select id="Level" |
107 | | - name="Level" |
108 | | - class="form-select" |
109 | | - autocomplete="off" |
110 | | - onchange="this.form.submit()" |
111 | | - title="Filter by log level"> |
| 95 | + name="Level" |
| 96 | + class="form-select" |
| 97 | + autocomplete="off" |
| 98 | + onchange="submitForm(this)" |
| 99 | + title="Filter by log level"> |
112 | 100 | @foreach (var level in Levels) |
113 | 101 | { |
114 | 102 | <option @key="level.Key" |
115 | | - value="@level.Key" |
116 | | - selected="@(Request.Level == level.Key)"> |
| 103 | + value="@level.Key" |
| 104 | + selected="@(Request.Level == level.Key)"> |
117 | 105 | @level.Value |
118 | 106 | </option> |
119 | 107 | } |
120 | 108 | </select> |
121 | 109 | <label for="Level">Level</label> |
122 | 110 | </div> |
123 | | - <div class="form-label-inline mx-1"> |
| 111 | + <div class="form-label-inline m-1"> |
124 | 112 | <input type="date" |
125 | | - id="Date" |
126 | | - name="Date" |
127 | | - class="form-control" |
128 | | - placeholder="Date" |
129 | | - autocomplete="off" |
130 | | - onblur="this.form.submit()" |
131 | | - value="@Request.Date?.ToString("yyyy-MM-dd")" /> |
| 113 | + id="Date" |
| 114 | + name="Date" |
| 115 | + class="form-control" |
| 116 | + placeholder="Date" |
| 117 | + autocomplete="off" |
| 118 | + onblur="submitForm(this)" |
| 119 | + value="@Request.Date?.ToString("yyyy-MM-dd")" /> |
132 | 120 | <label for="Date">Date</label> |
133 | 121 | </div> |
| 122 | + |
| 123 | + @if (Sources != null && Sources.Count > 1) |
| 124 | + { |
| 125 | + <div class="form-label-inline m-1"> |
| 126 | + <select id="DataSource" |
| 127 | + name="DataSource" |
| 128 | + class="form-select" |
| 129 | + autocomplete="off" |
| 130 | + onchange="submitForm(this)" |
| 131 | + title="Data Source for Logs"> |
| 132 | + @foreach (var source in Sources) |
| 133 | + { |
| 134 | + <option @key="source" |
| 135 | + value="@source" |
| 136 | + selected="@(Request.DataSource == source)"> |
| 137 | + @source |
| 138 | + </option> |
| 139 | + } |
| 140 | + </select> |
| 141 | + <label for="DataSource">Data Source</label> |
| 142 | + </div> |
| 143 | + } |
| 144 | + |
134 | 145 | <button id="log-search-button" |
135 | | - class="btn btn-outline-secondary mx-1" |
136 | | - type="submit" |
137 | | - title="Search"> |
| 146 | + class="btn btn-outline-secondary m-1" |
| 147 | + type="submit" |
| 148 | + title="Search"> |
138 | 149 | <i class="bi bi-search"></i> |
139 | 150 | </button> |
140 | 151 | </div> |
|
155 | 166 | { |
156 | 167 | <li class="page-item"> |
157 | 168 | <form id="log-page-first-form" |
158 | | - name="log-page-first-form" |
159 | | - role="form" |
160 | | - method="get"> |
| 169 | + name="log-page-first-form" |
| 170 | + role="form" |
| 171 | + method="get"> |
161 | 172 |
|
162 | 173 | <InputHidden Name="DataSource" Value="@Request.DataSource" /> |
163 | 174 | <InputHidden Name="SourceContext" Value="@Request.SourceContext" /> |
|
167 | 178 | <InputHidden Name="PageSize" Value="@Request.PageSize?.ToString()" /> |
168 | 179 |
|
169 | 180 | <button class="page-link" |
170 | | - id="log-page-first-button" |
171 | | - type="submit" |
172 | | - title="First Page"> |
| 181 | + id="log-page-first-button" |
| 182 | + type="submit" |
| 183 | + title="First Page"> |
173 | 184 | First Page |
174 | 185 | </button> |
175 | 186 | </form> |
|
187 | 198 | { |
188 | 199 | <li class="page-item"> |
189 | 200 | <form id="log-page-next-form" |
190 | | - name="log-page-next-form" |
191 | | - role="form" |
192 | | - method="get"> |
| 201 | + name="log-page-next-form" |
| 202 | + role="form" |
| 203 | + method="get"> |
193 | 204 |
|
194 | 205 | <InputHidden Name="DataSource" Value="@Request.DataSource" /> |
195 | 206 | <InputHidden Name="SourceContext" Value="@Request.SourceContext" /> |
|
198 | 209 | <InputHidden Name="Date" Value="@Request.Date?.ToString("yyyy-MM-dd")" /> |
199 | 210 | <InputHidden Name="PageSize" Value="@Request.PageSize?.ToString()" /> |
200 | 211 |
|
201 | | - <InputHidden Name="ContinuationToken" Value="@Result.ContinuationToken" /> |
| 212 | + <InputHidden Name="ContinuationToken" Value="@Result?.ContinuationToken" /> |
202 | 213 | <InputHidden Name="Page" Value="@NextPageNumber()?.ToString()" /> |
203 | 214 |
|
204 | 215 | <button class="page-link" |
205 | | - id="log-page-next-button" |
206 | | - type="submit" |
207 | | - title="Next Page"> |
| 216 | + id="log-page-next-button" |
| 217 | + type="submit" |
| 218 | + title="Next Page"> |
208 | 219 | Next Page |
209 | 220 | </button> |
210 | 221 | </form> |
|
223 | 234 | </div> |
224 | 235 | </div> |
225 | 236 |
|
| 237 | + |
226 | 238 | @code { |
227 | 239 | [Parameter, EditorRequired] |
228 | 240 | public required LogEventRequest Request { get; set; } |
|
0 commit comments