import { ODTicketStatus } from "@/types/doctypes"; import { createListResource } from "frappe-ui"; import { defineStore } from "pinia"; import { statusDotClass as parseColor } from "@opendesk/shared/ticketStatus"; export { parseColor }; export const useTicketStatusStore = defineStore("ticketStatus", () => { const statuses = createListResource({ doctype: "OD Ticket Status", cache: ["OD Ticket Status", "list"], fields: [ "label_agent", "label_customer", "order", "different_view", "category", "color", "enabled", ], orderBy: "`tabOD Ticket Status`.order", pageLength: 1000, auto: true, transform: (data: ODTicketStatus[]) => { return data.map((d) => { if (!d.different_view) { d.label_customer = d.label_agent; } d["parsed_color"] = parseColor(d.color); return d; }); }, }); function getStatus(label: string): ODTicketStatus | undefined { return statuses.data?.find( (s: ODTicketStatus) => s.label_agent === label || s.label_customer === label ); } const colorMap = { Green: ["text-ink-green-6", "bg-surface-green-2"], Black: ["text-ink-gray-9", "bg-surface-gray-2"], Gray: ["text-ink-gray-7", "bg-surface-gray-2"], Blue: ["text-ink-blue-6", "bg-surface-blue-2"], Red: ["text-ink-red-6", "bg-surface-red-1"], Pink: ["text-ink-pink-1", "bg-surface-pink-1"], Orange: ["text-ink-orange-6", "bg-surface-orange-1"], Amber: ["text-ink-amber-6", "bg-surface-amber-2"], Yellow: ["text-ink-yellow-6", "bg-surface-amber-2"], Cyan: ["text-ink-cyan-6", "bg-surface-cyan-1"], Teal: ["text-ink-teal-6", "bg-surface-teal-1"], Violet: ["text-ink-violet-6", "bg-surface-violet-1"], Purple: ["text-ink-purple-6", "bg-surface-purple-1"], Default: ["text-ink-gray-9", "bg-surface-gray-2"], }; return { statuses, colorMap, getStatus, }; });