import type { SpecialTag, Track } from "@/types"; export default function useTrackColor() { const colors = ["red", "blue", "green"]; const colorMap: Record> = {}; function addTrackColorAttr(tList: Track[], groupNumber: number): Track[] { let userIds: (number | undefined)[] = tList .map((v) => v.userId) .filter((x) => !!x); userIds = Array.from(new Set(userIds)); const isByMultMark = userIds.length > 1; tList = tList.map((item) => { const uid = item.userId; if (item.headerMarkScore) { item.color = "green"; } else { if (!colorMap[groupNumber]) colorMap[groupNumber] = {}; if (!colorMap[groupNumber][uid]) { colorMap[groupNumber][uid] = colors[Object.keys(colorMap[groupNumber]).length] || "green"; } item.color = colorMap[groupNumber][uid]; } item.isByMultMark = isByMultMark; return item; }); return tList; } function addSpecialTrackColorAttr(tList: SpecialTag[]): SpecialTag[] { return tList.map((item) => { item.color = colorMap[item.groupNumber] && colorMap[item.groupNumber][item.markerId] ? colorMap[item.groupNumber][item.markerId] : "green"; return item; }); } function addHeaderTrackColorAttr(headerTrack: any): any { return headerTrack.map((item: any) => { item.color = "green"; return item; }); } return { addTrackColorAttr, addSpecialTrackColorAttr, addHeaderTrackColorAttr, }; }