Send As SMS

Sunday, January 29, 2006

Wishes and TODO's

We've released the new version (2.1.1) of s@rdalya.

We now have time to better focus on the remaining TODO lists and wishes coming from you.

The next version will be even better.

Regards,
s@rm@l team

Friday, January 27, 2006

version 2.1.1

things done in version 2.1.1
  1. This version is mainly version 2.1.0 with small hotfixes applied. It is not much different in functionality than version 2.1.0, just some exceptional cases are handled better in this version.
  2. Fully updated API documentation.
  3. Fully completed demo pages.
Finally this release of s@rdalya is stable enough. Hence I can focus on other projects (one of which is enhancing the Editor.)

Friday, January 13, 2006

cross-browser nuances.

s@rdalya's behaviors may slightly differ on different platforms.
These nuiances and possible resolutions to them (if any) are archived in this blog.
Several exceptional situations are given here as well.

Note that the issues listed in this page are not bugs actually.
They may or may not be fixed in the forecoming versions of s@rdalya.
If you have any workaround, feel free to
share it.




If an element on the page does not have an id, certain
s@rdalya objects, like DraggableLayer may not
function properly on that element.

So, if you attach an object to DraggableLayer, make sure that it has an id.
Or give it an explicit id via DOM scripting.


var lyr=document.getElementsByTagName("p")[0];
lyr.id="ParaDrag";
new DraggableLayer(lyr).fixToDragMode();



EvenHandler registers a separate event whenever addEventListener method is called for Internet Explorer. However it should register an event only once.

That is:


eh.addEventListener("btnX","click",fn);
eh.addEventListener("btnX","click",fn);

will trigger fn twice when clicked to "btnX" in IE. In Mozilla, Netscape and Opera, fn will be called only once.



If you don't explicitly specify the top and left
values of a layer for the page; Opera 8 beta and former
versions will assume the layer is placed relative to the top-left
corner of the browser window. However, it should have been positioned relative
to its relatively positioned container according to W3C specs.

A similar situation exists for Internet Explorer as well:

If the layer is positioned by specifying its right attribuite via CSS, internet explorer will assume the
left value of the layer to be zero.
However, recent versions of Mozilla-based browsers and
Opera will compute the left as expected
(the position of the left side of the layer from the left side of the container).

When using a DraggableLayer and start dragging a layer
for the first time; these peculiarities may result in the sudden jump of the DraggableLayer to the top left corner of the page.

To prevent this, the top and left values of the layer that will be dragged should be explicitly specified in CSS.



For Mozilla 1.5 and Netscape8 Beta; StyleManager returns "" for borderColor and borderWidth CSS values, regardless of what they have been defined in the CSS.



There are differences between the default values StyleManager returns for Internet Explorer and Mozilla or Opera.

Internet Explorer:
 visibility: visible => isVisible == true
top : auto => getTop == NaN
left : auto => getLeft == NaN


Mozilla-based browsers & Opera:
 visibility: inherit => isVisible == false
top : 0px => getTop == 0px
left : 0px => getLeft == 0px

Therefore visibility, top and left CSS values should be given explicitly in the CSS
file if they are needed to be recalled later.



If there are more than one ToolTip objects in a document,
only the last one is used.

Thus, it is not practical to use more than one ToolTips per page.



DynamicLayer's (set|get)Width, (set|get)Height methods include paddings and borders in their
calculations as well.

However, StyleManager does not include
paddings and borders in calculation.

Thus, the findings of these objects may differ.



Opera requires at least a single non-whitespace
character for the LayerObject's
changeContent method to run.

 [div id="MyLayer"]
[/div]

[div id="MyLayer2"]

[/div&]


The layers above will generate runtime exceptions in Opera
(version 7.2 or below)

  [div id="MyLayer"].[/div] (note the . character in between)

The layer above will work in all the browsers without any problem.



Opera defines tons of shortcut keys for the keyboard.
Therefore switching from drag mode to resize
mode in a DraggableLayer may occasionally result in
slight render anomalies.

However the behavior is not permanent: The view will recover
when the resize operation finishes. This problem is related
to the special key assignment of Opera;
if you have not pressed any special key, you will
not encounter the problem anyway.

Wednesday, January 04, 2006

version 2.1.0

things done in version 2.1.0

