BOD-53 Created vehicle popover and fixed remnant references to vehicle records.

This commit is contained in:
Patrick Fic
2020-03-30 11:40:21 -07:00
parent bfb8af0a22
commit b7dceae83f
9 changed files with 161 additions and 45 deletions

View File

@@ -9855,6 +9855,32 @@
</concept_node>
</children>
</folder_node>
<folder_node>
<name>labels</name>
<children>
<concept_node>
<name>updatevehicle</name>
<definition_loaded>false</definition_loaded>
<description></description>
<comment></comment>
<default_text></default_text>
<translations>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-MX</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-CA</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
</children>
</folder_node>
<folder_node>
<name>successes</name>
<children>

View File

@@ -35,14 +35,22 @@ export default function JobDetailCardsCustomerComponent({ loading, data }) {
)}
</div>
<div>{`${(data.owner && data.owner.preferred_contact) || ""}`}</div>
{data.vehicle ? (
<Link to={`/manage/vehicles/${data.vehicleid}`}>
{`${data.v_model_yr || ""} ${data.v_make_desc ||
""} ${data.v_model_desc || ""}`}
</Link>
) : (
<span>{t("jobs.errors.novehicle")}</span>
)}
<div>
{data.vehicle ? (
<Link to={`/manage/vehicles/${data.vehicleid}`}>
{`${data.v_model_yr || ""} ${data.v_make_desc ||
""} ${data.v_model_desc || ""}`}
a
</Link>
) : (
<span>
{`${data.v_model_yr || ""} ${data.v_make_desc ||
""} ${data.v_model_desc || ""}`}
b
</span>
)}
e
</div>
</span>
) : null}
</CardTemplate>

View File

@@ -1,27 +1,16 @@
import { DownCircleFilled } from "@ant-design/icons";
import {
Avatar,
Badge,
Button,
Checkbox,
Descriptions,
Dropdown,
Menu,
notification,
PageHeader,
Tag
} from "antd";
import { Avatar, Badge, Button, Checkbox, Descriptions, Dropdown, Menu, notification, PageHeader, Tag } from "antd";
import React from "react";
import { useTranslation } from "react-i18next";
import Moment from "react-moment";
import { connect } from "react-redux";
import { Link } from "react-router-dom";
import { createStructuredSelector } from "reselect";
import CarImage from "../../assets/car.svg";
import { selectBodyshop } from "../../redux/user/user.selectors";
import CurrencyFormatter from "../../utils/CurrencyFormatter";
import BarcodePopup from "../barcode-popup/barcode-popup.component";
import OwnerTagPopoverComponent from "../owner-tag-popover/owner-tag-popover.component";
import VehicleTagPopoverComponent from "../vehicle-tag-popover/vehicle-tag-popover.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
@@ -113,25 +102,7 @@ export default connect(
<span key="job-status">
{job.status ? <Tag color="blue">{job.status}</Tag> : null}
<OwnerTagPopoverComponent job={job} />
<Tag color="green">
{job.vehicleid ? (
<Link to={`/manage/vehicles/${job.vehicleid}`}>
{`${job.v_model_yr || t("general.labels.na")}
${job.v_make_desc || t("general.labels.na")}
${job.v_model_desc || t("general.labels.na")} |
${job.plate_no || t("general.labels.na")} |
${job.v_vin || t("general.labels.na")}`}
</Link>
) : (
<span>
{`${job.v_model_yr || t("general.labels.na")}
${job.v_make_desc || t("general.labels.na")}
${job.v_model_desc || t("general.labels.na")} |
${job.plate_no || t("general.labels.na")} |
${job.v_vin || t("general.labels.na")}`}
</span>
)}
</Tag>
<VehicleTagPopoverComponent job={job} />
<BarcodePopup value={job.id} />
</span>
}

View File

