update ui brand device

This commit is contained in:
2025-12-04 01:17:25 +07:00
parent 1bc98de564
commit f22e120204
15 changed files with 3132 additions and 1349 deletions

View File

@@ -1,18 +1,15 @@
import { useState } from 'react';
export const useSolutionLogic = (solutionForm) => {
const [solutionFields, setSolutionFields] = useState([
{ name: ['solution_items', 0], key: 0 }
]);
const [solutionFields, setSolutionFields] = useState([0]);
const [solutionTypes, setSolutionTypes] = useState({ 0: 'text' });
const [solutionStatuses, setSolutionStatuses] = useState({ 0: true });
const [solutionsToDelete, setSolutionsToDelete] = useState([]);
const handleAddSolutionField = () => {
const newKey = Date.now(); // Use timestamp for unique key
const newField = { name: ['solution_items', newKey], key: newKey };
const newKey = Date.now();
setSolutionFields(prev => [...prev, newField]);
setSolutionFields(prev => [...prev, newKey]);
setSolutionTypes(prev => ({ ...prev, [newKey]: 'text' }));
setSolutionStatuses(prev => ({ ...prev, [newKey]: true }));
@@ -27,7 +24,7 @@ export const useSolutionLogic = (solutionForm) => {
const handleRemoveSolutionField = (key) => {
if (solutionFields.length <= 1) {
return; // Keep at least one solution field
return;
}
setSolutionFields(prev => prev.filter(field => field.key !== key));
@@ -67,13 +64,21 @@ export const useSolutionLogic = (solutionForm) => {
const checkFirstSolutionValid = () => {
const values = solutionForm.getFieldsValue();
const firstSolution = values.solution_items?.[0];
const firstField = solutionFields[0];
if (!firstField) {
return false;
}
const solutionKey = firstField.key || firstField;
const solutionPath = `solution_items,${solutionKey}`;
const firstSolution = values[solutionPath];
if (!firstSolution || !firstSolution.name || firstSolution.name.trim() === '') {
return false;
}
if (solutionTypes[0] === 'text' && (!firstSolution.text || firstSolution.text.trim() === '')) {
if (solutionTypes[solutionKey] === 'text' && (!firstSolution.text || firstSolution.text.trim() === '')) {
return false;
}
@@ -83,13 +88,12 @@ export const useSolutionLogic = (solutionForm) => {
const getSolutionData = () => {
const values = solutionForm.getFieldsValue();
const result = solutionFields.map(field => {
const key = field.key;
// Access form values using the key from field.name (AntD stores with comma)
const solutionPath = field.name.join(',');
const solution = values[solutionPath];
const result = solutionFields.map(key => {
const solution = values[`solution_items,${key}`];
const validSolution = solution && solution.name && solution.name.trim() !== '';
if (!solution) return null;
const validSolution = solution.name && solution.name.trim() !== '';
if (validSolution) {
return {
@@ -97,7 +101,7 @@ export const useSolutionLogic = (solutionForm) => {
type_solution: solutionTypes[key] || 'text',
text_solution: solution.text || '',
path_solution: solution.file || '',
is_active: solution.status !== false, // Use form value directly
is_active: solution.status !== false,
};
}
return null;
@@ -109,14 +113,10 @@ export const useSolutionLogic = (solutionForm) => {
const setSolutionsForExistingRecord = (solutions, form) => {
if (!solutions || solutions.length === 0) return;
const newFields = solutions.map((solution, index) => ({
name: ['solution_items', solution.id || index],
key: solution.id || index
}));
const newFields = solutions.map((solution, index) => solution.id || index);
setSolutionFields(newFields);
// Set solution values
const solutionsValues = {};
const newTypes = {};
const newStatuses = {};