Note that this version has not been released yet.



  1. ToolTip does not bleed through the screen edges any more.
  2. Naming conventions and construction conventions have been changed.
    You may now access static-natured objects without constructing them with new.
    For instance in the former version to attach an event we were using new EventHandler().addEventListener(...), while this version simply uses EventHandler.addEventListener(...). A much more convenient way of doing it.
  3. The API has a DOM Editor that enables rich content editing even in Opera. Though it needs some refinement.
  4. I've prepared commercial licenses for s@rdalya and its brother orkinos.
    Yet I've not shown them to public (I will, with the new release).

    Don't be afraid though, the prices are fair enough.

    Please note that the uncommercial use of s@rdalya is free; it will be free forever.

    However, we gratefully accept any donations via paypal ( even 2 cent tips :) ) to help s@rdalya keep free.

    The only obligatory situation is that you must pay for the commercial use of s@rdalya.
  5. Some seemingly-invisible js bugs have been fixed.
  6. The Preloader has been re-coded. The following methods have been removed. They were over-complicating the actual task of the Preloader (which is simply to preload images).

    // this._intIndex=-1;
    // this._intTimeout=100;
    // this._blnNewImage=false;
    // this._image=null;
    //_this.getCount=function(){return this._arPreload.length;};
    //_this.getPreloadCount=function(){return this._intIndex;};
    //_this.setIndex=function(k){this._intIndex=k;};
    //_this.isNewImage=function(){return this._blnNewImage;};
    //_this.setNewImage=function(blnValue){this._blnNewImage=blnValue;};
    //_this.setImage=function(objImg){this._image=objImg;};
    //_this.getImage=function(){return this._image;};
    //_this.setTimeout=function(value){this._intTimeout=value;};
    //_this.getTimeout=function(){return this._intTimeout;};
    //_this.getPreloadPercent=function(){return(this.getPreloadCount()*100)/(this.getCount());};
    //_this.getPreloadURL=function(){return this._arPreload[this._intIndex];};

    I may encapsulate the above methods' to another object.
  7. Preloader's enqueue method now accepts multiple urls as inputs.
  8. The examples and documentation have been updated.
  9. DraggableLayer is much better now, it does not have a quirksmode anymore. Its CPU utilization has improved considerably as well.

version 2.0.2

things done in version 2.0.2

  1. This is mainly a transitional release. I have some stuff to add some conventions to change. However, I began using some new features of this release in a web project. So time constraints forced me to deploy this version as it is.
  2. I plan to handle ToolTip object's bleed through issue when it comes to edges. Secondly I plan to add some naming & construction conventions to static-natured objects.
  3. This version brings a fix to DraggableLayer's ever-increasing z-index problem. In the former version, if two DraggableLayers were taken consequitively on top of each other, Their z-index were increasing one by one to an indefinite limit. This way, their z-index were getting bigger than a ToolTip and they were hiding the ToolTip eventually. In this version, the bug has been fixed.
  4. FormField now has an "undocumented" recalculate method. I'll add documentation and update its test case in the next release.
  5. Several enhancements are done to ToolTip object.
  6. e now have an EventObject which is basically used to cancel the default action in a cross-browser manner for the time being. However it is to be extended to handle other issues of event-handling in the coming versions.
  7. The EventHandler's addEventListener method is changed a bit. It can attach multiple event - multiple object combinations to a single handler function with a single call (undocumented).
  8. Other bits and pieces, fixes, patches, additions which are not documented out of hurry.

version 2.0.0 and version 1.1.5.beta

things done in version 2.0.0

  1. s@rdalya's first stable release. Lots of things changed, thus this release is named 2.0.0, not 1.1.6.
  2. Added a samples page with usage examples.
  3. Starting from this version s@rdalya requires basic DOM compatibility. s@rdalya version 1.1.5 and below would run on browsers that do not have core-DOM compatibility (such as NN4, Opera6 and IE5). However s@rdalya version 2.0.0 and above will generate problems when working on those browsers.
  4. I have chosen this "not backwards compatible" way. And this decision has been criticised a lot (both negatively and positively).

    Thus, it will be good to tell the reasons of it:
    • s@rdalya aims to support as much browsers as possible in a standards-compatible manner. DOM is now a W3C standard and newer versions of almost all browsers support it.
    • This choice resulted in code reduction. That is, the API can now the more things with less lines of code.
    • By using DOM, it became possible to add utility classes like StyleManager and DropDownMenu. Though it could have been done without DOM; the current implementation enables CSS and DOM to co-operate nicely.

      This enables a more clear realization of Model-View-Controller paradigm; that is the seperation of object model and presentational view elements.
    • Technology is evolving and web is approaching a standard. s@rdalya's another aim is not to lag behind the technology.

  5. Some of the objects are removed:
    • TreeObject, TreeBranch, TreeLeaf, TreeIcon: There are nice lightweight css-based tree-menu examples around. (Will try to make a css-js hybrid tree-menu in the coming versions of s@rdalya.
      Even if I change my mind and put them back in the API, imho they need some modificaiton.)
    • FormObject: Form-validation most of the time includes application specific client-side business logic checks. Adding these methods as members to the object does nothing more than increasing the code size. It's better to deal with those business-logic form-validation stuff in a procedural manner.
    • TabbedPane is replaced with a more powerful CollapseManager.
    • TagProcessor: Removed to ponder further on it. Planning an editor which will work on Opera as well. I may need to integrate a reg-ex based tag processor object to it.
  6. Several fixes are made in DraggableLayer for mozilla. The object now bypasses form elements. Thus if a form exists inside a DraggableLayer then the fields in it can be selected.
  7. DraggableLayer has now two modes:
    • strict : does not allow selection of text in the page.
    • quirks : allows selection of text in the page.
  8. The event attachment mechanism to objects has been enhanced. Now all the event that are added by EventHandler are stored in the EventRegistry. This enables the detachment of those events on window unload. It solves IE's memory leakage problem and mozilla javascript errors that arise on a new page load.
  9. A details page has been prepared to tell exceptional situations, cross-browser differences, tips and tricks.
  10. The trim prototype of String has been fixed.
  11. Validator's isEmpty, isInteger and isFloat methods have been fixed.
  12. Array now has a contains method.
  13. As stated above the event registration is done over three objects: EventHandler, EventModel and EventRegistry.
  14. created SortHelper which is a helper object in Array's sort operations.
  15. CursorTracker's getActiveElement method is removed, It was not useful and it was consuming too much CPU. May be another object can be designed for this job.
  16. We now have a DataFormatter.
  17. A Constant object is created to store api-wide constants all together.
  18. The release code has been compressed which results in faster load times.
  19. Function prototoypes are taken out of the class body. This way we got rid of unnecessary global variables and extra code to handle the first-time initialization.
  20. To decrease the number of HTTP connections all the API is combined to a single file (sardalyaFull.js). This way, one may take a copy of it, delete unnecessary parts of it, compress it, and realize even faster download times. I'll put the compressor on s@rm@l as well as soon as I have time.
  21. DropDownMenu and CollapseManager are two newly created objects.
  22. FormField object has been modified a lot.
  23. ...and many more which I cannot remember.
