One way to add and remove data from various components.

I wonder more and more (the more i use it) why isn’t their one universal way of adding data to various components. And what i mean by that are for example the combo Box the Accordion when compared to the tree or list? They both do not have an exists method nor a add method like the other two. I get that the accordion would be something that is normally initialized (none dynamic). But the current situation makes it tricky to change them dynamically. Yes you can rePaint them with some change data etc. but wouldn’t it be much easier to draw one line through all objects that can contain list data (accordion with sub-accordions), combo fields etc. This would also make it easier for some to add their own custom data through other libaries like backbone (i know you support it but you do not support nested collections / models understandably).

It could be i don’t see the functions (in that case please correct me) but i would really like to see those things all being treated equally. Even if its just by the function name (add / remove / change / exists child data).

You are correct there are two classes of components

a) data components ( tree, chart, list, datatable, etc ). They all have the same API for data adding

b) layout сomponents ( layout, multiview, accordion, form, etc ). They all support the same API for adding new element - addView

There both pros and cons for such separation
Good thing, you can subclass components and make api to look as you wish

webix.protoUI({
  view:"caccordion",
  add:function(){ return this.addView.apply(this.arguments);  }
}, webix.ui.accordion);

Now you can use “caccordion” component instead of “accordion”. It will work the same but will support “add” method, similar to data components.