tableSettings.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { defineStore } from 'pinia'
  2. interface FilterValues {
  3. [x: string]: string[]
  4. }
  5. export const useTableSettingsStore = defineStore('tableSettings', () => {
  6. const route = useRoute()
  7. const savedHiddenColumnKeysMap = ref<{ [fullTableName: string]: string[] }>(
  8. JSON.parse(localStorage.getItem('savedHiddenColumnKeysMap') ?? '{}')
  9. )
  10. const saveHiddenColumnKeys = (columnKeys: string[] = [], tableName?: string) => {
  11. const fullTableName = route.path + (tableName ? `/${tableName}` : '')
  12. savedHiddenColumnKeysMap.value[fullTableName] = columnKeys
  13. localStorage.setItem(
  14. 'savedHiddenColumnKeysMap',
  15. JSON.stringify(savedHiddenColumnKeysMap.value)
  16. )
  17. }
  18. const savedTableFilterValueMap = ref<{
  19. [fullTableName: string]: FilterValues
  20. }>(JSON.parse(localStorage.getItem('savedTableFilterValueMap') ?? '{}'))
  21. const saveTableFilterValues = (
  22. filterValues: FilterValues,
  23. tableName?: string
  24. ) => {
  25. const fullTableName = route.path + (tableName ? `/${tableName}` : '')
  26. savedTableFilterValueMap.value[fullTableName] = filterValues
  27. localStorage.setItem(
  28. 'savedTableFilterValueMap',
  29. JSON.stringify(savedTableFilterValueMap.value)
  30. )
  31. }
  32. return {
  33. savedHiddenColumnKeysMap,
  34. saveHiddenColumnKeys,
  35. savedTableFilterValueMap,
  36. saveTableFilterValues,
  37. }
  38. })