push
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
FROM node:20-alpine AS build
|
||||
FROM node:20-bookworm-slim AS build
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
|
||||
@@ -54,6 +54,26 @@ function appendSearchParam(
|
||||
searchParams.append(key, String(value));
|
||||
}
|
||||
|
||||
function parseListBody(json: unknown): { rows: unknown[]; totalHint?: number } {
|
||||
if (Array.isArray(json)) {
|
||||
return { rows: json };
|
||||
}
|
||||
if (
|
||||
json !== null &&
|
||||
typeof json === "object" &&
|
||||
"data" in json &&
|
||||
Array.isArray((json as { data: unknown }).data)
|
||||
) {
|
||||
const body = json as { data: unknown[]; total?: unknown };
|
||||
const totalHint =
|
||||
typeof body.total === "number" && Number.isFinite(body.total)
|
||||
? body.total
|
||||
: undefined;
|
||||
return { rows: body.data, totalHint };
|
||||
}
|
||||
return { rows: [] };
|
||||
}
|
||||
|
||||
function buildListUrl(resource: string, params: any): string {
|
||||
const resourcePath = resource === "equipment" ? "equipments" : resource;
|
||||
const searchParams = new URLSearchParams();
|
||||
@@ -83,16 +103,16 @@ export const dataProvider: DataProvider = {
|
||||
return { data: [json], total: 1 };
|
||||
}
|
||||
const { json, headers } = await fetchJson(buildListUrl(resource, params));
|
||||
const { rows, totalHint } = parseListBody(json);
|
||||
const contentRange = headers.get("Content-Range");
|
||||
const total = contentRange
|
||||
? Number(
|
||||
contentRange.split("/").pop() ??
|
||||
(Array.isArray(json) ? json.length : 0),
|
||||
totalHint ??
|
||||
rows.length,
|
||||
)
|
||||
: Array.isArray(json)
|
||||
? json.length
|
||||
: 0;
|
||||
return { data: Array.isArray(json) ? json : [], total };
|
||||
: (totalHint ?? rows.length);
|
||||
return { data: rows as any[], total };
|
||||
},
|
||||
getOne: async (resource, params) => {
|
||||
const resourcePath = resource === "equipment" ? "equipments" : resource;
|
||||
|
||||
@@ -7,28 +7,35 @@ export const equipmentStatusChoices = [
|
||||
export const laborOperationChoices = ["Manual", "MachineManual", "Machine"].map(
|
||||
(value) => ({ id: value, name: value }),
|
||||
);
|
||||
|
||||
/** id = Prisma/API wire value; name = human label (matches DB enum @map). */
|
||||
export const periodicityChoices = [
|
||||
"Ежедневное",
|
||||
"Еженедельное",
|
||||
"Ежемесячное",
|
||||
"Полугодовое",
|
||||
"Годовое",
|
||||
].map((value) => ({ id: value, name: value }));
|
||||
export const roleChoices = ["Исполнитель", "Подписант", "Пользователь"].map(
|
||||
(value) => ({ id: value, name: value }),
|
||||
);
|
||||
{ id: "EZHEDNEVNOE", name: "Ежедневное" },
|
||||
{ id: "EZHENEDELNOE", name: "Еженедельное" },
|
||||
{ id: "EZHEMESYACHNOE", name: "Ежемесячное" },
|
||||
{ id: "POLUGODOVOE", name: "Полугодовое" },
|
||||
{ id: "GODOVOE", name: "Годовое" },
|
||||
];
|
||||
|
||||
export const roleChoices = [
|
||||
{ id: "ISPOLNITEL", name: "Исполнитель" },
|
||||
{ id: "PODPISANT", name: "Подписант" },
|
||||
{ id: "POLZOVATEL", name: "Пользователь" },
|
||||
];
|
||||
|
||||
export const categoryPartChoices = [
|
||||
"Расходник",
|
||||
"Запчасть",
|
||||
"Инструмент",
|
||||
"Спецодежда",
|
||||
].map((value) => ({ id: value, name: value }));
|
||||
{ id: "RASKHODNIK", name: "Расходник" },
|
||||
{ id: "ZAPCHAST", name: "Запчасть" },
|
||||
{ id: "INSTRUMENT", name: "Инструмент" },
|
||||
{ id: "SPETSODEZHDA", name: "Спецодежда" },
|
||||
];
|
||||
|
||||
export const equipmentTypeChoices = [
|
||||
"Производственное",
|
||||
"Энергетическое",
|
||||
"Насосное",
|
||||
"Компрессорное",
|
||||
].map((value) => ({ id: value, name: value }));
|
||||
{ id: "PROIZVODSTVENNOE", name: "Производственное" },
|
||||
{ id: "ENERGETICHESKOE", name: "Энергетическое" },
|
||||
{ id: "NASOSNOE", name: "Насосное" },
|
||||
{ id: "KOMPRESSORNOE", name: "Компрессорное" },
|
||||
];
|
||||
|
||||
export const equipmentOptionText = (
|
||||
record?: Record<string, unknown> | null,
|
||||
|
||||
Reference in New Issue
Block a user