fix(app): show past items (#433)

Co-authored-by: mahula <lenzmath@posteo.de>
Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
This commit is contained in:
Anton Tranelis 2025-11-24 21:48:03 +01:00 committed by GitHub
parent 1aa9132246
commit 2eec9f959f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 71 additions and 24 deletions

View File

@ -1,12 +1,10 @@
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable import/no-relative-parent-imports */
/* eslint-disable array-callback-return */
/* eslint-disable new-cap */
/* eslint-disable @typescript-eslint/no-empty-function */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable react-hooks/exhaustive-deps */
import { useEffect, useState } from 'react'
import {
UtopiaMap,
@ -36,22 +34,20 @@ function MapContainer({ layers, map }: { layers: LayerProps[]; map: any }) {
const [apis, setApis] = useState<layerApi[]>([])
useEffect(() => {
// get timestamp for the end of the current day
// get timestamp for the start of the current day
const now = new Date()
const startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate())
const etartOfDayISO = startOfDay.toISOString()
const startOfDayISO = startOfDay.toISOString()
layers.map((layer: LayerProps) => {
apis &&
setApis((current) => [
...current,
{
id: layer.id,
api: new itemsApi<Place>('items', layer.id, undefined, {
const newApis = layers.map((layer: LayerProps) => {
// Only apply date filter if showPastItems is not explicitly set to true
const dateFilter = layer.showPastItems
? undefined
: {
_or: [
{
end: {
_gt: etartOfDayISO,
_gt: startOfDayISO,
},
},
{
@ -60,10 +56,15 @@ function MapContainer({ layers, map }: { layers: LayerProps[]; map: any }) {
},
},
],
}),
},
])
}
return {
id: layer.id,
api: new itemsApi<Place>('items', layer.id, undefined, dateFilter),
}
})
setApis(newApis)
}, [layers])
useEffect(() => {}, [apis])

View File

@ -0,0 +1,45 @@
{
"collection": "layers",
"field": "showPastItems",
"type": "boolean",
"meta": {
"collection": "layers",
"conditions": null,
"display": null,
"display_options": null,
"field": "showPastItems",
"group": null,
"hidden": false,
"interface": "boolean",
"note": null,
"options": null,
"readonly": false,
"required": false,
"sort": 19,
"special": [
"cast-boolean"
],
"translations": null,
"validation": null,
"validation_message": null,
"width": "full"
},
"schema": {
"name": "showPastItems",
"table": "layers",
"data_type": "boolean",
"default_value": false,
"max_length": null,
"numeric_precision": null,
"numeric_scale": null,
"is_nullable": true,
"is_unique": false,
"is_indexed": false,
"is_primary_key": false,
"is_generated": false,
"generation_expression": null,
"has_auto_increment": false,
"foreign_key_table": null,
"foreign_key_column": null
}
}

View File

@ -26,4 +26,5 @@ export interface LayerProps {
listed?: boolean
item_presets?: Record<string, unknown>
item_default_name?: string
showPastItems?: boolean
}