TimeFilter.ts 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import AbstractFilter from '~/services/data/Filters/AbstractFilter'
  2. import RefUtils from '~/services/utils/refUtils'
  3. import type {ApiFilter} from "~/types/data";
  4. import type ApiResource from "~/models/ApiResource";
  5. import type {Query as PiniaOrmQuery} from "pinia-orm";
  6. export default class TimeFilter extends AbstractFilter implements ApiFilter{
  7. field: string
  8. filterValue: string
  9. /**
  10. * @param field
  11. * @param value
  12. * @param reactiveFilter
  13. */
  14. constructor(
  15. field: string,
  16. value: string,
  17. reactiveFilter: boolean = false,
  18. ) {
  19. super(reactiveFilter)
  20. this.field = field
  21. this.filterValue = value
  22. }
  23. public applyToPiniaOrmQuery <T extends ApiResource>(
  24. query: PiniaOrmQuery<T>,
  25. ): PiniaOrmQuery<T> {
  26. return query
  27. }
  28. public getApiQueryPart(): string {
  29. const filterValue = RefUtils.castToRef(
  30. this.filterValue,
  31. this.reactiveFilter,
  32. )
  33. if (filterValue.value === null) {
  34. return ''
  35. }
  36. return `${this.field}[time]=${filterValue.value}`
  37. }
  38. }