Farewell to the Old Year, Farewell to the Old Code: Looking Forward to 7.0

Should auld acquaintance be forgot, and never brought to mind? If this is about old code, it definitely should. Old stuff, however useful and cool it used to be, should be left to rest in peace when it becomes no longer relevant. The time has almost come. With the next large release of Webix 7.0, which will happen in the following September, we will remove outdated and seldom used API from the library. Do not worry, because these are really old-fashioned things. There are modern alternative solutions, and the old ones will still be available on GitHub. You will find the details below.

Webix 7.0 Deprecated API

No Support for Old IE Versions

Starting from 7.0, Webix will support IE11 and later versions. IE8-IE10 will not be supported anymore. Alas. If IE8 support is crucial for you, use Webix 6. We plan to backport critical fixes to the Webix 6 branch, but there will be no new features there.

Deprecated Modules

PowerArray

PowerArray was used to extend arrays with methods that are available in plain JS arrays. This mixin was necessary for the support of the older versions of IE, and since all newer browsers support JS array methods, we decided to remove PowerArray together with the old IE support.

ActiveContent

The ActiveContent mixin is useful for the simplest controls and is not designed for something more complex. From now on, we stronger than ever recommend stable solutions for simple things – HTML templates for simple icons, buttons, and the like, while for complex views you can use DataLayout.

Deprecated Proxies

Offline Proxies (offline, local, cache)

Modern browsers have a native technology that deals with the same task better – Service Workers. They can be easily used with Webix widgets, so we will share a solution later on.

webix.proxy.connector

Connectors are no longer relevant, because:

  • it is much better to have a REST based solution, because they are flexible and are 100% to your requirements;
  • connector is a third-party library and has not been updated for 5 years.

webix.proxy.faye

Though the Faye project is very much alive, it is not mainstream anymore. A WebSocket-based alternative will be much better.

webix.proxy.indexdb

The indexdb proxy is not among the most popular solutions, that is why it will be moved out of Webix. Anyone who needs it will be able to take it from GitHub and include it as a plugin.

Flash Upload Driver for the Uploader

Flash driver for Uploader is needed for the old IE browsers only and therefore will be deprecated.

Deprecated API

Button Types

Buttons type:”next” and type:”prev” has been completely removed from Webix.

As for other types and styles, their range was enlarged and optimized. Types now define the content of the buttons, and coloring is defined by the css property. Hence, the changes are the following:

Deprecated CSS types and their new substitutes:

  • type:”form” => css:”webix_primary”
  • type:”danger” => css:”webix_danger”

Deprecated content types and their new substitutes:

  • type:”imageButton” => type:”image”
  • type:”imageButtonTop” => type:”imageTop”
  • type:”iconButton” => type:”icon”
  • type:”iconButtonTop” => type:”iconTop”

The deprecated content type that will have no substitutes:

  • type:”htmlbutton”

The deprecated types will be valid till Webix 7.0, and after the release they will be removed permanently.

Markup – Initialization from XML and HTML

We decided to move the markup class outside the core, because JSON has become a de facto standard, and initializing UIs from XML/HTML is used in very rare cases. If you are one of those who do use markup, beginning from the next September you will have the complete power to change the functionality in any way after you get it from GitHub.

webix.history API

webix.history is a specific, Tabbar-related technique that does not cover the related task. There are the window.history API and events that you can use instead.

webix.jsonp()

webix.jsonp() is a rarely used Webix solution for the JSONP method. The fact that it is among the API that will be moved to GitHub gives you more freedom to modify it to any degree or create your own solution altogether.

webix.ui.each API

This method does the same thing as view.queryView, so we decided in favor of the latter.

View code >>

webix.ui.delay()

This is probably the least known piece of the API that survived from the older Webix versions. Please note that it is not webix.delay that will be banished from the library core.

webix.ui.hasMethod()

This is the method that checks if the abstract view class has a certain method, which is not commonly used, because you would rather check this for some existing view. This is easily done with a simple check: if (view.someMethod).

File Manager History API

This functionality makes sense only if File Manager is the only view on the page. Otherwise, history adds a hashbang URL and interferes with the navigation pattern of the parent app, which is bothersome and completely unnecessary. Now you can disable this by disabledHistory:true. In the future, you will not have to do this anymore. If you do have File Manager as the only view on the page and want this functionality, use the the window.history API and events.

What’s Next

Though this will happen only in September, which is about 9 months away, don’t just leave the news till later 🙂 We are very sorry for all the inconveniences that may arise and very strongly advise you to start preparing for the changes now. When September comes, you will upgrade to Webix 7.0 and continue maintaining your projects without stress and panic.

Meanwhile we will be gradually marking all the API from the above list as “soon to be deprecated” in our documentation.