- reapply proper prettier formatting.
Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
@@ -6,7 +6,7 @@ import {connect} from "react-redux";
|
|||||||
import {createStructuredSelector} from "reselect";
|
import {createStructuredSelector} from "reselect";
|
||||||
import {selectJobReadOnly} from "../../redux/application/application.selectors";
|
import {selectJobReadOnly} from "../../redux/application/application.selectors";
|
||||||
import {setModalContext} from "../../redux/modals/modals.actions";
|
import {setModalContext} from "../../redux/modals/modals.actions";
|
||||||
import {selectBodyshop, selectCurrentUser} from "../../redux/user/user.selectors";
|
import {selectBodyshop} from "../../redux/user/user.selectors";
|
||||||
import CurrencyFormatter from "../../utils/CurrencyFormatter";
|
import CurrencyFormatter from "../../utils/CurrencyFormatter";
|
||||||
import {DateFormatter} from "../../utils/DateFormatter";
|
import {DateFormatter} from "../../utils/DateFormatter";
|
||||||
import {alphaSort, dateSort} from "../../utils/sorters";
|
import {alphaSort, dateSort} from "../../utils/sorters";
|
||||||
@@ -22,7 +22,10 @@ const mapStateToProps = createStructuredSelector({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
setBillEnterContext: (context) => dispatch(setModalContext({ context: context, modal: "billEnter" })),
|
setBillEnterContext: (context) => dispatch(setModalContext({
|
||||||
|
context: context,
|
||||||
|
modal: "billEnter"
|
||||||
|
})),
|
||||||
setReconciliationContext: (context) => dispatch(setModalContext({
|
setReconciliationContext: (context) => dispatch(setModalContext({
|
||||||
context: context,
|
context: context,
|
||||||
modal: "reconciliation"
|
modal: "reconciliation"
|
||||||
|
|||||||
@@ -31,14 +31,23 @@ import { Layout, Menu, Switch, Tooltip } from "antd";
|
|||||||
import React, {useEffect, useState} from "react";
|
import React, {useEffect, useState} from "react";
|
||||||
import {useTranslation} from "react-i18next";
|
import {useTranslation} from "react-i18next";
|
||||||
import {BsKanban} from "react-icons/bs";
|
import {BsKanban} from "react-icons/bs";
|
||||||
import { FaCalendarAlt, FaCarCrash, FaCreditCard, FaFileInvoiceDollar, FaTasks } from "react-icons/fa";
|
import {
|
||||||
|
FaCalendarAlt,
|
||||||
|
FaCarCrash,
|
||||||
|
FaCreditCard,
|
||||||
|
FaFileInvoiceDollar,
|
||||||
|
FaTasks
|
||||||
|
} from "react-icons/fa";
|
||||||
import {GiPayMoney, GiPlayerTime, GiSettingsKnobs} from "react-icons/gi";
|
import {GiPayMoney, GiPlayerTime, GiSettingsKnobs} from "react-icons/gi";
|
||||||
import {IoBusinessOutline} from "react-icons/io5";
|
import {IoBusinessOutline} from "react-icons/io5";
|
||||||
import {RiSurveyLine} from "react-icons/ri";
|
import {RiSurveyLine} from "react-icons/ri";
|
||||||
import {connect} from "react-redux";
|
import {connect} from "react-redux";
|
||||||
import {Link} from "react-router-dom";
|
import {Link} from "react-router-dom";
|
||||||
import {createStructuredSelector} from "reselect";
|
import {createStructuredSelector} from "reselect";
|
||||||
import { selectRecentItems, selectSelectedHeader } from "../../redux/application/application.selectors";
|
import {
|
||||||
|
selectRecentItems,
|
||||||
|
selectSelectedHeader
|
||||||
|
} from "../../redux/application/application.selectors";
|
||||||
import {setModalContext} from "../../redux/modals/modals.actions";
|
import {setModalContext} from "../../redux/modals/modals.actions";
|
||||||
import {signOutStart} from "../../redux/user/user.actions";
|
import {signOutStart} from "../../redux/user/user.actions";
|
||||||
import {selectBodyshop, selectCurrentUser} from "../../redux/user/user.selectors";
|
import {selectBodyshop, selectCurrentUser} from "../../redux/user/user.selectors";
|
||||||
@@ -55,13 +64,28 @@ const mapStateToProps = createStructuredSelector({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
setBillEnterContext: (context) => dispatch(setModalContext({ context: context, modal: "billEnter" })),
|
setBillEnterContext: (context) => dispatch(setModalContext({
|
||||||
setTimeTicketContext: (context) => dispatch(setModalContext({ context: context, modal: "timeTicket" })),
|
context: context,
|
||||||
|
modal: "billEnter"
|
||||||
|
})),
|
||||||
|
setTimeTicketContext: (context) => dispatch(setModalContext({
|
||||||
|
context: context,
|
||||||
|
modal: "timeTicket"
|
||||||
|
})),
|
||||||
setPaymentContext: (context) => dispatch(setModalContext({context: context, modal: "payment"})),
|
setPaymentContext: (context) => dispatch(setModalContext({context: context, modal: "payment"})),
|
||||||
setReportCenterContext: (context) => dispatch(setModalContext({ context: context, modal: "reportCenter" })),
|
setReportCenterContext: (context) => dispatch(setModalContext({
|
||||||
|
context: context,
|
||||||
|
modal: "reportCenter"
|
||||||
|
})),
|
||||||
signOutStart: () => dispatch(signOutStart()),
|
signOutStart: () => dispatch(signOutStart()),
|
||||||
setCardPaymentContext: (context) => dispatch(setModalContext({ context: context, modal: "cardPayment" })),
|
setCardPaymentContext: (context) => dispatch(setModalContext({
|
||||||
setTaskUpsertContext: (context) => dispatch(setModalContext({context: context, modal: 'taskUpsert'})),
|
context: context,
|
||||||
|
modal: "cardPayment"
|
||||||
|
})),
|
||||||
|
setTaskUpsertContext: (context) => dispatch(setModalContext({
|
||||||
|
context: context,
|
||||||
|
modal: 'taskUpsert'
|
||||||
|
})),
|
||||||
});
|
});
|
||||||
|
|
||||||
function Header({
|
function Header({
|
||||||
@@ -234,7 +258,8 @@ function Header({
|
|||||||
const accountingExportChildren = [
|
const accountingExportChildren = [
|
||||||
{
|
{
|
||||||
key: "receivables",
|
key: "receivables",
|
||||||
label: <Link to="/manage/accounting/receivables">{t("menus.header.accounting-receivables")}</Link>
|
label: <Link
|
||||||
|
to="/manage/accounting/receivables">{t("menus.header.accounting-receivables")}</Link>
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -404,12 +429,14 @@ function Header({
|
|||||||
{
|
{
|
||||||
key: "contracts",
|
key: "contracts",
|
||||||
icon: <FileFilled/>,
|
icon: <FileFilled/>,
|
||||||
label: <Link to="/manage/courtesycars/contracts">{t("menus.header.courtesycars-contracts")}</Link>
|
label: <Link
|
||||||
|
to="/manage/courtesycars/contracts">{t("menus.header.courtesycars-contracts")}</Link>
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "newcontract",
|
key: "newcontract",
|
||||||
icon: <FileAddFilled/>,
|
icon: <FileAddFilled/>,
|
||||||
label: <Link to="/manage/courtesycars/contracts/new">{t("menus.header.courtesycars-newcontract")}</Link>
|
label: <Link
|
||||||
|
to="/manage/courtesycars/contracts/new">{t("menus.header.courtesycars-newcontract")}</Link>
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,10 +11,7 @@ import AlertComponent from "../alert/alert.component";
|
|||||||
import {connect} from "react-redux";
|
import {connect} from "react-redux";
|
||||||
import {createStructuredSelector} from "reselect";
|
import {createStructuredSelector} from "reselect";
|
||||||
import {selectBodyshop, selectCurrentUser} from "../../redux/user/user.selectors";
|
import {selectBodyshop, selectCurrentUser} from "../../redux/user/user.selectors";
|
||||||
import {
|
import {QUERY_JOBLINE_TASKS_PAGINATED} from "../../graphql/tasks.queries.js";
|
||||||
QUERY_JOB_TASKS_PAGINATED,
|
|
||||||
QUERY_JOBLINE_TASKS_PAGINATED
|
|
||||||
} from "../../graphql/tasks.queries.js";
|
|
||||||
import TaskListContainer from "../task-list/task-list.container.jsx";
|
import TaskListContainer from "../task-list/task-list.container.jsx";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
@@ -118,7 +115,8 @@ export function JobLinesExpander({ jobline, jobid, bodyshop, currentUser }) {
|
|||||||
key: line.id,
|
key: line.id,
|
||||||
children: (
|
children: (
|
||||||
<Space split={<Divider type="vertical"/>} wrap>
|
<Space split={<Divider type="vertical"/>} wrap>
|
||||||
<Link to={`/manage/jobs/${jobid}?partsorderid=${line.id}`}>{line.parts_dispatch.number}</Link>
|
<Link
|
||||||
|
to={`/manage/jobs/${jobid}?partsorderid=${line.id}`}>{line.parts_dispatch.number}</Link>
|
||||||
{bodyshop.employees.find((e) => e.id === line.parts_dispatch.employeeid)?.first_name}
|
{bodyshop.employees.find((e) => e.id === line.parts_dispatch.employeeid)?.first_name}
|
||||||
<Space>
|
<Space>
|
||||||
{t("parts_dispatch_lines.fields.accepted_at")}
|
{t("parts_dispatch_lines.fields.accepted_at")}
|
||||||
@@ -135,7 +133,10 @@ export function JobLinesExpander({ jobline, jobid, bodyshop, currentUser }) {
|
|||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
<Col md={24} lg={24}>
|
<Col md={24} lg={24}>
|
||||||
<TaskListContainer currentUser={currentUser} bodyshop={bodyshop} parentJobId={jobid} relationshipType={'joblineid'} relationshipId={jobline.id} query={QUERY_JOBLINE_TASKS_PAGINATED} titleTranslation='tasks.titles.job_tasks'/>
|
<TaskListContainer currentUser={currentUser} bodyshop={bodyshop} parentJobId={jobid}
|
||||||
|
relationshipType={'joblineid'} relationshipId={jobline.id}
|
||||||
|
query={QUERY_JOBLINE_TASKS_PAGINATED}
|
||||||
|
titleTranslation='tasks.titles.job_tasks'/>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -465,7 +465,7 @@ export function JobLinesComponent({
|
|||||||
vendorid: bodyshop.inhousevendorid,
|
vendorid: bodyshop.inhousevendorid,
|
||||||
invoice_number: "ih",
|
invoice_number: "ih",
|
||||||
isinhouse: true,
|
isinhouse: true,
|
||||||
date: new dayjs(),
|
date: dayjs(),
|
||||||
total: 0,
|
total: 0,
|
||||||
billlines: selectedLines.map((p) => {
|
billlines: selectedLines.map((p) => {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ export function JobLineConvertToLabor({ children, jobline, job, insertAuditTrail
|
|||||||
setLoading(true);
|
setLoading(true);
|
||||||
|
|
||||||
form.setFieldsValue({
|
form.setFieldsValue({
|
||||||
// date: new dayjs(),
|
// date: dayjs(),
|
||||||
// bodyhrs: Math.round(v.bodyhrs * 10) / 10,
|
// bodyhrs: Math.round(v.bodyhrs * 10) / 10,
|
||||||
// painthrs: Math.round(v.painthrs * 10) / 10,
|
// painthrs: Math.round(v.painthrs * 10) / 10,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,13 +1,28 @@
|
|||||||
import {DownCircleFilled} from "@ant-design/icons";
|
import {DownCircleFilled} from "@ant-design/icons";
|
||||||
import {useApolloClient, useMutation} from "@apollo/client";
|
import {useApolloClient, useMutation} from "@apollo/client";
|
||||||
import { Button, Card, Dropdown, Form, Input, Modal, notification, Popconfirm, Popover, Select, Space } from "antd";
|
import {
|
||||||
|
Button,
|
||||||
|
Card,
|
||||||
|
Dropdown,
|
||||||
|
Form,
|
||||||
|
Input,
|
||||||
|
Modal,
|
||||||
|
notification,
|
||||||
|
Popconfirm,
|
||||||
|
Popover,
|
||||||
|
Select,
|
||||||
|
Space
|
||||||
|
} from "antd";
|
||||||
import React, {useMemo, useState} from "react";
|
import React, {useMemo, useState} from "react";
|
||||||
import {useTranslation} from "react-i18next";
|
import {useTranslation} from "react-i18next";
|
||||||
import {connect} from "react-redux";
|
import {connect} from "react-redux";
|
||||||
import {Link, useNavigate} from "react-router-dom";
|
import {Link, useNavigate} from "react-router-dom";
|
||||||
import {createStructuredSelector} from "reselect";
|
import {createStructuredSelector} from "reselect";
|
||||||
import {auth, logImEXEvent} from "../../firebase/firebase.utils";
|
import {auth, logImEXEvent} from "../../firebase/firebase.utils";
|
||||||
import { CANCEL_APPOINTMENTS_BY_JOB_ID, INSERT_MANUAL_APPT } from "../../graphql/appointments.queries";
|
import {
|
||||||
|
CANCEL_APPOINTMENTS_BY_JOB_ID,
|
||||||
|
INSERT_MANUAL_APPT
|
||||||
|
} from "../../graphql/appointments.queries";
|
||||||
import {DELETE_JOB, UPDATE_JOB, VOID_JOB} from "../../graphql/jobs.queries";
|
import {DELETE_JOB, UPDATE_JOB, VOID_JOB} from "../../graphql/jobs.queries";
|
||||||
import {insertAuditTrail} from "../../redux/application/application.actions";
|
import {insertAuditTrail} from "../../redux/application/application.actions";
|
||||||
import {selectJobReadOnly} from "../../redux/application/application.selectors";
|
import {selectJobReadOnly} from "../../redux/application/application.selectors";
|
||||||
@@ -29,7 +44,8 @@ import FormDateTimePickerComponent from "../form-date-time-picker/form-date-time
|
|||||||
import dayjs from "../../utils/day";
|
import dayjs from "../../utils/day";
|
||||||
import {useSplitTreatments} from "@splitsoftware/splitio-react";
|
import {useSplitTreatments} from "@splitsoftware/splitio-react";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import JobsDetailHeaderActionsToggleProduction from "./jobs-detail-header-actions.toggle-production";
|
import JobsDetailHeaderActionsToggleProduction
|
||||||
|
from "./jobs-detail-header-actions.toggle-production";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
@@ -39,13 +55,32 @@ const mapStateToProps = createStructuredSelector({
|
|||||||
|
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
setScheduleContext: (context) => dispatch(setModalContext({context: context, modal: "schedule"})),
|
setScheduleContext: (context) => dispatch(setModalContext({context: context, modal: "schedule"})),
|
||||||
setBillEnterContext: (context) => dispatch(setModalContext({ context: context, modal: "billEnter" })),
|
setBillEnterContext: (context) => dispatch(setModalContext({
|
||||||
|
context: context,
|
||||||
|
modal: "billEnter"
|
||||||
|
})),
|
||||||
setPaymentContext: (context) => dispatch(setModalContext({context: context, modal: "payment"})),
|
setPaymentContext: (context) => dispatch(setModalContext({context: context, modal: "payment"})),
|
||||||
setJobCostingContext: (context) => dispatch(setModalContext({ context: context, modal: "jobCosting" })),
|
setJobCostingContext: (context) => dispatch(setModalContext({
|
||||||
setTimeTicketContext: (context) => dispatch(setModalContext({ context: context, modal: "timeTicket" })),
|
context: context,
|
||||||
setCardPaymentContext: (context) => dispatch(setModalContext({ context: context, modal: "cardPayment" })),
|
modal: "jobCosting"
|
||||||
insertAuditTrail: ({ jobid, operation, type }) => dispatch(insertAuditTrail({ jobid, operation, type })),
|
})),
|
||||||
setTimeTicketTaskContext: (context) => dispatch(setModalContext({ context: context, modal: "timeTicketTask" })),
|
setTimeTicketContext: (context) => dispatch(setModalContext({
|
||||||
|
context: context,
|
||||||
|
modal: "timeTicket"
|
||||||
|
})),
|
||||||
|
setCardPaymentContext: (context) => dispatch(setModalContext({
|
||||||
|
context: context,
|
||||||
|
modal: "cardPayment"
|
||||||
|
})),
|
||||||
|
insertAuditTrail: ({jobid, operation, type}) => dispatch(insertAuditTrail({
|
||||||
|
jobid,
|
||||||
|
operation,
|
||||||
|
type
|
||||||
|
})),
|
||||||
|
setTimeTicketTaskContext: (context) => dispatch(setModalContext({
|
||||||
|
context: context,
|
||||||
|
modal: "timeTicketTask"
|
||||||
|
})),
|
||||||
setEmailOptions: (e) => dispatch(setEmailOptions(e)),
|
setEmailOptions: (e) => dispatch(setEmailOptions(e)),
|
||||||
openChatByPhone: (phone) => dispatch(openChatByPhone(phone)),
|
openChatByPhone: (phone) => dispatch(openChatByPhone(phone)),
|
||||||
setMessage: (text) => dispatch(setMessage(text))
|
setMessage: (text) => dispatch(setMessage(text))
|
||||||
@@ -645,7 +680,8 @@ export function JobsDetailHeaderActions({
|
|||||||
{
|
{
|
||||||
key: "checklist",
|
key: "checklist",
|
||||||
disabled: !job.converted,
|
disabled: !job.converted,
|
||||||
label: <Link to={`/manage/jobs/${job.id}/checklist`}>{t("jobs.actions.viewchecklist")}</Link>
|
label: <Link
|
||||||
|
to={`/manage/jobs/${job.id}/checklist`}>{t("jobs.actions.viewchecklist")}</Link>
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
rome: "USE_IMEX",
|
rome: "USE_IMEX",
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
import { BranchesOutlined, ExclamationCircleFilled, PauseCircleOutlined, SyncOutlined } from "@ant-design/icons";
|
import {
|
||||||
|
BranchesOutlined,
|
||||||
|
ExclamationCircleFilled,
|
||||||
|
PauseCircleOutlined,
|
||||||
|
SyncOutlined
|
||||||
|
} from "@ant-design/icons";
|
||||||
import {useQuery} from "@apollo/client";
|
import {useQuery} from "@apollo/client";
|
||||||
import {Button, Card, Grid, Input, Space, Table, Tooltip} from "antd";
|
import {Button, Card, Grid, Input, Space, Table, Tooltip} from "antd";
|
||||||
import queryString from "query-string";
|
import queryString from "query-string";
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import {logImEXEvent} from "../../firebase/firebase.utils";
|
|||||||
import {DELETE_PARTS_ORDER} from "../../graphql/parts-orders.queries";
|
import {DELETE_PARTS_ORDER} from "../../graphql/parts-orders.queries";
|
||||||
import {selectJobReadOnly} from "../../redux/application/application.selectors";
|
import {selectJobReadOnly} from "../../redux/application/application.selectors";
|
||||||
import {setModalContext} from "../../redux/modals/modals.actions";
|
import {setModalContext} from "../../redux/modals/modals.actions";
|
||||||
import {selectBodyshop, selectCurrentUser} from "../../redux/user/user.selectors";
|
import {selectBodyshop} from "../../redux/user/user.selectors";
|
||||||
import CurrencyFormatter from "../../utils/CurrencyFormatter";
|
import CurrencyFormatter from "../../utils/CurrencyFormatter";
|
||||||
import {DateFormatter} from "../../utils/DateFormatter";
|
import {DateFormatter} from "../../utils/DateFormatter";
|
||||||
import {alphaSort} from "../../utils/sorters";
|
import {alphaSort} from "../../utils/sorters";
|
||||||
@@ -33,11 +33,13 @@ import {FaTasks} from "react-icons/fa";
|
|||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
jobRO: selectJobReadOnly,
|
jobRO: selectJobReadOnly,
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
currentUser: selectCurrentUser
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
setBillEnterContext: (context) => dispatch(setModalContext({ context: context, modal: "billEnter" })),
|
setBillEnterContext: (context) => dispatch(setModalContext({
|
||||||
|
context: context,
|
||||||
|
modal: "billEnter"
|
||||||
|
})),
|
||||||
setPartsReceiveContext: (context) => dispatch(setModalContext({
|
setPartsReceiveContext: (context) => dispatch(setModalContext({
|
||||||
context: context,
|
context: context,
|
||||||
modal: "partsReceive"
|
modal: "partsReceive"
|
||||||
@@ -54,7 +56,6 @@ export function PartsOrderListTableComponent({
|
|||||||
handleOnRowClick,
|
handleOnRowClick,
|
||||||
setPartsReceiveContext,
|
setPartsReceiveContext,
|
||||||
setTaskUpsertContext,
|
setTaskUpsertContext,
|
||||||
currentUser
|
|
||||||
}) {
|
}) {
|
||||||
const selectedBreakpoint = Object.entries(Grid.useBreakpoint())
|
const selectedBreakpoint = Object.entries(Grid.useBreakpoint())
|
||||||
.filter((screen) => !!screen[1])
|
.filter((screen) => !!screen[1])
|
||||||
@@ -387,7 +388,8 @@ export function PartsOrderListTableComponent({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<PageHeader title={record && `${record.vendor.name} - ${record.order_number}`} extra={recordActions(record)} />
|
<PageHeader title={record && `${record.vendor.name} - ${record.order_number}`}
|
||||||
|
extra={recordActions(record)}/>
|
||||||
<Table
|
<Table
|
||||||
scroll={{
|
scroll={{
|
||||||
x: true //y: "50rem"
|
x: true //y: "50rem"
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ export function PartsOrderModalContainer({
|
|||||||
vendorid: bodyshop.inhousevendorid,
|
vendorid: bodyshop.inhousevendorid,
|
||||||
invoice_number: "ih",
|
invoice_number: "ih",
|
||||||
isinhouse: true,
|
isinhouse: true,
|
||||||
date: new dayjs(),
|
date: dayjs(),
|
||||||
total: 0,
|
total: 0,
|
||||||
billlines: values.parts_order_lines.data.map((p) => {
|
billlines: values.parts_order_lines.data.map((p) => {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -134,7 +134,8 @@ function TaskListComponent({
|
|||||||
width: '8%',
|
width: '8%',
|
||||||
render: (text, record) =>
|
render: (text, record) =>
|
||||||
record.job
|
record.job
|
||||||
? <Link to={`/manage/jobs/${record.job.id}`}>{record.job.ro_number || t("general.labels.na")}</Link>
|
? <Link
|
||||||
|
to={`/manage/jobs/${record.job.id}`}>{record.job.ro_number || t("general.labels.na")}</Link>
|
||||||
: t("general.labels.na")
|
: t("general.labels.na")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -151,7 +152,8 @@ function TaskListComponent({
|
|||||||
width: '8%',
|
width: '8%',
|
||||||
render: (text, record) =>
|
render: (text, record) =>
|
||||||
record.parts_order
|
record.parts_order
|
||||||
? <Link to={`/manage/jobs/${record.job.id}?partsorderid=${record.parts_order.id}&tab=partssublet`}>
|
? <Link
|
||||||
|
to={`/manage/jobs/${record.job.id}?partsorderid=${record.parts_order.id}&tab=partssublet`}>
|
||||||
{record.parts_order.order_number && record.parts_order.vendor && record.parts_order.vendor.name
|
{record.parts_order.order_number && record.parts_order.vendor && record.parts_order.vendor.name
|
||||||
? `${record.parts_order.order_number} - ${record.parts_order.vendor.name}`
|
? `${record.parts_order.order_number} - ${record.parts_order.vendor.name}`
|
||||||
: t("general.labels.na")}
|
: t("general.labels.na")}
|
||||||
|
|||||||
@@ -12,7 +12,16 @@ import TaskListComponent from "./task-list.component.jsx";
|
|||||||
import {notification} from "antd";
|
import {notification} from "antd";
|
||||||
import {useTranslation} from "react-i18next";
|
import {useTranslation} from "react-i18next";
|
||||||
|
|
||||||
export default function TaskListContainer({bodyshop, titleTranslation ,query, relationshipType, relationshipId, currentUser, onlyMine, parentJobId}) {
|
export default function TaskListContainer({
|
||||||
|
bodyshop,
|
||||||
|
titleTranslation,
|
||||||
|
query,
|
||||||
|
relationshipType,
|
||||||
|
relationshipId,
|
||||||
|
currentUser,
|
||||||
|
onlyMine,
|
||||||
|
parentJobId
|
||||||
|
}) {
|
||||||
const {t} = useTranslation();
|
const {t} = useTranslation();
|
||||||
const searchParams = queryString.parse(useLocation().search);
|
const searchParams = queryString.parse(useLocation().search);
|
||||||
const {page, sortcolumn, sortorder, deleted, completed, mine} = searchParams;
|
const {page, sortcolumn, sortorder, deleted, completed, mine} = searchParams;
|
||||||
|
|||||||
@@ -255,7 +255,8 @@ export function TaskUpsertModalContainer({
|
|||||||
destroyOnClose
|
destroyOnClose
|
||||||
>
|
>
|
||||||
<Form form={form} onFinish={handleFinish} layout="vertical">
|
<Form form={form} onFinish={handleFinish} layout="vertical">
|
||||||
<TaskUpsertModalComponent form={form} loading={loading || (taskId && taskLoading)} error={error} data={data}
|
<TaskUpsertModalComponent form={form} loading={loading || (taskId && taskLoading)}
|
||||||
|
error={error} data={data}
|
||||||
selectedJobId={selectedJobId}
|
selectedJobId={selectedJobId}
|
||||||
setSelectedJobId={setSelectedJobId}
|
setSelectedJobId={setSelectedJobId}
|
||||||
selectedJobDetails={selectedJobDetails}/>
|
selectedJobDetails={selectedJobDetails}/>
|
||||||
|
|||||||
@@ -406,9 +406,13 @@ export function JobsDetailPage({
|
|||||||
key: 'tasks',
|
key: 'tasks',
|
||||||
icon: <FaTasks/>,
|
icon: <FaTasks/>,
|
||||||
label: <Space direction='horizontal'>
|
label: <Space direction='horizontal'>
|
||||||
{t("jobs.labels.tasks")}{job.tasks_aggregate.aggregate.count > 0 && <Badge count={job.tasks_aggregate.aggregate.count} />}
|
{t("jobs.labels.tasks")}{job.tasks_aggregate.aggregate.count > 0 &&
|
||||||
|
<Badge count={job.tasks_aggregate.aggregate.count}/>}
|
||||||
</Space>,
|
</Space>,
|
||||||
children: <TaskListContainer currentUser={currentUser} bodyshop={bodyshop} relationshipType={'jobid'} relationshipId={job.id} query={QUERY_JOB_TASKS_PAGINATED} titleTranslation='tasks.titles.job_tasks'/>
|
children: <TaskListContainer currentUser={currentUser} bodyshop={bodyshop}
|
||||||
|
relationshipType={'jobid'} relationshipId={job.id}
|
||||||
|
query={QUERY_JOB_TASKS_PAGINATED}
|
||||||
|
titleTranslation='tasks.titles.job_tasks'/>
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { FloatButton, Layout, Spin, Collapse, Button, Space, Tag } from "antd";
|
import {Button, Collapse, FloatButton, Layout, Space, Spin, Tag} from "antd";
|
||||||
// import preval from "preval.macro";
|
// import preval from "preval.macro";
|
||||||
import React, {lazy, Suspense, useEffect, useState} from "react";
|
import React, {lazy, Suspense, useEffect, useState} from "react";
|
||||||
import {useTranslation} from "react-i18next";
|
import {useTranslation} from "react-i18next";
|
||||||
@@ -647,7 +647,8 @@ export function Manage({ conflict, bodyshop, enableJoyRide, joyRideSteps, setJoy
|
|||||||
Get Tours
|
Get Tours
|
||||||
</Button>
|
</Button>
|
||||||
{tours.map((tour) => (
|
{tours.map((tour) => (
|
||||||
<Tag key={tour.id} onClick={() => window.productFruits.api.tours.tryStartTour(tour.id)}>
|
<Tag key={tour.id}
|
||||||
|
onClick={() => window.productFruits.api.tours.tryStartTour(tour.id)}>
|
||||||
{tour.name}
|
{tour.name}
|
||||||
</Tag>
|
</Tag>
|
||||||
))}
|
))}
|
||||||
|
|||||||
@@ -64,7 +64,8 @@ export function MyTasksPageContainer({
|
|||||||
}, [setTaskUpsertContext]);
|
}, [setTaskUpsertContext]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TasksPageComponent type={TaskPageTypes.ALL_TASKS} currentUser={currentUser} bodyshop={bodyshop}/>
|
<TasksPageComponent type={TaskPageTypes.ALL_TASKS} currentUser={currentUser}
|
||||||
|
bodyshop={bodyshop}/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ export function MyTasksPageContainer({bodyshop, currentUser, setBreadcrumbs, set
|
|||||||
}, [t, setBreadcrumbs, setSelectedHeader]);
|
}, [t, setBreadcrumbs, setSelectedHeader]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TasksPageComponent type={TaskPageTypes.MY_TASKS} currentUser={currentUser} bodyshop={bodyshop}/>
|
<TasksPageComponent type={TaskPageTypes.MY_TASKS} currentUser={currentUser}
|
||||||
|
bodyshop={bodyshop}/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user