2024-01-02 16:46:34 +00:00
|
|
|
function ticketStateColorLookup(ticket) {
|
|
|
|
if (ticket.startsWith('closed_')) {
|
|
|
|
return 'secondary';
|
|
|
|
}
|
|
|
|
if (ticket.startsWith('pending_')) {
|
|
|
|
return 'warning';
|
|
|
|
}
|
|
|
|
if (ticket.startsWith('waiting_')) {
|
|
|
|
return 'primary';
|
|
|
|
}
|
|
|
|
return 'danger';
|
|
|
|
}
|
|
|
|
|
|
|
|
function ticketStateIconLookup(ticket) {
|
|
|
|
if (ticket.startsWith('closed_')) {
|
|
|
|
return 'check';
|
|
|
|
}
|
|
|
|
if (ticket.startsWith('pending_')) {
|
|
|
|
return 'exclamation';
|
|
|
|
}
|
|
|
|
if (ticket.startsWith('waiting_')) {
|
|
|
|
return 'hourglass';
|
|
|
|
}
|
|
|
|
return 'exclamation';
|
|
|
|
}
|
|
|
|
|
2024-06-18 18:10:10 +00:00
|
|
|
const http = {
|
|
|
|
get: async (url, token) => {
|
|
|
|
if (!token) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
const response = await fetch('/api' + url, {
|
|
|
|
method: 'GET',
|
|
|
|
headers: {
|
|
|
|
"Content-Type": "application/json",
|
|
|
|
"Authorization": `Token ${token}`,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
const success = response.status === 200 || response.status === 201;
|
|
|
|
return {data: await response.json() || {}, success};
|
|
|
|
},
|
|
|
|
post: async (url, data, token) => {
|
|
|
|
if (!token) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
const response = await fetch('/api' + url, {
|
|
|
|
method: 'POST',
|
|
|
|
headers: {
|
|
|
|
"Content-Type": "application/json",
|
2024-01-31 21:51:01 +00:00
|
|
|
"Authorization": `Token ${data.token}`,
|
2024-06-18 18:10:10 +00:00
|
|
|
},
|
|
|
|
body: JSON.stringify(data),
|
|
|
|
});
|
|
|
|
const success = response.status === 200 || response.status === 201;
|
|
|
|
return {data: await response.json() || {}, success};
|
|
|
|
},
|
|
|
|
put: async (url, data, token) => {
|
|
|
|
if (!token) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
const response = await fetch('/api' + url, {
|
|
|
|
method: 'PUT',
|
|
|
|
headers: {
|
|
|
|
"Content-Type": "application/json",
|
|
|
|
"Authorization": `Token ${token}`,
|
|
|
|
},
|
|
|
|
body: JSON.stringify(data),
|
|
|
|
});
|
|
|
|
const success = response.status === 200 || response.status === 201;
|
|
|
|
return {data: await response.json() || {}, success};
|
|
|
|
},
|
|
|
|
patch: async (url, data, token) => {
|
|
|
|
if (!token) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
const response = await fetch('/api' + url, {
|
|
|
|
method: 'PATCH',
|
|
|
|
headers: {
|
|
|
|
"Content-Type": "application/json",
|
|
|
|
"Authorization": `Token ${token}`,
|
|
|
|
},
|
|
|
|
body: JSON.stringify(data),
|
|
|
|
});
|
|
|
|
const success = response.status === 200 || response.status === 201;
|
|
|
|
return {data: await response.json() || {}, success};
|
|
|
|
},
|
|
|
|
delete: async (url, token) => {
|
|
|
|
if (!token) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
const response = await fetch('/api' + url, {
|
|
|
|
method: 'DELETE',
|
|
|
|
headers: {
|
|
|
|
"Content-Type": "application/json",
|
|
|
|
"Authorization": `Token ${token}`,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
const success = response.status === 200 || response.status === 201;
|
|
|
|
return {data: await response.json() || {}, success};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export {ticketStateColorLookup, ticketStateIconLookup, http};
|