Minor random fixes

This commit is contained in:
Patrick Fic
2020-07-23 14:39:45 -07:00
parent 8a4f0dda44
commit acd8984d5b
18 changed files with 389 additions and 353 deletions

View File

@@ -1,4 +1,4 @@
import { LoadingOutlined } from "@ant-design/icons"; import { LoadingOutlined, SendOutlined } from "@ant-design/icons";
import { Input, Spin } from "antd"; import { Input, Spin } from "antd";
import React, { useEffect, useRef } from "react"; import React, { useEffect, useRef } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
@@ -52,12 +52,12 @@ function ChatSendMessageComponent({
}; };
return ( return (
<div style={{ display: "flex " }}> <div className="imex-flex-row">
<Input.TextArea <Input.TextArea
className="imex-flex-row__margin imex-flex-row__grow"
allowClear allowClear
autoFocus autoFocus
ref={inputArea} ref={inputArea}
suffix={<span>a</span>}
autoSize={{ minRows: 1, maxRows: 4 }} autoSize={{ minRows: 1, maxRows: 4 }}
value={message} value={message}
disabled={isSending} disabled={isSending}
@@ -68,6 +68,7 @@ function ChatSendMessageComponent({
if (!!!event.shiftKey) handleEnter(); if (!!!event.shiftKey) handleEnter();
}} }}
/> />
<SendOutlined className="imex-flex-row__margin" onClick={handleEnter} />
<Spin <Spin
style={{ display: `${isSending ? "" : "none"}` }} style={{ display: `${isSending ? "" : "none"}` }}
indicator={ indicator={

View File

@@ -1,12 +1,12 @@
import React, { useState, useEffect } from "react"; import React, { useState, useEffect, forwardRef } from "react";
import { Select } from "antd"; import { Select } from "antd";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
const { Option } = Select; const { Option } = Select;
const ContractStatusComponent = ({ const ContractStatusComponent = (
value = "contracts.status.new", { value = "contracts.status.new", onChange },
onChange ref
}) => { ) => {
const [option, setOption] = useState(value); const [option, setOption] = useState(value);
const { t } = useTranslation(); const { t } = useTranslation();
@@ -20,7 +20,7 @@ const ContractStatusComponent = ({
<Select <Select
value={option} value={option}
style={{ style={{
width: 100 width: 100,
}} }}
onChange={setOption} onChange={setOption}
> >
@@ -32,4 +32,4 @@ const ContractStatusComponent = ({
</Select> </Select>
); );
}; };
export default ContractStatusComponent; export default forwardRef(ContractStatusComponent);

View File

@@ -4,6 +4,7 @@ function FormItemCurrency(props, ref) {
return ( return (
<InputNumber <InputNumber
{...props} {...props}
ref={ref}
style={{ width: "initial" }} style={{ width: "initial" }}
// formatter={(value) => `$ ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",")} // formatter={(value) => `$ ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",")}
// parser={(value) => value.replace(/\$\s?|(,*)/g, "")} // parser={(value) => value.replace(/\$\s?|(,*)/g, "")}

View File

@@ -5,6 +5,7 @@ function FormItemEmail(props, ref) {
return ( return (
<Input <Input
{...props} {...props}
ref={ref}
addonAfter={ addonAfter={
props.defaultValue || props.value ? ( props.defaultValue || props.value ? (
<a href={`mailto:${props.defaultValue || props.value}`}> <a href={`mailto:${props.defaultValue || props.value}`}>

View File

@@ -1,14 +1,7 @@
import React, { forwardRef } from "react"; import React, { forwardRef } from "react";
import NumberFormat from "react-number-format"; import NumberFormat from "react-number-format";
function FormItemPhone(props, ref) { function FormItemPhone(props, ref) {
return ( return <NumberFormat {...props} ref={ref} type="tel" format="###-###-####" />;
<NumberFormat
{...props}
type="tel"
format="###-###-####"
/>
);
} }
export default forwardRef(FormItemPhone); export default forwardRef(FormItemPhone);

View File

@@ -1,9 +1,9 @@
import { Button } from "antd"; import { Button } from "antd";
import React from "react"; import React, { forwardRef } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import AlertComponent from "../alert/alert.component"; import AlertComponent from "../alert/alert.component";
export default function ResetForm({ resetFields }) { function ResetForm({ resetFields }) {
const { t } = useTranslation(); const { t } = useTranslation();
return ( return (
<AlertComponent <AlertComponent
@@ -19,3 +19,5 @@ export default function ResetForm({ resetFields }) {
/> />
); );
} }
export default forwardRef(ResetForm);

View File

@@ -27,9 +27,10 @@ export default function GlobalSearch() {
{title} {title}
<a <a
style={{ float: "right" }} style={{ float: "right" }}
href='https://www.google.com/search?q=antd' href="https://www.google.com/search?q=antd"
target='_blank' target="_blank"
rel='noopener noreferrer'> rel="noopener noreferrer"
>
more more
</a> </a>
</span> </span>
@@ -45,8 +46,8 @@ export default function GlobalSearch() {
value: job.ro_number, value: job.ro_number,
label: ( label: (
<Link to={`/manage/jobs/${job.id}`}> <Link to={`/manage/jobs/${job.id}`}>
<div className='imex-flex-row'> <div className="imex-flex-row">
<span className='imex-flex-row__margin-large'> <span className="imex-flex-row__margin-large">
<strong> <strong>
{job.ro_number {job.ro_number
? `${job.ro_number || ""} / ${job.est_number || ""}` ? `${job.ro_number || ""} / ${job.est_number || ""}`
@@ -54,16 +55,16 @@ export default function GlobalSearch() {
</strong> </strong>
</span> </span>
<span className='imex-flex-row__margin-large'>{`${ <span className="imex-flex-row__margin-large">{`${
job.ownr_fn || "" job.ownr_fn || ""
} ${job.ownr_ln || ""} ${job.ownr_co_nm || ""}`}</span> } ${job.ownr_ln || ""} ${job.ownr_co_nm || ""}`}</span>
<span className='imex-flex-row__margin-large'>{`${ <span className="imex-flex-row__margin-large">{`${
job.v_model_yr || "" job.v_model_yr || ""
} ${job.v_make_desc || ""} ${ } ${job.v_make_desc || ""} ${
job.v_model_desc || "" job.v_model_desc || ""
}`}</span> }`}</span>
<span className='imex-flex-row__margin-large'>{`${job.clm_no}`}</span> <span className="imex-flex-row__margin-large">{`${job.clm_no}`}</span>
<span className='imex-flex-row__margin-large imex-flex-row__grow'> <span className="imex-flex-row__margin-large imex-flex-row__grow">
<CurrencyFormatter>{`${job.clm_total}`}</CurrencyFormatter> <CurrencyFormatter>{`${job.clm_total}`}</CurrencyFormatter>
</span> </span>
</div> </div>
@@ -81,8 +82,8 @@ export default function GlobalSearch() {
}`, }`,
label: ( label: (
<Link to={`/manage/owners/${owner.id}`}> <Link to={`/manage/owners/${owner.id}`}>
<div className='imex-flex-row'> <div className="imex-flex-row">
<span className='imex-flex-row__margin-large'>{`${ <span className="imex-flex-row__margin-large">{`${
owner.ownr_fn || "" owner.ownr_fn || ""
} ${owner.ownr_ln || ""} ${owner.ownr_co_nm || ""}`}</span> } ${owner.ownr_ln || ""} ${owner.ownr_co_nm || ""}`}</span>
</div> </div>
@@ -100,8 +101,8 @@ export default function GlobalSearch() {
} ${vehicle.v_model_desc || ""}`, } ${vehicle.v_model_desc || ""}`,
label: ( label: (
<Link to={`/manage/vehicles/${vehicle.id}`}> <Link to={`/manage/vehicles/${vehicle.id}`}>
<div className='imex-flex-row'> <div className="imex-flex-row">
<span className='imex-flex-row__margin-large'>{`${ <span className="imex-flex-row__margin-large">{`${
vehicle.v_model_yr || "" vehicle.v_model_yr || ""
} ${vehicle.v_make_desc || ""} ${ } ${vehicle.v_make_desc || ""} ${
vehicle.v_model_desc || "" vehicle.v_model_desc || ""
@@ -119,11 +120,11 @@ export default function GlobalSearch() {
value: `${payment.job.ro_number} ${payment.payer} ${payment.amount}`, value: `${payment.job.ro_number} ${payment.payer} ${payment.amount}`,
label: ( label: (
<Link to={`/manage/jobs/${payment.job.id}`}> <Link to={`/manage/jobs/${payment.job.id}`}>
<div className='imex-flex-row'> <div className="imex-flex-row">
<span className='imex-flex-row__margin-large'>{`${payment.job.ro_number}`}</span> <span className="imex-flex-row__margin-large">{`${payment.job.ro_number}`}</span>
<span className='imex-flex-row__margin-large'>{`${payment.job.memo}`}</span> <span className="imex-flex-row__margin-large">{`${payment.job.memo}`}</span>
<span className='imex-flex-row__margin-large'>{`${payment.job.amount}`}</span> <span className="imex-flex-row__margin-large">{`${payment.job.amount}`}</span>
<span className='imex-flex-row__margin-large'>{`${payment.job.transactionid}`}</span> <span className="imex-flex-row__margin-large">{`${payment.job.transactionid}`}</span>
</div> </div>
</Link> </Link>
), ),
@@ -133,16 +134,16 @@ export default function GlobalSearch() {
] ]
: []; : [];
if (error) return <AlertComponent message={error.message} type='error' />; if (error) return <AlertComponent message={error.message} type="error" />;
return ( return (
<div> <div>
<AutoComplete <AutoComplete
dropdownClassName='certain-category-search-dropdown'
dropdownMatchSelectWidth={false} dropdownMatchSelectWidth={false}
style={{ width: 250 }} style={{ width: 200 }}
options={options}> options={options}
<Input.Search size='large' loading={loading} onSearch={handleSearch} /> >
<Input.Search loading={loading} onSearch={handleSearch} />
</AutoComplete> </AutoComplete>
</div> </div>
); );

View File

@@ -43,8 +43,9 @@ const logoSpan = {
xs: { xs: {
span: 0, span: 0,
}, },
sm: { span: 0 },
md: { md: {
span: 1, span: 0,
}, },
lg: { lg: {
span: 2, span: 2,
@@ -52,12 +53,9 @@ const logoSpan = {
}; };
const menuSpan = { const menuSpan = {
xs: {
span: 24,
},
md: { md: {
span: 22, span: 24,
offset: 1, //offset: 1,
}, },
lg: { lg: {
span: 21, span: 21,
@@ -82,7 +80,7 @@ function Header({
<Row> <Row>
<Col {...logoSpan}> <Col {...logoSpan}>
<img <img
className='header-shop-logo' className="header-shop-logo"
alt={bodyshop ? bodyshop.shopname : "ImEX Online Logo"} alt={bodyshop ? bodyshop.shopname : "ImEX Online Logo"}
src={ src={
bodyshop && bodyshop.logo_img_path bodyshop && bodyshop.logo_img_path
@@ -93,16 +91,14 @@ function Header({
</Col> </Col>
<Col {...menuSpan}> <Col {...menuSpan}>
<Menu <Menu
mode='horizontal' mode="horizontal"
theme='dark' theme="dark"
className='header-main-menu' className="header-main-menu"
selectedKeys={["home"]} selectedKeys={["home"]}
onClick={handleMenuClick}> onClick={handleMenuClick}
<Menu.Item> >
<GlobalSearch /> <Menu.Item key="home">
</Menu.Item> <Link to="/manage">
<Menu.Item key='home'>
<Link to='/manage'>
<HomeFilled /> <HomeFilled />
{t("menus.header.home")} {t("menus.header.home")}
</Link> </Link>
@@ -113,50 +109,51 @@ function Header({
<Icon component={FaCarCrash} /> <Icon component={FaCarCrash} />
<span>{t("menus.header.jobs")}</span> <span>{t("menus.header.jobs")}</span>
</span> </span>
}> }
<Menu.Item key='schedule'> >
<Link to='/manage/schedule'> <Menu.Item key="schedule">
<Link to="/manage/schedule">
<Icon component={FaCalendarAlt} /> <Icon component={FaCalendarAlt} />
{t("menus.header.schedule")} {t("menus.header.schedule")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='productionlist'> <Menu.Item key="productionlist">
<Link to='/manage/production/list'> <Link to="/manage/production/list">
<Icon component={FaCalendarAlt} /> <Icon component={FaCalendarAlt} />
{t("menus.header.productionlist")} {t("menus.header.productionlist")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='productionboard'> <Menu.Item key="productionboard">
<Link to='/manage/production/board'> <Link to="/manage/production/board">
{t("menus.header.productionboard")} {t("menus.header.productionboard")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='scoreboard'> <Menu.Item key="scoreboard">
<Link to='/manage/scoreboard'> <Link to="/manage/scoreboard">
{t("menus.header.scoreboard")} {t("menus.header.scoreboard")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='activejobs'> <Menu.Item key="activejobs">
<Link to='/manage/jobs'>{t("menus.header.activejobs")}</Link> <Link to="/manage/jobs">{t("menus.header.activejobs")}</Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='alljobs'> <Menu.Item key="alljobs">
<Link to='/manage/jobs/all'>{t("menus.header.alljobs")}</Link> <Link to="/manage/jobs/all">{t("menus.header.alljobs")}</Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='availablejobs'> <Menu.Item key="availablejobs">
<Link to='/manage/available'> <Link to="/manage/available">
{t("menus.header.availablejobs")} {t("menus.header.availablejobs")}
</Link> </Link>
</Menu.Item> </Menu.Item>
</Menu.SubMenu> </Menu.SubMenu>
<Menu.SubMenu title={t("menus.header.customers")}> <Menu.SubMenu title={t("menus.header.customers")}>
<Menu.Item key='owners'> <Menu.Item key="owners">
<Link to='/manage/owners'> <Link to="/manage/owners">
<TeamOutlined /> <TeamOutlined />
{t("menus.header.owners")} {t("menus.header.owners")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='vehicles'> <Menu.Item key="vehicles">
<Link to='/manage/vehicles'> <Link to="/manage/vehicles">
<CarFilled /> <CarFilled />
{t("menus.header.vehicles")} {t("menus.header.vehicles")}
</Link> </Link>
@@ -168,21 +165,22 @@ function Header({
<CarFilled /> <CarFilled />
<span>{t("menus.header.courtesycars")}</span> <span>{t("menus.header.courtesycars")}</span>
</span> </span>
}> }
<Menu.Item key='courtesycarsall'> >
<Link to='/manage/courtesycars'> <Menu.Item key="courtesycarsall">
<Link to="/manage/courtesycars">
<CarFilled /> <CarFilled />
{t("menus.header.courtesycars-all")} {t("menus.header.courtesycars-all")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='contracts'> <Menu.Item key="contracts">
<Link to='/manage/courtesycars/contracts'> <Link to="/manage/courtesycars/contracts">
<FileFilled /> <FileFilled />
{t("menus.header.courtesycars-contracts")} {t("menus.header.courtesycars-contracts")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='newcontract'> <Menu.Item key="newcontract">
<Link to='/manage/courtesycars/contracts/new'> <Link to="/manage/courtesycars/contracts/new">
<FileAddFilled /> <FileAddFilled />
{t("menus.header.courtesycars-newcontract")} {t("menus.header.courtesycars-newcontract")}
</Link> </Link>
@@ -194,90 +192,97 @@ function Header({
<DollarCircleFilled /> <DollarCircleFilled />
<span>{t("menus.header.accounting")}</span> <span>{t("menus.header.accounting")}</span>
</span> </span>
}> }
>
<Menu.Item <Menu.Item
key='enterpayments' key="enterpayments"
onClick={() => { onClick={() => {
setPaymentContext({ setPaymentContext({
actions: {}, actions: {},
context: {}, context: {},
}); });
}}> }}
>
<Icon component={FaCreditCard} /> <Icon component={FaCreditCard} />
{t("menus.header.enterpayment")} {t("menus.header.enterpayment")}
</Menu.Item> </Menu.Item>
<Menu.Item <Menu.Item
key='enterinvoices' key="enterinvoices"
onClick={() => { onClick={() => {
setInvoiceEnterContext({ setInvoiceEnterContext({
actions: {}, actions: {},
context: {}, context: {},
}); });
}}> }}
>
{t("menus.header.enterinvoices")} {t("menus.header.enterinvoices")}
</Menu.Item> </Menu.Item>
<Menu.Item key='invoices'> <Menu.Item key="invoices">
<Link to='/manage/invoices'>{t("menus.header.invoices")}</Link> <Link to="/manage/invoices">{t("menus.header.invoices")}</Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='timetickets'> <Menu.Item key="timetickets">
<Link to='/manage/timetickets'> <Link to="/manage/timetickets">
{t("menus.header.timetickets")} {t("menus.header.timetickets")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item <Menu.Item
key='entertimetickets' key="entertimetickets"
onClick={() => { onClick={() => {
setTimeTicketContext({ setTimeTicketContext({
actions: {}, actions: {},
context: {}, context: {},
}); });
}}> }}
>
{t("menus.header.entertimeticket")} {t("menus.header.entertimeticket")}
</Menu.Item> </Menu.Item>
<Menu.SubMenu title={t("menus.header.export")}> <Menu.SubMenu title={t("menus.header.export")}>
<Menu.Item key='receivables'> <Menu.Item key="receivables">
<Link to='/manage/accounting/receivables'> <Link to="/manage/accounting/receivables">
{t("menus.header.accounting-receivables")} {t("menus.header.accounting-receivables")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='payables'> <Menu.Item key="payables">
<Link to='/manage/accounting/payables'> <Link to="/manage/accounting/payables">
{t("menus.header.accounting-payables")} {t("menus.header.accounting-payables")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='payments'> <Menu.Item key="payments">
<Link to='/manage/accounting/payments'> <Link to="/manage/accounting/payments">
{t("menus.header.accounting-payments")} {t("menus.header.accounting-payments")}
</Link> </Link>
</Menu.Item> </Menu.Item>
</Menu.SubMenu> </Menu.SubMenu>
<Menu.Item key='allpayments'> <Menu.Item key="allpayments">
<Link to='/manage/payments'> <Link to="/manage/payments">
{t("menus.header.allpayments")} {t("menus.header.allpayments")}
</Link> </Link>
</Menu.Item> </Menu.Item>
</Menu.SubMenu> </Menu.SubMenu>
<Menu.SubMenu title={t("menus.header.shop")}> <Menu.SubMenu title={t("menus.header.shop")}>
<Menu.Item key='shop'> <Menu.Item key="shop">
<Link to='/manage/shop'>{t("menus.header.shop_config")}</Link> <Link to="/manage/shop">{t("menus.header.shop_config")}</Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='shop-templates'> <Menu.Item key="shop-templates">
<Link to='/manage/shop/templates'> <Link to="/manage/shop/templates">
{t("menus.header.shop_templates")} {t("menus.header.shop_templates")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='shop-vendors'> <Menu.Item key="shop-vendors">
<Link to='/manage/shop/vendors'> <Link to="/manage/shop/vendors">
{t("menus.header.shop_vendors")} {t("menus.header.shop_vendors")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item key='shop-csi'> <Menu.Item key="shop-csi">
<Link to='/manage/shop/csi'>{t("menus.header.shop_csi")}</Link> <Link to="/manage/shop/csi">{t("menus.header.shop_csi")}</Link>
</Menu.Item> </Menu.Item>
</Menu.SubMenu> </Menu.SubMenu>
<Menu.Item>
<GlobalSearch />
</Menu.Item>
<Menu.SubMenu <Menu.SubMenu
title={ title={
<div> <div>
@@ -300,17 +305,18 @@ function Header({
{currentUser.displayName || t("general.labels.unknown")} {currentUser.displayName || t("general.labels.unknown")}
</div> </div>
}> }
>
<Menu.Item danger onClick={() => signOutStart()}> <Menu.Item danger onClick={() => signOutStart()}>
{t("user.actions.signout")} {t("user.actions.signout")}
</Menu.Item> </Menu.Item>
<Menu.Item key='shiftclock'> <Menu.Item key="shiftclock">
<Link to='/manage/shiftclock'> <Link to="/manage/shiftclock">
{t("menus.header.shiftclock")} {t("menus.header.shiftclock")}
</Link> </Link>
</Menu.Item> </Menu.Item>
<Menu.Item> <Menu.Item>
<Link to='/manage/profile'> <Link to="/manage/profile">
{t("menus.currentuser.profile")} {t("menus.currentuser.profile")}
</Link> </Link>
</Menu.Item> </Menu.Item>
@@ -320,14 +326,15 @@ function Header({
<GlobalOutlined /> <GlobalOutlined />
<span>{t("menus.currentuser.languageselector")}</span> <span>{t("menus.currentuser.languageselector")}</span>
</span> </span>
}> }
<Menu.Item actiontype='lang-select' key='en-US'> >
<Menu.Item actiontype="lang-select" key="en-US">
{t("general.languages.english")} {t("general.languages.english")}
</Menu.Item> </Menu.Item>
<Menu.Item actiontype='lang-select' key='fr-CA'> <Menu.Item actiontype="lang-select" key="fr-CA">
{t("general.languages.french")} {t("general.languages.french")}
</Menu.Item> </Menu.Item>
<Menu.Item actiontype='lang-select' key='es-MX'> <Menu.Item actiontype="lang-select" key="es-MX">
{t("general.languages.spanish")} {t("general.languages.spanish")}
</Menu.Item> </Menu.Item>
</Menu.SubMenu> </Menu.SubMenu>

View File

@@ -1,4 +1,8 @@
import { DeleteFilled, PlusCircleFilled, SyncOutlined } from "@ant-design/icons"; import {
DeleteFilled,
PlusCircleFilled,
SyncOutlined,
} from "@ant-design/icons";
import { Button, notification, Table } from "antd"; import { Button, notification, Table } from "antd";
import React, { useState } from "react"; import React, { useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
@@ -20,13 +24,13 @@ export default function JobsAvailableComponent({
selectedOwner, selectedOwner,
setSelectedOwner, setSelectedOwner,
loadEstData, loadEstData,
estData estData,
}) { }) {
const { t } = useTranslation(); const { t } = useTranslation();
const [state, setState] = useState({ const [state, setState] = useState({
sortedInfo: {}, sortedInfo: {},
filteredInfo: { text: "" } filteredInfo: { text: "" },
}); });
const handleTableChange = (pagination, filters, sorter) => { const handleTableChange = (pagination, filters, sorter) => {
@@ -43,7 +47,7 @@ export default function JobsAvailableComponent({
// filteredValue: state.filteredInfo.text || null, // filteredValue: state.filteredInfo.text || null,
sorter: (a, b) => alphaSort(a, b), sorter: (a, b) => alphaSort(a, b),
sortOrder: sortOrder:
state.sortedInfo.columnKey === "cieca_id" && state.sortedInfo.order state.sortedInfo.columnKey === "cieca_id" && state.sortedInfo.order,
}, },
{ {
title: t("jobs.fields.owner"), title: t("jobs.fields.owner"),
@@ -53,7 +57,7 @@ export default function JobsAvailableComponent({
sorter: (a, b) => alphaSort(a.ownr_ln, b.ownr_ln), sorter: (a, b) => alphaSort(a.ownr_ln, b.ownr_ln),
//width: "25%", //width: "25%",
sortOrder: sortOrder:
state.sortedInfo.columnKey === "ownr_name" && state.sortedInfo.order state.sortedInfo.columnKey === "ownr_name" && state.sortedInfo.order,
}, },
{ {
title: t("jobs.fields.vehicle"), title: t("jobs.fields.vehicle"),
@@ -61,7 +65,7 @@ export default function JobsAvailableComponent({
key: "vehicle_info", key: "vehicle_info",
sorter: (a, b) => alphaSort(a.vehicle_info, b.vehicle_info), sorter: (a, b) => alphaSort(a.vehicle_info, b.vehicle_info),
sortOrder: sortOrder:
state.sortedInfo.columnKey === "vehicle_info" && state.sortedInfo.order state.sortedInfo.columnKey === "vehicle_info" && state.sortedInfo.order,
//ellipsis: true //ellipsis: true
}, },
{ {
@@ -70,7 +74,7 @@ export default function JobsAvailableComponent({
key: "clm_no", key: "clm_no",
sorter: (a, b) => alphaSort(a.clm_no, b.clm_no), sorter: (a, b) => alphaSort(a.clm_no, b.clm_no),
sortOrder: sortOrder:
state.sortedInfo.columnKey === "clm_no" && state.sortedInfo.order state.sortedInfo.columnKey === "clm_no" && state.sortedInfo.order,
//width: "12%", //width: "12%",
//ellipsis: true //ellipsis: true
}, },
@@ -83,7 +87,7 @@ export default function JobsAvailableComponent({
state.sortedInfo.columnKey === "clm_amt" && state.sortedInfo.order, state.sortedInfo.columnKey === "clm_amt" && state.sortedInfo.order,
render: (text, record) => ( render: (text, record) => (
<CurrencyFormatter>{record.clm_amt}</CurrencyFormatter> <CurrencyFormatter>{record.clm_amt}</CurrencyFormatter>
) ),
//width: "12%", //width: "12%",
//ellipsis: true //ellipsis: true
}, },
@@ -93,7 +97,7 @@ export default function JobsAvailableComponent({
key: "uploaded_by", key: "uploaded_by",
sorter: (a, b) => alphaSort(a.uploaded_by, b.uploaded_by), sorter: (a, b) => alphaSort(a.uploaded_by, b.uploaded_by),
sortOrder: sortOrder:
state.sortedInfo.columnKey === "uploaded_by" && state.sortedInfo.order state.sortedInfo.columnKey === "uploaded_by" && state.sortedInfo.order,
//width: "12%", //width: "12%",
//ellipsis: true //ellipsis: true
}, },
@@ -106,7 +110,7 @@ export default function JobsAvailableComponent({
state.sortedInfo.columnKey === "updated_at" && state.sortedInfo.order, state.sortedInfo.columnKey === "updated_at" && state.sortedInfo.order,
render: (text, record) => ( render: (text, record) => (
<DateTimeFormatter>{record.updated_at}</DateTimeFormatter> <DateTimeFormatter>{record.updated_at}</DateTimeFormatter>
) ),
//width: "12%", //width: "12%",
//ellipsis: true //ellipsis: true
}, },
@@ -117,9 +121,9 @@ export default function JobsAvailableComponent({
<span> <span>
<Button <Button
onClick={() => { onClick={() => {
deleteJob({ variables: { id: record.id } }).then(r => { deleteJob({ variables: { id: record.id } }).then((r) => {
notification["success"]({ notification["success"]({
message: t("jobs.successes.deleted") message: t("jobs.successes.deleted"),
}); });
refetch(); refetch();
}); });
@@ -136,10 +140,10 @@ export default function JobsAvailableComponent({
<PlusCircleFilled /> <PlusCircleFilled />
</Button> </Button>
</span> </span>
) ),
//width: "12%", //width: "12%",
//ellipsis: true //ellipsis: true
} },
]; ];
const owner = const owner =
@@ -169,9 +173,12 @@ export default function JobsAvailableComponent({
loading={loading} loading={loading}
title={() => { title={() => {
return ( return (
<div> <div className="imex-flex-row">
<strong>{t("jobs.labels.availablenew")}</strong> <strong className="imex-flex-row__margin">
{t("jobs.labels.availablenew")}
</strong>
<Button <Button
className="imex-flex-row__margin"
onClick={() => { onClick={() => {
refetch(); refetch();
}} }}
@@ -179,19 +186,20 @@ export default function JobsAvailableComponent({
<SyncOutlined /> <SyncOutlined />
</Button> </Button>
<Button <Button
className="imex-flex-row__margin"
onClick={() => { onClick={() => {
deleteAllNewJobs() deleteAllNewJobs()
.then(r => { .then((r) => {
notification["success"]({ notification["success"]({
message: t("jobs.successes.all_deleted", { message: t("jobs.successes.all_deleted", {
count: r.data.delete_available_jobs.affected_rows count: r.data.delete_available_jobs.affected_rows,
}) }),
}); });
refetch(); refetch();
}) })
.catch(r => { .catch((r) => {
notification["error"]({ notification["error"]({
message: t("jobs.errors.deleted") + " " + r.message message: t("jobs.errors.deleted") + " " + r.message,
}); });
}); });
}} }}
@@ -203,7 +211,7 @@ export default function JobsAvailableComponent({
}} }}
size="small" size="small"
pagination={{ position: "top" }} pagination={{ position: "top" }}
columns={columns.map(item => ({ ...item }))} columns={columns.map((item) => ({ ...item }))}
rowKey="id" rowKey="id"
dataSource={data && data.available_jobs} dataSource={data && data.available_jobs}
onChange={handleTableChange} onChange={handleTableChange}

View File

@@ -141,7 +141,8 @@ export default function JobsAvailableSupplementComponent({
}); });
refetch(); refetch();
}); });
}}> }}
>
<DeleteFilled /> <DeleteFilled />
</Button> </Button>
<Button <Button
@@ -149,7 +150,8 @@ export default function JobsAvailableSupplementComponent({
loadEstData({ variables: { id: record.id } }); loadEstData({ variables: { id: record.id } });
modalSearchState[1](record.clm_no); modalSearchState[1](record.clm_no);
setModalVisible(true); setModalVisible(true);
}}> }}
>
<PlusCircleFilled /> <PlusCircleFilled />
</Button> </Button>
</span> </span>
@@ -191,22 +193,31 @@ export default function JobsAvailableSupplementComponent({
loading={loading} loading={loading}
title={() => { title={() => {
return ( return (
<div> <div className="imex-flex-row">
<strong>{t("jobs.labels.availablesupplements")}</strong> <strong className="imex-flex-row__margin">
{t("jobs.labels.availablesupplements")}
</strong>
<Button <Button
className="imex-flex-row__margin"
onClick={() => { onClick={() => {
refetch(); refetch();
}}> }}
>
<SyncOutlined /> <SyncOutlined />
</Button> </Button>
<Button onClick={handleDeleteAll}>Delete All</Button> <Button
className="imex-flex-row__margin"
onClick={handleDeleteAll}
>
Delete All
</Button>
</div> </div>
); );
}} }}
size='small' size="small"
pagination={{ position: "top" }} pagination={{ position: "top" }}
columns={columns} columns={columns}
rowKey='id' rowKey="id"
dataSource={data && data.available_jobs} dataSource={data && data.available_jobs}
onChange={handleTableChange} onChange={handleTableChange}
/> />

View File

@@ -14,6 +14,7 @@ import ShopInfoROStatusComponent from "./shop-info.rostatus.component";
import ShopInfoOrderStatusComponent from "./shop-info.orderstatus.component"; import ShopInfoOrderStatusComponent from "./shop-info.orderstatus.component";
import ShopInfoResponsibilityCenterComponent from "./shop-info.responsibilitycenters.component"; import ShopInfoResponsibilityCenterComponent from "./shop-info.responsibilitycenters.component";
import ShopInfoSchedulingComponent from "./shop-info.scheduling.component"; import ShopInfoSchedulingComponent from "./shop-info.scheduling.component";
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
export default function ShopInfoComponent({ form }) { export default function ShopInfoComponent({ form }) {
const { t } = useTranslation(); const { t } = useTranslation();
@@ -24,171 +25,191 @@ export default function ShopInfoComponent({ form }) {
</Button> </Button>
<Collapse defaultActiveKey="shopinfo"> <Collapse defaultActiveKey="shopinfo">
<Collapse.Panel key="shopinfo" header={t("bodyshop.labels.shopinfo")}> <Collapse.Panel key="shopinfo" header={t("bodyshop.labels.shopinfo")}>
<Form.Item label={t("bodyshop.fields.shopname")} name="shopname"> <LayoutFormRow>
<Input /> <Form.Item label={t("bodyshop.fields.shopname")} name="shopname">
</Form.Item> <Input />
<Form.Item label={t("bodyshop.fields.address1")} name="address1"> </Form.Item>
<Input /> <Form.Item label={t("bodyshop.fields.address1")} name="address1">
</Form.Item> <Input />
</Form.Item>
<Form.Item label={t("bodyshop.fields.address2")} name="address2">
<Input />
</Form.Item>
<Form.Item label={t("bodyshop.fields.city")} name="city">
<Input />
</Form.Item>
<Form.Item label={t("bodyshop.fields.state")} name="state">
<Input />
</Form.Item>
<Form.Item label={t("bodyshop.fields.zip_post")} name="zip_post">
<Input />
</Form.Item>
</LayoutFormRow>
<LayoutFormRow>
<Form.Item label={t("bodyshop.fields.country")} name="country">
<Input />
</Form.Item>
<Form.Item label={t("bodyshop.fields.email")} name="email">
<Input />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.federal_tax_id")}
name="federal_tax_id"
>
<Input />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.insurance_vendor_id")}
name="insurance_vendor_id"
>
<Input />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.logo_img_path")}
name="logo_img_path"
>
<Input />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.state_tax_id")}
name="state_tax_id"
>
<Input />
</Form.Item>
</LayoutFormRow>
<LayoutFormRow>
<Form.Item
label={t("bodyshop.fields.invoice_federal_tax_rate")}
name={["invoice_tax_rates", "federal_tax_rate"]}
>
<InputNumber />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.invoice_state_tax_rate")}
name={["invoice_tax_rates", "state_tax_rate"]}
>
<InputNumber />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.invoice_local_tax_rate")}
name={["invoice_tax_rates", "local_tax_rate"]}
>
<InputNumber />
</Form.Item>
<Form.Item label={t("bodyshop.fields.address2")} name="address2"> <Form.Item
<Input /> label={t("bodyshop.fields.appt_length")}
</Form.Item> name={"appt_length"}
<Form.Item label={t("bodyshop.fields.city")} name="city"> rules={[
<Input /> {
</Form.Item> required: true,
<Form.Item label={t("bodyshop.fields.state")} name="state"> message: t("general.validation.required"),
<Input /> },
</Form.Item> ]}
<Form.Item label={t("bodyshop.fields.zip_post")} name="zip_post"> >
<Input /> <InputNumber min={15} precision={0} />
</Form.Item> </Form.Item>
<Form.Item label={t("bodyshop.fields.country")} name="country"> </LayoutFormRow>
<Input /> <LayoutFormRow>
</Form.Item> <Form.Item
<Form.Item label={t("bodyshop.fields.email")} name="email"> label={t("bodyshop.fields.dailypainttarget")}
<Input /> name={["scoreboard_target", "dailyPaintTarget"]}
</Form.Item> rules={[
<Form.Item {
label={t("bodyshop.fields.federal_tax_id")} required: true,
name="federal_tax_id" message: t("general.validation.required"),
> },
<Input /> ]}
</Form.Item> >
<Form.Item <InputNumber min={0} precision={0} />
label={t("bodyshop.fields.insurance_vendor_id")} </Form.Item>
name="insurance_vendor_id"
>
<Input />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.logo_img_path")}
name="logo_img_path"
>
<Input />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.state_tax_id")}
name="state_tax_id"
>
<Input />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.invoice_federal_tax_rate")}
name={["invoice_tax_rates", "federal_tax_rate"]}
>
<InputNumber />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.invoice_state_tax_rate")}
name={["invoice_tax_rates", "state_tax_rate"]}
>
<InputNumber />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.invoice_local_tax_rate")}
name={["invoice_tax_rates", "local_tax_rate"]}
>
<InputNumber />
</Form.Item>
<Form.Item <Form.Item
label={t("bodyshop.fields.appt_length")} label={t("bodyshop.fields.dailybodytarget")}
name={"appt_length"} name={["scoreboard_target", "dailyBodyTarget"]}
rules={[ rules={[
{ {
required: true, required: true,
message: t("general.validation.required"), message: t("general.validation.required"),
}, },
]} ]}
> >
<InputNumber min={15} precisio={0} /> <InputNumber min={0} precision={0} />
</Form.Item> </Form.Item>
<Form.Item <Form.Item
label={t("bodyshop.fields.dailypainttarget")} label={t("bodyshop.fields.lastnumberworkingdays")}
name={["scoreboard_target", "dailyPaintTarget"]} name={["scoreboard_target", "lastNumberWorkingDays"]}
rules={[ rules={[
{ {
required: true, required: true,
message: t("general.validation.required"), message: t("general.validation.required"),
}, },
]} ]}
> >
<InputNumber min={0} precisio={0} /> <InputNumber min={0} max={12} precision={0} />
</Form.Item> </Form.Item>
<Form.Item
<Form.Item name={["md_referral_sources"]}
label={t("bodyshop.fields.dailybodytarget")} label={t("bodyshop.fields.md_referral_sources")}
name={["scoreboard_target", "dailyBodyTarget"]} rules={[
rules={[ {
{ required: true,
required: true, message: t("general.validation.required"),
message: t("general.validation.required"), type: "array",
}, },
]} ]}
> >
<InputNumber min={0} precisio={0} /> <Select mode="tags" />
</Form.Item> </Form.Item>
<Form.Item
<Form.Item label={t("bodyshop.labels.accountingtiers")}
label={t("bodyshop.fields.lastnumberworkingdays")} rules={[
name={["scoreboard_target", "lastNumberWorkingDays"]} {
rules={[ required: true,
{ message: t("general.validation.required"),
required: true, },
message: t("general.validation.required"), ]}
}, name={["accountingconfig", "tiers"]}
]} >
> <Radio.Group>
<InputNumber min={0} max={12} precisio={0} /> <Radio value={2}>2</Radio>
</Form.Item> <Radio value={3}>3</Radio>
</Radio.Group>
<Form.Item </Form.Item>
label={t("bodyshop.labels.accountingtiers")} <Form.Item shouldUpdate>
rules={[ {() => {
{ return (
required: true, <Form.Item
message: t("general.validation.required"), label={t("bodyshop.labels.2tiersetup")}
}, shouldUpdate
]} rules={[
name={["accountingconfig", "tiers"]} {
> required:
<Radio.Group> form.getFieldValue(["accountingconfig", "tiers"]) ===
<Radio value={2}>2</Radio> 2,
<Radio value={3}>3</Radio> message: t("general.validation.required"),
</Radio.Group> },
</Form.Item> ]}
<Form.Item shouldUpdate> name={["accountingconfig", "twotierpref"]}
{() => {
return (
<Form.Item
label={t("bodyshop.labels.2tiersetup")}
shouldUpdate
rules={[
{
required:
form.getFieldValue(["accountingconfig", "tiers"]) === 2,
message: t("general.validation.required"),
},
]}
name={["accountingconfig", "twotierpref"]}
>
<Radio.Group
disabled={
form.getFieldValue(["accountingconfig", "tiers"]) === 3
}
> >
<Radio value="name">{t("bodyshop.labels.2tiername")}</Radio> <Radio.Group
<Radio value="source"> disabled={
{t("bodyshop.labels.2tiersource")} form.getFieldValue(["accountingconfig", "tiers"]) === 3
</Radio> }
</Radio.Group> >
</Form.Item> <Radio value="name">
); {t("bodyshop.labels.2tiername")}
}} </Radio>
</Form.Item> <Radio value="source">
{t("bodyshop.labels.2tiersource")}
</Radio>
</Radio.Group>
</Form.Item>
);
}}
</Form.Item>
</LayoutFormRow>
<Form.List name={["md_messaging_presets"]}> <Form.List name={["md_messaging_presets"]}>
{(fields, { add, remove }) => { {(fields, { add, remove }) => {
return ( return (
@@ -250,20 +271,6 @@ export default function ShopInfoComponent({ form }) {
); );
}} }}
</Form.List> </Form.List>
<Form.Item
name={["md_referral_sources"]}
label={t("bodyshop.fields.md_referral_sources")}
rules={[
{
required: true,
message: t("general.validation.required"),
type: "array",
},
]}
>
<Select mode="tags" />
</Form.Item>
</Collapse.Panel> </Collapse.Panel>
<Collapse.Panel <Collapse.Panel
key="roStatus" key="roStatus"

View File

@@ -43,6 +43,8 @@ export default function ShopInfoContainer() {
return ( return (
<Form <Form
form={form} form={form}
layout='vertical'
autoComplete='new-password'
onFinish={handleFinish} onFinish={handleFinish}
initialValues={data ? data.bodyshops[0] : null} initialValues={data ? data.bodyshops[0] : null}
> >

View File

@@ -3,6 +3,7 @@ import { Button, Form, Input, Select, InputNumber } from "antd";
import React, { useState } from "react"; import React, { useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import styled from "styled-components"; import styled from "styled-components";
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
//TODO Fix up styles. //TODO Fix up styles.
const SelectorDiv = styled.div` const SelectorDiv = styled.div`
.ant-form-item .ant-select { .ant-form-item .ant-select {
@@ -53,7 +54,7 @@ export default function ShopInfoResponsibilityCenterComponent({ form }) {
<div> <div>
{fields.map((field, index) => ( {fields.map((field, index) => (
<Form.Item key={field.key} style={{ padding: 0, margin: 2 }}> <Form.Item key={field.key} style={{ padding: 0, margin: 2 }}>
<div style={{ display: "flex" }}> <LayoutFormRow>
<Form.Item <Form.Item
style={{ padding: 0, margin: 2 }} style={{ padding: 0, margin: 2 }}
label={t("bodyshop.fields.responsibilitycenter")} label={t("bodyshop.fields.responsibilitycenter")}
@@ -137,7 +138,7 @@ export default function ShopInfoResponsibilityCenterComponent({ form }) {
remove(field.name); remove(field.name);
}} }}
/> />
</div> </LayoutFormRow>
</Form.Item> </Form.Item>
))} ))}
<Form.Item> <Form.Item>
@@ -164,7 +165,7 @@ export default function ShopInfoResponsibilityCenterComponent({ form }) {
<div> <div>
{fields.map((field, index) => ( {fields.map((field, index) => (
<Form.Item key={field.key} style={{ padding: 0, margin: 2 }}> <Form.Item key={field.key} style={{ padding: 0, margin: 2 }}>
<div style={{ display: "flex" }}> <LayoutFormRow>
<Form.Item <Form.Item
style={{ padding: 0, margin: 2 }} style={{ padding: 0, margin: 2 }}
label={t("bodyshop.fields.responsibilitycenter")} label={t("bodyshop.fields.responsibilitycenter")}
@@ -248,7 +249,7 @@ export default function ShopInfoResponsibilityCenterComponent({ form }) {
remove(field.name); remove(field.name);
}} }}
/> />
</div> </LayoutFormRow>
</Form.Item> </Form.Item>
))} ))}
<Form.Item> <Form.Item>
@@ -1066,8 +1067,8 @@ export default function ShopInfoResponsibilityCenterComponent({ form }) {
</Select> </Select>
</Form.Item> </Form.Item>
</SelectorDiv> </SelectorDiv>
<div style={{ display: "flex", flexDirection: "column" }}> <div>
<div style={{ display: "flex" }}> <LayoutFormRow>
<Form.Item <Form.Item
label={t("bodyshop.fields.responsibilitycenters.federal_tax")} label={t("bodyshop.fields.responsibilitycenters.federal_tax")}
rules={[ rules={[
@@ -1160,8 +1161,8 @@ export default function ShopInfoResponsibilityCenterComponent({ form }) {
> >
<InputNumber precision={2} /> <InputNumber precision={2} />
</Form.Item> </Form.Item>
</div> </LayoutFormRow>
<div style={{ display: "flex" }}> <LayoutFormRow>
<Form.Item <Form.Item
label={t("bodyshop.fields.responsibilitycenters.state_tax")} label={t("bodyshop.fields.responsibilitycenters.state_tax")}
rules={[ rules={[
@@ -1254,8 +1255,8 @@ export default function ShopInfoResponsibilityCenterComponent({ form }) {
> >
<InputNumber precision={2} /> <InputNumber precision={2} />
</Form.Item> </Form.Item>
</div> </LayoutFormRow>
<div style={{ display: "flex" }}> <LayoutFormRow>
<Form.Item <Form.Item
label={t("bodyshop.fields.responsibilitycenters.local_tax")} label={t("bodyshop.fields.responsibilitycenters.local_tax")}
rules={[ rules={[
@@ -1348,9 +1349,9 @@ export default function ShopInfoResponsibilityCenterComponent({ form }) {
> >
<InputNumber precision={2} /> <InputNumber precision={2} />
</Form.Item> </Form.Item>
</div> </LayoutFormRow>
<div style={{ display: "flex" }}> <LayoutFormRow>
<Form.Item <Form.Item
label={t("bodyshop.fields.responsibilitycenters.ar")} label={t("bodyshop.fields.responsibilitycenters.ar")}
rules={[ rules={[
@@ -1411,8 +1412,8 @@ export default function ShopInfoResponsibilityCenterComponent({ form }) {
> >
<Input /> <Input />
</Form.Item> </Form.Item>
</div> </LayoutFormRow>
<div style={{ display: "flex" }}> <LayoutFormRow>
<Form.Item <Form.Item
label={t("bodyshop.fields.responsibilitycenters.ar")} label={t("bodyshop.fields.responsibilitycenters.ar")}
rules={[ rules={[
@@ -1473,7 +1474,7 @@ export default function ShopInfoResponsibilityCenterComponent({ form }) {
> >
<Input /> <Input />
</Form.Item> </Form.Item>
</div> </LayoutFormRow>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -887,9 +887,9 @@ export const QUERY_ALL_JOB_FIELDS = gql`
status status
tax_part tax_part
unq_seq unq_seq
employee_body
employee_refinish
} }
employee_body
employee_refinish
} }
} }
`; `;

View File

@@ -47,7 +47,7 @@ export function CourtesyCarCreateContainer({ bodyshop, setBreadcrumbs }) {
}, [t, setBreadcrumbs]); }, [t, setBreadcrumbs]);
return ( return (
<Form form={form} autoComplete="no" onFinish={handleFinish}> <Form form={form} autoComplete="new-password" onFinish={handleFinish}>
<CourtesyCarCreateComponent /> <CourtesyCarCreateComponent />
</Form> </Form>
); );

View File

@@ -151,10 +151,10 @@ export function Manage({ match, conflict }) {
}, [t]); }, [t]);
return ( return (
<Layout className='layout-container'> <Layout className="layout-container">
<HeaderContainer /> <HeaderContainer />
<BreadCrumbs />
<Content className='content-container'> <Content className="content-container">
<FcmNotification /> <FcmNotification />
<ErrorBoundary> <ErrorBoundary>
{conflict ? ( {conflict ? (
@@ -163,7 +163,9 @@ export function Manage({ match, conflict }) {
<Suspense <Suspense
fallback={ fallback={
<LoadingSpinner message={t("general.labels.loadingapp")} /> <LoadingSpinner message={t("general.labels.loadingapp")} />
}> }
>
<BreadCrumbs />
<EnterInvoiceModalContainer /> <EnterInvoiceModalContainer />
<JobCostingModal /> <JobCostingModal />
<EmailOverlayContainer /> <EmailOverlayContainer />
@@ -347,7 +349,6 @@ export function Manage({ match, conflict }) {
</ErrorBoundary> </ErrorBoundary>
<ChatAffixContainer /> <ChatAffixContainer />
<BackTop /> <BackTop />
<Layout.Footer> Some footer</Layout.Footer>
</Content> </Content>
</Layout> </Layout>
); );

View File

@@ -1,8 +1,8 @@
.content-container { .content-container {
overflow-y: auto; overflow-y: auto;
margin: 0rem 1.5rem; margin: 1rem 1rem 0rem 1rem;
padding: 0.5rem 1.5rem; padding: 0.25rem 1rem 0rem 1rem;
border-radius: 12px; border-radius: 4px;
background: #fff; background: #fff;
} }

View File

@@ -21,8 +21,8 @@ export default async function RenderTemplate(templateObject, bodyshop) {
console.log("templateToUse", templateToUse); console.log("templateToUse", templateToUse);
} else { } else {
//No template found.Uh oh. //No template found.Uh oh.
alert("Template key does not exist."); alert("Error: Template key does not exist.");
throw new Error("Template key does not exist."); //throw new Error("Template key does not exist.");
} }
const { data: contextData } = await client.query({ const { data: contextData } = await client.query({