• Shortcuts : 'n' next unread feed - 'p' previous unread feed • Styles : 1 2

» Publishers, Monetize your RSS feeds with FeedShow:  More infos  (Show/Hide Ads)


Date: Friday, 12 Sep 2014 14:02

Welcome to the weekly status update. For a complete list of all tasks accomplished during the last working week, see this bugzilla query. Have a nice weekend.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 05 Sep 2014 12:25

I’d like to use this week’s post to point you to a great job opportunity:
the qooxdoo framework team is looking for a new colleague!

Join the qooxdoo team as a full-time employee of 1&1 Internet AG, a leading European internet specialist. See for details.

As for the framework progress itself, see the complete list of all tasks accomplished during the last working week.

Author: "Martin Wittemann" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 05 Sep 2014 12:19

I’d like to point you to a great job opportunity: the qooxdoo framework team is looking for a new colleague!

Join the qooxdoo team as a full-time employee of 1&1 Internet AG, a leading European internet specialist. You complement and enhance the efforts to establish qooxdoo as a universal JavaScript framework for a wide range of application domains and for multiple device classes.

Our headquarters are in Karlsruhe, quite a nice place to live and work, located in one of the most vibrant IT regions of Germany. To best match the current setup and various in-house collaborations we look primarily for native German speakers.

If you are interested please see the official job description and apply with your CV online.
Of course, if you have questions, feel free to get in touch with us directly (i.e. Martin as the team/tech lead, or Andreas as the project lead).

Looking forward to hearing from you.

Author: "Martin Wittemann" Tags: "Administrative"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 22 Aug 2014 10:47

We refactored the qx.Mobile Picker for improving the performance and enhancing the feature set of the picker.

The picker is now based upon qx.ui.mobile.container.Scroll and qx.ui.mobile.list.List widget. This reduces code size, improves the scrolling performance and enables also the momentum scrolling for the picker slots.

Because of the usage of the qx.ui.mobile.list.List for rendering a picker slot, you can now also display images inside a picker item (see screenshot).

The picker does not extend anymore from qx.ui.mobile.dialog.Popup, so you can choose whether you want to add it to page’s content container, a drawer or to any other widget container.

Here is an example which shows how to use the new qx.Mobile Picker:

 var picker = new qx.ui.mobile.control.Picker();
 picker.setHeight(200);
 picker.setVisibleItems(5);
 picker.addListener("changeSelection", function(evt) {
   var data = evt.getData();
 },this);
 
 var slotData1 = [{title:"Windows Phone", image:"resources/windows_phone_icon.png"}, {title:"iOS"}, {title:"Android"}];
 var slotData2 = [{title:"Tablet"}, {title:"Smartphone"}, {title:"Phablet"}];
 
 picker.addSlot(new qx.data.Array(slotData1));
 picker.addSlot(new qx.data.Array(slotData2));

As you can see in comparison to the qx.ui.mobile.dialog.Picker, the new and old API is very similar. Noteworthy is the fact that you now add an array with objects which contain the keys title, a subtitle or an image (all optional).

For a complete list of all tasks accomplished during the last working week, see this bugzilla query.

Author: "Christopher Zündorf" Tags: "Activity Reports, Development, Mobile"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 15 Aug 2014 11:56

This week, we have been busy in the mobile part of the framework, as you might have already read in our separate blog post about the new waypoint feature. This is a handy new feature you might want to try in the playground for yourself. This also enables you to implement a commonly used pattern called pull to refresh.

We have also been busy in refactoring the picker widget, but more details on that will be covered in a blog post coming next week.

For a complete list of all tasks accomplished during the last working week, see this bugzilla query.

Author: "Martin Wittemann" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 14 Aug 2014 15:16

We enhanced the qx.Mobile pageEnd logic and added a scroll waypoint feature. It makes it possible to execute code whenever you scroll to a pre-defined offset. This is very useful if you want to trigger an animation/action when the user scrolls to specified vertical/horizontal point. This feature is also necessary if you want to implement infinite scrolling.

The waypoint feature can be used like this:

var scrollContainer = page._getScrollContainer();
scrollContainer.setWaypointsY(["0%","50%","100%",200,".waypoint"]);

You can add percentage-based waypoints by adding a string like "20%" or just add numbers for applying pixel-based offsets. Additionally you can determine waypoints through a CSS selector query.

Whenever a waypoint triggers, a qx.event.type.Data fires on the scroll container:

scrollContainer.addListener("waypoint", function(evt) {
  console.log("Waypoint reached:" + evt.getData());
}, this);

The payload of the waypoint event looks like this:

