Skip to content
Snippets Groups Projects
Commit 356bd10e authored by Richard Fernando Heise Ferreira's avatar Richard Fernando Heise Ferreira
Browse files

Merge branch 'issue/313-fix-resource' into 'develop'

Issue #313/Update resources implemented

See merge request !299
parents 8ba9e118 32106105
No related branches found
No related tags found
1 merge request!299Issue #313/Update resources implemented
Pipeline #42379 passed
......@@ -7,12 +7,14 @@ import Typography from "@mui/material/Typography";
import Link from "next/link";
import { mecredURL } from "@/axiosConfig";
import DeleteOutlinedIcon from '@mui/icons-material/DeleteOutlined';
import EditOutlinedIcon from "@mui/icons-material/EditOutlined";
import { ImTelegram } from "react-icons/im";
import { isLoggedIn, useLoginBarrier } from "@/app/handlers/loginHandler";
import { useState, useEffect, useLayoutEffect } from "react";
import { getStoredValue } from "@/app/handlers/localStorageHandler";
import DeleteModal from "../recurso/[id]/components/deleteModal";
import { Button } from "@mui/material";
import { EditResourceModal } from "./EditResourceModal";
/**
......@@ -28,6 +30,7 @@ import { Button } from "@mui/material";
export default function Cards(props) {
const [deleteOpen, setDeleteOpen] = useState(false)
const [editOpen, setEditOpen] = useState(false)
const [userData, setUserData] = useState([])
const [userProfile, setUserProfile] = useState(false)
......@@ -135,6 +138,18 @@ export default function Cards(props) {
}
let button = [
{
name: "Editar",
icon: <EditOutlinedIcon />,
action: () => {
if (!isLoggedIn()) {
return;
}
setEditOpen(true);
},
extraProps: {},
},
{
name: "Deletar",
icon: <DeleteOutlinedIcon />,
......@@ -148,9 +163,7 @@ export default function Cards(props) {
},
extraProps: {},
},
]
];
return (
<Card
......@@ -245,6 +258,7 @@ export default function Cards(props) {
{userProfile ?
<div className="flex justify-end w-full">
<DeleteModal setUniqueResources={props.setUniqueResources} userProfile open={deleteOpen} onClose={() => setDeleteOpen(false)} idLogin={userData["id"]} resourceId={props["id"]} />
<EditResourceModal open={editOpen} onClose={() => setEditOpen(false)} setEditOpen={setEditOpen} resource={props.resource} />
{button.map((item, index) => (
<div key={index}>
<Button
......
import { Button, Modal } from "@mui/material";
import { useEffect, useState } from "react";
import FieldLabel from "./FieldLabel";
import CustomTextField from "../publicar/components/CustomTextField";
import { getStoredValue } from "../handlers/localStorageHandler";
import mecredApi from "@/axiosConfig";
export function EditResourceModal({ open, onClose, resource, setEditOpen }) {
const [title, setTitle] = useState("");
const [description, setDescription] = useState("");
const [openSuccess, setOpenSuccess] = useState(false)
const token = getStoredValue("access_token");
const client = getStoredValue("client");
const uid = getStoredValue("uid");
useEffect(() => {
if (resource?.learning_object) {
setTitle(resource.learning_object.name ?? "");
setDescription(resource.learning_object.description ?? "");
}
}, [resource]);
if (!resource?.learning_object) return null;
const handleTitleChange = (e) => setTitle(e.target.value);
const handleDescriptionChange = (e) => setDescription(e.target.value);
const fetchData = async () => {
const payload = {
"id": resource?.learning_object.id,
"name": title,
"description": description
}
console.log("aa")
try {
await mecredApi.put(`/learning_objects/${resource?.learning_object.id}.json`, payload, {
headers: {
"access-token": token,
"token-type": "Bearer",
client: client,
uid: uid,
Expires: 0,
},
});
setOpenSuccess(true)
} catch (error) {
// Tratar erros, se necessário
console.error('Erro ao enviar dados:', error);
}
};
const ModalSucess = ({ open, onClose }) => {
return (
<Modal open={open} onClose={onClose} className="grid place-items-center"
slotProps={{
backdrop: {
sx: {
backgroundColor: "rgba(0, 0, 0, 0.3)", // Ajuste a opacidade conforme necessário
},
},
}}>
<div className="flex flex-col justify-center bg-ice-HC-dark p-5 rounded">
<p className="text-xl justify-center flex text-darkGray-HC-white-underline mb-2">
Recurso editado com sucesso!
</p>
<div className="flex flex-row mt-2 justify-center gap-3">
<button
className="text-sm text-darkGray-HC-white-underline border-main rounded-lg normal-case font-bold bg-ice-HC-dark hover:bg-ice-HC-dark-hover"
onClick={() => onClose()}
>
OK
</button>
</div>
</div>
</Modal>
);
};
return (
<Modal
open={open}
onClose={onClose}
className="grid place-items-center"
>
<div className="bg-ice-HC-dark p-6 rounded-lg">
<ModalSucess open={openSuccess} onClose={() => setOpenSuccess(false)}/>
<div className="flex justify-center mb-4">
<p className="text-darkGray-HC-white-underline text-xl font-bold ">Editar recurso</p>
</div>
<FieldLabel
name="Título do Recurso*"
error={(!title)}
/>
<CustomTextField
multiline
fullWidth
value={title}
placeholder={"Ex: Jogo Virtual sobre os Biomas do Brasil"}
onChange={handleTitleChange}
helperText={<div className=" w-full justify-end flex">
{title.length}/100
</div>}
error={(title.length > 100) || (!title)}
className="mb-5"
sx={{
"& .MuiOutlinedInput-input::placeholder": {
color: "var(--darkGray-HC-white)",
opacity: 0.5,
},
}}
/>
<FieldLabel name="Descrição geral do Recurso*" error={(!description)} />
<CustomTextField
multiline
rows={5}
fullWidth
value={description}
placeholder={"Quais assuntos são contemplados neste recurso? Para quais objetivos este recurso pode ser destinado?"}
onChange={handleDescriptionChange}
helperText={<div className=" w-full justify-end flex">
{description.length}/1500
</div>}
error={(description.length > 1500) || (!description)}
className="mb-5"
/>
<div className="flex w-full justify-end p-3">
<Button
onClick={() => { setEditOpen(false) }}
type="button"
variant="text"
className="normal-case w-36 text-base text-darkGray-HC-white-underline font-bold mr-2 outline outline-1 outline-ice-HC-white hover:bg-lightGray-HC-white hover:text-darkGray-HC-dark-underline"
>
Fechar
</Button>
<Button
onClick={() => fetchData()}
type="submit"
className="border-turquoise-HC-white w-36 rounded-lg hover:bg-darkTurquoise-HC-dark bg-turquoise-HC-white text-base text-white-HC-dark-underline hover:text-white-HC-underline font-bold normal-case flex"
variant="outlined"
>
Continuar
</Button>
</div>
</div>
</Modal>
)
}
\ No newline at end of file
......@@ -137,7 +137,7 @@ export default function InfiniteScrollCards({ setMecLoading, data, searchClass,
avatar={item["publisher"]["avatar"]}
image={item["thumbnail"]}
type={item["object_type"]}
updated_at={item["updated_at"]}
updated_at={item["created_at"]}
/>
))}
</div>
......
......@@ -156,6 +156,7 @@ export default function ProfileResources({ id, idLogin }) {
updated_at={resource?.updated_at || resource.learning_object?.updated_at}
homologa={resource?.status}
setUniqueResources={setUniqueResources}
resource={resource}
/>
))}
</div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment