Browse Source

Refactor how extending data provider queries works to support multiple extensions per key

master
Andrew Kingston 5 years ago
parent
commit
33e5e198b7
  1. 17
      packages/client/src/components/app/DataProvider.svelte
  2. 38
      packages/client/src/components/app/DateRangePicker.svelte

17
packages/client/src/components/app/DataProvider.svelte

@ -275,11 +275,10 @@
allRows = res.rows allRows = res.rows
} }
const addQueryExtension = (key, operator, field, value) => { const addQueryExtension = (key, extension) => {
if (!key || !operator || !field) { if (!key || !extension) {
return return
} }
const extension = { operator, field, value }
queryExtensions = { ...queryExtensions, [key]: extension } queryExtensions = { ...queryExtensions, [key]: extension }
} }
@ -295,11 +294,13 @@
const extendQuery = (defaultQuery, extensions) => { const extendQuery = (defaultQuery, extensions) => {
const extensionValues = Object.values(extensions || {}) const extensionValues = Object.values(extensions || {})
let extendedQuery = { ...defaultQuery } let extendedQuery = { ...defaultQuery }
extensionValues.forEach(({ operator, field, value }) => { extensionValues.forEach(extension => {
extendedQuery[operator] = { Object.entries(extension || {}).forEach(([operator, fields]) => {
...extendedQuery[operator], extendedQuery[operator] = {
[field]: value, ...extendedQuery[operator],
} ...fields,
}
})
}) })
if (JSON.stringify(query) !== JSON.stringify(extendedQuery)) { if (JSON.stringify(query) !== JSON.stringify(extendedQuery)) {

38
packages/client/src/components/app/DateRangePicker.svelte

@ -13,15 +13,6 @@
const component = getContext("component") const component = getContext("component")
const { styleable, ActionTypes, getAction } = getContext("sdk") const { styleable, ActionTypes, getAction } = getContext("sdk")
$: addExtension = getAction(
dataProvider?.id,
ActionTypes.AddDataProviderQueryExtension
)
$: removeExtension = getAction(
dataProvider?.id,
ActionTypes.RemoveDataProviderQueryExtension
)
const options = [ const options = [
"Last 1 day", "Last 1 day",
"Last 7 days", "Last 7 days",
@ -32,10 +23,24 @@
] ]
let value = options.includes(defaultValue) ? defaultValue : "Last 30 days" let value = options.includes(defaultValue) ? defaultValue : "Last 30 days"
$: queryExtension = getQueryExtension(value) $: dataProviderId = dataProvider?.id
$: addExtension?.($component.id, "range", field, queryExtension) $: addExtension = getAction(
dataProviderId,
ActionTypes.AddDataProviderQueryExtension
)
$: removeExtension = getAction(
dataProviderId,
ActionTypes.RemoveDataProviderQueryExtension
)
$: queryExtension = getQueryExtension(field, value)
$: addExtension?.($component.id, queryExtension)
const getQueryExtension = (field, value) => {
if (!field || !value) {
return null
}
console.log("getting extension for " + value)
const getQueryExtension = value => {
let low = dayjs.utc().subtract(1, "year") let low = dayjs.utc().subtract(1, "year")
let high = dayjs.utc().add(1, "day") let high = dayjs.utc().add(1, "day")
@ -51,7 +56,14 @@
low = dayjs.utc().subtract(6, "months") low = dayjs.utc().subtract(6, "months")
} }
return { low: low.format(), high: high.format() } return {
range: {
[field]: {
low: low.format(),
high: high.format(),
},
},
}
} }
onDestroy(() => { onDestroy(() => {

Loading…
Cancel
Save