{
"offset": 0,
"input": "10%",
"index": 0,
"element" : 0
}
  • offset contains the scroll offset in pixel.
  • input is the waypoint condition you passed through the array and which triggered this event.
  • index identifies this waypoint relative to its position inside the waypoint array you have passed.
  • element contains the element index found through your selector. e.g. you have five elements with ‘.waypoint’ class inside your scroll container, and user scrolls to the fifth element with this identifier, then element would be 4. This value is only relevant for waypoint rules based upon a selector. For numbers and percentage-based rules it is always null.

Have a look at this feature at the qx.Mobile List demo or check out the demo source code.

Author: "Christopher Zündorf" Tags: "Uncategorized"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 08 Aug 2014 08:34

As last week, most of the core team is on vacation so we had a quiet week here in the office.

Still, the development in the grunt based toolchain continued and we could finish the variant optimization which is a good step towards replacing the existing python-based generator.

Another piece of work worth mentioning is the reduced code size of the environment class. This is really helpful if you want to use qx.Website with a minimal code size. The Environment class had a size of 13kb (minimized), not including all the feature check classes we offer and we managed to get the code size down to 5kb (minimized) offering the exact same feature set as before.

We also put some effort in improving the data binding layer. This included a dispose fix for objects and a new helper which lets you remove all bindings between two objects. This might also help on disposing objects.

For a list of all tasks accomplished during the last working week and more details on the mentioned topics, use this bugzilla query.

Author: "Martin Wittemann" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 01 Aug 2014 09:44

As mentioned last week, we want to keep you informed what’s happening during the week within the framework development. As it is vacation time over here in Germany, some of the core team members are out of office so not too much happened this week.

Nevertheless, we worked on improving the mobile list by adding two cool new features. The first is the possibility to add waypoints that correspond to the lists scroll position. Once such a waypoints is scrolled into view, an event will be fired which gives you a chance to run custom code as easy as possible. Take a look at the list demo in the MobileShowcase to see it in action.
Another cool new feature can be discovered in the same demo but only on an iOS device. Check it out and you will see the sticky headers of the list.

For a list of all tasks accomplished during the last working week, use this bugzilla query.

Author: "Martin Wittemann" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 25 Jul 2014 14:42

As you surely recall we used to post “The week in qooxdoo” activity reports at the end of each week. We didn’t keep up with that tradition recently, as we mostly focused on various tasks in or around the framework as well as exciting new features. Many of those results went right into the latest releases, such as qooxdoo 4.0

This time we cover all the issues that where resolved in the recent weeks. So here you get several links that group those fixes into smaller chunks: May, June, July up to now.

C U next week.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Wednesday, 09 Jul 2014 09:19

A new and important maintenance release of the framework is available.

qooxdoo 4.0.1 ships with about 20 bugfixes over the previous qooxdoo 4.0 release.

Some of the fixes finalize the event layer for input device independence that we introduced with qooxdoo 4.0, e.g.:

  • Tap event now works properly in IE 10/11 on Windows 7 (see blog post)
  • Fixed additive selection mode
  • Fixed drag & drop on the Table widget

Given the many improvements of qooxdoo 4.x, we recommend you take the latest release into production and upgrade your apps to qooxdoo 4.0.1.

As a patch release qooxdoo 4.0.1 is fully backwards-compatible with the previous version. Nothing needs to be changed in your existing apps if they are already based on qooxdoo 4.0. When upgrading from an older version you can migrate directly to 4.0.1.

Download qooxdoo 4.0.1. Check out the detailed release notes and the manual.

Many thanks from the core developers to the community, particularly for reporting issues and your help in improving the framework.

Author: "Martin Wittemann" Tags: "Announcements, Release, Uncategorized"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 27 Jun 2014 12:23

As several users have reported, the qx.ui.form.Button widget in qooxdoo 4.0 does not fire an execute event if the user clicks on the button’s label or icon (as opposed to the button’s background). This only affects Internet Explorer 10 and 11 on Windows 7 (not Windows 8).

The bug report describes the problem in greater detail but the root cause is that on Windows 7, IE will also redirect pointer events if mouse event capturing is activated. We have been in contact with Microsoft representatives and filed a report on Microsoft’s IE feedback site for this issue.

Since this is a serious bug, you are currently advised to hold off on deploying your applications for the qooxdoo 4.0 release. Fortunately, we have already committed a workaround for the problem and are currently planning a bugfix release qooxdoo 4.0.1 that should be available very soon.

Until then, you can link any applications that have already been upgraded to qooxdoo 4.0 against the maintenance branch or apply a patch from the commit to your local release SDK files.

