fixed: bug duplicate id when map element
This commit is contained in:
parent
4857b01fdf
commit
044f0a5e84
2 changed files with 28 additions and 26 deletions
|
|
@ -36,23 +36,31 @@ export const RecipeEditor: React.FC<RecipeEditorProps> = ({
|
||||||
|
|
||||||
const [editorShowState, setEditorShowState] = useState(EditorShowStateEnum.RECIPES_IN_USE)
|
const [editorShowState, setEditorShowState] = useState(EditorShowStateEnum.RECIPES_IN_USE)
|
||||||
|
|
||||||
const { recipesEnable, recipesDisable } = useMemo<{
|
const { recipesEnable, recipesDisable } = useMemo(
|
||||||
recipesEnable: ItemMetadata[]
|
() =>
|
||||||
recipesDisable: ItemMetadata[]
|
recipes.Recipe01.reduce<{ recipesEnable: ItemMetadata[]; recipesDisable: ItemMetadata[] }>(
|
||||||
}>(() => {
|
(acc, curr) => {
|
||||||
return {
|
if (curr.isUse) {
|
||||||
recipesEnable: recipes.Recipe01.filter(r => r.isUse).map(x => ({
|
acc.recipesEnable.push({
|
||||||
id: x.productCode,
|
id: curr.productCode,
|
||||||
name: x.name,
|
name: curr.name,
|
||||||
lastChange: x.LastChange
|
lastChange: curr.LastChange
|
||||||
})),
|
})
|
||||||
recipesDisable: recipes.Recipe01.filter(r => !r.isUse).map(x => ({
|
return acc
|
||||||
id: x.productCode,
|
} else {
|
||||||
name: x.name,
|
acc.recipesDisable.push({
|
||||||
lastChange: x.LastChange
|
id: curr.productCode,
|
||||||
}))
|
name: curr.name,
|
||||||
}
|
lastChange: curr.LastChange
|
||||||
}, [recipes])
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return acc
|
||||||
|
},
|
||||||
|
{ recipesEnable: [], recipesDisable: [] }
|
||||||
|
),
|
||||||
|
[recipes.Recipe01]
|
||||||
|
)
|
||||||
|
|
||||||
const [currentItems, setCurrentItems] = useState<ItemMetadata[]>(recipesEnable)
|
const [currentItems, setCurrentItems] = useState<ItemMetadata[]>(recipesEnable)
|
||||||
|
|
||||||
|
|
@ -62,10 +70,8 @@ export const RecipeEditor: React.FC<RecipeEditorProps> = ({
|
||||||
onSelectFn: id => setSelectedRecipe(id.toString())
|
onSelectFn: id => setSelectedRecipe(id.toString())
|
||||||
})
|
})
|
||||||
|
|
||||||
const { selectedMaterial, setSelectedMaterial, selectedRecipe, setSelectedRecipe } = useRecipeDashboard(
|
const { selectedRecipe, setSelectedRecipe } = useRecipeDashboard(
|
||||||
useShallow(state => ({
|
useShallow(state => ({
|
||||||
selectedMaterial: state.selectedMaterial,
|
|
||||||
setSelectedMaterial: state.setSelectedMaterial,
|
|
||||||
selectedRecipe: state.selectedRecipe,
|
selectedRecipe: state.selectedRecipe,
|
||||||
setSelectedRecipe: state.setSelectedRecipe
|
setSelectedRecipe: state.setSelectedRecipe
|
||||||
}))
|
}))
|
||||||
|
|
@ -90,15 +96,11 @@ export const RecipeEditor: React.FC<RecipeEditorProps> = ({
|
||||||
id: x.id,
|
id: x.id,
|
||||||
name: x.materialName
|
name: x.materialName
|
||||||
}))
|
}))
|
||||||
currentSelectId = selectedMaterial
|
|
||||||
onSelectedFn = id => setSelectedMaterial(Number(id))
|
|
||||||
} else if (editorShowState === EditorShowStateEnum.TOPPING_GROUPS) {
|
} else if (editorShowState === EditorShowStateEnum.TOPPING_GROUPS) {
|
||||||
list = recipes.Topping.ToppingGroup.map(x => ({
|
list = recipes.Topping.ToppingGroup.map(x => ({
|
||||||
id: x.groupID,
|
id: x.groupID,
|
||||||
name: x.name
|
name: x.name
|
||||||
}))
|
}))
|
||||||
currentSelectId = selectedMaterial
|
|
||||||
onSelectedFn = id => setSelectedMaterial(Number(id))
|
|
||||||
} else if (editorShowState === EditorShowStateEnum.TOPPING_LIST) {
|
} else if (editorShowState === EditorShowStateEnum.TOPPING_LIST) {
|
||||||
list = recipes.Topping.ToppingList.map(x => ({
|
list = recipes.Topping.ToppingList.map(x => ({
|
||||||
id: x.id,
|
id: x.id,
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,9 @@ const RecipeList: React.FC<RecipeListProps> = ({ items, currentSelectId, onSelec
|
||||||
return (
|
return (
|
||||||
<ScrollArea className="h-screen">
|
<ScrollArea className="h-screen">
|
||||||
<div className="flex flex-col gap-2 p-4 pt-0">
|
<div className="flex flex-col gap-2 p-4 pt-0">
|
||||||
{items.map(item => (
|
{items.map((item, index) => (
|
||||||
<button
|
<button
|
||||||
key={item.id}
|
key={index}
|
||||||
className={cn(
|
className={cn(
|
||||||
'flex flex-col items-start gap-2 rounded-lg border p-3 text-left text-sm transition-all hover:bg-accent',
|
'flex flex-col items-start gap-2 rounded-lg border p-3 text-left text-sm transition-all hover:bg-accent',
|
||||||
currentSelectId === item.id && 'bg-muted'
|
currentSelectId === item.id && 'bg-muted'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue