Skip to content

Commit 011bf00

Browse files
committed
WIP: polish filtering experience
1 parent 017f30e commit 011bf00

File tree

2 files changed

+56
-41
lines changed

2 files changed

+56
-41
lines changed

desktop-app/src/components/ResultGrid.svelte

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -238,18 +238,12 @@
238238
<p>{description}</p>
239239
</header>
240240

241-
{#if errorMessage}
242-
<InlineNotification
243-
kind="error"
244-
title={`Unable to load ${title.toLowerCase()}`}
245-
subtitle={errorMessage}
246-
/>
247-
{:else if loading && !hasLoaded}
241+
{#if loading && !hasLoaded}
248242
<div class="result-grid__loading">
249243
<Loading withOverlay={false} />
250244
</div>
251245
{:else}
252-
{#if charts}
246+
{#if charts && rows.length && !errorMessage}
253247
<div class="result-grid-charts" aria-label="Chart area" role="img">
254248
{@render charts(rows, columns)}
255249
</div>
@@ -272,7 +266,7 @@
272266
/>
273267
</div>
274268
<div class="result-grid__filters-row result-grid__filters-row--main">
275-
<div class="result-grid__filters-dates">
269+
<div class="result-grid__filters-fields">
276270
<DatePicker>
277271
<DatePickerInput
278272
id="result-grid-from-date"
@@ -285,6 +279,17 @@
285279
}}
286280
/>
287281
</DatePicker>
282+
{#if enableTimeInput}
283+
<TimePicker
284+
size="sm"
285+
labelText="From time"
286+
placeholder="HH:MM"
287+
bind:value={fromTimeInput}
288+
on:input={(event) => {
289+
fromTimeInput = readInputValue(event);
290+
}}
291+
/>
292+
{/if}
288293
<DatePicker>
289294
<DatePickerInput
290295
id="result-grid-to-date"
@@ -297,6 +302,17 @@
297302
}}
298303
/>
299304
</DatePicker>
305+
{#if enableTimeInput}
306+
<TimePicker
307+
size="sm"
308+
labelText="To time"
309+
placeholder="HH:MM"
310+
bind:value={toTimeInput}
311+
on:input={(event) => {
312+
toTimeInput = readInputValue(event);
313+
}}
314+
/>
315+
{/if}
300316
</div>
301317
<div class="result-grid__filters-actions">
302318
{#if loading && hasLoaded}
@@ -308,36 +324,19 @@
308324
<Button kind="secondary" size="small" type="reset">Clear</Button>
309325
</div>
310326
</div>
311-
{#if enableTimeInput}
312-
<div class="result-grid__filters-row">
313-
<TimePicker
314-
size="sm"
315-
labelText="From time"
316-
placeholder="HH:MM"
317-
bind:value={fromTimeInput}
318-
on:input={(event) => {
319-
fromTimeInput = readInputValue(event);
320-
}}
321-
/>
322-
<TimePicker
323-
size="sm"
324-
labelText="To time"
325-
placeholder="HH:MM"
326-
bind:value={toTimeInput}
327-
on:input={(event) => {
328-
toTimeInput = readInputValue(event);
329-
}}
330-
/>
331-
</div>
332-
{/if}
333327
</form>
334328

335-
{#if rows.length}
329+
{#if errorMessage}
330+
<InlineNotification
331+
class="result-grid__error"
332+
kind="error"
333+
title={`Unable to load ${title.toLowerCase()}`}
334+
subtitle={errorMessage}
335+
/>
336+
{:else}
336337
<WillowDark>
337338
<Grid data={rows} {columns} />
338339
</WillowDark>
339-
{:else}
340-
<p>No data available.</p>
341340
{/if}
342341
{/if}
343342
</section>

desktop-app/src/styles/result-grid.css

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,25 +35,36 @@
3535

3636
.result-grid__filters--with-time .result-grid__filters-row {
3737
justify-content: flex-start;
38-
align-items: flex-start;
3938
}
4039

4140
.result-grid__filters-row--main {
42-
align-items: flex-start;
41+
display: grid;
42+
grid-template-columns: 1fr auto;
43+
align-items: end;
44+
column-gap: 1.5rem;
4345
}
4446

45-
.result-grid__filters-dates {
46-
display: flex;
47-
flex-wrap: wrap;
48-
gap: 1rem 1.5rem;
47+
.result-grid__filters-fields {
48+
display: grid;
49+
grid-template-columns: repeat(2, minmax(9rem, 1fr));
50+
gap: 1rem 0.5rem;
51+
width: 100%;
52+
max-width: 24rem;
53+
align-items: end;
54+
}
55+
56+
.result-grid__filters--with-time .result-grid__filters-fields {
57+
grid-template-columns: repeat(4, minmax(8rem, 1fr));
58+
max-width: 36rem;
4959
}
5060

5161
.result-grid__filters-actions {
5262
display: flex;
5363
gap: 0.75rem;
5464
justify-content: flex-end;
5565
align-items: center;
56-
margin-left: auto;
66+
margin-left: 0;
67+
align-self: end;
5768
}
5869

5970
.result-grid__soft-loading {
@@ -64,6 +75,11 @@
6475
height: 1.25rem;
6576
}
6677

78+
.result-grid__error {
79+
margin: 0 auto;
80+
max-width: 48rem;
81+
}
82+
6783
.wx-willow-dark-theme {
6884
background: none !important;
6985
}

0 commit comments

Comments
 (0)