1
0
Fork 0
mirror of synced 2024-09-15 08:47:37 +12:00

Replace usages of date range picker with 2 date pickers

This commit is contained in:
Andrew Kingston 2024-04-10 18:46:41 +01:00
parent 15e9936d9d
commit 0a4dfef8cf
4 changed files with 48 additions and 36 deletions

View file

@ -124,7 +124,7 @@ export const parseDate = (value, { timeOnly, dateOnly } = {}) => {
} }
// Certain string values need transformed // Certain string values need transformed
if (typeof value !== "string") { if (typeof value === "string") {
if (timeOnly || !isNaN(new Date(`0-${value}`))) { if (timeOnly || !isNaN(new Date(`0-${value}`))) {
value = `0-${value}` value = `0-${value}`
} }

View file

@ -31,7 +31,8 @@
let backupData = null let backupData = null
let pageInfo = createPaginationStore() let pageInfo = createPaginationStore()
let filterOpt = null let filterOpt = null
let date = null let startDate = null
let endDate = null
let filters = [ let filters = [
{ {
label: "Manual backup", label: "Manual backup",
@ -52,9 +53,9 @@
] ]
$: page = $pageInfo.page $: page = $pageInfo.page
$: fetchBackups(filterOpt, page, date) $: fetchBackups(filterOpt, page, startDate, endDate)
const schema = { let schema = {
type: { type: {
displayName: "Type", displayName: "Type",
width: "auto", width: "auto",
@ -99,13 +100,13 @@
}) })
} }
async function fetchBackups(filters, page, date) { async function fetchBackups(filters, page, startDate, endDate) {
const response = await backups.searchBackups({ const response = await backups.searchBackups({
appId: $appStore.appId, appId: $appStore.appId,
...filters, ...filters,
page, page,
startDate: date ? dayjs(date).startOf("day") : null, startDate: startDate ? dayjs(startDate).startOf("day") : null,
endDate: date ? dayjs(date).endOf("day") : null, endDate: endDate ? dayjs(endDate).endOf("day") : null,
}) })
pageInfo.fetched(response.hasNextPage, response.nextPage) pageInfo.fetched(response.hasNextPage, response.nextPage)
@ -165,7 +166,7 @@
} }
onMount(async () => { onMount(async () => {
await fetchBackups(filterOpt, page, date) await fetchBackups(filterOpt, page, startDate, endDate)
loading = false loading = false
}) })
</script> </script>
@ -207,7 +208,7 @@
View plans View plans
</Button> </Button>
</div> </div>
{:else if !backupData?.length && !loading && !filterOpt && !date} {:else if !backupData?.length && !loading && !filterOpt && !startDate}
<div class="center"> <div class="center">
<Layout noPadding gap="S" justifyItems="center"> <Layout noPadding gap="S" justifyItems="center">
<img height="130px" src={BackupsDefault} alt="BackupsDefault" /> <img height="130px" src={BackupsDefault} alt="BackupsDefault" />
@ -237,12 +238,20 @@
/> />
</div> </div>
<DatePicker <DatePicker
value={date} value={startDate}
label="Date" label="From"
on:change={e => {
date = e.detail
}}
enableTime={false} enableTime={false}
on:change={e => {
startDate = e.detail
}}
/>
<DatePicker
value={endDate}
label="Until"
enableTime={false}
on:change={e => {
endDate = e.detail
}}
/> />
</div> </div>
<div> <div>

View file

@ -27,6 +27,7 @@
import TimeRenderer from "./_components/TimeRenderer.svelte" import TimeRenderer from "./_components/TimeRenderer.svelte"
import AppColumnRenderer from "./_components/AppColumnRenderer.svelte" import AppColumnRenderer from "./_components/AppColumnRenderer.svelte"
import { cloneDeep } from "lodash" import { cloneDeep } from "lodash"
import dayjs from "dayjs"
const schema = { const schema = {
date: { width: "0.8fr" }, date: { width: "0.8fr" },
@ -69,9 +70,8 @@
let sidePanelVisible = false let sidePanelVisible = false
let wideSidePanel = false let wideSidePanel = false
let timer let timer
let startDate = new Date() let endDate = dayjs()
startDate.setDate(startDate.getDate() - 30) let startDate = endDate.subtract(30, "days")
let endDate = new Date()
$: fetchUsers(userPage, userSearchTerm) $: fetchUsers(userPage, userSearchTerm)
$: fetchLogs({ $: fetchLogs({
@ -155,8 +155,8 @@
logsPageInfo.loading() logsPageInfo.loading()
await auditLogs.search({ await auditLogs.search({
bookmark: logsPage, bookmark: logsPage,
startDate, startDate: startDate ? dayjs(startDate).startOf("day") : null,
endDate, endDate: endDate ? dayjs(endDate).endOf("day") : null,
fullSearch: logSearchTerm, fullSearch: logSearchTerm,
userIds: selectedUsers, userIds: selectedUsers,
appIds: selectedApps, appIds: selectedApps,
@ -303,20 +303,19 @@
<div class="date-picker"> <div class="date-picker">
<DatePicker <DatePicker
value={[startDate, endDate]} value={startDate}
placeholder="Choose date range" label="From"
range={true} enableTime={false}
on:change={e => { on:change={e => {
if (e.detail[0]?.length === 1) { startDate = e.detail
startDate = e.detail[0][0].toISOString() }}
endDate = "" />
} else if (e.detail[0]?.length > 1) { <DatePicker
startDate = e.detail[0][0].toISOString() value={endDate}
endDate = e.detail[0][1].toISOString() label="Until"
} else { enableTime={false}
startDate = "" on:change={e => {
endDate = "" endDate = e.detail
}
}} }}
/> />
</div> </div>
@ -488,7 +487,7 @@
flex-direction: row; flex-direction: row;
gap: var(--spacing-l); gap: var(--spacing-l);
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; align-items: flex-end;
} }
.side-panel-icons { .side-panel-icons {
@ -505,6 +504,13 @@
.date-picker { .date-picker {
flex-basis: calc(70% - 32px); flex-basis: calc(70% - 32px);
min-width: 100px; min-width: 100px;
display: flex;
flex-direction: row;
gap: var(--spacing-l);
}
.date-picker :global(> *) {
flex: 1 1 auto;
width: 0;
} }
.freeSearch { .freeSearch {

View file

@ -1,7 +1,4 @@
export const buildBackupsEndpoints = API => ({ export const buildBackupsEndpoints = API => ({
/**
* Gets a list of users in the current tenant.
*/
searchBackups: async ({ appId, trigger, type, page, startDate, endDate }) => { searchBackups: async ({ appId, trigger, type, page, startDate, endDate }) => {
const opts = {} const opts = {}
if (page) { if (page) {