From 27ce30527ee13a891ac6e640ad5b41de4e263cc8 Mon Sep 17 00:00:00 2001
From: Patrick Fic <>
Date: Thu, 14 Jul 2022 15:18:01 -0700
Subject: [PATCH] IO-1536 Add VIN Highlighting.
---
.../global-search/global-search.component.jsx | 7 ++++++-
...bs-create-vehicle-info.search.component.jsx | 5 ++++-
.../jobs-detail-header.component.jsx | 5 ++++-
.../vehicle-tag-popover.component.jsx | 9 +++++++--
.../vehicle-vin-display.component.jsx | 18 ++++++++++++++++++
.../vehicles-list/vehicles-list.component.jsx | 3 ++-
6 files changed, 41 insertions(+), 6 deletions(-)
create mode 100644 client/src/components/vehicle-vin-display/vehicle-vin-display.component.jsx
diff --git a/client/src/components/global-search/global-search.component.jsx b/client/src/components/global-search/global-search.component.jsx
index 147ea3f20..3f3c2c8a2 100644
--- a/client/src/components/global-search/global-search.component.jsx
+++ b/client/src/components/global-search/global-search.component.jsx
@@ -11,6 +11,7 @@ import AlertComponent from "../alert/alert.component";
import OwnerNameDisplay, {
OwnerNameDisplayFunction,
} from "../owner-name-display/owner-name-display.component";
+import VehicleVinDisplay from "../vehicle-vin-display/vehicle-vin-display.component";
export default function GlobalSearch() {
const { t } = useTranslation();
const history = useHistory();
@@ -97,7 +98,11 @@ export default function GlobalSearch() {
} ${vehicle.v_model_desc || ""}`}
{vehicle.plate_no || ""}
- {vehicle.v_vin || ""}
+
+
+ {vehicle.v_vin || ""}
+
+
),
diff --git a/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.search.component.jsx b/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.search.component.jsx
index 137ad45f4..b4c4152c8 100644
--- a/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.search.component.jsx
+++ b/client/src/components/jobs-create-vehicle-info/jobs-create-vehicle-info.search.component.jsx
@@ -4,6 +4,7 @@ import { Table, Input, Card, Space } from "antd";
import { Link } from "react-router-dom";
import { alphaSort } from "../../utils/sorters";
import JobCreateContext from "../../pages/jobs-create/jobs-create.context";
+import VehicleVinDisplay from "../vehicle-vin-display/vehicle-vin-display.component";
export default function JobsCreateVehicleInfoSearchComponent({
loading,
@@ -27,7 +28,9 @@ export default function JobsCreateVehicleInfoSearchComponent({
tableState.sortedInfo.columnKey === "v_vin" &&
tableState.sortedInfo.order,
render: (text, record) => (
- {record.v_vin}
+
+ {record.v_vin}
+
),
},
{
diff --git a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx
index 56868b9c6..8f41cec59 100644
--- a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx
+++ b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx
@@ -23,6 +23,7 @@ import JobsRelatedRos from "../jobs-related-ros/jobs-related-ros.component";
import { DateTimeFormatter } from "../../utils/DateFormatter";
import ProductionListColumnComment from "../production-list-columns/production-list-columns.comment.component";
import { OwnerNameDisplayFunction } from "../owner-name-display/owner-name-display.component";
+import VehicleVinDisplay from "../vehicle-vin-display/vehicle-vin-display.component";
const mapStateToProps = createStructuredSelector({
jobRO: selectJobReadOnly,
@@ -211,7 +212,9 @@ export function JobsDetailHeader({ job, bodyshop, disabled }) {
}`})`}
- {`${job.v_vin || t("general.labels.na")}`}
+
+ {`${job.v_vin || t("general.labels.na")}`}
+
diff --git a/client/src/components/vehicle-tag-popover/vehicle-tag-popover.component.jsx b/client/src/components/vehicle-tag-popover/vehicle-tag-popover.component.jsx
index 5f95a5b05..3005c7a34 100644
--- a/client/src/components/vehicle-tag-popover/vehicle-tag-popover.component.jsx
+++ b/client/src/components/vehicle-tag-popover/vehicle-tag-popover.component.jsx
@@ -2,6 +2,7 @@ import { Button, Col, Descriptions, Popover, Row, Tag } from "antd";
import React from "react";
import { useTranslation } from "react-i18next";
import { Link } from "react-router-dom";
+import VehicleVinDisplay from "../vehicle-vin-display/vehicle-vin-display.component";
export default function VehicleTagPopoverComponent({ job }) {
const { t } = useTranslation();
@@ -27,7 +28,9 @@ export default function VehicleTagPopoverComponent({ job }) {
{`${job.plate_st || t("general.labels.na")}`}
- {`${job.v_vin || t("general.labels.na")}`}
+
+ {`${job.v_vin || t("general.labels.na")}`}
+
@@ -46,7 +49,9 @@ export default function VehicleTagPopoverComponent({ job }) {
{`${job.vehicle.plate_st || t("general.labels.na")}`}
- {`${job.vehicle.v_vin || t("general.labels.na")}`}
+ {`${
+ job.vehicle.v_vin || t("general.labels.na")
+ }`}
diff --git a/client/src/components/vehicle-vin-display/vehicle-vin-display.component.jsx b/client/src/components/vehicle-vin-display/vehicle-vin-display.component.jsx
new file mode 100644
index 000000000..1ba46b8b5
--- /dev/null
+++ b/client/src/components/vehicle-vin-display/vehicle-vin-display.component.jsx
@@ -0,0 +1,18 @@
+import React from "react";
+
+export default function VehicleVinDisplay({ children }) {
+ if (!children) return null;
+ console.log(children);
+ if (typeof children !== "string" || children.length !== 17) return children;
+ const vin = children.trim();
+
+ const first = vin.substring(0, 9);
+ const second = vin.substring(9, 17);
+
+ return (
+ <>
+ {first}
+ {second}
+ >
+ );
+}
diff --git a/client/src/components/vehicles-list/vehicles-list.component.jsx b/client/src/components/vehicles-list/vehicles-list.component.jsx
index ca9091e67..e7de0acc3 100644
--- a/client/src/components/vehicles-list/vehicles-list.component.jsx
+++ b/client/src/components/vehicles-list/vehicles-list.component.jsx
@@ -4,6 +4,7 @@ import queryString from "query-string";
import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import { Link, useHistory, useLocation } from "react-router-dom";
+import VehicleVinDisplay from "../vehicle-vin-display/vehicle-vin-display.component";
export default function VehiclesListComponent({
loading,
vehicles,
@@ -31,7 +32,7 @@ export default function VehiclesListComponent({
key: "v_vin",
render: (text, record) => (
- {record.v_vin || "N/A"}
+ {record.v_vin || "N/A"}
),
},