SlideShare a Scribd company logo
1 of 51
Willow
The interaction tour
sponsored by
Hello!
I am Maxi Tabacman
Smalltalker since 2003
Comp.Sc. PhD at FCEN - UBA
R&D at Mercap Software
@mtabacman
mtabacman@gmail.com
2
Agenda
▧ Intro
▧ Components
▧ Interaction affordances
▧ Real life examples
▧ Complex interactions
▧ Conclusion
3
Intro
What is Willow?
Is a Web Interaction Library that eases
the burden of creating AJAX-based
web applications...
4
… conforming an ecosystem with
specific integrations.
5
Why Willow?
6
?
Why Willow?
So that people can stop writing things like these:
7
Why Willow?
And start writing like these:
8
Features
Ready to use
interactive
components
Interactive
components
abstracts away a lot
of the complexity of
hand made AJAX
calls.
Frontend integration
Component creation
can be abstracted by
using a component
supplier, supporting:
- Plain HTML5
- Bootstrap
- Semantic UI
- JQuery UI
Seaside compatible
Built on top of
Seaside rendering
capabilities.
Seaside code can be
mixed with Willow
components.
9
Features
Ready to use
interactive
components
Interactive
components
abstracts away a lot
of the complexity of
hand made AJAX
calls.
Frontend integration
Component creation
can be abstracted by
using a component
supplier, supporting:
- Plain HTML5
- Bootstrap
- Semantic UI
- JQuery UI
Seaside compatible
Built on top of
Seaside rendering
capabilities.
Seaside code can be
mixed with Willow
components.
10
Features
Ready to use
interactive
components
Interactive
components
abstracts away a lot
of the complexity of
hand made AJAX
calls.
Frontend integration
Component creation
can be abstracted by
using a component
supplier, supporting:
- Plain HTML5
- Bootstrap
- Semantic UI
- JQuery UI
Seaside compatible
Built on top of
Seaside rendering
capabilities.
Seaside code can be
mixed with Willow
components.
11
Components
Fields
- Text Field
- Date Field
- Number Field
Selection
- Listbox
- Dropdown List
- Radio Groups
- Checkbox
Command Input
- Buttons
- Links
- Dropdown menu
Containers
- Lists
- Tables
- Grids
- Dialogs
- Panels
Misc
- Images
- Identified Views
- Labeled Views
- Tabs/Pills
- Navigation
Advanced
- Periodically rendered
- Delayed
- Typeahead
12
Components
Fields
- Text Field
- Date Field
- Number Field
Selection
- Listbox
- Dropdown List
- Radio Groups
- Checkbox
Command Input
- Buttons
- Links
- Dropdown menu
Containers
- Lists
- Tables
- Grids
- Dialogs
- Panels
Misc
- Images
- Identified Views
- Labeled Views
- Tabs/Pills
- Navigation
Advanced
- Periodically rendered
- Delayed
- Typeahead
13
Components
Fields
- Text Field
- Date Field
- Number Field
Selection
- Listbox
- Dropdown List
- Radio Groups
- Checkbox
Command Input
- Buttons
- Links
- Dropdown menu
Containers
- Lists
- Tables
- Grids
- Dialogs
- Panels
Misc
- Images
- Identified Views
- Labeled Views
- Tabs/Pills
- Navigation
Advanced
- Periodically rendered
- Delayed
- Typeahead
14
Components
Fields
- Text Field
- Date Field
- Number Field
Selection
- Listbox
- Dropdown List
- Radio Groups
- Checkbox
Command Input
- Buttons
- Links
- Dropdown menu
Containers
- Lists
- Tables
- Grids
- Dialogs
- Panels
Misc
- Images
- Identified Views
- Labeled Views
- Tabs/Pills
- Navigation
Advanced
- Periodically rendered
- Delayed
- Typeahead
15
Components
Fields
- Text Field
- Date Field
- Number Field
Selection
- Listbox
- Dropdown List
- Radio Groups
- Checkbox
Command Input
- Buttons
- Links
- Dropdown menu
Containers
- Lists
- Tables
- Grids
- Dialogs
- Panels
Misc
- Images
- Identified Views
- Labeled Views
- Tabs/Pills
- Navigation
Advanced
- Periodically rendered
- Delayed
- Typeahead
16
Components
Fields
- Text Field
- Date Field
- Number Field
Selection
- Listbox
- Dropdown List
- Radio Groups
- Checkbox
Command Input
- Buttons
- Links
- Dropdown menu
Containers
- Lists
- Tables
- Grids
- Dialogs
- Panels
Misc
- Images
- Identified Views
- Labeled Views
- Tabs/Pills
- Navigation
Advanced
- Periodically rendered
- Delayed
- Typeahead
17
Interaction affordances
Each interactive component supports the
#onTrigger message
18
Client Execution
button onTrigger
executeOnClient: [ :canvas |
canvas javascript alert: ‘Hi’
]
19
Client Execution
20
Client Execution
button onTrigger
executeOnClient: [:canvas |
canvas javascript alert: ‘Hi’
]
21
Server Evaluation
button onTrigger
evaluate: [
'The button was clicked on the browser' inspect
]
22
Server Evaluation
23
Server Evaluation
24
Rendering
companionView := IdentifiedWebView
forSpanNamed: 'Companion'
containing: [ :canvas | canvas strong: self
currentTime ].
button onTrigger render: companionView
25
Rendering
companionView := IdentifiedWebView
forSpanNamed: 'Companion'
containing: [ :canvas | canvas strong: self
currentTime ].
button onTrigger render: companionView
26
Rendering
27
When working with form elements the
contents must be serialized so that the server
elements have the updated values. Here are
some alternatives:
▧ serializeIt
▧ serializeWithHiddenInputs
▧ serializeForm:
▧ serializeContainerForm
Serialization
28
Serialization
button onTrigger
serializeContainerForm;
disable;
determineBehaviorByEvaluating: [ :response | | answer |
answer := self askDeveloper: input contents.
response onReturn
setValueTo: answer
thenTriggerChangeOf: input ]
29
Serialization
30
Serialization
31
Several affordances are available to manipulate
DOM elements:
▧ disable/enable
▧ focus
▧ remove: identifiedView
▧ transform: identifiedView into: renderable
▧ setValueTo: val thenTriggerChangeOf: input
▧ show: renderable
whileCallingServerToRender: identifiedView
▧ and more…
DOM Manipulation
32
▧ addCssClass:
▧ changeCssClass:to:
▧ removeCssClass:
▧ toggleCssClass:
▧ and some variations…
CSS Classes
33
▧ closeLastDialog
▧ closeAllDialogs
▧ open: dialogView
Dialogs
34
Real life
examples
35
Combining Interactions
toolbar onRunSelectedTestsTrigger
transform: testResult
into: SpinKitTripleBounce new;
evaluate: [ self session runTests
];
render: testResult.
36
toolbar onRunSelectedTestsTrigger
transform: testResult
into: SpinKitTripleBounce new;
evaluate: [ self session runTests
];
render: testResult.
37
toolbar runTestsButton onTrigger
Combining Interactions
38
Dialog Opening
detailsLinkShowing: testResult
| detailsAnchor |
detailsAnchor := self componentSupplier
asynchronicLinkActingAsButtonLabeled: 'See the
details.'
applying: [ :anchor | anchor addClass bootstrap
alertLink ].
detailsAnchor onTrigger open:
(WPTestRunnerTestResultDetailsDialog for: testResult).
^ showDetailsAnchor
39
Dialog Opening
40
Conditional response
button onTrigger
sendToMixpanel: [:mixpanel |
mixpanel track: 'Clicked on "Search>Analyze"'];
determineBehaviorByEvaluating: [:response |
self applicationContext
withBondUnderAnalysisDo: [:bond |
response onReturn open:
(BondInvestmentDialogWebView for: bond)]
ifUnused: []].
41
Conditional response
42
Send To Mixpanel is just syntactic sugar
sendToMixpanel: aBlock
^self executeOnClient: [:canvas |
| mixpanel |
mixpanel := canvas mixpanel.
aBlock cull: mixpanel cull: canvas.
mixpanel]
43
Complex Interactions
(the crazy stuff)
44
Passing client parameters
| interpreter |
interpreter := WebInteractionInterpreter forInstantEvaluation.
userAgent := ''.
interpreter
evaluate: [:clientUserAgent | userAgent := clientUserAgent]
with: (JSStream on: 'navigator') access: 'userAgent'.
interpreter applyTo: aCanvas document on: aCanvas
45
Interaction with external JSObjects
interpreter := WebInteractionInterpreter
forEvaluationOf: #click: withAll: #().
interpreter determineBehaviorByEvaluating: [:response |
self context setBondUnderAnalysisToBe: bond.
response onReturn
open: (BondInvestmentDialogWebView for: bond)].
events := HighchartsPlotOptionsScatterEvents new.
interpreter applyTo: events on: aCanvas.
^events
46
Subclass of
JSObject
Interaction with external JSObjects
47
Demo
48
▧ Simplified interactions by using a wide
range of ready to use components
▧ Seaside compatible
▧ Advanced components available
▧ Complex interactions still possible
49
Conclusions
Special thanks to:
▧ Gabriel Cotelli for improving the quality of
this project and for the slides
▧ Mercap Software for the financial support
to be here today
▧ The Mercap development team and
external collaborators for using and
improving the library
50
Acknowledgements
Thanks!
Any questions?
Willow is MIT licensed and you can find it on /ba-st
51