Author: "Daniel Wagner" Tags: "Development, Internet Explorer"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 05 Jun 2014 16:04

We are happy to announce a new release of the framework, qooxdoo 4.0.

Many thanks go to the entire community for making this happen: the team of core developers, 1&1 as the supporting company, all contributors and users who brought in their suggestions and improvements.

qooxdoo 3.5

A major highlight of the current release covers all three GUI toolkits (website, mobile and desktop). Your qooxdoo-based app can now work with all kind of input devices. This is an awesome feature in this ever-growing multi-device world:

Input Device Independent Events

qooxdoo’s three widget sets (for desktop, mobile and website) used to have specific relations to the typical input devices, i.e. mouse for desktop or website, and touch for mobile. So using one type of app with an input device it wasn’t meant for initially, wasn’t ideal. For that reason, we had already added emulation layers for mouse on touch devices and for touch on PC-like devices. But transforming one event model into another is error-prone and just doesn’t feel natural.

Luckily, there already is a W3C spec, named Pointer Events, which tackles this problem. The main idea of this spec is to offer a unified event model, independent of the input device. In a nutshell, the spec defines how to map mouse, touch and pen input to pointer events.

That’s exactly what we did for all three GUI toolkits: Create pointer events in all browsers that don’t support them natively. That meant adding event handlers for the website and desktop / mobile layer, connecting those events to the widgets and changing every widget to listen to pointer events instead of mouse / touch events. While that’s what you could do with your own app as well, there is no need to use pointer events if you (think you) don’t need them. Mouse and touch events are still supported just as they were before the change.

We did not stop with the fundamental pointer events, however. Features we call “gestures” were also introduced on top of pointer events. This includes simple interactions like tap (as an alternative to click), but also some multi-pointer gestures such as rotate, well-known from touch devices. Check out the following sample using qx.Website:

q("#target").on("tap", function() {
    console.log("tap");
});

Using the same gesture in qx.Desktop / qx.Mobile is just as easy:

target.addListener("tap", function() {
    console.log("tap");
});

We also changed the drag & drop implementation for qx.Desktop, which now supports touch devices as well. The final thing we had to change was scrolling, because touch devices usually don’t have scroll bars or a mouse wheel. That’s where the new roll event comes in handy. This is an abstraction gesture for both mouse wheel and touch scrolling, also available in all three GUI domains. Here is a sample of a simple scroller for qx.Website:

q("#target").on("roll", function(e) {
    this[0].scrollTop = this[0].scrollTop + e.delta.y;
});

If you’re interested in the details behind the topic of input device independence, check out the first blog post about pointer event support or the manual pages about pointer and gesture events.

See the following sections on our work in other parts of the framework, like Grunt-based tooling:

Grunt Tooling

Continuing with advancing the JS toolchain, we started reimplementing the source job as a Grunt task. Along with that we introduced several npm packages (dependency, library, locale, resource and translation), which provide the underlying functionality. Of course, those packages are properly covered with unit tests and JSDoc comments. As a consequence of that modularization, the Grunt task itself is only a small wrapper orchestrating the aforementioned packages. The source job is the first building block for creating qooxdoo apps with Node.js (i.e. JavaScript code) only. We did not replace the Python-based default source job with the JavaScript-based variant, so you can still continue to use the existing, integrated toolchain.

Website

In addition to the huge new feature of pointer events, the development and enhancement of the website API viewer continued with many practical enhancements such as searchable polyfill methods or flagging of optional parameters. We also took some time to finish and polish the website widgets, which allowed us to remove their former experimental state.

Mobile

The list is one of the most important widgets in the whole mobile GUI toolkit. We added two new features to the list with this release. One is a grouping feature, which you might know from mobile apps such as the typical contacts app. The second new feature is called “swipe to delete” and is a handy feature to delete list items. You can see both features in the mobile showcase, which also demonstrates some of the many improvements made to qx.Mobile.

Contrib

We improved the process of finding new contribs with introducing a new contrib catalog website. It represents user-provided contributions available in a searchable and sortable way. The data used for the catalog website comes from the contrib-catalog repository, which provides all the metadata aggregated already. The new infrastructure is a starting point for a better community-driven exchange of solutions and code, thus your support to further improve it and to enhance it with your contributions is very welcome.

Migration

Introducing pointer events was a huge effort, of course, that included a lot of changes to the framework code. Fortunately, you might not or only slightly be affected with your own app code, related to a few public API changes. On the other hand, if you extend qooxdoo classes and created custom widgets based on some protected API, some changes might break your code. Make sure to run the migration job, read and follow the migration hints in the release notes, and you will end up with a future-embracing version of your app.

