Skip to main content

mDIS For Developers (ICDP internal - scratch)


mDIS For Developers (ICDP internal - scratch)

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"open in new window 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, keys enableSchemaCache and enableQueryCache 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 2018open in new window.

  • 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-operatoropen in new window.

  • 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.

.


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 = -> O0
Illegal1 = -> O0
Consolas/Inconsolata
Consolas/Inconsolata


Back to mDIS For Developers or ICDP internal