From b5958858c2486804b036d441659c29b79917f245 Mon Sep 17 00:00:00 2001 From: Alex Cheung Date: Thu, 29 Feb 2024 17:37:26 +0800 Subject: [PATCH] add select language in user page --- .../UserInformationCard_Individual.js | 12 ++++++++++++ .../UserInformationCard_Individual_Pub.js | 13 +++++++++++++ src/pages/User/DetailsPage_Individual/index.js | 7 +++++-- .../UserInformationCard_Organization.js | 15 ++++++++++++--- .../UserInformationCard_Organization_Pub.js | 12 ++++++++++++ src/pages/User/DetailsPage_Organization/index.js | 4 +++- .../authentication/auth-forms/AuthLoginCustom.js | 4 ++++ src/pages/iAmSmart/AuthCallback/index.js | 4 ++++ src/translations/en.json | 3 ++- src/translations/zh-CN.json | 1 + src/translations/zh-HK.json | 1 + src/utils/ComboData.js | 6 ++++++ src/utils/CommonFunction.js | 14 +++++++++++++- 13 files changed, 88 insertions(+), 8 deletions(-) diff --git a/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual.js b/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual.js index bdafa2c..08a719c 100644 --- a/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual.js +++ b/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual.js @@ -95,6 +95,7 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => { addressLine2: values.addressLine2, addressLine3: values.addressLine3, }, + preferLocale: values.preferLocale.type }, onSuccess: function () { notifySaveSuccess(); @@ -512,6 +513,17 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => { form: formik })} + + + {FieldUtils.getComboField({ + label: intl.formatMessage({id: 'language'}) + ":", + valueName: "preferLocale", + dataList: ComboData.Locale, + getOptionLabel: (option) => option.label? option.label: "", + disabled: (!editMode), + form: formik + })} + diff --git a/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual_Pub.js b/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual_Pub.js index 2218bca..bb2f6ae 100644 --- a/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual_Pub.js +++ b/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual_Pub.js @@ -60,6 +60,7 @@ const UserInformationCard_Individual_Pub = ({ formData, loadDataFun }) => { faxNumber: yup.string().min(8, intl.formatMessage({id: 'require8Number'})).nullable(), }), onSubmit: values => { + // console.log(values) if (values.country==null){ setErrorMsg(intl.formatMessage({id: 'pleaseFillInCountry'})) } else { @@ -86,6 +87,7 @@ const UserInformationCard_Individual_Pub = ({ formData, loadDataFun }) => { addressLine2: values.addressLine2, addressLine3: values.addressLine3, }, + preferLocale: values.preferLocale.type }, onSuccess: function () { notifySaveSuccess(); @@ -351,6 +353,17 @@ const UserInformationCard_Individual_Pub = ({ formData, loadDataFun }) => { form: formik })} + + + {FieldUtils.getComboField({ + label: intl.formatMessage({id: 'language'}) + ":", + valueName: "preferLocale", + dataList: ComboData.Locale, + getOptionLabel: (option) => option.label? option.label: "", + disabled: (!editMode), + form: formik + })} + diff --git a/src/pages/User/DetailsPage_Individual/index.js b/src/pages/User/DetailsPage_Individual/index.js index fd8ec54..b935105 100644 --- a/src/pages/User/DetailsPage_Individual/index.js +++ b/src/pages/User/DetailsPage_Individual/index.js @@ -22,7 +22,7 @@ const BackgroundHead = { } import Loadable from 'components/Loadable'; import { useNavigate } from "react-router-dom"; -import {getObjectByValue} from "utils/CommonFunction"; +import {getObjectByValue,getObjectByType} from "utils/CommonFunction"; import * as ComboData from "utils/ComboData"; const LoadingComponent = Loadable(React.lazy(() => import('../../extra-pages/LoadingComponent'))); const UserInformationCard = Loadable(React.lazy(() => import('./UserInformationCard_Individual'))); @@ -80,6 +80,7 @@ const UserMaintainPage_Individual = () => { response.data["fax_countryCode"] = response.data.faxNo?.countryCode; response.data["lastLoginDate"] = response.data.lastLogin ? DateUtils.datetimeStr(response.data.lastLogin) : ""; + response.data["preferLocale"] = getObjectByType(ComboData.Locale, "type", response.data?.preferLocale); setFormData(response.data); } @@ -104,7 +105,9 @@ const UserMaintainPage_Individual = () => { response.data["faxNumber"] = response.data.faxNo?.faxNumber; response.data["fax_countryCode"] = response.data.faxNo?.countryCode; - + + response.data["preferLocale"] = getObjectByType(ComboData.Locale, "type", response.data?.preferLocale); + // console.log(response.data) setFormData(response.data); } }); diff --git a/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization.js b/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization.js index 682535b..cb67bbb 100644 --- a/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization.js +++ b/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization.js @@ -101,7 +101,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => orgId: values.orgId, // brNo: values.brNo, // brExpiryDate: values.brExpiryDate, - + preferLocale: values.preferLocale.type }, onSuccess: function () { notifySaveSuccess() @@ -394,8 +394,17 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => form: formik })} - - + + {FieldUtils.getComboField({ + label: intl.formatMessage({id: 'language'}) + ":", + valueName: "preferLocale", + dataList: ComboData.Locale, + getOptionLabel: (option) => option.label? option.label: "", + disabled: (!editMode), + form: formik + })} + + diff --git a/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization_Pub.js b/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization_Pub.js index 7b8b7a4..0dda060 100644 --- a/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization_Pub.js +++ b/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization_Pub.js @@ -19,6 +19,7 @@ import { notifySaveSuccess, } from 'utils/CommonFunction'; import {FormattedMessage, useIntl} from "react-intl"; import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; import {ThemeProvider} from "@emotion/react"; +import * as ComboData from "utils/ComboData"; // import { // isPrimaryLoggedIn, @@ -67,6 +68,7 @@ const UserInformationCard_Organization_Pub = ({ userData, loadDataFun,}) => { countryCode: values.tel_countryCode, phoneNumber: values.phoneNumber }, + preferLocale: values.preferLocale.type }, onSuccess: function () { notifySaveSuccess() @@ -202,6 +204,16 @@ const UserInformationCard_Organization_Pub = ({ userData, loadDataFun,}) => { form: formik })} + + {FieldUtils.getComboField({ + label: intl.formatMessage({id: 'language'}) + ":", + valueName: "preferLocale", + dataList: ComboData.Locale, + getOptionLabel: (option) => option.label? option.label: "", + disabled: (!editMode), + form: formik + })} + diff --git a/src/pages/User/DetailsPage_Organization/index.js b/src/pages/User/DetailsPage_Organization/index.js index b73c687..3a795e0 100644 --- a/src/pages/User/DetailsPage_Organization/index.js +++ b/src/pages/User/DetailsPage_Organization/index.js @@ -19,7 +19,7 @@ import ForwardIcon from '@mui/icons-material/Forward'; import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' import { useNavigate } from 'react-router-dom'; import * as ComboData from "utils/ComboData"; -import {getObjectByValue} from "utils/CommonFunction"; +import {getObjectByValue,getObjectByType} from "utils/CommonFunction"; const BackgroundHead = { backgroundImage: `url(${titleBackgroundImg})`, @@ -140,6 +140,7 @@ const UserMaintainPage_Organization = () => { response.data["faxNumber"] = response.data.faxNo?.faxNumber; response.data["fax_countryCode"] = response.data.faxNo?.countryCode; response.data["status"] = response.data?.locked?"locked":response.data?.status; + response.data["preferLocale"] = getObjectByType(ComboData.Locale, "type", response.data?.preferLocale); //response.data["orgId"] = response.data.brExpiryDate?DateUtils.dateStr(response.data.brExpiryDate):""; @@ -163,6 +164,7 @@ const UserMaintainPage_Organization = () => { response.data["faxNumber"] = response.data.faxNo?.faxNumber; response.data["fax_countryCode"] = response.data.faxNo?.countryCode; + response.data["preferLocale"] = getObjectByType(ComboData.Locale, "type", response.data?.preferLocale); //response.data["orgId"] = response.data.brExpiryDate?DateUtils.dateStr(response.data.brExpiryDate):""; setUserData(response.data); diff --git a/src/pages/authentication/auth-forms/AuthLoginCustom.js b/src/pages/authentication/auth-forms/AuthLoginCustom.js index d043fa7..82d9fb3 100644 --- a/src/pages/authentication/auth-forms/AuthLoginCustom.js +++ b/src/pages/authentication/auth-forms/AuthLoginCustom.js @@ -109,6 +109,10 @@ const AuthLoginCustom = () => { // setLocale("zh-CN"); localStorage.setItem('locale','zh-CN'); } + if (response.data.preferLocale ==="en"){ + // setLocale("zh-CN"); + localStorage.setItem('locale','en'); + } } dispatch(handleLogin(data)) navigate('/dashboard'); diff --git a/src/pages/iAmSmart/AuthCallback/index.js b/src/pages/iAmSmart/AuthCallback/index.js index 91c1f9f..c10758c 100644 --- a/src/pages/iAmSmart/AuthCallback/index.js +++ b/src/pages/iAmSmart/AuthCallback/index.js @@ -61,6 +61,10 @@ const Index = () => { // setLocale("zh-CN"); localStorage.setItem('locale','zh-CN'); } + if (response.data.preferLocale ==="en"){ + // setLocale("zh-CN"); + localStorage.setItem('locale','en'); + } } dispatch(handleLogin(data)) navigate('/dashboard'); diff --git a/src/translations/en.json b/src/translations/en.json index 696c70e..a8ae827 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2,7 +2,8 @@ "en": "English", "zh-HK": "繁體中文", "zh-CN": "简体中文", - + "language":"Language", + "PNSPS": "PNSPS", "HKSARGOV": "HKSAR Government", "HKGLD": "Government Logistics Department", diff --git a/src/translations/zh-CN.json b/src/translations/zh-CN.json index 1e39359..f398d5b 100644 --- a/src/translations/zh-CN.json +++ b/src/translations/zh-CN.json @@ -2,6 +2,7 @@ "en": "English", "zh-HK": "繁體中文", "zh-CN": "简体中文", + "language":"語言", "PNSPS": "公共启事提交及缴费系统", "HKSARGOV": "香港特别行政区政府", diff --git a/src/translations/zh-HK.json b/src/translations/zh-HK.json index 4f40505..7c306b9 100644 --- a/src/translations/zh-HK.json +++ b/src/translations/zh-HK.json @@ -2,6 +2,7 @@ "en": "English", "zh-HK": "繁體中文", "zh-CN": "简体中文", + "language":"語言", "PNSPS": "公共啟事提交及繳費系統", "HKSARGOV": "香港特別行政區政府", diff --git a/src/utils/ComboData.js b/src/utils/ComboData.js index bd7b12e..7b880f3 100644 --- a/src/utils/ComboData.js +++ b/src/utils/ComboData.js @@ -124,4 +124,10 @@ export const CreditorStatus = [ { key: 0, labelCht: '全部', label: 'All', type: 'all' }, { key: 1, labelCht: '債權人', label:'Credit Client', type: 'true' }, { key: 2, labelCht: '非債權人', label:'Non-Credit Client', type: 'false' }, +]; + +export const Locale = [ + { id: 1, key: 1, label: 'English', type: 'en' }, + { id: 2, key: 2, label: '繁體中文', type: 'zh_HK' }, + { id: 3, key: 3, label: '简体中文', type: 'zh_CN' }, ]; \ No newline at end of file diff --git a/src/utils/CommonFunction.js b/src/utils/CommonFunction.js index b5d4627..7e8f7c7 100644 --- a/src/utils/CommonFunction.js +++ b/src/utils/CommonFunction.js @@ -30,7 +30,19 @@ export function getObjectByValue(list, valueName, value) { const obj = list.find((element) => { return element[valueName] === parseInt(value); }); - console.log(obj); + // console.log(obj); + return obj === undefined || Object.keys(obj).length <= 0 ? null : obj +} + +export function getObjectByType(list, valueName, value) { + // console.log(list) + // console.log(valueName) + // console.log(value) + const obj = list.find((element) => { + // console.log(element[valueName]) + return element[valueName] === value; + }); + // console.log(obj); return obj === undefined || Object.keys(obj).length <= 0 ? null : obj }