Update dynamic app names for all versions.

This commit is contained in:
Patrick Fic
2024-02-26 11:46:40 -08:00
parent f190c26311
commit 6640ed629d
65 changed files with 700 additions and 230 deletions

View File

@@ -12686,6 +12686,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>insuranceexpired</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>
<concept_node>
<name>noteconvertedfrom</name>
<definition_loaded>false</definition_loaded>
@@ -14429,6 +14450,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>phone</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>
<concept_node>
<name>prodhrs</name>
<definition_loaded>false</definition_loaded>
@@ -14707,6 +14749,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>scheduledindate</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>
<concept_node>
<name>scheduledintoday</name>
<definition_loaded>false</definition_loaded>
@@ -14728,6 +14791,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>scheduledoutdate</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>
<concept_node>
<name>scheduledouttoday</name>
<definition_loaded>false</definition_loaded>
@@ -30670,6 +30754,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>calc_scheuled_completion</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>
<folder_node>
<name>cards</name>
<children>
@@ -33918,6 +34023,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>update_scheduled_completion</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>
<concept_node>
<name>vehicle_info</name>
<definition_loaded>false</definition_loaded>
@@ -45181,6 +45307,216 @@
<folder_node>
<name>labels</name>
<children>
<concept_node>
<name>advanced_filters</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>
<concept_node>
<name>advanced_filters_filter_field</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>
<concept_node>
<name>advanced_filters_filter_operator</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>
<concept_node>
<name>advanced_filters_filter_value</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>
<concept_node>
<name>advanced_filters_filters</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>
<concept_node>
<name>advanced_filters_hide</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>
<concept_node>
<name>advanced_filters_show</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>
<concept_node>
<name>advanced_filters_sorter_direction</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>
<concept_node>
<name>advanced_filters_sorter_field</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>
<concept_node>
<name>advanced_filters_sorters</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>
<concept_node>
<name>dates</name>
<definition_loaded>false</definition_loaded>
@@ -52012,6 +52348,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>imexonline</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>
<concept_node>
<name>inventory</name>
<definition_loaded>false</definition_loaded>
@@ -52453,6 +52810,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>promanager</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>
<concept_node>
<name>readyjobs</name>
<definition_loaded>false</definition_loaded>
@@ -52516,6 +52894,27 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>romeonline</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>
<concept_node>
<name>schedule</name>
<definition_loaded>false</definition_loaded>

View File

@@ -1,6 +1,7 @@
import React from "react";
import {Button, Result} from "antd";
import {useTranslation} from "react-i18next";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
export default function ConflictComponent() {
const {t} = useTranslation();
@@ -11,7 +12,7 @@ export default function ConflictComponent() {
title={t("general.labels.instanceconflictitle")}
extra={
<div>
<div>{t("general.labels.instanceconflictext")}</div>
<div>{t("general.labels.instanceconflictext",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})})}</div>
<Button
onClick={() => {
window.location.reload();

View File

@@ -101,7 +101,7 @@ class ErrorBoundary extends React.Component {
<Result
status="500"
title={t("general.labels.exceptiontitle")}
subTitle={t("general.messages.exception")}
subTitle={t("general.messages.exception",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})})}
extra={
<Space>
<Button

View File

@@ -5,6 +5,7 @@ import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors";
import AlertComponent from "../alert/alert.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -24,7 +25,7 @@ function FeatureWrapper({
return (
noauth || (
<AlertComponent
message={t("general.messages.nofeatureaccess")}
message={t("general.messages.nofeatureaccess", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})})}
type="warning"
/>
)

View File

