Merged PR 508: develop動作確認での不具合対応
## 概要 [Task2893: develop動作確認での不具合対応](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2893) - ワークタイプが削除済みで、別タブで一覧更新前のワークタイプに対する挙動を修正しました。 - ワークタイプ編集実行時に更新を促すエラーメッセージに修正 - オプションアイテムボタンを押下してもポップアップが開かないようにしています。 ## レビューポイント - 表示メッセージは適切か - ポップアップ表示制御は適切か ## UIの変更 - [Task2893](https://ndstokyo.sharepoint.com/:f:/r/sites/Piranha/Shared%20Documents/General/OMDS/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88/Task2893?csf=1&web=1&e=duKmyw) ## 動作確認状況 - ローカルで確認
This commit is contained in:
parent
48b45d2773
commit
565db8c8b7
@ -167,6 +167,12 @@ export const editWorktypeAsync = createAsyncThunk<
|
||||
"worktypeIdSetting.message.alreadyWorktypeIdExistError"
|
||||
);
|
||||
}
|
||||
// Worktypeの保存に失敗した場合
|
||||
if (error.code === "E011003") {
|
||||
errorMessage = getTranslationID(
|
||||
"worktypeIdSetting.message.updateWorktypeFailedError"
|
||||
);
|
||||
}
|
||||
|
||||
thunkApi.dispatch(
|
||||
openSnackbar({
|
||||
@ -209,10 +215,19 @@ export const getOptionItemsAsync = createAsyncThunk<
|
||||
// e ⇒ errorObjectに変換"
|
||||
const error = createErrorObject(e);
|
||||
|
||||
let errorMessage = getTranslationID("common.message.internalServerError");
|
||||
|
||||
// WorktypeIDが存在しない場合
|
||||
if (error.code === "E011003") {
|
||||
errorMessage = getTranslationID(
|
||||
"worktypeIdSetting.message.worktypeIdAlreadyDeletedError"
|
||||
);
|
||||
}
|
||||
|
||||
thunkApi.dispatch(
|
||||
openSnackbar({
|
||||
level: "error",
|
||||
message: getTranslationID("common.message.internalServerError"),
|
||||
message: errorMessage,
|
||||
})
|
||||
);
|
||||
return thunkApi.rejectWithValue({ error });
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
} from "features/workflow/worktype";
|
||||
import { OPTION_ITEMS_DEFAULT_VALUE_TYPE } from "features/workflow/worktype/constants";
|
||||
import { isOptionItemDefaultValueType } from "features/workflow/worktype/types";
|
||||
import { isErrorObject } from "common/errors";
|
||||
import close from "../../assets/images/close.svg";
|
||||
import progress_activit from "../../assets/images/progress_activit.svg";
|
||||
|
||||
@ -36,6 +37,7 @@ export const EditOptionItemsPopup: React.FC<EditOptionItemsPopupProps> = (
|
||||
|
||||
const closePopup = useCallback(() => {
|
||||
onClose();
|
||||
setCanDisplay(false);
|
||||
dispatch(cleanupWorktype());
|
||||
setIsPushSaveButton(false);
|
||||
}, [onClose, dispatch]);
|
||||
@ -47,11 +49,28 @@ export const EditOptionItemsPopup: React.FC<EditOptionItemsPopupProps> = (
|
||||
// 保存ボタンを押したかどうか
|
||||
const [isPushSaveButton, setIsPushSaveButton] = useState<boolean>(false);
|
||||
|
||||
// ポップアップを表示するかどうか
|
||||
const [canDisplay, setCanDisplay] = useState<boolean>(false);
|
||||
|
||||
useEffect(() => {
|
||||
// optionItems取得
|
||||
if (isOpen) {
|
||||
dispatch(getOptionItemsAsync());
|
||||
}
|
||||
(async () => {
|
||||
// optionItems取得
|
||||
if (isOpen) {
|
||||
const { meta, payload } = await dispatch(getOptionItemsAsync());
|
||||
|
||||
if (
|
||||
meta.requestStatus === "rejected" &&
|
||||
isErrorObject(payload) &&
|
||||
payload.error.code === "E011003"
|
||||
) {
|
||||
// WorkTypeが存在しない場合はポップアップを閉じる
|
||||
closePopup();
|
||||
} else {
|
||||
setCanDisplay(true);
|
||||
}
|
||||
}
|
||||
})();
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [dispatch, isOpen]);
|
||||
|
||||
const onChangeOptionItem = useCallback(
|
||||
@ -91,7 +110,9 @@ export const EditOptionItemsPopup: React.FC<EditOptionItemsPopupProps> = (
|
||||
]);
|
||||
|
||||
return (
|
||||
<div className={`${styles.modal} ${isOpen ? styles.isShow : ""}`}>
|
||||
<div
|
||||
className={`${styles.modal} ${isOpen && canDisplay ? styles.isShow : ""}`}
|
||||
>
|
||||
<div className={styles.modalBox}>
|
||||
<p className={styles.modalTitle}>
|
||||
{t(getTranslationID("worktypeIdSetting.label.optionItem"))}
|
||||
@ -242,7 +263,11 @@ export const EditOptionItemsPopup: React.FC<EditOptionItemsPopupProps> = (
|
||||
type="button"
|
||||
name="submit"
|
||||
value={t(getTranslationID("common.label.save"))}
|
||||
className={`${styles.formSubmit} ${styles.marginBtm1} ${styles.isActive}`}
|
||||
className={`${styles.formSubmit} ${styles.marginBtm1} ${
|
||||
optionItems !== undefined && optionItems.length > 0
|
||||
? styles.isActive
|
||||
: ""
|
||||
}`}
|
||||
onClick={onSubmit}
|
||||
/>
|
||||
{isLoading && (
|
||||
|
||||
@ -427,10 +427,12 @@
|
||||
"alreadyWorktypeIdExistError": "Diese Aufgabentypkennung ist derzeit registriert. Bitte registrieren Sie sich mit einer anderen Worktype-ID.",
|
||||
"worktypeIDLimitError": "Die Aufgabentypkennung kann nicht hinzugefügt werden, da die maximale Anzahl an Registrierungen erreicht wurde.",
|
||||
"optionItemInvalidError": "(de)Default valueがDefaultに設定されている場合、Initial valueは入力が必須です。",
|
||||
"worktypeIdAlreadyDeletedError": "(de)WorktypeIDは既に削除されています。画面を更新し、再度ご確認ください",
|
||||
"optionItemSaveFailedError": "(de)オプションアイテムの保存に失敗しました。画面を更新し、再度実行してください",
|
||||
"optionItemIncorrectError": "(de)入力されたItem labelまたはInitial valueがルールを満たしていません。下記のルールを満たす値を入力してください",
|
||||
"updateActiveWorktypeFailedError": "(de)Active WorktypeIDの保存に失敗しました。画面を更新し、再度実行してください",
|
||||
"worktypeInUseError": "(de)このWorktype IDはルーティングルールで使用されているため削除できません。"
|
||||
"worktypeInUseError": "(de)このWorktype IDはルーティングルールで使用されているため削除できません。",
|
||||
"updateWorktypeFailedError": "(de)WorktypeIDの保存に失敗しました。画面を更新し、再度ご確認ください"
|
||||
}
|
||||
},
|
||||
"templateFilePage": {
|
||||
@ -510,4 +512,4 @@
|
||||
"button": "(de)Continue"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -427,10 +427,12 @@
|
||||
"alreadyWorktypeIdExistError": "This Worktype ID is currently registered. Please register with a different Worktype ID.",
|
||||
"worktypeIDLimitError": "Worktype ID cannot be added because it has reached the maximum number of registrations.",
|
||||
"optionItemInvalidError": "Default valueがDefaultに設定されている場合、Initial valueは入力が必須です。",
|
||||
"worktypeIdAlreadyDeletedError": "WorktypeIDは既に削除されています。画面を更新し、再度ご確認ください",
|
||||
"optionItemSaveFailedError": "オプションアイテムの保存に失敗しました。画面を更新し、再度実行してください",
|
||||
"optionItemIncorrectError": "入力されたItem labelまたはInitial valueがルールを満たしていません。下記のルールを満たす値を入力してください",
|
||||
"updateActiveWorktypeFailedError": "Active WorktypeIDの保存に失敗しました。画面を更新し、再度実行してください",
|
||||
"worktypeInUseError": "このWorktype IDはルーティングルールで使用されているため削除できません。"
|
||||
"worktypeInUseError": "このWorktype IDはルーティングルールで使用されているため削除できません。",
|
||||
"updateWorktypeFailedError": "WorktypeIDの保存に失敗しました。画面を更新し、再度ご確認ください"
|
||||
}
|
||||
},
|
||||
"templateFilePage": {
|
||||
@ -510,4 +512,4 @@
|
||||
"button": "Continue"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -427,10 +427,12 @@
|
||||
"alreadyWorktypeIdExistError": "Este ID de tipo de trabajo está registrado actualmente. Regístrese con una ID de tipo de trabajo diferente.",
|
||||
"worktypeIDLimitError": "No se puede agregar el ID de tipo de trabajo porque ha alcanzado el número máximo de registros.",
|
||||
"optionItemInvalidError": "(es)Default valueがDefaultに設定されている場合、Initial valueは入力が必須です。",
|
||||
"worktypeIdAlreadyDeletedError": "(es)WorktypeIDは既に削除されています。画面を更新し、再度ご確認ください",
|
||||
"optionItemSaveFailedError": "(es)オプションアイテムの保存に失敗しました。画面を更新し、再度実行してください",
|
||||
"optionItemIncorrectError": "(es)入力されたItem labelまたはInitial valueがルールを満たしていません。下記のルールを満たす値を入力してください",
|
||||
"updateActiveWorktypeFailedError": "(es)Active WorktypeIDの保存に失敗しました。画面を更新し、再度実行してください",
|
||||
"worktypeInUseError": "(es)このWorktype IDはルーティングルールで使用されているため削除できません。"
|
||||
"worktypeInUseError": "(es)このWorktype IDはルーティングルールで使用されているため削除できません。",
|
||||
"updateWorktypeFailedError": "(es)WorktypeIDの保存に失敗しました。画面を更新し、再度ご確認ください"
|
||||
}
|
||||
},
|
||||
"templateFilePage": {
|
||||
@ -510,4 +512,4 @@
|
||||
"button": "(es)Continue"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -427,10 +427,12 @@
|
||||
"alreadyWorktypeIdExistError": "Cet ID de type de travail est actuellement enregistré. Veuillez vous inscrire avec un identifiant de type de travail différent.",
|
||||
"worktypeIDLimitError": "L'ID du type de travail ne peut pas être ajouté car il a atteint le nombre maximum d'enregistrements.",
|
||||
"optionItemInvalidError": "(fr)Default valueがDefaultに設定されている場合、Initial valueは入力が必須です。",
|
||||
"worktypeIdAlreadyDeletedError": "(fr)WorktypeIDは既に削除されています。画面を更新し、再度ご確認ください",
|
||||
"optionItemSaveFailedError": "(fr)オプションアイテムの保存に失敗しました。画面を更新し、再度実行してください",
|
||||
"optionItemIncorrectError": "(fr)入力されたItem labelまたはInitial valueがルールを満たしていません。下記のルールを満たす値を入力してください",
|
||||
"updateActiveWorktypeFailedError": "(fr)Active WorktypeIDの保存に失敗しました。画面を更新し、再度実行してください",
|
||||
"worktypeInUseError": "(fr)このWorktype IDはルーティングルールで使用されているため削除できません。"
|
||||
"worktypeInUseError": "(fr)このWorktype IDはルーティングルールで使用されているため削除できません。",
|
||||
"updateWorktypeFailedError": "(fr)WorktypeIDの保存に失敗しました。画面を更新し、再度ご確認ください"
|
||||
}
|
||||
},
|
||||
"templateFilePage": {
|
||||
@ -510,4 +512,4 @@
|
||||
"button": "(fr)Continue"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user