More Related Content

Similar to Willow Interaction Tour

Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And DxlBp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxldominion
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to MicroservicesAd van der Veer
 
Making Things Work Together
Making Things Work TogetherMaking Things Work Together
Making Things Work TogetherSubbu Allamaraju
 
From Back to Front: Rails To React Family
From Back to Front: Rails To React FamilyFrom Back to Front: Rails To React Family
From Back to Front: Rails To React FamilyKhor SoonHin
 
Créer et gérer une scratch org avec Visual Studio Code
Créer et gérer une scratch org avec Visual Studio CodeCréer et gérer une scratch org avec Visual Studio Code
Créer et gérer une scratch org avec Visual Studio CodeThierry TROUIN ☁
 
A Lap Around Visual Studio 2010
A Lap Around Visual Studio 2010A Lap Around Visual Studio 2010
A Lap Around Visual Studio 2010Abram John Limpin
 
PLSQL Developer tips and tricks
PLSQL Developer tips and tricksPLSQL Developer tips and tricks
PLSQL Developer tips and tricksPatrick Barel
 
Mike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and PatternsMike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and Patternsukdpe
 
Introduction to Xamarin.Forms
Introduction to Xamarin.FormsIntroduction to Xamarin.Forms
Introduction to Xamarin.FormsBrad Pillow
 
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009ken.egozi
 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Jonas Follesø
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan
 
