/* eslint react/no-danger: "off" */ import { KEY_ENTER } from '../../common/keycodes'; import { BooleanLike } from '../../common/react'; import { useBackend, useLocalState } from '../backend'; import { Box, Button, Divider, Dropdown, Flex, Icon, Input, LabeledList, Section, Tabs } from '../components'; import { Window } from '../layouts'; const Level = { 0: 'Admin', 1: 'Mentor', 2: 'All Levels', }; const LevelColor = { 0: 'red', 1: 'green', 2: 'pink', }; const Tag = { 'example': 'Example', }; const State = { 'open': 'Open', 'resolved': 'Resolved', 'closed': 'Closed', 'unknown': 'Unknown', 'all': 'All States', }; const StateColor = { 'open': 'white', 'resolved': 'green', 'closed': 'grey', 'unknown': 'orange', }; type Data = { tickets: Ticket[]; selected_ticket: Ticket; }; type Ticket = { id: number; title: string; name: string; state: string; level: number; handler: string; opened_at: number; closed_at: number; opened_at_date: string; closed_at_date: string; actions: string; log: string[]; ref: string; selected: BooleanLike; }; const getFilteredTickets = ( tickets: Ticket[], state: string, level: number ): Ticket[] => { let result: Ticket[] = []; tickets.forEach((t) => { if ( (t.state === state || state === 'all') && (t.level === level || level === 2) ) { result.push(t); } }); return result; }; export const TicketsPanel = (props, context) => { const { act, data } = useBackend(context); const { tickets, selected_ticket } = data; const [stateFilter, setStateFilter] = useLocalState( context, 'stateFilter', 'open' ); const [levelFilter, setLevelFilter] = useLocalState( context, 'levelFilter', 2 ); const [ticketChat, setTicketChat] = useLocalState(context, 'ticketChat', ''); let filtered_tickets = getFilteredTickets(tickets, stateFilter, levelFilter); return (
setStateFilter( Object.keys(State)[Object.values(State).indexOf(val)] ) } /> setLevelFilter(Object.values(Level).indexOf(val)) } />
act('new_ticket')}> New Ticket {filtered_tickets.map((ticket) => ( act('pick_ticket', { ticket_id: ticket.id }) }>
{(selected_ticket && (
)) || (
)}
); };