fix: when no folders

This commit is contained in:
Takeshi Kimata
2024-06-09 10:35:21 +09:00
parent cb5592ef12
commit 369cd09c1c
6 changed files with 35 additions and 15 deletions

View File

@@ -39,7 +39,7 @@ function verifyVisibleMiddleware(sequelize) {
// find project id from folderId // find project id from folderId
const folder = await Folder.findByPk(folderId); const folder = await Folder.findByPk(folderId);
const projectId = folder && folder.id; const projectId = folder && folder.projectId;
if (!projectId) { if (!projectId) {
return res.status(404).send('failed to find projectId'); return res.status(404).send('failed to find projectId');
} }
@@ -103,7 +103,7 @@ function verifyVisibleMiddleware(sequelize) {
// find project id from runId // find project id from runId
const run = await Run.findByPk(runId); const run = await Run.findByPk(runId);
const projectId = run && run.id; const projectId = run && run.projectId;
if (!projectId) { if (!projectId) {
return res.status(404).send('failed to find projectId'); return res.status(404).send('failed to find projectId');
} }

View File

@@ -146,7 +146,8 @@
"update": "Update", "update": "Update",
"please_enter": "Please enter folder name", "please_enter": "Please enter folder name",
"delete": "Delete", "delete": "Delete",
"are_you_sure": "Are you sure you want to delete the folder?" "are_you_sure": "Are you sure you want to delete the folder?",
"no_folders_found": "No folders found"
}, },
"Cases": { "Cases": {
"test_case_list": "Test Case List", "test_case_list": "Test Case List",

View File

@@ -145,7 +145,8 @@
"update": "更新", "update": "更新",
"please_enter": "フォルダー名を入力してください", "please_enter": "フォルダー名を入力してください",
"delete": "削除", "delete": "削除",
"are_you_sure": "フォルダーを削除してもよろしいですか?" "are_you_sure": "フォルダーを削除してもよろしいですか?",
"no_folders_found": "フォルダーがありません"
}, },
"Cases": { "Cases": {
"test_case_list": "テストケース一覧", "test_case_list": "テストケース一覧",

View File

@@ -33,15 +33,20 @@ export default function FoldersPane({ projectId, messages, locale }: Props) {
return; return;
} }
try { try {
const data = await fetchFolders(context.token.access_token, projectId); const folders: FolderType[] = await fetchFolders(context.token.access_token, projectId);
setFolders(data); setFolders(folders);
const selectedFolderFromUrl = data.find((folder) => folder.id === folderId); // no folder on project
setSelectedFolder(selectedFolderFromUrl); if (folders.length === 0) {
return;
}
const selectedFolderFromUrl = folders.find((folder) => folder.id === folderId);
setSelectedFolder(selectedFolderFromUrl ? selectedFolderFromUrl : null);
// Redirect to the smallest folder ID page if the path is "projects/[projectId]/folders // Redirect to the smallest folder ID page if the path is "projects/[projectId]/folders
if (pathname === `/projects/${projectId}/folders`) { if (pathname === `/projects/${projectId}/folders`) {
const smallestFolderId = Math.min(...data.map((folder) => folder.id)); const smallestFolderId = Math.min(...folders.map((folder) => folder.id));
router.push(`/projects/${projectId}/folders/${smallestFolderId}/cases`, { locale: locale }); router.push(`/projects/${projectId}/folders/${smallestFolderId}/cases`, { locale: locale });
} }
} catch (error: any) { } catch (error: any) {

View File

@@ -54,9 +54,12 @@ export default function TestCaseTable({
}); });
const sortedItems = useMemo(() => { const sortedItems = useMemo(() => {
return [...cases].sort((a: Case, b: Case) => { if (cases.length === 0) {
const first = a[sortDescriptor.column as keyof Case] as number; return [];
const second = b[sortDescriptor.column as keyof Case] as number; }
return [...cases].sort((a: CaseType, b: CaseType) => {
const first = a[sortDescriptor.column as keyof CaseType] as number;
const second = b[sortDescriptor.column as keyof CaseType] as number;
const cmp = first < second ? -1 : first > second ? 1 : 0; const cmp = first < second ? -1 : first > second ? 1 : 0;
return sortDescriptor.direction === 'descending' ? -cmp : cmp; return sortDescriptor.direction === 'descending' ? -cmp : cmp;
@@ -67,8 +70,8 @@ export default function TestCaseTable({
onDeleteCase(deleteCaseId); onDeleteCase(deleteCaseId);
}; };
const renderCell = useCallback((testCase: Case, columnKey: Key) => { const renderCell = useCallback((testCase: CaseType, columnKey: Key) => {
const cellValue = testCase[columnKey as keyof Case]; const cellValue = testCase[columnKey as keyof CaseType];
switch (columnKey) { switch (columnKey) {
case 'id': case 'id':

View File

@@ -1,3 +1,13 @@
import { useTranslations } from 'next-intl';
export default function Page() { export default function Page() {
return <>This is folders page.</>; const t = useTranslations('Folders');
return (
<div className="container mx-auto max-w-3xl pt-6 px-6 flex-grow">
<div className="w-full p-3 flex items-center justify-between">
<h3 className="font-bold">{t('no_folders_found')}</h3>
</div>
</div>
);
} }