TopMod3d - Texas Open Source Symposium
TopMod3d - Texas Open Source SymposiumTopMod3d - Texas Open Source Symposium
TopMod3d - Texas Open Source SymposiumDavid Morris
 
MuleSoft London Community February 2020 - MuleSoft and OData
MuleSoft London Community February 2020 - MuleSoft and ODataMuleSoft London Community February 2020 - MuleSoft and OData
MuleSoft London Community February 2020 - MuleSoft and ODataPace Integration
 
Ruby on Rails vs ASP.NET MVC
Ruby on Rails vs ASP.NET MVCRuby on Rails vs ASP.NET MVC
Ruby on Rails vs ASP.NET MVCSimone Chiaretta
 
Introduction to Shiny for building web apps in R
Introduction to Shiny for building web apps in RIntroduction to Shiny for building web apps in R
Introduction to Shiny for building web apps in RPaul Richards
 
Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...
Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...
Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...HostedbyConfluent
 
D1 from interfaces to solid
D1 from interfaces to solidD1 from interfaces to solid
D1 from interfaces to solidArnaud Bouchez
 

Similar to Willow Interaction Tour (20)

Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And DxlBp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to Microservices
 
Making Things Work Together
Making Things Work TogetherMaking Things Work Together
Making Things Work Together
 
From Back to Front: Rails To React Family
From Back to Front: Rails To React FamilyFrom Back to Front: Rails To React Family
From Back to Front: Rails To React Family
 
Créer et gérer une scratch org avec Visual Studio Code
Créer et gérer une scratch org avec Visual Studio CodeCréer et gérer une scratch org avec Visual Studio Code
Créer et gérer une scratch org avec Visual Studio Code
 
VS 2010 codename Rosario
VS 2010 codename RosarioVS 2010 codename Rosario
VS 2010 codename Rosario
 
A Lap Around Visual Studio 2010
A Lap Around Visual Studio 2010A Lap Around Visual Studio 2010
A Lap Around Visual Studio 2010
 
PLSQL Developer tips and tricks
PLSQL Developer tips and tricksPLSQL Developer tips and tricks
PLSQL Developer tips and tricks
 
Mike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and PatternsMike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and Patterns
 