@@ -54,7 +54,9 @@ export function SignInComponent({
<div className="login-container">
<div className="login-logo-container">
<img src={InstanceRenderManager({imex:ImEXOnlineLogo, rome:RomeLogo})} width={200} alt="Rome Online"/>
<Typography.Title>{t("titles.app")}</Typography.Title>
<Typography.Title>{
InstanceRenderManager({imex: t("titles.imexonline"), rome: t("titles.romeonline"), promanager:t("titles.promanager")})
}</Typography.Title>
</div>
<Form onFinish={handleFinish} form={form} size="large">
<Form.Item

View File

@@ -7,6 +7,7 @@ import {createStructuredSelector} from "reselect";
import {techLoginStart} from "../../redux/tech/tech.actions";
import {selectLoginError, selectLoginLoading, selectTechnician,} from "../../redux/tech/tech.selectors";
import AlertComponent from "../alert/alert.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
import "./tech-login.styles.scss";
const mapStateToProps = createStructuredSelector({
@@ -38,7 +39,7 @@ export function TechLogin({
}, [technician, navigate]);
useEffect(() => {
document.title = t("titles.techconsole");
document.title = t("titles.techconsole",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
}, [t]);
return (

View File

@@ -9,6 +9,7 @@ import {useTranslation} from "react-i18next";
import {setUpdateAvailable} from "../../redux/application/application.actions";
import {store} from "../../redux/store";
import * as serviceWorkerRegistration from "../../serviceWorkerRegistration";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
let globalRegistration;
@@ -25,13 +26,13 @@ export function UpdateAlert({updateAvailable}) {
if (!updateAvailable) return null;
return (
<Alert
message={t("general.messages.newversiontitle")}
message={t("general.messages.newversiontitle",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})})}
showIcon
icon={<AlertOutlined/>}
description={
<Row gutter={[16, 16]}>
<Col sm={24} md={16} lg={18}>
{t("general.messages.newversionmessage")}
{t("general.messages.newversionmessage",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})})}
</Col>
<Col sm={24} md={8} lg={6}>
<Space wrap>

View File

@@ -55,7 +55,7 @@ export function UserRequestResetPw({
<div className="login-logo-container">
<img src={InstanceRenderManager({imex: ImEXOnlineLogo, rome: null}) } height="100" width="100"
alt={InstanceRenderManager({imex: "ImEX Online", rome:"Rome Online"})}/>
<Typography.Title>{t("titles.app")}</Typography.Title>
<Typography.Title>{InstanceRenderManager({imex: t("titles.imexonline"), rome: t("titles.romeonline"), promanager:t("titles.promanager")})}</Typography.Title>
</div>
<Typography.Title level={3}>{t("titles.resetpassword")}</Typography.Title>

View File

@@ -13,6 +13,7 @@ import {selectPasswordReset} from "../../redux/user/user.selectors";
import AlertComponent from "../alert/alert.component";
import "./user-validate-pw-reset.styles.scss";
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
passwordReset: selectPasswordReset,
@@ -74,7 +75,7 @@ export function UserValidatePwReset({
<div className="reset-container">
<div className="reset-logo-container">
<img src={ImEXOnlineLogo} height="100" width="100" alt="ImEX Online"/>
<Typography.Title>{t("titles.app")}</Typography.Title>
<Typography.Title>{InstanceRenderManager({imex: t("titles.imexonline"), rome: t("titles.romeonline"), promanager:t("titles.promanager")})}</Typography.Title>
</div>
<Typography.Title level={3}>
{t("titles.resetpasswordvalidate")}

View File

@@ -12,6 +12,8 @@ import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/applic
import {selectPartnerVersion} from "../../redux/application/application.selectors";
import {selectBodyshop} from "../../redux/user/user.selectors";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -32,7 +34,7 @@ export function AccountingPayablesContainer({
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.accounting-payables");
document.title = t("titles.accounting-payables",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})});
setSelectedHeader("payables");
setBreadcrumbs([
{

View File

@@ -12,6 +12,7 @@ import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {checkPartnerStatus} from "../../components/partner-ping/partner-ping.component";
import {selectPartnerVersion} from "../../redux/application/application.selectors";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -32,7 +33,7 @@ export function AccountingPaymentsContainer({
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.accounting-payments");
document.title = t("titles.accounting-payments", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})});
setSelectedHeader("payments");
setBreadcrumbs([
{

View File

@@ -13,6 +13,7 @@ import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {checkPartnerStatus} from "../../components/partner-ping/partner-ping.component";
import {selectPartnerVersion} from "../../redux/application/application.selectors";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -33,7 +34,7 @@ export function AccountingReceivablesContainer({
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.accounting-receivables");
document.title = t("titles.accounting-receivables",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})});
setSelectedHeader("receivables");
setBreadcrumbs([
{

View File

@@ -12,6 +12,7 @@ import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/applic
import BillsPageComponent from "./bills.page.component";
import {pageLimit} from "../../utils/config";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -24,7 +25,7 @@ export function BillsPageContainer({setBreadcrumbs, setSelectedHeader}) {
const {page, sortcolumn, sortorder, searchObj} = searchParams;
useEffect(() => {
document.title = t("titles.bills-list");
document.title = t("titles.bills-list",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})});
setSelectedHeader("bills");
setBreadcrumbs([
{link: "/manage/bills", label: t("titles.bc.bills-list")},

View File

@@ -11,6 +11,7 @@ import {UPDATE_JOB} from "../../graphql/jobs.queries";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import {selectBodyshop} from "../../redux/user/user.selectors";
import ContractCreatePageComponent from "./contract-create.page.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -105,7 +106,7 @@ export function ContractCreatePageContainer({
};
useEffect(() => {
document.title = t("titles.contracts-create");
document.title = t("titles.contracts-create",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})});
setSelectedHeader("newcontract");
setBreadcrumbs([
{link: "/manage/courtesycars", label: t("titles.bc.courtesycars")},

View File

@@ -16,6 +16,7 @@ import {CreateRecentItem} from "../../utils/create-recent-item";
import ContractDetailPageComponent from "./contract-detail.page.component";
import NotFound from "../../components/not-found/not-found.component";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -43,9 +44,9 @@ export function ContractDetailPageContainer({
useEffect(() => {
setSelectedHeader("contracts");
document.title = loading
? t("titles.app")
? InstanceRenderManager({imex: t("titles.imexonline"), rome: t("titles.romeonline"), promanager:t("titles.promanager")})
: error
? t("titles.app")
? InstanceRenderManager({imex: t("titles.imexonline"), rome: t("titles.romeonline"), promanager:t("titles.promanager")})
: t("titles.contracts-detail", {
id:
(data &&

View File

@@ -11,6 +11,7 @@ import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/applic
import ContractsPageComponent from "./contracts.page.component";
import {pageLimit} from "../../utils/config";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -44,7 +45,7 @@ export function ContractsPageContainer({setBreadcrumbs, setSelectedHeader}) {
);
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.contracts");
document.title = t("titles.contracts", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})});
setSelectedHeader("contracts");
setBreadcrumbs([
{link: "/manage/courtesycars", label: t("titles.bc.courtesycars")},

View File

@@ -11,6 +11,7 @@ import {INSERT_NEW_COURTESY_CAR} from "../../graphql/courtesy-car.queries";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import {selectBodyshop} from "../../redux/user/user.selectors";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -57,7 +58,7 @@ export function CourtesyCarCreateContainer({
useEffect(() => {
setSelectedHeader("courtesycarsall");
document.title = t("titles.courtesycars-create");
document.title = t("titles.courtesycars-create",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})});
setBreadcrumbs([
{link: "/manage/courtesycars", label: t("titles.bc.courtesycars")},
{

View File

@@ -16,6 +16,7 @@ import NotFound from "../../components/not-found/not-found.component";
import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component";
import queryString from "query-string";
import {pageLimit} from "../../utils/config";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -59,10 +60,11 @@ export function CourtesyCarDetailPageContainer({
setSelectedHeader("courtesycarsall");
document.title = loading
? t("titles.app")
? InstanceRenderManager({imex: t("titles.imexonline"), rome: t("titles.romeonline"), promanager:t("titles.promanager")})
: error
? t("titles.app")
? InstanceRenderManager({imex: t("titles.imexonline"), rome: t("titles.romeonline"), promanager:t("titles.promanager")})
: t("titles.courtesycars-detail", {
app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'}),
id:
(data &&
data.courtesycars_by_pk &&

View File

@@ -8,6 +8,7 @@ import {QUERY_ALL_CC} from "../../graphql/courtesy-car.queries";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import CourtesyCarsPageComponent from "./courtesy-cars.page.component";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -24,7 +25,7 @@ export function CourtesyCarsPageContainer({
});
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.courtesycars");
document.title = t("titles.courtesycars",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})});
setSelectedHeader("courtesycarsall");
setBreadcrumbs([
{link: "/manage/courtesycars", label: t("titles.bc.courtesycars")},

View File

@@ -11,6 +11,7 @@ import ConfigFormComponents from "../../components/config-form-components/config
import LoadingSpinner from "../../components/loading-spinner/loading-spinner.component";
import {selectCurrentUser} from "../../redux/user/user.selectors";
import {DateTimeFormat} from "./../../utils/DateFormatter";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
currentUser: selectCurrentUser,
@@ -76,8 +77,8 @@ export function CsiContainerPage({currentUser}) {
>
<Result
status="error"
title={t("csi.labels.nologgedinuser")}
subTitle={t("csi.labels.nologgedinuser_sub")}
title={t("csi.labels.nologgedinuser", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})})}
subTitle={t("csi.labels.nologgedinuser_sub",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})})}
/>
</Layout>
);

View File

@@ -5,6 +5,7 @@ import DashboardGridComponent from "../../components/dashboard-grid/dashboard-gr
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import FeatureWrapper from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -15,7 +16,8 @@ export function ExportsLogPageContainer({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.dashboard");
document.title = t("titles.dashboard", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})}
);
setSelectedHeader("dashboard");
setBreadcrumbs([
{

View File

@@ -11,6 +11,7 @@ import DmsLogEvents from "../../components/dms-log-events/dms-log-events.compone
import {auth} from "../../firebase/firebase.utils";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import {selectBodyshop} from "../../redux/user/user.selectors";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -48,7 +49,7 @@ export function DmsContainer({bodyshop, setBreadcrumbs, setSelectedHeader}) {
const logsRef = useRef(null);
useEffect(() => {
document.title = t("titles.dms");
document.title = t("titles.dms", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("dms");
setBreadcrumbs([
{

View File

@@ -18,6 +18,7 @@ import {auth} from "../../firebase/firebase.utils";
import {QUERY_JOB_EXPORT_DMS} from "../../graphql/jobs.queries";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import {selectBodyshop} from "../../redux/user/user.selectors";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -62,7 +63,7 @@ export function DmsContainer({bodyshop, setBreadcrumbs, setSelectedHeader}) {
const logsRef = useRef(null);
useEffect(() => {
document.title = t("titles.dms");
document.title = t("titles.dms",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("dms");
setBreadcrumbs([
{

View File

@@ -5,6 +5,7 @@ import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import ExportLogsPage from "./export-logs.page.component";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -15,7 +16,7 @@ export function ExportsLogPageContainer({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.export-logs");
document.title = t("titles.export-logs",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("export-logs");
setBreadcrumbs([
{

View File

@@ -5,6 +5,7 @@ import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import InventoryList from "../../components/inventory-list/inventory-list.container";
import InventoryUpsertModalContainer from "../../components/inventory-upsert-modal/inventory-upsert-modal.container";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -15,7 +16,7 @@ export function InventoryPage({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.inventory");
document.title = t("titles.inventory",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("inventory");
setBreadcrumbs([{link: "/manage/jobs", label: t("titles.bc.inventory")}]);
}, [t, setBreadcrumbs, setSelectedHeader]);

View File

@@ -23,6 +23,7 @@ import NotFound from "../../components/not-found/not-found.component";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {GET_JOB_BY_PK} from "../../graphql/jobs.queries";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -51,6 +52,7 @@ export function JobsCloseContainer({setBreadcrumbs, setSelectedHeader}) {
useEffect(() => {
setSelectedHeader("activejobs");
document.title = t("titles.jobs-admin", {
app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'}),
ro_number: data ? data.jobs_by_pk && data.jobs_by_pk.ro_number : null,
});

View File

@@ -11,6 +11,7 @@ import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {QUERY_ALL_JOBS_PAGINATED_STATUS_FILTERED} from "../../graphql/jobs.queries";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import {pageLimit} from "../../utils/config";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
//bodyshop: selectBodyshop,
@@ -50,7 +51,7 @@ export function AllJobs({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.jobs-all");
document.title = t("titles.jobs-all", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("alljobs");
setBreadcrumbs([
{link: "/manage/jobs/all", label: t("titles.bc.jobs-all")},

View File

@@ -11,6 +11,7 @@ import JobsAvailableTableContainer from "../../components/jobs-available-table/j
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import {selectPartnerVersion} from "../../redux/application/application.selectors";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
partnerVersion: selectPartnerVersion,
@@ -29,7 +30,7 @@ export function JobsAvailablePageContainer({
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.jobsavailable");
document.title = t("titles.jobsavailable", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("availablejobs");
setBreadcrumbs([
{link: "/manage/available", label: t("titles.bc.availablejobs")},
@@ -50,7 +51,7 @@ export function JobsAvailablePageContainer({
{!partnerVersion && (
<AlertComponent
type="warning"
message={t("general.messages.partnernotrunning")}
message={t("general.messages.partnernotrunning",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})})}
/>
)}
<JobsAvailableTableContainer/>

View File

@@ -14,6 +14,7 @@ import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {QUERY_JOB_CHECKLISTS} from "../../graphql/jobs.queries";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import {selectBodyshop} from "../../redux/user/user.selectors";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
@@ -38,7 +39,7 @@ export function JobsChecklistViewContainer({
});
useEffect(() => {
document.title = t("titles.jobs-checklist");
document.title = t("titles.jobs-checklist",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("activejobs");
setBreadcrumbs([
{link: "/manage/jobs", label: t("titles.bc.jobs")},

View File

@@ -13,6 +13,7 @@ import {QUERY_JOB_CLOSE_DETAILS} from "../../graphql/jobs.queries";
import {setBreadcrumbs, setJobReadOnly, setSelectedHeader,} from "../../redux/application/application.actions";
import IsJobReadOnly from "../../utils/jobReadOnly";
import JobsCloseComponent from "./jobs-close.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -40,6 +41,7 @@ export function JobsCloseContainer({
useEffect(() => {
setSelectedHeader("activejobs");
document.title = t("titles.jobs-close", {
app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'}),
number: data ? data.jobs_by_pk && data.jobs_by_pk.ro_number : null,
});

View File

@@ -55,7 +55,7 @@ function JobsCreateContainer({bodyshop, setBreadcrumbs, setSelectedHeader}) {
}, [state.owner.selectedid, loadOwner]);
useEffect(() => {
document.title = t("titles.jobs-create");
document.title = t("titles.jobs-create",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("newjob");
setBreadcrumbs([
{link: "/manage/available", label: t("titles.bc.availablejobs")},

View File

@@ -11,6 +11,7 @@ import {QUERY_DELIVER_CHECKLIST} from "../../graphql/bodyshop.queries";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import {selectBodyshop} from "../../redux/user/user.selectors";
import JobchecklistComponent from "../../components/job-checklist/job-checklist.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
@@ -35,7 +36,7 @@ export function JobsDeliverContainer({
});
useEffect(() => {
document.title = t("titles.jobs-deliver");
document.title = t("titles.jobs-deliver",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("activejobs");
setBreadcrumbs([
{link: "/manage/jobs", label: t("titles.bc.jobs")},

View File

@@ -20,6 +20,7 @@ import {selectBodyshop} from "../../redux/user/user.selectors";
import {CreateRecentItem} from "../../utils/create-recent-item";
import IsJobReadOnly from "../../utils/jobReadOnly";
import JobsDetailPage from "./jobs-detail.page.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -51,10 +52,11 @@ function JobsDetailPageContainer({
useEffect(() => {
setSelectedHeader("activejobs");
document.title = loading
? t("titles.app")
? InstanceRenderManager({imex: t("titles.imexonline"), rome: t("titles.romeonline"), promanager:t("titles.promanager")})
: error
? t("titles.app")
? InstanceRenderManager({imex: t("titles.imexonline"), rome: t("titles.romeonline"), promanager:t("titles.promanager")})
: t("titles.jobsdetail", {
app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'}),
ro_number:
(data.jobs_by_pk && data.jobs_by_pk.ro_number) ||
t("general.labels.na"),

View File

@@ -12,6 +12,7 @@ import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/applic
import {selectBodyshop} from "../../redux/user/user.selectors";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {Result} from "antd";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
@@ -37,7 +38,7 @@ export function JobsIntakeContainer({
});
useEffect(() => {
document.title = t("titles.jobs-intake");
document.title = t("titles.jobs-intake",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("activejobs");
setBreadcrumbs([
{link: "/manage/jobs", label: t("titles.bc.jobs")},

View File

@@ -5,6 +5,7 @@ import JobDetailCards from "../../components/job-detail-cards/job-detail-cards.c
import JobsReadyList from "../../components/jobs-ready-list/jobs-ready-list.component";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -15,7 +16,7 @@ export function JobsReadyPage({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.readyjobs");
document.title = t("titles.readyjobs",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("readyjobs");
setBreadcrumbs([
{link: "/manage/jobs", label: t("titles.bc.jobs-ready")},

View File

@@ -5,6 +5,7 @@ import JobDetailCards from "../../components/job-detail-cards/job-detail-cards.c
import JobsList from "../../components/jobs-list/jobs-list.component";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -15,7 +16,7 @@ export function JobsPage({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.jobs");
document.title = t("titles.jobs",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("activejobs");
setBreadcrumbs([
{link: "/manage/jobs", label: t("titles.bc.jobs-active")},

View File

@@ -5,6 +5,7 @@ import {createStructuredSelector} from "reselect";
import {setBreadcrumbs} from "../../redux/application/application.actions";
import {selectBodyshop} from "../../redux/user/user.selectors";
import ManageRootPageComponent from "./manage-root.page.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -17,7 +18,7 @@ const mapDispatchToProps = (dispatch) => ({
export function ManageRootPageContainer({setBreadcrumbs, bodyshop}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.manageroot");
document.title = t("titles.manageroot",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setBreadcrumbs([]);
}, [t, setBreadcrumbs]);

View File

@@ -199,11 +199,11 @@ export function Manage({conflict, bodyshop}) {
}, []);
useEffect(() => {
document.title = t("titles.app");
document.title = InstanceRenderManager({imex: t("titles.imexonline"), rome: t("titles.romeonline"), promanager:t("titles.promanager")});
}, [t]);
const AppRouteTable = (
<Suspense
fallback={<LoadingSpinner message={t("general.labels.loadingapp")}/>} This
fallback={<LoadingSpinner message={t("general.labels.loadingapp",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})})}/>} This
>
<PaymentModalContainer/>
@@ -399,7 +399,7 @@ export function Manage({conflict, bodyshop}) {
>
<div style={{display: "flex"}}>
<div>
{`${t("titles.app")} ${
{`${InstanceRenderManager({imex: t("titles.imexonline"), rome: t("titles.romeonline"), promanager:t("titles.promanager")})} ${
import.meta.env.VITE_APP_GIT_SHA || 'Local Build'
} - ${import.meta.env.VITE_APP_GIT_SHA_DATE}`}
</div>

View File

@@ -12,6 +12,7 @@ import {CreateRecentItem} from "../../utils/create-recent-item";
import OwnersDetailComponent from "./owners-detail.page.component";
import NotFound from "../../components/not-found/not-found.component";
import {OwnerNameDisplayFunction} from "../../components/owner-name-display/owner-name-display.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -35,6 +36,7 @@ export function OwnersDetailContainer({
useEffect(() => {
document.title = t("titles.owners-detail", {
app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'}),
name: data ? OwnerNameDisplayFunction(data.owners_by_pk) : "",
});
setSelectedHeader("owners");

View File

@@ -4,6 +4,7 @@ import {useTranslation} from "react-i18next";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import {connect} from "react-redux";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -13,7 +14,7 @@ const mapDispatchToProps = (dispatch) => ({
export function OwnersPageContainer({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.owners");
document.title = t("titles.owners",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("owners");
setBreadcrumbs([{link: "/manage/owners", label: t("titles.bc.owners")}]);
}, [t, setBreadcrumbs, setSelectedHeader]);

View File

@@ -5,6 +5,7 @@ import PartsQueueDetailCard from "../../components/parts-queue-card/parts-queue-
import PartsQueueList from "../../components/parts-queue-list/parts-queue.list.component";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -15,7 +16,7 @@ export function PartsQueuePageContainer({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.parts-queue");
document.title = t("titles.parts-queue",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("parts-queue");
setBreadcrumbs([
{link: "/manage/partsqueue", label: t("titles.bc.parts-queue")},

View File

@@ -13,6 +13,7 @@ import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/applic
import {selectBodyshop} from "../../redux/user/user.selectors";
import {pageLimit} from "../../utils/config";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -52,7 +53,7 @@ export function AllJobs({bodyshop, setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.payments-all");
document.title = t("titles.payments-all",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("allpayments");
setBreadcrumbs([
{link: "/manage/payments", label: t("titles.bc.payments-all")},

View File

@@ -8,6 +8,7 @@ import {Drawer, Grid} from "antd";
import {useLocation, useNavigate} from "react-router-dom";
import PhonebookFormContainer from "../../components/phonebook-form/phonebook-form.container";
import queryString from "query-string";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -18,7 +19,7 @@ export function PhonebookContainer({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.phonebook");
document.title = t("titles.phonebook", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("phonebook");
setBreadcrumbs([
{
@@ -66,4 +67,4 @@ export function PhonebookContainer({setBreadcrumbs, setSelectedHeader}) {
);
}
export default connect(null, mapDispatchToProps)(PhonebookContainer);
export default connect(null, mapDispatchToProps)(PhonebookContainer);

View File

@@ -7,6 +7,7 @@ import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/applic
import {selectBodyshop} from "../../redux/user/user.selectors";
import ProductionBoardComponent from "./production-board.component";
import FeatureWrapper from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -25,7 +26,7 @@ export function ProductionBoardContainer({
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.productionboard");
document.title = t("titles.productionboard",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("productionboard");
setBreadcrumbs([
{

View File

@@ -4,6 +4,7 @@ import {connect} from "react-redux";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import ProductionListComponent from "./production-list.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -18,7 +19,7 @@ export function ProductionListContainer({
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.productionlist");
document.title = t("titles.productionlist",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("productionlist");
setBreadcrumbs([
{link: "/manage/production/list", label: t("titles.bc.productionlist")},

View File

@@ -3,6 +3,7 @@ import {useTranslation} from "react-i18next";
import {connect} from "react-redux";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import ProfilePage from "./profile.page";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -16,7 +17,7 @@ export function ProfileContainerPage({setBreadcrumbs, setSelectedHeader}) {
setBreadcrumbs([
{link: "/manage/profile", label: t("titles.bc.profile")},
]);
document.title = t("titles.profile");
document.title = t("titles.profile",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
}, [t, setBreadcrumbs, setSelectedHeader]);
return <ProfilePage/>;

View File

@@ -4,6 +4,7 @@ import {connect} from "react-redux";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import SchedulePageComponent from "./schedule.page.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -14,7 +15,7 @@ export function SchedulePageContainer({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.schedule");
document.title = t("titles.schedule",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("schedule");
setBreadcrumbs([
{link: "/manage/schedule", label: t("titles.bc.schedule")},

View File

@@ -14,6 +14,7 @@ import ScoreboardTimeTicketsStats from "../../components/scoreboard-timetickets-
import ScoreboardTimeTickets from "../../components/scoreboard-timetickets/scoreboard-timetickets.component";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import {selectBodyshop} from "../../redux/user/user.selectors";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
/**
* Mapping state to props
@@ -46,7 +47,7 @@ export function ScoreboardContainer({setBreadcrumbs, setSelectedHeader}) {
* useEffect hook to set document title, selected header and breadcrumbs
*/
useEffect(() => {
document.title = t("titles.scoreboard");
document.title = t("titles.scoreboard",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("scoreboard");
setBreadcrumbs([
{
@@ -106,4 +107,4 @@ export function ScoreboardContainer({setBreadcrumbs, setSelectedHeader}) {
export default connect(
mapStateToProps,
mapDispatchToProps
)(ScoreboardContainer);
)(ScoreboardContainer);

View File

@@ -12,6 +12,7 @@ import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import {QUERY_CSI_RESPONSE_PAGINATED} from "../../graphql/csi.queries";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import {selectBodyshop} from "../../redux/user/user.selectors";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -38,7 +39,7 @@ export function ShopCsiContainer({
);
useEffect(() => {
document.title = t("titles.shop-csi");
document.title = t("titles.shop-csi",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("shop-csi");
setBreadcrumbs([
{
@@ -70,4 +71,4 @@ export function ShopCsiContainer({
);
}
export default connect(mapStateToProps, mapDispatchToProps)(ShopCsiContainer);
export default connect(mapStateToProps, mapDispatchToProps)(ShopCsiContainer);

View File

@@ -7,6 +7,7 @@ import {connect} from "react-redux";
import {createStructuredSelector} from "reselect";
import {selectBodyshop} from "../../redux/user/user.selectors";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -23,7 +24,7 @@ export function ShopVendorPageContainer({
}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.shop_vendors");
document.title = t("titles.shop_vendors", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("shop-vendors");
setBreadcrumbs([
{

View File

@@ -7,7 +7,7 @@ import ShopEmployeesContainer from "../../components/shop-employees/shop-employe
import ShopInfoContainer from "../../components/shop-info/shop-info.container";
import ShopCsiConfig from "../../components/shop-csi-config/shop-csi-config.component";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
import {connect} from "react-redux";
import {createStructuredSelector} from "reselect";
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
@@ -30,7 +30,7 @@ export function ShopPage({bodyshop, setSelectedHeader, setBreadcrumbs}) {
const search = queryString.parse(useLocation().search);
useEffect(() => {
document.title = t("titles.shop");
document.title = t("titles.shop",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("shop");
setBreadcrumbs([
{

View File

@@ -4,12 +4,13 @@ import {useTranslation} from "react-i18next";
import TechClockInFormContainer from "../../components/tech-job-clock-in-form/tech-job-clock-in-form.container";
import TechClockedInList from "../../components/tech-job-clocked-in-list/tech-job-clocked-in-list.component";
import TechJobStatistics from "../../components/tech-job-statistics/tech-job-statistics.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
export default function TechClockComponent() {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.techjobclock");
document.title = t("titles.techjobclock", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
}, [t]);
return (

View File

@@ -2,12 +2,13 @@ import React, {useEffect} from "react";
import {useTranslation} from "react-i18next";
import RbacWrapperComponent from "../../components/rbac-wrapper/rbac-wrapper.component";
import TechLookupJobsList from "../../components/tech-lookup-jobs-list/tech-lookup-jobs-list.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
export default function TechLookupContainer() {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.techjoblookup");
document.title = t("titles.techjoblookup", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
}, [t]);
return (

View File

@@ -1,12 +1,13 @@
import React, {useEffect} from "react";
import {useTranslation} from "react-i18next";
import TimeTicketShift from "../../components/time-ticket-shift/time-ticket-shift.container";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
export default function TechShiftClock() {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.techshiftclock");
document.title = t("titles.techshiftclock",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
}, [t]);
return (

View File

@@ -13,6 +13,7 @@ import TechLookupJobsDrawer from "../../components/tech-lookup-jobs-drawer/tech-
import TechSider from "../../components/tech-sider/tech-sider.component";
import UpdateAlert from "../../components/update-alert/update-alert.component";
import {selectTechnician} from "../../redux/tech/tech.selectors";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
import "./tech.page.styles.scss";
const TimeTicketModalContainer = lazy(() =>
@@ -66,7 +67,7 @@ export function TechPage({technician}) {
const navigate = useNavigate();
useEffect(() => {
document.title = t("titles.app");
document.title = InstanceRenderManager({imex: t("titles.imexonline"), rome: t("titles.romeonline"), promanager:t("titles.promanager")});
}, [t]);
useEffect(() => {
@@ -86,7 +87,7 @@ export function TechPage({technician}) {
<ErrorBoundary>
<Suspense
fallback={
<LoadingSpinner message={t("general.labels.loadingapp")}/>
<LoadingSpinner message={t("general.labels.loadingapp", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})})}/>
}
>
<FeatureWrapper featureName="tech-console">
@@ -115,4 +116,4 @@ export function TechPage({technician}) {
);
}
export default connect(mapStateToProps, mapDispatchToProps)(TechPage);
export default connect(mapStateToProps, mapDispatchToProps)(TechPage);

View File

@@ -7,6 +7,7 @@ import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/applic
import {selectBodyshop} from "../../redux/user/user.selectors";
import TemporaryDocsComponent from "./temporary-docs.component";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -21,7 +22,7 @@ export function TempDocumentsContainer({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.temporarydocs");
document.title = t("titles.temporarydocs",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("temporarydocs");
setBreadcrumbs([
{

View File

@@ -20,6 +20,7 @@ import TimeTicketsAttendanceTable
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import TimeTicketsCommit from "../../components/time-tickets-commit/time-tickets-commit.component";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({});
@@ -52,7 +53,7 @@ export function TimeTicketsContainer({
});
useEffect(() => {
document.title = t("titles.timetickets");
document.title = t("titles.timetickets",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("timetickets");
setBreadcrumbs([
{

View File

@@ -7,6 +7,7 @@ import TtApprovalsList from "../../components/tt-approvals-list/tt-approvals-lis
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
import {selectBodyshop} from "../../redux/user/user.selectors";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -21,7 +22,7 @@ export function TtApprovalsPage({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.ttapprovals");
document.title = t("titles.ttapprovals",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("ttapprovals");
setBreadcrumbs([
{

View File

@@ -10,6 +10,7 @@ import {addRecentItem, setBreadcrumbs, setSelectedHeader,} from "../../redux/app
import {connect} from "react-redux";
import {CreateRecentItem} from "../../utils/create-recent-item";
import NotFound from "../../components/not-found/not-found.component";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -33,6 +34,7 @@ export function VehicleDetailContainer({
useEffect(() => {
document.title = t("titles.vehicledetail", {
app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'}),
vehicle:
data && data.vehicles_by_pk
? `${(data.vehicles_by_pk && data.vehicles_by_pk.v_model_yr) || ""} ${

View File

@@ -2,6 +2,7 @@ import React, {useEffect} from "react";
import VehiclesPageComponent from "./vehicles.page.component";
import {useTranslation} from "react-i18next";
import {connect} from "react-redux";
import InstanceRenderManager from '../../utils/instanceRenderMgr';
import {setBreadcrumbs, setSelectedHeader,} from "../../redux/application/application.actions";
@@ -14,7 +15,7 @@ export function VehiclesPageContainer({setBreadcrumbs, setSelectedHeader}) {
const {t} = useTranslation();
useEffect(() => {
document.title = t("titles.vehicles");
document.title = t("titles.vehicles",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})} );
setSelectedHeader("vehicles");
setBreadcrumbs([
{link: "/manage/vehicles", label: t("titles.bc.vehicles")},

View File

@@ -760,7 +760,7 @@
"driverinformation": "Driver's Information",
"findcontract": "Find Contract",
"findermodal": "Contract Finder",
"insuranceexpired": "The courtesy car insurance expires before the car is expected to return.",
"insuranceexpired": "The courtesy car insurance expires before the car is expected to return.",
"noteconvertedfrom": "R.O. created from converted Courtesy Car Contract {{agreementnumber}}.",
"populatefromjob": "Populate from Job",
"rates": "Contract Rates",
@@ -859,8 +859,8 @@
"created_at": "Created At"
},
"labels": {
"nologgedinuser": "Please log out of $t(titles.app)",
"nologgedinuser_sub": "Users of $t(titles.app) cannot complete CSI surveys while logged in. Please log out and try again.",
"nologgedinuser": "Please log out of {{app}}",
"nologgedinuser_sub": "Users of {{app}} cannot complete CSI surveys while logged in. Please log out and try again.",
"noneselected": "No response selected.",
"title": "Customer Satisfaction Survey"
},
@@ -881,7 +881,7 @@
"labels": {
"bodyhrs": "Body Hrs",
"dollarsinproduction": "Dollars in Production",
"phone": "Phone",
"phone": "Phone",
"prodhrs": "Production Hrs",
"refhrs": "Refinish Hrs"
},
@@ -898,8 +898,8 @@
"productionhours": "Total Hours in Production",
"projectedmonthlysales": "Projected Monthly Sales",
"scheduledindate": "Sheduled In Today: {{date}}",
"scheduledintoday": "Sheduled In Today",
"scheduledoutdate": "Sheduled Out Today: {{date}}",
"scheduledintoday": "Sheduled In Today",
"scheduledoutdate": "Sheduled Out Today: {{date}}",
"scheduledouttoday": "Sheduled Out Today"
}
},
@@ -1142,12 +1142,12 @@
"help": "Help",
"hours": "hrs",
"in": "In",
"instanceconflictext": "Your $t(titles.app) account can only be used on one device at any given time. Refresh your session to take control.",
"instanceconflictext": "Your {{app}} account can only be used on one device at any given time. Refresh your session to take control.",
"instanceconflictitle": "Your account is being used elsewhere.",
"item": "Item",
"label": "Label",
"loading": "Loading...",
"loadingapp": "Loading $t(titles.app)",
"loadingapp": "Loading {{app}}",
"loadingshop": "Loading shop data...",
"loggingin": "Authorizing...",
"markedexported": "Manually marked as exported.",
@@ -1202,15 +1202,15 @@
"spanish": "Spanish"
},
"messages": {
"exception": "$t(titles.app) has encountered an error. Please try again. If the problem persists, please submit a support ticket or contact us.",
"newversionmessage": "Click refresh below to update to the latest available version of $t(titles.app). Please make sure all other tabs and windows are closed.",
"newversiontitle": "New version of $t(titles.app) Available",
"exception": "{{app}} has encountered an error. Please try again. If the problem persists, please submit a support ticket or contact us.",
"newversionmessage": "Click refresh below to update to the latest available version of {{app}}. Please make sure all other tabs and windows are closed.",
"newversiontitle": "New version of {{app}} Available",
"noacctfilepath": "There is no accounting file path set. You will not be able to export any items.",
"nofeatureaccess": "You do not have access to this feature of $t(titles.app). Please contact support to request a license for this feature.",
"nofeatureaccess": "You do not have access to this feature of {{app}}. Please contact support to request a license for this feature.",
"noshop": "You do not have access to any shops. Please reach out to your shop manager or technical support. ",
"notfoundsub": "Please make sure that you have access to the data or that the link is correct.",
"notfoundtitle": "We couldn't find what you're looking for...",
"partnernotrunning": "$t(titles.app) has detected that the partner is not running. Please ensure it is running to enable full functionality.",
"partnernotrunning": "{{app}} has detected that the partner is not running. Please ensure it is running to enable full functionality.",
"rbacunauth": "You are not authorized to view this content. Please reach out to your shop manager to change your access level.",
"unsavedchanges": "You have unsaved changes.",
"unsavedchangespopup": "You have unsaved changes. Are you sure you want to leave?"
@@ -1227,7 +1227,7 @@
},
"labels": {
"codeplacholder": "6 digit PIN code",
"rescuedesc": "Enter the 6 digit code provided by $t(titles.app) Support below and click connect.",
"rescuedesc": "Enter the 6 digit code provided by {{app}} Support below and click connect.",
"rescuetitle": "Rescue Me!"
}
},
@@ -1823,7 +1823,7 @@
"ca_gst_all_if_null": "If the Job is marked as a \"GST Registrant\" and this value is set to $0, the customer will be responsible for paying all of the GST by default. ",
"calc_repair_days": "Calculated Repair Days",
"calc_repair_days_tt": "This is the approximate number of days required to complete the repair according to the target touch time in your shop configuration (current set to {{target_touchtime}}).",
"calc_scheuled_completion": "Calculate Scheduled Completion",
"calc_scheuled_completion": "Calculate Scheduled Completion",
"cards": {
"customer": "Customer Information",
"damage": "Area of Damage",
@@ -1991,7 +1991,7 @@
"total_sales_tax": "Total Sales Tax",
"totals": "Totals",
"unvoidnote": "This Job was unvoided.",
"update_scheduled_completion": "Update Scheduled Completion?",
"update_scheduled_completion": "Update Scheduled Completion?",
"vehicle_info": "Vehicle",
"vehicleassociation": "Vehicle Association",
"viewallocations": "View Allocations",
@@ -2701,16 +2701,16 @@
"generate": "Generate"
},
"labels": {
"advanced_filters": "Advanced Filters and Sorters",
"advanced_filters_show": "Show",
"advanced_filters_hide": "Hide",
"advanced_filters_filters": "Filters",
"advanced_filters_sorters": "Sorters",
"advanced_filters_filter_field": "Field",
"advanced_filters_sorter_field": "Field",
"advanced_filters_sorter_direction": "Direction",
"advanced_filters_filter_operator": "Operator",
"advanced_filters_filter_value": "Value",
"advanced_filters": "Advanced Filters and Sorters",
"advanced_filters_filter_field": "Field",
"advanced_filters_filter_operator": "Operator",
"advanced_filters_filter_value": "Value",
"advanced_filters_filters": "Filters",
"advanced_filters_hide": "Hide",
"advanced_filters_show": "Show",
"advanced_filters_sorter_direction": "Direction",
"advanced_filters_sorter_field": "Field",
"advanced_filters_sorters": "Sorters",
"dates": "Dates",
"employee": "Employee",
"filterson": "Filters on {{object}}: {{field}}",
@@ -3022,9 +3022,9 @@
}
},
"titles": {
"accounting-payables": "Payables | $t(titles.app)",
"accounting-payments": "Payments | $t(titles.app)",
"accounting-receivables": "Receivables | $t(titles.app)",
"accounting-payables": "Payables | {{app}}",
"accounting-payments": "Payments | {{app}}",
"accounting-receivables": "Receivables | {{app}}",
"app": "Rome Online",
"bc": {
"accounting-payables": "Payables",
@@ -3073,55 +3073,58 @@
"vehicle-details": "Vehicle: {{vehicle}}",
"vehicles": "Vehicles"
},
"bills-list": "Bills | $t(titles.app)",
"contracts": "Courtesy Car Contracts | $t(titles.app)",
"contracts-create": "New Contract | $t(titles.app)",
"contracts-detail": "Contract {{id}} | $t(titles.app)",
"courtesycars": "Courtesy Cars | $t(titles.app)",
"courtesycars-create": "New Courtesy Car | $t(titles.app)",
"courtesycars-detail": "Courtesy Car {{id}} | $t(titles.app)",
"dashboard": "Dashboard | $t(titles.app)",
"dms": "DMS Export | $t(titles.app)",
"export-logs": "Export Logs | $t(titles.app)",
"inventory": "Inventory | $t(titles.app)",
"jobs": "Active Jobs | $t(titles.app)",
"jobs-admin": "Job {{ro_number}} - Admin | $t(titles.app)",
"jobs-all": "All Jobs | $t(titles.app)",
"jobs-checklist": "Job Checklist | $t(titles.app)",
"jobs-close": "Close Job {{number}} | $t(titles.app)",
"jobs-create": "Create a New Job | $t(titles.app)",
"jobs-deliver": "Deliver Job | $t(titles.app)",
"jobs-intake": "Intake | $t(titles.app)",
"jobsavailable": "Available Jobs | $t(titles.app)",
"jobsdetail": "Job {{ro_number}} | $t(titles.app)",
"jobsdocuments": "Job Documents {{ro_number}} | $t(titles.app)",
"manageroot": "Home | $t(titles.app)",
"owners": "All Owners | $t(titles.app)",
"owners-detail": "{{name}} | $t(titles.app)",
"parts-queue": "Parts Queue | $t(titles.app)",
"payments-all": "Payments | $t(titles.app)",
"phonebook": "Phonebook | $t(titles.app)",
"productionboard": "Production Board - Visual | $t(titles.app)",
"productionlist": "Production Board - List | $t(titles.app)",
"profile": "My Profile | $t(titles.app)",
"readyjobs": "Ready Jobs | $t(titles.app)",
"bills-list": "Bills | {{app}}",
"contracts": "Courtesy Car Contracts | {{app}}",
"contracts-create": "New Contract | {{app}}",
"contracts-detail": "Contract {{id}} | {{app}}",
"courtesycars": "Courtesy Cars | {{app}}",
"courtesycars-create": "New Courtesy Car | {{app}}",
"courtesycars-detail": "Courtesy Car {{id}} | {{app}}",
"dashboard": "Dashboard | {{app}}",
"dms": "DMS Export | {{app}}",
"export-logs": "Export Logs | {{app}}",
"imexonline": "ImEX Online",
"inventory": "Inventory | {{app}}",
"jobs": "Active Jobs | {{app}}",
"jobs-admin": "Job {{ro_number}} - Admin | {{app}}",
"jobs-all": "All Jobs | {{app}}",
"jobs-checklist": "Job Checklist | {{app}}",
"jobs-close": "Close Job {{number}} | {{app}}",
"jobs-create": "Create a New Job | {{app}}",
"jobs-deliver": "Deliver Job | {{app}}",
"jobs-intake": "Intake | {{app}}",
"jobsavailable": "Available Jobs | {{app}}",
"jobsdetail": "Job {{ro_number}} | {{app}}",
"jobsdocuments": "Job Documents {{ro_number}} | {{app}}",
"manageroot": "Home | {{app}}",
"owners": "All Owners | {{app}}",
"owners-detail": "{{name}} | {{app}}",
"parts-queue": "Parts Queue | {{app}}",
"payments-all": "Payments | {{app}}",
"phonebook": "Phonebook | {{app}}",
"productionboard": "Production Board - Visual | {{app}}",
"productionlist": "Production Board - List | {{app}}",
"profile": "My Profile | {{app}}",
"promanager": "ProManager",
"readyjobs": "Ready Jobs | {{app}}",
"resetpassword": "Reset Password",
"resetpasswordvalidate": "Enter New Password",
"schedule": "Schedule | $t(titles.app)",
"scoreboard": "Scoreboard | $t(titles.app)",
"shop": "My Shop | $t(titles.app)",
"shop-csi": "CSI Responses | $t(titles.app)",
"shop-templates": "Shop Templates | $t(titles.app)",
"shop_vendors": "Vendors | $t(titles.app)",
"techconsole": "Technician Console | $t(titles.app)",
"techjobclock": "Technician Job Clock | $t(titles.app)",
"techjoblookup": "Technician Job Lookup | $t(titles.app)",
"techshiftclock": "Technician Shift Clock | $t(titles.app)",
"temporarydocs": "Temporary Documents | $t(titles.app)",
"timetickets": "Time Tickets | $t(titles.app)",
"ttapprovals": "Time Ticket Approvals | $t(titles.app)",
"vehicledetail": "Vehicle Details {{vehicle}} | $t(titles.app)",
"vehicles": "All Vehicles | $t(titles.app)"
"romeonline": "Rome Online",
"schedule": "Schedule | {{app}}",
"scoreboard": "Scoreboard | {{app}}",
"shop": "My Shop | {{app}}",
"shop-csi": "CSI Responses | {{app}}",
"shop-templates": "Shop Templates | {{app}}",
"shop_vendors": "Vendors | {{app}}",
"techconsole": "Technician Console | {{app}}",
"techjobclock": "Technician Job Clock | {{app}}",
"techjoblookup": "Technician Job Lookup | {{app}}",
"techshiftclock": "Technician Shift Clock | {{app}}",
"temporarydocs": "Temporary Documents | {{app}}",
"timetickets": "Time Tickets | {{app}}",
"ttapprovals": "Time Ticket Approvals | {{app}}",
"vehicledetail": "Vehicle Details {{vehicle}} | {{app}}",
"vehicles": "All Vehicles | {{app}}"
},
"tt_approvals": {
"actions": {

View File

@@ -760,7 +760,7 @@
"driverinformation": "",
"findcontract": "",
"findermodal": "",
"insuranceexpired": "",
"insuranceexpired": "",
"noteconvertedfrom": "",
"populatefromjob": "",
"rates": "",
@@ -881,7 +881,7 @@
"labels": {
"bodyhrs": "",
"dollarsinproduction": "",
"phone": "",
"phone": "",
"prodhrs": "",
"refhrs": ""
},
@@ -897,9 +897,9 @@
"productiondollars": "",
"productionhours": "",
"projectedmonthlysales": "",
"scheduledindate": "",
"scheduledindate": "",
"scheduledintoday": "",
"scheduledoutdate": "",
"scheduledoutdate": "",
"scheduledouttoday": ""
}
},
@@ -1147,7 +1147,7 @@
"item": "",
"label": "",
"loading": "Cargando...",
"loadingapp": "Cargando $t(titles.app)",
"loadingapp": "Cargando {{app}}",
"loadingshop": "Cargando datos de la tienda ...",
"loggingin": "Iniciando sesión ...",
"markedexported": "",
@@ -1823,7 +1823,7 @@
"ca_gst_all_if_null": "",
"calc_repair_days": "",
"calc_repair_days_tt": "",
"calc_scheuled_completion": "",
"calc_scheuled_completion": "",
"cards": {
"customer": "Información al cliente",
"damage": "Área de Daño",
@@ -1991,7 +1991,7 @@
"total_sales_tax": "",
"totals": "",
"unvoidnote": "",
"update_scheduled_completion": "",
"update_scheduled_completion": "",
"vehicle_info": "Vehículo",
"vehicleassociation": "",
"viewallocations": "",
@@ -2701,16 +2701,16 @@
"generate": ""
},
"labels": {
"advanced_filters": "",
"advanced_filters_show": "",
"advanced_filters_hide": "",
"advanced_filters_filters": "",
"advanced_filters_sorters": "",
"advanced_filters_filter_field": "",
"advanced_filters_sorter_field": "",
"advanced_filters_sorter_direction": "",
"advanced_filters_filter_operator": "",
"advanced_filters_filter_value": "",
"advanced_filters": "",
"advanced_filters_filter_field": "",
"advanced_filters_filter_operator": "",
"advanced_filters_filter_value": "",
"advanced_filters_filters": "",
"advanced_filters_hide": "",
"advanced_filters_show": "",
"advanced_filters_sorter_direction": "",
"advanced_filters_sorter_field": "",
"advanced_filters_sorters": "",
"dates": "",
"employee": "",
"filterson": "",
@@ -3083,8 +3083,9 @@
"dashboard": "",
"dms": "",
"export-logs": "",
"imexonline": "",
"inventory": "",
"jobs": "Todos los trabajos | $t(titles.app)",
"jobs": "Todos los trabajos | {{app}}",
"jobs-admin": "",
"jobs-all": "",
"jobs-checklist": "",
@@ -3092,36 +3093,38 @@
"jobs-create": "",
"jobs-deliver": "",
"jobs-intake": "",
"jobsavailable": "Empleos disponibles | $t(titles.app)",
"jobsdetail": "Trabajo {{ro_number}} | $t(titles.app)",
"jobsdocuments": "Documentos de trabajo {{ro_number}} | $t(titles.app)",
"manageroot": "Casa | $t(titles.app)",
"owners": "Todos los propietarios | $t(titles.app)",
"jobsavailable": "Empleos disponibles | {{app}}",
"jobsdetail": "Trabajo {{ro_number}} | {{app}}",
"jobsdocuments": "Documentos de trabajo {{ro_number}} | {{app}}",
"manageroot": "Casa | {{app}}",
"owners": "Todos los propietarios | {{app}}",
"owners-detail": "",
"parts-queue": "",
"payments-all": "",
"phonebook": "",
"productionboard": "",
"productionlist": "",
"profile": "Mi perfil | $t(titles.app)",
"profile": "Mi perfil | {{app}}",
"promanager": "",
"readyjobs": "",
"resetpassword": "",
"resetpasswordvalidate": "",
"schedule": "Horario | $t(titles.app)",
"romeonline": "",
"schedule": "Horario | {{app}}",
"scoreboard": "",
"shop": "Mi tienda | $t(titles.app)",
"shop": "Mi tienda | {{app}}",
"shop-csi": "",
"shop-templates": "",
"shop_vendors": "Vendedores | $t(titles.app)",
"techconsole": "$t(titles.app)",
"techjobclock": "$t(titles.app)",
"techjoblookup": "$t(titles.app)",
"techshiftclock": "$t(titles.app)",
"shop_vendors": "Vendedores | {{app}}",
"techconsole": "{{app}}",
"techjobclock": "{{app}}",
"techjoblookup": "{{app}}",
"techshiftclock": "{{app}}",
"temporarydocs": "",
"timetickets": "",
"ttapprovals": "",
"vehicledetail": "Detalles del vehículo {{vehicle}} | $t(titles.app)",
"vehicles": "Todos los vehiculos | $t(titles.app)"
"vehicledetail": "Detalles del vehículo {{vehicle}} | {{app}}",
"vehicles": "Todos los vehiculos | {{app}}"
},
"tt_approvals": {
"actions": {

View File

@@ -760,7 +760,7 @@
"driverinformation": "",
"findcontract": "",
"findermodal": "",
"insuranceexpired": "",
"insuranceexpired": "",
"noteconvertedfrom": "",
"populatefromjob": "",
"rates": "",
@@ -881,7 +881,7 @@
"labels": {
"bodyhrs": "",
"dollarsinproduction": "",
"phone": "",
"phone": "",
"prodhrs": "",
"refhrs": ""
},
@@ -897,9 +897,9 @@
"productiondollars": "",
"productionhours": "",
"projectedmonthlysales": "",
"scheduledindate": "",
"scheduledindate": "",
"scheduledintoday": "",
"scheduledoutdate": "",
"scheduledoutdate": "",
"scheduledouttoday": ""
}
},
@@ -1147,7 +1147,7 @@
"item": "",
"label": "",
"loading": "Chargement...",
"loadingapp": "Chargement de $t(titles.app)",
"loadingapp": "Chargement de {{app}}",
"loadingshop": "Chargement des données de la boutique ...",
"loggingin": "Vous connecter ...",
"markedexported": "",
@@ -1823,7 +1823,7 @@
"ca_gst_all_if_null": "",
"calc_repair_days": "",
"calc_repair_days_tt": "",
"calc_scheuled_completion": "",
"calc_scheuled_completion": "",
"cards": {
"customer": "Informations client",
"damage": "Zone de dommages",
@@ -1991,7 +1991,7 @@
"total_sales_tax": "",
"totals": "",
"unvoidnote": "",
"update_scheduled_completion": "",
"update_scheduled_completion": "",
"vehicle_info": "Véhicule",
"vehicleassociation": "",
"viewallocations": "",
@@ -2701,16 +2701,16 @@
"generate": ""
},
"labels": {
"advanced_filters": "",
"advanced_filters_show": "",
"advanced_filters_hide": "",
"advanced_filters_filters": "",
"advanced_filters_sorters": "",
"advanced_filters_filter_field": "",
"advanced_filters_sorter_field": "",
"advanced_filters_sorter_direction": "",
"advanced_filters_filter_operator": "",
"advanced_filters_filter_value": "",
"advanced_filters": "",
"advanced_filters_filter_field": "",
"advanced_filters_filter_operator": "",
"advanced_filters_filter_value": "",
"advanced_filters_filters": "",
"advanced_filters_hide": "",
"advanced_filters_show": "",
"advanced_filters_sorter_direction": "",
"advanced_filters_sorter_field": "",
"advanced_filters_sorters": "",
"dates": "",
"employee": "",
"filterson": "",
@@ -3083,8 +3083,9 @@
"dashboard": "",
"dms": "",
"export-logs": "",
"imexonline": "",
"inventory": "",
"jobs": "Tous les emplois | $t(titles.app)",
"jobs": "Tous les emplois | {{app}}",
"jobs-admin": "",
"jobs-all": "",
"jobs-checklist": "",
@@ -3092,36 +3093,38 @@
"jobs-create": "",
"jobs-deliver": "",
"jobs-intake": "",
"jobsavailable": "Emplois disponibles | $t(titles.app)",
"jobsdetail": "Travail {{ro_number}} | $t(titles.app)",
"jobsdocuments": "Documents de travail {{ro_number}} | $t(titles.app)",
"manageroot": "Accueil | $t(titles.app)",
"owners": "Tous les propriétaires | $t(titles.app)",
"jobsavailable": "Emplois disponibles | {{app}}",
"jobsdetail": "Travail {{ro_number}} | {{app}}",
"jobsdocuments": "Documents de travail {{ro_number}} | {{app}}",
"manageroot": "Accueil | {{app}}",
"owners": "Tous les propriétaires | {{app}}",
"owners-detail": "",
"parts-queue": "",
"payments-all": "",
"phonebook": "",
"productionboard": "",
"productionlist": "",
"profile": "Mon profil | $t(titles.app)",
"profile": "Mon profil | {{app}}",
"promanager": "",
"readyjobs": "",
"resetpassword": "",
"resetpasswordvalidate": "",
"schedule": "Horaire | $t(titles.app)",
"romeonline": "",
"schedule": "Horaire | {{app}}",
"scoreboard": "",
"shop": "Mon magasin | $t(titles.app)",
"shop": "Mon magasin | {{app}}",
"shop-csi": "",
"shop-templates": "",
"shop_vendors": "Vendeurs | $t(titles.app)",
"techconsole": "$t(titles.app)",
"techjobclock": "$t(titles.app)",
"techjoblookup": "$t(titles.app)",
"techshiftclock": "$t(titles.app)",
"shop_vendors": "Vendeurs | {{app}}",
"techconsole": "{{app}}",
"techjobclock": "{{app}}",
"techjoblookup": "{{app}}",
"techshiftclock": "{{app}}",
"temporarydocs": "",
"timetickets": "",
"ttapprovals": "",
"vehicledetail": "Détails du véhicule {{vehicle} | $t(titles.app)",
"vehicles": "Tous les véhicules | $t(titles.app)"
"vehicledetail": "Détails du véhicule {{vehicle} | {{app}}",
"vehicles": "Tous les véhicules | {{app}}"
},
"tt_approvals": {
"actions": {

View File

@@ -1,16 +1,16 @@
import i18n from "i18next";
import LanguageDetector from "i18next-browser-languagedetector";
import {initReactI18next} from "react-i18next";
import en_Translation from "./en_us/common.json";
import es_Translation from "./es/common.json";
import fr_Translation from "./fr/common.json";
import i18n from 'i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
import { initReactI18next } from 'react-i18next';
import en_Translation from './en_us/common.json';
import es_Translation from './es/common.json';
import fr_Translation from './fr/common.json';
// the translations
// (tip move them in a JSON file and import them)
const resources = {
"en-US": en_Translation,
"fr-CA": fr_Translation,
"es-MX": es_Translation,
'en-US': en_Translation,
'fr-CA': fr_Translation,
'es-MX': es_Translation,
};
i18n
.use(initReactI18next)
@@ -19,14 +19,13 @@ i18n
resources,
//lng: "en",
detection: {},
fallbackLng: "en-US",
fallbackLng: 'en-US',
debug: import.meta.env.PROD ? false : true,
//keySeparator: false, // we do not use keys in form messages.welcome
interpolation: {
escapeValue: false, // react already safes from xss
},
});
//keySeparator: false, // we do not use keys in form messages.welcome
interpolation: {
escapeValue: false, // react already safes from xss
skipOnVariables: false,
},
});
export default i18n;

View File

@@ -43,8 +43,8 @@ const onServiceWorkerUpdate = (registration) => {
notification.open({
icon: <AlertOutlined/>,
message: i18n.t("general.messages.newversiontitle"),
description: i18n.t("general.messages.newversionmessage"),
message: i18n.t("general.messages.newversiontitle",{app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})}),
description: i18n.t("general.messages.newversionmessage", {app: InstanceRenderManager({imex:'$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)'})}),
duration: 0,
btn,
key: "updateavailable",