- Checkpoint

Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
Dave Richer
2024-07-02 14:16:25 -04:00
parent 7f75eeadb9
commit 7524d06126
10 changed files with 151 additions and 144 deletions

View File

@@ -19,8 +19,10 @@ import ProductionBoardCard from "../production-board-kanban-card/production-boar
import ProductionListDetailComponent from "../production-list-detail/production-list-detail.component";
import CardColorLegend from "../production-board-kanban-card/production-board-kanban-card-color-legend.component";
import "./production-board-kanban.styles.scss";
import { createBoardData } from "./production-board-kanban.utils.js";
import { createBoardData, createFakeBoardData } from "./production-board-kanban.utils.js";
import ProductionBoardKanbanSettings from "./production-board-kanban.settings.component.jsx";
import cloneDeep from "lodash/cloneDeep";
import isEqual from "lodash/isEqual";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -63,25 +65,27 @@ export function ProductionBoardKanbanComponent({
}, [associationSettings]);
useEffect(() => {
const boardData = createBoardData(
const newBoardData = createFakeBoardData(
[...bodyshop.md_ro_statuses.production_statuses, ...(bodyshop.md_ro_statuses.additional_board_statuses || [])],
data,
filter
);
// Build Board Lanes Data
boardData.lanes = boardData.lanes.map((lane) => {
return {
...lane,
title: `${lane.title} (${lane.cards.length})`
};
newBoardData.lanes = newBoardData.lanes.map((lane) => ({
...lane,
title: `${lane.title} (${lane.cards.length})`
}));
setBoardLanes((prevBoardLanes) => {
const deepClonedData = cloneDeep(newBoardData);
if (!isEqual(prevBoardLanes, deepClonedData)) {
return deepClonedData;
}
return prevBoardLanes;
});
setBoardLanes(boardData);
setIsMoving(false);
}, [data, setBoardLanes, setIsMoving, bodyshop.md_ro_statuses, filter]);
//
}, [data, bodyshop.md_ro_statuses, filter]);
const client = useApolloClient();
@@ -102,13 +106,11 @@ export function ProductionBoardKanbanComponent({
return null;
};
// TODO, refine and use action
const onDragEnd = async ({ type, source, destination, draggableId, ...args }) => {
// //cardId, sourceLaneId, targetLaneId, position, cardDetails
const onDragEnd = async ({ type, source, destination, draggableId }) => {
logImEXEvent("kanban_drag_end");
// Early Gate
if (!type || type !== "lane" || !source || !destination) return;
// Early gate, also if the card is already moving bail
if (!type || type !== "lane" || !source || !destination || isMoving) return;
setIsMoving(true);
@@ -120,13 +122,11 @@ export function ProductionBoardKanbanComponent({
const movedCardWillBeFirst = destination.index === 0;
const movedCardWillBeLast = destination.index > targetLane.cards.length - 1;
const movedCardIsFirstNewCard = movedCardWillBeFirst && movedCardWillBeLast;
const lastCardInTargetLane = targetLane.cards[targetLane.cards.length - 1];
const oldChildCard = sourceLane.cards[destination.index + 1];
//
const newChildCard = movedCardWillBeLast
? null
: targetLane.cards[
@@ -138,7 +138,7 @@ export function ProductionBoardKanbanComponent({
];
const oldChildCardNewParent = oldChildCard ? sourceCard.metadata.kanbanparent : null;
//
let movedCardNewKanbanParent;
if (movedCardWillBeFirst) {
movedCardNewKanbanParent = "-1";
@@ -186,6 +186,7 @@ export function ProductionBoardKanbanComponent({
setIsMoving(false);
}
};
const totalHrs = useMemo(
() =>
data