util.ts 853 B

12345678910111213141516171819202122232425262728293031323334
  1. import { IFieldSortDescriptor } from './types'
  2. export function fieldGroupedSort (data: object[], descriptors: IFieldSortDescriptor[]) {
  3. if (!Array.isArray(descriptors) || !descriptors.length) { return data }
  4. data.sort((r1, r2) => {
  5. let result = 0
  6. descriptors.some(({ name, list }) => {
  7. const v1 = r1[name]
  8. const v2 = r2[name]
  9. const order = list.indexOf(v1) - list.indexOf(v2)
  10. if (order !== 0) {
  11. result = order
  12. return true
  13. }
  14. })
  15. return result
  16. })
  17. }
  18. export function inGroupColorSort (
  19. groupEntries: Array<[string, unknown]>,
  20. descriptor: IFieldSortDescriptor
  21. ) {
  22. groupEntries.sort((e1, e2) => {
  23. let result = 0
  24. const { list } = descriptor
  25. const order = list.indexOf(e1[0]) - list.indexOf(e2[0])
  26. if (order !== 0) {
  27. result = order
  28. }
  29. return result
  30. })
  31. }