Introduction to Xamarin.Forms
Introduction to Xamarin.FormsIntroduction to Xamarin.Forms
Introduction to Xamarin.Forms
 
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2
 
TopMod3d - Texas Open Source Symposium
TopMod3d - Texas Open Source SymposiumTopMod3d - Texas Open Source Symposium
TopMod3d - Texas Open Source Symposium
 
MuleSoft London Community February 2020 - MuleSoft and OData
MuleSoft London Community February 2020 - MuleSoft and ODataMuleSoft London Community February 2020 - MuleSoft and OData
MuleSoft London Community February 2020 - MuleSoft and OData
 
Ruby on Rails vs ASP.NET MVC
Ruby on Rails vs ASP.NET MVCRuby on Rails vs ASP.NET MVC
Ruby on Rails vs ASP.NET MVC
 
Into The Box 2018 Ortus Keynote
Into The Box 2018 Ortus KeynoteInto The Box 2018 Ortus Keynote
Into The Box 2018 Ortus Keynote
 
Introduction to Shiny for building web apps in R
Introduction to Shiny for building web apps in RIntroduction to Shiny for building web apps in R
Introduction to Shiny for building web apps in R
 
Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...
Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...
Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...
 
D1 from interfaces to solid
D1 from interfaces to solidD1 from interfaces to solid
D1 from interfaces to solid
 

More from FAST

Threads, Critical Sections, and Termination
Threads, Critical Sections, and TerminationThreads, Critical Sections, and Termination
Threads, Critical Sections, and TerminationFAST
 
OOP with Smalltalk
OOP with SmalltalkOOP with Smalltalk
OOP with SmalltalkFAST
 
Powerlang: a Vehicle for Lively Implementing Programming Languages
Powerlang: a Vehicle for Lively Implementing Programming LanguagesPowerlang: a Vehicle for Lively Implementing Programming Languages
Powerlang: a Vehicle for Lively Implementing Programming LanguagesFAST
 
Constructing 3D scenes with Woden Engine
Constructing 3D scenes with Woden EngineConstructing 3D scenes with Woden Engine
Constructing 3D scenes with Woden EngineFAST
 
Demystifying the creation of coding tools
Demystifying the creation of coding toolsDemystifying the creation of coding tools
Demystifying the creation of coding toolsFAST
 
Application Starter: the entry point for your application
Application Starter: the entry point for your applicationApplication Starter: the entry point for your application
Application Starter: the entry point for your applicationFAST
 
Improving the Pharo VM
Improving the Pharo VMImproving the Pharo VM
Improving the Pharo VMFAST
 
What is (not) Pharo 8?
What is (not) Pharo 8?What is (not) Pharo 8?
What is (not) Pharo 8?FAST
 
Stargate: an interstellar journey to RESTful APIs
Stargate: an interstellar journey to RESTful APIsStargate: an interstellar journey to RESTful APIs
Stargate: an interstellar journey to RESTful APIsFAST
 
Opening Smalltalks 2019
Opening Smalltalks 2019Opening Smalltalks 2019
Opening Smalltalks 2019FAST
 
Smalltalk Computers, Past and Future by Jecel Mattos de Assumpção Jr
Smalltalk Computers, Past and Future by Jecel Mattos de Assumpção JrSmalltalk Computers, Past and Future by Jecel Mattos de Assumpção Jr
Smalltalk Computers, Past and Future by Jecel Mattos de Assumpção JrFAST
 
Adaptive Compilation by Jecel Mattos de Assumpção Jr
Adaptive Compilation by Jecel Mattos de Assumpção JrAdaptive Compilation by Jecel Mattos de Assumpção Jr
Adaptive Compilation by Jecel Mattos de Assumpção JrFAST
 
Choosing where to run our objects: the S8 Smalltalk approach by Description:F...
Choosing where to run our objects: the S8 Smalltalk approach by Description:F...Choosing where to run our objects: the S8 Smalltalk approach by Description:F...
Choosing where to run our objects: the S8 Smalltalk approach by Description:F...FAST
 
Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...
Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...
Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...FAST
 
Improving VASmalltalk deployment, availability and scalability with Docker by...
Improving VASmalltalk deployment, availability and scalability with Docker by...Improving VASmalltalk deployment, availability and scalability with Docker by...
Improving VASmalltalk deployment, availability and scalability with Docker by...FAST
 
