remaining fixes
This commit is contained in:
parent
fba2fb0f5c
commit
177653d84a
@ -18,6 +18,8 @@ import {
|
|||||||
ALLOWED_IMAGE_TYPES,
|
ALLOWED_IMAGE_TYPES,
|
||||||
ALLOWED_VIDEO_TYPES,
|
ALLOWED_VIDEO_TYPES,
|
||||||
} from "../components/media/MediaFormUtils";
|
} from "../components/media/MediaFormUtils";
|
||||||
|
import { LinkedItems } from "./LinkedItems";
|
||||||
|
import { mediaFields, MediaItem } from "../pages/article/types";
|
||||||
|
|
||||||
const MemoizedSimpleMDE = React.memo(MarkdownEditor);
|
const MemoizedSimpleMDE = React.memo(MarkdownEditor);
|
||||||
|
|
||||||
|
@ -69,6 +69,8 @@ type LinkedItemsProps<T> = {
|
|||||||
extraField?: ExtraFieldConfig;
|
extraField?: ExtraFieldConfig;
|
||||||
dragAllowed?: boolean;
|
dragAllowed?: boolean;
|
||||||
onSave?: (items: T[]) => void;
|
onSave?: (items: T[]) => void;
|
||||||
|
onUpdate?: () => void;
|
||||||
|
dontRecurse?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
const reorder = (list: any[], startIndex: number, endIndex: number) => {
|
const reorder = (list: any[], startIndex: number, endIndex: number) => {
|
||||||
@ -88,6 +90,8 @@ export const LinkedItems = <T extends { id: number; [key: string]: any }>({
|
|||||||
dragAllowed = false,
|
dragAllowed = false,
|
||||||
type,
|
type,
|
||||||
onSave,
|
onSave,
|
||||||
|
onUpdate,
|
||||||
|
dontRecurse = false,
|
||||||
}: LinkedItemsProps<T>) => {
|
}: LinkedItemsProps<T>) => {
|
||||||
const { language } = languageStore;
|
const { language } = languageStore;
|
||||||
const { setArticleModalOpenAction, setArticleIdAction } = articleStore;
|
const { setArticleModalOpenAction, setArticleIdAction } = articleStore;
|
||||||
@ -130,6 +134,16 @@ export const LinkedItems = <T extends { id: number; [key: string]: any }>({
|
|||||||
|
|
||||||
setLinkedItems(reorderedItems);
|
setLinkedItems(reorderedItems);
|
||||||
|
|
||||||
|
if(parentResource === "sight" && childResource === "article") {
|
||||||
|
axiosInstance.post(
|
||||||
|
`${import.meta.env.VITE_KRBL_API}/sight/${parentId}/article/order`,
|
||||||
|
{
|
||||||
|
articles: reorderedItems.map((item) => ({
|
||||||
|
id: item.id,
|
||||||
|
})),
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} else {
|
||||||
axiosInstance.post(
|
axiosInstance.post(
|
||||||
`${import.meta.env.VITE_KRBL_API}/route/${parentId}/station`,
|
`${import.meta.env.VITE_KRBL_API}/route/${parentId}/station`,
|
||||||
{
|
{
|
||||||
@ -138,6 +152,7 @@ export const LinkedItems = <T extends { id: number; [key: string]: any }>({
|
|||||||
})),
|
})),
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -227,6 +242,7 @@ export const LinkedItems = <T extends { id: number; [key: string]: any }>({
|
|||||||
if (childResource === "article") {
|
if (childResource === "article") {
|
||||||
setPageNum(pageNum + 1);
|
setPageNum(pageNum + 1);
|
||||||
}
|
}
|
||||||
|
onUpdate?.();
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
@ -247,6 +263,7 @@ export const LinkedItems = <T extends { id: number; [key: string]: any }>({
|
|||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
setLinkedItems((prev) => prev.filter((item) => item.id !== itemId));
|
setLinkedItems((prev) => prev.filter((item) => item.id !== itemId));
|
||||||
|
onUpdate?.();
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.error("Error unlinking item:", error);
|
console.error("Error unlinking item:", error);
|
||||||
@ -495,8 +512,12 @@ export const LinkedItems = <T extends { id: number; [key: string]: any }>({
|
|||||||
</Stack>
|
</Stack>
|
||||||
</AccordionDetails>
|
</AccordionDetails>
|
||||||
</Accordion>
|
</Accordion>
|
||||||
|
{!dontRecurse &&
|
||||||
|
<>
|
||||||
<ArticleEditModal />
|
<ArticleEditModal />
|
||||||
<StationEditModal />
|
<StationEditModal />
|
||||||
</>
|
</>
|
||||||
|
}
|
||||||
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -18,6 +18,8 @@ import {
|
|||||||
} from "../../media/MediaFormUtils";
|
} from "../../media/MediaFormUtils";
|
||||||
import { axiosInstance } from "../../../providers/data";
|
import { axiosInstance } from "../../../providers/data";
|
||||||
import { TOKEN_KEY } from "../../../authProvider";
|
import { TOKEN_KEY } from "../../../authProvider";
|
||||||
|
import { LinkedItems } from "../../../components/LinkedItems";
|
||||||
|
import { mediaFields, MediaItem } from "../../../pages/article/types";
|
||||||
|
|
||||||
const MemoizedSimpleMDE = memo(MarkdownEditor);
|
const MemoizedSimpleMDE = memo(MarkdownEditor);
|
||||||
|
|
||||||
@ -29,15 +31,17 @@ type MediaFile = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const style = {
|
const style = {
|
||||||
position: "absolute",
|
marginLeft: "auto",
|
||||||
top: "50%",
|
marginRight: "auto",
|
||||||
left: "50%",
|
//position: "absolute",
|
||||||
transform: "translate(-50%, -50%)",
|
//top: "50%",
|
||||||
|
//left: "50%",
|
||||||
|
//transform: "translate(-50%, -50%)",
|
||||||
width: "60%",
|
width: "60%",
|
||||||
bgcolor: "background.paper",
|
bgcolor: "background.paper",
|
||||||
border: "2px solid #000",
|
border: "2px solid #000",
|
||||||
boxShadow: 24,
|
boxShadow: 24,
|
||||||
p: 4,
|
p: 4
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ArticleEditModal = observer(() => {
|
export const ArticleEditModal = observer(() => {
|
||||||
@ -68,8 +72,8 @@ export const ArticleEditModal = observer(() => {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
// Load existing media files when editing an article
|
// Load existing media files when editing an article
|
||||||
useEffect(() => {
|
|
||||||
const loadExistingMedia = async () => {
|
const loadExistingMedia = async () => {
|
||||||
|
console.log("Called loadExistingMedia")
|
||||||
if (selectedArticleId) {
|
if (selectedArticleId) {
|
||||||
try {
|
try {
|
||||||
const response = await axiosInstance.get(
|
const response = await axiosInstance.get(
|
||||||
@ -108,6 +112,7 @@ export const ArticleEditModal = observer(() => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
loadExistingMedia();
|
loadExistingMedia();
|
||||||
}, [selectedArticleId]);
|
}, [selectedArticleId]);
|
||||||
|
|
||||||
@ -264,6 +269,7 @@ export const ArticleEditModal = observer(() => {
|
|||||||
onClose={() => setArticleModalOpenAction(false)}
|
onClose={() => setArticleModalOpenAction(false)}
|
||||||
aria-labelledby="modal-modal-title"
|
aria-labelledby="modal-modal-title"
|
||||||
aria-describedby="modal-modal-description"
|
aria-describedby="modal-modal-description"
|
||||||
|
sx={{overflow: "auto"}}
|
||||||
>
|
>
|
||||||
<Box sx={style}>
|
<Box sx={style}>
|
||||||
<Edit
|
<Edit
|
||||||
@ -309,6 +315,19 @@ export const ArticleEditModal = observer(() => {
|
|||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
{selectedArticleId && (
|
||||||
|
<LinkedItems<MediaItem>
|
||||||
|
type="edit"
|
||||||
|
parentId={selectedArticleId}
|
||||||
|
parentResource="article"
|
||||||
|
childResource="media"
|
||||||
|
fields={mediaFields}
|
||||||
|
title="медиа"
|
||||||
|
dontRecurse
|
||||||
|
onUpdate={loadExistingMedia}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
{/* Dropzone для медиа файлов */}
|
{/* Dropzone для медиа файлов */}
|
||||||
|
@ -978,14 +978,14 @@ export const SightEdit = observer(() => {
|
|||||||
</Paper>
|
</Paper>
|
||||||
</Box>
|
</Box>
|
||||||
</Edit>
|
</Edit>
|
||||||
{!leftArticleId && (
|
{/* {!leftArticleId && (
|
||||||
<CreateSightArticle
|
<CreateSightArticle
|
||||||
parentId={sightId!}
|
parentId={sightId!}
|
||||||
parentResource="sight"
|
parentResource="sight"
|
||||||
childResource="article"
|
childResource="article"
|
||||||
title="левую статью"
|
title="левую статью"
|
||||||
/>
|
/>
|
||||||
)}
|
)} */}
|
||||||
{leftArticleId && (
|
{leftArticleId && (
|
||||||
<Button
|
<Button
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
|
Loading…
Reference in New Issue
Block a user