Check it out!

qooxdoo 4.0 is available for download. Check out the detailed release notes and the manual. Watch the code repository on GitHub.

The qooxdoo 4.0 release comes with many substantial improvements and exciting new features. In fact over 300 bugfixes and enhancements made it into the release.

Thanks

Many thanks from the core developers to the community of contributors and users. Please help to spread the news, get people excited about the latest releases, and show them how to deploy qooxdoo as a truly universal JavaScript framework.

Enjoy! :)

Icons taken from icons8.

Author: "Martin Wittemann" Tags: "Announcements, Release"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 05 Jun 2014 15:54

A new maintenance release of the framework is available.

qooxdoo 3.5.1 ships with around 90 bugfixes over the previous qooxdoo 3.5 release.

As a patch release qooxdoo 3.5.1 is fully backwards-compatible to the previous version. Nothing needs to be changed in your existing apps if they are already based on qooxdoo 3.5. When upgrading from an older version you can migrate directly to 3.5.1.

Download qooxdoo 3.5.1, checkout the detailed release notes and the manual.

Many thanks from the core developers to the community, particularly for reporting issues and your help in improving the framework.

Author: "Andreas Ecker" Tags: "Announcements, Release"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 22 May 2014 12:05

Ideas for a website which makes browsing and discovering contribs easier existed early on, when we started thinking about what the contrib catalog might look like finally.

With the contrib catalog in place for some time, we now have the possibility to use all this metadata (the content from the Manifest.json files) for something better than the old dusty wiki page of all available conrtributions.

So, without further ado: Have a look at the new qooxdoo contrib catalog website.

We had several goals with the new catalog website in mind:

  • Ease the process of finding a contrib:
    You can now search and sort contribs. Most parts of the manifest files are indexed, so searching for an author, a specific qooxdoo version or just all the descriptions is possible.
  • Ease the process of maintaining a contrib:
    We don’t oblige you anymore to create a wiki account, a SourceForge account and maybe also a bugzilla component. The only thing we need from you is a Manifest.json, present in the catalog, with some obvious information included (author, homepage, contrib archive for download …).
  • Better self representation as a contrib author:
    You are now able to represent your contrib much more individually. You can freely decide where you want to write your source code (e.g. GitHub or Bitbucket etc) and where to host your demos. And you don’t have to learn our wiki syntax anymore. Nowadays you just place a Markdown or reStructuredText file in the root of your project and sites like GitHub render them on your project page.

The contrib catalog website is updated regularly, so if your GitHub pull request for the catalog is accepted your new or updated content soon appears on the website.

If you’re a contrib author, please have a look at your contribs, i.e. please check if the information used from the Manifest.json files is still valid and up to date. Don’t hesitate to create a pull request.

As always we are happy to get feedback from you, especially from the contrib authors.

Author: "Richard Sternagel" Tags: "Announcements, Contrib"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 09 May 2014 14:53

Hi, we have been busy with quite a number of topics recently, often related to or around input-device independence, aka pointer event layer. As we are also working towards an upcoming qooxdoo 4.0 release, here is a longer list of framework tasks accomplished recently.

If you use the qooxdoo master version in your projects, please feel free to let us know about any issues you encounter, thanks.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 11 Apr 2014 15:04

Welcome. For a list of tasks accomplished during the last working week, use this bugzilla query.

Have a great weekend.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 04 Apr 2014 14:36

Welcome to a weekly status update.

Progress in pointer Branch

We’ve made good progress in the pointer branch and are very excited about the result. If you are curious, now it’s time for you to get started! Thanks in advance for your support.

Check out the pointer branch and build your app with it. If you have any error, make sure to read the preliminary release notes for qooxdoo 4.0, which holds more information on what API changed. Don’t worry about the long list of API changes. Only a few changes are to the public API (in the list the terms in bold). Your app would be affected if it uses this public API; you would have to adjust the terms in your code.

The majority of changes is to protected API, i.e. it could only affect you if you derived from framework classes (e.g. for creating custom widgets). Usually the renaming is straightforward, e.g. “Mouse” into “Pointer”, or “Click” into “Tap”. Of course, the qooxdoo migration job is going to list all (possible) names in your code that should be renamed.

Anyway, your existing and future qooxdoo apps will benefit from the input-device independence. The event API should also be quite consistent in terms of naming, so it’d be some pleasure to work with. Take the chance to get your feedback included before we merge the branch into master. The earlier the better, particularly well ahead before we ship the next release. Depending on your feedback and our own ongoing testing, we plan to merge the branch into master within a week’s span.

