Added thesis assignment format

This commit is contained in:
2025-10-06 20:55:20 +02:00
parent 155fabc4b9
commit c1e7885677
2 changed files with 44 additions and 2 deletions

27
data.js
View File

@@ -69,6 +69,16 @@ let steps = {
} }
} }
}, },
assignment: {
title: "Jak vložit zadání?",
layout: assignment_layout,
result: {
format: "empty"
},
finalize: (result) => {
result.include_pdf = result.format === "external";
}
}
} }
const faculties = { const faculties = {
@@ -155,6 +165,15 @@ const pronouns_en = {
} }
} }
const assignment_formats = {
"empty": {
name: "Vložit do dokumentu prázdnou stránku.\nTuto stránku poté nahradíte podepsaným zadáním."
},
"external": {
name: "Vložit do dokumentu zadání ve formě PDF."
}
}
const typst_header = `#import "template/template.typ": * const typst_header = `#import "template/template.typ": *
#show: tultemplate2.with( #show: tultemplate2.with(
@@ -166,8 +185,8 @@ const typst_header = `#import "template/template.typ": *
author_pronouns: "{author_info.pronouns}", author_pronouns: "{author_info.pronouns}",
<collaborators.has_supervisor: supervisor: "{collaborators.supervisor_name}", <collaborators.has_supervisor: supervisor: "{collaborators.supervisor_name}",
><collaborators.has_consultant: consultant: "{collaborators.consultant_name}", ><collaborators.has_consultant: consultant: "{collaborators.consultant_name}",
> citations: "citations.bib", ><assignment.include_pdf: assignment: "assignment.pdf",
assignment: "zadani.pdf" > citations: "citations.bib"
) )
= Nadpis = Nadpis
@@ -229,6 +248,10 @@ async function generate_zip() {
out_zip.file("thesis.typ", generate_template()); out_zip.file("thesis.typ", generate_template());
if(!steps.assignment.result.include_pdf) {
out_zip.remove("assignment.pdf");
}
return await out_zip.generateAsync({ type: "blob" }); return await out_zip.generateAsync({ type: "blob" });
} }

19
ui.js
View File

@@ -136,6 +136,25 @@ async function collaborators_layout(content, result) {
.finish()); .finish());
} }
async function assignment_layout(content, result) {
if(!Object.keys(assignment_formats).includes(result.format)) {
document.querySelector("#next-button").disabled = true;
}
let buttons = new ButtonListBuilder(Object.keys(assignment_formats))
.should_be_pressed((key) => result.format == key)
.modify((b, key) => b.class("wide").text(assignment_formats[key].name))
.on_click((key) => {
result.format = key;
document.querySelector("#next-button").disabled = false;
})
.finish();
for(const button of buttons) {
content.appendChild(button);
}
}
async function run() { async function run() {
startbutton.style.cursor = "auto"; startbutton.style.cursor = "auto";
startbutton.disabled = true; startbutton.disabled = true;