From 2a51c8a2bfd3e241be5e54834e8975c9efd3bbdc Mon Sep 17 00:00:00 2001 From: Dave Richer Date: Thu, 4 Jul 2024 18:00:02 -0400 Subject: [PATCH] - Checkpoint, so so much Signed-off-by: Dave Richer --- .../production-board-card.styles.scss | 0 ...production-board-kanban-card.component.jsx | 12 +- .../production-board-kanban.component.jsx | 55 +--- .../production-board-kanban.styles.scss | 138 +------- ...roduction-list-columns.alert.component.jsx | 14 +- .../production-list-columns.data.jsx | 2 +- .../trello-board/components/index.js | 3 +- .../trello-board/controllers/Board.jsx | 20 +- .../controllers/BoardContainer.jsx | 70 ++-- .../trello-board/controllers/Lane.jsx | 308 +++++++++--------- client/src/components/trello-board/index.jsx | 10 +- .../components/trello-board/styles/Base.js | 266 ++------------- .../trello-board/styles/Elements.js | 212 +----------- .../components/trello-board/styles/Loader.js | 43 --- 14 files changed, 250 insertions(+), 903 deletions(-) delete mode 100644 client/src/components/production-board-kanban-card/production-board-card.styles.scss delete mode 100644 client/src/components/trello-board/styles/Loader.js diff --git a/client/src/components/production-board-kanban-card/production-board-card.styles.scss b/client/src/components/production-board-kanban-card/production-board-card.styles.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/client/src/components/production-board-kanban-card/production-board-kanban-card.component.jsx b/client/src/components/production-board-kanban-card/production-board-kanban-card.component.jsx index 4ca080981..4126711c0 100644 --- a/client/src/components/production-board-kanban-card/production-board-kanban-card.component.jsx +++ b/client/src/components/production-board-kanban-card/production-board-kanban-card.component.jsx @@ -15,7 +15,6 @@ import ProductionAlert from "../production-list-columns/production-list-columns. import ProductionListColumnProductionNote from "../production-list-columns/production-list-columns.productionnote.component"; import ProductionSubletsManageComponent from "../production-sublets-manage/production-sublets-manage.component"; -import "./production-board-card.styles.scss"; import dayjs from "../../utils/day"; import OwnerNameDisplay from "../owner-name-display/owner-name-display.component"; @@ -62,7 +61,7 @@ export default function ProductionBoardCard({ technician, card, bodyshop, cardSe return metadata?.labhrs && metadata?.larhrs ? metadata.labhrs.aggregate.sum.mod_lb_hrs + metadata.larhrs.aggregate.sum.mod_lb_hrs : 0; - }, [metadata]); + }, [metadata?.labhrs, metadata?.larhrs]); const bgColor = useMemo(() => cardColor(bodyshop.ssbuckets, totalHrs), [bodyshop.ssbuckets, totalHrs]); const contrastYIQ = useMemo(() => getContrastYIQ(bgColor), [bgColor]); @@ -77,7 +76,14 @@ export default function ProductionBoardCard({ technician, card, bodyshop, cardSe }} title={ - + {metadata?.suspended && } {metadata?.iouparent && ( diff --git a/client/src/components/production-board-kanban/production-board-kanban.component.jsx b/client/src/components/production-board-kanban/production-board-kanban.component.jsx index 799e9ba60..04fba02b8 100644 --- a/client/src/components/production-board-kanban/production-board-kanban.component.jsx +++ b/client/src/components/production-board-kanban/production-board-kanban.component.jsx @@ -1,32 +1,29 @@ -import { SyncOutlined, UnorderedListOutlined } from "@ant-design/icons"; +import { SyncOutlined } from "@ant-design/icons"; import { useApolloClient } from "@apollo/client"; import Board from "../../components/trello-board/index"; import { Button, notification, Skeleton, Space, Statistic } from "antd"; import { PageHeader } from "@ant-design/pro-layout"; -import React, { useEffect, useMemo, useState, useCallback } from "react"; +import React, { useCallback, useEffect, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { logImEXEvent } from "../../firebase/firebase.utils"; import { generate_UPDATE_JOB_KANBAN } from "../../graphql/jobs.queries"; import { insertAuditTrail } from "../../redux/application/application.actions"; -import { selectTechnician } from "../../redux/tech/tech.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors"; import AuditTrailMapping from "../../utils/AuditTrailMappings"; import IndefiniteLoading from "../indefinite-loading/indefinite-loading.component"; import ProductionBoardFilters from "../production-board-filters/production-board-filters.component"; -import ProductionBoardCard from "../production-board-kanban-card/production-board-kanban-card.component"; 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, createFakeBoardData } from "./production-board-kanban.utils.js"; +import { createBoardData } 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, - technician: selectTechnician + bodyshop: selectBodyshop }); const mapDispatchToProps = (dispatch) => ({ @@ -40,20 +37,16 @@ const mapDispatchToProps = (dispatch) => ({ ) }); -export function ProductionBoardKanbanComponent({ - data, - bodyshop, - refetch, - technician, - insertAuditTrail, - associationSettings -}) { +export function ProductionBoardKanbanComponent({ data, bodyshop, refetch, insertAuditTrail, associationSettings }) { const [boardLanes, setBoardLanes] = useState({ lanes: [] }); const [filter, setFilter] = useState({ search: "", employeeId: null }); const [loading, setLoading] = useState(true); const [isMoving, setIsMoving] = useState(false); - const orientation = associationSettings?.kanban_settings?.orientation ? "vertical" : "horizontal"; + const orientation = useMemo( + () => (associationSettings?.kanban_settings?.orientation ? "vertical" : "horizontal"), + [associationSettings] + ); const { t } = useTranslation(); useEffect(() => { @@ -63,7 +56,7 @@ export function ProductionBoardKanbanComponent({ }, [associationSettings]); useEffect(() => { - const newBoardData = createFakeBoardData( + const newBoardData = createBoardData( [...bodyshop.md_ro_statuses.production_statuses, ...(bodyshop.md_ro_statuses.additional_board_statuses || [])], data, filter @@ -202,15 +195,6 @@ export function ProductionBoardKanbanComponent({ [data] ); - const Header = useCallback( - ({ title }) => ( -
- {title.substring(0, 10)} -
- ), - [] - ); - const cardSettings = useMemo( () => associationSettings?.kanban_settings && Object.keys(associationSettings.kanban_settings).length > 0 @@ -225,23 +209,12 @@ export function ProductionBoardKanbanComponent({ production_note: true, employeeassignments: true, scheduled_completion: true, - stickyheader: false, cardcolor: false, orientation: false }, [associationSettings] ); - const components = useMemo( - () => ({ - Card: (cardProps) => ( - - ), - LaneHeader: Header - }), - [Header, bodyshop, cardSettings, technician] - ); - if (loading) { return ; } @@ -270,13 +243,7 @@ export function ProductionBoardKanbanComponent({ /> {cardSettings.cardcolor && } - + ); } diff --git a/client/src/components/production-board-kanban/production-board-kanban.styles.scss b/client/src/components/production-board-kanban/production-board-kanban.styles.scss index 683cb2920..fcc02a2cf 100644 --- a/client/src/components/production-board-kanban/production-board-kanban.styles.scss +++ b/client/src/components/production-board-kanban/production-board-kanban.styles.scss @@ -2,147 +2,27 @@ padding: 5px; } -//.react-trello-card { -// border-radius: 3px; -// background-color: #fff; -// padding: 4px; -// margin-bottom: 7px; -//} - -// .react-trello-card-skeleton, -// .react-trello-card, -// .react-trello-card-adder-form { -// box-sizing: border-box; -// max-width: 145px; -// min-width: 145px; -// } - -.react-trello-card--dragging { +.item .is-dragging { box-shadow: 2px 2px grey; + rotate: 5deg; } -.react-trello-card__description { - padding-top: 10px; -} - -.react-trello-card__title { - border-bottom: 1px solid #eee; - padding-bottom: 5px; - font-weight: bold; - display: flex; - justify-content: space-between; -} - -//.react-trello-column { -// padding: 10px; -// border-radius: 2px; -// background-color: #eee; -// margin: 5px; -//} - -.react-trello-column input:focus { - outline: none; -} - -.react-trello-card-adder-form { - border-radius: 3px; - background-color: #fff; - padding: 10px; - margin-bottom: 7px; -} - -.react-trello-card-adder-form input { - border: 0px; - font-family: inherit; - font-size: inherit; -} - -.react-trello-card-adder-button { - width: 100%; - margin-top: 5px; - background-color: transparent; - cursor: pointer; - border: 1px solid #ccc; - transition: 0.3s; - border-radius: 3px; - font-size: 20px; - margin-bottom: 10px; - font-weight: bold; -} - -.react-trello-card-adder-button:hover { - background-color: #ccc; -} - -.react-trello-card-adder-form__title { - font-weight: bold; - border-bottom: 1px solid #eee; - padding-bottom: 5px; - font-weight: bold; - display: flex; - justify-content: space-between; - width: 100%; - padding: 0px; -} .height-preserving-container:empty { min-height: calc(var(--child-height)); box-sizing: border-box; } -.react-trello-card-adder-form__title:focus { - outline: none; -} - -.react-trello-card-adder-form__description { - width: 100%; - margin-top: 10px; -} - -.react-trello-card-adder-form__description:focus { - outline: none; -} - -.react-trello-card-adder-form__button { - background-color: #eee; - border: none; - padding: 5px; - width: 45%; - margin-top: 5px; - border-radius: 3px; -} - -.react-trello-card-adder-form__button:hover { - transition: 0.3s; - cursor: pointer; - background-color: #ccc; -} - .react-trello-column-header { font-weight: bold; + background-color: #e3e3e3; + .icon { + margin-right: 5px; + } } -.react-trello-column-header input:focus { - outline: none; +.production-alert { + background: transparent; + border: none; } -.react-trello-column-header__button { - color: #333333; - background-color: #ffffff; - border-color: #cccccc; -} -.react-trello-column-header__button:hover, -.react-trello-column-header__button:focus, -.react-trello-column-header__button:active { - background-color: #e6e6e6; -} - -.react-trello-column-adder-button { - border: 2px dashed #eee; - height: 132px; - margin: 5px; -} - -.react-trello-column-adder-button:hover { - cursor: pointer; -} diff --git a/client/src/components/production-list-columns/production-list-columns.alert.component.jsx b/client/src/components/production-list-columns/production-list-columns.alert.component.jsx index 218d6295a..c24294c87 100644 --- a/client/src/components/production-list-columns/production-list-columns.alert.component.jsx +++ b/client/src/components/production-list-columns/production-list-columns.alert.component.jsx @@ -43,18 +43,14 @@ const ProductionListColumnAlert = ({ record, insertAuditTrail }) => { jobid: record.id, operation: AuditTrailMapping.alertToggle(newAlertState), type: "alertToggle" - }).then(() => { - if (record.refetch) record.refetch(); }); + + if (record.refetch) record.refetch(); }, [updateAlert, insertAuditTrail, record]); - return ( -
- {record.production_vars?.alert && ( -
- ); + if (!record.production_vars?.alert) return null; + + return