Přeskočit na hlavní obsah

v1.1.3 Tasks interface

· 3 minuty čtení
John Renfrew
Programmer and data architect

Version 1.1.3 internal test release

  • progress on scope documentation, which is mostly complete and released as v1.0
  • inital clickable demo on the Tasks interface
  • starter for discussion on how some of the parts need to work with each other

Tasks interface

This is a pseudo-live clickable demo, the code equivalent of wireframes, which serves as a design exploration, decision tree, and technology test all-on-one. From the placment list this outlines the behaviour after a students selects Tasks.

A list of Tasks is presented, with indicators for deadline date, late, and locked. If a user selects a task row, it replaces the placement list with the survey view in place — no page navigation, top navigation stays but back nav button changes label and action. If there is an stored data returned from the query initiated on clicking the row, client code always injects authoritative values for these fields, overriding anything in locally stored data.

portfolio

The student enters data or selects form a presented choice, and at the footer are three buttons. Save will perform and explicit commit of data (back to FileMaker). Clear will remove all current values from form. Submit will show dialog confirming action, and then both save data and add the finalCommit value. For students, all buttons are hidden when isLocked === true.

portfolio

Autosave

The Student + open state only — record is debounced at 1500ms after last keystroke to trigger autosave. No autosave for supervisor, marker, or any finalised record. (autocheck needs to only be triggered if there is data, so after clear, it will not overwrite savedData ??)

SurveyJson Hidden Fields

  • studentID, moduleID, superID remain as hidden questions inside the surveyJson
  • This preserves the FileMaker Creator approval workflow — question authors can test conditions without code

Because this is a combination of React and SurveyJS, there are behaviours that can be driven from the client as well as the JSON definition. They work at different levels: SurveyJS JSON conditions handle question-level behaviour, React/client code handles the survey-level behaviour in TaskClient.tsx - this the important one for the locked/finalised case (this needs to be always for external, and for student if locked) — which puts the entire SurveyJS instance into a read-only display mode regardless of any individual question conditions. No inputs are rendered, everything becomes plain text.

if (isStudent && task.state !== "locked" || isExternal) {
survey.mode = "display";
}

The desired behaviour for supervisor and marker requirements need finalising, and a decision about visibility to students of supervisor and/or marker comments.
A TEMPLATE Task is created, with one of each role of question and notes about visibility conditions. Creators start from there and duplicate questions as required, which keeps the settings & conditions. This is easy because you can simply change th question type from the drop-down.

Question Naming Conventions

PrefixWhoBehaviour
Q1, Q2 etcStudent questionsenableIf: "{superID} empty"
SQ1, SQ2 etcSupervisor questionsenableIf: "markerID} empty", visibleIf: "{superID} notempty"
MQ1, MQ2 etcMarker questionsvisibleIf: "{markerID} notempty"
studentID, moduleID, superID, markerIDHidden carriersAlways injected by client