Releases: webfirmframework/wff
wffweb-2.1.9
Release changes :
New features
Implementation for HTML5 attribute Open - ticket #32
Implementation for Optimum attribute - ticket #33
Implementation for Defer attribute - ticket #34
Implementation for Default attribute - ticket #35
Implementation for DirName attribute - ticket #36
Implementation for High & Low attribute classes - ticket #37
Implementation for Reversed attribute class - ticket #38 Implementation for Poster` attribute class - ticket #39
Major Improvements and bug fixes
ClassAttribute contains methods to return the class names it contained.
The ClassAttribute#getAttributeValue now returns the value string
instead of null - #40
Style#getAttributeValue is also returning value string instead of null.
Major bug fixes and optimizations for performance improvements in
TagRepository.
Improvements for Form#getNameBasedJsObject to contain name.checked in
its generated string if type attribute's value is radio.
Major bug in AbstractAttribute pushing changes to the client when its
value is changed by setAttributeValue method. It's an internal bug fix.
Implemented getter setter methods for jsPreFunctionBody and jsPostFunctionBody for event attributes.
Assigned a default 25000ms ws hearbeat interval for BrowserPage
wffweb-2.1.8
Release changes :
New features
Implementation of TagRepository. It contains bugs in this version which will be fixed in the next version.
Method to set websocket client reconnect time in BrowserPage.
Implemented client ping for socket communication
Major Improvements and bug fixes
Optimization for performance improvements and less memory consumption.
wffweb-2.1.7
Release changes :
New features
Basic implementation for Rect, Circle, Ellipse, Line, Polygon, Polyline,
Path and Text tag classes.
Implemented BrowserPage#contains method to check if a tag exists in the
UI.
Major Improvements and bug fixes
Major bug fix in sending binary data (bytes) from server to client and
some minor improvements related to this.
wffweb-2.1.6
Release changes :
New features
Basic implementation for OnMouseOver and OnResize event attribute
classes.
Implementation of AbstractHtml#insertAfter method
Improvements
Javadoc comment added in various places
Minor improvements AbstractHtml and AbstractEventAttribute
wffweb-2.1.5
Release changes :
New features
Basic implementation for DateTime, Async & AcceptCharset.
Major Improvements
It contains needful thread safety improvements in multi-threading
environment, eg: the ui is updated by multiple threads at a time but
with previous implementation there could be issues as it's not thread
safe. A user specific example is a registration form containing many
select fields, each select field is taking data from database. If the
select fields are updated one after the other in a single thread will
not be an optimised way because the initial connection making with db
may take some time as well as fetching data from db. So, it's better to
load each select field in its own thread so that fetching data from db
will be done simultaneously. Therefore the end user will feel the ui is
loading faster and in an asynchronous way.
Other Improvements
Many code optimizations, bug fixes and other improvements.
Improvements for default value of Checked & Selected attribute classes
wffweb-2.1.4
Release changes :
New features
The following tickets are resolved.
Required implementation for 'Selected' attribute class ticket #14
There must be an implementation for Selected attribute class. For now,
the developer needs to use CustomAttribute class.
Proposal for removedFromContext method in BrowserPage ticket #13
Currently, the way to track if a BrowserPage instance is removed from
BrowserPageContext is writing code inside session close listener.
When BrowserPageContext.INSTANCE.httpSessionClosed(session.getId()); is
called inside session close listener all BrowserPage instances under
that session will be removed from context. And using
BrowserPageContext.INSTANCE.getBrowserPages(httpSessionId) all
browserPages under that session can be retrieved before invoking
httpSessionClosed.
For better convenience of the developer :-
Proposing a overriding method removedFromContext in BrowserPage which
will be executed when the BrowserPage instances is removed from
BrowserPageContext.
Proposal for setChildText and getChildText methods in TextArea ticket
#12
The contents to display in text area box is adding content as child of
this tag. So if there is a short cut methods for this, it will be easy
for the developer.
Current way to add content in text area is
TextArea textArea = new TextArea(null) {{
new NoTag(this, "This is the content shown in box");
}};
So the proposed additional short cut way is
TextArea textArea = new TextArea(null);
textArea.setChildText("Sample Text Content");
String contentOfBox = textArea.getChildText();
Missing attributes Cols, Rows and For ticket #11
Cols, Rows and For attributes are missing. There must be a basic
implementation for these attributes otherwise the developer will have to
use CustomAttribute instead of it.
There is no toHtmlString & toOutputStream methods with rebuilt option in
BrowserPage ticket #10
Currently, the BrowserPage contains the following methods
BrowserPage#toHtmlString()
BrowserPage#toHtmlString(String charset)
BrowserPage#toOutputStream(OutputStream os)
BrowserPage#toOutputStream(OutputStream os, String charset)
There must be similar methods with rebuild option just like available in
AbstractHtml
Improvements
Many code optimizations, bug fixes and other improvements.
Now, the generated JavaScript comes in an optimized obfuscated format.
Previously, the input value was not reflected when it's updated from
server if the user once modified its current content in the UI. This
issue is also fixed.
wffweb-2.1.3
Release changes :
New features
Implement feature to push a set of tag manipulations together #9
This issue can be solved by newly implemented methods BrowserPage#holdPush and BrowserPage#unholdPush.
The solution with newly added features for the example mentioned in the ticket is given below
try {
browserPage.holdPush();
for (AbstractHtml tag : tags) {
//push for this change will be on hold
tag.removeAttributes("style");
}
//push for this change will be on hold
div.removeAllChildren();
} finally {
//will push all ui updates (which were on hold) in a single push
browserPage.unholdPush();
}
The logic is very simple, if the browserPage.holdPush is called then the pushes for the remaining statements will be on hold until browserPage.unholdPush is called. Once browserPage.unholdPush is called all of the ui changes will be pushed in a single push.
As a best practice the browserPage.unholdPush(); must be called inside finally block.
Implement AbstractHtml#addInnerHtmls #8
This feature AbstractHtml#addInnerHtmls has been implemented.
Improvements
Minor improvements
wffweb-2.1.2
Release changes :
New features
Implemented sourceAttribute property in ServerAsyncMethod.Event so that the sourceAttribute can be received when an event attribute fires an event by ServerAsyncMethod#asyncMethod. This is required to find the source attribute if the same listener instance (ServerAsyncMethod) has to catch events from multiple event attributes in the same tag. This is an important feature.
Improvements
Minor improvements in logging
wffweb-2.1.1
Release changes :
New features
AbstractHtml#insertBefore method implementation
JsUtil implementation for generating some JavaScript
Added default constructor in Alt to initialize empty value
Improvements
Needful improvements in pushing server updates :-
To push server updates if a new webSocket listener is added/set
use case : client clicked on a button to update UI. The button
click event is received at server side and the changes took place at
server side. But, when the server tried to push the UI updates to the
client the webSocket connection lost so the UI updates are kept in
queue. After that, the client made a successful webSocket connection but
the server (UI) updates will not be pushed until there is something to
push again. The client clicked on the button again but as there is
nothing to change in the server there won't be anything to push from the
server. To fix this minor bug, it's required to push server updates
queue when new webSocket listener is added/set.
Needful improvements in AbstractHtml#addInnerHtml implementation
Additional
Bug fixes, optimization and improvements
wffweb-2.1.0
Release changes :
New features
Now, toOutputStream method returns the total bytes written to the output
stream.
Implemented custom server method feature
Implemented to execute custom JavaScript at client side using BrowserPage#performBrowserPageAction(BrowserPageAction) method
Improvements
Needful improvements in handling webSocket connections
Needful improvements for cross browser support (mainly for IE)
Additional
Bug fixes, optimization, performance improvements and other minor improvements