useTrack.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import type { SpecialTag, Track, ColorMap } from "@/types";
  2. export default function useTrack() {
  3. function addTrackColorAttr(tList: Track[]): Track[] {
  4. let markerIds: (number | undefined)[] = tList
  5. .map((v) => v.userId)
  6. .filter((x) => !!x);
  7. markerIds = Array.from(new Set(markerIds));
  8. // markerIds.sort();
  9. const colorMap: ColorMap = {};
  10. for (let i = 0; i < markerIds.length; i++) {
  11. const mId: any = markerIds[i];
  12. if (i == 0) {
  13. colorMap[mId + ""] = "red";
  14. } else if (i == 1) {
  15. colorMap[mId + ""] = "blue";
  16. } else if (i > 1) {
  17. colorMap[mId + ""] = "gray";
  18. }
  19. }
  20. if (Object.keys(colorMap).length > 1) {
  21. emit("getIsMultComments", true);
  22. }
  23. tList = tList.map((item: Track) => {
  24. item.color = colorMap[item.userId + ""] || "red";
  25. item.isByMultMark = markerIds.length > 1;
  26. return item;
  27. });
  28. return tList;
  29. }
  30. function addTagColorAttr(tList: SpecialTag[]): SpecialTag[] {
  31. let markerIds: (number | undefined)[] = tList
  32. .map((v) => v.userId)
  33. .filter((x) => !!x);
  34. markerIds = Array.from(new Set(markerIds));
  35. // markerIds.sort();
  36. const colorMap: ColorMap = {};
  37. for (let i = 0; i < markerIds.length; i++) {
  38. const mId: any = markerIds[i];
  39. if (i == 0) {
  40. colorMap[mId + ""] = "red";
  41. } else if (i == 1) {
  42. colorMap[mId + ""] = "blue";
  43. } else if (i > 1) {
  44. colorMap[mId + ""] = "gray";
  45. }
  46. }
  47. tList = tList.map((item: SpecialTag) => {
  48. item.color = colorMap[item.userId + ""] || "red";
  49. item.isByMultMark = markerIds.length > 1;
  50. return item;
  51. });
  52. return tList;
  53. }
  54. function addHeaderTrackColorAttr(headerTrackList: Track[]): Track[] {
  55. return headerTrackList.map((item: Track) => {
  56. item.color = "green";
  57. return item;
  58. });
  59. }
  60. return {
  61. addTrackColorAttr,
  62. addTagColorAttr,
  63. addHeaderTrackColorAttr,
  64. };
  65. }