Title: Getting Started with QCMagritte
Speaker: Stefan Eggermont
Tue, August 19, 12:00pm – 12:30pm
Video Part1: https://www.youtube.com/watch?v=mKZUhPNWFyI
Video Part2: https://www.youtube.com/watch?v=vBPplUyDYyU
Description
Abstract: Magritte provides a nice way to describe your domain model and quickly build web components for your web application. QCMagritte offers you a.o. integration of Ajax, Bootstrap, user registration and dynamic support for multiple languages. Bring a laptop and see how to build a well-structured working web application in an hour.
Bio: Stefan Eggermont is an independent consultant and software developer.
He is interested in ways to make software development better and (even) more fun. He likes helping teams in becoming more able to add value to their organizations. After programming for 15 years, he discovered Seaside and Smalltalk and found out that there was a reasonable way to develop web applications after all. He also does Technology Roadmapping to help organizations realize and visualize their future(s).
Architecture decision records - How not to get lost in the past
Getting Started with QCMagritte
1. Getting Started with
QCMagritte
Diego Lont & Stephan Eggermont
• Download a QCMagritte image from
http://ci.inria.org/pharo-contribution/QCMagritte
• Download a pharo vm from
http://get.pharo.org
• Download a QCMagritte demo from
http://smalltalkhub.com/mc/DiegoLont/QCMagritteDemo
dinsdag 19 augustus 14
2. What is QC-Magritte
• Application level framework
• On top of Seaside and Magritte
• Provides re-usable parts for common tasks
dinsdag 19 augustus 14
3. QCMagritte supports ...
Application
Template
Influences
(AJAX)
Table support
Search
(Queries)
Application
navigation
Multi-language
User
management
Commands
Hierarchical
domain
structure
Menu
structure
dinsdag 19 augustus 14
4. Example: CI
• Continuous Integration Server
• Not focus of the talk
• Predefined with Magritte definitions
dinsdag 19 augustus 14
5. CI Model
CI-Model Trigger
Configuration
Build
Definition
PProrojejecct t Project
BBuuilidld Build
Build
Step
Build
Step
Build
Step
Trigger
dinsdag 19 augustus 14
6. Demo
• View magritte descriptions in model
dinsdag 19 augustus 14
7. Template
• Application
• Seaside application, registering itself
• Points to model
• Creates menu
• Model
• Describes entry points for entire domain
• Defines builders used to generate components
dinsdag 19 augustus 14
12. Custom components
• Easy extend model with custom components
• Demo: add status description + component
dinsdag 19 augustus 14
13. User Management
• Only allow changes by logged in users
• Restrict access to views/actions
• Controlled by “hasUserManagent”
• Defaults to true if there is an admin user
• (CRUD) Rights and roles model.
dinsdag 19 augustus 14
14. Demo
• Add user management
dinsdag 19 augustus 14
15. QCMagritte supports ...
Application
Template
Influences
(AJAX)
Table
Support
Search
(Queries)
Application
navigation
Multi-language
User
management
Commands
Hierarchical
domain
structure
Menu
structure
dinsdag 19 augustus 14
16. Influences
• disable timeout
• user first, last name
• How to avoid cycles
dinsdag 19 augustus 14
17. Application navigation
• Mostly announcement based (still some call’s left,
slowly being replaced)
• QCPageChoice shows how
dinsdag 19 augustus 14
18. Parent Object
• Hierarchical ownership model for the domain
• Only one owner: parent
• Backlink to model = parent model
• QCQueriedToManyComponent
• search support
• newInstance sets parent if needed
dinsdag 19 augustus 14
19. Multilanguage
• In-application support for multiple languages
• Each user can have own language preference
• Application has default language
• Keep default values for untranslated
• Default translation of labels, groups, comments,
error messages. Others: asMultilanguageString
dinsdag 19 augustus 14
20. Search
• Model-wide search, from a starting point
• Description-type specific
• everything transformed to string representation
dinsdag 19 augustus 14
21. Table support
• Select on field values, smart filter
• Sorting
• Export CSV
• Select columns
• Add calculated columns
dinsdag 19 augustus 14
22. Menu structure
• Tree based, announcements
• Autocollapse: expand current selection
dinsdag 19 augustus 14