VASmalltalk and Raspberry Pi powering the largest MIDI instrument of the world
VASmalltalk and Raspberry Pi powering the largest MIDI instrument of the worldVASmalltalk and Raspberry Pi powering the largest MIDI instrument of the world
VASmalltalk and Raspberry Pi powering the largest MIDI instrument of the worldFAST
 
Hands-on Raspberry Pi and VA Smalltalk - Starting Workshop
Hands-on Raspberry Pi and VA Smalltalk - Starting WorkshopHands-on Raspberry Pi and VA Smalltalk - Starting Workshop
Hands-on Raspberry Pi and VA Smalltalk - Starting WorkshopFAST
 
Live typing: Update and what's next by Hernan Wilkinson
Live typing: Update and what's next by Hernan WilkinsonLive typing: Update and what's next by Hernan Wilkinson
Live typing: Update and what's next by Hernan WilkinsonFAST
 
Enhanced Email Protocol Framework for VAST by Seth Berman
Enhanced Email Protocol Framework for VAST by Seth BermanEnhanced Email Protocol Framework for VAST by Seth Berman
Enhanced Email Protocol Framework for VAST by Seth BermanFAST
 
VA Smalltalk Product Update by Seth Berman
VA Smalltalk Product Update by Seth BermanVA Smalltalk Product Update by Seth Berman
VA Smalltalk Product Update by Seth BermanFAST
 

More from FAST (20)

Threads, Critical Sections, and Termination
Threads, Critical Sections, and TerminationThreads, Critical Sections, and Termination
Threads, Critical Sections, and Termination
 
OOP with Smalltalk
OOP with SmalltalkOOP with Smalltalk
OOP with Smalltalk
 
Powerlang: a Vehicle for Lively Implementing Programming Languages
Powerlang: a Vehicle for Lively Implementing Programming LanguagesPowerlang: a Vehicle for Lively Implementing Programming Languages
Powerlang: a Vehicle for Lively Implementing Programming Languages
 
Constructing 3D scenes with Woden Engine
Constructing 3D scenes with Woden EngineConstructing 3D scenes with Woden Engine
Constructing 3D scenes with Woden Engine
 
Demystifying the creation of coding tools
Demystifying the creation of coding toolsDemystifying the creation of coding tools
Demystifying the creation of coding tools
 
Application Starter: the entry point for your application
Application Starter: the entry point for your applicationApplication Starter: the entry point for your application
Application Starter: the entry point for your application
 
Improving the Pharo VM
Improving the Pharo VMImproving the Pharo VM
Improving the Pharo VM
 
What is (not) Pharo 8?
What is (not) Pharo 8?What is (not) Pharo 8?
What is (not) Pharo 8?
 
Stargate: an interstellar journey to RESTful APIs
Stargate: an interstellar journey to RESTful APIsStargate: an interstellar journey to RESTful APIs
Stargate: an interstellar journey to RESTful APIs
 
Opening Smalltalks 2019
Opening Smalltalks 2019Opening Smalltalks 2019
Opening Smalltalks 2019
 
Smalltalk Computers, Past and Future by Jecel Mattos de Assumpção Jr
Smalltalk Computers, Past and Future by Jecel Mattos de Assumpção JrSmalltalk Computers, Past and Future by Jecel Mattos de Assumpção Jr
Smalltalk Computers, Past and Future by Jecel Mattos de Assumpção Jr
 
Adaptive Compilation by Jecel Mattos de Assumpção Jr
Adaptive Compilation by Jecel Mattos de Assumpção JrAdaptive Compilation by Jecel Mattos de Assumpção Jr
Adaptive Compilation by Jecel Mattos de Assumpção Jr
 
Choosing where to run our objects: the S8 Smalltalk approach by Description:F...
Choosing where to run our objects: the S8 Smalltalk approach by Description:F...Choosing where to run our objects: the S8 Smalltalk approach by Description:F...
Choosing where to run our objects: the S8 Smalltalk approach by Description:F...
 
Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...
Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...
Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...
 
Improving VASmalltalk deployment, availability and scalability with Docker by...
Improving VASmalltalk deployment, availability and scalability with Docker by...Improving VASmalltalk deployment, availability and scalability with Docker by...
Improving VASmalltalk deployment, availability and scalability with Docker by...
 
VASmalltalk and Raspberry Pi powering the largest MIDI instrument of the world
VASmalltalk and Raspberry Pi powering the largest MIDI instrument of the worldVASmalltalk and Raspberry Pi powering the largest MIDI instrument of the world
VASmalltalk and Raspberry Pi powering the largest MIDI instrument of the world
 
