Hello
At the last Camp Smalltalk we finally managed to release the Deltawerken application framework for Seaside and Storyboard, an example application using it. Here is a first description (to be expanded and improved). What is Deltawerken? Deltawerken is a Seaside application level framework, allowing fast application development for medium-sized applications. We have used an earlier extended version of it to build a system with about 150 domain classes. Complexity was deliberately and systematically pushed from the application to the framework. It uses a declarative way to describe domain classes somewhat similar to Magritte or Mold. It uses Announcements, jQuery and jQueryUI. Storyboard Storyboard is a multi-user agile planning board with drag and drop support. It shows how little code is needed to build a complete application with Deltawerken. It consists of 39 classes, of which 7 are announcements (very simple). It allows you to quickly enter stories, estimate and prioritize them. In addition to stories you can add issue, documentation and chore cards. The cards are colored based on their story state. More details can be entered/viewed by expanding the card. In the expanded view a change history is shown. Other users of Storyboard can be invited to participate. Core domain classes are: User, Project, Iteration, Story, Member Some stories: A user can have projects (s)he participates in. A user can have invitations for other projects A user can create projects By creating a project or by accepting an invitation, a user becomes a member of the project A member can invite other users to participate in a project. A member can search for other users to invite. Each member can have its own view on the project, the projectsettings Each member can add a story to the project A project has 4 projectviews, for done, current, backlog & icebox By default, the projectsettings show the 4 projectViews Adding a story is done by entering its storyName A new story is added to the icebox A story can be started after it has been estimated A story can be dragged from the icebox to current or the backlog A story that is done can no longer be prioritized A story that is accepted can no longer be changed A story can have a description A story can be a bug, chore or documentation Only (feature) stories are estimated ... Deltawerken Features User management Field descriptions with validation for domain classes (somewhat similar to Magritte descriptions). Builders for forms and reports. Search support. ... Deltawerken Components DEField and its descendants are used to describe domain classes. DEComponent is the base WAComponent equivalent. It knows the current user (if any) and announcer. DEPageChoice is a DEComponent that switches what it shows based on announcements. There are a number of addPage: variants DEEditComponent allows the editing of a single domain object. It can edit new or existing ones, using a copy of the original to allow reverting changes. It can generate a div or table based layout. It can have a header and/or a footer, and an infoText between the header and the form. For required fields, it can show a *. Focus can be set on a specific field. DEEditForm extends DEEditComponent with action buttons for save and cancel. ... Getting started StoryBoard provides a good overview of the power of Deltawerken. If you start it the first time, it shows a welcome screen, showing the number of users and projects. Please make sure you change the password of the administrator. In a workspace: (SBUser userWithId: 'Admin') password: '<your new password>' The application uses SBMain, a WAComponent, as its entrypoint. It has two children, an SBLoginForm and a DEPageChoice initially showing SBPublicHome. Then register yourself as a new user: StoryState and StateTransition provide a state machine for the stories, allowing them to move from #initial (unestimated) through #started to #finished, #delivered and #accepted or #rejected leading again to #started. When you are logged in, you arrive at the overview of your projects You can create a new project, respond to an invitation to participate in a project, view a storyboard of a project or view a team page of a project The team page shows the current members and allows you to search for users to invite. The storyboard of a project shows the four panes for done, current, backlog and icebox. Iterations are shown in grey. By delivering an iteration, the accepted stories are moved to done. and a new iteration is started. A story can be expanded to show more details. History Deltawerken is a spin-off from the work we did developing a Seaside application for a start-up, using GLASS and Seaside 2.8. We focused on pushing out complexity from the application to the framework. When we started giving Seaside workshops, we wanted to provide the participants with an environment where they didn't need to write a lot of code to make things work. It was also used in our experiments to create a Naked Objects like user interface (if you were wondering where the noXXX method names came from). Last year it was upgraded from Scriptaculous to jQuery, and we developed StoryBoard. Installing Deltawerken has been tested with the Seaside one click 3.0 and 3.1 and a Pharo 1.4 It should run in Gemstone too. The metacello configuration does not load Seaside, but has the needed code for that commented out. See the instructions on the wiki page of: http:ss3.gemstone.com/ss/Deltawerken http:ss3.gemstone.com/ss/StoryBoard License MIT Have fun, Diego & Stephan _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside PastedGraphic-1.png (51K) Download Attachment PastedGraphic-2.png (28K) Download Attachment PastedGraphic-3.png (39K) Download Attachment PastedGraphic-5.png (39K) Download Attachment PastedGraphic-6.png (30K) Download Attachment PastedGraphic-7.png (50K) Download Attachment |
YESSSSS!!! Very probably, in next months, we begin a medium size app in Seaside, and Deltawerken would be a good choise. I go study this framework. Thanks, and regards.
2012/9/5 Stephan Eggermont <[hidden email]> Hello _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
In reply to this post by Stephan Eggermont-3
Thanks for sharing guys!
On 05/09/12 05:33, Stephan Eggermont wrote: > Hello > > At the last Camp Smalltalk we finally managed to release the Deltawerken application framework > for Seaside and Storyboard, an example application using it. Here is a first description (to be expanded > and improved). > > What is Deltawerken? > > Deltawerken is a Seaside application level framework, allowing fast application development > for medium-sized applications. We have used an earlier extended version of it to build a system > with about 150 domain classes. Complexity was deliberately and systematically pushed from > the application to the framework. It uses a declarative way to describe domain classes somewhat > similar to Magritte or Mold. It uses Announcements, jQuery and jQueryUI. > > Storyboard > > Storyboard is a multi-user agile planning board with drag and drop support. It shows how little > code is needed to build a complete application with Deltawerken. It consists of 39 classes, > of which 7 are announcements (very simple). It allows you to quickly enter stories, estimate and prioritize them. > In addition to stories you can add issue, documentation and chore cards. The cards are colored based > on their story state. More details can be entered/viewed by expanding the card. In the expanded view > a change history is shown. Other users of Storyboard can be invited to participate. > > Core domain classes are: > User, Project, Iteration, Story, Member > > Some stories: > A user can have projects (s)he participates in. > A user can have invitations for other projects > A user can create projects > By creating a project or by accepting an invitation, a user becomes a member of the project > A member can invite other users to participate in a project. > A member can search for other users to invite. > Each member can have its own view on the project, the projectsettings > Each member can add a story to the project > A project has 4 projectviews, for done, current, backlog & icebox > By default, the projectsettings show the 4 projectViews > Adding a story is done by entering its storyName > A new story is added to the icebox > A story can be started after it has been estimated > A story can be dragged from the icebox to current or the backlog > A story that is done can no longer be prioritized > A story that is accepted can no longer be changed > A story can have a description > A story can be a bug, chore or documentation > Only (feature) stories are estimated > ... > > Deltawerken Features > > User management > Field descriptions with validation for domain classes (somewhat similar to Magritte descriptions). > Builders for forms and reports. > Search support. > ... > > Deltawerken Components > > DEField and its descendants are used to describe domain classes. > > DEComponent is the base WAComponent equivalent. It knows the current user (if any) and announcer. > > DEPageChoice is a DEComponent that switches what it shows based on announcements. > There are a number of addPage: variants > > DEEditComponent allows the editing of a single domain object. It can edit new or existing ones, using > a copy of the original to allow reverting changes. It can generate a div or table based layout. It can have a > header and/or a footer, and an infoText between the header and the form. For required fields, > it can show a *. Focus can be set on a specific field. > > DEEditForm extends DEEditComponent with action buttons for save and cancel. > ... > > Getting started > > StoryBoard provides a good overview of the power of Deltawerken. If you start it the first time, > it shows a welcome screen, showing the number of users and projects. Please make sure > you change the password of the administrator. In a workspace: > > (SBUser userWithId: 'Admin') password: '<your new password>' > > > > > > The application uses SBMain, a WAComponent, as its entrypoint. It has two children, an SBLoginForm and a DEPageChoice initially showing SBPublicHome. > > > Then register yourself as a new user: > > > > > > StoryState and StateTransition provide a state machine for the stories, allowing them to > move from #initial (unestimated) through #started to #finished, #delivered and > #accepted or #rejected leading again to #started. > > When you are logged in, you arrive at the overview of your projects > > > > > You can create a new project, respond to an invitation to participate in a project, > view a storyboard of a project or view a team page of a project > > > > > The team page shows the current members and allows you to search for users to invite. > > The storyboard of a project shows the four panes for done, current, backlog and icebox. > > > > > Iterations are shown in grey. By delivering an iteration, the accepted stories > are moved to done. and a new iteration is started. A story can be expanded to show > more details. > > > > > > > History > > Deltawerken is a spin-off from the work we did developing a Seaside application for a start-up, > using GLASS and Seaside 2.8. We focused on pushing out complexity from the application to > the framework. When we started giving Seaside workshops, we wanted to provide the > participants with an environment where they didn't need to write a lot of code to make things work. > It was also used in our experiments to create a Naked Objects like user interface (if you were > wondering where the noXXX method names came from). > Last year it was upgraded from Scriptaculous to jQuery, and we developed StoryBoard. > > Installing > > Deltawerken has been tested with the Seaside one click 3.0 and 3.1 and a Pharo 1.4 > It should run in Gemstone too. The metacello configuration does not load Seaside, > but has the needed code for that commented out. > > See the instructions on the wiki page of: > > http:ss3.gemstone.com/ss/Deltawerken > http:ss3.gemstone.com/ss/StoryBoard > > License > > MIT > > Have fun, > Diego & Stephan > > > > _______________________________________________ > seaside mailing list > [hidden email] > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > -- http://tulipemoutarde.be CA: +1 778 558 3225 BE: +32 65 709 131 _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
In reply to this post by Gastón Dall' Oglio
In a Pharo Summer image I loaded Seaside, and follow this instruction to load Deltawerken: http://ss3.gemstone.com/ss/Deltawerken.html/Wiki and I get a 'Cannot resolve symbolic version #development' exception.
Then, I change from: ConfigurationOfDeltaWerken>>development: spec <symbolicVersion: #'stable'> spec for: #'common' version: '0.1.0' to: ConfigurationOfDeltaWerken>>development: spec
<symbolicVersion: #'development'> spec for: #'common' version: '0.1.0' and now load. It's fine? 2012/9/5 Gastón Dall' Oglio <[hidden email]>
_______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
In reply to this post by Stephan Eggermont-3
Gastón Dall' Oglio wrote:
>In a Pharo Summer image I loaded Seaside, and follow this instruction to >load Deltawerken: >http://ss3.gemstone.com/ss/Deltawerken.html/Wiki > and I >get a 'Cannot resolve symbolic version #development' exception. Thank you for the report and fix. Fixed in ConfigurationOfDeltawerken-StephanEggermont.12 Stephan _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
Stephan Eggermont <stephan <at> stack.nl> writes:
> > Gastón Dall' Oglio wrote: > >In a Pharo Summer image I loaded Seaside, and follow this instruction to > >load Deltawerken: > >http://ss3.gemstone.com/ss/Deltawerken.html/Wiki > > and I > >get a 'Cannot resolve symbolic version #development' exception. > > Thank you for the report and fix. > > Fixed in ConfigurationOfDeltawerken-StephanEggermont.12 > > Stephan > I have installed Deltawerken on Pharo 1.3 and Seaside 3.0.6. Seems to be all there. I would like to see some documentation for Deltawerken (not related to the ocean containment in Netherlands!). I have red several ariticles on Naked objects, but do far do not see the actual relationship. I would appreciate pointers on documentation and how to attack a problem in Deltawerken. _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
In reply to this post by Stephan Eggermont-3
Hi Intrader,
you write: >I have installed Deltawerken on Pharo 1.3 and Seaside 3.0.6. Seems to be all >there. I would like to see some documentation for Deltawerken (not related to >the ocean containment in Netherlands!). Thanks for taking a look. We'll write some posts on how to do things with Deltawerken, and where we expect it to go. In retrospect, we should have published much earlier. Feedback is king. >I have red several ariticles on Naked >objects, but do far do not see the actual relationship. That is not in Deltawerken. There are just a few methods left, e.g.: SBUser>>addProjectAction, noTitle, noCollectionTitle, noIconSymbol, noIconUrl >I would appreciate pointers on documentation and how to attack a problem in >Deltawerken. See post. Any specific questions? There is a lot to write, and we can change priorities. Diego & Stephan _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
Stephan Eggermont <stephan <at> stack.nl> writes:
I like to start with the basics. What is the basic architecture of a DeltaWerken application. I can see in the configuration what is the starting class, but other than that it is hard. What are the widgets that use AJAX? In my applications I see a lot of use of announcements, specially in dependent widgets; one scenario, a 'loanType' widget, when it changes, the tab changes. Within the tab a slider receives a range according to the loantype, according to the loantype a listbox of possible loans is displayed. According to the slider one or more loans in the multiselection loan list are default chosen. Changes to the loan selected change the position in the slider, and that of interest information list-only text fields. Thanks _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
On Sep 15, 2012, at 11:10 PM, intrader wrote: > Stephan Eggermont <stephan <at> stack.nl> writes: > > I like to start with the basics. What is the basic architecture of > a DeltaWerken application. I can see in the configuration what is the > starting class, but other than that it is hard. > What are the widgets that use AJAX? The widgets switch to AJAX, if you have an updater. An updater is automatically created if you have a validator. This may be an empty validator. The idea is that the widgets only use AJAX if they need to. > In my applications I see a lot of use of announcements, specially in > dependent widgets; one scenario, a 'loanType' widget, when it changes, > the tab changes. Within the tab a slider receives a range according to > the loantype, according to the loantype a listbox of possible loans is > displayed. According to the slider one or more loans in the multiselection > loan list are default chosen. Changes to the loan selected change the > position in the slider, and that of interest information list-only text > fields. I believe in StoryBoard there are no examples of this, but you can set updater of a Field. This allows you to redraw a larger part of your page. The provided updater (DEUpdater), allows you to set an id and an updateBlock. In another application (commercial, so no code example) we have made a Field that dependent on the value, showed one or more other fields. I will try to add this "ConditionalFieldList" to the framework this week. I have to check if this still works. I hope this will help. Also we will continue on our "introduction mails" to Deltawerken._______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
Diego Lont <diego.lont <at> delware.nl> writes:
> > In another application (commercial, so no code example) we have made a Field that dependent on the value, > showed one or more other fields. I will try to add this "ConditionalFieldList" to the framework this week. > I have to check if this still works. > > I hope this will help. Also we will continue on our "introduction mails" to Deltawerken. Great work, and I hope to see this. _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
In reply to this post by DiegoLont
On Sep 17, 2012, at 1:01 PM, Diego Lont wrote:
Hi All, It took a bit more time than expected, but finally I got around to adding this Field to Deltawerken with an example. I used Parasol to add some tests, but I guess these should be more extensive. I have now added a project called "DeltaWeb" to the Deltawerken repository, that demo's the functionality of this field. Some remarks to understand this field a bit better. In order to have a choice field that "auto" updates itself and generates a list of fields that depends on the state we have modified the following things: > In order to specify what fields need to be rendered we have an interface that allows us to add a value, with a list of fields that should be rendered when that value is selected. This is the method DEConditionalField addFieldList: aList for: aKey. It takes an array of fields and a key of the select value. Since it is a subclass of a select field, one can also set the labels. > in DEFieldComponent the actual rendering of the fields takes place. Here we check if a field is a "composite" field. If a field is composite, we render an extra id, so we can render the rows as a whole. Note: this only works for a div view. For a table view one needs to update more (the entire table). This is not implemented. > The conditional field should create a correct updater when asked for a compositeId. This does not need to be the updater id. It is the id of the div around the composite Fields. This is why it only functions with divs: with a table, I do not have a surrounding element. Also note that when you modify the id, you should also set the updateBlock of the updater. > Finally there is a problem in the demo with updates of the string / memo field. In deltawerken we use the onChange for updates, and the onChange is fired when you exit this field. It is not fired when you press with your mouse on the radio button (well it is, but after the radio button, and since the field is no longer there). So maybe I need some fix here (I probably should serialize more) ... but I believe this field demonstrates how you can modify the updater to update a bigger part. _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
Free forum by Nabble | Edit this page |