IO-3020 IO-3036 Initial removal of ProManager

This commit is contained in:
Patrick Fic
2024-11-21 13:37:36 -08:00
parent 289a666b6d
commit 9ccbca2678
124 changed files with 3199 additions and 1140 deletions

View File

@@ -179,37 +179,6 @@ jobs:
job_type: deployment job_type: deployment
pipeline_number: << pipeline.number >> pipeline_number: << pipeline.number >>
promanager-app-build:
docker:
- image: cimg/node:18.18.2
working_directory: ~/repo/client
steps:
- checkout:
path: ~/repo
- run:
name: Install Dependencies
command: npm i
- run: npm run build:production:promanager
- aws-cli/setup:
aws_access_key_id: AWS_ACCESS_KEY_ID
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
region: AWS_REGION
- aws-s3/sync:
from: dist
to: "s3://promanager-production/"
arguments: "--exclude '*.map'"
- jira/notify:
environment: Production (ProManager) - Front End
environment_type: production
pipeline_id: << pipeline.id >>
job_type: deployment
pipeline_number: << pipeline.number >>
test-rome-hasura-migrate: test-rome-hasura-migrate:
docker: docker:
- image: cimg/node:18.18.2 - image: cimg/node:18.18.2
@@ -268,37 +237,6 @@ jobs:
job_type: deployment job_type: deployment
pipeline_number: << pipeline.number >> pipeline_number: << pipeline.number >>
test-promanager-app-build:
docker:
- image: cimg/node:18.18.2
working_directory: ~/repo/client
steps:
- checkout:
path: ~/repo
- run:
name: Install Dependencies
command: npm i
- run: npm run build:test:promanager
- aws-cli/setup:
aws_access_key_id: AWS_ACCESS_KEY_ID
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
region: AWS_REGION
- aws-s3/sync:
from: dist
to: "s3://promanager-testing/"
arguments: "--exclude '*.map'"
- jira/notify:
environment: Test (ProManager) - Front End
environment_type: testing
pipeline_id: << pipeline.id >>
job_type: deployment
pipeline_number: << pipeline.number >>
test-hasura-migrate: test-hasura-migrate:
docker: docker:
- image: cimg/node:18.18.2 - image: cimg/node:18.18.2
@@ -458,14 +396,6 @@ workflows:
filters: filters:
branches: branches:
only: test-AIO only: test-AIO
- test-promanager-app-build:
filters:
branches:
only: test-AIO
- promanager-app-build:
filters:
branches:
only: master-AIO
- test-rome-hasura-migrate: - test-rome-hasura-migrate:
secret: ${HASURA_ROME_TEST_SECRET} secret: ${HASURA_ROME_TEST_SECRET}
filters: filters:

View File

@@ -10,5 +10,8 @@
"courtesycars": "date", "courtesycars": "date",
"media": "date", "media": "date",
"visualboard": "date", "visualboard": "date",
"scoreboard": "date" "scoreboard": "date",
"checklist": "date",
"smartscheduling" :"date",
"roguard": "date"
} }

View File

@@ -1,4 +1,4 @@
<babeledit_project version="1.2" be_version="2.7.1"> <babeledit_project be_version="2.7.1" version="1.2">
<!-- <!--
BabelEdit project file BabelEdit project file
@@ -20702,6 +20702,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>time</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> <concept_node>
<name>total</name> <name>total</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -21874,6 +21895,48 @@
<folder_node> <folder_node>
<name>columns</name> <name>columns</name>
<children> <children>
<concept_node>
<name>average_human_readable</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>average_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> <concept_node>
<name>duration</name> <name>duration</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -31809,6 +31872,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>tlos_ind</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> <concept_node>
<name>towin</name> <name>towin</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -58763,27 +58847,6 @@
</translation> </translation>
</translations> </translations>
</concept_node> </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> <concept_node>
<name>readyjobs</name> <name>readyjobs</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>

View File

@@ -1,14 +0,0 @@
VITE_APP_GRAPHQL_ENDPOINT=https://db.dev.imex.online/v1/graphql
VITE_APP_GRAPHQL_ENDPOINT_WS=wss://db.dev.imex.online/v1/graphql
VITE_APP_GA_CODE=231099835
VITE_APP_FIREBASE_CONFIG={"apiKey":"AIzaSyDPLT8GiDHDR1R4nI66Qi0BY1aYviDPioc","authDomain":"imex-dev.firebaseapp.com","databaseURL":"https://imex-dev.firebaseio.com","projectId":"imex-dev","storageBucket":"imex-dev.appspot.com","messagingSenderId":"759548147434","appId":"1:759548147434:web:e8239868a48ceb36700993","measurementId":"G-K5XRBVVB4S"}
VITE_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/io-test
VITE_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/io-test
VITE_APP_CLOUDINARY_API_KEY=957865933348715
VITE_APP_CLOUDINARY_THUMB_TRANSFORMATIONS=c_fill,h_250,w_250
VITE_APP_FIREBASE_PUBLIC_VAPID_KEY='BG3tzU7L2BXlGZ_3VLK4PNaRceoEXEnmHfxcVbRMF5o5g05ejslhVPki9kBM9cBBT-08Ad9kN3HSpS6JmrWD6h4'
VITE_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
VITE_APP_AXIOS_BASE_API_URL=/api/
VITE_APP_REPORTS_SERVER_URL=https://reports3.test.imex.online
VITE_APP_SPLIT_API=ts615lqgnmk84thn72uk18uu5pgce6e0l4rc
VITE_APP_INSTANCE=PROMANAGER

View File

@@ -1,15 +0,0 @@
GENERATE_SOURCEMAP=true
VITE_APP_GRAPHQL_ENDPOINT=https://db.romeonline.io/v1/graphql
VITE_APP_GRAPHQL_ENDPOINT_WS=wss://db.romeonline.io/v1/graphql
VITE_APP_GA_CODE=231103507
VITE_APP_FIREBASE_CONFIG={ "apiKey": "AIzaSyAuLQR9SV5LsVxjU8wh9hvFLdhcAHU6cxE", "authDomain": "rome-prod-1.firebaseapp.com", "projectId": "rome-prod-1", "storageBucket": "rome-prod-1.appspot.com", "messagingSenderId": "147786367145", "appId": "1:147786367145:web:9d4cba68071c3f29a8a9b8", "measurementId": "G-G8Z9DRHTZS"}
VITE_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/bodyshop
VITE_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/bodyshop
VITE_APP_CLOUDINARY_API_KEY=473322739956866
VITE_APP_CLOUDINARY_THUMB_TRANSFORMATIONS=c_fill,h_250,w_250
VITE_APP_FIREBASE_PUBLIC_VAPID_KEY='BMgZT1NZztW2DsJl8Mg2L04hgY9FzAg6b8fbzgNAfww2VDzH3VE63Ot9EaP_U7KWS2JT-7HPHaw0T_Tw_5vkZc8'
VITE_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
VITE_APP_AXIOS_BASE_API_URL=https://api.romeonline.io/
VITE_APP_REPORTS_SERVER_URL=https://reports.romeonline.io
VITE_APP_SPLIT_API=et9pjkik6bn67he5evpmpr1agoo7gactphgk
VITE_APP_INSTANCE=PROMANAGER

View File

@@ -1,15 +0,0 @@
VITE_APP_GRAPHQL_ENDPOINT=https://db.test.romeonline.io/v1/graphql
VITE_APP_GRAPHQL_ENDPOINT_WS=wss://db.test.romeonline.io/v1/graphql
VITE_APP_GA_CODE=231099835
VITE_APP_FIREBASE_CONFIG={ "apiKey": "AIzaSyAuLQR9SV5LsVxjU8wh9hvFLdhcAHU6cxE", "authDomain": "rome-prod-1.firebaseapp.com", "projectId": "rome-prod-1", "storageBucket": "rome-prod-1.appspot.com", "messagingSenderId": "147786367145", "appId": "1:147786367145:web:9d4cba68071c3f29a8a9b8", "measurementId": "G-G8Z9DRHTZS"}
VITE_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/bodyshop
VITE_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/bodyshop
VITE_APP_CLOUDINARY_API_KEY=473322739956866
VITE_APP_CLOUDINARY_THUMB_TRANSFORMATIONS=c_fill,h_250,w_250
VITE_APP_FIREBASE_PUBLIC_VAPID_KEY='BN2GcDPjipR5MTEosO5dT4CfQ3cmrdBIsI4juoOQrRijn_5aRiHlwj1mlq0W145mOusx6xynEKl_tvYJhpCc9lo'
VITE_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
VITE_APP_AXIOS_BASE_API_URL=https://api.test.romeonline.io/
VITE_APP_REPORTS_SERVER_URL=https://reports.test.romeonline.io
VITE_APP_IS_TEST=true
VITE_APP_SPLIT_API=ts615lqgnmk84thn72uk18uu5pgce6e0l4rc
VITE_APP_INSTANCE=PROMANAGER

View File

