mDIS For Developers (ICDP internal - scratch)
mDIS For Developers (ICDP internal - scratch)
Related Pages
mDIS For Developers
ICDP internal
Scratch Area
Questions from 2019
Older Questions for mDIS training Dec 2019
Not ordered or ranked
Q: Template manager: "Add Behaviors" feature of the Generated Code is in Base*.php files. Could it be overridden? (= Should it be copied/moved into derived classes?)
Q: Template manager: How to add "Online help" to the Templates-manager GUI? (At least links to documentation)
Q: Maintenance: What is safe to delete in the
web/
directory?Q: Yii Asset compression: Is it useful to us? We do not use it, and there are no plans to do so.
Q: How to adapt the Vuetify JS theme? Is it a good idea at all to attempt to change the theme?
Q: How to learn and make better use of the "Charts.js" JS library?
Q: Vue 3: What's new? (No more work on Vue 2?) See various talks and discussions on the internet, e.g. "Vue 3 Beta" on Hacker News.
@vue/cli v3 -> v4 major upgrade possible?Yes, I simply did it on my dev workstation.
Feature-requests
Not prioritized or ordered
Feature: Export to "GFZ FTP Server" feature.
Feature: Export to CoreWall (create exchange file, XML-based interchange format)Feature: Export to PSICAT (create exchange file, XML-based interchange format).
Barcode scanner integration TBC. At this time, only an ICDP feature.Feature: Special-Purpose File-Importers, Complex Device integration TBC Corescanners, Cameras, etc. ICDP only.
Feature: Delete many rows in batches. "Select All" checkbox as a convenience feature for deleting records. At this time, Adminer has to be used, and a "DELETE FROM WHERE" SQL Query.Feature: Support password management by users themselves.
Feature: HTTPS, Progressive Web App (PWA) support (Is it really important for mobile users?)
Maintenance: Fine-tune caching settings: see backend/config/web.php. We use
\yii\caching\FileCache
for code generation; for database caching, keysenableSchemaCache
andenableQueryCache
should be set to true in a production environment. Browser-side caching is another can of worms.Feature: DB Schema design.
- Renaming existing forms and models (with low-level DB tools and IDE) is hard.
Using the CSV Importer correctly, customizing it, and using it together with Adminer's Importer.
Using version control (git) efficiently.
- Rapid growth of git repo with .php files generated by mDIS Templates-manager.
- Q: What to add to file
.gitignore
? (Provide a recommendation or a prepopulated.gitignore
template), what to add to .gitattributes. - Coupling with other GitLab features: for future mDIS installations, keep a feedback channel to the main development site open.
- Settings and notable changes in file
.git/config
; removal of.git
folder (implications).
Docs: Use Continuous Integration features of GitLab to trigger a rebuild and reindex, publish rendered HTML to the web server.
Missing documentation
TBC Need to document this
Template manager: Documentation of
DefaultFromParentBehavior
,DefaultFromSiblingBehavior
,SiblingsLimitBehavior
,TemplateManagerBehaviorInterface
.Yii routing:
- General knowledge is important for API calls.
Dashboard: (its configuration and the widgets) - documentation, tips + tricks.
DB-based/Model-based validation vs Form validation: even more fine points.
Browser validation: Input Types (built-in to the browsers).
Browser Validation vs JavaScript Validation.
JavaScript validation: principles and implementation.
- How Vue does it (required fields).
- (Validation of custom list values / selection boxes).
- (Autocompleters).
See also older wiki page from 2018.
Data File Upload: Filesystem I/O, Event Processing.
Document DB Schema design: Primary Keys, Foreign Keys, Relations, Pseudo-Autoincrement cols.
Development:
yii cg
task, API Calls.Template manager: Naming convention: when to use Kebab-case, CamelCase, snake_case, etc.
Development: Anatomy of a Webpage rendering (walkthrough all API calls necessary to render an input form, step-by-step, perhaps with the remote debugger).
Development: Browser Local Storage: What it is, how it is used by mDIS, when is cache busting (refresh) necessary.
Documentation: See sections marked "TBC" in viewer-operator.
Document caching: see backend/config/web.php. Server-side caching; browser-side caching is another can of worms.
Testing TO DO
Ideas for Unit Tests and Integration Tests
- Use more assertions in some of the production code.
- Also, write some end-to-end tests with Codeception.
- Document how they can be run.
- To get a quick look at the current state of the app/stack (assert that MySQL is up, PHP/Apache up, can log in).
- To check important features of the app (assert that data tables are populated).
- Write some load tests: many connections, handle large imports, ...
- Write GUI tests for GUI-based workflows.
ICDP Configuration TO DO
Note
Change management
Development best practices for working in a distributed team.
- Periodic recordings for monitoring, baselining (Nagios?).
- Extra log for important configuration changes.
VirtualBox configurations: Reference Implementation (write a Vagrantfile)Specify Vagrant benefits (setting up, etc.)
Hardware/Device configurations.
- Same items as VirtualBox configurations (see above).
- But also:
- Database of devices (collect invoices, warranty info...).
Development Environments.
Same items as VirtualBox configurations (see above).
But also:
- Specific hacks and setups (coding style - avoid messy diffs due to IDE autoformatting whitespace).
- .editorconfig file.
- .env files.
- .gitignore files.
Git conventions (technical and social).
Fringe Ideas.
- Collect ideas about potential premium/open-source features of mDIS.
- Study Vuetify in depth.
- Follow "Material Design guidelines" - needed to understand Vuetify - Iconset Library and how to use it. We don't use the guidelines yet, but it would be cool if we did.
.
Font test
Major fonts used in this document.
"Lato" - Text Body Font
"Consolas" - Code Font
Side-by-side comparison with test string Illegal1 = -> O0
:
Lato:
Illegal1 = -> O0Illegal1 = -> O0
Consolas/Inconsolata
Consolas/Inconsolata
Back to mDIS For Developers or ICDP internal