From 088945399813bd0cf716d05911d3e2032cbb1633 Mon Sep 17 00:00:00 2001 From: jfrye122 Date: Mon, 5 Jun 2023 16:50:12 -0400 Subject: [PATCH] Update time ticket areas added to use translations --- components/Selects/select-cost-center.jsx | 10 +-- components/Selects/select-job-id.jsx | 6 +- .../screen-main/screen-main.component.jsx | 3 +- .../screen-time-ticket-browser.component.jsx | 12 ++-- .../clockedin-list-item.component.jsx | 8 +-- .../employee-clockedin-list.component.jsx | 9 +-- .../screen-time-ticket-clockoff.component.jsx | 25 ++++--- .../screen-time-ticket-create.component.jsx | 33 +++------ translations/en-US/common.json | 71 +++++++++++++++++-- translations/es-MX/common.json | 71 +++++++++++++++++-- translations/fr-CA/common.json | 71 +++++++++++++++++-- 11 files changed, 235 insertions(+), 84 deletions(-) diff --git a/components/Selects/select-cost-center.jsx b/components/Selects/select-cost-center.jsx index a2703e0..581f9a0 100644 --- a/components/Selects/select-cost-center.jsx +++ b/components/Selects/select-cost-center.jsx @@ -10,12 +10,6 @@ import { QUERY_EMPLOYEE_BY_ID } from "../../graphql/employees.queries"; import { useEffect } from "react"; import { t } from "i18next"; -const data = [ - { label: "Item 1", value: "1" }, - { label: "Item 2", value: "3" }, - { label: "Item 3", value: "3" }, -]; - const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop // timeTicketJobId: selectCurrentTimeTicketJobId, @@ -62,8 +56,8 @@ export function CostCenterSelect(props) { maxHeight={300} labelField="label" valueField="value" - placeholder={!isFocus ? "Select Cost Center" : "..."} - searchPlaceholder="Search..." + placeholder={!isFocus ? t("selectcostcenter.labels.placeholder") : t("selectcostcenter.labels.selectedplaceholder")} + searchPlaceholder={t("selectcostcenter.labels.searchplaceholder")} onFocus={() => setIsFocus(true)} onBlur={() => setIsFocus(false)} data={costCenters} diff --git a/components/Selects/select-job-id.jsx b/components/Selects/select-job-id.jsx index b95cd62..ef1caf2 100644 --- a/components/Selects/select-job-id.jsx +++ b/components/Selects/select-job-id.jsx @@ -96,7 +96,7 @@ export function JobIdSearchSelect( useEffect(() => { // console.log("useEfectDependentOn: [theOptions]"); var count = Object.keys(theOptions).length; - console.log("useEfectDependentOn: [theOptions] count:", count); + // console.log("useEfectDependentOn: [theOptions] count:", count); let selectDataArray = []; for (let i = 0; i < count; i++) { selectDataArray.push({ @@ -131,8 +131,8 @@ export function JobIdSearchSelect( maxHeight={300} labelField="label" valueField="value" - placeholder={!isFocus ? "RO #" : "..."} - searchPlaceholder="Search..." + placeholder={!isFocus ? t("selectjobid.labels.placeholder") : t("selectjobid.labels.selectedplaceholder")} + searchPlaceholder={t("selectjobid.labels.searchplaceholder")} onFocus={() => setIsFocus(true)} onBlur={() => setIsFocus(false)} data={selectorData} diff --git a/components/screen-main/screen-main.component.jsx b/components/screen-main/screen-main.component.jsx index 667bb4b..541ec2a 100644 --- a/components/screen-main/screen-main.component.jsx +++ b/components/screen-main/screen-main.component.jsx @@ -186,7 +186,7 @@ const TimeTicketBrowserStackNavigator = connect( ({ - title: "Clock Off", + title: i18n.t("timeticketclockoff.titles.clockoff"), })} component={ScreenTimeTicketClockoffComponent} /> @@ -217,7 +217,6 @@ const BottomTabsNavigator = () => ( } else if (route.name === "MediaBrowserTab") { iconName = "ios-camera"; } else if (route.name === "TimeTicketBrowserTab") { - //ADDED JF check for route.name for TimeTicketBrowserTab. Also icon ios-stopwatch-outline iconName = "ios-stopwatch-outline"; } else { //iconName = "customerservice"; diff --git a/components/screen-time-ticket-browser/screen-time-ticket-browser.component.jsx b/components/screen-time-ticket-browser/screen-time-ticket-browser.component.jsx index 9609671..6eb7c5e 100644 --- a/components/screen-time-ticket-browser/screen-time-ticket-browser.component.jsx +++ b/components/screen-time-ticket-browser/screen-time-ticket-browser.component.jsx @@ -25,6 +25,7 @@ import { QUERY_ACTIVE_TIME_TICKETS } from "../../graphql/timetickets.queries"; import EmployeeClockedInList from "../time-ticket-lists/employee-clockedin-list.component"; import { logImEXEvent } from "../../firebase/firebase.analytics"; import StyleRepeater from "../style-repeater/style-repeater"; +import { useTranslation } from "react-i18next"; // import SignOutButton from "../Buttons/employee-sign-out-button.component"; // import AddTimeTicketButton from "../Buttons/create-time-ticket-button.component"; @@ -55,6 +56,7 @@ export function ScreenTimeTicketBrowser({ currentSelectedTimeTicketJobId, currentEmployeeFullName, }) { + const { t } = useTranslation(); const [currentSCC, setCurrentSCC] = useState(null); const [currentSJobId, setCurrentSJobId] = useState(null); const [loading, setLoading] = useState(false); @@ -65,7 +67,7 @@ export function ScreenTimeTicketBrowser({ }); const handleFinish = async (values) => { - console.log("handleFinish called in ScreenTimeTicketBrowser"); + // console.log("handleFinish called in ScreenTimeTicketBrowser"); setLoading(true); setError(null); @@ -77,7 +79,7 @@ export function ScreenTimeTicketBrowser({ } else { // console.log("missing values!"); setLoading(false); - setError({ message: "Please make sure all fields have a value." }); + setError({ message: t("timeticketbrowser.errors.missingvalues") }); return; } @@ -137,7 +139,7 @@ export function ScreenTimeTicketBrowser({ > - } /> @@ -147,7 +149,7 @@ export function ScreenTimeTicketBrowser({ - // // diff --git a/components/time-ticket-items/clockedin-list-item.component.jsx b/components/time-ticket-items/clockedin-list-item.component.jsx index 1f9fbf4..7505208 100644 --- a/components/time-ticket-items/clockedin-list-item.component.jsx +++ b/components/time-ticket-items/clockedin-list-item.component.jsx @@ -36,16 +36,16 @@ export function ClockedinListItem({ setTmTicketJobIdRedux, ticket }) { /> - Vehicle : + {t("clockedinlistitem.labels.vehicle")} {`${ticket.job.v_model_yr || ""} ${ticket.job.v_make_desc || ""} ${ ticket.job.v_model_desc || "" }`} - Clocked In : {ticket.clockon} + {t("clockedinlistitem.labels.clockedin")}{ticket.clockon} - Cost Center :{" "} + {t("clockedinlistitem.labels.costcenter")} {ticket.cost_center === "timetickets.labels.shift" ? t(ticket.cost_center) : ticket.cost_center} @@ -53,7 +53,7 @@ export function ClockedinListItem({ setTmTicketJobIdRedux, ticket }) { diff --git a/components/time-ticket-lists/employee-clockedin-list.component.jsx b/components/time-ticket-lists/employee-clockedin-list.component.jsx index cc939c6..34de696 100644 --- a/components/time-ticket-lists/employee-clockedin-list.component.jsx +++ b/components/time-ticket-lists/employee-clockedin-list.component.jsx @@ -42,7 +42,7 @@ export function EmployeeClockedInList({ currentEmployee, isRefresh }) { if(isRefresh){ refetch(); } - console.log("useEffect: ", isRefresh); + // console.log("useEffect: ", isRefresh); // setRefreshKey(isRefresh); }, [isRefresh]); @@ -62,19 +62,16 @@ export function EmployeeClockedInList({ currentEmployee, isRefresh }) { if (error) return ; const onRefresh = async () => { - console.info("EmployeeClockedInList, onRefresh."); + // console.info("EmployeeClockedInList, onRefresh."); return refetch(); }; - - - return ( {jobData ? ( - You are already clocked in to the following job(s): + {t("employeeclockedinlist.labels.alreadyclockedon")} - Clock Off + {t("timeticketclockoff.actions.clockoff")} )} diff --git a/components/time-ticket/screen-time-ticket-create.component.jsx b/components/time-ticket/screen-time-ticket-create.component.jsx index 2e4488c..cc81872 100644 --- a/components/time-ticket/screen-time-ticket-create.component.jsx +++ b/components/time-ticket/screen-time-ticket-create.component.jsx @@ -52,13 +52,6 @@ export function TimeTicketCreate({ // const [currentSJob, setCurrentSJob] = useState(null); const [currentSJobId, setCurrentSJobId] = useState(null); - // const wrapperSetCurrentSJobState = useCallback( - // (val) => { - // setCurrentSJob(val); - // }, - // [setCurrentSJob] - // ); - const showDatePicker = () => { setDatePickerVisibility(true); }; @@ -67,7 +60,6 @@ export function TimeTicketCreate({ }; const handleConfirm = (date) => { setDate2(date); - //console.war1n("A date has been picked: ", date); hideDatePicker(); }; @@ -75,7 +67,7 @@ export function TimeTicketCreate({ const handleFinish = async (values) => { logImEXEvent("handleFinish_called_in_TimeTicketCreate"); - console.log("handleFinish called in TimeTicketCreate"); + // console.log("handleFinish called in TimeTicketCreate"); setError(null); setLoading(true); @@ -93,17 +85,17 @@ export function TimeTicketCreate({ !!values.actualhours ) { if (isNaN(values.actualhours) | isNaN(values.productivehours)) { - console.log("actual hours is NAN!"); + // console.log("actual hours is NAN!"); setLoading(false); - setError({ message: "Please make sure all fields have valid values." }); + setError({ message: t("createtimeticket.errors.nan") }); return; } setError(null); - console.log("have all values"); + // console.log("have all values"); } else { - console.log("missing values!"); + // console.log("missing values!"); setLoading(false); - setError({ message: "Please make sure all fields have a value." }); + setError({ message: t("createtimeticket.errors.missingvalues")}); return; } @@ -211,7 +203,7 @@ export function TimeTicketCreate({ style={localStyles.dateButton} > - Ticket Date: {date2.toLocaleDateString('en-US', { day: '2-digit', month: '2-digit', year: 'numeric' })} + {t("createtimeticket.actions.ticketdate")}{date2.toLocaleDateString('en-US', { day: '2-digit', month: '2-digit', year: 'numeric' })} - {/* Below will set to auto fill with current employee */} - - {error ? : null} @@ -261,7 +250,7 @@ export function TimeTicketCreate({ loading={loading} title="Submit" > - Create Ticket + {t("createtimeticket.actions.createticket")} )} diff --git a/translations/en-US/common.json b/translations/en-US/common.json index 6243d06..41fe116 100644 --- a/translations/en-US/common.json +++ b/translations/en-US/common.json @@ -330,13 +330,15 @@ "ticket":"Ticket", "timetickets": "Time Tickets", "detail": "Time Ticket Details", - "notickets": "There are no active tickets." + "notickets": "There are no active tickets.", + "clockin": "Clock In" }, "labels": { - "converting": "Converting", - "selectjob": "--- Select a ticket ---", - "selectticketassetselector": "Please select a ticket to update. ", - "uploading": "Uploading" + "loggedinemployee": "Logged in Employee", + "clockintojob": "Clock Into Job" + }, + "errors": { + "missingvalues": "Please make sure all fields have a value." }, "titles": { "timeticketbrowsertab": "Time Tickets" @@ -349,13 +351,22 @@ "ticket":"Ticket", "timetickets": "Time Tickets", "detail": "Time Ticket Details", - "notickets": "There are no active tickets." + "notickets": "There are no active tickets.", + "ticketdate": "Ticket Date: ", + "createticket": "Create Ticket" }, "labels": { "converting": "Converting", "selectjob": "--- Select a ticket ---", "selectticketassetselector": "Please select a ticket to update. ", - "uploading": "Uploading" + "uploading": "Uploading", + "employeeplaceholder": "Employee", + "actualhoursplaceholder": "Actual Hours", + "productivehoursplaceholder": "Productive Hours" + }, + "errors": { + "nan": "Please make sure all fields have valid values.", + "missingvalues": "Please make sure all fields have a value." }, "titles": { "createtimeticket": "Create a Time Ticket" @@ -450,6 +461,52 @@ "requiredifparttype": "Required if a part type has been specified.", "zeropriceexistingpart": "This line cannot have any price since it uses an existing part." } + }, + "timeticketclockoff":{ + "actions": { + "clockoff": "Clock Off", + "noinfo": "There is no info to display." + }, + "labels": { + "actualhoursplaceholder": "Actual Hours", + "productivehoursplaceholder": "Productive Hours" + }, + "errors": { + "nan": "Please make sure all fields have valid values.", + "missingvalues": "Please make sure all fields have a value." + }, + "titles": { + "clockoff": "Clock Off" + } + }, + "selectjobid":{ + "labels": { + "placeholder": "RO #", + "selectedplaceholder": "...", + "searchplaceholder": "Search..." + } + }, + "selectcostcenter":{ + "labels": { + "placeholder": "Select Cost Center", + "selectedplaceholder": "...", + "searchplaceholder": "Search..." + } + }, + "employeeclockedinlist": { + "labels": { + "alreadyclockedon": "You are already clocked in to the following job(s):" + } + }, + "clockedinlistitem": { + "labels": { + "vehicle": "Vehicle : ", + "clockedin": "Clocked In : ", + "costcenter": "Cost Center : " + }, + "actions": { + "clockout": "Clock Out" + } } } } diff --git a/translations/es-MX/common.json b/translations/es-MX/common.json index 0d4aac5..60f8aa7 100644 --- a/translations/es-MX/common.json +++ b/translations/es-MX/common.json @@ -330,13 +330,15 @@ "ticket": "", "timetickets": "", "detail": "", - "notickets": "" + "notickets": "", + "clockin": "" }, "labels": { - "converting": "", - "selectjob": "", - "selectticketassetselector": "", - "uploading": "" + "loggedinemployee": "", + "clockintojob": "" + }, + "errors": { + "missingvalues": "" }, "titles": { "timeticketbrowsertab": "" @@ -349,13 +351,22 @@ "ticket":" ", "timetickets": "", "detail": "", - "notickets": "" + "notickets": "", + "ticketdate": "", + "createticket": "" }, "labels": { "converting": "", "selectjob": "", "selectticketassetselector": "", - "uploading": "" + "uploading": "", + "employeeplaceholder": "", + "actualhoursplaceholder": "", + "productivehoursplaceholder": "" + }, + "errors": { + "nan": "", + "missingvalues": "" }, "titles": { "createtimeticket": "" @@ -450,6 +461,52 @@ "requiredifparttype": "", "zeropriceexistingpart": "" } + }, + "timeticketclockoff":{ + "actions": { + "clockoff": "", + "noinfo": "" + }, + "labels": { + "actualhoursplaceholder": "", + "productivehoursplaceholder": "" + }, + "errors": { + "nan": "", + "missingvalues": "" + }, + "titles": { + "clockoff": "" + } + }, + "selectjobid":{ + "labels": { + "placeholder": "", + "selectedplaceholder": "...", + "searchplaceholder": "" + } + }, + "selectcostcenter":{ + "labels": { + "placeholder": "", + "selectedplaceholder": "...", + "searchplaceholder": "" + } + }, + "employeeclockedinlist": { + "labels": { + "alreadyclockedon": "" + } + }, + "clockedinlistitem": { + "labels": { + "vehicle": "", + "clockedin": "", + "costcenter": "" + }, + "actions": { + "clockout": "" + } } } } diff --git a/translations/fr-CA/common.json b/translations/fr-CA/common.json index efb30bd..d6abc2d 100644 --- a/translations/fr-CA/common.json +++ b/translations/fr-CA/common.json @@ -330,13 +330,15 @@ "ticket": "", "timetickets": "", "detail": "", - "notickets": "" + "notickets": "", + "clockin": "" }, "labels": { - "converting": "", - "selectjob": "", - "selectticketassetselector": "", - "uploading": "" + "loggedinemployee": "", + "clockintojob": "" + }, + "errors": { + "missingvalues": "" }, "titles": { "timeticketbrowsertab": "" @@ -349,13 +351,22 @@ "ticket":" ", "timetickets": "", "detail": "", - "notickets": "" + "notickets": "", + "ticketdate": "", + "createticket": "" }, "labels": { "converting": "", "selectjob": "", "selectticketassetselector": "", - "uploading": "" + "uploading": "", + "employeeplaceholder": "", + "actualhoursplaceholder": "", + "productivehoursplaceholder": "" + }, + "errors": { + "nan": "", + "missingvalues": "" }, "titles": { "createtimeticket": "" @@ -450,6 +461,52 @@ "requiredifparttype": "", "zeropriceexistingpart": "" } + }, + "timeticketclockoff":{ + "actions": { + "clockoff": "", + "noinfo": "" + }, + "labels": { + "actualhoursplaceholder": "", + "productivehoursplaceholder": "" + }, + "errors": { + "nan": "", + "missingvalues": "" + }, + "titles": { + "clockoff": "" + } + }, + "selectjobid":{ + "labels": { + "placeholder": "", + "selectedplaceholder": "...", + "searchplaceholder": "" + } + }, + "selectcostcenter":{ + "labels": { + "placeholder": "", + "selectedplaceholder": "...", + "searchplaceholder": "" + } + }, + "employeeclockedinlist": { + "labels": { + "alreadyclockedon": "" + } + }, + "clockedinlistitem": { + "labels": { + "vehicle": "", + "clockedin": "", + "costcenter": "" + }, + "actions": { + "clockout": "" + } } } }