Bläddra i källkod

update

master
MSI\derek 1 månad sedan
förälder
incheckning
528398f8ab
1 ändrade filer med 78 tillägg och 108 borttagningar
  1. +78
    -108
      src/components/RoughScheduleSetting/RoughScheduleSetting.tsx

+ 78
- 108
src/components/RoughScheduleSetting/RoughScheduleSetting.tsx Visa fil

@@ -3,7 +3,6 @@
import React, { useCallback, useEffect, useMemo, useState } from "react";
import SearchBox, { Criterion } from "../SearchBox";
import { ItemsResult } from "@/app/api/settings/item";
import SearchResults, { Column } from "../SearchResults";
import { EditNote } from "@mui/icons-material";
import { useRouter, useSearchParams } from "next/navigation";
import { GridDeleteIcon } from "@mui/x-data-grid";
@@ -13,7 +12,7 @@ import { BASE_API_URL, NEXT_PUBLIC_API_URL } from "@/config/api";
import { useTranslation } from "react-i18next";
import axiosInstance from "@/app/(main)/axios/axiosInstance";
import Qs from "qs";
import EditableSearchResults from "@/components/SearchResults/EditableSearchResults"; // Make sure to import Qs
import EditableSearchResults, { Column } from "@/components/SearchResults/EditableSearchResults"; // Make sure to import Qs
import { ItemsResultResponse } from "@/app/api/settings/item";
type Props = {
items: ItemsResult[];
@@ -68,31 +67,58 @@ const RSSOverview: React.FC<Props> = ({ items }) => {
{
label: t("Exclude Date"),
paramName: "excludeDate",
type: "multi-select",
options: dayOptions,
selectedValues: filterObj,
type: "select",
options: ["qcChecks"],
// selectedValues: filterObj,
handleSelectionChange: handleSelectionChange,
},
];
return searchCriteria;
}, [t, items]);

const searchCriteria: Criterion<SearchParamNames>[] = useMemo(
() => {
var searchCriteria: Criterion<SearchParamNames>[] = [
{ label: t("Finished Goods Name"), paramName: "name", type: "text" },
{
label: t("Exclude Date"),
paramName: "excludeDate",
type: "multi-select",
options: dayOptions,
selectedValues: filterObj,
handleSelectionChange: handleSelectionChange,
},
]
return searchCriteria
},
},
// const onDetailClick = useCallback(
// (item: ItemsResult) => {
// router.push(`/settings/items/edit?id=${item.id}`);
// },
// [router]
// );

const handleEditClick = useCallback((item: ItemsResult) => {}, [router]);
const onDeleteClick = useCallback((item: ItemsResult) => {}, [router]);

const columns = useMemo<Column<ItemsResult>[]>(
() => [
// {
// name: "id",
// label: t("Details"),
// onClick: ()=>{},
// buttonIcon: <EditNote />,
// },
// {
// name: "name",
// label: "Finished Goods Name",
// // type: "input",
// },
// {
// name: "excludeDate",
// label: t("Exclude Date"),
// type: "multi-select",
// options: dayOptions,
// renderCell: (item: ItemsResult) => {
// console.log("[debug] render item", item);
// const selectedValues = (item.excludeDate as number[]) ?? []; // Assuming excludeDate is an array of numbers
// const selectedLabels = dayOptions
// .filter((option) => selectedValues.includes(option.value))
// .map((option) => option.label)
// .join(", "); // Join labels into a string

// return (
// <span onDoubleClick={() => handleEditClick(item.id as number)}>
// {selectedLabels || "None"}{" "}
// {/* Display "None" if no days are selected */}
// </span>
// );
// },
// {
// name: "action",
// label: t(""),
@@ -113,100 +139,41 @@ const RSSOverview: React.FC<Props> = ({ items }) => {
return; // Exit the function if the token is not set
}

const columns = useMemo<Column<ItemsResult>[]>(
() => [
// {
// name: "id",
// label: t("Details"),
// onClick: ()=>{},
// buttonIcon: <EditNote />,
// },
{
field: "name",
label: t("Finished Goods Name"),
type: 'input',
},
{
field: "excludeDate",
label: t("Exclude Date"),
type: 'multi-select',
options: dayOptions,
renderCell: (item: ItemsResult) => {
console.log("[debug] render item", item)
const selectedValues = item.excludeDate as number[] ?? []; // Assuming excludeDate is an array of numbers
const selectedLabels = dayOptions
.filter(option => selectedValues.includes(option.value))
.map(option => option.label)
.join(", "); // Join labels into a string

return (
<span onDoubleClick={() => handleEditClick(item.id as number)}>
{selectedLabels || "None"} {/* Display "None" if no days are selected */}
</span>
);
},
},
// {
// name: "action",
// label: t(""),
// buttonIcon: <GridDeleteIcon />,
// onClick: onDeleteClick,
// },
],
[filteredItems]
);

useEffect(() => {
refetchData(filterObj);

}, [filterObj, pagingController.pageNum, pagingController.pageSize]);

const refetchData = async (filterObj: SearchQuery) => {

const authHeader = axiosInstance.defaults.headers['Authorization'];
if (!authHeader) {
return; // Exit the function if the token is not set
}

const params ={
pageNum: pagingController.pageNum,
pageSize: pagingController.pageSize,
...filterObj,
...tempSelectedValue,
}

try {
const response = await axiosInstance.get<ItemsResultResponse>(`${NEXT_PUBLIC_API_URL}/items/getRecordByPage`, {
params,
paramsSerializer: (params) => {
return Qs.stringify(params, { arrayFormat: 'repeat' });
},
});
setFilteredItems(response.data.records);
setPagingController({
...pagingController,
totalCount: response.data.total
})
return response; // Return the data from the response
} catch (error) {
console.error('Error fetching items:', error);
throw error; // Rethrow the error for further handling
}
const params = {
pageNum: pagingController.pageNum,
pageSize: pagingController.pageSize,
...filterObj,
...tempSelectedValue,
};

const onReset = useCallback(() => {
//setFilteredItems(items ?? []);
setFilterObj({});
setTempSelectedValue({});
refetchData(filterObj);
}, [items]);
try {
const response = await axiosInstance.get<ItemsResultResponse>(
`${NEXT_PUBLIC_API_URL}/items/getRecordByPage`,
{
params,
paramsSerializer: (params) => {
return Qs.stringify(params, { arrayFormat: "repeat" });
},
},
);
setFilteredItems(response.data.records);
setPagingController({
...pagingController,
totalCount: response.data.total,
});
return response; // Return the data from the response
} catch (error) {
console.error("Error fetching items:", error);
throw error; // Rethrow the error for further handling
}
};

const onReset = useCallback(() => {
//setFilteredItems(items ?? []);
setFilterObj({});
setTempSelectedValue({});
refetchData();
}, [items]);
refetchData(filterObj);
}, [items, filterObj]);

return (
<>
@@ -220,6 +187,9 @@ const RSSOverview: React.FC<Props> = ({ items }) => {
onReset={onReset}
/>
<EditableSearchResults<ItemsResult>
index={1} // bug
isEdit
isEditable
items={filteredItems}
columns={columns}
setPagingController={setPagingController}


Laddar…
Avbryt
Spara