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 be overridden? (= Should it be copied/moved into derived classes?)

  • Q: Template manager: How to add "Online help" to Templates-manager GUI? (At least links to documentation)

  • Q: Maintenance: What is safe to delete in web/ directory?

  • Q: Yii Asset compression: Is it useful to us? We do not use it, no plan 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 "Charts.js" JS library?

  • Q: Vue 3: what's new? (no more work on vue2?) . See various Talks and discussions on the internet, e.g. "Vue 3 Beta" (opens 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 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: finetune caching settings: see backend/config/web.php. We use \yii\caching\FileCache for code generation, for database caching, keys enableSchemaCache, 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, 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 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 webserver

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 listvalues / selection boxes)
    • (autocompleters)
  • See also older wiki page from 2018 (opens 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, APICalls

  • Template manager: Naming convention: when to use Kebab-case, CamelCase, snake_case etc

  • Development: Anatomy of a Webpage rendering (walkthrough all APIcalls 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 (opens 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 on the current state of the app/stack, (assert that mysql is up, php/apache up, can login)
    • 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

WARNING

Change management

Development best practices for working i n 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 infos...)

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 teststring Illegal1 = -> O0:

Lato:
Illegal1 = -> O0
Illegal1 = -> O0
Consolas/Inconsolata Consolas/Inconsolata


back to mDIS For Developers or ICDP internal