Bugfixes

For a complete list of tasks accomplished during the last working week, use this bugzilla query.

Have a nice weekend.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 28 Mar 2014 14:24

Work continued with a strong focus on Pointer Events, which we blogged about recently for status and details. It is going to provide excellent event support independent of the input device. Great foundation for your universal, multi-platform qooxdoo apps.

For a complete list of tasks accomplished during the last two working weeks, use this bugzilla query.

C U.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 20 Mar 2014 15:03

During recent weeks, pointer events have been the dominating topic in the framework team, as we already teasered in the weekly blog post some weeks ago. With this post, we want to give you a deeper insight into this topic.

The Challenge

qooxdoo features three GUI toolkits: desktop, mobile and website. Connected to these domains are the main input devices: mouse for desktop / website and touch for mobile. In detail, this means that desktop / website widgets register mouse event listeners and mobile widgets register touch event listeners. So using one type of app with another input device is at best not optimal. For that reason, we already added emulation layers for mouse on touch devices and touch on PCs. But transforming one event model to another is error prone and simply doesn’t feel natural. Another way to get the optimal user experience would be to listen to both types of event for each widget, but making that change takes a lot of effort without providing an ideal solution.

Pointer to the rescue

Luckily, some clever guys at Microsoft already recognized this issue and came up with a W3C spec named Pointer Events, which tackles this problem. The main idea of this spec is to offer a unified event, independent of the input device. In an ideal world, we would simply use these events and everyone would be happy. But every web developer knows that we don’t live in an ideal world and we have to support browsers that don’t implement the spec. In fact, it’s only IE10+ which already has support for native pointer events.

Pointer Spec in a nutshell

In a nutshell, the spec is based on mouse events and maps all input devices to pointer events. It extends the mouse event type with additional information like the id of the pointer for multi pointer devices. So as a developer familiar with mouse events, you will feel comfortable with pointer events as well because most of the events are equal at first sight, like pointerdown, pointermove or pointerover. For more details, take a look at the spec.

What we already did

Having pointer events in mind, the task was clear: offer pointer events for our GUI toolkits. That means adding event handlers for the website and desktop / mobile layer, bringing these events to the widgets and changing every widget so it listens to pointer events instead of mouse / touch events. After that, change every app we ship with the SDK to use pointer events as well. If we slow down a bit and take a step back, the most important things to consider here are the event layers which fire the pointer events. So here is a listing of the newly added pointer events:

  • pointerover
  • pointerout
  • pointermove
  • pointerdown
  • pointerup
  • pointercancel

If you have the spec in mind, you will see that this list does not contain all events it mentions. But these are the most important events we need for widgets so we kept the list as small as possible. This is one of the reasons we don’t like to call this implementation a polyfill, even if in most areas it’s well-aligned with the spec and is quite broad in scope.
All the events mentioned above have one thing in common: They are atomic. The click event for example is not atomic because it is generated by a sequence of other events. But click is also closely connected to the mouse so to achieve our goal, we needed something input device independent here as well.

Gestures on top

But click is not the only combined event we know. Think of tap, swipe, or rotate in the mobile world. So we introduced another set of new events which can be grouped as gestures:

  • tap
  • longtap
  • swipe
  • rotate
  • pinch
  • track

All these events should work with either mouse or touch. Of course, for rotate and pinch, you need more than one pointer, which is not possible using a mouse.

What’s still missing

There are still some challenges left for us to tackle. One obvious thing is scrolling as there is no mouse wheel or scroll bar on mobile devices. Most of the algorithms relying on hover events are to be refactored e.g. Drag & Drop, quick selection for lists and tooltips. Last but not least, we need to add some manual pages explaining why, how and when to use use these events.

Give it a try

While we continue to complete this event layer, we would like to invite you to take a look at the changes so far. Check out our demo apps we built based on the pointer branch and let us know what you think.

Author: "Martin Wittemann" Tags: "Development, Feature Highlight, Mobile, ..."
Comments Send by mail Print  Save  Delicious 
Date: Monday, 17 Mar 2014 10:07

As we have been working on larger topics recently, such as input device independence via pointer events or embracing JS tooling via GruntJS, there hasn’t been much feedback in the form of weekly blog posts. We’ll get back to you with more details once we are to feature the upcoming milestones and achievements.

In the meantime, here’s a list of tasks accomplished during the last two working weeks, straight from bugzilla, with many others currently in progress. C U.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Next page
» You can also retrieve older items : Read
» © All content and copyrights belong to their respective authors.«
» © FeedShow - Online RSS Feeds Reader