• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Dry-ing Magritte
 

Dry-ing Magritte

on

  • 871 views

Stephan Eggermont & Diego Lont

Stephan Eggermont & Diego Lont

Statistics

Views

Total Views
871
Views on SlideShare
871
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Dry-ing Magritte Dry-ing Magritte Presentation Transcript

    • Dry-ing Magritte Stephan Eggermont & Diego Lont
    • Do it yourself • Gofer new • url: 'http://smalltalkhub.com/mc/ DiegoLont/QCMagritte/main'; • package: 'ConfigurationOfQCMagritte'; • load. • ConfigurationOfQCMagritte project development load: #( 'Demo' ).
    • Introduction • Magritte framework describes domain objects and how to show them • Very abstract • Hooks not very obvious
    • Hexagonal architecture • Use a domain model • Use ports and adapters for all concerns • UI • Validation • Persistency • Network
    • This presentation • Extend Magritte • With as little duplication as possible • Without having to write parallel hierarchies • Without having to subclass everything
    • Example • We use Twitter Bootstrap as a case • Model is small • Hard to extend
    • Custom rendering • Default: renders table • You can change table layout (a bit) in css • Next option: • Custom components • Custom descriptions • Custom renderer
    • Custom Component • For displaying a field different • E.g. a European date format instead of US • Problem • Needs to be set for each field
    • Custom descriptions • each domain type needs its own description • birthdate may be different from other date types (history/future, defaults) • Only usefull for different types • You need to make a component as well
    • Custom renderer • Allow different layout than a table (i.e. div) • Does not allow different components • Problems: • Needs to be set for each domain object • Does not propagate (on “add / details”)
    • DescriptionBuilder • Problem: • Each description needs same settings • Solution: • Custom description builder • Root class • Different package (monkey patch)
    • Multi language labels • Editor for several languages • Default is “toString” of the key • Languages can be added • Translation can be exported / imported from/to csv • => DescriptionBuilder
    • Ajax • Rendering is easy • use custom renderer • generates ajaxLabels • Problems • memento doesn’t apply domain rules • description isn’t updated
    • Memento • Generic dictionary, no domain class • Setting one value doesn’t affect others • firstname change <=> fullname change • no domain validation in the memento • solution:AjaxMemento • allows domainrules to be set (influences)
    • Dynamic descriptions • Hide fields based on state • Options based on state
    • Reports • Part of ToManyComponent • A table, generated from a description • User wants to be able to • Filter content dynamically (AJAX) • Add / Remove columns • Save settings to profile
    • Dynamic reports • Quite easy • Use custom report renderer • Add custom columns to allow AJAX filter • Enable filters in to many component
    • User settings • Easy to incorporate in component • Problem • Components are hard to re use
    • Queries • Basis of report (possible) • More precise filtering • Allows for user settings
    • Thanks • Friedrich Dominicus (Q-Software)