This is a small specification which describes the ChalkUp application.
ChalkUp is the software which is used for management of checklists (surveys or questionnaires).
ChalkUp have two UI parts:
For saving data ChalkUp core uses a relational database. The database consists of following tables:
CREATE TABLE questionnaire ( id INT PRIMARY KEY NOT NULL, org_id INT NOT NULL, title longtext, json longtext, template longtext, createdAt DECIMAL(13,0) NOT NULL, createdBy INT NOT NULL, updatedAt DECIMAL(13,0) NOT NULL, updatedBy INT NOT NULL, deletedAt DECIMAL(13,0) NOT NULL, deletedBy INT NOT NULL, TEMPORARY INT DEFAULT 0 );
idorg_idtitlejsontemplatecreatedAtcreatedByupdatedAtupdatedBydeletedAtdeletedBytemporaryThe qnrresult table contains information about questionnaires which are already filled out.
CREATE TABLE qnrresult ( id INT PRIMARY KEY NOT NULL, org_id INT NOT NULL, qnr_id INT NOT NULL, title longtext, qnrJson longtext, resJson longtext, createdAt DECIMAL(13,0) NOT NULL, createdBy INT NOT NULL, updatedAt DECIMAL(13,0) NOT NULL, updatedBy INT NOT NULL, deletedAt DECIMAL(13,0) NOT NULL, deletedBy INT NOT NULL );
idorg_idqnr_idid of the questionnaire on which is this result basedtitleqnrJsonquestionnaire table using the qnr_id, but sometimes it is not possible because the questionnaire was deleted or it could be changed in the meanwhile. So the better strategy would be to save the questionnaire's JSON in the moment the result of the questionnaire is completed. resJsoncreatedAtcreatedByupdatedAtupdatedBydeletedAtdeletedByThe REST API is used by both: the web UI and mobile application.
TODO: describe the REST API here
ChalkUp web UI should be realized on the base of Angular framework.
Screens:
The list screen is the first screen of the web application.
The list screen is used to:
This screens is used to edit questionnaires details.
The editable fields are:
Also the details screen contains buttons to delete and copy the selected questionnaire.
A list screen for questionnaire results.
The list contains following columns:
It should be possible to filter entries by:
The following operations should be possible:
In the later versions maybe it would make sense to have also the printing functionality on the list screen.
Details screen for one result (filled out questionnaire).
The details screens should have the following fields:
On this screen it should be possible to show and print the results of the questionnaire.
Because we use Form.io for formulars, the results can be represented as JSON and as rendered form. Also, to print results, we should use the JRServer. The printing template URL can be fetched from the questionnaire table (TODO: think about the solution for the problem if the questionnaire is already deleted).
The mobile app is used by “field workers” which can fill out the surveys.
The app consists of following screens:
Necessary things which should be developed:
This screen contains the list of already filled questionnaires. The list contains :
The screen contains also an “Add” button. If the user click on this button, the “Create new result” screen should be shown.
LATER: the screen should have the “Search” functionality with at least two fields: title and date.
On this screen the user should have the possibility to select the questionnaire to fill out and to type in the title of the result. The value of the title should be initialized with the name of the questionnaire.
This screen is normally not one screen, but the series of the screens, where one screen displays one question of the survey.
Result details contains the title and date of the result.
LATER: it should be possible to view the result in form of HTML (using Form.io) and PDF.