problem solved

This commit is contained in:
Andreas 2024-07-07 01:15:40 +02:00
parent dc66da7d00
commit 365e2e3982
2 changed files with 221 additions and 288 deletions

View File

@ -6,6 +6,7 @@ import { Attributes, where } from "@sequelize/core";
import { getCookieAuth, userIsAdmin } from '../../actions';
import { ActionResult } from '../../ActionResult';
import { PostAttributesWithBuckets } from '@/models';
import { inspect } from 'util';
export async function deletePost(postID: number): Promise<ActionResult<boolean>> {
await dbSync;
@ -30,7 +31,7 @@ export type GetPostsAttributes = {
export async function getPostsWithBucketsAndProject(): Promise<ActionResult<GetPostsAttributes[]>> {
await dbSync;
if(! await userIsAdmin()) return {error:"Unauthorized, not fetching Posts."}
const posts = await Post.findAll({
const posts:Post[] = await Post.findAll({
include: [
{association: Post.associations.buckets, include: Bucket.associations.attachments},
{association: Post.associations.user},
@ -38,22 +39,7 @@ export async function getPostsWithBucketsAndProject(): Promise<ActionResult<GetP
nest: false
});
return {result:JSON.parse(JSON.stringify(posts.map((e:Post)=>{
return {
id: e.id,
title: e.title,
content: e.content,
description: e.description,
buckets: e.buckets ? e.buckets : [],
user: e.user,
project: {
id: e.project_id,
name: e.project ? e.project.name : "",
readableIdentifier: e.project ? e.project.readableIdentifier : "",
posts: e.project ? e.project.posts : []
},
createdAt: e.createdAt,
updatedAt: e.updatedAt
} as GetPostsAttributes
return inspect(e)
})))};
}

View File

@ -1,13 +1,9 @@
import { GetPostsAttributes } from "@/app/lib/actions/entityManagement/post/postActions";
import { GetPostsAttributes } from "@/app/lib/actions/entitymanagement/post/postActions";
import { Post, Project, Bucket, PostBucket, Attachment } from "@/models";
import { Attributes } from "@sequelize/core";
import { UUID } from "crypto";
import { EntityEditorTextArea } from '../input/EntityEditorTextArea';
import {
ChangeEventHandler,
MouseEventHandler,
useState,
} from "react";
import { EntityEditorTextArea } from "../input/EntityEditorTextArea";
import { ChangeEvent, ChangeEventHandler, MouseEventHandler, useState } from "react";
import {
Accordion,
AccordionBody,
@ -86,11 +82,12 @@ export default function PostEditor({
<EntityEditorTextArea
contentHook={{
state: postContentState,
setState: setPostContentState
setState: setPostContentState,
}}
className={ "w-[100%] min-h-auto h-content align-top text-start text-base line-clamp-6 m-2" }
>
</EntityEditorTextArea>
className={
"w-[100%] min-h-auto h-content align-top text-start text-base line-clamp-6 m-2"
}
></EntityEditorTextArea>
<h2 key="label-project" className="m-2">
Project
</h2>
@ -108,10 +105,7 @@ export default function PostEditor({
unassigned
</option>
{projectList?.map((p) => (
<option
key={`projectSelectionOpt-${p.id}`}
value={p.id}
>
<option key={`projectSelectionOpt-${p.id}`} value={p.id}>
{p.readableIdentifier}
</option>
))}
@ -126,104 +120,40 @@ export default function PostEditor({
<tbody>
{editorPost?.buckets ? (
(() => {
let bucketMap: Map<
UUID,
Attributes<Bucket>
> = new Map(
editorPost.buckets.map((b) => [
b.id as UUID,
b,
])
let bucketMap: Map<UUID, Attributes<Bucket>> = new Map(
editorPost.buckets.map((b) => [b.id as UUID, b])
);
let bucketList = [
...editorPost.buckets.map((b) => b.id),
];
return bucketList.map((e) => {
let bucketList:UUID[] = [...editorPost.buckets.map((b) => b.id)];
return bucketList.map((bucketID,i) => {
return (
<>
<tr
key={`bucketAccordionRow-${bucketList
.indexOf(e)
.toString()}`}
key={i}
>
<Accordion>
<AccordionItem
eventKey={bucketList
.indexOf(e)
.toString()}
eventKey={bucketList.indexOf(bucketID).toString()}
>
<AccordionHeader>
{e}
</AccordionHeader>
<AccordionHeader>{bucketID}</AccordionHeader>
<AccordionBody>
<ul>
<li>
<input
type="file"
className="btn btn-success"
onChange={(
e
) => {
for (
let index = 0;
index <
((
e
.target
.files as FileList
)
.length as number);
index++
) {
const element =
(
e
.target
.files as FileList
)[
index
];
const fReader =
new FileReader();
fReader.readAsDataURL(
element
);
fReader.onloadend =
(
event
) => {
console.log(
event
.target
?.result
);
};
}
}}
onChange={onFileInputChange()}
/>
</li>
{(() => {
const bucket =
bucketMap.get(
e as UUID
);
return bucket &&
bucket.attachments ? (
bucket.attachments.map(
(
attachment
) => (
const bucket: Attributes<Bucket> | undefined = bucketMap.get(bucketID);
return bucket && bucket.attachments && (
bucket.attachments.map((attachment) => (
<li
key={`listItem-file-${attachment.filename}`}
>
{
attachment.filename
}
{attachment.filename}
</li>
)
)
) : (
<></>
))
);
})()}
</ul>
@ -271,6 +201,23 @@ type EditorRendererProps = {
projects: any;
};
function onFileInputChange(): ChangeEventHandler<HTMLInputElement> {
return (e: ChangeEvent<HTMLInputElement>) => {
for (let index = 0; index <
((e.target.files as FileList)
.length as number); index++) {
const element = (
e.target.files as FileList
)[index];
const fReader = new FileReader();
fReader.readAsDataURL(element);
fReader.onloadend = (event) => {
console.log(event.target?.result);
};
}
};
}
export function EditorRenderer({
editorPost,
headings,