@@ -107,7 +107,7 @@ export default withRouter(function JobsList({
width: "15%",
ellipsis: true,
render: (text, record) => {
return record.vehicle ? (
return record.vehicleid ? (
<Link to={"/manage/vehicles/" + record.vehicleid}>
{`${record.v_model_yr || ""} ${record.v_make_desc ||
""} ${record.v_model_desc || ""}`}
@@ -123,12 +123,12 @@ export default withRouter(function JobsList({
key: "plate_no",
width: "8%",
ellipsis: true,
sorter: (a, b) => alphaSort(a.vehicle.plate_no, b.vehicle.plate_no),
sorter: (a, b) => alphaSort(a.plate_no, b.plate_no),
sortOrder:
state.sortedInfo.columnKey === "plate_no" && state.sortedInfo.order,
render: (text, record) => {
return record.vehicle.plate_no ? (
<span>{record.vehicle.plate_no}</span>
return record.plate_no ? (
<span>{record.plate_no}</span>
) : (
t("general.labels.unknown")
);

View File

@@ -0,0 +1,87 @@
import { Button, Col, Descriptions, Popover, Row, Tag } from "antd";
import React from "react";
import { useTranslation } from "react-i18next";
import { Link } from "react-router-dom";
export default function VehicleTagPopoverComponent({ job }) {
const { t } = useTranslation();
const content = (
<div style={{ width: "400px" }}>
<Row>
<Col span={12}>
<Descriptions
title={t("owners.labels.fromclaim")}
size="small"
column={1}
>
<Descriptions.Item key="1" label={t("jobs.fields.vehicle")}>
{`${job.v_model_yr || t("general.labels.na")}
${job.v_make_desc || t("general.labels.na")}
${job.v_model_desc || t("general.labels.na")}`}
</Descriptions.Item>
<Descriptions.Item key="2" label={t("vehicles.fields.plate_no")}>
{`${job.plate_no || t("general.labels.na")}`}
</Descriptions.Item>
<Descriptions.Item key="3" label={t("vehicles.fields.plate_st")}>
{`${job.plate_st || t("general.labels.na")}`}
</Descriptions.Item>
<Descriptions.Item key="4" label={t("vehicles.fields.v_vin")}>
{`${job.v_vin || t("general.labels.na")}`}
</Descriptions.Item>
</Descriptions>
</Col>
<Col span={12}>
<Descriptions
title={t("owners.labels.fromowner")}
size="small"
column={1}
>
<Descriptions.Item key="1" label={t("jobs.fields.vehicle")}>
{`${job.vehicle.v_model_yr || t("general.labels.na")}
${job.vehicle.v_make_desc || t("general.labels.na")}
${job.vehicle.v_model_desc || t("general.labels.na")}`}
</Descriptions.Item>
<Descriptions.Item key="2" label={t("vehicles.fields.plate_no")}>
{`${job.vehicle.plate_no || t("general.labels.na")}`}
</Descriptions.Item>
<Descriptions.Item key="3" label={t("vehicles.fields.plate_st")}>
{`${job.vehicle.plate_st || t("general.labels.na")}`}
</Descriptions.Item>
<Descriptions.Item key="4" label={t("vehicles.fields.v_vin")}>
{`${job.vehicle.v_vin || t("general.labels.na")}`}
</Descriptions.Item>
</Descriptions>
</Col>
</Row>
<Link to={`/manage/vehicles/${job.vehicle.id}`}>
<Button>{t("vehicle.labels.updatevehicle")}</Button>
</Link>
</div>
);
return (
<Popover placement="bottom" content={content}>
<Tag color="green">
{job.vehicleid ? (
<Link to={`/manage/vehicles/${job.vehicleid}`}>
{`${job.v_model_yr || t("general.labels.na")}
${job.v_make_desc || t("general.labels.na")}
${job.v_model_desc || t("general.labels.na")} |
${job.plate_no || t("general.labels.na")} |
${job.v_vin || t("general.labels.na")}`}
</Link>
) : (
<span>
{`${job.v_model_yr || t("general.labels.na")}
${job.v_make_desc || t("general.labels.na")}
${job.v_model_desc || t("general.labels.na")} |
${job.plate_no || t("general.labels.na")} |
${job.v_vin || t("general.labels.na")}`}
</span>
)}
</Tag>
</Popover>
);
}

View File

@@ -108,6 +108,15 @@ export const GET_JOB_BY_PK = gql`
v_model_desc
v_make_desc
v_color
vehicle {
id
plate_no
v_vin
v_model_yr
v_model_desc
v_make_desc
v_color
}
ins_co_id
policy_no
loss_date
@@ -245,7 +254,13 @@ export const QUERY_JOB_CARD_DETAILS = gql`
v_model_desc
v_color
plate_no
vehicle {
v_model_yr
v_make_desc
v_model_desc
v_color
plate_no
}
actual_completion
actual_delivery
actual_in

View File

@@ -649,6 +649,9 @@
"v_type": "Type",
"v_vin": "Vehicle Identification Number"
},
"labels": {
"updatevehicle": "Update Vehicle Information"
},
"successes": {
"save": "Vehicle saved successfully."
}

View File

@@ -649,6 +649,9 @@
"v_type": "Tipo",
"v_vin": "Número de identificación del vehículo"
},
"labels": {
"updatevehicle": ""
},
"successes": {
"save": "Vehículo guardado con éxito."
}

View File

@@ -649,6 +649,9 @@
"v_type": "Type",
"v_vin": "Plaque d'immatriculation"
},
"labels": {
"updatevehicle": ""
},
"successes": {
"save": "Le véhicule a été enregistré avec succès."
}