Jobs that are in state of PROCESSING or PENDING will be enqueued after
application restart so users that have had an uploaded file in PROCESSING or PENDING do not
need to manually re-upload the files again.
Decided to not use matomo for analytics.
The application is a single page.
Any statistics we want we can parse from the logs.
An issue #16 has been added to make the logs more parse friendly.
Added a simple file content validation to what files can be uploaded.
This should at least help users select the correct file type.
There is no server side validation and that is something we actually will need to implement
at some point.
Previously if a job failed and it's status was set to `JobStatus.FAILED` the uploaded
file was never removed. Which was the intended design. This was an omission.
Now if the job is set to FAILED, the uploaded file will be removed correctly.
This is to ensure that uploaded files do not persist in perpetuity on the file system.
FileMetadata will still be available in the DB (B.N. not the actual file).
Utilizing htmx to load and trigger relevant parts of the page.
`PENDING` and `PROCESSING` uploaded files now have a spinner to show that something
is happening behind the scenes.
Once a file is completed a trigger will be sent so the `Your Transcribed Files` section
will be updated with the new file.
Note: A side effect that needs addressing later is that the checkbox to select all transcribed files
stops working as intended. The side effect dispersal after a refresh of the page and the select all checkbox works.
User can still select multiple files with the checkboxes and download selected as intended.
I experienced some weird behavior when using webjars to get the dependencies of
bootstrap, bootstrap-icons, htmx. Opted to manually download and include the
files in the project instead.
All the files can be found under a folder called 3p with their respective subfolder.
Since we are going to production we should not make use of CDNs
For more information you can read https://blog.wesleyac.com/posts/why-not-javascript-cdn
Now uses webjars to take down the needed dependencies.
Also moved the javascript to its own file.
Changed the upload and output root so when developing you can more easily find the files.
Model folder is also changed to be consistent with other directory changes.
Users are no longer required to go from a login page and click on the application name to get to oauth login.
Transcribed files in the files management view are now sorted the same way as the uploaded file status.
The section that uses this class was not working properly due to the
missing overflow-y: scroll statement.
The idea was to only show 3 of the uploaded files at a time, when the overflow statement was missing
the other uploaded files where bleeding through and over the transcribed files section.
This should fix that issue so that the uploaded file section does not bleed over the transcribed section content.
Single sign on has been added, it works in the same fashion as the Scipro application.
Application no longer supports self registration of users.
Users can now upload the same file again if they want too.
UI SU logotype added, "look and feel" a la stockholm university.
UI improved feedback of the uploaded files, now also shows when a file was uploaded together with the status
UI improved feedback of the transcribed files, files are grouped in collapsable divs based on the source file.
The transcribed files section also shows when the files where created which are based on the upload of the source file,
this to help differentiate if the user uploaded the same source file.
Bulk download zip file will have a folder structure resembling the grouped structure from the transcribed files section,
transcribed files belonging together will be in their correct folder.
Increased the varchar limit from the default value to a more appropriate value to handle long file names or paths.
When cleaning up files the application now cleans up empty folders when needed.
The application needs a bit more internal improvements and polish, for example in some places the application
both uses java.io and java.nio it would be better to use java.nio across the board.
This can be done at a later date.