1
0
Fork 0
mirror of https://codeberg.org/Mo8it/AdvLabDB.git synced 2024-12-20 23:41:20 +00:00
AdvLabDB/advlabdb/templates/docs/admin.jinja.html
2023-11-04 21:38:15 +01:00

489 lines
19 KiB
HTML

<h2>Welcome</h2>
<p>Welcome to the administration part of AdvLabDB.</p>
<p>
Disclaimer: The database design behind AdvLabDB with its tables is not trivial.
But it should be very efficient after understanding it because it follows database design patterns to avoids duplications.
</p>
<p>
Some tables like <a href="#part_student">Part Student</a> and <a href="#group_experiment">Group Experiment</a> are not intuitive at the first moment.
The table <a href="#part_student">Part Student</a> for example can be confused with the table <a href="#student">Student</a>.
Therefore, please <strong>read this documentation</strong> to understand all terms and relationships and familiarize yourself with this web interface.
</p>
<p>
In the first section, menu items are explained.
You can find some "How-To"s in the second chapter.
</p>
<h2>Menu items</h2>
<p>In this section, you will find explanations to each menu item on the upper navigation bar.</p>
<h3 id="home">Home</h3>
<p>
This is your home page.
Here, you find a table with the number of <strong>missing</strong> experiment marks for every assistant in your <a href="#active_semester">active semester</a>.
Assistants without missing experiment marks are not showed in the table.
</p>
<h3>Tables</h3>
<p>In this dropdown menu, you can find all tables of the database that you can administrate.</p>
<h4 id="student">Student</h4>
<p>
This table contains all students in the database, not only those in your <a href="#active_semester">active semester</a>.
</p>
<p>You can use the search bar at the top to search for a student by name or email address</p>
<p>
The table shows the <a href="#part_student">part students</a> of a student.
</p>
<p>You only have to create a student record in this table if the student is not in the database yet.</p>
<h5>Create/Edit</h5>
<ul>
<li>The student number is the number assigned to a student from the university (Martikelnummer in German).</li>
<li>The uni email is the email address from the university.</li>
<li>
The contact email is an optional email address that is preferred by the student.
If the uni and contact email are equal, only the uni email is stored.
</li>
<li>You can optionally enter the topic and work group of the student's bachelor thesis</li>
<li>The note field is free for you to enter any notes related to this student.</li>
</ul>
<h4 id="part_student">Part Student</h4>
<p>
This table shows all part student in your <a href="#active_semester">active semester</a>.
</p>
<p>
A part student is a <a href="#student">student</a> that is doing a <a href="#part">part</a> ("BS1"/"Bachelor of Science 1" for example).
</p>
<p>
Lets say the student Max is doing his second lab practicum in his bachelor of science program (part 2 in BS).
Max would have only one record in the table <a href="#student">Student</a> anyway.
Lets call the part of the first practicum "BS1" and that of the second practicum "BS2".
He should have a Part Student record with the part "BS1", but he needs a second record for the part "BS2" now.
Therefore, you would create a new Part Student record that refers to the Student record and part "BS2".
</p>
<p>
You can put Max in an existing <a href="#group">group</a> or create one containing him later.
The group has to be compatible with the part!
</p>
<p>The table also shows the experiment marks of the student in this part.</p>
<p>
Every part student has a final part mark shown in this table.
The final part mark is calculated as explained in <a href="#semester_experiment">Semester Experiment</a>.
Normally, this final part mark is the one relevant for the transcript of records of students.
</p>
<h4 id="group">Group</h4>
<p>
This table shows all groups in your <a href="#active_semester">active semester</a>.
</p>
<p>
A group contains multiple <a href="#part_student">part students</a> that do <a href="#group_experiment">group experiments</a> together.
</p>
<h5>Conditions</h5>
<ul>
<li>A group can not be empty.</li>
<li>
The <a href="#part">part</a> of all <a href="#part_student">part students</a> in a group must have the same <a href="#program">program</a> which will be the program of the group.
</li>
<li>
Every group has a unique set of <a href="#program">program</a> and number (BS and 1 for example) in a semester.
Both are assigned automatically on creation.
</li>
<li>
A <a href="#part_student">part student</a> has to be in a group to be able to do experiments.
But a student can be alone in a group.
</li>
</ul>
<h4 id="group_experiment">Group Experiment</h4>
<p>
This table shows all group experiments in your <a href="#active_semester">active semester</a>.
</p>
<p>
A group experiment is a <a href="#semester_experiment">semester experiment</a> that is done by a <a href="#group">group</a>.
</p>
<p>
This table also shows the related experiment marks of the <a href="#part_student">part students</a> in the related <a href="#group">group</a>.
</p>
<p>
The column "Experiment Marks Missing" is automatically set to true if all related experiment marks are set by the assistant(s) of the related <a href="#semester_experiment">semester experiment</a>.
</p>
<p>
After creating a group experiment, an <a href="#experiment_mark">experiment mark</a> is created for every <a href="#part_student">part student</a> in the related <a href="#group">group</a>.
But an <a href="#experiment_mark">experiment mark</a> can be created manually if needed.
</p>
<h5>Create</h5>
<ul>
<li>
Choose a group and a semester experiment from your <a href="#active_semester">active semester</a>.
</li>
<li>
You can additionally directly add two <a href="#appointment">appointments</a> for this group experiment.
But you can also create <a href="#appointment">appointments</a> manually later in the <a href="#appointment">Appointment</a> table.
</li>
<li>
You can add an optional note to the group experiment, but this note is primarily meant for assistants that are responsible for the related <a href="#semester_experiment">semester experiment</a> to add their notes to this group experiment ("Protocol was submitted" for example).
</li>
</ul>
<h4 id="appointment">Appointment</h4>
<p>
This table shows all appointments in your <a href="#active_semester">active semester</a>.
</p>
<p>
You can create an appointment for a <a href="#group_experiment">group experiment</a> by specifying a date which can be changed by the assistant(s) of the related <a href="#semester_experiment">semester experiment</a> after communicating with the students.
The date is only a first proposal.
</p>
<p>
A "special" appointment means that the students prefer the appointment to be in the non-lecture period of the semester.
This is not enforced internally.
</p>
<p>
If the related <a href="#semester_experiment">semester experiment</a> only has one assistant, then this assistant is assigned automatically during creation.
Otherwise, you have to assign one responsible assistant.
</p>
<h4 id="experiment_mark">Experiment Mark</h4>
<p>
This table shows all experiment marks in your <a href="#active_semester">active semester</a>.
</p>
<p>
An experiment mark is assigned to a <a href="#part_student">part student</a> for one <a href="#group_experiment">group experiment</a>.
Although students work in groups, they get individual marks, not group marks.
</p>
<p>
After creating a <a href="#group_experiment">group experiment</a>, an experiment mark is created for every <a href="#part_student">part student</a> in the related <a href="#group">group</a>.
But an experiment mark can be created manually if needed.
</p>
<p>
Experiment marks consist of oral and protocol marks and are assigned by the responsible assistant(s).
But admins can change marks, too.
The columns "Assistant" and "Admin" keep track of the last assistant or admin that changed the experiment mark.
</p>
<p>
The column "Final Experiment Mark" shows the automatically calculated student's final mark for this experiment.
This mark is calculated with respect to the weights of the related <a href="#semester_experiment">semester experiment</a>.
</p>
<h4 id="experiment">Experiment</h4>
<p>This table shows all experiments, not only in your active semester.</p>
<p>
Experiments that are marked as "active" will be present in new semesters.
Make sure to active/deactivate experiments before creating a new semester.
</p>
<h4 id="semester_experiment">Semester Experiment</h4>
<p>This table shows the semester experiments in your active semester.</p>
<p>
A semester experiment is an <a href="#experiment">experiment</a> that takes place in a specific <a href="#semester">semester</a>.
</p>
<p>
Assistants and mark weightings are assigned to these semester experiments.
These assignments are transferred to the next semester if the related <a href="#experiment">experiment</a> was active before creating the new semester.
</p>
<p>Mark weightings consist of oral, protocol and final weightings.</p>
<p>
The oral weighting and protocol weightings are between 0 and 1 and have to add up to 1.
By default, these weightings should both be 0.5, but you can for example have an oral weighting of 0.25 and a protocol weighting of 0.75.
</p>
<p>
The final weighting has to be a value between 0 and 1.
By default, its value should be 1.
But you can choose a value lower than 1 in case an experiment is easier than others.
</p>
<p>
The final part mark for a student is calculated by summing the following expression over <code>i</code> and then dividing through the sum of <code>f_i</code>:
</p>
<p>
<code>f_i * (ow_i * o_i + pw_i * p_i)</code>
</p>
<ul>
<li>
<code>i</code> is the index of a semester experiment.
The sum over <code>i</code> is done only over the semester experiments that a student has in that part.
</li>
<li>
<code>f_i</code> is the final part mark for the semester experiment <code>i</code>.
</li>
<li>
<code>ow_i</code> is the oral weighting.
</li>
<li>
<code>o_i</code> is the oral mark.
</li>
<li>
<code>pw_i</code> is the protocol weighting.
</li>
<li>
<code>p_i</code> is the protocol mark.
</li>
</ul>
<p>
The result after the division is rounded to an integer using the "round half up" strategy.
This means that <code>x.5</code> is always rounded up to <code>x+1</code>.
Values between <code>x.5</code> and <code>x+1</code> (closed interval) are rounded up to <code>x+1</code>.
Values higher than <code>x</code> and lower than <code>x.5</code> are rounded down to <code>x</code>.
</p>
<p>
In case you change the weightings during a semester (some marks are already set), all part and experiment marks will be automatically updated.
</p>
<h4 id="semester">Semester</h4>
<p>This table shows all semesters.</p>
<p>
Before creating a new semester, make sure to read all notes in the form that shows up after pressing the "Create" button.
</p>
<p>
You can and should set a semester as "done" by clicking on the edit button near that semester, then clicking the "done" checkbox and then "Save".
</p>
<p>
Setting a semester as done prevents assistants from changing or even seeing marks in this semester.
Setting a semester as done sets older semesters as done, too.
Only set a semester as done if all marks in that semester and all previous semesters are already set.
</p>
<h4 id="part">Part</h4>
<p>This table shows the parts in your active semester.</p>
<p>
A part consists of a <a href="#program">program</a>, a <a href="#semester">semester</a> and a number.
For example, if students in the bachelor of science program (BS) must absolve two lab courses, then you would have the parts BS1 and BS2.
But maybe the university only offers part BS2 every second semester.
Therefore, a part is coupled to a semester.
</p>
<h4 id="assistant">Assistant</h4>
<p>This table shows all assistants.</p>
<p>
To deactivate an assistant, you have to deactivate their <a href="#user">user</a> account.
</p>
<p>
You can assign <a href="#semester_experiment">semester experiments</a> to assistants either in this table or in the semester experiments table.
</p>
<h4 id="admin">Admin</h4>
<p>This is a read only table that shows current admins.</p>
<h4 id="user">User</h4>
<p>This table shows all users.</p>
<p>A user can have either an admin or assistant role (or both).</p>
<p>
Make sure to deactivate users if they don't require access to the database anymore.
Deactivated users can't login anymore.
</p>
<p>
Further details can be read under <a href="#user_settings">User settings</a>.
</p>
<h4 id="program">Program</h4>
<p>This table shows all programs.</p>
<p>
A program is a university program.
You can for example have the programs BS for bachelor of science, BE for bachelor of education, MS for master of science and so on.
It is recommended to choose short labels for programs.
</p>
<h3 id="import">Import</h3>
<p>
Allows you to import data for your active semester from a file.
Visit the importing page for more information.
</p>
<h3 id="actions">Actions</h3>
<p>
Run one or multiple actions like creating a database backup.
The available actions should be explained on the page.
</p>
<h3 id="analysis">Analysis</h3>
<p>
Run an analysis and plot the results.
More information on the page itself.
</p>
<h3 id="docs">Docs</h3>
<p>This is a link which leads you to this page.</p>
<h3 id="user_settings">User settings</h3>
<p>
In the user settings, You can change your active semester, user information and password.
Don't forget to click on <em>Save</em> after changing any option.
</p>
<h4 id="active_semester">Active semester</h4>
<p>
An active semester is the semester you are working in.
All shown experiment marks and appointments are in your active semester.
By default as a new assistant, your active semester should be the latest semester.
</p>
<p>
If you see a warning that you are in an old semester, then you should change your active semester in the user settings.
You should only work in an old semester if there are still experiment marks to be set in the old semester.
</p>
<h4>User information</h4>
<p>
Make sure that the fields <em>Phone Number</em>, <em>Mobile Phone Number</em>, <em>Building</em> and <em>Room</em> are filled and up to date, especially if you are a new assistant.
</p>
<h4>Password</h4>
<p>
You can generate a new random password by checking the corresponding checkbox and then clicking on <em>Save</em>.
You will be then logged out.
Your new password is displayed above the login fields.
Make sure that you save the password in a safe place.
Using a free open source password manager like <a href="https://bitwarden.com/" target="_blank" rel="noopener">Bitwarden</a> or <a href="https://keepassxc.org/" target="_blank" rel="noopener">KeepassXC</a> is recommended.
</p>
<p>If you forget your password, you can reset it using the CLI on the server.</p>
<h2>How-Tos</h2>
<h3>Start a new semester</h3>
<p>Here is a list of tables that one has to visit when creating a new semester:</p>
<ol>
<li>
Program: Make sure that the programs are up to date. Usually, you will only create new programs when first creating the database for the first time.
</li>
<li>
User: Create a user for every new assistants.
Old assistants should already be in the database, just make sure that their users are activated.
</li>
<li>
Experiment: Create possibly new experiments.
Old experiments should already be in the database, just make sure that they are activated.
</li>
<li>
Semester: Create a new semester.
Read the notes in the form for creating a semester.
Possibly set old semester as done.
</li>
<li>
Part: The parts from the last semester should be duplicated in the new semester (if you don't uncheck the checkbox "Transfer parts" on creating a new semester).
You can add or remove a part from the new semester if required.
</li>
<li>
Semester Experiment: Semester experiments should be duplicated in the new semester (if you don't uncheck the checkbox "Transfer experiments" on creating a new semester).
Make sure that all are present.
Possibly create new ones.
Check the assigned assistants and possibly assign new ones or reassign old ones.
</li>
<li>
Import: Skip the next steps if you want to use the import functionality.
In that case, create an import file and import it.
Check that everything is imported correctly afterwards.
</li>
<li>Student: Add students that are new to the database.</li>
<li>Part Student: Add part students for all students that are doing a part in this semester.</li>
<li>Group: Create groups for part students.</li>
<li>
Group Experiment: Create new group experiments to assign semester experiments to groups.
The form allows you to directly add up to two appointments.
</li>
<li>Appointment: Check appointments and possibly add missing ones.</li>
</ol>
<h3>Tables</h3>
<h4>Create a record</h4>
<p>
You can create a record in almost all tables.
To do so, click on the "Create" button at the top of a table.
Then, fill the form and click on the "Save" button.
Required fields are marks with a red star near their label.
</p>
<h4>Edit a record</h4>
<p>
You can edit records of almost all tables.
To do so, click on the pen symbol on the left of a record.
Then, fill the form and click on the "Save" button.
Required fields are marks with a red star near their label.
</p>
<h4>Show record details</h4>
<p>
Almost all tables have an eye symbol near a record which shows details for that record.
Some fields in this view are not shown in the table itself for horizontal space reasons.
</p>
<h4>Delete records</h4>
<p>
Almost all tables have a trash can symbol near records to delete them.
Deleting a record is not recommended and often not possible because of database dependencies.
If you really want to delete a record, then try to delete it by clicking on the trash can symbol.
If you get any errors related to some dependency, then delete dependent records when you are sure about it and then try to delete the record again.
</p>
<h4>Go to record</h4>
<p>
If a record in a table contains records of other tables, then these records are highlighted as a link.
Clicking on a record link takes you to its details.
You can edit this record then by clicking on the edit button at the top if needed.
</p>
<h4>Sort by column</h4>
<p>
You can sort a table by a column by clicking on the column label if it is highlighted as a link.
Clicking on the column label again sorts in descending order.
</p>
<h4>Apply table filter</h4>
<p>
Some tables have filters.
Those table have a "Add Filter" button at the top which allows you to choose a filter to apply.
</p>
<p>You can apply multiple filters at once!</p>
<h4>Export table</h4>
<p>
Most tables can be exported. Those tables have an "Export button" at the top which exports the table as a CSV file.
</p>
<p>Exporting a table respects the applied filters.</p>