things done in version 1.1.5.beta

  1. Added four methods to FormObject:
    • getFields
    • setFields
    • getFieldValues
    • setFieldValues
  2. Some debug code (window.status = "...") has been removed.
  3. The delete [obj] declarations are removed API-wide. JavaScript's gc scheme is adequate enough. I have not observed the impact of delete lines on performance.
  4. copy and indexOf methods have been added to Array object.
  5. ToolTip has now a passivate method.
  6. TagProcessor's strip method has been fixed. process method was becoming too complex and I removed it completely.
  7. We are close to a stable release. Before declaring the first stable release I need to:
    • Have some research on computed css style.
    • Fix releaseResources methods
    • Update API documentation to match the code.
    • Split examples section to sub-sections.

version 1.1.4.beta

things done in version 1.1.4.beta

  1. The place of the library files is changed.
  2. Created a "previous versions" page.
  3. Bugs (especially Validator-related bugs) have been fixed all around.

version 1.1.3.beta

things done in version 1.1.3.beta

  1. Now DraggableLayer changes the css z-index as well. Thus the dragged layer goes on top of other layers (if possible).
  2. Some small nasty bugs have been killed.
  3. TreeObject and related objects are partially done. But they are still in development.
  4. A new object called TabbedPane has been created.
  5. Although the system is in its beta stage, it is quiete stable and it may be used without fear.

version 1.1.2.beta

things done in version 1.1.2.beta

  1. ImageButton and ImageRolloever objects are re-organized.
  2. Start the design of TreeObject and other related objects.
  3. Preloader was crashing in Mozilla-based browsers. Now it does not.

version 1.1.1.beta

things done in version 1.1.1.beta

  1. A small logic error in Validator has been fixed.
  2. LayerObject now has a setStyle() method, which may be used to update css styles of layers.
  3. A code-review has been done. All the objects have been checked/revised/reformatted.
  4. The navigation and version information is now updated dynamically.
  5. sardalya is still in it's beta phase and may have some errors that have not been catched up.

version 1.1.0.beta

things done in version 1.1.0.beta
  1. A FormObject is created to deal with HTML forms.
  2. TagProcessor is created for validation of HTML tags.
  3. DraggableLayer has three new methods:
    • fixToDragMode()
    • fixToResizeMode()
    • releaseFixes()
  4. Two more objects have been added to API:
    • FormObject (it has not been fully tested)
    • TagProcessor (it is not ready to go in this version)
  5. Bugs all around have been cleaned.
  6. We have some (yet incomplete) documentation.
  7. DraggableLayer does not switch to resize mode after ALT+TAB transitions any more.
  8. Added usage examples.

version 1.0.2.beta

things done in version 1.0.2.beta
  1. Several bugs have been cleaned.
  2. Two new objects are added:
  3. Added ignoreLayer( id ) for DraggableLayer. This way, some layers can be ignored when dragging (i.e. no drag action will be done on them)
    • ImageRollover
    • FormField (object is not ready to go in this version)
  4. The objects and the API are developing too fast. I will stop development and focus on testing and bug removal for some time.

version 1.0.0.beta

version 1.0.0.beta
s@rdalya's first beta release.

I plan to remove history and details page from the site since it is more suitable to be appended to this blog.

Next few posts will be history and detail entries up till this time.

hello

Hi this is the official webblog of s@rdalya - s@rm@l dynamic framework .

I will be sharing the progress information, changes and other exciting stuff about the framework here.

Cheers,