@@ -1,29 +1,27 @@
<!DOCTYPE html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"> <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0"> <meta http-equiv="Expires" content="0" />
<% if (env.VITE_APP_INSTANCE === 'IMEX') { %> <% if (env.VITE_APP_INSTANCE === 'IMEX') { %>
<link rel="icon" href="/favicon.png"/> <link rel="icon" href="/favicon.png" />
<% } %> <% if (env.VITE_APP_INSTANCE === 'ROME') { %> <% } %> <% if (env.VITE_APP_INSTANCE === 'ROME') { %>
<link rel="icon" href="/ro-favicon.png"/> <link rel="icon" href="/ro-favicon.png" />
<% } %> <% if (env.VITE_APP_INSTANCE === 'PROMANAGER') { %> <% } %>
<link rel="icon" href="/pm/pm-favicon.ico"/>
<% } %>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#1690ff"/> <meta name="theme-color" content="#1690ff" />
<!-- <link rel="apple-touch-icon" href="logo192.png" /> --> <!-- <link rel="apple-touch-icon" href="logo192.png" /> -->
<!-- TODO:AIo Update the individual logos for each.--> <!-- TODO:AIo Update the individual logos for each.-->
<link rel="apple-touch-icon" href="/logo192.png"/> <link rel="apple-touch-icon" href="/logo192.png" />
<link rel="mask-icon" href="/mask-icon.svg" color="#FFFFFF"> <link rel="mask-icon" href="/mask-icon.svg" color="#FFFFFF" />
<!-- <!--
manifest.json provides metadata used when your web app is installed on a manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
--> -->
<!-- <!--
Notice the use of %PUBLIC_URL% in the tags above. Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build. It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML. Only files inside the `public` folder can be referenced from the HTML.
@@ -32,95 +30,90 @@
work correctly both with client-side routing and a non-root public URL. work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`. Learn how to configure a non-root public URL by running `npm run build`.
--> -->
<% if (env.VITE_APP_INSTANCE === 'IMEX') { %> <% if (env.VITE_APP_INSTANCE === 'IMEX') { %>
<meta name="description" content="ImEX Online"/> <meta name="description" content="ImEX Online" />
<title>ImEX Online</title> <title>ImEX Online</title>
<script type="text/javascript"> <script type="text/javascript">
window.$crisp = []; window.$crisp = [];
window.CRISP_WEBSITE_ID = '36724f62-2eb0-4b29-9cdd-9905fb99913e'; window.CRISP_WEBSITE_ID = "36724f62-2eb0-4b29-9cdd-9905fb99913e";
(function () { (function () {
d = document; d = document;
s = d.createElement('script'); s = d.createElement("script");
s.src = 'https://client.crisp.chat/l.js'; s.src = "https://client.crisp.chat/l.js";
s.async = 1; s.async = 1;
d.getElementsByTagName('head')[0].appendChild(s); d.getElementsByTagName("head")[0].appendChild(s);
})(); })();
</script> </script>
<% } %> <% if (env.VITE_APP_INSTANCE === 'ROME') { %> <% } %> <% if (env.VITE_APP_INSTANCE === 'ROME') { %>
<meta name="description" content="Rome Online"/> <meta name="description" content="Rome Online" />
<title>Rome Online</title> <title>Rome Online</title>
<script type="text/javascript" id="zsiqchat"> <script type="text/javascript" id="zsiqchat">
var $zoho = $zoho || {}; var $zoho = $zoho || {};
$zoho.salesiq = $zoho.salesiq || { $zoho.salesiq = $zoho.salesiq || {
widgetcode: "siq01bb8ac617280bdacddfeb528f07734dadc64ef3f05efef9f769c1ec171af666", widgetcode: "siq01bb8ac617280bdacddfeb528f07734dadc64ef3f05efef9f769c1ec171af666",
values: {}, values: {},
ready: function () { ready: function () {}
} };
}; var d = document;
var d = document; s = d.createElement("script");
s = d.createElement("script"); s.type = "text/javascript";
s.type = "text/javascript"; s.id = "zsiqscript";
s.id = "zsiqscript"; s.defer = true;
s.defer = true; s.src = "https://salesiq.zohopublic.com/widget";
s.src = "https://salesiq.zohopublic.com/widget"; t = d.getElementsByTagName("script")[0];
t = d.getElementsByTagName("script")[0]; t.parentNode.insertBefore(s, t);
t.parentNode.insertBefore(s, t); </script>
</script>
<% } %> <% if (env.VITE_APP_INSTANCE === 'PROMANAGER') { %> <% } %>
<title>ProManager</title> <script>
<meta name="description" content="ProManager"/> !(function () {
"use strict";
var e = [
"debug",
"destroy",
"do",
"help",
"identify",
"is",
"off",
"on",
"ready",
"render",
"reset",
"safe",
"set"
];
if (window.noticeable) console.warn("Noticeable SDK code snippet loaded more than once");
else {
var n = (window.noticeable = window.noticeable || []);
<% } %> function t(e) {
<script> return function () {
!(function () { var t = Array.prototype.slice.call(arguments);
'use strict'; return t.unshift(e), n.push(t), n;
var e = [ };
'debug',
'destroy',
'do',
'help',
'identify',
'is',
'off',
'on',
'ready',
'render',
'reset',
'safe',
'set',
];
if (window.noticeable) console.warn('Noticeable SDK code snippet loaded more than once');
else {
var n = (window.noticeable = window.noticeable || []);
function t(e) {
return function () {
var t = Array.prototype.slice.call(arguments);
return t.unshift(e), n.push(t), n;
};
}
!(function () {
for (var o = 0; o < e.length; o++) {
var r = e[o];
n[r] = t(r);
} }
})(),
(function () {
var e = document.createElement('script');
(e.async = !0), (e.src = 'https://sdk.noticeable.io/l.js');
var n = document.head;
n.insertBefore(e, n.firstChild);
})();
}
})();
</script>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<script type="module" src="src/index.jsx"></script> !(function () {
</body> for (var o = 0; o < e.length; o++) {
var r = e[o];
n[r] = t(r);
}
})(),
(function () {
var e = document.createElement("script");
(e.async = !0), (e.src = "https://sdk.noticeable.io/l.js");
var n = document.head;
n.insertBefore(e, n.firstChild);
})();
}
})();
</script>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<script type="module" src="src/index.jsx"></script>
</body>
</html> </html>

View File

@@ -90,16 +90,12 @@
"build": "dotenvx run --env-file=.env.development.imex -- vite build", "build": "dotenvx run --env-file=.env.development.imex -- vite build",
"start:imex": "dotenvx run --env-file=.env.development.imex -- vite", "start:imex": "dotenvx run --env-file=.env.development.imex -- vite",
"start:rome": "dotenvx run --env-file=.env.development.rome -- vite", "start:rome": "dotenvx run --env-file=.env.development.rome -- vite",
"start:promanager": "dotenvx run --env-file=.env.development.promanager -- vite",
"preview:imex": "dotenvx run --env-file=.env.development.imex -- vite preview", "preview:imex": "dotenvx run --env-file=.env.development.imex -- vite preview",
"preview:rome": "dotenvx run --env-file=.env.development.rome -- vite preview", "preview:rome": "dotenvx run --env-file=.env.development.rome -- vite preview",
"preview:promanager": "dotenvx run --env-file=.env.development.promanager -- vite preview",
"build:test:imex": "env-cmd -f .env.test.imex npm run build", "build:test:imex": "env-cmd -f .env.test.imex npm run build",
"build:test:rome": "env-cmd -f .env.test.rome npm run build", "build:test:rome": "env-cmd -f .env.test.rome npm run build",
"build:test:promanager": "env-cmd -f .env.test.promanager npm run build",
"build:production:imex": "env-cmd -f .env.production.imex npm run build", "build:production:imex": "env-cmd -f .env.production.imex npm run build",
"build:production:rome": "env-cmd -f .env.production.rome npm run build", "build:production:rome": "env-cmd -f .env.production.rome npm run build",
"build:production:promanager": "env-cmd -f .env.production.promanager npm run build",
"test": "cypress open", "test": "cypress open",
"eject": "react-scripts eject", "eject": "react-scripts eject",
"madge": "madge --image ./madge-graph.svg --extensions js,jsx,ts,tsx --circular .", "madge": "madge --image ./madge-graph.svg --extensions js,jsx,ts,tsx --circular .",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -96,8 +96,7 @@ export function App({ bodyshop, checkUserSession, currentUser, online, setOnline
LogRocket.init( LogRocket.init(
InstanceRenderMgr({ InstanceRenderMgr({
imex: "gvfvfw/bodyshopapp", imex: "gvfvfw/bodyshopapp",
rome: "rome-online/rome-online", rome: "rome-online/rome-online"
promanager: "" // TODO: AIO Add in log rocket for promanager instances.
}) })
); );
} }
@@ -134,8 +133,7 @@ export function App({ bodyshop, checkUserSession, currentUser, online, setOnline
<LoadingSpinner <LoadingSpinner
message={InstanceRenderMgr({ message={InstanceRenderMgr({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
})} })}
/> />
} }
@@ -144,8 +142,7 @@ export function App({ bodyshop, checkUserSession, currentUser, online, setOnline
currentUser={currentUser} currentUser={currentUser}
workspaceCode={InstanceRenderMgr({ workspaceCode={InstanceRenderMgr({
imex: null, imex: null,
rome: "9BkbEseqNqxw8jUH", rome: "9BkbEseqNqxw8jUH"
promanager: "aoJoEifvezYI0Z0P"
})} })}
/> />

View File

@@ -26,13 +26,11 @@ const defaultTheme = {
token: { token: {
colorPrimary: InstanceRenderMgr({ colorPrimary: InstanceRenderMgr({
imex: "#1890ff", imex: "#1890ff",
rome: "#326ade", rome: "#326ade"
promanager: "#1d69a6"
}), }),
colorInfo: InstanceRenderMgr({ colorInfo: InstanceRenderMgr({
imex: "#1890ff", imex: "#1890ff",
rome: "#326ade", rome: "#326ade"
promanager: "#1d69a6"
}) })
} }
}; };

View File

@@ -228,7 +228,6 @@ export function BillEnterModalLinesComponent({
}} }}
</Form.Item> </Form.Item>
) )
//Do not need to set for promanager as it will default to Rome.
}) })
}, },
{ {
@@ -462,7 +461,6 @@ export function BillEnterModalLinesComponent({
...InstanceRenderManager({ ...InstanceRenderManager({
rome: [], rome: [],
promanager: [],
imex: [ imex: [
{ {
title: t("billlines.fields.federal_tax_applicable"), title: t("billlines.fields.federal_tax_applicable"),
@@ -476,7 +474,6 @@ export function BillEnterModalLinesComponent({
initialValue: InstanceRenderManager({ initialValue: InstanceRenderManager({
imex: true, imex: true,
rome: false, rome: false,
promanager: false
}), }),
name: [field.name, "applicable_taxes", "federal"] name: [field.name, "applicable_taxes", "federal"]
}; };
@@ -503,7 +500,6 @@ export function BillEnterModalLinesComponent({
...InstanceRenderManager({ ...InstanceRenderManager({
rome: [], rome: [],
promanager: [],
imex: [ imex: [
{ {
title: t("billlines.fields.local_tax_applicable"), title: t("billlines.fields.local_tax_applicable"),

View File

@@ -16,8 +16,7 @@ export default function ConflictComponent() {
{t("general.labels.instanceconflictext", { {t("general.labels.instanceconflictext", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
})} })}
</div> </div>

View File

@@ -108,8 +108,7 @@ class ErrorBoundary extends React.Component {
subTitle={t("general.messages.exception", { subTitle={t("general.messages.exception", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
})} })}
extra={ extra={

View File

@@ -22,8 +22,7 @@ function FeatureWrapper({ bodyshop, featureName, noauth, children, ...restProps
message={t("general.messages.nofeatureaccess", { message={t("general.messages.nofeatureaccess", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
})} })}
type="warning" type="warning"

View File

@@ -130,9 +130,8 @@ function Header({
if ( if (
InstanceRenderManager({ InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "bills", bodyshop }),
rome: true, rome: "USE_IMEX"
promanager: HasFeatureAccess({ featureName: "bills", bodyshop })
}) })
) { ) {
accountingChildren.push( accountingChildren.push(
@@ -172,9 +171,8 @@ function Header({
} }
if ( if (
InstanceRenderManager({ InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "payments", bodyshop }),
rome: true, rome: "USE_IMEX"
promanager: HasFeatureAccess({ featureName: "payments", bodyshop })
}) })
) { ) {
accountingChildren.push( accountingChildren.push(
@@ -219,9 +217,8 @@ function Header({
if ( if (
InstanceRenderManager({ InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "timetickets", bodyshop }),
rome: true, rome: "USE_IMEX"
promanager: HasFeatureAccess({ featureName: "timetickets", bodyshop })
}) })
) { ) {
accountingChildren.push( accountingChildren.push(
@@ -304,9 +301,8 @@ function Header({
if ( if (
InstanceRenderManager({ InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "export", bodyshop }),
rome: true, rome: "USE_IMEX"
promanager: HasFeatureAccess({ featureName: "export", bodyshop })
}) })
) { ) {
accountingChildren.push({ accountingChildren.push({
@@ -386,9 +382,8 @@ function Header({
label: <Link to="/manage/production/list">{t("menus.header.productionlist")}</Link> label: <Link to="/manage/production/list">{t("menus.header.productionlist")}</Link>
}, },
...(InstanceRenderManager({ ...(InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "visualboard", bodyshop }),
rome: true, rome: "USE_IMEX"
promanager: HasFeatureAccess({ featureName: "visualboard", bodyshop })
}) })
? [ ? [
{ {
@@ -401,9 +396,8 @@ function Header({
: []), : []),
...(InstanceRenderManager({ ...(InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "scoreboard", bodyshop }),
rome: true, rome: "USE_IMEX"
promanager: HasFeatureAccess({ featureName: "scoreboard", bodyshop })
}) })
? [ ? [
{ {
@@ -440,9 +434,8 @@ function Header({
] ]
}, },
...(InstanceRenderManager({ ...(InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "courtesycars", bodyshop }),
rome: true, rome: "USE_IMEX"
promanager: false // HasFeatureAccess({ featureName: 'courtesycars', bodyshop }),
}) })
? [ ? [
{ {
@@ -492,9 +485,8 @@ function Header({
label: <Link to="/manage/phonebook">{t("menus.header.phonebook")}</Link> label: <Link to="/manage/phonebook">{t("menus.header.phonebook")}</Link>
}, },
...(InstanceRenderManager({ ...(InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "media", bodyshop }),
rome: true, rome: "USE_IMEX"
promanager: HasFeatureAccess({ featureName: "media", bodyshop })
}) })
? [ ? [
{ {
@@ -571,9 +563,8 @@ function Header({
label: <Link to="/manage/shop/vendors">{t("menus.header.shop_vendors")}</Link> label: <Link to="/manage/shop/vendors">{t("menus.header.shop_vendors")}</Link>
}, },
...(InstanceRenderManager({ ...(InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "csi", bodyshop }),
rome: true, rome: "USE_IMEX"
promanager: HasFeatureAccess({ featureName: "csi", bodyshop })
}) })
? [ ? [
{ {
@@ -607,8 +598,7 @@ function Header({
window.open( window.open(
InstanceRenderManager({ InstanceRenderManager({
imex: "https://help.imex.online/", imex: "https://help.imex.online/",
rome: "https://rometech.com//", rome: "https://rometech.com//"
promanager: "https://web-est.com"
}), }),
"_blank" "_blank"
@@ -617,8 +607,7 @@ function Header({
}, },
...(InstanceRenderManager({ ...(InstanceRenderManager({
imex: true, imex: true,
rome: false, rome: false
promanager: false
}) })
? [ ? [
{ {
@@ -633,9 +622,8 @@ function Header({
: []), : []),
...(InstanceRenderManager({ ...(InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "timetickets", bodyshop }),
rome: true, rome: "USE_IMEX"
promanager: HasFeatureAccess({ featureName: "timetickets", bodyshop })
}) })
? [ ? [
{ {

View File

@@ -98,7 +98,6 @@ export default function JobBillsTotalComponent({
InstanceRenderManager({ InstanceRenderManager({
imex: Dinero(), imex: Dinero(),
rome: Dinero(totals.additional.additionalCosts), rome: Dinero(totals.additional.additionalCosts),
promanager: "USE_ROME"
}) })
); // Additional costs were captured for Rome, but not imex. ); // Additional costs were captured for Rome, but not imex.

View File

@@ -60,24 +60,21 @@ export function JobLinesPartPriceChange({ job, line, refetch, technician }) {
} }
}; };
const popcontent = !technician && InstanceRenderManager({ const popcontent =
imex: null, !technician &&
rome: ( InstanceRenderManager({
<Form layout="vertical" onFinish={handleFinish} initialValues={{ act_price: line.act_price }}> imex: null,
<Form.Item name="act_price" label={t("jobs.labels.act_price_ppc")} rules={[{ required: true }]}> rome: (
<CurrencyFormItemComponent /> <Form layout="vertical" onFinish={handleFinish} initialValues={{ act_price: line.act_price }}>
</Form.Item> <Form.Item name="act_price" label={t("jobs.labels.act_price_ppc")} rules={[{ required: true }]}>
<Button <CurrencyFormItemComponent />
disabled={InstanceRenderManager({ imex: true, rome: false, promanager: true })} </Form.Item>
loading={loading} <Button disabled={InstanceRenderManager({ imex: true, rome: false })} loading={loading} htmlType="primary">
htmlType="primary" {t("general.actions.save")}
> </Button>
{t("general.actions.save")} </Form>
</Button> )
</Form> });
),
promanager: null
});
return ( return (
<JobLineConvertToLabor jobline={line} job={job}> <JobLineConvertToLabor jobline={line} job={job}>

View File

@@ -158,8 +158,7 @@ export function JobEmployeeAssignments({
label={t( label={t(
InstanceRenderManager({ InstanceRenderManager({
imex: "jobs.fields.employee_csr", imex: "jobs.fields.employee_csr",
rome: "jobs.fields.employee_csr_writer", rome: "jobs.fields.employee_csr_writer"
promanager: "USE_ROME"
}) })
)} )}
> >

View File

@@ -96,8 +96,7 @@ export default function JobTotalsTableLabor({ job }) {
sortOrder: state.sortedInfo.columnKey === "total" && state.sortedInfo.order, sortOrder: state.sortedInfo.columnKey === "total" && state.sortedInfo.order,
render: (text, record) => Dinero(record.total).toFormat() render: (text, record) => Dinero(record.total).toFormat()
} }
], ]
promanager: "USE_ROME"
}) })
]; ];
@@ -131,8 +130,7 @@ export default function JobTotalsTableLabor({ job }) {
<Table.Summary.Cell /> <Table.Summary.Cell />
<Table.Summary.Cell /> <Table.Summary.Cell />
</> </>
), )
promanager: "USE_ROME"
})} })}
<Table.Summary.Cell align="right"> <Table.Summary.Cell align="right">
<strong>{Dinero(job.job_totals.rates.rates_subtotal).toFormat()}</strong> <strong>{Dinero(job.job_totals.rates.rates_subtotal).toFormat()}</strong>
@@ -185,8 +183,7 @@ export default function JobTotalsTableLabor({ job }) {
{Dinero(job.job_totals.rates.mapa.total).toFormat()} {Dinero(job.job_totals.rates.mapa.total).toFormat()}
</Table.Summary.Cell> </Table.Summary.Cell>
</> </>
), )
promanager: "USE_ROME"
})} })}
</Table.Summary.Row> </Table.Summary.Row>
<Table.Summary.Row> <Table.Summary.Row>
@@ -236,8 +233,7 @@ export default function JobTotalsTableLabor({ job }) {
{Dinero(job.job_totals.rates.mash.total).toFormat()} {Dinero(job.job_totals.rates.mash.total).toFormat()}
</Table.Summary.Cell> </Table.Summary.Cell>
</> </>
), )
promanager: "USE_ROME"
})} })}
</Table.Summary.Row> </Table.Summary.Row>
<Table.Summary.Row> <Table.Summary.Row>
@@ -253,8 +249,7 @@ export default function JobTotalsTableLabor({ job }) {
<Table.Summary.Cell /> <Table.Summary.Cell />
<Table.Summary.Cell /> <Table.Summary.Cell />
</> </>
), )
promanager: "USE_ROME"
})} })}
<Table.Summary.Cell align="right"> <Table.Summary.Cell align="right">
<strong>{Dinero(job.job_totals.rates.subtotal).toFormat()}</strong> <strong>{Dinero(job.job_totals.rates.subtotal).toFormat()}</strong>

View File

@@ -50,7 +50,6 @@ export function JobTotalsTableTotals({ bodyshop, job }) {
total: job.job_totals.totals.federal_tax total: job.job_totals.totals.federal_tax
} }
], ],
promanager: "USE_ROME",
rome: job.job_totals.totals.us_sales_tax_breakdown rome: job.job_totals.totals.us_sales_tax_breakdown
? [ ? [
{ {
@@ -149,7 +148,6 @@ export function JobTotalsTableTotals({ bodyshop, job }) {
} }
], ],
rome: [], rome: [],
promanager: "USE_ROME"
}), }),
{ {
key: t("jobs.fields.other_amount_payable"), key: t("jobs.fields.other_amount_payable"),

View File

@@ -51,7 +51,6 @@ export default function JobAdminDeleteIntake({ job }) {
const InstanceRender = InstanceRenderManager({ const InstanceRender = InstanceRenderManager({
imex: true, imex: true,
rome: "USE_IMEX", rome: "USE_IMEX",
promanager: false
}); });
return InstanceRender ? ( return InstanceRender ? (

View File

@@ -110,8 +110,7 @@ export function JobsAvailableContainer({ bodyshop, currentUser, insertAuditTrail
InstanceRenderManager({ InstanceRenderManager({
executeFunction: true, executeFunction: true,
rome: ResolveCCCLineIssues, rome: ResolveCCCLineIssues,
args: [estData.est_data, bodyshop], args: [estData.est_data, bodyshop]
promanager: ResolveCCCLineIssues
}); });
// } else { // } else {
@@ -121,7 +120,7 @@ export function JobsAvailableContainer({ bodyshop, currentUser, insertAuditTrail
executeFunction: true, executeFunction: true,
imex: CheckTaxRates, imex: CheckTaxRates,
rome: CheckTaxRatesUSA, rome: CheckTaxRatesUSA,
promanager: CheckTaxRatesUSA,
args: [estData.est_data, bodyshop] args: [estData.est_data, bodyshop]
}); });
@@ -236,7 +235,7 @@ export function JobsAvailableContainer({ bodyshop, currentUser, insertAuditTrail
await InstanceRenderManager({ await InstanceRenderManager({
executeFunction: true, executeFunction: true,
rome: ResolveCCCLineIssues, rome: ResolveCCCLineIssues,
promanager: ResolveCCCLineIssues,
args: [supp, bodyshop] args: [supp, bodyshop]
}); });
@@ -244,7 +243,7 @@ export function JobsAvailableContainer({ bodyshop, currentUser, insertAuditTrail
executeFunction: true, executeFunction: true,
imex: CheckTaxRates, imex: CheckTaxRates,
rome: CheckTaxRatesUSA, rome: CheckTaxRatesUSA,
promanager: CheckTaxRatesUSA,
args: [supp, bodyshop] args: [supp, bodyshop]
}); });
@@ -585,14 +584,13 @@ function ResolveCCCLineIssues(estData, bodyshop) {
// line.notes += ` | ET/UT Update (prev = ${line.mod_lbr_ty})`; // line.notes += ` | ET/UT Update (prev = ${line.mod_lbr_ty})`;
line.mod_lbr_ty = "LAR"; line.mod_lbr_ty = "LAR";
} }
}, }
promanager: "USE_ROME"
}); });
}); });
//Group by line no //Group by line no
// For everything but the first one, strip out the price number in // For everything but the first one, strip out the price number in
//TODO: How do we merge these 2 functions together and have it function properly for Rome?
InstanceRenderManager({ InstanceRenderManager({
executeFunction: true, executeFunction: true,
args: [], args: [],

View File

@@ -33,7 +33,6 @@ export function JobsCloseAutoAllocate({ bodyshop, joblines, form, disabled }) {
InstanceRenderManager({ InstanceRenderManager({
imex: !jl.part_type && !jl.mod_lbr_ty, imex: !jl.part_type && !jl.mod_lbr_ty,
rome: !ret.profitcenter_part, rome: !ret.profitcenter_part,
promanager: "USE_ROME"
}) })
) { ) {
const lineDesc = jl.line_desc ? jl.line_desc.toLowerCase() : ""; const lineDesc = jl.line_desc ? jl.line_desc.toLowerCase() : "";

View File

@@ -151,8 +151,7 @@ export function JobsConvertButton({ bodyshop, job, refetch, jobRO, insertAuditTr
label={t( label={t(
InstanceRenderManager({ InstanceRenderManager({
imex: "jobs.fields.employee_csr", imex: "jobs.fields.employee_csr",
rome: "jobs.fields.employee_csr_writer", rome: "jobs.fields.employee_csr_writer"
promanager: "USE_ROME"
}) })
)} )}
rules={[ rules={[

View File

@@ -670,48 +670,50 @@ export function JobsDetailHeaderActions({
}, },
...InstanceRenderManager({ ...InstanceRenderManager({
imex: [ imex: [
{ ...(HasFeatureAccess({ featureName: "checklist", bodyshop })
key: "intake", ? [
id: "job-actions-intake", {
disabled: !!job.intakechecklist || !jobInPreProduction || !job.converted || jobRO, key: "intake",
label: id: "job-actions-intake",
!!job.intakechecklist || !jobInPreProduction || !job.converted || jobRO ? ( disabled: !!job.intakechecklist || !jobInPreProduction || !job.converted || jobRO,
t("jobs.actions.intake") label:
) : ( !!job.intakechecklist || !jobInPreProduction || !job.converted || jobRO ? (
<Link to={`/manage/jobs/${job.id}/intake`}>{t("jobs.actions.intake")}</Link> t("jobs.actions.intake")
) ) : (
}, <Link to={`/manage/jobs/${job.id}/intake`}>{t("jobs.actions.intake")}</Link>
{ )
key: "deliver", },
id: "job-actions-deliver", {
disabled: !jobInProduction || jobRO, key: "deliver",
label: !jobInProduction ? ( id: "job-actions-deliver",
t("jobs.actions.deliver") disabled: !jobInProduction || jobRO,
) : ( label: !jobInProduction ? (
<Link to={`/manage/jobs/${job.id}/deliver`}>{t("jobs.actions.deliver")}</Link> t("jobs.actions.deliver")
) ) : (
}, <Link to={`/manage/jobs/${job.id}/deliver`}>{t("jobs.actions.deliver")}</Link>
{ )
key: "checklist", },
id: "job-actions-checklist", {
disabled: !job.converted, key: "checklist",
label: <Link to={`/manage/jobs/${job.id}/checklist`}>{t("jobs.actions.viewchecklist")}</Link> id: "job-actions-checklist",
} disabled: !job.converted,
label: <Link to={`/manage/jobs/${job.id}/checklist`}>{t("jobs.actions.viewchecklist")}</Link>
}
]
: [
{
key: "toggleproduction",
id: "job-actions-toggleproduction",
disabled: !job.converted || jobRO,
label: <JobsDetailHeaderActionsToggleProduction job={job} refetch={refetch} />
}
])
], ],
rome: "USE_IMEX", rome: "USE_IMEX"
promanager: [
{
key: "toggleproduction",
id: "job-actions-toggleproduction",
disabled: !job.converted || jobRO,
label: <JobsDetailHeaderActionsToggleProduction job={job} refetch={refetch} />
}
]
}), }),
...(InstanceRenderManager({ ...(InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "timetickets", bodyshop }),
rome: "USE_IMEX", rome: "USE_IMEX"
promanager: HasFeatureAccess({ featureName: "timetickets", bodyshop })
}) })
? [ ? [
{ {
@@ -881,9 +883,8 @@ export function JobsDetailHeaderActions({
] ]
}, },
...(InstanceRenderManager({ ...(InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "bills", bodyshop }),
rome: true, rome: "USE_IMEX"
promanager: HasFeatureAccess({ featureName: "bills", bodyshop })
}) })
? [ ? [
{ {
@@ -964,9 +965,8 @@ export function JobsDetailHeaderActions({
if ( if (
InstanceRenderManager({ InstanceRenderManager({
imex: true, imex: HasFeatureAccess({ featureName: "export", bodyshop }),
rome: true, rome: "USE_IMEX"
promanager: HasFeatureAccess({ featureName: "export", bodyshop })
}) })
) { ) {
menuItems.push({ menuItems.push({

View File

@@ -194,8 +194,7 @@ export function JobsDetailRates({ jobRO, form, job, bodyshop }) {
<JobsDetailRatesOther form={form} /> <JobsDetailRatesOther form={form} />
<JobsDetailRatesTaxes form={form} /> <JobsDetailRatesTaxes form={form} />
</> </>
), )
promanager: "USE_ROME"
})} })}
</div> </div>
); );

View File

@@ -989,7 +989,7 @@ export function JobsDetailRatesParts({ jobRO, expanded, required = true, form })
<Form.Item label={t("jobs.fields.tax_str_rt")} name="tax_str_rt"> <Form.Item label={t("jobs.fields.tax_str_rt")} name="tax_str_rt">
<InputNumber min={0} max={100} precision={4} disabled={jobRO} /> <InputNumber min={0} max={100} precision={4} disabled={jobRO} />
</Form.Item> </Form.Item>
{InstanceRenderManager({ imex: true, rome: false, promanager: "USE_ROME" }) ? ( {InstanceRenderManager({ imex: true, rome: false }) ? (
<> <>
<Form.Item label={t("jobs.fields.tax_paint_mat_rt")} name="tax_paint_mat_rt"> <Form.Item label={t("jobs.fields.tax_paint_mat_rt")} name="tax_paint_mat_rt">
<InputNumber min={0} max={100} precision={4} disabled={jobRO} /> <InputNumber min={0} max={100} precision={4} disabled={jobRO} />
@@ -1002,7 +1002,7 @@ export function JobsDetailRatesParts({ jobRO, expanded, required = true, form })
<Form.Item label={t("jobs.fields.tax_sub_rt")} name="tax_sub_rt"> <Form.Item label={t("jobs.fields.tax_sub_rt")} name="tax_sub_rt">
<InputNumber min={0} max={100} precision={4} disabled={jobRO} /> <InputNumber min={0} max={100} precision={4} disabled={jobRO} />
</Form.Item> </Form.Item>
{InstanceRenderManager({ imex: true, rome: false, promanager: "USE_ROME" }) ? ( {InstanceRenderManager({ imex: true, rome: false }) ? (
<Form.Item label={t("jobs.fields.tax_lbr_rt")} name="tax_lbr_rt"> <Form.Item label={t("jobs.fields.tax_lbr_rt")} name="tax_lbr_rt">
<InputNumber min={0} max={100} precision={4} disabled={jobRO} /> <InputNumber min={0} max={100} precision={4} disabled={jobRO} />
</Form.Item> </Form.Item>

View File

@@ -12,8 +12,7 @@ const statisticsItems = [
name: "totalHrsOnBoard", name: "totalHrsOnBoard",
label: InstanceRenderManager({ label: InstanceRenderManager({
imex: "total_hours_in_view", imex: "total_hours_in_view",
rome: "total_hours_on_board", rome: "total_hours_on_board"
promanager: "total_hours_on_board"
}) })
}, },
{ {
@@ -21,8 +20,7 @@ const statisticsItems = [
name: "totalAmountOnBoard", name: "totalAmountOnBoard",
label: InstanceRenderManager({ label: InstanceRenderManager({
imex: "total_amount_in_view", imex: "total_amount_in_view",
rome: "total_amount_on_board", rome: "total_amount_on_board"
promanager: "total_amount_on_board"
}) })
}, },
{ {
@@ -30,8 +28,7 @@ const statisticsItems = [
name: "totalLABOnBoard", name: "totalLABOnBoard",
label: InstanceRenderManager({ label: InstanceRenderManager({
imex: "total_lab_in_view", imex: "total_lab_in_view",
rome: "total_lab_on_board", rome: "total_lab_on_board"
promanager: "total_lab_on_board"
}) })
}, },
{ {
@@ -39,8 +36,7 @@ const statisticsItems = [
name: "totalLAROnBoard", name: "totalLAROnBoard",
label: InstanceRenderManager({ label: InstanceRenderManager({
imex: "total_lar_in_view", imex: "total_lar_in_view",
rome: "total_lar_on_board", rome: "total_lar_on_board"
promanager: "total_lar_on_board"
}) })
}, },
{ {
@@ -48,8 +44,7 @@ const statisticsItems = [
name: "jobsOnBoard", name: "jobsOnBoard",
label: InstanceRenderManager({ label: InstanceRenderManager({
imex: "total_jobs_in_view", imex: "total_jobs_in_view",
rome: "total_jobs_on_board", rome: "total_jobs_on_board"
promanager: "total_jobs_on_board"
}) })
}, },
{ {
@@ -57,8 +52,7 @@ const statisticsItems = [
name: "tasksOnBoard", name: "tasksOnBoard",
label: InstanceRenderManager({ label: InstanceRenderManager({
imex: "tasks_in_view", imex: "tasks_in_view",
rome: "tasks_on_board", rome: "tasks_on_board"
promanager: "tasks_on_board"
}) })
}, },
{ id: 11, name: "tasksInProduction", label: "tasks_in_production" } { id: 11, name: "tasksInProduction", label: "tasks_in_production" }

View File

@@ -466,8 +466,7 @@ const r = ({ technician, state, activeStatuses, data, bodyshop, refetch, treatme
title: i18n.t( title: i18n.t(
InstanceRenderManager({ InstanceRenderManager({
imex: "jobs.fields.employee_csr", imex: "jobs.fields.employee_csr",
rome: "jobs.fields.employee_csr_writer", rome: "jobs.fields.employee_csr_writer"
promanager: "USE_ROME"
}) })
), ),
dataIndex: "employee_csr", dataIndex: "employee_csr",

View File

@@ -17,6 +17,7 @@ import OwnerNameDisplay from "../owner-name-display/owner-name-display.component
import ScheduleBlockDay from "../schedule-block-day/schedule-block-day.component"; import ScheduleBlockDay from "../schedule-block-day/schedule-block-day.component";
import ScheduleCalendarHeaderGraph from "./schedule-calendar-header-graph.component"; import ScheduleCalendarHeaderGraph from "./schedule-calendar-header-graph.component";
import InstanceRenderMgr from "../../utils/instanceRenderMgr"; import InstanceRenderMgr from "../../utils/instanceRenderMgr";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
@@ -60,8 +61,7 @@ export function ScheduleCalendarHeaderComponent({
loadData.allJobsOut.map((j) => ( loadData.allJobsOut.map((j) => (
<tr key={j.id}> <tr key={j.id}>
<td style={{ padding: "2.5px" }}> <td style={{ padding: "2.5px" }}>
<Link to={`/manage/jobs/${j.id}`}>{j.ro_number}</Link> ( <Link to={`/manage/jobs/${j.id}`}>{j.ro_number}</Link> ({j.status})
{j.status})
</td> </td>
<td style={{ padding: "2.5px" }}> <td style={{ padding: "2.5px" }}>
<OwnerNameDisplay ownerObject={j} /> <OwnerNameDisplay ownerObject={j} />
@@ -69,23 +69,18 @@ export function ScheduleCalendarHeaderComponent({
<td style={{ padding: "2.5px" }}> <td style={{ padding: "2.5px" }}>
{`(${j.labhrs?.aggregate?.sum?.mod_lb_hrs?.toFixed(1) || 0}/${ {`(${j.labhrs?.aggregate?.sum?.mod_lb_hrs?.toFixed(1) || 0}/${
j.larhrs?.aggregate?.sum?.mod_lb_hrs?.toFixed(1) || 0 j.larhrs?.aggregate?.sum?.mod_lb_hrs?.toFixed(1) || 0
}/${( }/${(j.labhrs.aggregate?.sum?.mod_lb_hrs + j.larhrs.aggregate?.sum?.mod_lb_hrs).toFixed(
j.labhrs.aggregate?.sum?.mod_lb_hrs + 1
j.larhrs.aggregate?.sum?.mod_lb_hrs )} ${t("general.labels.hours")})`}
).toFixed(1)} ${t("general.labels.hours")})`}
</td> </td>
<td style={{ padding: "2.5px" }}> <td style={{ padding: "2.5px" }}>
<DateTimeFormatter> <DateTimeFormatter>{j.scheduled_completion}</DateTimeFormatter>
{j.scheduled_completion}
</DateTimeFormatter>
</td> </td>
</tr> </tr>
)) ))
) : ( ) : (
<tr> <tr>
<td style={{ padding: "2.5px" }}> <td style={{ padding: "2.5px" }}>{t("appointments.labels.nocompletingjobs")}</td>
{t("appointments.labels.nocompletingjobs")}
</td>
</tr> </tr>
)} )}
</tbody> </tbody>
@@ -109,10 +104,9 @@ export function ScheduleCalendarHeaderComponent({
<td style={{ padding: "2.5px" }}> <td style={{ padding: "2.5px" }}>
{`(${j.labhrs?.aggregate?.sum.mod_lb_hrs?.toFixed(1) || 0}/${ {`(${j.labhrs?.aggregate?.sum.mod_lb_hrs?.toFixed(1) || 0}/${
j.larhrs?.aggregate?.sum?.mod_lb_hrs?.toFixed(1) || 0 j.larhrs?.aggregate?.sum?.mod_lb_hrs?.toFixed(1) || 0
}/${( }/${(j.labhrs?.aggregate?.sum?.mod_lb_hrs + j.larhrs?.aggregate?.sum?.mod_lb_hrs).toFixed(
j.labhrs?.aggregate?.sum?.mod_lb_hrs + 1
j.larhrs?.aggregate?.sum?.mod_lb_hrs )} ${t("general.labels.hours")})`}
).toFixed(1)} ${t("general.labels.hours")})`}
</td> </td>
<td style={{ padding: "2.5px" }}> <td style={{ padding: "2.5px" }}>
<DateTimeFormatter>{j.scheduled_in}</DateTimeFormatter> <DateTimeFormatter>{j.scheduled_in}</DateTimeFormatter>
@@ -121,9 +115,7 @@ export function ScheduleCalendarHeaderComponent({
)) ))
) : ( ) : (
<tr> <tr>
<td style={{ padding: "2.5px" }}> <td style={{ padding: "2.5px" }}>{t("appointments.labels.noarrivingjobs")}</td>
{t("appointments.labels.noarrivingjobs")}
</td>
</tr> </tr>
)} )}
</tbody> </tbody>
@@ -133,33 +125,30 @@ export function ScheduleCalendarHeaderComponent({
const LoadComponent = loadData ? ( const LoadComponent = loadData ? (
<div> <div>
<Space align="center"> <Space align="center">
<Popover <Popover
placement={"bottom"} placement={"bottom"}
content={jobsInPopup} content={jobsInPopup}
trigger="hover" trigger="hover"
title={t("appointments.labels.arrivingjobs")} title={t("appointments.labels.arrivingjobs")}
> >
<Icon component={MdFileDownload} style={{ color: "green" }} /> <Icon component={MdFileDownload} style={{ color: "green" }} />
{(loadData.allHoursInBody || 0) && {(loadData.allHoursInBody || 0) && loadData.allHoursInBody.toFixed(1)}/
loadData.allHoursInBody.toFixed(1)} {(loadData.allHoursInRefinish || 0) && loadData.allHoursInRefinish.toFixed(1)}/
/ {(loadData.allHoursIn || 0) && loadData.allHoursIn.toFixed(1)}
{(loadData.allHoursInRefinish || 0) && </Popover>
loadData.allHoursInRefinish.toFixed(1)} <Popover
/{(loadData.allHoursIn || 0) && loadData.allHoursIn.toFixed(1)} placement={"bottom"}
</Popover> content={jobsOutPopup}
<Popover trigger="hover"
placement={"bottom"} title={t("appointments.labels.completingjobs")}
content={jobsOutPopup} >
trigger="hover" <Icon component={MdFileUpload} style={{ color: "red" }} />
title={t("appointments.labels.completingjobs")} {(loadData.allHoursOut || 0) && loadData.allHoursOut.toFixed(1)}
> </Popover>
<Icon component={MdFileUpload} style={{ color: "red" }} /> <ScheduleCalendarHeaderGraph loadData={loadData} />
{(loadData.allHoursOut || 0) && loadData.allHoursOut.toFixed(1)} </Space>
</Popover>
<ScheduleCalendarHeaderGraph loadData={loadData} />
</Space>
<div> <div>
<ul style={{ listStyleType: "none", columns: "2 auto", padding: 0 }}> <ul style={{ listStyleType: "none", columns: "2 auto", padding: 0 }}>
{Object.keys(ATSToday).map((key, idx) => ( {Object.keys(ATSToday).map((key, idx) => (
@@ -208,9 +197,16 @@ export function ScheduleCalendarHeaderComponent({
<div style={{ color: isShopOpen(date) ? "" : "tomato" }}> <div style={{ color: isShopOpen(date) ? "" : "tomato" }}>
{label} {label}
{InstanceRenderMgr({ {InstanceRenderMgr({
imex: calculating ? <LoadingSkeleton /> : LoadComponent, imex: HasFeatureAccess({ featureName: "smartscheduling", bodyshop }) ? (
rome: "USE_IMEX", calculating ? (
promanager: <></> <LoadingSkeleton />
) : (
LoadComponent
)
) : (
<></>
),
rome: "USE_IMEX"
})} })}
</div> </div>
</ScheduleBlockDay> </ScheduleBlockDay>

View File

@@ -15,6 +15,7 @@ import { Alert, Collapse, Space } from "antd";
import { Trans, useTranslation } from "react-i18next"; import { Trans, useTranslation } from "react-i18next";
import InstanceRenderManager from "../../utils/instanceRenderMgr"; import InstanceRenderManager from "../../utils/instanceRenderMgr";
import local from "./localizer"; import local from "./localizer";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
@@ -54,58 +55,58 @@ export function ScheduleCalendarWrapperComponent({
return ( return (
<> <>
<JobDetailCards /> <JobDetailCards />
{InstanceRenderManager({ {HasFeatureAccess({ featureName: "smartscheduling", bodyshop }) &&
imex: InstanceRenderManager({
problemJobs && problemJobs.length > 2 ? ( imex:
<Collapse style={{ marginBottom: "5px" }}> problemJobs && problemJobs.length > 2 ? (
<Collapse.Panel <Collapse style={{ marginBottom: "5px" }}>
key="1" <Collapse.Panel
header={<span style={{ color: "tomato" }}>{t("appointments.labels.severalerrorsfound")}</span>} key="1"
> header={<span style={{ color: "tomato" }}>{t("appointments.labels.severalerrorsfound")}</span>}
<Space direction="vertical" style={{ width: "100%" }}> >
{problemJobs.map((problem) => ( <Space direction="vertical" style={{ width: "100%" }}>
<Alert {problemJobs.map((problem) => (
key={problem.id} <Alert
type="error" key={problem.id}
message={ type="error"
<Trans message={
i18nKey="appointments.labels.dataconsistency" <Trans
components={[<Link to={`/manage/jobs/${problem.id}`} target="_blank" />]} i18nKey="appointments.labels.dataconsistency"
values={{ components={[<Link to={`/manage/jobs/${problem.id}`} target="_blank" />]}
ro_number: problem.ro_number, values={{
code: problem.code ro_number: problem.ro_number,
}} code: problem.code
/> }}
} />
/> }
))} />
</Space> ))}
</Collapse.Panel> </Space>
</Collapse> </Collapse.Panel>
) : ( </Collapse>
<Space direction="vertical" style={{ width: "100%", marginBottom: "5px" }}> ) : (
{problemJobs.map((problem) => ( <Space direction="vertical" style={{ width: "100%", marginBottom: "5px" }}>
<Alert {problemJobs.map((problem) => (
key={problem.id} <Alert
type="error" key={problem.id}
message={ type="error"
<Trans message={
i18nKey="appointments.labels.dataconsistency" <Trans
components={[<Link to={`/manage/jobs/${problem.id}`} target="_blank" />]} i18nKey="appointments.labels.dataconsistency"
values={{ components={[<Link to={`/manage/jobs/${problem.id}`} target="_blank" />]}
ro_number: problem.ro_number, values={{
code: problem.code ro_number: problem.ro_number,
}} code: problem.code
/> }}
} />
/> }
))} />
</Space> ))}
), </Space>
),
rome: "USE_IMEX", rome: "USE_IMEX"
promanager: <span /> })}
})}
<Calendar <Calendar
events={data} events={data}

View File

@@ -8,7 +8,7 @@ import { calculateScheduleLoad } from "../../redux/application/application.actio
import { selectBodyshop } from "../../redux/user/user.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors";
import { DateFormatter } from "../../utils/DateFormatter"; import { DateFormatter } from "../../utils/DateFormatter";
import dayjs from "../../utils/day"; import dayjs from "../../utils/day";
import InstanceRenderManager from "../../utils/instanceRenderMgr"; import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
import DateTimePicker from "../form-date-time-picker/form-date-time-picker.component"; import DateTimePicker from "../form-date-time-picker/form-date-time-picker.component";
import EmailInput from "../form-items-formatted/email-form-item.component"; import EmailInput from "../form-items-formatted/email-form-item.component";
import LayoutFormRow from "../layout-form-row/layout-form-row.component"; import LayoutFormRow from "../layout-form-row/layout-form-row.component";
@@ -99,40 +99,36 @@ export function ScheduleJobModalComponent({
<DateTimePicker onlyFuture /> <DateTimePicker onlyFuture />
</Form.Item> </Form.Item>
</LayoutFormRow> </LayoutFormRow>
{InstanceRenderManager({ {HasFeatureAccess({ featureName: "smartscheduling", bodyshop }) && (
imex: ( <>
<> <Typography.Title level={4}>{t("appointments.labels.smartscheduling")}</Typography.Title>
<Typography.Title level={4}>{t("appointments.labels.smartscheduling")}</Typography.Title> <Space wrap>
<Space wrap> <Button onClick={handleSmartScheduling} loading={loading}>
<Button onClick={handleSmartScheduling} loading={loading}> {t("appointments.actions.calculate")}
{t("appointments.actions.calculate")} </Button>
{smartOptions.map((d, idx) => (
<Button
className="imex-flex-row__margin"
key={idx}
onClick={() => {
const ssDate = dayjs(d);
if (ssDate.isBefore(dayjs())) {
form.setFieldsValue({ start: dayjs() });
} else {
form.setFieldsValue({
start: dayjs(d).add(8, "hour")
});
}
handleDateBlur();
}}
>
<DateFormatter includeDay>{d}</DateFormatter>
</Button> </Button>
{smartOptions.map((d, idx) => ( ))}
<Button </Space>
className="imex-flex-row__margin" </>
key={idx} )}
onClick={() => { ,
const ssDate = dayjs(d);
if (ssDate.isBefore(dayjs())) {
form.setFieldsValue({ start: dayjs() });
} else {
form.setFieldsValue({
start: dayjs(d).add(8, "hour")
});
}
handleDateBlur();
}}
>
<DateFormatter includeDay>{d}</DateFormatter>
</Button>
))}
</Space>
</>
),
rome: "USE_IMEX",
promanager: <></>
})}
<LayoutFormRow grow> <LayoutFormRow grow>
<Form.Item name="notifyCustomer" valuePropName="checked" label={t("jobs.labels.appointmentconfirmation")}> <Form.Item name="notifyCustomer" valuePropName="checked" label={t("jobs.labels.appointmentconfirmation")}>
<Switch /> <Switch />

View File

@@ -21,6 +21,7 @@ import queryString from "query-string";
import InstanceRenderManager from "../../utils/instanceRenderMgr"; import InstanceRenderManager from "../../utils/instanceRenderMgr";
import ShopInfoRoGuard from "./shop-info.roguard.component"; import ShopInfoRoGuard from "./shop-info.roguard.component";
import ShopInfoIntellipay from "./shop-intellipay-config.component"; import ShopInfoIntellipay from "./shop-intellipay-config.component";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop bodyshop: selectBodyshop
@@ -87,18 +88,16 @@ export function ShopInfoComponent({ bodyshop, form, saveLoading }) {
children: <ShopInfoResponsibilityCenterComponent form={form} />, children: <ShopInfoResponsibilityCenterComponent form={form} />,
id: "tab-shop-responsibilitycenters" id: "tab-shop-responsibilitycenters"
}, },
...InstanceRenderManager({ ...(HasFeatureAccess({ featureName: "checklists", bodyshop })
imex: [ ? [
{ {
key: "checklists", key: "checklists",
label: t("bodyshop.labels.checklists"), label: t("bodyshop.labels.checklists"),
children: <ShopInfoIntakeChecklistComponent form={form} />, children: <ShopInfoIntakeChecklistComponent form={form} />,
id: "tab-shop-checklists" id: "tab-shop-checklists"
} }
], ]
rome: "USE_IMEX", : []),
promanager: []
}),
{ {
key: "laborrates", key: "laborrates",
label: t("bodyshop.labels.laborrates"), label: t("bodyshop.labels.laborrates"),
@@ -125,29 +124,22 @@ export function ShopInfoComponent({ bodyshop, form, saveLoading }) {
} }
] ]
: []), : []),
...InstanceRenderManager({ ...(HasFeatureAccess({ featureName: "roguard", bodyshop })
imex: [ ? [
{ {
key: "roguard", key: "roguard",
label: t("bodyshop.labels.roguard.title"), label: t("bodyshop.labels.roguard.title"),
children: <ShopInfoRoGuard form={form} />, children: <ShopInfoRoGuard form={form} />,
id: "tab-shop-roguard" id: "tab-shop-roguard"
} }
], ]
rome: "USE_IMEX", : []),
promanager: []
}), {
...InstanceRenderManager({ key: "intellipay",
imex: [], label: InstanceRenderManager({ rome: t("bodyshop.labels.romepay"), imex: t("bodyshop.labels.imexpay") }),
rome: [ children: <ShopInfoIntellipay form={form} />
{ }
key: "intellipay",
label: InstanceRenderManager({ rome: t("bodyshop.labels.romepay"), imex: t("bodyshop.labels.imexpay") }),
children: <ShopInfoIntellipay form={form} />
}
],
promanager: []
})
]; ];
return ( return (
<Card <Card

View File

@@ -4043,8 +4043,7 @@ export function ShopInfoResponsibilityCenterComponent({ bodyshop, form }) {
<Input /> <Input />
</Form.Item> </Form.Item>
</> </>
), )
promanager: "USE_ROME"
})} })}
{/*<LayoutFormRow id="local_tax">*/} {/*<LayoutFormRow id="local_tax">*/}

View File

@@ -2034,7 +2034,7 @@ export function ShopInfoResponsibilityCenters({ bodyshop, form }) {
<Form.Item label={t("jobs.fields.tax_str_rt")} name={["md_responsibility_centers", "tax_str_rt"]}> <Form.Item label={t("jobs.fields.tax_str_rt")} name={["md_responsibility_centers", "tax_str_rt"]}>
<InputNumber min={0} max={100} precision={4} /> <InputNumber min={0} max={100} precision={4} />
</Form.Item> </Form.Item>
{InstanceRenderManager({ imex: true, rome: false, promanager: "USE_ROME" }) ? ( {InstanceRenderManager({ imex: true, rome: false }) ? (
<> <>
<Form.Item <Form.Item
label={t("jobs.fields.tax_paint_mat_rt")} label={t("jobs.fields.tax_paint_mat_rt")}
@@ -2053,7 +2053,7 @@ export function ShopInfoResponsibilityCenters({ bodyshop, form }) {
<Form.Item label={t("jobs.fields.tax_sub_rt")} name={["md_responsibility_centers", "tax_sub_rt"]}> <Form.Item label={t("jobs.fields.tax_sub_rt")} name={["md_responsibility_centers", "tax_sub_rt"]}>
<InputNumber min={0} max={100} precision={4} /> <InputNumber min={0} max={100} precision={4} />
</Form.Item> </Form.Item>
{InstanceRenderManager({ imex: true, rome: false, promanager: "USE_ROME" }) ? ( {InstanceRenderManager({ imex: true, rome: false }) ? (
<Form.Item label={t("jobs.fields.tax_lbr_rt")} name={["md_responsibility_centers", "tax_lbr_rt"]}> <Form.Item label={t("jobs.fields.tax_lbr_rt")} name={["md_responsibility_centers", "tax_lbr_rt"]}>
<InputNumber min={0} max={100} precision={4} /> <InputNumber min={0} max={100} precision={4} />
</Form.Item> </Form.Item>

View File

@@ -2,13 +2,23 @@ import { DeleteFilled } from "@ant-design/icons";
import { Button, Divider, Form, Input, InputNumber, Select, Space, Switch, TimePicker } from "antd"; import { Button, Divider, Form, Input, InputNumber, Select, Space, Switch, TimePicker } from "antd";
import React from "react"; import React from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
import ColorpickerFormItemComponent from "../form-items-formatted/colorpicker-form-item.component"; import ColorpickerFormItemComponent from "../form-items-formatted/colorpicker-form-item.component";
import FormListMoveArrows from "../form-list-move-arrows/form-list-move-arrows.component"; import FormListMoveArrows from "../form-list-move-arrows/form-list-move-arrows.component";
import LayoutFormRow from "../layout-form-row/layout-form-row.component"; import LayoutFormRow from "../layout-form-row/layout-form-row.component";
import { ColorPicker } from "./shop-info.rostatus.component"; import { ColorPicker } from "./shop-info.rostatus.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
export default function ShopInfoSchedulingComponent({ form }) { import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
});
const mapDispatchToProps = (dispatch) => ({
//setUserLanguage: language => dispatch(setUserLanguage(language))
});
export function ShopInfoSchedulingComponent({ form, bodyshop }) {
const { t } = useTranslation(); const { t } = useTranslation();
return ( return (
@@ -167,138 +177,136 @@ export default function ShopInfoSchedulingComponent({ form }) {
}} }}
</Form.List> </Form.List>
</LayoutFormRow> </LayoutFormRow>
{InstanceRenderManager({ {HasFeatureAccess({ featureName: "smartscheduling", bodyshop }) && (
imex: ( <LayoutFormRow header={t("bodyshop.labels.ssbuckets")} id="ssbuckets">
<LayoutFormRow header={t("bodyshop.labels.ssbuckets")} id="ssbuckets"> <Form.List name={["ssbuckets"]}>
<Form.List name={["ssbuckets"]}> {(fields, { add, remove, move }) => {
{(fields, { add, remove, move }) => { return (
return ( <div>
<div> {fields.map((field, index) => (
{fields.map((field, index) => ( <Form.Item key={field.key}>
<Form.Item key={field.key}> <LayoutFormRow noDivider>
<LayoutFormRow noDivider> <Form.Item
<Form.Item label={t("bodyshop.fields.ssbuckets.id")}
label={t("bodyshop.fields.ssbuckets.id")} key={`${index}id`}
key={`${index}id`} name={[field.name, "id"]}
name={[field.name, "id"]} rules={[
rules={[ {
{ required: true
required: true //message: t("general.validation.required"),
//message: t("general.validation.required"), }
} ]}
]} >
> <Input />
<Input /> </Form.Item>
</Form.Item> <Form.Item
<Form.Item label={t("bodyshop.fields.ssbuckets.label")}
label={t("bodyshop.fields.ssbuckets.label")} key={`${index}label`}
key={`${index}label`} name={[field.name, "label"]}
name={[field.name, "label"]} rules={[
rules={[ {
{ required: true
required: true //message: t("general.validation.required"),
//message: t("general.validation.required"), }
} ]}
]} >
> <Input />
<Input /> </Form.Item>
</Form.Item>
<Form.Item
label={t("bodyshop.fields.ssbuckets.gte")}
key={`${index}gte`}
name={[field.name, "gte"]}
rules={[
{
required: true
//message: t("general.validation.required"),
}
]}
>
<InputNumber />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.ssbuckets.lt")}
key={`${index}lt`}
name={[field.name, "lt"]}
>
<InputNumber />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.ssbuckets.target")}
key={`${index}target`}
name={[field.name, "target"]}
rules={[
{
required: true
//message: t("general.validation.required"),
}
]}
>
<InputNumber />
</Form.Item>
<Space direction="horizontal">
<Form.Item <Form.Item
label={t("bodyshop.fields.ssbuckets.gte")} label={
key={`${index}gte`} <Space>
name={[field.name, "gte"]} {t("bodyshop.fields.ssbuckets.color")}
rules={[ <Button
{ size="small"
required: true onClick={() => {
//message: t("general.validation.required"), form.setFieldValue(["ssbuckets", field.name, "color"]);
}
]} form.setFields([
{
name: ["ssbuckets", field.name, "color"],
touched: true
}
]);
}}
>
Reset
</Button>
</Space>
}
key={`${index}color`}
name={[field.name, "color"]}
> >
<InputNumber /> <ColorPicker />
</Form.Item> </Form.Item>
<Space wrap>
<Form.Item <DeleteFilled
label={t("bodyshop.fields.ssbuckets.lt")} onClick={() => {
key={`${index}lt`} remove(field.name);
name={[field.name, "lt"]} }}
> />
<InputNumber /> <FormListMoveArrows move={move} index={index} total={fields.length} />
</Form.Item>
<Form.Item
label={t("bodyshop.fields.ssbuckets.target")}
key={`${index}target`}
name={[field.name, "target"]}
rules={[
{
required: true
//message: t("general.validation.required"),
}
]}
>
<InputNumber />
</Form.Item>
<Space direction="horizontal">
<Form.Item
label={
<Space>
{t("bodyshop.fields.ssbuckets.color")}
<Button
size="small"
onClick={() => {
form.setFieldValue(["ssbuckets", field.name, "color"]);
form.setFields([
{
name: ["ssbuckets", field.name, "color"],
touched: true
}
]);
}}
>
Reset
</Button>
</Space>
}
key={`${index}color`}
name={[field.name, "color"]}
>
<ColorPicker />
</Form.Item>
<Space wrap>
<DeleteFilled
onClick={() => {
remove(field.name);
}}
/>
<FormListMoveArrows move={move} index={index} total={fields.length} />
</Space>
</Space> </Space>
</LayoutFormRow> </Space>
</Form.Item> </LayoutFormRow>
))}
<Form.Item>
<Button
type="dashed"
onClick={() => {
add();
}}
style={{ width: "100%" }}
>
{t("bodyshop.actions.addbucket")}
</Button>
</Form.Item> </Form.Item>
</div> ))}
); <Form.Item>
}} <Button
</Form.List> type="dashed"
</LayoutFormRow> onClick={() => {
), add();
rome: "USE_IMEX", }}
promanager: null style={{ width: "100%" }}
})} >
{t("bodyshop.actions.addbucket")}
</Button>
</Form.Item>
</div>
);
}}
</Form.List>
</LayoutFormRow>
)}
</div> </div>
); );
} }
export default connect(mapStateToProps, mapDispatchToProps)(ShopInfoSchedulingComponent);

View File

@@ -8,10 +8,9 @@ import { Link, useLocation, useNavigate } from "react-router-dom";
import { createStructuredSelector } from "reselect"; import { createStructuredSelector } from "reselect";
import RomeLogo from "../../assets/RomeOnlineBlue.png"; import RomeLogo from "../../assets/RomeOnlineBlue.png";
import ImEXOnlineLogo from "../../assets/logo192.png"; import ImEXOnlineLogo from "../../assets/logo192.png";
import ProManagerLogo from "../../assets/promanager/ProManagerLogo.gif";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import { emailSignInStart, sendPasswordReset } from "../../redux/user/user.actions"; import { emailSignInStart, sendPasswordReset } from "../../redux/user/user.actions";
import { selectCurrentUser, selectLoginLoading, selectSignInError } from "../../redux/user/user.selectors"; import { selectCurrentUser, selectLoginLoading, selectSignInError } from "../../redux/user/user.selectors";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import AlertComponent from "../alert/alert.component"; import AlertComponent from "../alert/alert.component";
import "./sign-in-form.styles.scss"; import "./sign-in-form.styles.scss";
@@ -49,21 +48,18 @@ export function SignInComponent({ emailSignInStart, currentUser, signInError, se
<img <img
src={InstanceRenderManager({ src={InstanceRenderManager({
imex: ImEXOnlineLogo, imex: ImEXOnlineLogo,
rome: RomeLogo, rome: RomeLogo
promanager: ProManagerLogo
})} })}
width={InstanceRenderManager({ imex: 200, rome: 200, promanager: 450 })} width={InstanceRenderManager({ imex: 200, rome: 200 })}
alt={InstanceRenderManager({ alt={InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
})} })}
/> />
<Typography.Title> <Typography.Title>
{InstanceRenderManager({ {InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: null
})} })}
</Typography.Title> </Typography.Title>
</div> </div>

View File

@@ -37,8 +37,7 @@ export function TechLogin({ technician, loginError, loginLoading, techLoginStart
document.title = t("titles.techconsole", { document.title = t("titles.techconsole", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
}, [t]); }, [t]);

View File

@@ -76,8 +76,7 @@ export function UpdateAlert({ updateAvailable }) {
time: (timeLeft / 1000).toFixed(0), time: (timeLeft / 1000).toFixed(0),
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}), }),
placement: "bottomRight" placement: "bottomRight"
@@ -95,8 +94,7 @@ export function UpdateAlert({ updateAvailable }) {
message={t("general.messages.newversiontitle", { message={t("general.messages.newversiontitle", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
})} })}
showIcon showIcon
@@ -107,8 +105,7 @@ export function UpdateAlert({ updateAvailable }) {
{t("general.messages.newversionmessage", { {t("general.messages.newversionmessage", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
})} })}
</Col> </Col>

View File

@@ -55,15 +55,13 @@ export function UserRequestResetPw({ passwordReset, sendPasswordReset, sendPassw
width="100" width="100"
alt={InstanceRenderManager({ alt={InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
})} })}
/> />
<Typography.Title> <Typography.Title>
{InstanceRenderManager({ {InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
})} })}
</Typography.Title> </Typography.Title>
</div> </div>

View File

@@ -75,16 +75,14 @@ export function UserValidatePwReset({ passwordReset, validatePasswordReset, oobC
width={100} width={100}
alt={InstanceRenderManager({ alt={InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
})} })}
/> />
<Typography.Title> <Typography.Title>
{InstanceRenderManager({ {InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
})} })}
</Typography.Title> </Typography.Title>
</div> </div>

View File

@@ -31,8 +31,7 @@ if (import.meta.env.PROD) {
Sentry.init({ Sentry.init({
dsn: InstanceRenderManager({ dsn: InstanceRenderManager({
imex: "https://fd7e89369b6b4bdc9c6c4c9f22fa4ee4@o492140.ingest.sentry.io/5651027", imex: "https://fd7e89369b6b4bdc9c6c4c9f22fa4ee4@o492140.ingest.sentry.io/5651027",
rome: "https://a6acc91c073e414196014b8484627a61@o492140.ingest.sentry.io/4504561071161344", rome: "https://a6acc91c073e414196014b8484627a61@o492140.ingest.sentry.io/4504561071161344" //TODO:AIO Add in the sentry tracker for proman.
promanager: "" //TODO:AIO Add in the sentry tracker for proman.
}), }),
ignoreErrors: [ ignoreErrors: [

View File

@@ -31,8 +31,7 @@ export function AccountingPayablesContainer({ bodyshop, setBreadcrumbs, setSelec
document.title = t("titles.accounting-payables", { document.title = t("titles.accounting-payables", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("payables"); setSelectedHeader("payables");

View File

@@ -31,8 +31,7 @@ export function AccountingPaymentsContainer({ bodyshop, setBreadcrumbs, setSelec
document.title = t("titles.accounting-payments", { document.title = t("titles.accounting-payments", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("payments"); setSelectedHeader("payments");

View File

@@ -31,8 +31,7 @@ export function AccountingReceivablesContainer({ bodyshop, setBreadcrumbs, setSe
document.title = t("titles.accounting-receivables", { document.title = t("titles.accounting-receivables", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("receivables"); setSelectedHeader("receivables");

View File

@@ -28,8 +28,7 @@ export function BillsPageContainer({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.bills-list", { document.title = t("titles.bills-list", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("bills"); setSelectedHeader("bills");

View File

@@ -5,14 +5,14 @@ import { useTranslation } from "react-i18next";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { useLocation, useNavigate } from "react-router-dom"; import { useLocation, useNavigate } from "react-router-dom";
import { createStructuredSelector } from "reselect"; import { createStructuredSelector } from "reselect";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component"; import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import { INSERT_NEW_CONTRACT } from "../../graphql/cccontracts.queries"; import { INSERT_NEW_CONTRACT } from "../../graphql/cccontracts.queries";
import { UPDATE_JOB } from "../../graphql/jobs.queries"; import { UPDATE_JOB } from "../../graphql/jobs.queries";
import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/application.actions"; import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/application.actions";
import { selectBodyshop } from "../../redux/user/user.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors";
import ContractCreatePageComponent from "./contract-create.page.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr"; import InstanceRenderManager from "../../utils/instanceRenderMgr";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import ContractCreatePageComponent from "./contract-create.page.component";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop bodyshop: selectBodyshop
@@ -102,8 +102,7 @@ export function ContractCreatePageContainer({ bodyshop, setBreadcrumbs, setSelec
document.title = t("titles.contracts-create", { document.title = t("titles.contracts-create", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("newcontract"); setSelectedHeader("newcontract");

View File

@@ -41,14 +41,12 @@ export function ContractDetailPageContainer({ setBreadcrumbs, addRecentItem, set
document.title = loading document.title = loading
? InstanceRenderManager({ ? InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
}) })
: error : error
? InstanceRenderManager({ ? InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
}) })
: t("titles.contracts-detail", { : t("titles.contracts-detail", {
id: (data && data.cccontracts_by_pk && data.cccontracts_by_pk.agreementnumber) || "" id: (data && data.cccontracts_by_pk && data.cccontracts_by_pk.agreementnumber) || ""

View File

@@ -41,8 +41,7 @@ export function ContractsPageContainer({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.contracts", { document.title = t("titles.contracts", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("contracts"); setSelectedHeader("contracts");

View File

@@ -55,8 +55,7 @@ export function CourtesyCarCreateContainer({ bodyshop, setBreadcrumbs, setSelect
document.title = t("titles.courtesycars-create", { document.title = t("titles.courtesycars-create", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setBreadcrumbs([ setBreadcrumbs([
@@ -72,11 +71,7 @@ export function CourtesyCarCreateContainer({ bodyshop, setBreadcrumbs, setSelect
<RbacWrapper action="courtesycar:create"> <RbacWrapper action="courtesycar:create">
<FeatureWrapperComponent featureName="courtesycars"> <FeatureWrapperComponent featureName="courtesycars">
<Form form={form} autoComplete="new-password" onFinish={handleFinish} layout="vertical"> <Form form={form} autoComplete="new-password" onFinish={handleFinish} layout="vertical">
<CourtesyCarFormComponent <CourtesyCarFormComponent form={form} saveLoading={loading} newCC={true} />
form={form}
saveLoading={loading}
newCC={true}
/>
</Form> </Form>
</FeatureWrapperComponent> </FeatureWrapperComponent>
</RbacWrapper> </RbacWrapper>

View File

@@ -54,20 +54,17 @@ export function CourtesyCarDetailPageContainer({ setBreadcrumbs, addRecentItem,
document.title = loading document.title = loading
? InstanceRenderManager({ ? InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
}) })
: error : error
? InstanceRenderManager({ ? InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
}) })
: t("titles.courtesycars-detail", { : t("titles.courtesycars-detail", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}), }),
id: (data && data.courtesycars_by_pk && data.courtesycars_by_pk.fleet_number) || "" id: (data && data.courtesycars_by_pk && data.courtesycars_by_pk.fleet_number) || ""
}); });

View File

@@ -25,8 +25,7 @@ export function CourtesyCarsPageContainer({ setBreadcrumbs, setSelectedHeader })
document.title = t("titles.courtesycars", { document.title = t("titles.courtesycars", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("courtesycarsall"); setSelectedHeader("courtesycarsall");

View File

@@ -70,15 +70,13 @@ export function CsiContainerPage({ currentUser }) {
title={t("csi.labels.nologgedinuser", { title={t("csi.labels.nologgedinuser", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
})} })}
subTitle={t("csi.labels.nologgedinuser_sub", { subTitle={t("csi.labels.nologgedinuser_sub", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
})} })}
/> />

View File

@@ -19,8 +19,7 @@ export function ExportsLogPageContainer({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.dashboard", { document.title = t("titles.dashboard", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("dashboard"); setSelectedHeader("dashboard");

View File

@@ -9,9 +9,8 @@ export default function AboutPage() {
<div style={{ textAlign: "center", margin: "1rem 0rem" }}> <div style={{ textAlign: "center", margin: "1rem 0rem" }}>
<Typography.Title level={2}>{`${InstanceRenderMgr({ <Typography.Title level={2}>{`${InstanceRenderMgr({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager") })} V.${import.meta.env.MODE}-${import.meta.env.VITE_APP_GIT_SHA}`}</Typography.Title>
})}Rome Online V.${import.meta.env.MODE}-${import.meta.env.VITE_APP_GIT_SHA}`}</Typography.Title>
<Typography.Title level={2}>Third Party Notices</Typography.Title> <Typography.Title level={2}>Third Party Notices</Typography.Title>
<a href="/3rdparty-app.txt"> <a href="/3rdparty-app.txt">
<Typography.Title level={4}>Application</Typography.Title> <Typography.Title level={4}>Application</Typography.Title>

View File

@@ -46,8 +46,7 @@ export function DmsContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.dms", { document.title = t("titles.dms", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("dms"); setSelectedHeader("dms");

View File

@@ -65,8 +65,7 @@ export function DmsContainer({ bodyshop, setBreadcrumbs, setSelectedHeader, inse
document.title = t("titles.dms", { document.title = t("titles.dms", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("dms"); setSelectedHeader("dms");

View File

@@ -19,8 +19,7 @@ export function ExportsLogPageContainer({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.export-logs", { document.title = t("titles.export-logs", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("export-logs"); setSelectedHeader("export-logs");

View File

@@ -19,8 +19,7 @@ export function InventoryPage({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.inventory", { document.title = t("titles.inventory", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("inventory"); setSelectedHeader("inventory");

View File

@@ -52,8 +52,7 @@ export function JobsCloseContainer({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.jobs-admin", { document.title = t("titles.jobs-admin", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}), }),
ro_number: data ? data.jobs_by_pk && data.jobs_by_pk.ro_number : null ro_number: data ? data.jobs_by_pk && data.jobs_by_pk.ro_number : null
}); });

View File

@@ -47,8 +47,7 @@ export function AllJobs({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.jobs-all", { document.title = t("titles.jobs-all", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("alljobs"); setSelectedHeader("alljobs");

View File

@@ -29,8 +29,7 @@ export function JobsAvailablePageContainer({ partnerVersion, setBreadcrumbs, set
document.title = t("titles.jobsavailable", { document.title = t("titles.jobsavailable", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("availablejobs"); setSelectedHeader("availablejobs");
@@ -55,8 +54,7 @@ export function JobsAvailablePageContainer({ partnerVersion, setBreadcrumbs, set
<a <a
href={InstanceRenderManager({ href={InstanceRenderManager({
imex: "https://partner.imex.online/Setup.exe", imex: "https://partner.imex.online/Setup.exe",
rome: "https://partner.romeonline.io/Setup.exe", rome: "https://partner.romeonline.io/Setup.exe"
promanager: "https://dzaenazwrgg60.cloudfront.net/Setup.exe"
})} })}
> >
<Button size="small">{t("general.actions.download")}</Button> <Button size="small">{t("general.actions.download")}</Button>
@@ -66,7 +64,6 @@ export function JobsAvailablePageContainer({ partnerVersion, setBreadcrumbs, set
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)",
promanager: "$t(titles.promanager)"
}) })
})} })}
/> />

View File

@@ -37,8 +37,7 @@ export function JobsChecklistViewContainer({ bodyshop, setBreadcrumbs, setSelect
document.title = t("titles.jobs-checklist", { document.title = t("titles.jobs-checklist", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("activejobs"); setSelectedHeader("activejobs");

View File

@@ -39,8 +39,7 @@ export function JobsCloseContainer({ setBreadcrumbs, setSelectedHeader, setJobRe
document.title = t("titles.jobs-close", { document.title = t("titles.jobs-close", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}), }),
number: data ? data.jobs_by_pk && data.jobs_by_pk.ro_number : null number: data ? data.jobs_by_pk && data.jobs_by_pk.ro_number : null
}); });

View File

@@ -56,8 +56,7 @@ function JobsCreateContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.jobs-create", { document.title = t("titles.jobs-create", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("newjob"); setSelectedHeader("newjob");
@@ -280,8 +279,7 @@ function JobsCreateContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) {
tax_sub_rt: bodyshop.md_responsibility_centers.tax_sub_rt, tax_sub_rt: bodyshop.md_responsibility_centers.tax_sub_rt,
tax_lbr_rt: bodyshop.md_responsibility_centers.tax_lbr_rt, tax_lbr_rt: bodyshop.md_responsibility_centers.tax_lbr_rt,
tax_levies_rt: bodyshop.md_responsibility_centers.tax_levies_rt tax_levies_rt: bodyshop.md_responsibility_centers.tax_levies_rt
}, }
promanager: "USE_ROME"
}) })
}} }}
> >

View File

@@ -35,8 +35,7 @@ export function JobsDeliverContainer({ bodyshop, setBreadcrumbs, setSelectedHead
document.title = t("titles.jobs-deliver", { document.title = t("titles.jobs-deliver", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("activejobs"); setSelectedHeader("activejobs");

View File

@@ -390,9 +390,8 @@ export function JobsDetailPage({
) )
}, },
...(InstanceRenderManager({ ...(InstanceRenderManager({
imex: true, rome: "USE_IMEX",
rome: true, imex: HasFeatureAccess({ featureName: "timetickets", bodyshop })
promanager: HasFeatureAccess({ featureName: "timetickets", bodyshop })
}) })
? [ ? [
{ {
@@ -420,9 +419,8 @@ export function JobsDetailPage({
children: <JobsDetailDatesComponent job={job} /> children: <JobsDetailDatesComponent job={job} />
}, },
...(InstanceRenderManager({ ...(InstanceRenderManager({
imex: true, rome: "USE_IMEX",
rome: true, imex: HasFeatureAccess({ featureName: "media", bodyshop })
promanager: HasFeatureAccess({ featureName: "media", bodyshop })
}) })
? [ ? [
{ {

View File

@@ -18,9 +18,9 @@ import {
} from "../../redux/application/application.actions"; } from "../../redux/application/application.actions";
import { selectBodyshop } from "../../redux/user/user.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors";
import { CreateRecentItem } from "../../utils/create-recent-item"; import { CreateRecentItem } from "../../utils/create-recent-item";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import IsJobReadOnly from "../../utils/jobReadOnly"; import IsJobReadOnly from "../../utils/jobReadOnly";
import JobsDetailPage from "./jobs-detail.page.component"; import JobsDetailPage from "./jobs-detail.page.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop bodyshop: selectBodyshop
@@ -49,20 +49,17 @@ function JobsDetailPageContainer({ setBreadcrumbs, addRecentItem, setSelectedHea
document.title = loading document.title = loading
? InstanceRenderManager({ ? InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
}) })
: error : error
? InstanceRenderManager({ ? InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
}) })
: t("titles.jobsdetail", { : t("titles.jobsdetail", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}), }),
ro_number: (data.jobs_by_pk && data.jobs_by_pk.ro_number) || t("general.labels.na") ro_number: (data.jobs_by_pk && data.jobs_by_pk.ro_number) || t("general.labels.na")
}); });

View File

@@ -37,8 +37,7 @@ export function JobsIntakeContainer({ bodyshop, setBreadcrumbs, setSelectedHeade
document.title = t("titles.jobs-intake", { document.title = t("titles.jobs-intake", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("activejobs"); setSelectedHeader("activejobs");

View File

@@ -19,8 +19,7 @@ export function JobsReadyPage({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.readyjobs", { document.title = t("titles.readyjobs", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("readyjobs"); setSelectedHeader("readyjobs");

View File

@@ -19,8 +19,7 @@ export function JobsPage({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.jobs", { document.title = t("titles.jobs", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("activejobs"); setSelectedHeader("activejobs");

View File

@@ -21,8 +21,7 @@ export function ManageRootPageContainer({ setBreadcrumbs, bodyshop }) {
document.title = t("titles.manageroot", { document.title = t("titles.manageroot", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setBreadcrumbs([]); setBreadcrumbs([]);

View File

@@ -193,8 +193,7 @@ export function Manage({ conflict, bodyshop, alerts, setAlerts }) {
useEffect(() => { useEffect(() => {
document.title = InstanceRenderManager({ document.title = InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
}); });
}, [t]); }, [t]);
@@ -205,8 +204,7 @@ export function Manage({ conflict, bodyshop, alerts, setAlerts }) {
message={t("general.labels.loadingapp", { message={t("general.labels.loadingapp", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
})} })}
/> />
@@ -674,8 +672,7 @@ export function Manage({ conflict, bodyshop, alerts, setAlerts }) {
<div onClick={broadcastMessage}> <div onClick={broadcastMessage}>
{`${InstanceRenderManager({ {`${InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
})} - ${import.meta.env.VITE_APP_GIT_SHA_DATE}`} })} - ${import.meta.env.VITE_APP_GIT_SHA_DATE}`}
</div> </div>
<div id="noticeable-widget" style={{ marginLeft: "1rem" }} /> <div id="noticeable-widget" style={{ marginLeft: "1rem" }} />

View File

@@ -34,8 +34,7 @@ export function OwnersDetailContainer({ setBreadcrumbs, addRecentItem, setSelect
document.title = t("titles.owners-detail", { document.title = t("titles.owners-detail", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}), }),
name: data ? OwnerNameDisplayFunction(data.owners_by_pk) : "" name: data ? OwnerNameDisplayFunction(data.owners_by_pk) : ""
}); });

View File

@@ -17,8 +17,7 @@ export function OwnersPageContainer({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.owners", { document.title = t("titles.owners", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("owners"); setSelectedHeader("owners");

View File

@@ -19,8 +19,7 @@ export function PartsQueuePageContainer({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.parts-queue", { document.title = t("titles.parts-queue", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("parts-queue"); setSelectedHeader("parts-queue");

View File

@@ -49,8 +49,7 @@ export function AllJobs({ bodyshop, setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.payments-all", { document.title = t("titles.payments-all", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("allpayments"); setSelectedHeader("allpayments");

View File

@@ -22,8 +22,7 @@ export function PhonebookContainer({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.phonebook", { document.title = t("titles.phonebook", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("phonebook"); setSelectedHeader("phonebook");

View File

@@ -25,8 +25,7 @@ export function ProductionBoardContainer({ setBreadcrumbs, bodyshop, setSelected
document.title = t("titles.productionboard", { document.title = t("titles.productionboard", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("productionboard"); setSelectedHeader("productionboard");

View File

@@ -22,8 +22,7 @@ export function ProductionListContainer({
document.title = t("titles.productionlist", { document.title = t("titles.productionlist", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("productionlist"); setSelectedHeader("productionlist");

View File

@@ -19,7 +19,7 @@ export function ProfileContainerPage({ setBreadcrumbs, setSelectedHeader }) {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)",
promanager: "$t(titles.promanager)"
}) })
}); });
}, [t, setBreadcrumbs, setSelectedHeader]); }, [t, setBreadcrumbs, setSelectedHeader]);

View File

@@ -18,8 +18,7 @@ export function SchedulePageContainer({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.schedule", { document.title = t("titles.schedule", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("schedule"); setSelectedHeader("schedule");

View File

@@ -50,8 +50,7 @@ export function ScoreboardContainer({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.scoreboard", { document.title = t("titles.scoreboard", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("scoreboard"); setSelectedHeader("scoreboard");

View File

@@ -34,8 +34,7 @@ export function ShopCsiContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }
document.title = t("titles.shop-csi", { document.title = t("titles.shop-csi", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("shop-csi"); setSelectedHeader("shop-csi");

View File

@@ -23,8 +23,7 @@ export function ShopVendorPageContainer({ bodyshop, setBreadcrumbs, setSelectedH
document.title = t("titles.shop_vendors", { document.title = t("titles.shop_vendors", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("shop-vendors"); setSelectedHeader("shop-vendors");

View File

@@ -34,8 +34,7 @@ export function ShopPage({ bodyshop, setSelectedHeader, setBreadcrumbs }) {
document.title = t("titles.shop", { document.title = t("titles.shop", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("shop"); setSelectedHeader("shop");

View File

@@ -26,8 +26,7 @@ export function AllTasksPageContainer({ setBreadcrumbs, setSelectedHeader, setTa
document.title = t("titles.all_tasks", { document.title = t("titles.all_tasks", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("all_tasks"); setSelectedHeader("all_tasks");

View File

@@ -21,8 +21,7 @@ export function MyTasksPageContainer({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.my_tasks", { document.title = t("titles.my_tasks", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("my_tasks"); setSelectedHeader("my_tasks");

View File

@@ -13,8 +13,7 @@ export default function TechClockComponent() {
document.title = t("titles.techjobclock", { document.title = t("titles.techjobclock", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
}, [t]); }, [t]);

View File

@@ -12,8 +12,7 @@ export default function TechLookupContainer() {
document.title = t("titles.techjoblookup", { document.title = t("titles.techjoblookup", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
}, [t]); }, [t]);

View File

@@ -10,8 +10,7 @@ export default function TechShiftClock() {
document.title = t("titles.techshiftclock", { document.title = t("titles.techshiftclock", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
}, [t]); }, [t]);

View File

@@ -50,8 +50,7 @@ export function TechPage({ technician }) {
useEffect(() => { useEffect(() => {
document.title = InstanceRenderManager({ document.title = InstanceRenderManager({
imex: t("titles.imexonline"), imex: t("titles.imexonline"),
rome: t("titles.romeonline"), rome: t("titles.romeonline")
promanager: t("titles.promanager")
}); });
}, [t]); }, [t]);
@@ -77,8 +76,7 @@ export function TechPage({ technician }) {
message={t("general.labels.loadingapp", { message={t("general.labels.loadingapp", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
})} })}
/> />

View File

@@ -25,8 +25,7 @@ export function TempDocumentsContainer({ setBreadcrumbs, setSelectedHeader }) {
document.title = t("titles.temporarydocs", { document.title = t("titles.temporarydocs", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("temporarydocs"); setSelectedHeader("temporarydocs");

View File

@@ -58,8 +58,7 @@ export function TimeTicketsContainer({ bodyshop, setBreadcrumbs, setSelectedHead
document.title = t("titles.timetickets", { document.title = t("titles.timetickets", {
app: InstanceRenderManager({ app: InstanceRenderManager({
imex: "$t(titles.imexonline)", imex: "$t(titles.imexonline)",
rome: "$t(titles.romeonline)", rome: "$t(titles.romeonline)"
promanager: "$t(titles.promanager)"
}) })
}); });
setSelectedHeader("timetickets"); setSelectedHeader("timetickets");

Some files were not shown because too many files have changed in this diff Show More