limited latex support

This commit is contained in:
2024-09-18 21:50:40 -06:00
parent 31f39b8193
commit 395e9934e6
12 changed files with 195 additions and 50 deletions

View File

@@ -1,7 +1,11 @@
import { NextRequest, NextResponse } from "next/server";
import { axiosClient } from "@/services/axiosUtils";
import { withErrorHandling } from "@/services/withErrorHandling";
import { AxiosResponseHeaders, RawAxiosResponseHeaders } from "axios";
import {
AxiosResponseHeaders,
isAxiosError,
RawAxiosResponseHeaders,
} from "axios";
const getUrl = (params: { rest: string[] }) => {
const { rest } = params;
@@ -27,7 +31,9 @@ const getNextUrl = (
const nextLink = links.find((link) => link.includes('rel="next"'));
if (!nextLink) {
console.log("could not find next url in link header, reached end of pagination");
console.log(
"could not find next url in link header, reached end of pagination"
);
return undefined;
}
@@ -58,9 +64,8 @@ export async function GET(
url.toString()
);
if(!Array.isArray(firstData))
{
return NextResponse.json(firstData)
if (!Array.isArray(firstData)) {
return NextResponse.json(firstData);
}
var returnData = firstData;
@@ -82,7 +87,6 @@ export async function GET(
}
return NextResponse.json(returnData);
} catch (error: any) {
return new NextResponse(
JSON.stringify({ error: error.message || "Canvas GET request failed" }),
@@ -97,18 +101,24 @@ export async function POST(
{ params }: { params: { rest: string[] } }
) {
return withErrorHandling(async () => {
const url = getUrl(params);
const body = await req.json();
let response;
try {
const url = getUrl(params);
const body = await req.json();
const response = await axiosClient.post(url.toString(), body);
response = await axiosClient.post(url.toString(), body);
const headers = proxyResponseHeaders(response);
return new NextResponse(JSON.stringify(response.data), { headers });
} catch (error: any) {
return new NextResponse(
JSON.stringify({
if (isAxiosError(error)) {
console.log(url.toString(), body);
console.log("response data", JSON.stringify( error.response?.data));
console.log("is axios error");
}
return NextResponse.json(
{
error: error.message || "Canvas POST request failed",
}),
},
{ status: error.response?.status || 500 }
);
}

View File

@@ -135,7 +135,7 @@ function DraggableListItem({
href={getModuleItemUrl(courseName, moduleName, type, item.name)}
shallow={true}
className={
" border rounded-sm px-1 mx-1 break-all " +
" border rounded-sm px-1 mx-1 break-all mb-1 " +
" border-slate-600 bg-slate-800 " +
" block "
}

View File

@@ -15,9 +15,11 @@ import {
useAddAssignmentToCanvasMutation,
useCanvasAssignmentsQuery,
useDeleteAssignmentFromCanvasMutation,
useUpdateAssignmentInCanvasMutation,
} from "@/hooks/canvas/canvasAssignmentHooks";
import { Spinner } from "@/components/Spinner";
import { baseCanvasUrl } from "@/services/canvas/canvasServiceUtils";
import ClientOnly from "@/components/ClientOnly";
export default function EditAssignment({
moduleName,
@@ -79,10 +81,12 @@ export default function EditAssignment({
<AssignmentPreview assignment={assignment} />
</div>
</div>
<AssignmentButtons
moduleName={moduleName}
assignmentName={assignmentName}
/>
<ClientOnly>
<AssignmentButtons
moduleName={moduleName}
assignmentName={assignmentName}
/>
</ClientOnly>
</div>
);
}
@@ -100,13 +104,16 @@ function AssignmentButtons({
const { data: assignment } = useAssignmentQuery(moduleName, assignmentName);
const addToCanvas = useAddAssignmentToCanvasMutation();
const deleteFromCanvas = useDeleteAssignmentFromCanvasMutation();
const updateAssignment = useUpdateAssignmentInCanvasMutation();
const assignmentInCanvas = canvasAssignments.find(
(a) => a.name === assignmentName
);
return (
<div className="p-5 flex flex-row justify-end gap-3">
{(addToCanvas.isPending || deleteFromCanvas.isPending) && <Spinner />}
{(addToCanvas.isPending ||
deleteFromCanvas.isPending ||
updateAssignment.isPending) && <Spinner />}
{assignmentInCanvas && !assignmentInCanvas.published && (
<div className="text-rose-300 my-auto">Not Published</div>
)}
@@ -115,7 +122,7 @@ function AssignmentButtons({
disabled={addToCanvas.isPending}
onClick={() => addToCanvas.mutate(assignment)}
>
Add to canvas....
Add to canvas
</button>
)}
{assignmentInCanvas && (
@@ -127,6 +134,20 @@ function AssignmentButtons({
View in Canvas
</a>
)}
{assignmentInCanvas && (
<button
className=""
disabled={deleteFromCanvas.isPending}
onClick={() =>
updateAssignment.mutate({
canvasAssignmentId: assignmentInCanvas.id,
assignment,
})
}
>
Update in Canvas
</button>
)}
{assignmentInCanvas && (
<button
className="btn-danger"

View File

@@ -13,7 +13,6 @@ import {
useCanvasPagesQuery,
useCreateCanvasPageMutation,
} from "@/hooks/canvas/canvasPageHooks";
import { Spinner } from "@/components/Spinner";
import EditPageButtons from "./EditPageButtons";
export default function EditPage({

View File

@@ -18,7 +18,8 @@
/* monaco editor */
.monaco-editor-background,
.monaco-editor .margin {
background-color: #18181b !important;
background-color: #020617 !important;
/* background-color: #18181b !important; */
}
.monaco-editor { position: absolute !important; }
@@ -59,6 +60,19 @@ ol {
list-style-type: decimal;
padding-left: 1.5rem;
}
table {
@apply border-collapse border border-gray-700;
}
thead {
@apply text-lg ;
}
th, td {
@apply px-2 py-1 border border-gray-700;
}
hr {
@apply border-t border-gray-500 my-4;
}
@@ -70,6 +84,7 @@ blockquote {
code {
@apply font-mono text-sm bg-gray-800 px-2 py-1 rounded-md leading-tight inline-block;
}
p {
@apply mb-3;
}

View File

@@ -5,8 +5,8 @@ import { Suspense } from "react";
import { getQueryClient } from "./providersQueryClientUtils";
import { hydrateCourses } from "@/hooks/hookHydration";
import { dehydrate, HydrationBoundary } from "@tanstack/react-query";
import { ToastBar, Toaster } from "react-hot-toast";
import { MyToaster } from "./MyToaster";
import "katex/dist/katex.min.css";
export const metadata: Metadata = {
title: "Canvas Manager 2.0",