Hands-on Raspberry Pi and VA Smalltalk - Starting Workshop
Hands-on Raspberry Pi and VA Smalltalk - Starting WorkshopHands-on Raspberry Pi and VA Smalltalk - Starting Workshop
Hands-on Raspberry Pi and VA Smalltalk - Starting Workshop
 
Live typing: Update and what's next by Hernan Wilkinson
Live typing: Update and what's next by Hernan WilkinsonLive typing: Update and what's next by Hernan Wilkinson
Live typing: Update and what's next by Hernan Wilkinson
 
Enhanced Email Protocol Framework for VAST by Seth Berman
Enhanced Email Protocol Framework for VAST by Seth BermanEnhanced Email Protocol Framework for VAST by Seth Berman
Enhanced Email Protocol Framework for VAST by Seth Berman
 
VA Smalltalk Product Update by Seth Berman
VA Smalltalk Product Update by Seth BermanVA Smalltalk Product Update by Seth Berman
VA Smalltalk Product Update by Seth Berman
 

Recently uploaded

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 

Recently uploaded (20)

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 

Willow Interaction Tour

Editor's Notes

  1. Hi. I’m Maximiliano Tabacman. I’m an smalltalker since 2003 and work at Mercap Software.
  2. First, this is what we see in this talk. So, lets start it.
  3. First of all.. What is Willow? It’s a web interaction library that eases the burden of creating AJAX-based web apps.
  4. And it has an ecosystem of dependent projects providing integration with: Bootstrap, Semantic UI, JQuery UI, Mixpanel and others
  5. At the beginning our first web apps where doing a full refresh of the page when you interacted with it, but when we started doing AJAX calls and rendering parts of the DOM the code became a kind of javascript-like spaghetti.
  6. So that people can stop writing this kind of things: (by the way, this is a real example taken from some questions on the seaside mailing list)
  7. You can write it in Willow in this way. It’s not beautiful?
  8. These are the main features of Willow. It provides a collection of ready to use interactive components. This interactive part will be the focus of this talk.
  9. Supports several frontend integrations, and provides a facade to getting the components so you can switch more easily from say Bootstrap to Semantic UI
  10. It’s built on top of Seaside. So you can mix standard Seaside rendering code with Willow components.
  11. This is a brief list of the most important components available.
  12. So , each interactive component supports the onTrigger message, that provides access to the interaction affordances. So let’s see this affordances.
  13. This is the most ugly one, but will help us to understand the basics. #onTrigger binds an event to a JS function implementing the interaction described by the messages sent to it. In this case it is plain javascript Seaside code, and just includes some client interactivity.
  14. So far so good. Now to the interesting ones.
  15. Now , this variant configures the function to do an AJAX call eventually evaluating the callback provided in the block.
  16. And this is the code that gets generated.
  17. Another one. The IdentifiedWebView was briefly mentioned in the components slide. Basically it’s a component ensuring that it will have an id available when needed and providing a view to render. The view name is used as part of the id generation to ease it’s identification in the DOM when you need to debug something.
  18. In this case just replaces some DOM element with a new one
  19. Unlike the previous cases, an interest thing here is that the payload contains code.
  20. This kind of app will not perform a page submit, so you need to send the form information to the server using an AJAX call.
  21. So the difference here it’s that the AJAX call is now a POST. And it’s also serializing the input values inside the form.
  22. Transform: works client side. And the renderable will be rendered when the component triggering is rendered and not on the actual trigger, because it will not interact with the server. show:whileCallingServerToRender: is syntactic sugar basically doing a tranform: and render.
  23. I will not enter in detail here.
  24. Willow has an specific way of handling dialogs.
  25. Until now we saw isolated interactions, but usually you will do more than one interaction at the same time.
  26. We are here opening a dialog. I will say ok..component supplier please give me a link. And WPTestRunnerTestResultDetailsDialog, it’s an component that will render the dialog.
  27. This is what happens.
  28. This is getting more complicated. Mixpanel it’s a service to track events. So far, we are doing always the same thing when the event is triggered. But here it depends if we have or not something in the context.
  29. This is using the project providing the mixpanel integration, but it’s just syntacti sugar.
  30. If time allows, show the Test Runner, Live Docs and Abbaco apps.